Earn lets a user’s wallet deposit into a yield vault, track what the position is worth, claim reward campaigns, and withdraw. The earn module on the SDK instance wraps the Earn API and signs and broadcasts the transactions it returns. Vaults run on EVM chains and on Solana, and the module executes an action on whichever chain family its payload targets.For how vaults, shares, and yield work, see the Earn overview.Every Earn action returns an unsigned payload. You sign and broadcast it with execute, which sends an EVM payload’s ERC-20 approval first and waits for it to confirm whenever the payload carries one. A Solana payload instead carries an ordered sequence of transactions that execute signs, sends, and confirms one at a time. See Solana vaults.
getVaults returns the vaults your environment can access. getVaultDetails adds the on-chain fields you need to display and transact against one, including assetDecimals.
let vaults = try await earn.getVaults()for vault in vaults { print("\(vault.assetSymbol) by \(vault.curator) on chain \(vault.chainId)") print("Net APY: \(vault.netApy ?? 0), TVL: \(vault.tvlUsd ?? 0)")}guard let vaultId = vaults.first?.vaultId else { return // no vaults enabled for this environment}let vault = try await earn.getVaultDetails(vaultId: vaultId)
netApy and tvlUsd come from live market data on a best-effort basis, so both are nil when that data is unavailable.A wallet can only transact on its own chain family, so filter the list by chainName before showing vaults for a wallet:
let usableVaults = vaults.filter { $0.chainName.rawValue == wallet.chain.uppercased()}
A position holds shares and assets, both in raw token units. Show assets, because it grows as yield accrues. Depending on the vault’s provider, shares either stays flat or always equals assets, so it is not meaningful to show a user.
let position = try await earn.getVaultPosition( vaultId: vault.vaultId, ownerAddress: wallet.address)if let assets = Double(position.assets) { let balance = assets / pow(10.0, Double(vault.assetDecimals)) print("Balance: \(balance) \(vault.assetSymbol)")}
getVaultPerformance returns a wallet’s earnings in one vault: netEarningsAssets and returnOnCapital. Morpho indexes these values rather than reading them on-chain, so they trail the chain head; getVaultPosition stays the live source of truth for what the position is worth right now.
let performance = try await earn.getVaultPerformance( vaultId: vault.vaultId, ownerAddress: wallet.address)print("Net earnings: \(performance.netEarningsAssets) raw units")print("Return on capital: \(performance.returnOnCapital ?? 0)")
netEarningsAssets is a raw token-unit string, so divide it by the vault’s assetDecimals before display, the same way you format a position’s assets. returnOnCapital is a time-weighted, non-annualized decimal (for example 0.00413 means a 0.41% return) and is nil while the position has too little history to compute one.
getVaultPerformance currently supports vaults from these providers: Morpho. For a vault from any other provider, such as an Aave vault, the call throws an EarnError with statusCode 400. Use getVaultPosition to show such a position’s balance, and see Provider support.
getEarnings returns a wallet’s aggregate earnings across every vault it holds on one EVM chain: USD totals plus a per-vault breakdown.
let earnings = try await earn.getEarnings( chainId: 8453, // Base ownerAddress: wallet.address)print("Total PNL: $\(earnings.totalPnlUsd)")for entry in earnings.vaults { if let pnlUsd = entry.pnlUsd { print("\(entry.vaultAddress): $\(pnlUsd)") }}
Totals are USD-only, because per-vault earnings are denominated in different underlying assets. A vault with no USD price is skipped from the totals, not counted as zero. Positions in vaults the environment does not offer are still included, with vaultId set to nil for those entries.Not every provider reports a cost basis for a position. For those vaults, the entry still carries assets and assetsUsd, but pnl, pnlUsd, and roe are nil. Those positions add to totalAssetsUsd and add nothing to totalPnlUsd.
getEarnings covers Morpho and Aave positions on EVM chains. It does not include positions in Solana vaults; read a Solana position with getVaultPosition instead.
Rewards are a separate bonus some vaults pay in another token. They sit unclaimed until you claim them, unlike base yield, which shows up as assets growing.
let rewards = try await earn.getVaultRewards( vaultId: vault.vaultId, ownerAddress: wallet.address)for reward in rewards { print("\(reward.accrued) raw units of \(reward.tokenSymbol)")}
The list is empty when the wallet has accrued nothing in the vault. Rewards are supported only for vaults from some providers. For a vault from any other provider, the API rejects the rewards and claim requests with an HTTP 400 error, which surfaces as an EarnError. See Provider support.
deposit builds the payload, execute sends it. amount is human-readable, so "12.5" deposits 12.5 USDC.
let deposit = try await earn.deposit( vaultId: vault.vaultId, ownerAddress: wallet.address, amount: "12.5")let transactionHash = try await earn.execute( payload: deposit.signingPayload, wallet: wallet, onStepChange: { step in switch step { case .approval: print("Approving the vault to spend the deposit") case .transaction: print("Sending the vault transaction") } })
execute returns the vault transaction hash (the last signature on Solana). When an EVM payload carries an evmApproval, it sends that approval first and waits for its receipt, so onStepChange reports .approval before .transaction. An approval is only requested when the vault needs an allowance it does not already have.To send the shares to a different wallet, set receiverAddress on the request. It defaults to ownerAddress.
do { let claim = try await earn.claim( vaultId: vault.vaultId, ownerAddress: wallet.address ) let transactionHash = try await earn.execute( payload: claim.signingPayload, wallet: wallet )} catch let error as EarnError where error.nothingToClaim { print("Nothing to claim in this vault")}
A Solana vault action is split into up to three transactions, such as the deposit itself and a step that stakes the deposited shares in the vault’s farm. execute signs, sends, and confirms them one at a time in ordinal order, because a later transaction can depend on the state an earlier one wrote. onTransactionStepChange reports each transaction’s position and label as it begins:
let transactionHash = try await earn.execute( payload: deposit.signingPayload, wallet: solanaWallet, onTransactionStepChange: { step in print("Transaction \(step.ordinal + 1) of \(step.total): \(step.label ?? "")") })
All of an action’s transactions are built against the same blockhash, which stays valid only briefly. If the user takes too long to approve, the remaining transactions expire and execute throws an EarnSolanaStepError. When a later transaction fails or expires, the earlier ones have already confirmed on-chain, so read the wallet’s position with getVaultPosition before retrying. Repeating the whole action could apply the earlier steps twice. See Solana vaults in the Earn overview.
On EVM, a sponsored execution batches the ERC-20 approval and the vault call into one gasless transaction. On Solana, sponsorship works through SVM Gas Sponsorship; see SVM Gas Sponsorship for how to enable it. Note that an unset sponsored sponsors a Solana action when SVM Gas Sponsorship is enabled, which differs from the JavaScript SDK, where a Solana vault action is wallet-paid unless sponsored is true.
Amounts cross the wire as strings in two different units:
The amount parameter on deposit and withdraw is human-readable: "12.5" means 12.5 USDC.
EarnVaultPosition, EarnVaultReward, and the amounts inside a signing payload are raw token units. They can exceed Int.max, so they stay strings; convert a position or payload amount with the vault’s assetDecimals, and a reward amount with the reward’s own tokenDecimals, before display.
Mixing the two units up silently transacts the wrong value. Human-readable amounts also need a
leading zero: "0.01" works, ".01" is rejected by the API.
Every failed Earn call throws an EarnError carrying the HTTP statusCode:
Condition
What it means
statusCode 403
Earn is not enabled for your environment
nothingToClaim (422 on claim)
The wallet has no claimable rewards in the vault
statusCode 400
The vault’s provider does not support the request, such as rewards
Other status codes
The API rejected the request, for example an invalid amount or address
do { let vaults = try await earn.getVaults()} catch let error as EarnError { print("Earn failed (\(error.statusCode ?? 0)): \(error.message)")}
execute throws an EarnError when the wallet’s chain does not match the payload’s chain family, when the payload carries no transaction, or when an approval reverts or is not confirmed in time. Two error types are specific to execution:
EarnSolanaStepError carries the ordinal and total of the Solana transaction that stopped and a code of expired, failed, or sendFailed. Transactions before it already confirmed, so check the position before retrying.
EarnSponsorError means sponsored: true was required but sponsorship was unavailable or the sponsored transaction failed.
{"docsConfig":{"theme":"aspen","$schema":"https://mintlify.com/docs.json","name":"Dynamic","colors":{"primary":"#4779FF","light":"#A0BFFF","dark":"#69A5FF"},"logo":{"light":"https://mintcdn.com/dynamic-docs-testing/CXYm3HK725eun9ev/logo/dynamic-fireblocks-icon-light.svg?fit=max\u0026auto=format\u0026n=CXYm3HK725eun9ev\u0026q=85\u0026s=c050cd8c41715aa71119f91c19221cb3","dark":"https://mintcdn.com/dynamic-docs-testing/CXYm3HK725eun9ev/logo/dynamic-fireblocks-icon-dark.svg?fit=max\u0026auto=format\u0026n=CXYm3HK725eun9ev\u0026q=85\u0026s=434fa110e5847b7a23adc1abd636719e"},"favicon":"https://mintcdn.com/dynamic-docs-testing/C-CltRmvvkSqoMFQ/assets/favicon.png?fit=max\u0026auto=format\u0026n=C-CltRmvvkSqoMFQ\u0026q=85\u0026s=2bbf17fee49c1d60434f1fd77a2d8f38","api":{"mdx":{"auth":{"method":"bearer"}}},"background":{"image":"https://mintcdn.com/dynamic-docs-testing/C-CltRmvvkSqoMFQ/assets/images/general/background-image.png?fit=max\u0026auto=format\u0026n=C-CltRmvvkSqoMFQ\u0026q=85\u0026s=67a354a23840d92de3d1cb25c24ff27c","decoration":"gradient"},"navbar":{"links":[{"href":"https://www.dynamic.xyz/get-started","label":"Start Free"}],"primary":{"type":"button","label":"See it in action","href":"https://demo.dynamic.xyz/"}},"footer":{"socials":{"x":"https://x.com/dynamic_xyz","linkedin":"https://www.linkedin.com/company/dynamiclabs","slack":"https://www.dynamic.xyz/join-slack"}},"styling":{"eyebrows":"breadcrumbs","codeblocks":"system","latex":true},"integrations":{"gtm":{"tagId":"GTM-K9NXSDK"},"cookies":{"key":"dynamic-docs-cookie-consent","value":"accepted"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"metadata":{"timestamp":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"dynamic-docs-testing","hasAudioNarration":false,"actualSubdomain":"dynamic-docs-testing","customDomains":["www.dynamic.xyz"],"gitSource":{"type":"github","owner":"dynamic-labs","repo":"documentation","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6aeca4c6754501e0c6b682aa","collectionId":"ea23aa8b-d710-42bc-b27c-e7fa0a546b58","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6aeca4c6754501e0c6b682aa"},"feedback":{"thumbs":true,"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6aeca4c6754501e0c6b682aa","clientVersion":"0.0.4067","searchFilterCounts":[{"language":"default","tag":"Reference","count":1964},{"language":"default","tag":"REST API","count":1181},{"language":"default","tag":"Schemas","count":636},{"language":"default","tag":"Endpoints","count":541},{"language":"default","tag":"Javascript, React \u0026 React Native","count":307},{"language":"default","tag":"Legacy React","count":287},{"language":"default","tag":"SDK","count":238},{"language":"default","tag":"JavaScript SDK Reference","count":230},{"language":"default","tag":"Implement","count":212},{"language":"default","tag":"Wallets","count":186}]},"assistantConfig":{},"basePath":"/docs","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":".dynamic-demos-link{position:relative;overflow:hidden;margin:0.5rem 0 2rem;padding:2rem 1.75rem;border-radius:16px;border:1px solid rgba(148, 163, 184, 0.14);background:rgba(148, 163, 184, 0.04);text-align:center}html.dark .dynamic-demos-link{border-color:rgba(148, 163, 184, 0.12);background:rgba(148, 163, 184, 0.03)}.ddl-glow{position:absolute;inset:-40% auto auto 50%;width:28rem;height:28rem;transform:translateX(-50%);border-radius:50%;background:radial-gradient(circle, rgba(71, 121, 255, 0.18), transparent 70%);pointer-events:none}html.dark .ddl-glow{background:radial-gradient(circle, rgba(71, 121, 255, 0.22), transparent 70%)}.ddl-content{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;max-width:32rem;margin:0 auto}.ddl-icon{display:inline-flex;align-items:center;justify-content:center;width:3rem;height:3rem;margin-bottom:1rem;border-radius:999px;background:rgba(71, 121, 255, 0.12);color:#4779ff}html.dark .ddl-icon{background:rgba(71, 121, 255, 0.18);color:#93b4ff}.ddl-icon svg{width:1.25rem;height:1.25rem}.ddl-title{margin:0 0 0.65rem;font-size:1.5rem;font-weight:700;line-height:1.25;letter-spacing:-0.02em;color:#0f172a}html.dark .ddl-title{color:#f1f5f9}.ddl-copy{margin:0 0 1.35rem;font-size:1rem;line-height:1.65;color:#64748b}html.dark .ddl-copy{color:#94a3b8}.ddl-copy strong{color:#4779ff;font-weight:600}html.dark .ddl-copy strong{color:#93b4ff}.ddl-button{display:inline-flex;align-items:center;gap:0.45rem;padding:0.75rem 1.15rem;border-radius:10px;background:#4779ff;color:#fff;font-size:0.95rem;font-weight:600;line-height:1;text-decoration:none;transition:background-color 160ms cubic-bezier(0.2, 0, 0, 1),\n transform 160ms cubic-bezier(0.2, 0, 0, 1)}.ddl-button:hover{background:#2f5fe0;transform:translateY(-1px)}.ddl-button:focus-visible{outline:2px solid #4779ff;outline-offset:3px}.ddl-button-icon{width:1rem;height:1rem}@media (prefers-reduced-motion: reduce){.ddl-button{transition:none}.ddl-button:hover{transform:none}}.welcome-section{padding:1.3rem 1.5rem 0;border-radius:14px;border:1px solid rgba(148, 163, 184, 0.12);background:rgba(148, 163, 184, 0.04);margin-bottom:2rem}html.dark .welcome-section{border-color:rgba(148, 163, 184, 0.1);background:rgba(148, 163, 184, 0.03)}.welcome-word-rotator{margin:0 0 1rem;padding:0 0 1rem;border-bottom:1px dashed rgba(148, 163, 184, 0.2)}html.dark .welcome-word-rotator{border-bottom-color:rgba(148, 163, 184, 0.15)}.welcome-section h3{margin-top:1.75rem;margin-bottom:-1rem}.wwr-title{margin:0;font-size:2rem;font-weight:700;line-height:1.3;letter-spacing:-0.02em;color:#0f172a}html.dark .wwr-title{color:#f1f5f9}.wwr-line{display:block}.wwr-line+.wwr-line{margin-top:0.1rem}.wwr-word{white-space:nowrap}.wwr-char{display:inline-block;will-change:transform, opacity, filter;transform-style:preserve-3d;backface-visibility:hidden}.wwr-accent{color:#4779ff;font-weight:550;perspective:400px}html.dark .wwr-accent{color:#93b4ff}#banner{background-color:#4779ff}.event-hero{margin:0 0 1.5rem}.event-hero-banner{width:100%;height:auto;display:block;border-radius:14px;box-shadow:0 10px 32px rgba(15, 23, 42, 0.22)}.event-hero-meta{display:flex;flex-wrap:wrap;gap:0.5rem;margin-top:0.9rem}.event-tag{display:inline-flex;align-items:center;gap:0.4rem;padding:0.35rem 0.85rem;border-radius:999px;font-size:0.85rem;font-weight:600;color:#2f5fe0;background:rgba(71, 121, 255, 0.12);border:1px solid rgba(71, 121, 255, 0.25)}html.dark .event-tag{color:#93b4ff;background:rgba(71, 121, 255, 0.16);border-color:rgba(71, 121, 255, 0.32)}@media (min-width: 768px){.nav-logo{height:2.25rem!important;max-width:18rem!important}}.mcp-install-button{pointer-events:none!important;user-select:none!important;-webkit-user-select:none!important;-moz-user-select:none!important;-ms-user-select:none!important}.before\\:bg-background-light::before,.chat-assistant-floating-input::before{content:none!important;display:none!important;background:none!important;background-color:transparent!important;height:0!important}.rn-qs-dark{display:none}.rn-qs-light{display:block}html.dark .rn-qs-dark{display:block}html.dark .rn-qs-light{display:none}html.light .rn-qs-dark{display:none}html.light .rn-qs-light{display:block}.llm-copy-btn{display:inline-flex;align-items:center;gap:6px;margin-bottom:12px;padding:7px 14px;background-color:#4779ff;color:#fff;font-size:13px;font-weight:500;border:none;border-radius:6px;cursor:pointer;transition:background-color 0.15s ease, opacity 0.15s ease}.llm-copy-btn:hover{background-color:#2f5fe0}.llm-copy-btn--copied{background-color:#16a34a}.llm-copy-btn--copied:hover{background-color:#15803d}html.dark{--ds-bg: #0c0e13;--ds-elevated: #1b1d22;--ds-border: #282b33;--ds-text: #ececec;--ds-muted: #6f7177;--ds-subtitle: #8f93ab;--ds-primary: #5c89ff}html.light{--ds-bg: #ffffff;--ds-elevated: #fafafb;--ds-border: #e9ecf2;--ds-text: #26272e;--ds-muted: #5f6478;--ds-subtitle: #8f93ab;--ds-primary: #5c89ff}html:is(.light,.dark) .DocSearch-Container,html:is(.light,.dark) .DocSearch-Modal{--docsearch-primary-color: var(--ds-primary);--docsearch-highlight-color: var(--ds-primary);--docsearch-logo-color: var(--ds-muted);--docsearch-text-color: var(--ds-text);--docsearch-muted-color: var(--ds-muted);--docsearch-hit-color: var(--ds-text);--docsearch-hit-active-color: var(--ds-text);--docsearch-container-background: rgb(0 0 0 / 0.6);--docsearch-modal-background: var(--ds-bg);--docsearch-searchbox-background: transparent;--docsearch-searchbox-focus-background: transparent;--docsearch-hit-background: transparent;--docsearch-footer-background: var(--ds-bg);--docsearch-modal-shadow: 0 4px 8px -6px rgb(24 39 75 / 0.02),\n 0 8px 24px -4px rgb(24 39 75 / 0.05),\n 0 0 0 1px var(--ds-border);--docsearch-hit-shadow: none;--docsearch-footer-shadow: 0 -1px 0 0 var(--ds-border);--docsearch-searchbox-shadow: none;--docsearch-key-gradient: var(--ds-bg);--docsearch-key-shadow: inset 0 0 0 1px var(--ds-border),\n 0 2px 0 0 var(--ds-border);--docsearch-key-pressed-shadow: inset 0 0 0 1px var(--ds-border),\n 0 1px 0 0 var(--ds-border);--docsearch-hit-height: auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}html:is(.light,.dark) .DocSearch-Modal{max-width:558px;height:auto;max-height:min(80vh, 720px);border-radius:12px;overflow:hidden}html:is(.light,.dark) .DocSearch-Dropdown{height:auto;padding:12px 16px;max-height:calc(min(80vh, 720px) - 56px - 54px)}html:is(.light,.dark) .DocSearch-Dropdown-Container{display:flex;flex-direction:column;gap:17px}html:is(.light,.dark) .DocSearch-Hits ul{display:flex;flex-direction:column;gap:2px}html:is(.light,.dark) .DocSearch-SearchBar{padding:12px;border-bottom:1px solid var(--ds-border)}html:is(.light,.dark) .DocSearch-SearchBar:has(.DocSearch-Input:not(:placeholder-shown)){background:var(--ds-elevated)}html:is(.light,.dark) .DocSearch-Form{height:auto;padding:0;gap:8px;background:transparent;box-shadow:none}html:is(.light,.dark) .DocSearch-Input{padding:0;font-size:14px;font-weight:400;line-height:20px;color:var(--ds-text)}html:is(.light,.dark) .DocSearch-Input::placeholder{color:var(--ds-muted);opacity:1}html:is(.light,.dark) .DocSearch-Hit-source{height:auto;margin:0 0 6px;padding:0;background:transparent;font-size:12px;font-weight:500;line-height:18px;letter-spacing:0;text-transform:none;color:var(--ds-primary)}html:is(.light,.dark) .DocSearch-Hit{height:auto;padding:0}html:is(.light,.dark) .DocSearch-Hit a{height:54px;padding:8px 10px;border:1px solid transparent;border-radius:8px;background:transparent;display:flex;align-items:center;transition-property:background-color, border-color;transition-duration:120ms;transition-timing-function:cubic-bezier(0.2, 0, 0, 1)}html:is(.light,.dark) .DocSearch-Hit[aria-selected=\"true\"] a{background:var(--ds-elevated);border-color:var(--ds-border)}html:is(.light,.dark) .DocSearch-Hit-Container{display:flex;align-items:center;width:100%;height:auto;min-height:0;gap:8px}html:is(.light,.dark) .DocSearch-Hit-content-wrapper{flex:1 1 auto;min-width:0}html:is(.light,.dark) .DocSearch-Hit-action{margin-left:auto;flex-shrink:0}html:is(.light,.dark) .DocSearch-Hit-title{font-size:14px;font-weight:500;line-height:20px;color:var(--ds-text)}html:is(.light,.dark) .DocSearch-Hit-path{font-size:12px;font-weight:400;line-height:18px;color:var(--ds-muted)}html:is(.light,.dark) .DocSearch-Hit[aria-selected=\"true\"] .DocSearch-Hit-path{color:var(--ds-subtitle)}html:is(.light,.dark) .DocSearch-Hit--Result.DocSearch-Hit--Lvl1 .DocSearch-Hit-title,html:is(.light,.dark) .DocSearch-Hit--Result.DocSearch-Hit--Child .DocSearch-Hit-title,html:is(.light,.dark) .DocSearch-Hit[aria-selected=\"true\"] .DocSearch-Hit-title,html:is(.light,.dark) .DocSearch-Hit[aria-selected=\"true\"] mark{color:var(--ds-primary)}html:is(.light,.dark) .DocSearch-Hit-action{display:none}html:is(.light,.dark) .DocSearch-Hit[aria-selected=\"true\"] .DocSearch-Hit-action{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;padding:2px;border-radius:4px;background:var(--ds-bg);box-shadow:inset 0 0 0 1px var(--ds-border),\n 0 2px 0 0 var(--ds-border);flex-shrink:0}html:is(.light,.dark) .DocSearch-Footer{height:auto;padding:16px;background:var(--ds-bg);border-top:1px solid var(--ds-border);border-radius:0 0 12px 12px;box-shadow:none}html:is(.light,.dark) .DocSearch-Commands{gap:20px}html:is(.light,.dark) .DocSearch-Commands li{gap:6px}html:is(.light,.dark) .DocSearch-Commands-Key{position:relative;width:22px;height:22px;min-width:22px;margin:0;padding:2px;border-radius:4px;display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:500;color:var(--ds-muted)}html:is(.light,.dark) .DocSearch-Label{font-size:14px;font-weight:400;line-height:20px;color:var(--ds-muted)}html:is(.light,.dark) .DocSearch-Logo a>*{display:none}html:is(.light,.dark) .DocSearch-Logo a{font-size:11px;font-weight:400;line-height:1;color:var(--ds-muted);text-decoration:none;border-radius:2px;opacity:0.6;transition-property:opacity;transition-duration:150ms;transition-timing-function:cubic-bezier(0.2, 0, 0, 1)}html:is(.light,.dark) .DocSearch-Logo a::before{content:'Search by Algolia'}html:is(.light,.dark) .DocSearch-MagnifierLabel>*,html:is(.light,.dark) .DocSearch-Reset>*,html:is(.light,.dark) .DocSearch-Hit-icon>*,html:is(.light,.dark) .DocSearch-Hit-action>*{display:none!important}html:is(.light,.dark) .DocSearch-Commands li:nth-child(1) .DocSearch-Commands-Key>*,html:is(.light,.dark) .DocSearch-Commands li:nth-child(2) .DocSearch-Commands-Key>*{display:none!important}html:is(.light,.dark) .DocSearch-Hit-Tree,html:is(.light,.dark) .DocSearch-Hit-action-button,html:is(.light,.dark) .DocSearch-Hit-action~.DocSearch-Hit-action{display:none!important}html:is(.light,.dark) .DocSearch-MagnifierLabel,html:is(.light,.dark) .DocSearch-Reset,html:is(.light,.dark) .DocSearch-Hit-icon{display:inline-block;width:16px;height:16px;padding:0;background-color:var(--ds-muted);-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}html:is(.light,.dark) .DocSearch-MagnifierLabel{-webkit-mask-image:url(\"data:image/svg+xml;base64,PHN2ZyBjbGFzcz0ibHVjaWRlIGx1Y2lkZS1zZWFyY2giIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iYmxhY2siIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiA+IDxwYXRoIGQ9Im0yMSAyMS00LjM0LTQuMzQiIC8+IDxjaXJjbGUgY3g9IjExIiBjeT0iMTEiIHI9IjgiIC8+IDwvc3ZnPg==\");mask-image:url(\"data:image/svg+xml;base64,PHN2ZyBjbGFzcz0ibHVjaWRlIGx1Y2lkZS1zZWFyY2giIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iYmxhY2siIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiA+IDxwYXRoIGQ9Im0yMSAyMS00LjM0LTQuMzQiIC8+IDxjaXJjbGUgY3g9IjExIiBjeT0iMTEiIHI9IjgiIC8+IDwvc3ZnPg==\")}html:is(.light,.dark) .DocSearch-Reset{position:relative;width:16px;height:16px;border:0;border-radius:2px;cursor:pointer;transition-property:transform, opacity;transition-duration:100ms;transition-timing-function:cubic-bezier(0.2, 0, 0, 1);-webkit-mask-image:url(\"data:image/svg+xml;base64,PHN2ZyBjbGFzcz0ibHVjaWRlIGx1Y2lkZS14IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImJsYWNrIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgPiA8cGF0aCBkPSJNMTggNiA2IDE4IiAvPiA8cGF0aCBkPSJtNiA2IDEyIDEyIiAvPiA8L3N2Zz4=\");mask-image:url(\"data:image/svg+xml;base64,PHN2ZyBjbGFzcz0ibHVjaWRlIGx1Y2lkZS14IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImJsYWNrIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgPiA8cGF0aCBkPSJNMTggNiA2IDE4IiAvPiA8cGF0aCBkPSJtNiA2IDEyIDEyIiAvPiA8L3N2Zz4=\")}html:is(.light,.dark) .DocSearch-Reset[hidden]{display:none}html:is(.light,.dark) .DocSearch-Reset::after{content:'';position:absolute;inset:-12px}html:is(.light,.dark) .DocSearch-Hit-icon{-webkit-mask-image:url(\"data:image/svg+xml;base64,PHN2ZyBjbGFzcz0ibHVjaWRlIGx1Y2lkZS1maWxlLXRleHQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iYmxhY2siIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiA+IDxwYXRoIGQ9Ik02IDIyYTIgMiAwIDAgMS0yLTJWNGEyIDIgMCAwIDEgMi0yaDhhMi40IDIuNCAwIDAgMSAxLjcwNC43MDZsMy41ODggMy41ODhBMi40IDIuNCAwIDAgMSAyMCA4djEyYTIgMiAwIDAgMS0yIDJ6IiAvPiA8cGF0aCBkPSJNMTQgMnY1YTEgMSAwIDAgMCAxIDFoNSIgLz4gPHBhdGggZD0iTTEwIDlIOCIgLz4gPHBhdGggZD0iTTE2IDEzSDgiIC8+IDxwYXRoIGQ9Ik0xNiAxN0g4IiAvPiA8L3N2Zz4=\");mask-image:url(\"data:image/svg+xml;base64,PHN2ZyBjbGFzcz0ibHVjaWRlIGx1Y2lkZS1maWxlLXRleHQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iYmxhY2siIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiA+IDxwYXRoIGQ9Ik02IDIyYTIgMiAwIDAgMS0yLTJWNGEyIDIgMCAwIDEgMi0yaDhhMi40IDIuNCAwIDAgMSAxLjcwNC43MDZsMy41ODggMy41ODhBMi40IDIuNCAwIDAgMSAyMCA4djEyYTIgMiAwIDAgMS0yIDJ6IiAvPiA8cGF0aCBkPSJNMTQgMnY1YTEgMSAwIDAgMCAxIDFoNSIgLz4gPHBhdGggZD0iTTEwIDlIOCIgLz4gPHBhdGggZD0iTTE2IDEzSDgiIC8+IDxwYXRoIGQ9Ik0xNiAxN0g4IiAvPiA8L3N2Zz4=\")}html:is(.light,.dark) .DocSearch-Hit--Result.DocSearch-Hit--Lvl1 .DocSearch-Hit-icon,html:is(.light,.dark) .DocSearch-Hit--Result.DocSearch-Hit--Child .DocSearch-Hit-icon{-webkit-mask-image:url(\"data:image/svg+xml;base64,PHN2ZyBjbGFzcz0ibHVjaWRlIGx1Y2lkZS1oYXNoIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImJsYWNrIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgPiA8bGluZSB4MT0iNCIgeDI9IjIwIiB5MT0iOSIgeTI9IjkiIC8+IDxsaW5lIHgxPSI0IiB4Mj0iMjAiIHkxPSIxNSIgeTI9IjE1IiAvPiA8bGluZSB4MT0iMTAiIHgyPSI4IiB5MT0iMyIgeTI9IjIxIiAvPiA8bGluZSB4MT0iMTYiIHgyPSIxNCIgeTE9IjMiIHkyPSIyMSIgLz4gPC9zdmc+\");mask-image:url(\"data:image/svg+xml;base64,PHN2ZyBjbGFzcz0ibHVjaWRlIGx1Y2lkZS1oYXNoIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImJsYWNrIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgPiA8bGluZSB4MT0iNCIgeDI9IjIwIiB5MT0iOSIgeTI9IjkiIC8+IDxsaW5lIHgxPSI0IiB4Mj0iMjAiIHkxPSIxNSIgeTI9IjE1IiAvPiA8bGluZSB4MT0iMTAiIHgyPSI4IiB5MT0iMyIgeTI9IjIxIiAvPiA8bGluZSB4MT0iMTYiIHgyPSIxNCIgeTE9IjMiIHkyPSIyMSIgLz4gPC9zdmc+\")}html:is(.light,.dark) .DocSearch-Hit[aria-selected=\"true\"] .DocSearch-Hit-icon{background-color:var(--ds-text)}html:is(.light,.dark) .DocSearch-Hit[aria-selected=\"true\"] .DocSearch-Hit-action::before{content:'';width:16px;height:16px;background-color:var(--ds-text);-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-image:url(\"data:image/svg+xml;base64,PHN2ZyBjbGFzcz0ibHVjaWRlIGx1Y2lkZS1jb3JuZXItZG93bi1sZWZ0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImJsYWNrIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgPiA8cGF0aCBkPSJNMjAgNHY3YTQgNCAwIDAgMS00IDRINCIgLz4gPHBhdGggZD0ibTkgMTAtNSA1IDUgNSIgLz4gPC9zdmc+\");mask-image:url(\"data:image/svg+xml;base64,PHN2ZyBjbGFzcz0ibHVjaWRlIGx1Y2lkZS1jb3JuZXItZG93bi1sZWZ0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImJsYWNrIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgPiA8cGF0aCBkPSJNMjAgNHY3YTQgNCAwIDAgMS00IDRINCIgLz4gPHBhdGggZD0ibTkgMTAtNSA1IDUgNSIgLz4gPC9zdmc+\")}html:is(.light,.dark) .DocSearch-Commands li:nth-child(1) .DocSearch-Commands-Key::before,html:is(.light,.dark) .DocSearch-Commands li:nth-child(2) .DocSearch-Commands-Key:nth-child(1)::before,html:is(.light,.dark) .DocSearch-Commands li:nth-child(2) .DocSearch-Commands-Key:nth-child(2)::before{content:'';width:16px;height:16px;background-color:var(--ds-muted);-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}html:is(.light,.dark) .DocSearch-Commands li:nth-child(1) .DocSearch-Commands-Key::before{-webkit-mask-image:url(\"data:image/svg+xml;base64,PHN2ZyBjbGFzcz0ibHVjaWRlIGx1Y2lkZS1jb3JuZXItZG93bi1sZWZ0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImJsYWNrIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgPiA8cGF0aCBkPSJNMjAgNHY3YTQgNCAwIDAgMS00IDRINCIgLz4gPHBhdGggZD0ibTkgMTAtNSA1IDUgNSIgLz4gPC9zdmc+\");mask-image:url(\"data:image/svg+xml;base64,PHN2ZyBjbGFzcz0ibHVjaWRlIGx1Y2lkZS1jb3JuZXItZG93bi1sZWZ0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImJsYWNrIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgPiA8cGF0aCBkPSJNMjAgNHY3YTQgNCAwIDAgMS00IDRINCIgLz4gPHBhdGggZD0ibTkgMTAtNSA1IDUgNSIgLz4gPC9zdmc+\")}html:is(.light,.dark) .DocSearch-Commands li:nth-child(2) .DocSearch-Commands-Key:nth-child(1)::before{-webkit-mask-image:url(\"data:image/svg+xml;utf8,\u003csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'>\u003cpath d='m5 12 7-7 7 7'/>\u003cpath d='M12 19V5'/>\u003c/svg>\");mask-image:url(\"data:image/svg+xml;utf8,\u003csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'>\u003cpath d='m5 12 7-7 7 7'/>\u003cpath d='M12 19V5'/>\u003c/svg>\")}html:is(.light,.dark) .DocSearch-Commands li:nth-child(2) .DocSearch-Commands-Key:nth-child(2)::before{-webkit-mask-image:url(\"data:image/svg+xml;utf8,\u003csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'>\u003cpath d='M12 5v14'/>\u003cpath d='m19 12-7 7-7-7'/>\u003c/svg>\");mask-image:url(\"data:image/svg+xml;utf8,\u003csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'>\u003cpath d='M12 5v14'/>\u003cpath d='m19 12-7 7-7-7'/>\u003c/svg>\")}html:is(.light,.dark) .DocSearch-Reset:focus-visible,html:is(.light,.dark) .DocSearch-Logo a:focus-visible{outline:2px solid var(--ds-primary);outline-offset:4px}html:is(.light,.dark) .DocSearch-Logo a:focus-visible{opacity:1;outline-offset:3px}html:is(.light,.dark) .DocSearch-Reset:active{transform:scale(0.96)}@media (hover: hover){html:is(.light,.dark) .DocSearch-Reset:hover{opacity:0.8}html:is(.light,.dark) .DocSearch-Logo a:hover{opacity:1}}@media (prefers-reduced-motion: reduce){html:is(.light,.dark) .DocSearch-Hit a,html:is(.light,.dark) .DocSearch-Logo a,html:is(.light,.dark) .DocSearch-Reset{transition:none}html:is(.light,.dark) .DocSearch-Reset:active{transform:none}}.nav-tabs{flex:1 1 auto;min-width:0;align-items:center;gap:0.25rem!important;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-ms-overflow-style:none;scroll-padding-inline:0.625rem}.nav-tabs::-webkit-scrollbar{display:none}.nav-tabs-item{flex:0 0 auto}.nav-tabs-item{white-space:nowrap;height:auto;padding:0.375rem 0.625rem;border-radius:0.5rem;gap:0!important;color:#5f6478;transition:background-color 0.15s ease,\n color 0.15s ease}.nav-tabs-item>svg,.nav-tabs-item>div>svg{display:none}.nav-tabs-item>div.absolute{display:none!important}.nav-tabs-item[data-active=\"true\"]{background-color:#edf1fe;color:#2b55c7}.nav-tabs-item:focus-visible{outline:2px solid #4779ff;outline-offset:2px;color:#26272e}html.dark .nav-tabs-item{color:#8f93ab}html.dark .nav-tabs-item:focus-visible{outline-color:#69a5ff;color:#ececec}html.dark .nav-tabs-item[data-active=\"true\"]{background-color:rgb(105 165 255 / 14%);color:#a0bfff}@media (hover: hover){.nav-tabs-item:hover{background-color:#f4f5f8;color:#26272e}.nav-tabs-item[data-active=\"true\"]:hover{background-color:#e4ebfd;color:#2b55c7}html.dark .nav-tabs-item:hover{background-color:#1b1d22;color:#ececec}html.dark .nav-tabs-item[data-active=\"true\"]:hover{background-color:rgb(105 165 255 / 20%);color:#a0bfff}}@media (prefers-reduced-motion: reduce){.nav-tabs-item{transition:none}}div:has(>.nav-tabs){border-bottom:1px solid #e9ecf2}html.dark div:has(>.nav-tabs){border-bottom-color:#282b33}a[href$=\"demo.dynamic.xyz/\"]>span[class*=\"bg-primary-dark\"]{background-color:#2e57d1}@media (hover: hover){a[href$=\"demo.dynamic.xyz/\"]:hover>span[class*=\"bg-primary-dark\"]{background-color:#22409e}}div:has(>.nav-tabs){height:auto!important;padding-block:0.4375rem}#sidebar-content .sidebar-group li:has(>button>div:first-child:not(.flex-1))>ul{margin-left:1.5rem}"}],"page":{"pagePath":"swift/earn","slug":"/swift/earn","pageMetadata":{"title":"Earn","description":"Deposit into yield vaults, track positions, performance and rewards, and withdraw with the Dynamic Swift SDK.","href":"/swift/earn"},"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: \"Deposit into yield vaults, track positions, performance and rewards, and withdraw with the Dynamic Swift SDK.\"\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`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Table,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`2`,id:`overview`,children:`Overview`}),`\n`,_jsxs(_components.p,{children:[`Earn lets a user’s wallet deposit into a yield vault, track what the position is worth, claim reward campaigns, and withdraw. The `,_jsx(_components.code,{children:`earn`}),` module on the SDK instance wraps the Earn API and signs and broadcasts the transactions it returns. Vaults run on EVM chains and on Solana, and the module executes an action on whichever chain family its payload targets.`]}),`\n`,_jsxs(_components.p,{children:[`For how vaults, shares, and yield work, see the `,_jsx(_components.a,{href:`/earn/overview`,children:`Earn overview`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`Every Earn action returns an unsigned payload. You sign and broadcast it with `,_jsx(_components.code,{children:`execute`}),`, which sends an EVM payload’s ERC-20 approval first and waits for it to confirm whenever the payload carries one. A Solana payload instead carries an ordered sequence of transactions that `,_jsx(_components.code,{children:`execute`}),` signs, sends, and confirms one at a time. See `,_jsx(_components.a,{href:`#solana-vaults`,children:`Solana vaults`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`prerequisites`,children:`Prerequisites`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Dynamic SDK initialized (see `,_jsx(_components.a,{href:`/swift/quickstart`,children:`Quickstart`}),`)`]}),`\n`,_jsxs(_components.li,{children:[`User authenticated (see `,_jsx(_components.a,{href:`/swift/authentication`,children:`Authentication`}),`)`]}),`\n`,_jsxs(_components.li,{children:[`A wallet on the vault’s chain family: an EVM wallet for an EVM vault, or a Solana wallet for a Solana vault (see `,_jsx(_components.a,{href:`/swift/wallet-creation`,children:`Wallet Creation`}),`)`]}),`\n`,_jsxs(_components.li,{children:[`Earn enabled for your environment in the Dynamic Console. Until it is, every call throws an `,_jsx(_components.code,{children:`EarnError`}),` with `,_jsx(_components.code,{children:`statusCode`}),` 403.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`Earn is available on the SDK instance as `,_jsx(_components.code,{children:`sdk.earn`}),`:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`4`,language:`swift`,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:`swift`,children:_jsxs(_components.code,{language:`swift`,numberOfLines:`4`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` DynamicSDKSwift`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`let`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` sdk `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` DynamicSDK.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`instance`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`()`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`let`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` earn `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` sdk.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`earn`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`browse-vaults`,children:`Browse vaults`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`getVaults`}),` returns the vaults your environment can access. `,_jsx(_components.code,{children:`getVaultDetails`}),` adds the on-chain fields you need to display and transact against one, including `,_jsx(_components.code,{children:`assetDecimals`}),`.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`11`,language:`swift`,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:`swift`,children:_jsxs(_components.code,{language:`swift`,numberOfLines:`11`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`let`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` vaults `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` try`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` earn.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`getVaults`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`()`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`for`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` vault `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`in`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` vaults {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` print`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`\\\\(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`vault.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`assetSymbol`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`)`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` by `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`\\\\(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`vault.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`curator`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`)`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` on chain `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`\\\\(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`vault.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`chainId`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`)`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` print`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Net APY: `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`\\\\(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`vault.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`netApy`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` ??`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 0`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`)`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`, TVL: `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`\\\\(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`vault.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`tvlUsd`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` ??`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 0`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`)`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`guard`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` let`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` vaultId `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` vaults.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#9CDCFE`},children:`first`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`?`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.vaultId `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`else`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` return`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` // no vaults enabled for this environment`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`let`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` vault `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` try`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` earn.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`getVaultDetails`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`vaultId`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: vaultId)`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`netApy`}),` and `,_jsx(_components.code,{children:`tvlUsd`}),` come from live market data on a best-effort basis, so both are `,_jsx(_components.code,{children:`nil`}),` when that data is unavailable.`]}),`\n`,_jsxs(_components.p,{children:[`A wallet can only transact on its own chain family, so filter the list by `,_jsx(_components.code,{children:`chainName`}),` before showing vaults for a wallet:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`swift`,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:`swift`,children:_jsxs(_components.code,{language:`swift`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`let`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` usableVaults `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` vaults.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`filter`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` $0`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`chainName`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#9CDCFE`},children:`rawValue`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` ==`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` wallet.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`chain`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`uppercased`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`()`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`read-a-position`,children:`Read a position`}),`\n`,_jsxs(_components.p,{children:[`A position holds `,_jsx(_components.code,{children:`shares`}),` and `,_jsx(_components.code,{children:`assets`}),`, both in raw token units. Show `,_jsx(_components.code,{children:`assets`}),`, because it grows as yield accrues. Depending on the vault’s provider, `,_jsx(_components.code,{children:`shares`}),` either stays flat or always equals `,_jsx(_components.code,{children:`assets`}),`, so it is not meaningful to show a user.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`9`,language:`swift`,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:`swift`,children:_jsxs(_components.code,{language:`swift`,numberOfLines:`9`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`let`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` position `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` try`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` earn.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`getVaultPosition`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` vaultId`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: vault.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`vaultId`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` ownerAddress`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: wallet.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`address`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`if`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` let`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` assets `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:` Double`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(position.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`assets`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` let`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` balance `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` assets `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` pow`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`10.0`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`Double`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(vault.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`assetDecimals`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`))`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` print`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Balance: `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`\\\\(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`balance`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`)`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` \\\\(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`vault.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`assetSymbol`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`)`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`read-performance`,children:`Read performance`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`getVaultPerformance`}),` returns a wallet’s earnings in one vault: `,_jsx(_components.code,{children:`netEarningsAssets`}),` and `,_jsx(_components.code,{children:`returnOnCapital`}),`. Morpho indexes these values rather than reading them on-chain, so they trail the chain head; `,_jsx(_components.code,{children:`getVaultPosition`}),` stays the live source of truth for what the position is worth right now.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`7`,language:`swift`,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:`swift`,children:_jsxs(_components.code,{language:`swift`,numberOfLines:`7`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`let`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` performance `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` try`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` earn.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`getVaultPerformance`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` vaultId`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: vault.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`vaultId`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` ownerAddress`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: wallet.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`address`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`print`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Net earnings: `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`\\\\(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`performance.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`netEarningsAssets`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`)`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` raw units\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`print`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Return on capital: `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`\\\\(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`performance.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`returnOnCapital`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` ??`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 0`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`)`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`netEarningsAssets`}),` is a raw token-unit string, so divide it by the vault’s `,_jsx(_components.code,{children:`assetDecimals`}),` before display, the same way you format a position’s `,_jsx(_components.code,{children:`assets`}),`. `,_jsx(_components.code,{children:`returnOnCapital`}),` is a time-weighted, non-annualized decimal (for example `,_jsx(_components.code,{children:`0.00413`}),` means a 0.41% return) and is `,_jsx(_components.code,{children:`nil`}),` while the position has too little history to compute one.`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`getVaultPerformance`}),` currently supports vaults from these providers: Morpho. For a vault from any other provider, such as an Aave vault, the call throws an `,_jsx(_components.code,{children:`EarnError`}),` with `,_jsx(_components.code,{children:`statusCode`}),` 400. Use `,_jsx(_components.code,{children:`getVaultPosition`}),` to show such a position’s balance, and see `,_jsx(_components.a,{href:`/earn/overview#provider-support`,children:`Provider support`}),`.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`read-earnings-across-vaults`,children:`Read earnings across vaults`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`getEarnings`}),` returns a wallet’s aggregate earnings across every vault it holds on one EVM chain: USD totals plus a per-vault breakdown.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`12`,language:`swift`,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:`swift`,children:_jsxs(_components.code,{language:`swift`,numberOfLines:`12`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`let`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` earnings `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` try`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` earn.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`getEarnings`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` chainId`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`8453`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Base`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` ownerAddress`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: wallet.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`address`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`print`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Total PNL: $`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`\\\\(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`earnings.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`totalPnlUsd`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`)`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`for`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` entry `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`in`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` earnings.vaults {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` if`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` let`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` pnlUsd `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` entry.pnlUsd {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` print`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`\\\\(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`entry.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`vaultAddress`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`)`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`: $`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`\\\\(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`pnlUsd`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`)`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Totals are USD-only, because per-vault earnings are denominated in different underlying assets. A vault with no USD price is skipped from the totals, not counted as zero. Positions in vaults the environment does not offer are still included, with `,_jsx(_components.code,{children:`vaultId`}),` set to `,_jsx(_components.code,{children:`nil`}),` for those entries.`]}),`\n`,_jsxs(_components.p,{children:[`Not every provider reports a cost basis for a position. For those vaults, the entry still carries `,_jsx(_components.code,{children:`assets`}),` and `,_jsx(_components.code,{children:`assetsUsd`}),`, but `,_jsx(_components.code,{children:`pnl`}),`, `,_jsx(_components.code,{children:`pnlUsd`}),`, and `,_jsx(_components.code,{children:`roe`}),` are `,_jsx(_components.code,{children:`nil`}),`. Those positions add to `,_jsx(_components.code,{children:`totalAssetsUsd`}),` and add nothing to `,_jsx(_components.code,{children:`totalPnlUsd`}),`.`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`getEarnings`}),` covers Morpho and Aave positions on EVM chains. It does not include positions in Solana vaults; read a Solana position with `,_jsx(_components.code,{children:`getVaultPosition`}),` instead.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`read-rewards`,children:`Read rewards`}),`\n`,_jsxs(_components.p,{children:[`Rewards are a separate bonus some vaults pay in another token. They sit unclaimed until you claim them, unlike base yield, which shows up as `,_jsx(_components.code,{children:`assets`}),` growing.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`8`,language:`swift`,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:`swift`,children:_jsxs(_components.code,{language:`swift`,numberOfLines:`8`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`let`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` rewards `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` try`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` earn.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`getVaultRewards`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` vaultId`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: vault.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`vaultId`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` ownerAddress`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: wallet.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`address`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`for`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` reward `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`in`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` rewards {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` print`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`\\\\(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`reward.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`accrued`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`)`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` raw units of `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`\\\\(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`reward.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`tokenSymbol`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`)`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`The list is empty when the wallet has accrued nothing in the vault. Rewards are supported only for vaults from some providers. For a vault from any other provider, the API rejects the rewards and claim requests with an HTTP 400 error, which surfaces as an `,_jsx(_components.code,{children:`EarnError`}),`. See `,_jsx(_components.a,{href:`/earn/overview#provider-support`,children:`Provider support`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`deposit`,children:`Deposit`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`deposit`}),` builds the payload, `,_jsx(_components.code,{children:`execute`}),` sends it. `,_jsx(_components.code,{children:`amount`}),` is human-readable, so `,_jsx(_components.code,{children:`\"12.5\"`}),` deposits 12.5 USDC.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`18`,language:`swift`,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:`swift`,children:_jsxs(_components.code,{language:`swift`,numberOfLines:`18`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`let`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` deposit `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` try`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` earn.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`deposit`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` vaultId`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: vault.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`vaultId`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` ownerAddress`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: wallet.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`address`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` amount`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"12.5\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`let`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` transactionHash `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` try`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` earn.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`execute`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` payload`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: deposit.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`signingPayload`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` wallet`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: wallet,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` onStepChange`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: { step `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`in`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` switch`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` step {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` case`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` .`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`approval`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` print`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Approving the vault to spend the deposit\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` case`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` .`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`transaction`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` print`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Sending the vault transaction\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`execute`}),` returns the vault transaction hash (the last signature on Solana). When an EVM payload carries an `,_jsx(_components.code,{children:`evmApproval`}),`, it sends that approval first and waits for its receipt, so `,_jsx(_components.code,{children:`onStepChange`}),` reports `,_jsx(_components.code,{children:`.approval`}),` before `,_jsx(_components.code,{children:`.transaction`}),`. An approval is only requested when the vault needs an allowance it does not already have.`]}),`\n`,_jsxs(_components.p,{children:[`To send the shares to a different wallet, set `,_jsx(_components.code,{children:`receiverAddress`}),` on the request. It defaults to `,_jsx(_components.code,{children:`ownerAddress`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`withdraw`,children:`Withdraw`}),`\n`,_jsx(_components.p,{children:`Withdrawals redeem shares the wallet already holds, so they never need an approval.`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`10`,language:`swift`,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:`swift`,children:_jsxs(_components.code,{language:`swift`,numberOfLines:`10`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`let`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` withdrawal `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` try`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` earn.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`withdraw`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` vaultId`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: vault.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`vaultId`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` ownerAddress`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: wallet.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`address`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` amount`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"12.5\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`let`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` transactionHash `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` try`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` earn.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`execute`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` payload`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: withdrawal.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`signingPayload`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` wallet`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: wallet`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`claim-rewards`,children:`Claim rewards`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`13`,language:`swift`,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:`swift`,children:_jsxs(_components.code,{language:`swift`,numberOfLines:`13`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`do`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` let`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` claim `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` try`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` earn.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`claim`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` vaultId`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: vault.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`vaultId`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` ownerAddress`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: wallet.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`address`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` )`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` let`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` transactionHash `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` try`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` earn.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`execute`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` payload`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: claim.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`signingPayload`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` wallet`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: wallet`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` )`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`} `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`catch`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` let`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` error `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`as`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` EarnError `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`where`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` error.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`nothingToClaim`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` print`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Nothing to claim in this vault\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`solana-vaults`,children:`Solana vaults`}),`\n`,_jsxs(_components.p,{children:[`A Solana vault action is split into up to three transactions, such as the deposit itself and a step that stakes the deposited shares in the vault’s farm. `,_jsx(_components.code,{children:`execute`}),` signs, sends, and confirms them one at a time in `,_jsx(_components.code,{children:`ordinal`}),` order, because a later transaction can depend on the state an earlier one wrote. `,_jsx(_components.code,{children:`onTransactionStepChange`}),` reports each transaction’s position and label as it begins:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`7`,language:`swift`,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:`swift`,children:_jsxs(_components.code,{language:`swift`,numberOfLines:`7`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`let`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` transactionHash `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` try`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` earn.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`execute`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` payload`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: deposit.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`signingPayload`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` wallet`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: solanaWallet,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` onTransactionStepChange`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: { step `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`in`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` print`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Transaction `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`\\\\(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`step.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`ordinal`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` +`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 1`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`)`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` of `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`\\\\(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`step.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`total`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`)`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`: `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`\\\\(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`step.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`label`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` ??`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`)`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`All of an action’s transactions are built against the same blockhash, which stays valid only briefly. If the user takes too long to approve, the remaining transactions expire and `,_jsx(_components.code,{children:`execute`}),` throws an `,_jsx(_components.code,{children:`EarnSolanaStepError`}),`. When a later transaction fails or expires, the earlier ones have already confirmed on-chain, so read the wallet’s position with `,_jsx(_components.code,{children:`getVaultPosition`}),` before retrying. Repeating the whole action could apply the earlier steps twice. See `,_jsx(_components.a,{href:`/earn/overview#solana-vaults`,children:`Solana vaults`}),` in the Earn overview.`]}),`\n`,_jsx(Heading,{level:`2`,id:`gas-sponsorship`,children:`Gas sponsorship`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`sponsored`}),` parameter on `,_jsx(_components.code,{children:`execute`}),` picks how the transactions’ fees are paid:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`true`}),` requires gas sponsorship and throws `,_jsx(_components.code,{children:`EarnSponsorError`}),` when it is unavailable.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`false`}),` always pays the fee from the wallet.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`nil`}),` (the default) sponsors when the environment enables it and falls back to a wallet-paid transaction otherwise.`]}),`\n`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`5`,language:`swift`,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:`swift`,children:_jsxs(_components.code,{language:`swift`,numberOfLines:`5`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`let`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` transactionHash `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` try`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` earn.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`execute`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` payload`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: deposit.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`signingPayload`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` wallet`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: wallet,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` sponsored`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`On EVM, a sponsored execution batches the ERC-20 approval and the vault call into one gasless transaction. On Solana, sponsorship works through SVM Gas Sponsorship; see `,_jsx(_components.a,{href:`/swift/wallets/solana/svm-gas-sponsorship`,children:`SVM Gas Sponsorship`}),` for how to enable it. Note that an unset `,_jsx(_components.code,{children:`sponsored`}),` sponsors a Solana action when SVM Gas Sponsorship is enabled, which differs from the JavaScript SDK, where a Solana vault action is wallet-paid unless `,_jsx(_components.code,{children:`sponsored`}),` is `,_jsx(_components.code,{children:`true`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`amount-units`,children:`Amount units`}),`\n`,_jsx(_components.p,{children:`Amounts cross the wire as strings in two different units:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`The `,_jsx(_components.code,{children:`amount`}),` parameter on `,_jsx(_components.code,{children:`deposit`}),` and `,_jsx(_components.code,{children:`withdraw`}),` is human-readable: `,_jsx(_components.code,{children:`\"12.5\"`}),` means 12.5 USDC.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`EarnVaultPosition`}),`, `,_jsx(_components.code,{children:`EarnVaultReward`}),`, and the amounts inside a signing payload are raw token units. They can exceed `,_jsx(_components.code,{children:`Int.max`}),`, so they stay strings; convert a position or payload amount with the vault’s `,_jsx(_components.code,{children:`assetDecimals`}),`, and a reward amount with the reward’s own `,_jsx(_components.code,{children:`tokenDecimals`}),`, before display.`]}),`\n`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`Mixing the two units up silently transacts the wrong value. Human-readable amounts also need a\nleading zero: `,_jsx(_components.code,{children:`\"0.01\"`}),` works, `,_jsx(_components.code,{children:`\".01\"`}),` is rejected by the API.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`handle-errors`,children:`Handle errors`}),`\n`,_jsxs(_components.p,{children:[`Every failed Earn call throws an `,_jsx(_components.code,{children:`EarnError`}),` carrying the HTTP `,_jsx(_components.code,{children:`statusCode`}),`:`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Condition`}),_jsx(_components.th,{children:`What it means`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`statusCode`}),` 403`]}),_jsx(_components.td,{children:`Earn is not enabled for your environment`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`nothingToClaim`}),` (422 on claim)`]}),_jsx(_components.td,{children:`The wallet has no claimable rewards in the vault`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`statusCode`}),` 400`]}),_jsx(_components.td,{children:`The vault’s provider does not support the request, such as rewards`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Other status codes`}),_jsx(_components.td,{children:`The API rejected the request, for example an invalid amount or address`})]})]})]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`5`,language:`swift`,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:`swift`,children:_jsxs(_components.code,{language:`swift`,numberOfLines:`5`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`do`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` let`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` vaults `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` try`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` earn.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`getVaults`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`()`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`} `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`catch`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` let`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` error `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`as`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` EarnError`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` print`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Earn failed (`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`\\\\(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`error.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`statusCode`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` ??`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 0`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`)`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`): `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`\\\\(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`error.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`message`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`)`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`execute`}),` throws an `,_jsx(_components.code,{children:`EarnError`}),` when the wallet’s chain does not match the payload’s chain family, when the payload carries no transaction, or when an approval reverts or is not confirmed in time. Two error types are specific to execution:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`EarnSolanaStepError`}),` carries the `,_jsx(_components.code,{children:`ordinal`}),` and `,_jsx(_components.code,{children:`total`}),` of the Solana transaction that stopped and a `,_jsx(_components.code,{children:`code`}),` of `,_jsx(_components.code,{children:`expired`}),`, `,_jsx(_components.code,{children:`failed`}),`, or `,_jsx(_components.code,{children:`sendFailed`}),`. Transactions before it already confirmed, so check the position before retrying.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`EarnSponsorError`}),` means `,_jsx(_components.code,{children:`sponsored: true`}),` was required but sponsorship was unavailable or the sponsored transaction failed.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`next-steps`,children:`Next steps`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/swift/wallets/evm/erc20-transfers`,children:`ERC-20 Token Transfers`}),` to move the vault asset in and out of the wallet`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/swift/wallets/solana/svm-gas-sponsorship`,children:`SVM Gas Sponsorship`}),` to pay Solana fees for your users`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/earn/overview`,children:`Earn overview`}),` for vault, share, and yield concepts`]}),`\n`]})]})}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":"Earn","description":"Deposit into yield vaults, track positions, performance and rewards, and withdraw with the Dynamic Swift SDK.","href":"/swift/earn"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Overview","slug":"overview","depth":2,"children":[]},{"title":"Prerequisites","slug":"prerequisites","depth":2,"children":[]},{"title":"Browse vaults","slug":"browse-vaults","depth":2,"children":[]},{"title":"Read a position","slug":"read-a-position","depth":2,"children":[]},{"title":"Read performance","slug":"read-performance","depth":2,"children":[]},{"title":"Read earnings across vaults","slug":"read-earnings-across-vaults","depth":2,"children":[]},{"title":"Read rewards","slug":"read-rewards","depth":2,"children":[]},{"title":"Deposit","slug":"deposit","depth":2,"children":[]},{"title":"Withdraw","slug":"withdraw","depth":2,"children":[]},{"title":"Claim rewards","slug":"claim-rewards","depth":2,"children":[]},{"title":"Solana vaults","slug":"solana-vaults","depth":2,"children":[]},{"title":"Gas sponsorship","slug":"gas-sponsorship","depth":2,"children":[]},{"title":"Amount units","slug":"amount-units","depth":2,"children":[]},{"title":"Handle errors","slug":"handle-errors","depth":2,"children":[]},{"title":"Next steps","slug":"next-steps","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/docs/_mintlify/custom/dynamic-docs-testing/fd6becaed25bf0d8/algolia-docsearch.js","/docs/_mintlify/custom/dynamic-docs-testing/078be96a1e454d1f/generate-llms.js","/docs/_mintlify/custom/dynamic-docs-testing/14f3898c5e985cd5/snippets/gsap-text-plugin.js","/docs/_mintlify/custom/dynamic-docs-testing/c174bfce53a72941/snippets/gsap.js","/docs/_mintlify/custom/dynamic-docs-testing/ea6028ffcc794f21/llm-copy-button.js","/docs/_mintlify/custom/dynamic-docs-testing/c071bd14c4f40dfd/onetrust.js"],"subdomain":"dynamic-docs-testing","siteName":"Dynamic","title":"Earn - Dynamic","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-29T09:53:59.098Z","gitLastModified":"2026-10-29T09:53:04.000Z","originalFileLocation":"swift/earn.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=\"Deposit into yield vaults, track positions, performance and rewards, and withdraw with the Dynamic Swift SDK.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Dynamic\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/dynamic-docs-testing/mdILYDruq-iWk8yv/_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=\"/docs/mintlify-assets/_mintlify/favicons/dynamic-docs-testing/mdILYDruq-iWk8yv/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/dynamic-docs-testing/mdILYDruq-iWk8yv/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/dynamic-docs-testing/mdILYDruq-iWk8yv/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/dynamic-docs-testing/mdILYDruq-iWk8yv/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/dynamic-docs-testing/mdILYDruq-iWk8yv/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/dynamic-docs-testing/mdILYDruq-iWk8yv/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/dynamic-docs-testing/mdILYDruq-iWk8yv/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/dynamic-docs-testing/mdILYDruq-iWk8yv/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Earn - Dynamic\">\u003cmeta data-mint-head property=\"og:description\" content=\"Deposit into yield vaults, track positions, performance and rewards, and withdraw with the Dynamic Swift SDK.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Dynamic\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://www.dynamic.xyz/docs/swift/earn\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://dynamic-docs-testing.mintlify.app/_mintlify/api/og/v2?division=Swift\u0026amp;title=Earn\u0026amp;description=Deposit+into+yield+vaults%2C+track+positions%2C+performance+and+rewards%2C+and+withdraw+with+the+Dynamic+Swift+SDK.\u0026amp;theme=9bec92bca96868fc0aaaeb3b\u0026amp;signature=1fd9bdebd5c7585b972ac3a65c4326651cd3fe6eb5f0df146f26a8985e71177d\">\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=\"Earn - Dynamic\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Deposit into yield vaults, track positions, performance and rewards, and withdraw with the Dynamic Swift SDK.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://dynamic-docs-testing.mintlify.app/_mintlify/api/og/v2?division=Swift\u0026amp;title=Earn\u0026amp;description=Deposit+into+yield+vaults%2C+track+positions%2C+performance+and+rewards%2C+and+withdraw+with+the+Dynamic+Swift+SDK.\u0026amp;theme=9bec92bca96868fc0aaaeb3b\u0026amp;signature=1fd9bdebd5c7585b972ac3a65c4326651cd3fe6eb5f0df146f26a8985e71177d\">\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=\"/docs/mintlify-assets/_mintlify/favicons/dynamic-docs-testing/mdILYDruq-iWk8yv/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Dynamic\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#4779FF\">\u003clink data-mint-head rel=\"canonical\" href=\"https://www.dynamic.xyz/docs/swift/earn\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/docs/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/swift/earn.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://www.dynamic.xyz/#organization\",\"name\":\"Dynamic\",\"url\":\"https://www.dynamic.xyz\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/dynamic-docs-testing/CXYm3HK725eun9ev/logo/dynamic-fireblocks-icon-light.svg?fit=max\u0026auto=format\u0026n=CXYm3HK725eun9ev\u0026q=85\u0026s=c050cd8c41715aa71119f91c19221cb3\"}},{\"@type\":\"WebSite\",\"@id\":\"https://www.dynamic.xyz/docs#website\",\"name\":\"Dynamic\",\"url\":\"https://www.dynamic.xyz/docs\",\"publisher\":{\"@id\":\"https://www.dynamic.xyz/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://www.dynamic.xyz/docs/swift/earn#webpage\",\"url\":\"https://www.dynamic.xyz/docs/swift/earn\",\"name\":\"Earn\",\"description\":\"Deposit into yield vaults, track positions, performance and rewards, and withdraw with the Dynamic Swift SDK.\",\"dateModified\":\"2026-10-29T09:53:04.000Z\",\"isPartOf\":{\"@id\":\"https://www.dynamic.xyz/docs#website\"},\"breadcrumb\":{\"@id\":\"https://www.dynamic.xyz/docs/swift/earn#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://www.dynamic.xyz/docs/swift/earn#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Implement\",\"item\":\"https://www.dynamic.xyz/docs/javascript/building-ui/earn-ui\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Earn\",\"item\":\"https://www.dynamic.xyz/docs/swift/earn\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://www.dynamic.xyz/docs/swift/earn#article\",\"headline\":\"Earn\",\"name\":\"Earn\",\"description\":\"Deposit into yield vaults, track positions, performance and rewards, and withdraw with the Dynamic Swift SDK.\",\"url\":\"https://www.dynamic.xyz/docs/swift/earn\",\"mainEntityOfPage\":{\"@id\":\"https://www.dynamic.xyz/docs/swift/earn#webpage\"},\"dateModified\":\"2026-10-29T09:53:04.000Z\",\"publisher\":{\"@id\":\"https://www.dynamic.xyz/#organization\"},\"isPartOf\":{\"@id\":\"https://www.dynamic.xyz/docs#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Dynamic\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Dynamic","nav":{"global":null,"tabs":[{"tab":"Get Started","icon":"rocket","pages":[{"title":"Get Started","href":"/get-started/welcome"}]},{"tab":"Embedded Wallets","icon":"wallet","pages":[{"title":"Embedded Wallets","href":"/embedded-wallets/mpc/overview"}]},{"tab":"Business Accounts","icon":"building","pages":[{"title":"Business Accounts","href":"/business-accounts/accounts"}]},{"tab":"Policies","icon":"shield-check","pages":[{"title":"Policies","href":"/embedded-wallets/mpc/policies/overview"}]},{"tab":"Auth","icon":"door-open","pages":[{"title":"Auth","href":"/auth/overview"}]},{"tab":"Agents","icon":"server","pages":[{"title":"Agents","href":"/agents/overview"}]},{"tab":"Fireblocks Flow","icon":"coins","pages":[{"title":"Fireblocks Flow","href":"/flow/overview"}]},{"tab":"Earn","icon":"chart-line","groups":[{"group":"Learn","icon":"book","expanded":false,"pages":[{"title":"Earn Overview","href":"/earn/overview"}]},{"group":"Implement","icon":"code","pages":[{"group":"Javascript, React \u0026 React Native","boost":1.5,"icon":"js","expanded":false,"pages":[{"title":"Building an Earn UI","description":"List Earn vaults, show a wallet's position, deposit, withdraw, and claim rewards.","href":"/javascript/building-ui/earn-ui"}]},{"group":"Swift","boost":1,"icon":"swift","expanded":false,"pages":[{"title":"Earn","href":"/swift/earn"}]},{"group":"Kotlin","boost":1,"icon":"android","expanded":false,"pages":[{"title":"Earn","description":"Deposit into yield vaults, track positions and rewards, and withdraw with the Dynamic Kotlin SDK.","href":"/kotlin/earn"}]},{"group":"Flutter","boost":1,"icon":"flutter","expanded":false,"pages":[{"title":"Earn","href":"/flutter/earn"}]},{"group":"Node","boost":1,"icon":"node","expanded":false,"pages":[{"title":"Earn","href":"/node/earn"}]}]}]},{"tab":"Funding","icon":"money-bill-transfer","pages":[{"title":"Funding","href":"/funding/overview"}]},{"tab":"Reference","icon":"book-open","menu":[{"item":"Javascript, React \u0026 React Native","icon":"js","pages":[{"title":"Javascript, React \u0026 React Native","href":"/javascript/reference/overview"}]},{"item":"Swift","icon":"swift","pages":[{"title":"Swift","href":"/swift/sdk-reference/overview"}]},{"item":"Kotlin","icon":"android","pages":[{"title":"Kotlin","href":"/kotlin/sdk-reference/overview"}]},{"item":"Flutter","icon":"flutter","pages":[{"title":"Flutter","href":"/flutter/sdk-reference/overview"}]},{"item":"Unity","icon":"unity","pages":[{"title":"Unity","href":"/unity/sdk-reference/overview"}]},{"item":"Node","icon":"node","pages":[{"title":"Node","href":"/node/reference/auth/authenticate-jwt"}]},{"item":"REST API","icon":"code","pages":[{"title":"REST API","href":"/api-reference/overview"}]},{"item":"Legacy React","icon":"react","pages":[{"title":"Legacy React","href":"/react/reference/quickstart"}]},{"item":"Legacy React Native","icon":"mobile-screen","pages":[{"title":"Legacy React Native","href":"/react-native/reference/introduction"}]}],"pages":[{"title":"Reference","href":"/javascript/reference/overview"}]},{"tab":"Recipes","icon":"book-open","pages":[{"title":"Recipes","href":"/recipes/recipes"}]}]},"basePath":"","title":"Earn - Dynamic","buildId":"dpl_9yaRmq8qi7yyMZn9oEWmKEdYMvGZ","deploymentId":"dpl_9yaRmq8qi7yyMZn9oEWmKEdYMvGZ","dynamics":[],"chunks":[]}