Alpha Vault accounting is proportional: the vault buys as one account, then users receive token claims and quote refunds based on their escrow deposit share.All on-chain arithmetic uses integer token amounts. Division rounds down.
The max swappable amount is mode-dependent.Pro Rata Max Swappable=min(total_deposit,max_buying_cap)FCFS Max Swappable=total_depositEach fill instruction also takes a max_amount, so the actual amount for that fill is:Fill Swappable Amount=min(Max Swappable Amount−swapped_amount,max_amount)
Most user-facing amounts use the escrow’s share of total vault deposits.User Share=total_depositescrow.total_depositBecause this is integer math on-chain, the program multiplies before dividing and rounds down.
The program treats both endpoints as inclusive by adding 1 to the numerator and denominator.Vesting Duration=end_vesting_point−start_vesting_point+1Elapsed Duration=min(current_point,end_vesting_point)−start_vesting_point+1Total Claimable Token=bought_token×Vesting DurationElapsed DurationClaims are not allowed before start_vesting_point.
Escrow Dripped Token=Total Claimable Token×total_depositescrow.total_depositUser Claimable Token=Escrow Dripped Token−escrow.claimed_tokenAfter a claim, the program increments both the escrow’s claimed_token and the vault’s total_claimed_token.
Overflow is the part of total deposits that cannot be included in max swappable amount.Deposit Overflow=total_deposit−Max Swappable AmountEscrow Overflow Refund=Deposit Overflow×total_depositescrow.total_depositAn escrow can withdraw this overflow after last_join_point and through last_buying_point. The program tracks withdrawn_deposit_overflow so repeated withdrawals only receive the remaining overflow amount.
After the pool’s last_buying_point, an escrow can withdraw its share of quote left in the vault.Remaining Quote=total_deposit−swapped_amountEscrow Total Refund Quote=Remaining Quote×total_depositescrow.total_depositFinal Refund Transfer=Escrow Total Refund Quote−escrow.withdrawn_deposit_overflowThe escrow is then marked as refunded so the final remaining quote path cannot be used twice.
In FCFS mode, the program limits the accepted deposit amount before transfer.Remaining Vault Capacity=max_depositing_cap−total_depositRemaining User Quota=User Cap−escrow.total_depositAccepted Deposit=min(requested net amount,Remaining Vault Capacity,Remaining User Quota)If the accepted amount is 0, the deposit fails.
When the quote mint has a Token 2022 transfer fee, the vault records the fee-excluded amount as the deposit. It transfers the fee-included amount from the user so that the vault receives the intended net amount.Recorded Deposit=Transfer Amount−Transfer FeeFor outbound claims and refunds, emitted event amounts are fee-excluded when a transfer fee applies.
Formula examples describe the accounting path. Actual token balances can also be affected by Token 2022 transfer fees and transfer-memo requirements on destination accounts.
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.4054","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":[],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"helper-products/alpha-vault/formulas","slug":"/helper-products/alpha-vault/formulas","pageMetadata":{"title":"Alpha Vault Formulas","sidebarTitle":"Formulas","description":"Review Alpha Vault allocation, swappable amount, refund, vesting, cap, and Token 2022 transfer-fee formulas.","llmsDescription":"Alpha Vault formulas for max swappable amount, swappable amount per fill, user token claim, linear vesting, Pro Rata overflow refund, final remaining quote refund, FCFS accepted deposit, permissioned remaining quota, and Token 2022 transfer-fee accounting. Notes integer division and rounding down.","href":"/helper-products/alpha-vault/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: \"Review Alpha Vault allocation, swappable amount, refund, vesting, cap, and Token 2022 transfer-fee formulas.\"\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={annotation:`annotation`,code:`code`,math:`math`,mfrac:`mfrac`,mi:`mi`,mn:`mn`,mo:`mo`,mrow:`mrow`,mtext:`mtext`,p:`p`,semantics:`semantics`,span:`span`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,..._provideComponents(),...props.components},{Heading,Table,Warning}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Alpha Vault accounting is proportional: the vault buys as one account, then users receive token claims and quote refunds based on their escrow deposit share.`}),`\n`,_jsx(_components.p,{children:`All on-chain arithmetic uses integer token amounts. Division rounds down.`}),`\n`,_jsx(Heading,{level:`2`,id:`key-terms`,children:`Key Terms`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Term`}),_jsx(_components.th,{children:`Meaning`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`total_deposit`})}),_jsx(_components.td,{children:`Total net quote amount recorded across all escrows.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`escrow.total_deposit`})}),_jsx(_components.td,{children:`Net quote amount recorded for one escrow.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`max_buying_cap`})}),_jsx(_components.td,{children:`Pro Rata quote amount cap for vault fills.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`max_depositing_cap`})}),_jsx(_components.td,{children:`FCFS total accepted deposit cap.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`swapped_amount`})}),_jsx(_components.td,{children:`Total quote amount already used by vault fills.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`bought_token`})}),_jsx(_components.td,{children:`Total launch token bought by the vault.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`claimed_token`})}),_jsx(_components.td,{children:`Launch token already claimed by an escrow.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`withdrawn_deposit_overflow`})}),_jsx(_components.td,{children:`Pro Rata overflow quote already withdrawn by an escrow.`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`max-swappable-amount`,children:`Max Swappable Amount`}),`\n`,_jsx(_components.p,{children:`The max swappable amount is mode-dependent.`}),`\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:`Pro\\xA0Rata\\xA0Max\\xA0Swappable`}),_jsx(_components.mo,{children:`=`}),_jsx(_components.mi,{children:`min`}),_jsx(_components.mo,{children:``}),_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsx(_components.mtext,{children:`total_deposit`}),_jsx(_components.mo,{separator:`true`,children:`,`}),_jsx(_components.mtext,{children:`max_buying_cap`}),_jsx(_components.mo,{stretchy:`false`,children:`)`})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{Pro Rata Max Swappable} =\n\\\\min(\\\\text{total\\\\_deposit}, \\\\text{max\\\\_buying\\\\_cap})\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:`Pro\\xA0Rata\\xA0Max\\xA0Swappable`})}),_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:`1.06em`,verticalAlign:`-0.31em`}}),_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:`total_deposit`})}),_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_buying_cap`})}),_jsx(_components.span,{className:`mclose`,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:`FCFS\\xA0Max\\xA0Swappable`}),_jsx(_components.mo,{children:`=`}),_jsx(_components.mtext,{children:`total_deposit`})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{FCFS Max Swappable} =\n\\\\text{total\\\\_deposit}\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:`FCFS\\xA0Max\\xA0Swappable`})}),_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:`1.0044em`,verticalAlign:`-0.31em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`total_deposit`})})]})]})]})}),`\n`,_jsxs(_components.p,{children:[`Each fill instruction also takes a `,_jsx(_components.code,{children:`max_amount`}),`, so the actual amount for that fill 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:`Fill\\xA0Swappable\\xA0Amount`}),_jsx(_components.mo,{children:`=`}),_jsx(_components.mi,{children:`min`}),_jsx(_components.mo,{children:``}),_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsx(_components.mtext,{children:`Max\\xA0Swappable\\xA0Amount`}),_jsx(_components.mo,{children:`−`}),_jsx(_components.mtext,{children:`swapped_amount`}),_jsx(_components.mo,{separator:`true`,children:`,`}),_jsx(_components.mtext,{children:`max_amount`}),_jsx(_components.mo,{stretchy:`false`,children:`)`})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{Fill Swappable Amount} =\n\\\\min(\\\\text{Max Swappable Amount} - \\\\text{swapped\\\\_amount}, \\\\text{max\\\\_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:`Fill\\xA0Swappable\\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:`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:`Max\\xA0Swappable\\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`}})]}),_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:`swapped_amount`})}),_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_amount`})}),_jsx(_components.span,{className:`mclose`,children:`)`})]})]})]})}),`\n`,_jsx(Heading,{level:`2`,id:`user-deposit-share`,children:`User Deposit Share`}),`\n`,_jsx(_components.p,{children:`Most user-facing amounts use the escrow’s share of total vault deposits.`}),`\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:`User\\xA0Share`}),_jsx(_components.mo,{children:`=`}),_jsxs(_components.mfrac,{children:[_jsx(_components.mtext,{children:`escrow.total_deposit`}),_jsx(_components.mtext,{children:`total_deposit`})]})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{User Share} =\n\\\\frac{\\\\text{escrow.total\\\\_deposit}}{\\\\text{total\\\\_deposit}}\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:`User\\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.3904em`,verticalAlign:`-0.996em`}}),_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.3944em`},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_deposit`})})})]}),_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.7em`},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:`escrow.total_deposit`})})})]})]}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.996em`},children:_jsx(_components.span,{})})})]})}),_jsx(_components.span,{className:`mclose nulldelimiter`})]})]})]})]})}),`\n`,_jsx(_components.p,{children:`Because this is integer math on-chain, the program multiplies before dividing and rounds down.`}),`\n`,_jsx(Heading,{level:`2`,id:`linear-vesting`,children:`Linear Vesting`}),`\n`,_jsxs(_components.p,{children:[`The program treats both endpoints as inclusive by adding `,_jsx(_components.code,{children:`1`}),` to the numerator and denominator.`]}),`\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:`Vesting\\xA0Duration`}),_jsx(_components.mo,{children:`=`}),_jsx(_components.mtext,{children:`end_vesting_point`}),_jsx(_components.mo,{children:`−`}),_jsx(_components.mtext,{children:`start_vesting_point`}),_jsx(_components.mo,{children:`+`}),_jsx(_components.mn,{children:`1`})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{Vesting Duration} =\n\\\\text{end\\\\_vesting\\\\_point} - \\\\text{start\\\\_vesting\\\\_point} + 1\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.8778em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`Vesting\\xA0Duration`})}),_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:`1.0044em`,verticalAlign:`-0.31em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`end_vesting_point`})}),_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.9779em`,verticalAlign:`-0.31em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`start_vesting_point`})}),_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.6444em`}}),_jsx(_components.span,{className:`mord`,children:`1`})]})]})]})}),`\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:`Elapsed\\xA0Duration`}),_jsx(_components.mo,{children:`=`}),_jsx(_components.mi,{children:`min`}),_jsx(_components.mo,{children:``}),_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsx(_components.mtext,{children:`current_point`}),_jsx(_components.mo,{separator:`true`,children:`,`}),_jsx(_components.mtext,{children:`end_vesting_point`}),_jsx(_components.mo,{stretchy:`false`,children:`)`}),_jsx(_components.mo,{children:`−`}),_jsx(_components.mtext,{children:`start_vesting_point`}),_jsx(_components.mo,{children:`+`}),_jsx(_components.mn,{children:`1`})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{Elapsed Duration} =\n\\\\min(\\\\text{current\\\\_point}, \\\\text{end\\\\_vesting\\\\_point})\n- \\\\text{start\\\\_vesting\\\\_point} + 1\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:`Elapsed\\xA0Duration`})}),_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:`1.06em`,verticalAlign:`-0.31em`}}),_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:`current_point`})}),_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:`end_vesting_point`})}),_jsx(_components.span,{className:`mclose`,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.9779em`,verticalAlign:`-0.31em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`start_vesting_point`})}),_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.6444em`}}),_jsx(_components.span,{className:`mord`,children:`1`})]})]})]})}),`\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\\xA0Claimable\\xA0Token`}),_jsx(_components.mo,{children:`=`}),_jsx(_components.mtext,{children:`bought_token`}),_jsx(_components.mo,{children:`×`}),_jsxs(_components.mfrac,{children:[_jsx(_components.mtext,{children:`Elapsed\\xA0Duration`}),_jsx(_components.mtext,{children:`Vesting\\xA0Duration`})]})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{Total Claimable Token} =\n\\\\text{bought\\\\_token}\n\\\\times\n\\\\frac{\\\\text{Elapsed Duration}}{\\\\text{Vesting 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:`Total\\xA0Claimable\\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:`1.0044em`,verticalAlign:`-0.31em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`bought_token`})}),_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`}}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`Vesting\\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`}}),_jsx(_components.span,{className:`mord`,children:_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`Elapsed\\xA0Duration`})})})]})]}),_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`,_jsxs(_components.p,{children:[`Claims are not allowed before `,_jsx(_components.code,{children:`start_vesting_point`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`user-claimable-token`,children:`User Claimable Token`}),`\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:`Escrow\\xA0Dripped\\xA0Token`}),_jsx(_components.mo,{children:`=`}),_jsx(_components.mtext,{children:`Total\\xA0Claimable\\xA0Token`}),_jsx(_components.mo,{children:`×`}),_jsxs(_components.mfrac,{children:[_jsx(_components.mtext,{children:`escrow.total_deposit`}),_jsx(_components.mtext,{children:`total_deposit`})]})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{Escrow Dripped Token} =\n\\\\text{Total Claimable Token}\n\\\\times\n\\\\frac{\\\\text{escrow.total\\\\_deposit}}{\\\\text{total\\\\_deposit}}\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:`Escrow\\xA0Dripped\\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:`0.7778em`,verticalAlign:`-0.0833em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`Total\\xA0Claimable\\xA0Token`})}),_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.3904em`,verticalAlign:`-0.996em`}}),_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.3944em`},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_deposit`})})})]}),_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.7em`},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:`escrow.total_deposit`})})})]})]}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.996em`},children:_jsx(_components.span,{})})})]})}),_jsx(_components.span,{className:`mclose nulldelimiter`})]})]})]})]})}),`\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:`User\\xA0Claimable\\xA0Token`}),_jsx(_components.mo,{children:`=`}),_jsx(_components.mtext,{children:`Escrow\\xA0Dripped\\xA0Token`}),_jsx(_components.mo,{children:`−`}),_jsx(_components.mtext,{children:`escrow.claimed_token`})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{User Claimable Token} =\n\\\\text{Escrow Dripped Token} - \\\\text{escrow.claimed\\\\_token}\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:`User\\xA0Claimable\\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:`0.8889em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`Escrow\\xA0Dripped\\xA0Token`})}),_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.0044em`,verticalAlign:`-0.31em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`escrow.claimed_token`})})]})]})]})}),`\n`,_jsxs(_components.p,{children:[`After a claim, the program increments both the escrow’s `,_jsx(_components.code,{children:`claimed_token`}),` and the vault’s `,_jsx(_components.code,{children:`total_claimed_token`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`pro-rata-overflow-refund`,children:`Pro Rata Overflow Refund`}),`\n`,_jsx(_components.p,{children:`Overflow is the part of total deposits that cannot be included in max swappable amount.`}),`\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:`Deposit\\xA0Overflow`}),_jsx(_components.mo,{children:`=`}),_jsx(_components.mtext,{children:`total_deposit`}),_jsx(_components.mo,{children:`−`}),_jsx(_components.mtext,{children:`Max\\xA0Swappable\\xA0Amount`})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{Deposit Overflow} =\n\\\\text{total\\\\_deposit} - \\\\text{Max Swappable 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:`Deposit\\xA0Overflow`})}),_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:`1.0044em`,verticalAlign:`-0.31em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`total_deposit`})}),_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:`Max\\xA0Swappable\\xA0Amount`})})]})]})]})}),`\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:`Escrow\\xA0Overflow\\xA0Refund`}),_jsx(_components.mo,{children:`=`}),_jsx(_components.mtext,{children:`Deposit\\xA0Overflow`}),_jsx(_components.mo,{children:`×`}),_jsxs(_components.mfrac,{children:[_jsx(_components.mtext,{children:`escrow.total_deposit`}),_jsx(_components.mtext,{children:`total_deposit`})]})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{Escrow Overflow Refund} =\n\\\\text{Deposit Overflow}\n\\\\times\n\\\\frac{\\\\text{escrow.total\\\\_deposit}}{\\\\text{total\\\\_deposit}}\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:`Escrow\\xA0Overflow\\xA0Refund`})}),_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:`Deposit\\xA0Overflow`})}),_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.3904em`,verticalAlign:`-0.996em`}}),_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.3944em`},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_deposit`})})})]}),_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.7em`},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:`escrow.total_deposit`})})})]})]}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.996em`},children:_jsx(_components.span,{})})})]})}),_jsx(_components.span,{className:`mclose nulldelimiter`})]})]})]})]})}),`\n`,_jsxs(_components.p,{children:[`An escrow can withdraw this overflow after `,_jsx(_components.code,{children:`last_join_point`}),` and through `,_jsx(_components.code,{children:`last_buying_point`}),`. The program tracks `,_jsx(_components.code,{children:`withdrawn_deposit_overflow`}),` so repeated withdrawals only receive the remaining overflow amount.`]}),`\n`,_jsx(Heading,{level:`2`,id:`final-remaining-quote-refund`,children:`Final Remaining Quote Refund`}),`\n`,_jsxs(_components.p,{children:[`After the pool’s `,_jsx(_components.code,{children:`last_buying_point`}),`, an escrow can withdraw its share of quote left in the vault.`]}),`\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:`Remaining\\xA0Quote`}),_jsx(_components.mo,{children:`=`}),_jsx(_components.mtext,{children:`total_deposit`}),_jsx(_components.mo,{children:`−`}),_jsx(_components.mtext,{children:`swapped_amount`})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{Remaining Quote} =\n\\\\text{total\\\\_deposit} - \\\\text{swapped\\\\_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.8778em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`Remaining\\xA0Quote`})}),_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:`1.0044em`,verticalAlign:`-0.31em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`total_deposit`})}),_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.0044em`,verticalAlign:`-0.31em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`swapped_amount`})})]})]})]})}),`\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:`Escrow\\xA0Total\\xA0Refund\\xA0Quote`}),_jsx(_components.mo,{children:`=`}),_jsx(_components.mtext,{children:`Remaining\\xA0Quote`}),_jsx(_components.mo,{children:`×`}),_jsxs(_components.mfrac,{children:[_jsx(_components.mtext,{children:`escrow.total_deposit`}),_jsx(_components.mtext,{children:`total_deposit`})]})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{Escrow Total Refund Quote} =\n\\\\text{Remaining Quote}\n\\\\times\n\\\\frac{\\\\text{escrow.total\\\\_deposit}}{\\\\text{total\\\\_deposit}}\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:`Escrow\\xA0Total\\xA0Refund\\xA0Quote`})}),_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.8778em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`Remaining\\xA0Quote`})}),_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.3904em`,verticalAlign:`-0.996em`}}),_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.3944em`},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_deposit`})})})]}),_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.7em`},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:`escrow.total_deposit`})})})]})]}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.996em`},children:_jsx(_components.span,{})})})]})}),_jsx(_components.span,{className:`mclose nulldelimiter`})]})]})]})]})}),`\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:`Final\\xA0Refund\\xA0Transfer`}),_jsx(_components.mo,{children:`=`}),_jsx(_components.mtext,{children:`Escrow\\xA0Total\\xA0Refund\\xA0Quote`}),_jsx(_components.mo,{children:`−`}),_jsx(_components.mtext,{children:`escrow.withdrawn_deposit_overflow`})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{Final Refund Transfer} =\n\\\\text{Escrow Total Refund Quote}\n- \\\\text{escrow.withdrawn\\\\_deposit\\\\_overflow}\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:`Final\\xA0Refund\\xA0Transfer`})}),_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:`Escrow\\xA0Total\\xA0Refund\\xA0Quote`})}),_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.0044em`,verticalAlign:`-0.31em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`escrow.withdrawn_deposit_overflow`})})]})]})]})}),`\n`,_jsx(_components.p,{children:`The escrow is then marked as refunded so the final remaining quote path cannot be used twice.`}),`\n`,_jsx(Heading,{level:`2`,id:`fcfs-accepted-deposit`,children:`FCFS Accepted Deposit`}),`\n`,_jsx(_components.p,{children:`In FCFS mode, the program limits the accepted deposit amount before transfer.`}),`\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:`Remaining\\xA0Vault\\xA0Capacity`}),_jsx(_components.mo,{children:`=`}),_jsx(_components.mtext,{children:`max_depositing_cap`}),_jsx(_components.mo,{children:`−`}),_jsx(_components.mtext,{children:`total_deposit`})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{Remaining Vault Capacity} =\n\\\\text{max\\\\_depositing\\\\_cap} - \\\\text{total\\\\_deposit}\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:`Remaining\\xA0Vault\\xA0Capacity`})}),_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:`1.0044em`,verticalAlign:`-0.31em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`max_depositing_cap`})}),_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.0044em`,verticalAlign:`-0.31em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`total_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:[_jsx(_components.mtext,{children:`Remaining\\xA0User\\xA0Quota`}),_jsx(_components.mo,{children:`=`}),_jsx(_components.mtext,{children:`User\\xA0Cap`}),_jsx(_components.mo,{children:`−`}),_jsx(_components.mtext,{children:`escrow.total_deposit`})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{Remaining User Quota} =\n\\\\text{User Cap} - \\\\text{escrow.total\\\\_deposit}\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.8778em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`Remaining\\xA0User\\xA0Quota`})}),_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.8778em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`User\\xA0Cap`})}),_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.0044em`,verticalAlign:`-0.31em`}}),_jsx(_components.span,{className:`mord text`,children:_jsx(_components.span,{className:`mord`,children:`escrow.total_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:[_jsx(_components.mtext,{children:`Accepted\\xA0Deposit`}),_jsx(_components.mo,{children:`=`}),_jsx(_components.mi,{children:`min`}),_jsx(_components.mo,{children:``}),_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsx(_components.mtext,{children:`requested\\xA0net\\xA0amount`}),_jsx(_components.mo,{separator:`true`,children:`,`}),_jsx(_components.mtext,{children:`Remaining\\xA0Vault\\xA0Capacity`}),_jsx(_components.mo,{separator:`true`,children:`,`}),_jsx(_components.mtext,{children:`Remaining\\xA0User\\xA0Quota`}),_jsx(_components.mo,{stretchy:`false`,children:`)`})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{Accepted Deposit} =\n\\\\min(\n\\\\text{requested net amount},\n\\\\text{Remaining Vault Capacity},\n\\\\text{Remaining User Quota}\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:`Accepted\\xA0Deposit`})}),_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:`requested\\xA0net\\xA0amount`})}),_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:`Remaining\\xA0Vault\\xA0Capacity`})}),_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:`Remaining\\xA0User\\xA0Quota`})}),_jsx(_components.span,{className:`mclose`,children:`)`})]})]})]})}),`\n`,_jsxs(_components.p,{children:[`If the accepted amount is `,_jsx(_components.code,{children:`0`}),`, the deposit fails.`]}),`\n`,_jsx(Heading,{level:`2`,id:`token-2022-transfer-fees`,children:`Token 2022 Transfer Fees`}),`\n`,_jsx(_components.p,{children:`When the quote mint has a Token 2022 transfer fee, the vault records the fee-excluded amount as the deposit. It transfers the fee-included amount from the user so that the vault receives the intended net amount.`}),`\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:`Recorded\\xA0Deposit`}),_jsx(_components.mo,{children:`=`}),_jsx(_components.mtext,{children:`Transfer\\xA0Amount`}),_jsx(_components.mo,{children:`−`}),_jsx(_components.mtext,{children:`Transfer\\xA0Fee`})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`\\\\text{Recorded Deposit} =\n\\\\text{Transfer Amount} - \\\\text{Transfer 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:`Recorded\\xA0Deposit`})}),_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:`Transfer\\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`}})]}),_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:`Transfer\\xA0Fee`})})]})]})]})}),`\n`,_jsx(_components.p,{children:`For outbound claims and refunds, emitted event amounts are fee-excluded when a transfer fee applies.`}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`Formula examples describe the accounting path. Actual token balances can also be affected by Token 2022 transfer fees and transfer-memo requirements on destination accounts.`})})]})}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":"Alpha Vault Formulas","sidebarTitle":"Formulas","description":"Review Alpha Vault allocation, swappable amount, refund, vesting, cap, and Token 2022 transfer-fee formulas.","llmsDescription":"Alpha Vault formulas for max swappable amount, swappable amount per fill, user token claim, linear vesting, Pro Rata overflow refund, final remaining quote refund, FCFS accepted deposit, permissioned remaining quota, and Token 2022 transfer-fee accounting. Notes integer division and rounding down.","href":"/helper-products/alpha-vault/formulas"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Key Terms","slug":"key-terms","depth":2,"children":[]},{"title":"Max Swappable Amount","slug":"max-swappable-amount","depth":2,"children":[]},{"title":"User Deposit Share","slug":"user-deposit-share","depth":2,"children":[]},{"title":"Linear Vesting","slug":"linear-vesting","depth":2,"children":[]},{"title":"User Claimable Token","slug":"user-claimable-token","depth":2,"children":[]},{"title":"Pro Rata Overflow Refund","slug":"pro-rata-overflow-refund","depth":2,"children":[]},{"title":"Final Remaining Quote Refund","slug":"final-remaining-quote-refund","depth":2,"children":[]},{"title":"FCFS Accepted Deposit","slug":"fcfs-accepted-deposit","depth":2,"children":[]},{"title":"Token 2022 Transfer Fees","slug":"token-2022-transfer-fees","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"meteora","siteName":"Meteora Documentation","title":"Alpha Vault Formulas - Meteora Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-05-27T10:51:38.453Z","originalFileLocation":"helper-products/alpha-vault/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=\"Review Alpha Vault allocation, swappable amount, refund, vesting, cap, and Token 2022 transfer-fee formulas.\">\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=\"Alpha Vault Formulas - Meteora Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Review Alpha Vault allocation, swappable amount, refund, vesting, cap, and Token 2022 transfer-fee formulas.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Meteora Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.meteora.ag/helper-products/alpha-vault/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=Alpha+Vault\u0026amp;title=Alpha+Vault+Formulas\u0026amp;description=Review+Alpha+Vault+allocation%2C+swappable+amount%2C+refund%2C+vesting%2C+cap%2C+and+Token+2022+transfer-fee+formulas.\u0026amp;theme=eb18b52cbb4394f91f6c5646\u0026amp;signature=4fa063af496a1677480c3fc2480f2ede15b90dfa38516e05bcf0a426f70527c4\">\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=\"Alpha Vault Formulas - Meteora Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Review Alpha Vault allocation, swappable amount, refund, vesting, cap, and Token 2022 transfer-fee formulas.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://meteora.mintlify.app/_mintlify/api/og/v2?division=Alpha+Vault\u0026amp;title=Alpha+Vault+Formulas\u0026amp;description=Review+Alpha+Vault+allocation%2C+swappable+amount%2C+refund%2C+vesting%2C+cap%2C+and+Token+2022+transfer-fee+formulas.\u0026amp;theme=eb18b52cbb4394f91f6c5646\u0026amp;signature=4fa063af496a1677480c3fc2480f2ede15b90dfa38516e05bcf0a426f70527c4\">\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/helper-products/alpha-vault/formulas\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/helper-products/alpha-vault/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/helper-products/alpha-vault/formulas#webpage\",\"url\":\"https://docs.meteora.ag/helper-products/alpha-vault/formulas\",\"name\":\"Alpha Vault Formulas\",\"description\":\"Review Alpha Vault allocation, swappable amount, refund, vesting, cap, and Token 2022 transfer-fee formulas.\",\"dateModified\":\"2026-05-27T10:51:38.453Z\",\"isPartOf\":{\"@id\":\"https://docs.meteora.ag#website\"},\"breadcrumb\":{\"@id\":\"https://docs.meteora.ag/helper-products/alpha-vault/formulas#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.meteora.ag/helper-products/alpha-vault/formulas#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Helper Products\",\"item\":\"https://docs.meteora.ag/helper-products/presale-vault/vault-modes\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Alpha Vault\",\"item\":\"https://docs.meteora.ag/helper-products/alpha-vault/what-is-alpha-vault\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Alpha Vault Formulas\",\"item\":\"https://docs.meteora.ag/helper-products/alpha-vault/formulas\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.meteora.ag/helper-products/alpha-vault/formulas#article\",\"headline\":\"Alpha Vault Formulas\",\"name\":\"Alpha Vault Formulas\",\"description\":\"Review Alpha Vault allocation, swappable amount, refund, vesting, cap, and Token 2022 transfer-fee formulas.\",\"url\":\"https://docs.meteora.ag/helper-products/alpha-vault/formulas\",\"mainEntityOfPage\":{\"@id\":\"https://docs.meteora.ag/helper-products/alpha-vault/formulas#webpage\"},\"dateModified\":\"2026-05-27T10:51:38.453Z\",\"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","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?","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","description":"Understand Alpha Vault permissionless escrows, Merkle proof escrows, authority-created escrows, wallet caps, vault authority, and escrow fees.","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?","description":"Learn how Meteora Dynamic Fee Sharing lets teams fund a token vault and split claimable fees across a small fixed recipient set.","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":"Alpha Vault Formulas - Meteora Documentation","buildId":"dpl_345ReqzYaAjzS9QpeJemsKdb7KDj","deploymentId":"dpl_345ReqzYaAjzS9QpeJemsKdb7KDj","dynamics":[],"chunks":[]}