Understand the math behind DLMM bin prices, swap amounts, liquidity shares, dynamic fees, protocol fees, composition fees, and liquidity mining rewards.
DLMM’s math is built around a simple product idea: each pool is a ladder of price bins, and each bin behaves like its own tiny market at a fixed price.
The program performs integer arithmetic with fixed-point values and explicit rounding. This page shows the conceptual formula first, then calls out the important rounding or unit behavior where it matters.
Every DLMM pool has a bin step, measured in basis points. The bin step defines the percentage difference between one bin and the next.Pi=(1+10,000bin step)iWhere:
P_i is the price of bin i
i is the bin ID
bin step is the pool’s configured step size
The program computes this as get_price_from_id(bin_id, bin_step) and returns the result in Q64.64 fixed-point form.Example: if the bin step is 25 basis points, each neighboring bin is approximately 0.25% apart. Moving from bin 0 to bin 1 multiplies the price by 1.0025.
Inside a bin, DLMM uses a constant-sum style liquidity value:L=P⋅x+yWhere:
L is the bin liquidity value
P is the bin price
x is the amount of token X
y is the amount of token Y
This fixed-price bin design is what creates zero price impact inside a single bin. Price changes when the available output liquidity in the active bin is consumed and the swap moves to another bin.
For a swap from token X to token Y, the output amount is:amount outY=⌊amount inX⋅P⌋For a swap from token Y to token X, the output amount is:amount outX=⌊Pamount inY⌋The inverse formulas are used when the program needs to know the required input for a desired output:amount inX=⌈Pamount outY⌉amount inY=⌈amount outX⋅P⌉The program rounds output amounts down and rounds required input amounts according to the swap path. This protects the pool from giving out more token than the bin can support.
DLMM trading fees have a base fee and an optional variable fee:total fee rate=min(base fee rate+variable fee rate,MAX_FEE_RATE)MAX_FEE_RATE is 100,000,000 in 1e9 precision, or 10%.
The base fee is configured through pool fee parameters:base fee rate=base factor×bin step×10×10base fee power factorThis value is stored in 1e9 precision.Product intuition: a larger bin step often pairs with a larger base fee because each bin represents a larger price movement. A smaller bin step is usually used for tighter markets where LPs expect smaller price changes.
The variable fee is DLMM’s volatility-aware fee. In the program, it is calculated as:variable fee rate=⌈100,000,000,000variable fee control×(volatility accumulator×bin step)2⌉If variable fee control is 0, the variable fee is 0.The volatility accumulator updates from bin movement:volatility accumulator=min(volatility reference+∣index reference−active id∣×10,000,max volatility accumulator)The volatility reference decays based on elapsed time:
The program supports two common fee calculations.When the fee is part of the amount already provided by the trader:fee amount=⌈1,000,000,000amount with fee×total fee rate⌉amount excluding fee=amount with fee−fee amountWhen the fee must be added on top of an amount that does not include fees:fee amount=⌈1,000,000,000−total fee rateamount excluding fee×total fee rate⌉amount including fee=amount excluding fee+fee amountWhich form is used depends on the swap direction and the pool’s Collect Fee Mode.
How a bin’s trading fee is distributed depends on the pool’s function mode:
Pool mode
Liquidity sources
Limit-order fee path
Liquidity mining
MM positions only
No
Limit order
MM positions and/or limit orders
Yes
Both modes use the same protocol share for MM liquidity and the same referral host fee rule. Limit-order pools add an extra split when limit-order liquidity contributes to the fill.
These rates apply to how the trading fee is shared among recipients. They are separate from the pool’s base fee, variable fee, and total fee cap.
For any fill that comes from MM positions, the MM slice of the trading fee is split by the pool’s protocol share:
Pool type
Protocol
LP
Standard pool
10% (protocol share = 1,000 bps)
90%
Launch Pool
20% (ILM_PROTOCOL_SHARE = 2,000 bps)
80%
protocol fee=⌊10,000trading fee×protocol share⌋LP fee=trading fee−protocol feeOn limit-order pools, replace trading fee with total MM fee when the fill also includes limit-order liquidity (see below).
When a swap passes a referral account, the host receives 20% of the applicable protocol fee (HOST_FEE_BPS = 2,000 bps). The rest stays as protocol treasury fee.host fee=⌊10,000protocol fee×2,000⌋protocol fee remainder=protocol fee−host feeWithout a referral account, host fee = 0 and protocol fee remainder = protocol fee.On limit-order pools with mixed fills, host fee can also include a capped share from the limit-order protocol slice (see below).
Liquidity mining pools do not support limit orders. Every swap fill is MM liquidity, so the entire trading fee uses the MM formulas above with no liquidity-source split.trading fee=LP fee+protocol fee remainder+host fee
Limit-order pools can fill from MM positions, limit orders, or both in the same bin. The program first assigns the trading fee by liquidity source, then applies the recipient splits above.By liquidity source (rounding favors MM):total MM fee=⌈trading fee×total amount inMM amount in⌉total limit order fee=trading fee−total MM feeMM slice — split with protocol share as in the table above:MM protocol fee=⌊10,000total MM fee×protocol share⌋MM LP fee=total MM fee−MM protocol feeLimit-order slice — always 50% / 50% via LIMIT_ORDER_FEE_SHARE (5,000 bps), independent of pool type:limit order participant fee=⌊10,000total limit order fee×5,000⌋limit order protocol fee=total limit order fee−limit order participant feeReferral host fee — 20% of MM protocol fee, plus a capped share from the limit-order protocol slice:host fee on limit order=min10,000⌊10,000total limit order fee×protocol share⌋×2,000,limit order protocol feehost fee=⌊10,000MM protocol fee×2,000⌋+host fee on limit orderprotocol fee remainder=MM protocol fee+limit order protocol fee−host feeWhen a swap fills only MM liquidity, total limit order fee = 0 and the limit-order paths above are zero — the result matches a liquidity mining pool.trading fee=MM LP fee+limit order participant fee+protocol fee remainder+host fee
When a user deposits into a bin, the program first computes the liquidity value of the deposit:Lin=P⋅xin+yinIf the bin has no existing liquidity supply, the new liquidity share equals the deposit liquidity:liquidity share=LinIf the bin already has liquidity, the new share is:liquidity share=⌊LbinLin×existing liquidity supply⌋Where:
L_in is the liquidity value of the user’s deposit
L_bin is the existing liquidity value of the bin before the deposit
existing liquidity supply is the bin’s current share supply
Those shares determine the position’s proportional claim on bin liquidity, fees, and eligible rewards.
When liquidity is removed from a bin, token amounts are returned pro rata:amount outX=⌊bin liquidity supplyliquidity share removed×bin amountX⌋amount outY=⌊bin liquidity supplyliquidity share removed×bin amountY⌋
When adding liquidity to the active bin of a bin that already has liquidity, the program may charge a composition fee if the deposit changes the bin composition in a way that resembles a swap.The composition fee is based on the token delta and the current total fee rate:composition fee=⌊1,000,000,0002Δamount×total fee rate×(1,000,000,000+total fee rate)⌋The protocol share is then taken from the composition fee using the same protocol-fee formula:composition protocol fee=⌊10,000composition fee×protocol share⌋No composition fee is charged when depositing into an empty bin or a non-active bin.
For reward-enabled pools, rewards are tracked per token of liquidity for eligible bins.The reward emission rate is funded over a reward duration. If a reward is funded while a previous reward period is still active, the program includes the remaining unvested reward amount in the new rate calculation:reward rate=reward durationnew funded amount+remaining reward amountIf the funder chooses to carry forward ineligible rewards from empty-liquidity time, that carry-forward amount is also included in the new funded amount. In the program, reward_rate is stored in fixed-point precision. On active-bin reward updates, the per-token reward increment is:Δreward per token=⌊active bin liquidity supplyseconds elapsed×reward rate⌋If the active bin has no liquidity, the program records the elapsed empty-liquidity time instead of assigning rewards to LPs. During v2 swaps, accumulated rewards can also be split across crossed bins with liquidity, up to the program’s reward-bin split limit.
Some swap flows can include a maximum price impact limit. The program computes a guard price from the active bin price:For X to Y swaps:minimum price=Pactive×10,00010,000−max price impact bpsFor Y to X swaps:maximum effective price=Pactive×10,000−max price impact bps10,000This protects users from swaps that would move too far from their expected active-bin price.
Was this page helpful?
{"docsConfig":{"theme":"aspen","$schema":"https://mintlify.com/docs.json","name":"Meteora Documentation","colors":{"primary":"#F54B00","light":"#F54B00","dark":"#F54B00"},"logo":{"light":"https://mintcdn.com/meteora/FuYCvEvL3a7_z_Mt/assets/nav/meteora-docs-light.png?fit=max\u0026auto=format\u0026n=FuYCvEvL3a7_z_Mt\u0026q=85\u0026s=9b7afa272c2adebd183c6e55b45c9326","dark":"https://mintcdn.com/meteora/FuYCvEvL3a7_z_Mt/assets/nav/meteora-docs-dark.png?fit=max\u0026auto=format\u0026n=FuYCvEvL3a7_z_Mt\u0026q=85\u0026s=cc1569cccf60c9058cc0be9f61743fc7"},"favicon":"https://mintcdn.com/meteora/FuYCvEvL3a7_z_Mt/assets/logo/meteora.png?fit=max\u0026auto=format\u0026n=FuYCvEvL3a7_z_Mt\u0026q=85\u0026s=5ae3f2a17133bed15a6360c41694c4d7","api":{"playground":{"display":"interactive"},"examples":{"languages":["curl","javascript","typescript","bash","rust"]}},"appearance":{"default":"dark"},"background":{"decoration":"gradient"},"navbar":{"links":[{"icon":"comet","href":"https://app.meteora.ag/","label":"App"},{"icon":"medium","href":"https://blog.meteora.ag","label":"Blog"},{"icon":"discord","href":"https://discord.com/invite/meteora","label":"Support"}]},"footer":{"socials":{"discord":"https://discord.gg/meteora","x":"https://x.com/MeteoraAG","youtube":"https://www.youtube.com/@meteora-ag","medium":"https://blog.meteora.ag/","github":"https://github.com/MeteoraAg","linkedin":"https://www.linkedin.com/company/meteora-ag"},"links":[{"header":"Meteora","items":[{"label":"Meteora","href":"https://app.meteora.ag"},{"label":"Terms of Service","href":"https://docs.meteora.ag/resources/legal/terms-of-service"}]}]},"fonts":{"family":"Inter"},"styling":{"codeblocks":"system","latex":true},"contextual":{"options":["copy","view","chatgpt","claude"],"display":"header"},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"meteora","hasAudioNarration":false,"actualSubdomain":"meteora","customDomains":["docs.meteora.ag"],"gitSource":{"type":"github","owner":"meteoraag","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae968e0715034d486e241ba","collectionId":"93647572-50f9-4b90-b388-8d55bf85ed84","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae968e0715034d486e241ba"},"feedback":{"thumbs":true,"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"REMOVE_BRANDING":{"status":"DISABLED"},"CONTEXTUAL_FEEDBACK":{"status":"DISABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"DISABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae968e0715034d486e241ba","clientVersion":"0.0.4071","searchFilterCounts":[{"language":"default","tag":"Developer Guides","count":161},{"language":"default","tag":"Get Started","count":67},{"language":"default","tag":"API Reference","count":51},{"language":"default","tag":"API Endpoints","count":46},{"language":"default","tag":"Program","count":39},{"language":"default","tag":"DLMM","count":38},{"language":"default","tag":"DAMM v1","count":32},{"language":"default","tag":"DAMM v2","count":31},{"language":"default","tag":"TypeScript SDK","count":31},{"language":"default","tag":"Core Products","count":28}]},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"core-products/dlmm/formulas","slug":"/core-products/dlmm/formulas","pageMetadata":{"title":"DLMM Formulas","sidebarTitle":"Formulas","description":"Understand the math behind DLMM bin prices, swap amounts, liquidity shares, dynamic fees, protocol fees, composition fees, and liquidity mining rewards.","llmsDescription":"Explanation of DLMM formulas based on the lb_clmm program, covering Q64.64 bin prices, bin step, constant-sum bin liquidity, amount-in and amount-out swap formulas, active bin movement, base fee, variable fee, volatility accumulator, total fee cap, included and excluded fee amount formulas, collect fee mode, fee splitting, protocol share, liquidity shares, withdrawal amounts, composition fees for active-bin deposits, and liquidity mining reward-per-token accounting.","href":"/core-products/dlmm/formulas"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Understand the math behind DLMM bin prices, swap amounts, liquidity shares, dynamic fees, protocol fees, composition fees, and liquidity mining rewards.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,annotation:`annotation`,code:`code`,li:`li`,math:`math`,mfrac:`mfrac`,mi:`mi`,mn:`mn`,mo:`mo`,mrow:`mrow`,msub:`msub`,msup:`msup`,mtext:`mtext`,p:`p`,path:`path`,semantics:`semantics`,span:`span`,strong:`strong`,svg:`svg`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Heading,Note,OptimizedImage,Table}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Table)_missingMdxReference(`Table`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`DLMM’s math is built around a simple product idea: each pool is a ladder of price bins, and each bin behaves like its own tiny market at a fixed price.`}),`\n`,_jsx(Note,{children:`The program performs integer arithmetic with fixed-point values and explicit rounding. This page shows the conceptual formula first, then calls out the important rounding or unit behavior where it matters.`}),`\n`,_jsx(Heading,{level:`2`,id:`units`,children:`Units`}),`\n`,_jsx(_components.p,{children:`DLMM uses a few important units:`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Value`}),_jsx(_components.th,{children:`Program Meaning`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`bin step`})}),_jsxs(_components.td,{children:[`Basis points between neighboring bins. `,_jsx(_components.code,{children:`10,000`}),` basis points = `,_jsx(_components.code,{children:`100%`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`P`})}),_jsx(_components.td,{children:`Bin price in Q64.64 fixed-point form.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`fee rate`})}),_jsxs(_components.td,{children:[`Stored in `,_jsx(_components.code,{children:`1e9`}),` precision. For example, `,_jsx(_components.code,{children:`10,000,000`}),` means `,_jsx(_components.code,{children:`1%`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`FEE_DENOMINATOR`})}),_jsxs(_components.td,{\"data-numeric\":`true`,children:[_jsx(_components.code,{children:`1,000,000,000`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`MAX_FEE_RATE`})}),_jsxs(_components.td,{\"data-numeric\":`true`,children:[_jsx(_components.code,{children:`100,000,000`}),`, or `,_jsx(_components.code,{children:`10%`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`protocol share`})}),_jsxs(_components.td,{children:[`Basis points of the trading fee retained by the protocol. Max `,_jsx(_components.code,{children:`2,500`}),`, or `,_jsx(_components.code,{children:`25%`}),`.`]})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`bin-price`,children:`Bin Price`}),`\n`,_jsxs(_components.p,{children:[`Every DLMM pool has a `,_jsx(_components.strong,{children:`bin step`}),`, measured in basis points. The bin step defines the percentage difference between one bin and the next.`]}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsxs(_components.msub,{children:[_jsx(_components.mi,{children:`P`}),_jsx(_components.mi,{children:`i`})]}),_jsx(_components.mo,{children:`=`}),_jsxs(_components.msup,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mo,{fence:`true`,children:`(`}),_jsx(_components.mn,{children:`1`}),_jsx(_components.mo,{children:`+`}),_jsxs(_components.mfrac,{children:[_jsx(_components.mtext,{children:`bin\\xA0step`}),_jsx(_components.mn,{children:`10,000`})]}),_jsx(_components.mo,{fence:`true`,children:`)`})]}),_jsx(_components.mi,{children:`i`})]})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`P_i = \\\\left(1 + \\\\frac{\\\\text{bin step}}{10{,}000}\\\\right)^i\n`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8333em`,verticalAlign:`-0.15em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.1389em`},children:`P`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.3117em`},children:_jsxs(_components.span,{style:{top:`-2.55em`,marginLeft:`-0.1389em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mathnormal mtight`,children:`i`})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.15em`},children:_jsx(_components.span,{})})})]})})]}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`2.6146em`,verticalAlign:`-0.95em`}}),_jsxs(_components.span,{className:`minner`,children:[_jsxs(_components.span,{className:`minner`,children:[_jsx(_components.span,{className:`mopen delimcenter`,style:{top:`0em`},children:_jsx(_components.span,{className:`delimsizing size3`,children:`(`})}),_jsx(_components.span,{className:`mord`,children:`1`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`+`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mopen nulldelimiter`}),_jsx(_components.span,{className:`mfrac`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsxs(_components.span,{className:`vlist`,style:{height:`1.3714em`},children:[_jsxs(_components.span,{style:{top:`-2.314em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord`,children:`10`}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mpunct`,children:`,`})}),_jsx(_components.span,{className:`mord`,children:`000`})]})]}),_jsxs(_components.span,{style:{top:`-3.23em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsx(_components.span,{className:`frac-line`,style:{borderBottomWidth:`0.04em`}})]}),_jsxs(_components.span,{style:{top:`-3.677em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`bin\\xA0step`})})})]})]}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.8804em`},children:_jsx(_components.span,{})})})]})}),_jsx(_components.span,{className:`mclose nulldelimiter`})]}),_jsx(_components.span,{className:`mclose delimcenter`,style:{top:`0em`},children:_jsx(_components.span,{className:`delimsizing size3`,children:`)`})})]}),_jsx(_components.span,{className:`msupsub`,children:_jsx(_components.span,{className:`vlist-t`,children:_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`1.6646em`},children:_jsxs(_components.span,{style:{top:`-3.9029em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mathnormal mtight`,children:`i`})})]})})})})})]})]})]})]})}),`\n`,_jsx(_components.p,{children:`Where:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`P_i`}),` is the price of bin `,_jsx(_components.code,{children:`i`})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`i`}),` is the bin ID`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`bin step`}),` is the pool’s configured step size`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`The program computes this as `,_jsx(_components.code,{children:`get_price_from_id(bin_id, bin_step)`}),` and returns the result in Q64.64 fixed-point form.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Example:`}),` if the bin step is `,_jsx(_components.code,{children:`25`}),` basis points, each neighboring bin is approximately `,_jsx(_components.code,{children:`0.25%`}),` apart. Moving from bin `,_jsx(_components.code,{children:`0`}),` to bin `,_jsx(_components.code,{children:`1`}),` multiplies the price by `,_jsx(_components.code,{children:`1.0025`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`bin-liquidity`,children:`Bin Liquidity`}),`\n`,_jsx(`div`,{className:`mint-flex mint-justify-center`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/meteora/FuYCvEvL3a7_z_Mt/core-products/dlmm/assets/bin-liquidity.png?fit=max\u0026auto=format\u0026n=FuYCvEvL3a7_z_Mt\u0026q=85\u0026s=d589eef6b69cbca57e33df2217b12982`,alt:`DLMM bin liquidity diagram`,className:`mint-rounded-lg mint-w-2/3 mint-h-auto`,\"data-og-width\":`1810`,width:`1810`,\"data-og-height\":`1810`,height:`1810`,\"data-path\":`core-products/dlmm/assets/bin-liquidity.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/meteora/FuYCvEvL3a7_z_Mt/core-products/dlmm/assets/bin-liquidity.png?w=280\u0026fit=max\u0026auto=format\u0026n=FuYCvEvL3a7_z_Mt\u0026q=85\u0026s=484cec2fcd87e83ae9703ecd9f69e633 280w, https://mintcdn.com/meteora/FuYCvEvL3a7_z_Mt/core-products/dlmm/assets/bin-liquidity.png?w=560\u0026fit=max\u0026auto=format\u0026n=FuYCvEvL3a7_z_Mt\u0026q=85\u0026s=af1d8d3902bd01f9e059c39de8ddae21 560w, https://mintcdn.com/meteora/FuYCvEvL3a7_z_Mt/core-products/dlmm/assets/bin-liquidity.png?w=840\u0026fit=max\u0026auto=format\u0026n=FuYCvEvL3a7_z_Mt\u0026q=85\u0026s=254681e5626905c158cbfca04fc45a91 840w, https://mintcdn.com/meteora/FuYCvEvL3a7_z_Mt/core-products/dlmm/assets/bin-liquidity.png?w=1100\u0026fit=max\u0026auto=format\u0026n=FuYCvEvL3a7_z_Mt\u0026q=85\u0026s=8c2f1f7aaa468ec2c4b17b0a0a76dcbf 1100w, https://mintcdn.com/meteora/FuYCvEvL3a7_z_Mt/core-products/dlmm/assets/bin-liquidity.png?w=1650\u0026fit=max\u0026auto=format\u0026n=FuYCvEvL3a7_z_Mt\u0026q=85\u0026s=afed0de5ca08aa8885a7122e664af783 1650w, https://mintcdn.com/meteora/FuYCvEvL3a7_z_Mt/core-products/dlmm/assets/bin-liquidity.png?w=2500\u0026fit=max\u0026auto=format\u0026n=FuYCvEvL3a7_z_Mt\u0026q=85\u0026s=a31dbb77c854fd87dced1b500f223339 2500w`})}),`\n`,_jsx(_components.p,{children:`Inside a bin, DLMM uses a constant-sum style liquidity value:`}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mi,{children:`L`}),_jsx(_components.mo,{children:`=`}),_jsx(_components.mi,{children:`P`}),_jsx(_components.mo,{children:`⋅`}),_jsx(_components.mi,{children:`x`}),_jsx(_components.mo,{children:`+`}),_jsx(_components.mi,{children:`y`})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`L = P \\\\cdot x + y\n`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.6833em`}}),_jsx(_components.span,{className:`mord mathnormal`,children:`L`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.6833em`}}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.1389em`},children:`P`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`⋅`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.6667em`,verticalAlign:`-0.0833em`}}),_jsx(_components.span,{className:`mord mathnormal`,children:`x`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`+`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.625em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.0359em`},children:`y`})]})]})]})}),`\n`,_jsx(_components.p,{children:`Where:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`L`}),` is the bin liquidity value`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`P`}),` is the bin price`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`x`}),` is the amount of token X`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`y`}),` is the amount of token Y`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`This fixed-price bin design is what creates zero price impact inside a single bin. Price changes when the available output liquidity in the active bin is consumed and the swap moves to another bin.`}),`\n`,_jsx(Heading,{level:`2`,id:`swap-amounts`,children:`Swap Amounts`}),`\n`,_jsx(_components.p,{children:`For a swap from token X to token Y, the output amount is:`}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsxs(_components.msub,{children:[_jsx(_components.mtext,{children:`amount\\xA0out`}),_jsx(_components.mi,{children:`Y`})]}),_jsx(_components.mo,{children:`=`}),_jsxs(_components.mrow,{children:[_jsx(_components.mo,{fence:`true`,children:`⌊`}),_jsxs(_components.msub,{children:[_jsx(_components.mtext,{children:`amount\\xA0in`}),_jsx(_components.mi,{children:`X`})]}),_jsx(_components.mo,{children:`⋅`}),_jsx(_components.mi,{children:`P`}),_jsx(_components.mo,{fence:`true`,children:`⌋`})]})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{amount out}_Y = \\\\left\\\\lfloor \\\\text{amount in}_X \\\\cdot P \\\\right\\\\rfloor\n`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.7651em`,verticalAlign:`-0.15em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`amount\\xA0out`})}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.3283em`},children:_jsxs(_components.span,{style:{top:`-2.55em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mathnormal mtight`,style:{marginRight:`0.2222em`},children:`Y`})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.15em`},children:_jsx(_components.span,{})})})]})})]}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`1em`,verticalAlign:`-0.25em`}}),_jsxs(_components.span,{className:`minner`,children:[_jsx(_components.span,{className:`mopen delimcenter`,style:{top:`0em`},children:`⌊`}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`amount\\xA0in`})}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.3283em`},children:_jsxs(_components.span,{style:{top:`-2.55em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mathnormal mtight`,style:{marginRight:`0.0785em`},children:`X`})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.15em`},children:_jsx(_components.span,{})})})]})})]}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`⋅`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.1389em`},children:`P`}),_jsx(_components.span,{className:`mclose delimcenter`,style:{top:`0em`},children:`⌋`})]})]})]})]})}),`\n`,_jsx(_components.p,{children:`For a swap from token Y to token X, the output amount is:`}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsxs(_components.msub,{children:[_jsx(_components.mtext,{children:`amount\\xA0out`}),_jsx(_components.mi,{children:`X`})]}),_jsx(_components.mo,{children:`=`}),_jsxs(_components.mrow,{children:[_jsx(_components.mo,{fence:`true`,children:`⌊`}),_jsxs(_components.mfrac,{children:[_jsxs(_components.msub,{children:[_jsx(_components.mtext,{children:`amount\\xA0in`}),_jsx(_components.mi,{children:`Y`})]}),_jsx(_components.mi,{children:`P`})]}),_jsx(_components.mo,{fence:`true`,children:`⌋`})]})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{amount out}_X = \\\\left\\\\lfloor \\\\frac{\\\\text{amount in}_Y}{P} \\\\right\\\\rfloor\n`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.7651em`,verticalAlign:`-0.15em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`amount\\xA0out`})}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.3283em`},children:_jsxs(_components.span,{style:{top:`-2.55em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mathnormal mtight`,style:{marginRight:`0.0785em`},children:`X`})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.15em`},children:_jsx(_components.span,{})})})]})})]}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`2.4em`,verticalAlign:`-0.95em`}}),_jsxs(_components.span,{className:`minner`,children:[_jsx(_components.span,{className:`mopen delimcenter`,style:{top:`0em`},children:_jsx(_components.span,{className:`delimsizing size3`,children:`⌊`})}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mopen nulldelimiter`}),_jsx(_components.span,{className:`mfrac`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsxs(_components.span,{className:`vlist`,style:{height:`1.3449em`},children:[_jsxs(_components.span,{style:{top:`-2.314em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.1389em`},children:`P`})})]}),_jsxs(_components.span,{style:{top:`-3.23em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsx(_components.span,{className:`frac-line`,style:{borderBottomWidth:`0.04em`}})]}),_jsxs(_components.span,{style:{top:`-3.677em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsx(_components.span,{className:`mord`,children:_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`amount\\xA0in`})}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.3283em`},children:_jsxs(_components.span,{style:{top:`-2.55em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mathnormal mtight`,style:{marginRight:`0.2222em`},children:`Y`})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.15em`},children:_jsx(_components.span,{})})})]})})]})})]})]}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.686em`},children:_jsx(_components.span,{})})})]})}),_jsx(_components.span,{className:`mclose nulldelimiter`})]}),_jsx(_components.span,{className:`mclose delimcenter`,style:{top:`0em`},children:_jsx(_components.span,{className:`delimsizing size3`,children:`⌋`})})]})]})]})]})}),`\n`,_jsx(_components.p,{children:`The inverse formulas are used when the program needs to know the required input for a desired output:`}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsxs(_components.msub,{children:[_jsx(_components.mtext,{children:`amount\\xA0in`}),_jsx(_components.mi,{children:`X`})]}),_jsx(_components.mo,{children:`=`}),_jsxs(_components.mrow,{children:[_jsx(_components.mo,{fence:`true`,children:`⌈`}),_jsxs(_components.mfrac,{children:[_jsxs(_components.msub,{children:[_jsx(_components.mtext,{children:`amount\\xA0out`}),_jsx(_components.mi,{children:`Y`})]}),_jsx(_components.mi,{children:`P`})]}),_jsx(_components.mo,{fence:`true`,children:`⌉`})]})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{amount in}_X = \\\\left\\\\lceil \\\\frac{\\\\text{amount out}_Y}{P} \\\\right\\\\rceil\n`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8179em`,verticalAlign:`-0.15em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`amount\\xA0in`})}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.3283em`},children:_jsxs(_components.span,{style:{top:`-2.55em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mathnormal mtight`,style:{marginRight:`0.0785em`},children:`X`})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.15em`},children:_jsx(_components.span,{})})})]})})]}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`2.4em`,verticalAlign:`-0.95em`}}),_jsxs(_components.span,{className:`minner`,children:[_jsx(_components.span,{className:`mopen delimcenter`,style:{top:`0em`},children:_jsx(_components.span,{className:`delimsizing size3`,children:`⌈`})}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mopen nulldelimiter`}),_jsx(_components.span,{className:`mfrac`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsxs(_components.span,{className:`vlist`,style:{height:`1.2921em`},children:[_jsxs(_components.span,{style:{top:`-2.314em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.1389em`},children:`P`})})]}),_jsxs(_components.span,{style:{top:`-3.23em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsx(_components.span,{className:`frac-line`,style:{borderBottomWidth:`0.04em`}})]}),_jsxs(_components.span,{style:{top:`-3.677em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsx(_components.span,{className:`mord`,children:_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`amount\\xA0out`})}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.3283em`},children:_jsxs(_components.span,{style:{top:`-2.55em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mathnormal mtight`,style:{marginRight:`0.2222em`},children:`Y`})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.15em`},children:_jsx(_components.span,{})})})]})})]})})]})]}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.686em`},children:_jsx(_components.span,{})})})]})}),_jsx(_components.span,{className:`mclose nulldelimiter`})]}),_jsx(_components.span,{className:`mclose delimcenter`,style:{top:`0em`},children:_jsx(_components.span,{className:`delimsizing size3`,children:`⌉`})})]})]})]})]})}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsxs(_components.msub,{children:[_jsx(_components.mtext,{children:`amount\\xA0in`}),_jsx(_components.mi,{children:`Y`})]}),_jsx(_components.mo,{children:`=`}),_jsxs(_components.mrow,{children:[_jsx(_components.mo,{fence:`true`,children:`⌈`}),_jsxs(_components.msub,{children:[_jsx(_components.mtext,{children:`amount\\xA0out`}),_jsx(_components.mi,{children:`X`})]}),_jsx(_components.mo,{children:`⋅`}),_jsx(_components.mi,{children:`P`}),_jsx(_components.mo,{fence:`true`,children:`⌉`})]})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{amount in}_Y = \\\\left\\\\lceil \\\\text{amount out}_X \\\\cdot P \\\\right\\\\rceil\n`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8179em`,verticalAlign:`-0.15em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`amount\\xA0in`})}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.3283em`},children:_jsxs(_components.span,{style:{top:`-2.55em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mathnormal mtight`,style:{marginRight:`0.2222em`},children:`Y`})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.15em`},children:_jsx(_components.span,{})})})]})})]}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`1em`,verticalAlign:`-0.25em`}}),_jsxs(_components.span,{className:`minner`,children:[_jsx(_components.span,{className:`mopen delimcenter`,style:{top:`0em`},children:`⌈`}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`amount\\xA0out`})}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.3283em`},children:_jsxs(_components.span,{style:{top:`-2.55em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mathnormal mtight`,style:{marginRight:`0.0785em`},children:`X`})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.15em`},children:_jsx(_components.span,{})})})]})})]}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`⋅`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.1389em`},children:`P`}),_jsx(_components.span,{className:`mclose delimcenter`,style:{top:`0em`},children:`⌉`})]})]})]})]})}),`\n`,_jsx(_components.p,{children:`The program rounds output amounts down and rounds required input amounts according to the swap path. This protects the pool from giving out more token than the bin can support.`}),`\n`,_jsx(Heading,{level:`2`,id:`total-trading-fee`,children:`Total Trading Fee`}),`\n`,_jsx(_components.p,{children:`DLMM trading fees have a base fee and an optional variable fee:`}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`total\\xA0fee\\xA0rate`}),_jsx(_components.mo,{children:`=`}),_jsx(_components.mi,{children:`min`}),_jsx(_components.mo,{children:``}),_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsx(_components.mtext,{children:`base\\xA0fee\\xA0rate`}),_jsx(_components.mo,{children:`+`}),_jsx(_components.mtext,{children:`variable\\xA0fee\\xA0rate`}),_jsx(_components.mo,{separator:`true`,children:`,`}),_jsx(_components.mtext,{children:`MAX_FEE_RATE`}),_jsx(_components.mo,{stretchy:`false`,children:`)`})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{total fee rate} = \\\\min(\\\\text{base fee rate} + \\\\text{variable fee rate}, \\\\text{MAX\\\\_FEE\\\\_RATE})\n`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.6944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`total\\xA0fee\\xA0rate`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`1em`,verticalAlign:`-0.25em`}}),_jsx(_components.span,{className:`mop`,children:`min`}),_jsx(_components.span,{className:`mopen`,children:`(`}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`base\\xA0fee\\xA0rate`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`+`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`1.06em`,verticalAlign:`-0.31em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`variable\\xA0fee\\xA0rate`})}),_jsx(_components.span,{className:`mpunct`,children:`,`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.1667em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`MAX_FEE_RATE`})}),_jsx(_components.span,{className:`mclose`,children:`)`})]})]})]})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`MAX_FEE_RATE`}),` is `,_jsx(_components.code,{children:`100,000,000`}),` in `,_jsx(_components.code,{children:`1e9`}),` precision, or `,_jsx(_components.code,{children:`10%`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`base-fee`,children:`Base Fee`}),`\n`,_jsx(_components.p,{children:`The base fee is configured through pool fee parameters:`}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`base\\xA0fee\\xA0rate`}),_jsx(_components.mo,{children:`=`}),_jsx(_components.mtext,{children:`base\\xA0factor`}),_jsx(_components.mo,{children:`×`}),_jsx(_components.mtext,{children:`bin\\xA0step`}),_jsx(_components.mo,{children:`×`}),_jsx(_components.mn,{children:`10`}),_jsx(_components.mo,{children:`×`}),_jsxs(_components.msup,{children:[_jsx(_components.mn,{children:`10`}),_jsx(_components.mtext,{children:`base\\xA0fee\\xA0power\\xA0factor`})]})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{base fee rate} =\n\\\\text{base factor}\n\\\\times\n\\\\text{bin step}\n\\\\times\n10\n\\\\times\n10^{\\\\text{base fee power factor}}\n`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.6944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`base\\xA0fee\\xA0rate`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.7778em`,verticalAlign:`-0.0833em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`base\\xA0factor`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`×`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8889em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`bin\\xA0step`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`×`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.7278em`,verticalAlign:`-0.0833em`}}),_jsx(_components.span,{className:`mord`,children:`10`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`×`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8991em`}}),_jsx(_components.span,{className:`mord`,children:`1`}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord`,children:`0`}),_jsx(_components.span,{className:`msupsub`,children:_jsx(_components.span,{className:`vlist-t`,children:_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.8991em`},children:_jsxs(_components.span,{style:{top:`-3.113em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:_jsx(_components.span,{className:`mord text mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:`base\\xA0fee\\xA0power\\xA0factor`})})})})]})})})})})]})]})]})]})}),`\n`,_jsxs(_components.p,{children:[`This value is stored in `,_jsx(_components.code,{children:`1e9`}),` precision.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Product intuition:`}),` a larger bin step often pairs with a larger base fee because each bin represents a larger price movement. A smaller bin step is usually used for tighter markets where LPs expect smaller price changes.`]}),`\n`,_jsx(Heading,{level:`2`,id:`variable-fee`,children:`Variable Fee`}),`\n`,_jsx(_components.p,{children:`The variable fee is DLMM’s volatility-aware fee. In the program, it is calculated as:`}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`variable\\xA0fee\\xA0rate`}),_jsx(_components.mo,{children:`=`}),_jsxs(_components.mrow,{children:[_jsx(_components.mo,{fence:`true`,children:`⌈`}),_jsxs(_components.mfrac,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`variable\\xA0fee\\xA0control`}),_jsx(_components.mo,{children:`×`}),_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsx(_components.mtext,{children:`volatility\\xA0accumulator`}),_jsx(_components.mo,{children:`×`}),_jsx(_components.mtext,{children:`bin\\xA0step`}),_jsxs(_components.msup,{children:[_jsx(_components.mo,{stretchy:`false`,children:`)`}),_jsx(_components.mn,{children:`2`})]})]}),_jsx(_components.mn,{children:`100,000,000,000`})]}),_jsx(_components.mo,{fence:`true`,children:`⌉`})]})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{variable fee rate}\n=\n\\\\left\\\\lceil\n\\\\frac{\n\\\\text{variable fee control}\n\\\\times\n(\\\\text{volatility accumulator} \\\\times \\\\text{bin step})^2\n}{\n100{,}000{,}000{,}000\n}\n\\\\right\\\\rceil\n`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.6944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`variable\\xA0fee\\xA0rate`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`2.4411em`,verticalAlign:`-0.95em`}}),_jsxs(_components.span,{className:`minner`,children:[_jsx(_components.span,{className:`mopen delimcenter`,style:{top:`0em`},children:_jsx(_components.span,{className:`delimsizing size3`,children:`⌈`})}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mopen nulldelimiter`}),_jsx(_components.span,{className:`mfrac`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsxs(_components.span,{className:`vlist`,style:{height:`1.4911em`},children:[_jsxs(_components.span,{style:{top:`-2.314em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord`,children:`100`}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mpunct`,children:`,`})}),_jsx(_components.span,{className:`mord`,children:`000`}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mpunct`,children:`,`})}),_jsx(_components.span,{className:`mord`,children:`000`}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mpunct`,children:`,`})}),_jsx(_components.span,{className:`mord`,children:`000`})]})]}),_jsxs(_components.span,{style:{top:`-3.23em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsx(_components.span,{className:`frac-line`,style:{borderBottomWidth:`0.04em`}})]}),_jsxs(_components.span,{style:{top:`-3.677em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`variable\\xA0fee\\xA0control`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`×`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mopen`,children:`(`}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`volatility\\xA0accumulator`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`×`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`bin\\xA0step`})}),_jsxs(_components.span,{className:`mclose`,children:[_jsx(_components.span,{className:`mclose`,children:`)`}),_jsx(_components.span,{className:`msupsub`,children:_jsx(_components.span,{className:`vlist-t`,children:_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.8141em`},children:_jsxs(_components.span,{style:{top:`-3.063em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:`2`})})]})})})})})]})]})]})]}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.8804em`},children:_jsx(_components.span,{})})})]})}),_jsx(_components.span,{className:`mclose nulldelimiter`})]}),_jsx(_components.span,{className:`mclose delimcenter`,style:{top:`0em`},children:_jsx(_components.span,{className:`delimsizing size3`,children:`⌉`})})]})]})]})]})}),`\n`,_jsxs(_components.p,{children:[`If `,_jsx(_components.code,{children:`variable fee control`}),` is `,_jsx(_components.code,{children:`0`}),`, the variable fee is `,_jsx(_components.code,{children:`0`}),`.`]}),`\n`,_jsx(_components.p,{children:`The volatility accumulator updates from bin movement:`}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`volatility\\xA0accumulator`}),_jsx(_components.mo,{children:`=`}),_jsx(_components.mi,{children:`min`}),_jsx(_components.mo,{children:``}),_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsx(_components.mtext,{children:`volatility\\xA0reference`}),_jsx(_components.mo,{children:`+`}),_jsx(_components.mi,{mathvariant:`normal`,children:`∣`}),_jsx(_components.mtext,{children:`index\\xA0reference`}),_jsx(_components.mo,{children:`−`}),_jsx(_components.mtext,{children:`active\\xA0id`}),_jsx(_components.mi,{mathvariant:`normal`,children:`∣`}),_jsx(_components.mo,{children:`×`}),_jsx(_components.mn,{children:`10,000`}),_jsx(_components.mo,{separator:`true`,children:`,`}),_jsx(_components.mtext,{children:`max\\xA0volatility\\xA0accumulator`}),_jsx(_components.mo,{stretchy:`false`,children:`)`})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{volatility accumulator}\n=\n\\\\min(\n\\\\text{volatility reference} + |\\\\text{index reference} - \\\\text{active id}| \\\\times 10{,}000,\n\\\\text{max volatility accumulator}\n)\n`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8889em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`volatility\\xA0accumulator`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`1em`,verticalAlign:`-0.25em`}}),_jsx(_components.span,{className:`mop`,children:`min`}),_jsx(_components.span,{className:`mopen`,children:`(`}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`volatility\\xA0reference`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`+`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`1em`,verticalAlign:`-0.25em`}}),_jsx(_components.span,{className:`mord`,children:`∣`}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`index\\xA0reference`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`−`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`1em`,verticalAlign:`-0.25em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`active\\xA0id`})}),_jsx(_components.span,{className:`mord`,children:`∣`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`×`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`1em`,verticalAlign:`-0.25em`}}),_jsx(_components.span,{className:`mord`,children:`10`}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mpunct`,children:`,`})}),_jsx(_components.span,{className:`mord`,children:`000`}),_jsx(_components.span,{className:`mpunct`,children:`,`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.1667em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`max\\xA0volatility\\xA0accumulator`})}),_jsx(_components.span,{className:`mclose`,children:`)`})]})]})]})}),`\n`,_jsx(_components.p,{children:`The volatility reference decays based on elapsed time:`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Time Since Last Update`}),_jsx(_components.th,{children:`Program Behavior`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[`Less than `,_jsx(_components.code,{children:`filter_period`})]}),_jsx(_components.td,{children:`Keep the existing reference.`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[`Between `,_jsx(_components.code,{children:`filter_period`}),` and `,_jsx(_components.code,{children:`decay_period`})]}),_jsx(_components.td,{children:_jsx(_components.code,{children:`volatility reference = volatility accumulator × reduction factor / 10,000`})})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[`Greater than or equal to `,_jsx(_components.code,{children:`decay_period`})]}),_jsx(_components.td,{children:_jsx(_components.code,{children:`volatility reference = 0`})})]})]})]}),`\n`,_jsx(_components.p,{children:`This lets fees increase when swaps move across bins and cool down after quieter periods.`}),`\n`,_jsx(Heading,{level:`2`,id:`fee-amounts`,children:`Fee Amounts`}),`\n`,_jsx(_components.p,{children:`The program supports two common fee calculations.`}),`\n`,_jsx(_components.p,{children:`When the fee is part of the amount already provided by the trader:`}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`fee\\xA0amount`}),_jsx(_components.mo,{children:`=`}),_jsxs(_components.mrow,{children:[_jsx(_components.mo,{fence:`true`,children:`⌈`}),_jsxs(_components.mfrac,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`amount\\xA0with\\xA0fee`}),_jsx(_components.mo,{children:`×`}),_jsx(_components.mtext,{children:`total\\xA0fee\\xA0rate`})]}),_jsx(_components.mn,{children:`1,000,000,000`})]}),_jsx(_components.mo,{fence:`true`,children:`⌉`})]})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{fee amount}\n=\n\\\\left\\\\lceil\n\\\\frac{\\\\text{amount with fee} \\\\times \\\\text{total fee rate}}{1{,}000{,}000{,}000}\n\\\\right\\\\rceil\n`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.6944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`fee\\xA0amount`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`2.4em`,verticalAlign:`-0.95em`}}),_jsxs(_components.span,{className:`minner`,children:[_jsx(_components.span,{className:`mopen delimcenter`,style:{top:`0em`},children:_jsx(_components.span,{className:`delimsizing size3`,children:`⌈`})}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mopen nulldelimiter`}),_jsx(_components.span,{className:`mfrac`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsxs(_components.span,{className:`vlist`,style:{height:`1.3714em`},children:[_jsxs(_components.span,{style:{top:`-2.314em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord`,children:`1`}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mpunct`,children:`,`})}),_jsx(_components.span,{className:`mord`,children:`000`}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mpunct`,children:`,`})}),_jsx(_components.span,{className:`mord`,children:`000`}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mpunct`,children:`,`})}),_jsx(_components.span,{className:`mord`,children:`000`})]})]}),_jsxs(_components.span,{style:{top:`-3.23em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsx(_components.span,{className:`frac-line`,style:{borderBottomWidth:`0.04em`}})]}),_jsxs(_components.span,{style:{top:`-3.677em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`amount\\xA0with\\xA0fee`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`×`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`total\\xA0fee\\xA0rate`})})]})]})]}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.8804em`},children:_jsx(_components.span,{})})})]})}),_jsx(_components.span,{className:`mclose nulldelimiter`})]}),_jsx(_components.span,{className:`mclose delimcenter`,style:{top:`0em`},children:_jsx(_components.span,{className:`delimsizing size3`,children:`⌉`})})]})]})]})]})}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`amount\\xA0excluding\\xA0fee`}),_jsx(_components.mo,{children:`=`}),_jsx(_components.mtext,{children:`amount\\xA0with\\xA0fee`}),_jsx(_components.mo,{children:`−`}),_jsx(_components.mtext,{children:`fee\\xA0amount`})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{amount excluding fee}\n=\n\\\\text{amount with fee} - \\\\text{fee amount}\n`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8889em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`amount\\xA0excluding\\xA0fee`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.7778em`,verticalAlign:`-0.0833em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`amount\\xA0with\\xA0fee`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`−`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.6944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`fee\\xA0amount`})})]})]})]})}),`\n`,_jsx(_components.p,{children:`When the fee must be added on top of an amount that does not include fees:`}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`fee\\xA0amount`}),_jsx(_components.mo,{children:`=`}),_jsxs(_components.mrow,{children:[_jsx(_components.mo,{fence:`true`,children:`⌈`}),_jsxs(_components.mfrac,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`amount\\xA0excluding\\xA0fee`}),_jsx(_components.mo,{children:`×`}),_jsx(_components.mtext,{children:`total\\xA0fee\\xA0rate`})]}),_jsxs(_components.mrow,{children:[_jsx(_components.mn,{children:`1,000,000,000`}),_jsx(_components.mo,{children:`−`}),_jsx(_components.mtext,{children:`total\\xA0fee\\xA0rate`})]})]}),_jsx(_components.mo,{fence:`true`,children:`⌉`})]})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{fee amount}\n=\n\\\\left\\\\lceil\n\\\\frac{\n\\\\text{amount excluding fee} \\\\times \\\\text{total fee rate}\n}{\n1{,}000{,}000{,}000 - \\\\text{total fee rate}\n}\n\\\\right\\\\rceil\n`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.6944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`fee\\xA0amount`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`2.4em`,verticalAlign:`-0.95em`}}),_jsxs(_components.span,{className:`minner`,children:[_jsx(_components.span,{className:`mopen delimcenter`,style:{top:`0em`},children:_jsx(_components.span,{className:`delimsizing size3`,children:`⌈`})}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mopen nulldelimiter`}),_jsx(_components.span,{className:`mfrac`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsxs(_components.span,{className:`vlist`,style:{height:`1.3714em`},children:[_jsxs(_components.span,{style:{top:`-2.314em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord`,children:`1`}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mpunct`,children:`,`})}),_jsx(_components.span,{className:`mord`,children:`000`}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mpunct`,children:`,`})}),_jsx(_components.span,{className:`mord`,children:`000`}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mpunct`,children:`,`})}),_jsx(_components.span,{className:`mord`,children:`000`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`−`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`total\\xA0fee\\xA0rate`})})]})]}),_jsxs(_components.span,{style:{top:`-3.23em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsx(_components.span,{className:`frac-line`,style:{borderBottomWidth:`0.04em`}})]}),_jsxs(_components.span,{style:{top:`-3.677em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`amount\\xA0excluding\\xA0fee`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`×`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`total\\xA0fee\\xA0rate`})})]})]})]}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.8804em`},children:_jsx(_components.span,{})})})]})}),_jsx(_components.span,{className:`mclose nulldelimiter`})]}),_jsx(_components.span,{className:`mclose delimcenter`,style:{top:`0em`},children:_jsx(_components.span,{className:`delimsizing size3`,children:`⌉`})})]})]})]})]})}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`amount\\xA0including\\xA0fee`}),_jsx(_components.mo,{children:`=`}),_jsx(_components.mtext,{children:`amount\\xA0excluding\\xA0fee`}),_jsx(_components.mo,{children:`+`}),_jsx(_components.mtext,{children:`fee\\xA0amount`})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{amount including fee}\n=\n\\\\text{amount excluding fee} + \\\\text{fee amount}\n`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8889em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`amount\\xA0including\\xA0fee`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8889em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`amount\\xA0excluding\\xA0fee`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`+`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.6944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`fee\\xA0amount`})})]})]})]})}),`\n`,_jsxs(_components.p,{children:[`Which form is used depends on the swap direction and the pool’s `,_jsx(_components.a,{href:`/core-products/dlmm/collect-fee-mode`,children:`Collect Fee Mode`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`fee-split`,children:`Fee Split`}),`\n`,_jsxs(_components.p,{children:[`How a bin’s `,_jsx(_components.strong,{children:`trading fee`}),` is distributed depends on the pool’s `,_jsx(_components.a,{href:`/core-products/dlmm/what-is-dlmm#pool-function-modes`,children:`function mode`}),`:`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Pool mode`}),_jsx(_components.th,{children:`Liquidity sources`}),_jsx(_components.th,{children:`Limit-order fee path`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Liquidity mining`}),_jsx(_components.td,{children:`MM positions only`}),_jsx(_components.td,{children:`No`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Limit order`}),_jsx(_components.td,{children:`MM positions and/or limit orders`}),_jsx(_components.td,{children:`Yes`})]})]})]}),`\n`,_jsxs(_components.p,{children:[`Both modes use the same `,_jsx(_components.code,{children:`protocol share`}),` for MM liquidity and the same referral `,_jsx(_components.strong,{children:`host fee`}),` rule. Limit-order pools add an extra split when limit-order liquidity contributes to the fill.`]}),`\n`,_jsxs(Note,{children:[`These rates apply to how the `,_jsx(_components.strong,{children:`trading fee`}),` is shared among recipients. They are separate from the pool’s base fee, variable fee, and total fee cap.`]}),`\n`,_jsx(Heading,{level:`3`,id:`mm-protocol-and-lp-shares`,children:`MM protocol and LP shares`}),`\n`,_jsxs(_components.p,{children:[`For any fill that comes from MM positions, the MM slice of the trading fee is split by the pool’s `,_jsx(_components.code,{children:`protocol share`}),`:`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Pool type`}),_jsx(_components.th,{children:`Protocol`}),_jsx(_components.th,{children:`LP`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Standard pool`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`10%`}),` (`,_jsx(_components.code,{children:`protocol share`}),` = `,_jsx(_components.code,{children:`1,000`}),` bps)`]}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`90%`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Launch Pool`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`20%`}),` (`,_jsx(_components.code,{children:`ILM_PROTOCOL_SHARE`}),` = `,_jsx(_components.code,{children:`2,000`}),` bps)`]}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`80%`})})]})]})]}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`protocol\\xA0fee`}),_jsx(_components.mo,{children:`=`}),_jsxs(_components.mrow,{children:[_jsx(_components.mo,{fence:`true`,children:`⌊`}),_jsxs(_components.mfrac,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`trading\\xA0fee`}),_jsx(_components.mo,{children:`×`}),_jsx(_components.mtext,{children:`protocol\\xA0share`})]}),_jsx(_components.mn,{children:`10,000`})]}),_jsx(_components.mo,{fence:`true`,children:`⌋`})]})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{protocol fee}\n=\n\\\\left\\\\lfloor\n\\\\frac{\\\\text{trading fee} \\\\times \\\\text{protocol share}}{10{,}000}\n\\\\right\\\\rfloor\n`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8889em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`protocol\\xA0fee`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`2.4em`,verticalAlign:`-0.95em`}}),_jsxs(_components.span,{className:`minner`,children:[_jsx(_components.span,{className:`mopen delimcenter`,style:{top:`0em`},children:_jsx(_components.span,{className:`delimsizing size3`,children:`⌊`})}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mopen nulldelimiter`}),_jsx(_components.span,{className:`mfrac`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsxs(_components.span,{className:`vlist`,style:{height:`1.3714em`},children:[_jsxs(_components.span,{style:{top:`-2.314em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord`,children:`10`}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mpunct`,children:`,`})}),_jsx(_components.span,{className:`mord`,children:`000`})]})]}),_jsxs(_components.span,{style:{top:`-3.23em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsx(_components.span,{className:`frac-line`,style:{borderBottomWidth:`0.04em`}})]}),_jsxs(_components.span,{style:{top:`-3.677em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`trading\\xA0fee`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`×`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`protocol\\xA0share`})})]})]})]}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.8804em`},children:_jsx(_components.span,{})})})]})}),_jsx(_components.span,{className:`mclose nulldelimiter`})]}),_jsx(_components.span,{className:`mclose delimcenter`,style:{top:`0em`},children:_jsx(_components.span,{className:`delimsizing size3`,children:`⌋`})})]})]})]})]})}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`LP\\xA0fee`}),_jsx(_components.mo,{children:`=`}),_jsx(_components.mtext,{children:`trading\\xA0fee`}),_jsx(_components.mo,{children:`−`}),_jsx(_components.mtext,{children:`protocol\\xA0fee`})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{LP fee}\n=\n\\\\text{trading fee} - \\\\text{protocol fee}\n`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.6944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`LP\\xA0fee`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8889em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`trading\\xA0fee`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`−`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8889em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`protocol\\xA0fee`})})]})]})]})}),`\n`,_jsxs(_components.p,{children:[`On limit-order pools, replace `,_jsx(_components.code,{children:`trading fee`}),` with `,_jsx(_components.code,{children:`total MM fee`}),` when the fill also includes limit-order liquidity (see below).`]}),`\n`,_jsx(Heading,{level:`3`,id:`referral-host-fee`,children:`Referral host fee`}),`\n`,_jsxs(_components.p,{children:[`When a swap passes a `,_jsx(_components.strong,{children:`referral account`}),`, the host receives `,_jsx(_components.code,{children:`20%`}),` of the applicable protocol fee (`,_jsx(_components.code,{children:`HOST_FEE_BPS`}),` = `,_jsx(_components.code,{children:`2,000`}),` bps). The rest stays as protocol treasury fee.`]}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`host\\xA0fee`}),_jsx(_components.mo,{children:`=`}),_jsxs(_components.mrow,{children:[_jsx(_components.mo,{fence:`true`,children:`⌊`}),_jsxs(_components.mfrac,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`protocol\\xA0fee`}),_jsx(_components.mo,{children:`×`}),_jsx(_components.mn,{children:`2,000`})]}),_jsx(_components.mn,{children:`10,000`})]}),_jsx(_components.mo,{fence:`true`,children:`⌋`})]})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{host fee}\n=\n\\\\left\\\\lfloor\n\\\\frac{\\\\text{protocol fee} \\\\times 2{,}000}{10{,}000}\n\\\\right\\\\rfloor\n`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.6944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`host\\xA0fee`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`2.4em`,verticalAlign:`-0.95em`}}),_jsxs(_components.span,{className:`minner`,children:[_jsx(_components.span,{className:`mopen delimcenter`,style:{top:`0em`},children:_jsx(_components.span,{className:`delimsizing size3`,children:`⌊`})}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mopen nulldelimiter`}),_jsx(_components.span,{className:`mfrac`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsxs(_components.span,{className:`vlist`,style:{height:`1.3714em`},children:[_jsxs(_components.span,{style:{top:`-2.314em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord`,children:`10`}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mpunct`,children:`,`})}),_jsx(_components.span,{className:`mord`,children:`000`})]})]}),_jsxs(_components.span,{style:{top:`-3.23em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsx(_components.span,{className:`frac-line`,style:{borderBottomWidth:`0.04em`}})]}),_jsxs(_components.span,{style:{top:`-3.677em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`protocol\\xA0fee`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`×`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mord`,children:`2`}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mpunct`,children:`,`})}),_jsx(_components.span,{className:`mord`,children:`000`})]})]})]}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.8804em`},children:_jsx(_components.span,{})})})]})}),_jsx(_components.span,{className:`mclose nulldelimiter`})]}),_jsx(_components.span,{className:`mclose delimcenter`,style:{top:`0em`},children:_jsx(_components.span,{className:`delimsizing size3`,children:`⌋`})})]})]})]})]})}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`protocol\\xA0fee\\xA0remainder`}),_jsx(_components.mo,{children:`=`}),_jsx(_components.mtext,{children:`protocol\\xA0fee`}),_jsx(_components.mo,{children:`−`}),_jsx(_components.mtext,{children:`host\\xA0fee`})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{protocol fee remainder}\n=\n\\\\text{protocol fee} - \\\\text{host fee}\n`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8889em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`protocol\\xA0fee\\xA0remainder`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8889em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`protocol\\xA0fee`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`−`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.6944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`host\\xA0fee`})})]})]})]})}),`\n`,_jsxs(_components.p,{children:[`Without a referral account, `,_jsx(_components.code,{children:`host fee = 0`}),` and `,_jsx(_components.code,{children:`protocol fee remainder = protocol fee`}),`.`]}),`\n`,_jsx(_components.p,{children:`On limit-order pools with mixed fills, host fee can also include a capped share from the limit-order protocol slice (see below).`}),`\n`,_jsx(Heading,{level:`3`,id:`liquidity-mining-pools`,children:`Liquidity mining pools`}),`\n`,_jsx(_components.p,{children:`Liquidity mining pools do not support limit orders. Every swap fill is MM liquidity, so the entire trading fee uses the MM formulas above with no liquidity-source split.`}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`trading\\xA0fee`}),_jsx(_components.mo,{children:`=`}),_jsx(_components.mtext,{children:`LP\\xA0fee`}),_jsx(_components.mo,{children:`+`}),_jsx(_components.mtext,{children:`protocol\\xA0fee\\xA0remainder`}),_jsx(_components.mo,{children:`+`}),_jsx(_components.mtext,{children:`host\\xA0fee`})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{trading fee}\n=\n\\\\text{LP fee}\n+\n\\\\text{protocol fee remainder}\n+\n\\\\text{host fee}\n`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8889em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`trading\\xA0fee`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.7778em`,verticalAlign:`-0.0833em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`LP\\xA0fee`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`+`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8889em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`protocol\\xA0fee\\xA0remainder`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`+`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.6944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`host\\xA0fee`})})]})]})]})}),`\n`,_jsx(Heading,{level:`3`,id:`limit-order-pools`,children:`Limit-order pools`}),`\n`,_jsxs(_components.p,{children:[`Limit-order pools can fill from MM positions, limit orders, or both in the same bin. The program first assigns the trading fee by `,_jsx(_components.strong,{children:`liquidity source`}),`, then applies the recipient splits above.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`By liquidity source`}),` (rounding favors MM):`]}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`total\\xA0MM\\xA0fee`}),_jsx(_components.mo,{children:`=`}),_jsxs(_components.mrow,{children:[_jsx(_components.mo,{fence:`true`,children:`⌈`}),_jsx(_components.mtext,{children:`trading\\xA0fee`}),_jsx(_components.mo,{children:`×`}),_jsxs(_components.mfrac,{children:[_jsx(_components.mtext,{children:`MM\\xA0amount\\xA0in`}),_jsx(_components.mtext,{children:`total\\xA0amount\\xA0in`})]}),_jsx(_components.mo,{fence:`true`,children:`⌉`})]})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{total MM fee}\n=\n\\\\left\\\\lceil\n\\\\text{trading fee}\n\\\\times\n\\\\frac{\\\\text{MM amount in}}{\\\\text{total amount in}}\n\\\\right\\\\rceil\n`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.6944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`total\\xA0MM\\xA0fee`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`2.4em`,verticalAlign:`-0.95em`}}),_jsxs(_components.span,{className:`minner`,children:[_jsx(_components.span,{className:`mopen delimcenter`,style:{top:`0em`},children:_jsx(_components.span,{className:`delimsizing size3`,children:`⌈`})}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`trading\\xA0fee`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`×`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mopen nulldelimiter`}),_jsx(_components.span,{className:`mfrac`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsxs(_components.span,{className:`vlist`,style:{height:`1.3603em`},children:[_jsxs(_components.span,{style:{top:`-2.314em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`total\\xA0amount\\xA0in`})})})]}),_jsxs(_components.span,{style:{top:`-3.23em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsx(_components.span,{className:`frac-line`,style:{borderBottomWidth:`0.04em`}})]}),_jsxs(_components.span,{style:{top:`-3.677em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`MM\\xA0amount\\xA0in`})})})]})]}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.686em`},children:_jsx(_components.span,{})})})]})}),_jsx(_components.span,{className:`mclose nulldelimiter`})]}),_jsx(_components.span,{className:`mclose delimcenter`,style:{top:`0em`},children:_jsx(_components.span,{className:`delimsizing size3`,children:`⌉`})})]})]})]})]})}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`total\\xA0limit\\xA0order\\xA0fee`}),_jsx(_components.mo,{children:`=`}),_jsx(_components.mtext,{children:`trading\\xA0fee`}),_jsx(_components.mo,{children:`−`}),_jsx(_components.mtext,{children:`total\\xA0MM\\xA0fee`})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{total limit order fee}\n=\n\\\\text{trading fee} - \\\\text{total MM fee}\n`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.6944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`total\\xA0limit\\xA0order\\xA0fee`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8889em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`trading\\xA0fee`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`−`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.6944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`total\\xA0MM\\xA0fee`})})]})]})]})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`MM slice`}),` — split with `,_jsx(_components.code,{children:`protocol share`}),` as in the table above:`]}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`MM\\xA0protocol\\xA0fee`}),_jsx(_components.mo,{children:`=`}),_jsxs(_components.mrow,{children:[_jsx(_components.mo,{fence:`true`,children:`⌊`}),_jsxs(_components.mfrac,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`total\\xA0MM\\xA0fee`}),_jsx(_components.mo,{children:`×`}),_jsx(_components.mtext,{children:`protocol\\xA0share`})]}),_jsx(_components.mn,{children:`10,000`})]}),_jsx(_components.mo,{fence:`true`,children:`⌋`})]})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{MM protocol fee}\n=\n\\\\left\\\\lfloor\n\\\\frac{\\\\text{total MM fee} \\\\times \\\\text{protocol share}}{10{,}000}\n\\\\right\\\\rfloor\n`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8889em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`MM\\xA0protocol\\xA0fee`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`2.4em`,verticalAlign:`-0.95em`}}),_jsxs(_components.span,{className:`minner`,children:[_jsx(_components.span,{className:`mopen delimcenter`,style:{top:`0em`},children:_jsx(_components.span,{className:`delimsizing size3`,children:`⌊`})}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mopen nulldelimiter`}),_jsx(_components.span,{className:`mfrac`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsxs(_components.span,{className:`vlist`,style:{height:`1.3714em`},children:[_jsxs(_components.span,{style:{top:`-2.314em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord`,children:`10`}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mpunct`,children:`,`})}),_jsx(_components.span,{className:`mord`,children:`000`})]})]}),_jsxs(_components.span,{style:{top:`-3.23em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsx(_components.span,{className:`frac-line`,style:{borderBottomWidth:`0.04em`}})]}),_jsxs(_components.span,{style:{top:`-3.677em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`total\\xA0MM\\xA0fee`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`×`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`protocol\\xA0share`})})]})]})]}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.8804em`},children:_jsx(_components.span,{})})})]})}),_jsx(_components.span,{className:`mclose nulldelimiter`})]}),_jsx(_components.span,{className:`mclose delimcenter`,style:{top:`0em`},children:_jsx(_components.span,{className:`delimsizing size3`,children:`⌋`})})]})]})]})]})}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`MM\\xA0LP\\xA0fee`}),_jsx(_components.mo,{children:`=`}),_jsx(_components.mtext,{children:`total\\xA0MM\\xA0fee`}),_jsx(_components.mo,{children:`−`}),_jsx(_components.mtext,{children:`MM\\xA0protocol\\xA0fee`})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{MM LP fee}\n=\n\\\\text{total MM fee} - \\\\text{MM protocol fee}\n`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.6944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`MM\\xA0LP\\xA0fee`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.7778em`,verticalAlign:`-0.0833em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`total\\xA0MM\\xA0fee`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`−`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8889em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`MM\\xA0protocol\\xA0fee`})})]})]})]})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Limit-order slice`}),` — always `,_jsx(_components.code,{children:`50%`}),` / `,_jsx(_components.code,{children:`50%`}),` via `,_jsx(_components.code,{children:`LIMIT_ORDER_FEE_SHARE`}),` (`,_jsx(_components.code,{children:`5,000`}),` bps), independent of pool type:`]}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`limit\\xA0order\\xA0participant\\xA0fee`}),_jsx(_components.mo,{children:`=`}),_jsxs(_components.mrow,{children:[_jsx(_components.mo,{fence:`true`,children:`⌊`}),_jsxs(_components.mfrac,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`total\\xA0limit\\xA0order\\xA0fee`}),_jsx(_components.mo,{children:`×`}),_jsx(_components.mn,{children:`5,000`})]}),_jsx(_components.mn,{children:`10,000`})]}),_jsx(_components.mo,{fence:`true`,children:`⌋`})]})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{limit order participant fee}\n=\n\\\\left\\\\lfloor\n\\\\frac{\\\\text{total limit order fee} \\\\times 5{,}000}{10{,}000}\n\\\\right\\\\rfloor\n`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8889em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`limit\\xA0order\\xA0participant\\xA0fee`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`2.4em`,verticalAlign:`-0.95em`}}),_jsxs(_components.span,{className:`minner`,children:[_jsx(_components.span,{className:`mopen delimcenter`,style:{top:`0em`},children:_jsx(_components.span,{className:`delimsizing size3`,children:`⌊`})}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mopen nulldelimiter`}),_jsx(_components.span,{className:`mfrac`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsxs(_components.span,{className:`vlist`,style:{height:`1.3714em`},children:[_jsxs(_components.span,{style:{top:`-2.314em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord`,children:`10`}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mpunct`,children:`,`})}),_jsx(_components.span,{className:`mord`,children:`000`})]})]}),_jsxs(_components.span,{style:{top:`-3.23em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsx(_components.span,{className:`frac-line`,style:{borderBottomWidth:`0.04em`}})]}),_jsxs(_components.span,{style:{top:`-3.677em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`total\\xA0limit\\xA0order\\xA0fee`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`×`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mord`,children:`5`}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mpunct`,children:`,`})}),_jsx(_components.span,{className:`mord`,children:`000`})]})]})]}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.8804em`},children:_jsx(_components.span,{})})})]})}),_jsx(_components.span,{className:`mclose nulldelimiter`})]}),_jsx(_components.span,{className:`mclose delimcenter`,style:{top:`0em`},children:_jsx(_components.span,{className:`delimsizing size3`,children:`⌋`})})]})]})]})]})}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`limit\\xA0order\\xA0protocol\\xA0fee`}),_jsx(_components.mo,{children:`=`}),_jsx(_components.mtext,{children:`total\\xA0limit\\xA0order\\xA0fee`}),_jsx(_components.mo,{children:`−`}),_jsx(_components.mtext,{children:`limit\\xA0order\\xA0participant\\xA0fee`})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{limit order protocol fee}\n=\n\\\\text{total limit order fee} - \\\\text{limit order participant fee}\n`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8889em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`limit\\xA0order\\xA0protocol\\xA0fee`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.7778em`,verticalAlign:`-0.0833em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`total\\xA0limit\\xA0order\\xA0fee`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`−`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8889em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`limit\\xA0order\\xA0participant\\xA0fee`})})]})]})]})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Referral host fee`}),` — `,_jsx(_components.code,{children:`20%`}),` of `,_jsx(_components.code,{children:`MM protocol fee`}),`, plus a capped share from the limit-order protocol slice:`]}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`host\\xA0fee\\xA0on\\xA0limit\\xA0order`}),_jsx(_components.mo,{children:`=`}),_jsx(_components.mi,{children:`min`}),_jsx(_components.mo,{children:``}),_jsxs(_components.mrow,{children:[_jsx(_components.mo,{fence:`true`,children:`(`}),_jsxs(_components.mrow,{children:[_jsx(_components.mo,{fence:`true`,children:`⌊`}),_jsxs(_components.mfrac,{children:[_jsxs(_components.mrow,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mo,{fence:`true`,children:`⌊`}),_jsxs(_components.mfrac,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`total\\xA0limit\\xA0order\\xA0fee`}),_jsx(_components.mo,{children:`×`}),_jsx(_components.mtext,{children:`protocol\\xA0share`})]}),_jsx(_components.mn,{children:`10,000`})]}),_jsx(_components.mo,{fence:`true`,children:`⌋`})]}),_jsx(_components.mo,{children:`×`}),_jsx(_components.mn,{children:`2,000`})]}),_jsx(_components.mn,{children:`10,000`})]}),_jsx(_components.mo,{fence:`true`,children:`⌋`})]}),_jsx(_components.mo,{separator:`true`,children:`,`}),_jsx(_components.mtext,{children:`limit\\xA0order\\xA0protocol\\xA0fee`}),_jsx(_components.mo,{fence:`true`,children:`)`})]})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{host fee on limit order}\n=\n\\\\min\n\\\\left(\n\\\\left\\\\lfloor\n\\\\frac{\n\\\\left\\\\lfloor\n\\\\frac{\\\\text{total limit order fee} \\\\times \\\\text{protocol share}}{10{,}000}\n\\\\right\\\\rfloor\n\\\\times 2{,}000\n}{\n10{,}000\n}\n\\\\right\\\\rfloor,\n\\\\text{limit order protocol fee}\n\\\\right)\n`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.6944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`host\\xA0fee\\xA0on\\xA0limit\\xA0order`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`3.74em`,verticalAlign:`-1.55em`}}),_jsx(_components.span,{className:`mop`,children:`min`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.1667em`}}),_jsxs(_components.span,{className:`minner`,children:[_jsx(_components.span,{className:`mopen`,children:_jsx(_components.span,{className:`delimsizing mult`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`2.05em`},children:_jsxs(_components.span,{style:{top:`-4.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`5.6em`}}),_jsx(_components.span,{style:{width:`0.875em`,height:`3.6em`},children:_jsx(_components.svg,{xmlns:`http://www.w3.org/2000/svg`,width:`0.875em`,height:`3.6em`,viewBox:`0 0 875 3600`,children:_jsx(_components.path,{d:`M863,9c0,-2,-2,-5,-6,-9c0,0,-17,0,-17,0c-12.7,0,-19.3,0.3,-20,1\nc-5.3,5.3,-10.3,11,-15,17c-242.7,294.7,-395.3,682,-458,1162c-21.3,163.3,-33.3,349,\n-36,557 l0,84c0.2,6,0,26,0,60c2,159.3,10,310.7,24,454c53.3,528,210,\n949.7,470,1265c4.7,6,9.7,11.7,15,17c0.7,0.7,7,1,19,1c0,0,18,0,18,0c4,-4,6,-7,6,-9\nc0,-2.7,-3.3,-8.7,-10,-18c-135.3,-192.7,-235.5,-414.3,-300.5,-665c-65,-250.7,-102.5,\n-544.7,-112.5,-882c-2,-104,-3,-167,-3,-189\nl0,-92c0,-162.7,5.7,-314,17,-454c20.7,-272,63.7,-513,129,-723c65.3,\n-210,155.3,-396.3,270,-559c6.7,-9.3,10,-15.3,10,-18z`})})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`1.55em`},children:_jsx(_components.span,{})})})]})})}),_jsxs(_components.span,{className:`minner`,children:[_jsx(_components.span,{className:`mopen`,children:_jsx(_components.span,{className:`delimsizing mult`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`2.05em`},children:_jsxs(_components.span,{style:{top:`-4.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`5.6em`}}),_jsx(_components.span,{style:{width:`0.667em`,height:`3.6em`},children:_jsx(_components.svg,{xmlns:`http://www.w3.org/2000/svg`,width:`0.667em`,height:`3.6em`,viewBox:`0 0 667 3600`,children:_jsx(_components.path,{d:`M319 602 V0 H403 V602 v1200 v1715 h263 v84 H319z\nMM319 602 V0 H403 V602 v1200 v1715 H319z`})})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`1.55em`},children:_jsx(_components.span,{})})})]})})}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mopen nulldelimiter`}),_jsx(_components.span,{className:`mfrac`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsxs(_components.span,{className:`vlist`,style:{height:`2.19em`},children:[_jsxs(_components.span,{style:{top:`-2.464em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3.15em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord`,children:`10`}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mpunct`,children:`,`})}),_jsx(_components.span,{className:`mord`,children:`000`})]})]}),_jsxs(_components.span,{style:{top:`-3.38em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3.15em`}}),_jsx(_components.span,{className:`frac-line`,style:{borderBottomWidth:`0.04em`}})]}),_jsxs(_components.span,{style:{top:`-4.19em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3.15em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsxs(_components.span,{className:`minner`,children:[_jsx(_components.span,{className:`mopen delimcenter`,style:{top:`0em`},children:_jsx(_components.span,{className:`delimsizing size2`,children:`⌊`})}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mopen nulldelimiter`}),_jsx(_components.span,{className:`mfrac`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsxs(_components.span,{className:`vlist`,style:{height:`0.9322em`},children:[_jsxs(_components.span,{style:{top:`-2.655em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsxs(_components.span,{className:`mord mtight`,children:[_jsx(_components.span,{className:`mord mtight`,children:`10`}),_jsx(_components.span,{className:`mord mtight`,children:_jsx(_components.span,{className:`mpunct mtight`,children:`,`})}),_jsx(_components.span,{className:`mord mtight`,children:`000`})]})})]}),_jsxs(_components.span,{style:{top:`-3.23em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsx(_components.span,{className:`frac-line`,style:{borderBottomWidth:`0.04em`}})]}),_jsxs(_components.span,{style:{top:`-3.4461em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsxs(_components.span,{className:`mord mtight`,children:[_jsx(_components.span,{className:`mord text mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:`total\\xA0limit\\xA0order\\xA0fee`})}),_jsx(_components.span,{className:`mbin mtight`,children:`×`}),_jsx(_components.span,{className:`mord text mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:`protocol\\xA0share`})})]})})]})]}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.4811em`},children:_jsx(_components.span,{})})})]})}),_jsx(_components.span,{className:`mclose nulldelimiter`})]}),_jsx(_components.span,{className:`mclose delimcenter`,style:{top:`0em`},children:_jsx(_components.span,{className:`delimsizing size2`,children:`⌋`})})]}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`×`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mord`,children:`2`}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mpunct`,children:`,`})}),_jsx(_components.span,{className:`mord`,children:`000`})]})]})]}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.8804em`},children:_jsx(_components.span,{})})})]})}),_jsx(_components.span,{className:`mclose nulldelimiter`})]}),_jsx(_components.span,{className:`mclose`,children:_jsx(_components.span,{className:`delimsizing mult`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`2.05em`},children:_jsxs(_components.span,{style:{top:`-4.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`5.6em`}}),_jsx(_components.span,{style:{width:`0.667em`,height:`3.6em`},children:_jsx(_components.svg,{xmlns:`http://www.w3.org/2000/svg`,width:`0.667em`,height:`3.6em`,viewBox:`0 0 667 3600`,children:_jsx(_components.path,{d:`M319 602 V0 H403 V602 v1200 v1799 H0 v-84 H319z\nMM319 602 V0 H403 V602 v1200 v1715 H319z`})})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`1.55em`},children:_jsx(_components.span,{})})})]})})})]}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.1667em`}}),_jsx(_components.span,{className:`mpunct`,children:`,`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.1667em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`limit\\xA0order\\xA0protocol\\xA0fee`})}),_jsx(_components.span,{className:`mclose`,children:_jsx(_components.span,{className:`delimsizing mult`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`2.05em`},children:_jsxs(_components.span,{style:{top:`-4.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`5.6em`}}),_jsx(_components.span,{style:{width:`0.875em`,height:`3.6em`},children:_jsx(_components.svg,{xmlns:`http://www.w3.org/2000/svg`,width:`0.875em`,height:`3.6em`,viewBox:`0 0 875 3600`,children:_jsx(_components.path,{d:`M76,0c-16.7,0,-25,3,-25,9c0,2,2,6.3,6,13c21.3,28.7,42.3,60.3,\n63,95c96.7,156.7,172.8,332.5,228.5,527.5c55.7,195,92.8,416.5,111.5,664.5\nc11.3,139.3,17,290.7,17,454c0,28,1.7,43,3.3,45l0,9\nc-3,4,-3.3,16.7,-3.3,38c0,162,-5.7,313.7,-17,455c-18.7,248,-55.8,469.3,-111.5,664\nc-55.7,194.7,-131.8,370.3,-228.5,527c-20.7,34.7,-41.7,66.3,-63,95c-2,3.3,-4,7,-6,11\nc0,7.3,5.7,11,17,11c0,0,11,0,11,0c9.3,0,14.3,-0.3,15,-1c5.3,-5.3,10.3,-11,15,-17\nc242.7,-294.7,395.3,-681.7,458,-1161c21.3,-164.7,33.3,-350.7,36,-558\nl0,-144c-2,-159.3,-10,-310.7,-24,-454c-53.3,-528,-210,-949.7,\n-470,-1265c-4.7,-6,-9.7,-11.7,-15,-17c-0.7,-0.7,-6.7,-1,-18,-1z`})})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`1.55em`},children:_jsx(_components.span,{})})})]})})})]})]})]})]})}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`host\\xA0fee`}),_jsx(_components.mo,{children:`=`}),_jsxs(_components.mrow,{children:[_jsx(_components.mo,{fence:`true`,children:`⌊`}),_jsxs(_components.mfrac,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`MM\\xA0protocol\\xA0fee`}),_jsx(_components.mo,{children:`×`}),_jsx(_components.mn,{children:`2,000`})]}),_jsx(_components.mn,{children:`10,000`})]}),_jsx(_components.mo,{fence:`true`,children:`⌋`})]}),_jsx(_components.mo,{children:`+`}),_jsx(_components.mtext,{children:`host\\xA0fee\\xA0on\\xA0limit\\xA0order`})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{host fee}\n=\n\\\\left\\\\lfloor\n\\\\frac{\\\\text{MM protocol fee} \\\\times 2{,}000}{10{,}000}\n\\\\right\\\\rfloor\n+\n\\\\text{host fee on limit order}\n`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.6944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`host\\xA0fee`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`2.4em`,verticalAlign:`-0.95em`}}),_jsxs(_components.span,{className:`minner`,children:[_jsx(_components.span,{className:`mopen delimcenter`,style:{top:`0em`},children:_jsx(_components.span,{className:`delimsizing size3`,children:`⌊`})}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mopen nulldelimiter`}),_jsx(_components.span,{className:`mfrac`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsxs(_components.span,{className:`vlist`,style:{height:`1.3714em`},children:[_jsxs(_components.span,{style:{top:`-2.314em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord`,children:`10`}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mpunct`,children:`,`})}),_jsx(_components.span,{className:`mord`,children:`000`})]})]}),_jsxs(_components.span,{style:{top:`-3.23em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsx(_components.span,{className:`frac-line`,style:{borderBottomWidth:`0.04em`}})]}),_jsxs(_components.span,{style:{top:`-3.677em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`MM\\xA0protocol\\xA0fee`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`×`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mord`,children:`2`}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mpunct`,children:`,`})}),_jsx(_components.span,{className:`mord`,children:`000`})]})]})]}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.8804em`},children:_jsx(_components.span,{})})})]})}),_jsx(_components.span,{className:`mclose nulldelimiter`})]}),_jsx(_components.span,{className:`mclose delimcenter`,style:{top:`0em`},children:_jsx(_components.span,{className:`delimsizing size3`,children:`⌋`})})]}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`+`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.6944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`host\\xA0fee\\xA0on\\xA0limit\\xA0order`})})]})]})]})}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`protocol\\xA0fee\\xA0remainder`}),_jsx(_components.mo,{children:`=`}),_jsx(_components.mtext,{children:`MM\\xA0protocol\\xA0fee`}),_jsx(_components.mo,{children:`+`}),_jsx(_components.mtext,{children:`limit\\xA0order\\xA0protocol\\xA0fee`}),_jsx(_components.mo,{children:`−`}),_jsx(_components.mtext,{children:`host\\xA0fee`})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{protocol fee remainder}\n=\n\\\\text{MM protocol fee}\n+\n\\\\text{limit order protocol fee}\n-\n\\\\text{host fee}\n`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8889em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`protocol\\xA0fee\\xA0remainder`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8889em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`MM\\xA0protocol\\xA0fee`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`+`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8889em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`limit\\xA0order\\xA0protocol\\xA0fee`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`−`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.6944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`host\\xA0fee`})})]})]})]})}),`\n`,_jsxs(_components.p,{children:[`When a swap fills only MM liquidity, `,_jsx(_components.code,{children:`total limit order fee = 0`}),` and the limit-order paths above are zero — the result matches a liquidity mining pool.`]}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`trading\\xA0fee`}),_jsx(_components.mo,{children:`=`}),_jsx(_components.mtext,{children:`MM\\xA0LP\\xA0fee`}),_jsx(_components.mo,{children:`+`}),_jsx(_components.mtext,{children:`limit\\xA0order\\xA0participant\\xA0fee`}),_jsx(_components.mo,{children:`+`}),_jsx(_components.mtext,{children:`protocol\\xA0fee\\xA0remainder`}),_jsx(_components.mo,{children:`+`}),_jsx(_components.mtext,{children:`host\\xA0fee`})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{trading fee}\n=\n\\\\text{MM LP fee}\n+\n\\\\text{limit order participant fee}\n+\n\\\\text{protocol fee remainder}\n+\n\\\\text{host fee}\n`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8889em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`trading\\xA0fee`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.7778em`,verticalAlign:`-0.0833em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`MM\\xA0LP\\xA0fee`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`+`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8889em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`limit\\xA0order\\xA0participant\\xA0fee`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`+`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8889em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`protocol\\xA0fee\\xA0remainder`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`+`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.6944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`host\\xA0fee`})})]})]})]})}),`\n`,_jsx(Heading,{level:`2`,id:`liquidity-shares`,children:`Liquidity Shares`}),`\n`,_jsx(_components.p,{children:`When a user deposits into a bin, the program first computes the liquidity value of the deposit:`}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsxs(_components.msub,{children:[_jsx(_components.mi,{children:`L`}),_jsx(_components.mtext,{children:`in`})]}),_jsx(_components.mo,{children:`=`}),_jsx(_components.mi,{children:`P`}),_jsx(_components.mo,{children:`⋅`}),_jsxs(_components.msub,{children:[_jsx(_components.mi,{children:`x`}),_jsx(_components.mtext,{children:`in`})]}),_jsx(_components.mo,{children:`+`}),_jsxs(_components.msub,{children:[_jsx(_components.mi,{children:`y`}),_jsx(_components.mtext,{children:`in`})]})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`L_\\\\text{in} = P \\\\cdot x_\\\\text{in} + y_\\\\text{in}\n`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8333em`,verticalAlign:`-0.15em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathnormal`,children:`L`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.3175em`},children:_jsxs(_components.span,{style:{top:`-2.55em`,marginLeft:`0em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord text mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:`in`})})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.15em`},children:_jsx(_components.span,{})})})]})})]}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.6833em`}}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.1389em`},children:`P`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`⋅`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.7333em`,verticalAlign:`-0.15em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathnormal`,children:`x`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.3175em`},children:_jsxs(_components.span,{style:{top:`-2.55em`,marginLeft:`0em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord text mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:`in`})})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.15em`},children:_jsx(_components.span,{})})})]})})]}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`+`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.625em`,verticalAlign:`-0.1944em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.0359em`},children:`y`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.3175em`},children:_jsxs(_components.span,{style:{top:`-2.55em`,marginLeft:`-0.0359em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord text mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:`in`})})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.15em`},children:_jsx(_components.span,{})})})]})})]})]})]})]})}),`\n`,_jsx(_components.p,{children:`If the bin has no existing liquidity supply, the new liquidity share equals the deposit liquidity:`}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`liquidity\\xA0share`}),_jsx(_components.mo,{children:`=`}),_jsxs(_components.msub,{children:[_jsx(_components.mi,{children:`L`}),_jsx(_components.mtext,{children:`in`})]})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{liquidity share} = L_\\\\text{in}\n`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8889em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`liquidity\\xA0share`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8333em`,verticalAlign:`-0.15em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathnormal`,children:`L`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.3175em`},children:_jsxs(_components.span,{style:{top:`-2.55em`,marginLeft:`0em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord text mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:`in`})})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.15em`},children:_jsx(_components.span,{})})})]})})]})]})]})]})}),`\n`,_jsx(_components.p,{children:`If the bin already has liquidity, the new share is:`}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`liquidity\\xA0share`}),_jsx(_components.mo,{children:`=`}),_jsxs(_components.mrow,{children:[_jsx(_components.mo,{fence:`true`,children:`⌊`}),_jsxs(_components.mfrac,{children:[_jsxs(_components.mrow,{children:[_jsxs(_components.msub,{children:[_jsx(_components.mi,{children:`L`}),_jsx(_components.mtext,{children:`in`})]}),_jsx(_components.mo,{children:`×`}),_jsx(_components.mtext,{children:`existing\\xA0liquidity\\xA0supply`})]}),_jsxs(_components.msub,{children:[_jsx(_components.mi,{children:`L`}),_jsx(_components.mtext,{children:`bin`})]})]}),_jsx(_components.mo,{fence:`true`,children:`⌋`})]})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{liquidity share}\n=\n\\\\left\\\\lfloor\n\\\\frac{\nL_\\\\text{in} \\\\times \\\\text{existing liquidity supply}\n}{\nL_\\\\text{bin}\n}\n\\\\right\\\\rfloor\n`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8889em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`liquidity\\xA0share`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`2.4em`,verticalAlign:`-0.95em`}}),_jsxs(_components.span,{className:`minner`,children:[_jsx(_components.span,{className:`mopen delimcenter`,style:{top:`0em`},children:_jsx(_components.span,{className:`delimsizing size3`,children:`⌊`})}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mopen nulldelimiter`}),_jsx(_components.span,{className:`mfrac`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsxs(_components.span,{className:`vlist`,style:{height:`1.3714em`},children:[_jsxs(_components.span,{style:{top:`-2.314em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsx(_components.span,{className:`mord`,children:_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathnormal`,children:`L`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.3361em`},children:_jsxs(_components.span,{style:{top:`-2.55em`,marginLeft:`0em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord text mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:`bin`})})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.15em`},children:_jsx(_components.span,{})})})]})})]})})]}),_jsxs(_components.span,{style:{top:`-3.23em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsx(_components.span,{className:`frac-line`,style:{borderBottomWidth:`0.04em`}})]}),_jsxs(_components.span,{style:{top:`-3.677em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathnormal`,children:`L`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.3175em`},children:_jsxs(_components.span,{style:{top:`-2.55em`,marginLeft:`0em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord text mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:`in`})})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.15em`},children:_jsx(_components.span,{})})})]})})]}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`×`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`existing\\xA0liquidity\\xA0supply`})})]})]})]}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.836em`},children:_jsx(_components.span,{})})})]})}),_jsx(_components.span,{className:`mclose nulldelimiter`})]}),_jsx(_components.span,{className:`mclose delimcenter`,style:{top:`0em`},children:_jsx(_components.span,{className:`delimsizing size3`,children:`⌋`})})]})]})]})]})}),`\n`,_jsx(_components.p,{children:`Where:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`L_in`}),` is the liquidity value of the user’s deposit`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`L_bin`}),` is the existing liquidity value of the bin before the deposit`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`existing liquidity supply`}),` is the bin’s current share supply`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`Those shares determine the position’s proportional claim on bin liquidity, fees, and eligible rewards.`}),`\n`,_jsx(Heading,{level:`2`,id:`withdrawal-amounts`,children:`Withdrawal Amounts`}),`\n`,_jsx(_components.p,{children:`When liquidity is removed from a bin, token amounts are returned pro rata:`}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsxs(_components.msub,{children:[_jsx(_components.mtext,{children:`amount\\xA0out`}),_jsx(_components.mi,{children:`X`})]}),_jsx(_components.mo,{children:`=`}),_jsxs(_components.mrow,{children:[_jsx(_components.mo,{fence:`true`,children:`⌊`}),_jsxs(_components.mfrac,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`liquidity\\xA0share\\xA0removed`}),_jsx(_components.mo,{children:`×`}),_jsxs(_components.msub,{children:[_jsx(_components.mtext,{children:`bin\\xA0amount`}),_jsx(_components.mi,{children:`X`})]})]}),_jsx(_components.mtext,{children:`bin\\xA0liquidity\\xA0supply`})]}),_jsx(_components.mo,{fence:`true`,children:`⌋`})]})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{amount out}_X\n=\n\\\\left\\\\lfloor\n\\\\frac{\n\\\\text{liquidity share removed} \\\\times \\\\text{bin amount}_X\n}{\n\\\\text{bin liquidity supply}\n}\n\\\\right\\\\rfloor\n`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.7651em`,verticalAlign:`-0.15em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`amount\\xA0out`})}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.3283em`},children:_jsxs(_components.span,{style:{top:`-2.55em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mathnormal mtight`,style:{marginRight:`0.0785em`},children:`X`})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.15em`},children:_jsx(_components.span,{})})})]})})]}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`2.4em`,verticalAlign:`-0.95em`}}),_jsxs(_components.span,{className:`minner`,children:[_jsx(_components.span,{className:`mopen delimcenter`,style:{top:`0em`},children:_jsx(_components.span,{className:`delimsizing size3`,children:`⌊`})}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mopen nulldelimiter`}),_jsx(_components.span,{className:`mfrac`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsxs(_components.span,{className:`vlist`,style:{height:`1.3714em`},children:[_jsxs(_components.span,{style:{top:`-2.314em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`bin\\xA0liquidity\\xA0supply`})})})]}),_jsxs(_components.span,{style:{top:`-3.23em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsx(_components.span,{className:`frac-line`,style:{borderBottomWidth:`0.04em`}})]}),_jsxs(_components.span,{style:{top:`-3.677em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`liquidity\\xA0share\\xA0removed`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`×`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`bin\\xA0amount`})}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.3283em`},children:_jsxs(_components.span,{style:{top:`-2.55em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mathnormal mtight`,style:{marginRight:`0.0785em`},children:`X`})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.15em`},children:_jsx(_components.span,{})})})]})})]})]})]})]}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.8804em`},children:_jsx(_components.span,{})})})]})}),_jsx(_components.span,{className:`mclose nulldelimiter`})]}),_jsx(_components.span,{className:`mclose delimcenter`,style:{top:`0em`},children:_jsx(_components.span,{className:`delimsizing size3`,children:`⌋`})})]})]})]})]})}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsxs(_components.msub,{children:[_jsx(_components.mtext,{children:`amount\\xA0out`}),_jsx(_components.mi,{children:`Y`})]}),_jsx(_components.mo,{children:`=`}),_jsxs(_components.mrow,{children:[_jsx(_components.mo,{fence:`true`,children:`⌊`}),_jsxs(_components.mfrac,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`liquidity\\xA0share\\xA0removed`}),_jsx(_components.mo,{children:`×`}),_jsxs(_components.msub,{children:[_jsx(_components.mtext,{children:`bin\\xA0amount`}),_jsx(_components.mi,{children:`Y`})]})]}),_jsx(_components.mtext,{children:`bin\\xA0liquidity\\xA0supply`})]}),_jsx(_components.mo,{fence:`true`,children:`⌋`})]})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{amount out}_Y\n=\n\\\\left\\\\lfloor\n\\\\frac{\n\\\\text{liquidity share removed} \\\\times \\\\text{bin amount}_Y\n}{\n\\\\text{bin liquidity supply}\n}\n\\\\right\\\\rfloor\n`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.7651em`,verticalAlign:`-0.15em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`amount\\xA0out`})}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.3283em`},children:_jsxs(_components.span,{style:{top:`-2.55em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mathnormal mtight`,style:{marginRight:`0.2222em`},children:`Y`})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.15em`},children:_jsx(_components.span,{})})})]})})]}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`2.4em`,verticalAlign:`-0.95em`}}),_jsxs(_components.span,{className:`minner`,children:[_jsx(_components.span,{className:`mopen delimcenter`,style:{top:`0em`},children:_jsx(_components.span,{className:`delimsizing size3`,children:`⌊`})}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mopen nulldelimiter`}),_jsx(_components.span,{className:`mfrac`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsxs(_components.span,{className:`vlist`,style:{height:`1.3714em`},children:[_jsxs(_components.span,{style:{top:`-2.314em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`bin\\xA0liquidity\\xA0supply`})})})]}),_jsxs(_components.span,{style:{top:`-3.23em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsx(_components.span,{className:`frac-line`,style:{borderBottomWidth:`0.04em`}})]}),_jsxs(_components.span,{style:{top:`-3.677em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`liquidity\\xA0share\\xA0removed`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`×`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`bin\\xA0amount`})}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.3283em`},children:_jsxs(_components.span,{style:{top:`-2.55em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mathnormal mtight`,style:{marginRight:`0.2222em`},children:`Y`})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.15em`},children:_jsx(_components.span,{})})})]})})]})]})]})]}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.8804em`},children:_jsx(_components.span,{})})})]})}),_jsx(_components.span,{className:`mclose nulldelimiter`})]}),_jsx(_components.span,{className:`mclose delimcenter`,style:{top:`0em`},children:_jsx(_components.span,{className:`delimsizing size3`,children:`⌋`})})]})]})]})]})}),`\n`,_jsx(Heading,{level:`2`,id:`composition-fee`,children:`Composition Fee`}),`\n`,_jsxs(_components.p,{children:[`When adding liquidity to the active bin of a bin that already has liquidity, the program may charge a `,_jsx(_components.strong,{children:`composition fee`}),` if the deposit changes the bin composition in a way that resembles a swap.`]}),`\n`,_jsx(_components.p,{children:`The composition fee is based on the token delta and the current total fee rate:`}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`composition\\xA0fee`}),_jsx(_components.mo,{children:`=`}),_jsxs(_components.mrow,{children:[_jsx(_components.mo,{fence:`true`,children:`⌊`}),_jsxs(_components.mfrac,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mi,{mathvariant:`normal`,children:`Δ`}),_jsx(_components.mtext,{children:`amount`}),_jsx(_components.mo,{children:`×`}),_jsx(_components.mtext,{children:`total\\xA0fee\\xA0rate`}),_jsx(_components.mo,{children:`×`}),_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsx(_components.mn,{children:`1,000,000,000`}),_jsx(_components.mo,{children:`+`}),_jsx(_components.mtext,{children:`total\\xA0fee\\xA0rate`}),_jsx(_components.mo,{stretchy:`false`,children:`)`})]}),_jsxs(_components.msup,{children:[_jsx(_components.mn,{children:`1,000,000,000`}),_jsx(_components.mn,{children:`2`})]})]}),_jsx(_components.mo,{fence:`true`,children:`⌋`})]})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{composition fee}\n=\n\\\\left\\\\lfloor\n\\\\frac{\n\\\\Delta \\\\text{amount}\n\\\\times\n\\\\text{total fee rate}\n\\\\times\n(1{,}000{,}000{,}000 + \\\\text{total fee rate})\n}{\n1{,}000{,}000{,}000^2\n}\n\\\\right\\\\rfloor\n`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8889em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`composition\\xA0fee`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`2.4em`,verticalAlign:`-0.95em`}}),_jsxs(_components.span,{className:`minner`,children:[_jsx(_components.span,{className:`mopen delimcenter`,style:{top:`0em`},children:_jsx(_components.span,{className:`delimsizing size3`,children:`⌊`})}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mopen nulldelimiter`}),_jsx(_components.span,{className:`mfrac`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsxs(_components.span,{className:`vlist`,style:{height:`1.427em`},children:[_jsxs(_components.span,{style:{top:`-2.314em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord`,children:`1`}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mpunct`,children:`,`})}),_jsx(_components.span,{className:`mord`,children:`000`}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mpunct`,children:`,`})}),_jsx(_components.span,{className:`mord`,children:`000`}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mpunct`,children:`,`})}),_jsx(_components.span,{className:`mord`,children:`00`}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord`,children:`0`}),_jsx(_components.span,{className:`msupsub`,children:_jsx(_components.span,{className:`vlist-t`,children:_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.7401em`},children:_jsxs(_components.span,{style:{top:`-2.989em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:`2`})})]})})})})})]})]})]}),_jsxs(_components.span,{style:{top:`-3.23em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsx(_components.span,{className:`frac-line`,style:{borderBottomWidth:`0.04em`}})]}),_jsxs(_components.span,{style:{top:`-3.677em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord`,children:`Δ`}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`amount`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`×`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`total\\xA0fee\\xA0rate`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`×`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mopen`,children:`(`}),_jsx(_components.span,{className:`mord`,children:`1`}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mpunct`,children:`,`})}),_jsx(_components.span,{className:`mord`,children:`000`}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mpunct`,children:`,`})}),_jsx(_components.span,{className:`mord`,children:`000`}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mpunct`,children:`,`})}),_jsx(_components.span,{className:`mord`,children:`000`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`+`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`total\\xA0fee\\xA0rate`})}),_jsx(_components.span,{className:`mclose`,children:`)`})]})]})]}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.8804em`},children:_jsx(_components.span,{})})})]})}),_jsx(_components.span,{className:`mclose nulldelimiter`})]}),_jsx(_components.span,{className:`mclose delimcenter`,style:{top:`0em`},children:_jsx(_components.span,{className:`delimsizing size3`,children:`⌋`})})]})]})]})]})}),`\n`,_jsx(_components.p,{children:`The protocol share is then taken from the composition fee using the same protocol-fee formula:`}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`composition\\xA0protocol\\xA0fee`}),_jsx(_components.mo,{children:`=`}),_jsxs(_components.mrow,{children:[_jsx(_components.mo,{fence:`true`,children:`⌊`}),_jsxs(_components.mfrac,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`composition\\xA0fee`}),_jsx(_components.mo,{children:`×`}),_jsx(_components.mtext,{children:`protocol\\xA0share`})]}),_jsx(_components.mn,{children:`10,000`})]}),_jsx(_components.mo,{fence:`true`,children:`⌋`})]})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{composition protocol fee}\n=\n\\\\left\\\\lfloor\n\\\\frac{\\\\text{composition fee} \\\\times \\\\text{protocol share}}{10{,}000}\n\\\\right\\\\rfloor\n`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8889em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`composition\\xA0protocol\\xA0fee`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`2.4em`,verticalAlign:`-0.95em`}}),_jsxs(_components.span,{className:`minner`,children:[_jsx(_components.span,{className:`mopen delimcenter`,style:{top:`0em`},children:_jsx(_components.span,{className:`delimsizing size3`,children:`⌊`})}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mopen nulldelimiter`}),_jsx(_components.span,{className:`mfrac`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsxs(_components.span,{className:`vlist`,style:{height:`1.3714em`},children:[_jsxs(_components.span,{style:{top:`-2.314em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord`,children:`10`}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mpunct`,children:`,`})}),_jsx(_components.span,{className:`mord`,children:`000`})]})]}),_jsxs(_components.span,{style:{top:`-3.23em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsx(_components.span,{className:`frac-line`,style:{borderBottomWidth:`0.04em`}})]}),_jsxs(_components.span,{style:{top:`-3.677em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`composition\\xA0fee`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`×`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`protocol\\xA0share`})})]})]})]}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.8804em`},children:_jsx(_components.span,{})})})]})}),_jsx(_components.span,{className:`mclose nulldelimiter`})]}),_jsx(_components.span,{className:`mclose delimcenter`,style:{top:`0em`},children:_jsx(_components.span,{className:`delimsizing size3`,children:`⌋`})})]})]})]})]})}),`\n`,_jsx(_components.p,{children:`No composition fee is charged when depositing into an empty bin or a non-active bin.`}),`\n`,_jsx(Heading,{level:`2`,id:`liquidity-mining-rewards`,children:`Liquidity Mining Rewards`}),`\n`,_jsx(_components.p,{children:`For reward-enabled pools, rewards are tracked per token of liquidity for eligible bins.`}),`\n`,_jsx(_components.p,{children:`The reward emission rate is funded over a reward duration. If a reward is funded while a previous reward period is still active, the program includes the remaining unvested reward amount in the new rate calculation:`}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`reward\\xA0rate`}),_jsx(_components.mo,{children:`=`}),_jsxs(_components.mfrac,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`new\\xA0funded\\xA0amount`}),_jsx(_components.mo,{children:`+`}),_jsx(_components.mtext,{children:`remaining\\xA0reward\\xA0amount`})]}),_jsx(_components.mtext,{children:`reward\\xA0duration`})]})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{reward rate}\n=\n\\\\frac{\\\\text{new funded amount} + \\\\text{remaining reward amount}}{\\\\text{reward duration}}\n`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.6944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`reward\\xA0rate`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`2.0574em`,verticalAlign:`-0.686em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mopen nulldelimiter`}),_jsx(_components.span,{className:`mfrac`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsxs(_components.span,{className:`vlist`,style:{height:`1.3714em`},children:[_jsxs(_components.span,{style:{top:`-2.314em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`reward\\xA0duration`})})})]}),_jsxs(_components.span,{style:{top:`-3.23em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsx(_components.span,{className:`frac-line`,style:{borderBottomWidth:`0.04em`}})]}),_jsxs(_components.span,{style:{top:`-3.677em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`new\\xA0funded\\xA0amount`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`+`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`remaining\\xA0reward\\xA0amount`})})]})]})]}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.686em`},children:_jsx(_components.span,{})})})]})}),_jsx(_components.span,{className:`mclose nulldelimiter`})]})]})]})]})}),`\n`,_jsxs(_components.p,{children:[`If the funder chooses to carry forward ineligible rewards from empty-liquidity time, that carry-forward amount is also included in the new funded amount. In the program, `,_jsx(_components.code,{children:`reward_rate`}),` is stored in fixed-point precision. On active-bin reward updates, the per-token reward increment is:`]}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mi,{mathvariant:`normal`,children:`Δ`}),_jsx(_components.mtext,{children:`reward\\xA0per\\xA0token`}),_jsx(_components.mo,{children:`=`}),_jsxs(_components.mrow,{children:[_jsx(_components.mo,{fence:`true`,children:`⌊`}),_jsxs(_components.mfrac,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`seconds\\xA0elapsed`}),_jsx(_components.mo,{children:`×`}),_jsx(_components.mtext,{children:`reward\\xA0rate`})]}),_jsx(_components.mtext,{children:`active\\xA0bin\\xA0liquidity\\xA0supply`})]}),_jsx(_components.mo,{fence:`true`,children:`⌋`})]})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\Delta \\\\text{reward per token}\n=\n\\\\left\\\\lfloor\n\\\\frac{\n\\\\text{seconds elapsed} \\\\times \\\\text{reward rate}\n}{\n\\\\text{active bin liquidity supply}\n}\n\\\\right\\\\rfloor\n`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8889em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`mord`,children:`Δ`}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`reward\\xA0per\\xA0token`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`2.4em`,verticalAlign:`-0.95em`}}),_jsxs(_components.span,{className:`minner`,children:[_jsx(_components.span,{className:`mopen delimcenter`,style:{top:`0em`},children:_jsx(_components.span,{className:`delimsizing size3`,children:`⌊`})}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mopen nulldelimiter`}),_jsx(_components.span,{className:`mfrac`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsxs(_components.span,{className:`vlist`,style:{height:`1.3714em`},children:[_jsxs(_components.span,{style:{top:`-2.314em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`active\\xA0bin\\xA0liquidity\\xA0supply`})})})]}),_jsxs(_components.span,{style:{top:`-3.23em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsx(_components.span,{className:`frac-line`,style:{borderBottomWidth:`0.04em`}})]}),_jsxs(_components.span,{style:{top:`-3.677em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`seconds\\xA0elapsed`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`×`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`reward\\xA0rate`})})]})]})]}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.8804em`},children:_jsx(_components.span,{})})})]})}),_jsx(_components.span,{className:`mclose nulldelimiter`})]}),_jsx(_components.span,{className:`mclose delimcenter`,style:{top:`0em`},children:_jsx(_components.span,{className:`delimsizing size3`,children:`⌋`})})]})]})]})]})}),`\n`,_jsx(_components.p,{children:`If the active bin has no liquidity, the program records the elapsed empty-liquidity time instead of assigning rewards to LPs. During v2 swaps, accumulated rewards can also be split across crossed bins with liquidity, up to the program’s reward-bin split limit.`}),`\n`,_jsx(Heading,{level:`2`,id:`price-impact-guard`,children:`Price Impact Guard`}),`\n`,_jsx(_components.p,{children:`Some swap flows can include a maximum price impact limit. The program computes a guard price from the active bin price:`}),`\n`,_jsx(_components.p,{children:`For X to Y swaps:`}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`minimum\\xA0price`}),_jsx(_components.mo,{children:`=`}),_jsxs(_components.msub,{children:[_jsx(_components.mi,{children:`P`}),_jsx(_components.mtext,{children:`active`})]}),_jsx(_components.mo,{children:`×`}),_jsxs(_components.mfrac,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mn,{children:`10,000`}),_jsx(_components.mo,{children:`−`}),_jsx(_components.mtext,{children:`max\\xA0price\\xA0impact\\xA0bps`})]}),_jsx(_components.mn,{children:`10,000`})]})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{minimum price}\n=\nP_\\\\text{active}\n\\\\times\n\\\\frac{10{,}000 - \\\\text{max price impact bps}}{10{,}000}\n`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8623em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`minimum\\xA0price`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8333em`,verticalAlign:`-0.15em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.1389em`},children:`P`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.3175em`},children:_jsxs(_components.span,{style:{top:`-2.55em`,marginLeft:`-0.1389em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord text mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:`active`})})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.15em`},children:_jsx(_components.span,{})})})]})})]}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`×`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`2.2519em`,verticalAlign:`-0.8804em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mopen nulldelimiter`}),_jsx(_components.span,{className:`mfrac`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsxs(_components.span,{className:`vlist`,style:{height:`1.3714em`},children:[_jsxs(_components.span,{style:{top:`-2.314em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord`,children:`10`}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mpunct`,children:`,`})}),_jsx(_components.span,{className:`mord`,children:`000`})]})]}),_jsxs(_components.span,{style:{top:`-3.23em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsx(_components.span,{className:`frac-line`,style:{borderBottomWidth:`0.04em`}})]}),_jsxs(_components.span,{style:{top:`-3.677em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord`,children:`10`}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mpunct`,children:`,`})}),_jsx(_components.span,{className:`mord`,children:`000`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`−`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`max\\xA0price\\xA0impact\\xA0bps`})})]})]})]}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.8804em`},children:_jsx(_components.span,{})})})]})}),_jsx(_components.span,{className:`mclose nulldelimiter`})]})]})]})]})}),`\n`,_jsx(_components.p,{children:`For Y to X swaps:`}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mtext,{children:`maximum\\xA0effective\\xA0price`}),_jsx(_components.mo,{children:`=`}),_jsxs(_components.msub,{children:[_jsx(_components.mi,{children:`P`}),_jsx(_components.mtext,{children:`active`})]}),_jsx(_components.mo,{children:`×`}),_jsxs(_components.mfrac,{children:[_jsx(_components.mn,{children:`10,000`}),_jsxs(_components.mrow,{children:[_jsx(_components.mn,{children:`10,000`}),_jsx(_components.mo,{children:`−`}),_jsx(_components.mtext,{children:`max\\xA0price\\xA0impact\\xA0bps`})]})]})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{maximum effective price}\n=\nP_\\\\text{active}\n\\\\times\n\\\\frac{10{,}000}{10{,}000 - \\\\text{max price impact bps}}\n`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8889em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`maximum\\xA0effective\\xA0price`})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8333em`,verticalAlign:`-0.15em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.1389em`},children:`P`}),_jsx(_components.span,{className:`msupsub`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsx(_components.span,{className:`vlist`,style:{height:`0.3175em`},children:_jsxs(_components.span,{style:{top:`-2.55em`,marginLeft:`-0.1389em`,marginRight:`0.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`2.7em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsx(_components.span,{className:`mord text mtight`,children:_jsx(_components.span,{className:`mord mtight`,children:`active`})})})]})}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.15em`},children:_jsx(_components.span,{})})})]})})]}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`×`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`2.2019em`,verticalAlign:`-0.8804em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mopen nulldelimiter`}),_jsx(_components.span,{className:`mfrac`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsxs(_components.span,{className:`vlist`,style:{height:`1.3214em`},children:[_jsxs(_components.span,{style:{top:`-2.314em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord`,children:`10`}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mpunct`,children:`,`})}),_jsx(_components.span,{className:`mord`,children:`000`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`−`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`max\\xA0price\\xA0impact\\xA0bps`})})]})]}),_jsxs(_components.span,{style:{top:`-3.23em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsx(_components.span,{className:`frac-line`,style:{borderBottomWidth:`0.04em`}})]}),_jsxs(_components.span,{style:{top:`-3.677em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord`,children:`10`}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mpunct`,children:`,`})}),_jsx(_components.span,{className:`mord`,children:`000`})]})]})]}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.8804em`},children:_jsx(_components.span,{})})})]})}),_jsx(_components.span,{className:`mclose nulldelimiter`})]})]})]})]})}),`\n`,_jsx(_components.p,{children:`This protects users from swaps that would move too far from their expected active-bin price.`})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"codeStyling":"system","config":{},"pageMetadata":{"title":"DLMM Formulas","sidebarTitle":"Formulas","description":"Understand the math behind DLMM bin prices, swap amounts, liquidity shares, dynamic fees, protocol fees, composition fees, and liquidity mining rewards.","llmsDescription":"Explanation of DLMM formulas based on the lb_clmm program, covering Q64.64 bin prices, bin step, constant-sum bin liquidity, amount-in and amount-out swap formulas, active bin movement, base fee, variable fee, volatility accumulator, total fee cap, included and excluded fee amount formulas, collect fee mode, fee splitting, protocol share, liquidity shares, withdrawal amounts, composition fees for active-bin deposits, and liquidity mining reward-per-token accounting.","href":"/core-products/dlmm/formulas"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Units","slug":"units","depth":2,"children":[]},{"title":"Bin Price","slug":"bin-price","depth":2,"children":[]},{"title":"Bin Liquidity","slug":"bin-liquidity","depth":2,"children":[]},{"title":"Swap Amounts","slug":"swap-amounts","depth":2,"children":[]},{"title":"Total Trading Fee","slug":"total-trading-fee","depth":2,"children":[]},{"title":"Base Fee","slug":"base-fee","depth":2,"children":[]},{"title":"Variable Fee","slug":"variable-fee","depth":2,"children":[]},{"title":"Fee Amounts","slug":"fee-amounts","depth":2,"children":[]},{"title":"Fee Split","slug":"fee-split","depth":2,"children":[{"title":"MM protocol and LP shares","slug":"mm-protocol-and-lp-shares","depth":3,"children":[]},{"title":"Referral host fee","slug":"referral-host-fee","depth":3,"children":[]},{"title":"Liquidity mining pools","slug":"liquidity-mining-pools","depth":3,"children":[]},{"title":"Limit-order pools","slug":"limit-order-pools","depth":3,"children":[]}]},{"title":"Liquidity Shares","slug":"liquidity-shares","depth":2,"children":[]},{"title":"Withdrawal Amounts","slug":"withdrawal-amounts","depth":2,"children":[]},{"title":"Composition Fee","slug":"composition-fee","depth":2,"children":[]},{"title":"Liquidity Mining Rewards","slug":"liquidity-mining-rewards","depth":2,"children":[]},{"title":"Price Impact Guard","slug":"price-impact-guard","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"dynamicCss":".mint-flex {\n display: flex\n}\n.mint-h-auto {\n height: auto\n}\n.mint-w-2\\/3 {\n width: 66.666667%\n}\n.mint-justify-center {\n justify-content: center\n}\n.mint-rounded-lg {\n border-radius: 0.5rem\n}","subdomain":"meteora","siteName":"Meteora Documentation","title":"DLMM Formulas - Meteora Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-05-27T10:51:33.327Z","originalFileLocation":"core-products/dlmm/formulas.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"dark\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Understand the math behind DLMM bin prices, swap amounts, liquidity shares, dynamic fees, protocol fees, composition fees, and liquidity mining rewards.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Meteora Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/meteora/DhpFC5DB62Ttge7c/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/meteora/DhpFC5DB62Ttge7c/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/meteora/DhpFC5DB62Ttge7c/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/meteora/DhpFC5DB62Ttge7c/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/meteora/DhpFC5DB62Ttge7c/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/meteora/DhpFC5DB62Ttge7c/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/meteora/DhpFC5DB62Ttge7c/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/meteora/DhpFC5DB62Ttge7c/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/meteora/DhpFC5DB62Ttge7c/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"DLMM Formulas - Meteora Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Understand the math behind DLMM bin prices, swap amounts, liquidity shares, dynamic fees, protocol fees, composition fees, and liquidity mining rewards.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Meteora Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.meteora.ag/core-products/dlmm/formulas\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://meteora.mintlify.app/_mintlify/api/og/v2?division=DLMM\u0026amp;title=DLMM+Formulas\u0026amp;description=Understand+the+math+behind+DLMM+bin+prices%2C+swap+amounts%2C+liquidity+shares%2C+dynamic+fees%2C+protocol+fees%2C+composition+fees%2C+and+liquidity+mining+rewards.\u0026amp;theme=eb18b52cbb4394f91f6c5646\u0026amp;signature=f4271e09d9479e3145b9545c4dcea836cca4d6c9a8ee75f38bb16b7e7711abb5\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"DLMM Formulas - Meteora Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Understand the math behind DLMM bin prices, swap amounts, liquidity shares, dynamic fees, protocol fees, composition fees, and liquidity mining rewards.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://meteora.mintlify.app/_mintlify/api/og/v2?division=DLMM\u0026amp;title=DLMM+Formulas\u0026amp;description=Understand+the+math+behind+DLMM+bin+prices%2C+swap+amounts%2C+liquidity+shares%2C+dynamic+fees%2C+protocol+fees%2C+composition+fees%2C+and+liquidity+mining+rewards.\u0026amp;theme=eb18b52cbb4394f91f6c5646\u0026amp;signature=f4271e09d9479e3145b9545c4dcea836cca4d6c9a8ee75f38bb16b7e7711abb5\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/meteora/DhpFC5DB62Ttge7c/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Meteora Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#F54B00\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.meteora.ag/core-products/dlmm/formulas\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/core-products/dlmm/formulas.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.meteora.ag/#organization\",\"name\":\"Meteora Documentation\",\"url\":\"https://docs.meteora.ag\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/meteora/FuYCvEvL3a7_z_Mt/assets/nav/meteora-docs-light.png?fit=max\u0026auto=format\u0026n=FuYCvEvL3a7_z_Mt\u0026q=85\u0026s=9b7afa272c2adebd183c6e55b45c9326\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.meteora.ag#website\",\"name\":\"Meteora Documentation\",\"url\":\"https://docs.meteora.ag\",\"publisher\":{\"@id\":\"https://docs.meteora.ag/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.meteora.ag/core-products/dlmm/formulas#webpage\",\"url\":\"https://docs.meteora.ag/core-products/dlmm/formulas\",\"name\":\"DLMM Formulas\",\"description\":\"Understand the math behind DLMM bin prices, swap amounts, liquidity shares, dynamic fees, protocol fees, composition fees, and liquidity mining rewards.\",\"dateModified\":\"2026-05-27T10:51:33.327Z\",\"isPartOf\":{\"@id\":\"https://docs.meteora.ag#website\"},\"breadcrumb\":{\"@id\":\"https://docs.meteora.ag/core-products/dlmm/formulas#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.meteora.ag/core-products/dlmm/formulas#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Core Products\",\"item\":\"https://docs.meteora.ag/core-products/dlmm/dynamic-positions\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"DLMM\",\"item\":\"https://docs.meteora.ag/core-products/dlmm/what-is-dlmm\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"DLMM Formulas\",\"item\":\"https://docs.meteora.ag/core-products/dlmm/formulas\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.meteora.ag/core-products/dlmm/formulas#article\",\"headline\":\"DLMM Formulas\",\"name\":\"DLMM Formulas\",\"description\":\"Understand the math behind DLMM bin prices, swap amounts, liquidity shares, dynamic fees, protocol fees, composition fees, and liquidity mining rewards.\",\"url\":\"https://docs.meteora.ag/core-products/dlmm/formulas\",\"mainEntityOfPage\":{\"@id\":\"https://docs.meteora.ag/core-products/dlmm/formulas#webpage\"},\"dateModified\":\"2026-05-27T10:51:33.327Z\",\"publisher\":{\"@id\":\"https://docs.meteora.ag/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.meteora.ag#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Meteora Documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Meteora Documentation","nav":{"global":null,"tabs":[{"tab":"Get Started","groups":[{"group":" ","pages":[{"title":"We Build Liquidity Pools","sidebarTitle":"Welcome to Meteora","href":"/get-started"},{"title":"Why are Liquidity Pools and Liquidity Providers on Solana Important?","sidebarTitle":"The Foundation of DeFi","href":"/get-started/why-are-liquidity-pools-important"},{"title":"Pushing the Boundaries of DeFi","sidebarTitle":"Pushing the Boundaries of DeFi","href":"/get-started/pushing-the-boundaries-of-defi"}]},{"group":"User Guides","pages":[{"title":"Getting Started","sidebarTitle":"Getting Started with Meteora","href":"/user-guides/getting-started-with-meteora"},{"title":"Staying Safe","sidebarTitle":"Staying Safe on Meteora","href":"/user-guides/staying-safe-on-meteora"},{"title":"How to become a Liquidity Provider","sidebarTitle":"Becoming a Liquidity Provider","href":"/user-guides/becoming-a-liquidity-provider"},{"title":"How to create a Liquidity Pool ","sidebarTitle":"Creating a Liquidity Pool","href":"/user-guides/creating-a-liquidity-pool"},{"title":"How to Swap Tokens on Meteora","sidebarTitle":"Swapping Tokens on Meteora","href":"/user-guides/swapping-tokens-on-meteora"},{"group":"How to use DLMM?","pages":[{"title":"DLMM Dynamic Terminal","sidebarTitle":"DLMM Dynamic Terminal","href":"/user-guides/how-to-use-dlmm/dynamic-terminal"},{"title":"TradingView Charts","sidebarTitle":"TradingView Charts","href":"/user-guides/how-to-use-dlmm/tradingview-charts"}]},{"group":"How to use DAMM v2?","pages":[{"title":"DAMM v2 Pool Detail","sidebarTitle":"DAMM v2 Pool Detail","href":"/user-guides/how-to-use-damm-v2/damm-v2-pool-detail"}]}]},{"group":"Core Products","pages":[{"group":"DLMM","root":{"title":"What is DLMM?","sidebarTitle":"What is DLMM?","href":"/core-products/dlmm/what-is-dlmm"},"pages":[{"title":"DLMM Dynamic Positions","sidebarTitle":"Dynamic Positions","href":"/core-products/dlmm/dynamic-positions"},{"title":"DLMM Limit Order","sidebarTitle":"Limit Order","href":"/core-products/dlmm/limit-order"},{"title":"DLMM Liquidity Mining","sidebarTitle":"Liquidity Mining","href":"/core-products/dlmm/liquidity-mining"},{"title":"DLMM Collect Fee Mode","sidebarTitle":"Collect Fee Mode","href":"/core-products/dlmm/collect-fee-mode"},{"title":"DLMM Token 2022 Support","sidebarTitle":"Token 2022 Support","href":"/core-products/dlmm/token-2022-support"},{"title":"DLMM Strategies and Use Cases","sidebarTitle":"Strategies and Use Cases","description":"Choose DLMM liquidity shapes for stable pairs, volatile assets, DCA strategies, launch liquidity, and different capital-efficiency goals.","href":"/core-products/dlmm/strategies-and-use-cases"},{"title":"DLMM Formulas","sidebarTitle":"Formulas","href":"/core-products/dlmm/formulas"}]},{"group":"DAMM v2","root":{"title":"What is DAMM v2?","sidebarTitle":"What is DAMM v2?","description":"Learn more about Meteora's DAMM v2 configurable constant-product pools, concentrated or compounding liquidity, launch fee modes, NFT positions, rewards, locks, and Token 2022 support.","href":"/core-products/damm-v2/what-is-damm-v2"},"pages":[{"title":"DAMM v2 Concentrated Liquidity","sidebarTitle":"Concentrated Liquidity","href":"/core-products/damm-v2/concentrated-liquidity"},{"title":"DAMM v2 Compounding Liquidity","sidebarTitle":"Compounding Liquidity","href":"/core-products/damm-v2/compounding-liquidity"},{"group":"DAMM v2 Fees","root":{"title":"DAMM v2 Fees","sidebarTitle":"Fees Overview","href":"/core-products/damm-v2/fees/overview"},"pages":[{"title":"DAMM v2 Time Scheduler","sidebarTitle":"Time Scheduler","href":"/core-products/damm-v2/fees/time-scheduler"},{"title":"DAMM v2 Market Cap Scheduler","sidebarTitle":"Market Cap Scheduler","href":"/core-products/damm-v2/fees/market-cap-scheduler"},{"title":"DAMM v2 Rate Limiter","sidebarTitle":"Rate Limiter","href":"/core-products/damm-v2/fees/rate-limiter"},{"title":"DAMM v2 Dynamic Fees","sidebarTitle":"Dynamic Fees","href":"/core-products/damm-v2/fees/dynamic-fees"}]},{"title":"DAMM v2 NFT Positions","sidebarTitle":"NFT Positions","href":"/core-products/damm-v2/nft-positions"},{"title":"DAMM v2 Liquidity Mining","sidebarTitle":"Liquidity Mining","href":"/core-products/damm-v2/liquidity-mining"},{"title":"DAMM v2 Token 2022 Support","sidebarTitle":"Token 2022 Support","href":"/core-products/damm-v2/token-2022-support"},{"title":"DAMM v2 Formulas","sidebarTitle":"Formulas","href":"/core-products/damm-v2/formulas"}]},{"group":"DBC","root":{"title":"What is DBC?","sidebarTitle":"What is DBC?","href":"/core-products/dbc/what-is-dbc"},"pages":[{"title":"DBC Universal Curve","sidebarTitle":"Universal Curve","href":"/core-products/dbc/universal-curve"},{"title":"DBC Launch Configuration","sidebarTitle":"Launch Configuration","href":"/core-products/dbc/launch-configurations"},{"group":"DBC Fees","root":{"title":"DBC Fees","sidebarTitle":"Fees Overview","href":"/core-products/dbc/fees/overview"},"pages":[{"title":"DBC Fee Scheduler","sidebarTitle":"Fee Scheduler","href":"/core-products/dbc/fees/fee-scheduler"},{"title":"DBC Rate Limiter","sidebarTitle":"Rate Limiter","href":"/core-products/dbc/fees/rate-limiter"},{"title":"DBC Dynamic Fees","sidebarTitle":"Dynamic Fees","href":"/core-products/dbc/fees/dynamic-fees"}]},{"title":"DBC Migration and Liquidity","sidebarTitle":"Migration and Liquidity","href":"/core-products/dbc/migration-and-liquidity"},{"title":"DBC Surplus and Leftover","sidebarTitle":"Surplus and Leftover","href":"/core-products/dbc/surplus-and-leftover"},{"title":"DBC Token 2022 Support","sidebarTitle":"Token 2022 Support","href":"/core-products/dbc/token-2022-support"},{"title":"DBC Transfer Hook Pools","sidebarTitle":"Transfer Hook Pools","href":"/core-products/dbc/transfer-hook-pools"},{"title":"DBC Accounts and Permissions","sidebarTitle":"Accounts and Permissions","href":"/core-products/dbc/accounts-and-permissions"},{"title":"DBC Formulas","sidebarTitle":"Formulas","href":"/core-products/dbc/formulas"}]}]},{"group":"Helper Products","pages":[{"group":"Presale Vault","root":{"title":"What is Presale Vault?","sidebarTitle":"What is Presale Vault?","href":"/helper-products/presale-vault/what-is-presale-vault"},"pages":[{"title":"Presale Vault Modes","sidebarTitle":"Vault Modes","href":"/helper-products/presale-vault/vault-modes"},{"title":"Presale Vault Configuration Guide","sidebarTitle":"Configuration Guide","href":"/helper-products/presale-vault/configuration-guide"},{"title":"Presale Vault Token 2022 Support","sidebarTitle":"Token 2022 Support","href":"/helper-products/presale-vault/token-2022-support"},{"title":"Presale Vault Access and States","sidebarTitle":"Access and States","href":"/helper-products/presale-vault/access-and-states"},{"title":"Presale Vault Formulas","sidebarTitle":"Formulas","href":"/helper-products/presale-vault/formulas"}]},{"group":"Alpha Vault","root":{"title":"What is Alpha Vault?","sidebarTitle":"What is Alpha Vault?","href":"/helper-products/alpha-vault/what-is-alpha-vault"},"pages":[{"title":"Alpha Vault Modes","sidebarTitle":"Vault Modes","href":"/helper-products/alpha-vault/vault-modes"},{"title":"Alpha Vault Launch Design Guide","sidebarTitle":"Launch Design Guide","href":"/helper-products/alpha-vault/launch-design-guide"},{"title":"Alpha Vault Whitelist and Access","sidebarTitle":"Whitelist and Access","href":"/helper-products/alpha-vault/whitelist-and-access"},{"title":"Alpha Vault Formulas","sidebarTitle":"Formulas","href":"/helper-products/alpha-vault/formulas"}]},{"group":"Dynamic Fee Sharing","root":{"title":"What is Dynamic Fee Sharing?","sidebarTitle":"What is Dynamic Fee Sharing?","href":"/helper-products/dynamic-fee-sharing/what-is-dynamic-fee-sharing"},"pages":[{"title":"Dynamic Fee Sharing Design Guide","sidebarTitle":"Design Guide","href":"/helper-products/dynamic-fee-sharing/design-guide"},{"title":"Dynamic Fee Sharing Compatibilities","sidebarTitle":"Compatibilities","href":"/helper-products/dynamic-fee-sharing/compatibilities"},{"title":"Dynamic Fee Sharing Formulas","sidebarTitle":"Formulas","href":"/helper-products/dynamic-fee-sharing/formulas"}]},{"group":"Zap","root":{"title":"What is Zap?","sidebarTitle":"What is Zap?","href":"/helper-products/zap/what-is-zap"},"pages":[{"title":"Zap Compatibilities","sidebarTitle":"Compatibilities","href":"/helper-products/zap/compatibilities"},{"title":"Zap Formulas and Limits","sidebarTitle":"Formulas and Limits","href":"/helper-products/zap/formula-and-limits"}]}]},{"group":"Legacy Products","pages":[{"group":"DAMM v1","root":{"title":"What is DAMM v1?","sidebarTitle":"What is DAMM v1?","href":"/legacy-products/damm-v1/what-is-damm-v1"},"pages":[{"title":"DAMM v1 Stable Pools","sidebarTitle":"Stable Pools","href":"/legacy-products/damm-v1/stable-pools"},{"title":"DAMM v1 LST Pools","sidebarTitle":"LST Pools","href":"/legacy-products/damm-v1/lst-pools"},{"title":"Dynamic Vault Yield","sidebarTitle":"Dynamic Vault Yield","href":"/legacy-products/damm-v1/dynamic-vaults-yield"},{"title":"DAMM v1 Pools With Farms","sidebarTitle":"Pools With Farms","href":"/legacy-products/damm-v1/pools-with-farms"},{"title":"DAMM v1 Liquidity Locks","sidebarTitle":"Liquidity Locks","href":"/legacy-products/damm-v1/liquidity-locks"},{"title":"DAMM v1 Fee and APY Calculation","sidebarTitle":"Fee and APY Calculation","href":"/legacy-products/damm-v1/damm-v1-fee-and-apy-calculation"},{"title":"DAMM v1 Pool Design Guide","sidebarTitle":"Pool Design Guide","href":"/legacy-products/damm-v1/pool-design-guide"},{"title":"DAMM v1 Implementation and Limits","sidebarTitle":"Implementation and Limits","href":"/legacy-products/damm-v1/implementation-and-limits"},{"title":"DAMM v1 Formulas","sidebarTitle":"Formulas","href":"/legacy-products/damm-v1/damm-v1-formulas"}]},{"group":"Dynamic Vault","root":{"title":"What is Dynamic Vault?","sidebarTitle":"What is Dynamic Vault?","href":"/legacy-products/dynamic-vault/what-is-dynamic-vault"},"pages":[{"group":"Hermes","root":{"title":"What is Hermes?","sidebarTitle":"What is Hermes?","href":"/legacy-products/dynamic-vault/hermes/what-is-hermes"},"pages":[{"title":"Rebalance Crank","sidebarTitle":"Rebalance Crank","href":"/legacy-products/dynamic-vault/hermes/rebalance-crank"}]},{"title":"Dynamic Vault Access and Limits","sidebarTitle":"Access and Limits","href":"/legacy-products/dynamic-vault/access-and-limits"},{"title":"Dynamic Vault Formulas","sidebarTitle":"Formulas","href":"/legacy-products/dynamic-vault/formulas"}]},{"group":"Stake2Earn","root":{"title":"What is Stake2Earn?","sidebarTitle":"What is Stake2Earn?","href":"/legacy-products/stake2earn/what-is-stake2earn"},"pages":[{"title":"Stake2Earn Configuration and Limits","sidebarTitle":"Configuration and Limits","href":"/legacy-products/stake2earn/configuration-and-limits"},{"title":"Stake2Earn Formulas","sidebarTitle":"Formulas","href":"/legacy-products/stake2earn/formulas"}]}]}]},{"tab":"Developer Guides","menu":[{"item":"DLMM","icon":"arrows-to-circle","pages":[{"title":"DLMM","href":"/developer-guides/dlmm"}]},{"item":"DAMM v2","icon":"calculator-simple","pages":[{"title":"DAMM v2","href":"/developer-guides/damm-v2"}]},{"item":"DBC","icon":"chart-simple","pages":[{"title":"DBC","href":"/developer-guides/dbc"}]},{"item":"Presale Vault","icon":"gavel","pages":[{"title":"Presale Vault","href":"/developer-guides/presale-vault"}]},{"item":"Alpha Vault","icon":"box","pages":[{"title":"Alpha Vault","href":"/developer-guides/alpha-vault"}]},{"item":"Dynamic Fee Sharing","icon":"money-bill-wave","pages":[{"title":"Dynamic Fee Sharing","href":"/developer-guides/dynamic-fee-sharing"}]},{"item":"Zap","icon":"bolt-lightning","pages":[{"title":"Zap","href":"/developer-guides/zap"}]},{"item":"DAMM v1","icon":"calculator","pages":[{"title":"DAMM v1","href":"/developer-guides/damm-v1"}]},{"item":"Dynamic Vault","icon":"vault","pages":[{"title":"Dynamic Vault","href":"/developer-guides/dynamic-vault"}]},{"item":"Stake2Earn","icon":"steak","pages":[{"title":"Stake2Earn","href":"/developer-guides/stake2earn"}]}],"pages":[{"title":"Developer Guides","href":"/developer-guides/dlmm"}]},{"tab":"Invent","pages":[{"title":"Invent","href":"/invent/actions"}]},{"tab":"Agents","pages":[{"title":"Agents","href":"/agents/overview"}]},{"tab":"Protocol","pages":[{"title":"Protocol","href":"/protocol/protocol-revenues"}]},{"tab":"Resources","pages":[{"title":"Resources","href":"/resources/audits/overview"}]}]},"basePath":"","title":"DLMM Formulas - Meteora Documentation","buildId":"dpl_GZsjphRpnhWkstV12jxWNcMHFyox","deploymentId":"dpl_GZsjphRpnhWkstV12jxWNcMHFyox","dynamics":["a74be98ba7"],"chunks":["zoom-image-lightbox-CAita2ok.js","lightbox-handle-r17bVUz3.js"]}