How the deployed program computes gross, fee, and net amounts per flow and pool kind
Fees are collected strictly on-chain by the shield-pool program into the mint-scoped treasury
PDA, using the fixed and variable fee stored in each pool’s PoolConfig. No other component
assesses or deducts fees.Fees apply only to flows that move value out of the pool (publicAmount < 0: withdrawals and
swaps). Deposits and shield-to-shield transfers charge no fee.
Deposit (publicAmount > 0): no fee. The full deposit amount moves into the pool and the
output commitments encode the full amount.
Shield-to-shield transfer (publicAmount = 0): no fee. No external value moves; the output
commitments sum to the inputs.
Withdrawal (publicAmount < 0): the destination receives net = gross - fee; the treasury
PDA receives fee.
Swap (TransactSwap, SOL pool only): fee = fixed + variable is taken from the gross SOL
at the first transaction; the remainder (gross - fee) is what gets swapped.
Fee: 8_000_000 lamports — net to recipient: 992_000_000 lamports
Withdraw 100 USDC (100_000_000 base units) gross:
Fixed: 450_000 base units (0.45 USDC)
Variable: 100_000_000 * 3 / 1000 = 300_000 base units (0.30 USDC)
Fee: 750_000 base units (0.75 USDC) — net to recipient: 99_250_000 base units
The Cloak app presents this in reverse: the user enters what the recipient should receive, and
the app grosses up so net equals the entered amount. At the program level the invariant is
always net = gross - fee.
For a user-facing summary with a who-pays table, see Fees.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Cloak Documentation","colors":{"primary":"#6366F1","light":"#818CF8","dark":"#4F46E5"},"logo":{"light":"https://mintcdn.com/cloak/r0L-ODeES1X_5cwS/logo/light.svg?fit=max\u0026auto=format\u0026n=r0L-ODeES1X_5cwS\u0026q=85\u0026s=5954e67549c08881ba79e740af1cfcbb","dark":"https://mintcdn.com/cloak/r0L-ODeES1X_5cwS/logo/dark.svg?fit=max\u0026auto=format\u0026n=r0L-ODeES1X_5cwS\u0026q=85\u0026s=f59f081b11a3e9ca4c1689c94e5483d9"},"favicon":"https://mintcdn.com/cloak/r0L-ODeES1X_5cwS/favicon.svg?fit=max\u0026auto=format\u0026n=r0L-ODeES1X_5cwS\u0026q=85\u0026s=bf111d429b406b5303c854b66d6b3f84","navbar":{"links":[{"href":"https://cloak.ag","label":"App"}]},"footer":{"socials":{"x":"https://x.com/cloak_ag","github":"https://github.com/cloak-ag","telegram":"https://t.me/cloak_community"}},"search":{"prompt":"Search Cloak docs..."},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"GitHub","icon":"github","href":"https://github.com/cloak-ag/sdk"},{"anchor":"NPM","icon":"npm","href":"https://www.npmjs.com/package/@cloak.dev/sdk"},{"anchor":"Telegram","icon":"telegram","href":"https://t.me/cloak_community"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"cloak","hasAudioNarration":false,"actualSubdomain":"cloak","customDomains":["docs.cloak.ag"],"gitSource":{"type":"github","owner":"cloak-ag","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"entitlements":{},"buildId":"6ae4cd09f29cac1d3d63e574","clientVersion":"0.0.4094","searchFilterCounts":[{"language":"default","tag":"Documentation","count":23},{"language":"default","tag":"Guide","count":18},{"language":"default","tag":"SDK","count":12},{"language":"default","tag":"Start here","count":7},{"language":"default","tag":"AI Tools","count":4},{"language":"default","tag":"IDE Setup","count":4},{"language":"default","tag":"Trust \u0026 safety","count":4},{"language":"default","tag":"Learn","count":4},{"language":"default","tag":"Platform","count":3},{"language":"default","tag":"Reference","count":3}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"protocol/fee-model","slug":"/protocol/fee-model","pageMetadata":{"title":"Fee Model","description":"How the deployed program computes gross, fee, and net amounts per flow and pool kind","icon":"receipt","href":"/protocol/fee-model"},"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: \"How the deployed program computes gross, fee, and net amounts per flow and pool kind\"\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`,code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Tip}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Tip)_missingMdxReference(`Tip`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`Fees are collected strictly on-chain by the shield-pool program into the mint-scoped treasury\nPDA, using the fixed and variable fee stored in each pool’s `,_jsx(_components.code,{children:`PoolConfig`}),`. No other component\nassesses or deducts fees.`]}),`\n`,_jsxs(_components.p,{children:[`Fees apply `,_jsx(_components.strong,{children:`only to flows that move value out of the pool`}),` (`,_jsx(_components.code,{children:`publicAmount \u003c 0`}),`: withdrawals and\nswaps). Deposits and shield-to-shield transfers charge no fee.`]}),`\n`,_jsx(Heading,{level:`2`,id:`constants`,children:`Constants`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`SOL pool fixed fee: `,_jsx(_components.code,{children:`5_000_000`}),` lamports (`,_jsx(_components.code,{children:`0.005 SOL`}),`)`]}),`\n`,_jsxs(_components.li,{children:[`SPL pool fixed fee (USDC/USDT): `,_jsx(_components.code,{children:`450_000`}),` base units (`,_jsx(_components.code,{children:`0.45 USDC`}),` / `,_jsx(_components.code,{children:`0.45 USDT`}),`), charged in\nthe withdrawn token`]}),`\n`,_jsxs(_components.li,{children:[`Variable fee (all pools): `,_jsx(_components.code,{children:`gross * 3 / 1000`}),` (0.30%)`]}),`\n`,_jsxs(_components.li,{children:[`Minimum deposit: `,_jsx(_components.code,{children:`10_000_000`}),` lamports (`,_jsx(_components.code,{children:`0.01 SOL`}),`) on the SOL pool; `,_jsx(_components.code,{children:`1_000_000`}),` base units\n(`,_jsx(_components.code,{children:`1.00 USDC`}),` / `,_jsx(_components.code,{children:`1.00 USDT`}),`) on the SPL pools`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`per-flow-behavior`,children:`Per-flow behavior`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsxs(_components.strong,{children:[`Deposit (`,_jsx(_components.code,{children:`publicAmount > 0`}),`)`]}),`: no fee. The full deposit amount moves into the pool and the\noutput commitments encode the full amount.`]}),`\n`,_jsxs(_components.li,{children:[_jsxs(_components.strong,{children:[`Shield-to-shield transfer (`,_jsx(_components.code,{children:`publicAmount = 0`}),`)`]}),`: no fee. No external value moves; the output\ncommitments sum to the inputs.`]}),`\n`,_jsxs(_components.li,{children:[_jsxs(_components.strong,{children:[`Withdrawal (`,_jsx(_components.code,{children:`publicAmount \u003c 0`}),`)`]}),`: the destination receives `,_jsx(_components.code,{children:`net = gross - fee`}),`; the treasury\nPDA receives `,_jsx(_components.code,{children:`fee`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsxs(_components.strong,{children:[`Swap (`,_jsx(_components.code,{children:`TransactSwap`}),`, SOL pool only)`]}),`: `,_jsx(_components.code,{children:`fee = fixed + variable`}),` is taken from the gross SOL\nat the first transaction; the remainder (`,_jsx(_components.code,{children:`gross - fee`}),`) is what gets swapped.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`fee-math`,children:`Fee math`}),`\n`,_jsx(_components.p,{children:`SOL pool (withdraw/swap):`}),`\n`,_jsx(CodeBlock,{numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`fee = 5_000_000 + gross * 3 / 1000`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(_components.p,{children:`SPL pools (withdraw):`}),`\n`,_jsx(CodeBlock,{numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`fee = 450_000 + gross * 3 / 1000`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(Heading,{level:`2`,id:`worked-examples`,children:`Worked examples`}),`\n`,_jsxs(_components.p,{children:[`Withdraw `,_jsx(_components.code,{children:`1 SOL`}),` (`,_jsx(_components.code,{children:`1_000_000_000`}),` lamports) gross:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Fixed: `,_jsx(_components.code,{children:`5_000_000`}),` lamports`]}),`\n`,_jsxs(_components.li,{children:[`Variable: `,_jsx(_components.code,{children:`1_000_000_000 * 3 / 1000 = 3_000_000`}),` lamports`]}),`\n`,_jsxs(_components.li,{children:[`Fee: `,_jsx(_components.code,{children:`8_000_000`}),` lamports — net to recipient: `,_jsx(_components.code,{children:`992_000_000`}),` lamports`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`Withdraw `,_jsx(_components.code,{children:`100 USDC`}),` (`,_jsx(_components.code,{children:`100_000_000`}),` base units) gross:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Fixed: `,_jsx(_components.code,{children:`450_000`}),` base units (`,_jsx(_components.code,{children:`0.45 USDC`}),`)`]}),`\n`,_jsxs(_components.li,{children:[`Variable: `,_jsx(_components.code,{children:`100_000_000 * 3 / 1000 = 300_000`}),` base units (`,_jsx(_components.code,{children:`0.30 USDC`}),`)`]}),`\n`,_jsxs(_components.li,{children:[`Fee: `,_jsx(_components.code,{children:`750_000`}),` base units (`,_jsx(_components.code,{children:`0.75 USDC`}),`) — net to recipient: `,_jsx(_components.code,{children:`99_250_000`}),` base units`]}),`\n`]}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`The Cloak app presents this in reverse: the user enters what the recipient should receive, and\nthe app grosses up so `,_jsx(_components.code,{children:`net`}),` equals the entered amount. At the program level the invariant is\nalways `,_jsx(_components.code,{children:`net = gross - fee`}),`.`]})}),`\n`,_jsxs(_components.p,{children:[`For a user-facing summary with a who-pays table, see `,_jsx(_components.a,{href:`/guide/fees`,children:`Fees`}),`.`]})]})}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":{"config":{},"pageMetadata":{"title":"Fee Model","description":"How the deployed program computes gross, fee, and net amounts per flow and pool kind","icon":"receipt","href":"/protocol/fee-model"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Constants","slug":"constants","depth":2,"children":[]},{"title":"Per-flow behavior","slug":"per-flow-behavior","depth":2,"children":[]},{"title":"Fee math","slug":"fee-math","depth":2,"children":[]},{"title":"Worked examples","slug":"worked-examples","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"cloak","siteName":"Cloak Documentation","title":"Fee Model - Cloak Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-19T02:07:46.969Z","originalFileLocation":"protocol/fee-model.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=\"system\"}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=\"How the deployed program computes gross, fee, and net amounts per flow and pool kind\">\u003cmeta data-mint-head name=\"application-name\" content=\"Cloak 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/cloak/IpqEVrAzuoUc5yhO/_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/cloak/IpqEVrAzuoUc5yhO/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/cloak/IpqEVrAzuoUc5yhO/_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/cloak/IpqEVrAzuoUc5yhO/_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/cloak/IpqEVrAzuoUc5yhO/_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/cloak/IpqEVrAzuoUc5yhO/_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/cloak/IpqEVrAzuoUc5yhO/_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/cloak/IpqEVrAzuoUc5yhO/_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/cloak/IpqEVrAzuoUc5yhO/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Fee Model - Cloak Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"How the deployed program computes gross, fee, and net amounts per flow and pool kind\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Cloak Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.cloak.ag/protocol/fee-model\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://cloak.mintlify.site/_mintlify/api/og/v2?division=Programs\u0026amp;title=Fee+Model\u0026amp;description=How+the+deployed+program+computes+gross%2C+fee%2C+and+net+amounts+per+flow+and+pool+kind\u0026amp;theme=2feb79f6e533c758e409f03b\u0026amp;signature=421e0f3d41fdf5ee88dca81e20fb2f9b4bc5ac925c50fd1d398dd43c1106ce27\">\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=\"Fee Model - Cloak Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"How the deployed program computes gross, fee, and net amounts per flow and pool kind\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://cloak.mintlify.site/_mintlify/api/og/v2?division=Programs\u0026amp;title=Fee+Model\u0026amp;description=How+the+deployed+program+computes+gross%2C+fee%2C+and+net+amounts+per+flow+and+pool+kind\u0026amp;theme=2feb79f6e533c758e409f03b\u0026amp;signature=421e0f3d41fdf5ee88dca81e20fb2f9b4bc5ac925c50fd1d398dd43c1106ce27\">\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/cloak/IpqEVrAzuoUc5yhO/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Cloak Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#6366F1\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.cloak.ag/protocol/fee-model\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/protocol/fee-model.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.cloak.ag/#organization\",\"name\":\"Cloak Documentation\",\"url\":\"https://docs.cloak.ag\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/cloak/r0L-ODeES1X_5cwS/logo/light.svg?fit=max\u0026auto=format\u0026n=r0L-ODeES1X_5cwS\u0026q=85\u0026s=5954e67549c08881ba79e740af1cfcbb\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.cloak.ag#website\",\"name\":\"Cloak Documentation\",\"url\":\"https://docs.cloak.ag\",\"publisher\":{\"@id\":\"https://docs.cloak.ag/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.cloak.ag/protocol/fee-model#webpage\",\"url\":\"https://docs.cloak.ag/protocol/fee-model\",\"name\":\"Fee Model\",\"description\":\"How the deployed program computes gross, fee, and net amounts per flow and pool kind\",\"dateModified\":\"2026-09-19T02:07:46.969Z\",\"isPartOf\":{\"@id\":\"https://docs.cloak.ag#website\"},\"breadcrumb\":{\"@id\":\"https://docs.cloak.ag/protocol/fee-model#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.cloak.ag/protocol/fee-model#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Programs\",\"item\":\"https://docs.cloak.ag/protocol/architecture\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Fee Model\",\"item\":\"https://docs.cloak.ag/protocol/fee-model\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.cloak.ag/protocol/fee-model#article\",\"headline\":\"Fee Model\",\"name\":\"Fee Model\",\"description\":\"How the deployed program computes gross, fee, and net amounts per flow and pool kind\",\"url\":\"https://docs.cloak.ag/protocol/fee-model\",\"mainEntityOfPage\":{\"@id\":\"https://docs.cloak.ag/protocol/fee-model#webpage\"},\"dateModified\":\"2026-09-19T02:07:46.969Z\",\"publisher\":{\"@id\":\"https://docs.cloak.ag/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.cloak.ag#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Cloak Documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Cloak Documentation","nav":{"global":{"anchors":[{"anchor":"GitHub","icon":"github","href":"https://github.com/cloak-ag/sdk"},{"anchor":"NPM","icon":"npm","href":"https://www.npmjs.com/package/@cloak.dev/sdk"},{"anchor":"Telegram","icon":"telegram","href":"https://t.me/cloak_community"}]},"tabs":[{"tab":"Guide","pages":[{"title":"Guide","href":"/guide/what-is-cloak"}]},{"tab":"Documentation","groups":[{"group":"Getting Started","pages":[{"title":"Platform Overview","icon":"compass","href":"/platform/overview"},{"title":"Cloak SDK","icon":"shield-halved","href":"/sdk/introduction"}]},{"group":"Platform","pages":[{"title":"Platform Components","icon":"cubes-stacked","href":"/platform/components"},{"title":"Transaction Flows","icon":"shuffle","href":"/platform/transaction-flows"},{"title":"Viewing Keys and Compliance","icon":"key","href":"/architecture/viewing-keys-compliance"}]},{"group":"SDK","pages":[{"title":"Quickstart","icon":"rocket","href":"/sdk/quickstart"},{"title":"Request authentication","icon":"signature","href":"/sdk/request-authentication"},{"title":"Code Examples","icon":"code-branch","href":"/sdk/examples"},{"title":"Solana Kit integration","icon":"plug","href":"/sdk/kit-integration"},{"title":"Core concepts","icon":"lightbulb","href":"/sdk/core-concepts"},{"title":"UTXO Transactions","icon":"vault","href":"/sdk/utxo-transactions"},{"title":"Batch signing","icon":"layer-group","href":"/sdk/batch-signing"},{"title":"Shielded transfers","icon":"shuffle","href":"/sdk/shielded-transfers"},{"title":"Bridging in","icon":"bridge","href":"/sdk/bridge"},{"title":"Wallet integration","icon":"wallet","href":"/sdk/wallet-integration"},{"title":"Error handling","icon":"triangle-exclamation","href":"/sdk/error-handling"},{"title":"API reference","icon":"code","href":"/sdk/api-reference"}]},{"group":"Programs","pages":[{"title":"Protocol Architecture","icon":"diagram-project","href":"/protocol/architecture"},{"title":"Shield Pool Program","description":"Program behavior that SDK and app integrators need to know","icon":"microchip","href":"/protocol/shield-pool"},{"title":"Fee Model","icon":"receipt","href":"/protocol/fee-model"}]},{"group":"Packages","pages":[{"title":"Circuits","description":"The transaction circuit the deployed program is keyed to, and the published artifacts you can verify","icon":"file-code","href":"/packages/circuits"}]},{"group":"Releases","pages":[{"title":"Release notes","icon":"rocket","href":"/releases/latest"}]},{"group":"Operations","pages":[{"title":"Security","icon":"shield-check","href":"/operations/security"}]}]},{"tab":"AI Tools","pages":[{"title":"AI Tools","href":"/ai-tools/ai-integration"}]}]},"basePath":"","title":"Fee Model - Cloak Documentation","buildId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","deploymentId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","dynamics":[],"chunks":[]}