The bridge config lists every chain and token available for bridging.
The swap tokens config lists the tokens available for bridge and swap, by chain.
You can fetch them with these SDK calls:
// Bridge configconst bridgeConfigResult = await sdk.api.config.bridge()// Tokens available for swapping, by chainconst swapTokensResult = await sdk.api.config.swapTokens()// Shortcut to fetch both configs in one callconst allConfigsResult = await sdk.api.config.all()
The whole object corresponds to the BridgeConfig type exported by the SDK. Each key is a chain, and each value is that chain’s config (the ChainConfig type). Each entry in a chain config’s tokens field is a TokenConfig.Many SDK functions take the BridgeConfig, or a specific ChainConfig or TokenConfig, as parameters. For most advanced use cases, fetch the bridge config first.
The SDK takes a modular approach: all blockchain interactions are handled by chain adapters. When you use one of the bridge functions, you always pass in a chain adapter that matches the origin chain.Chain adapters handle:
Fetching balances
Checking and setting token allowances
Making a deposit to a bridge contract
Estimating the gas fees for a bridge transaction (optional)
These lists are generated when the SDK is released, so they can fall out of sync with the bridge config if Rhino.fi adds a chain or token, or temporarily suspends one.
To show users a list of available chains or tokens, always use a freshly fetched bridge config. Don’t rely on these hard-coded lists for that.
SupportedTokens doesn’t include swap tokens, as they change too often for a static list.See Supported chains and tokens for the chains and tokens available for Smart Deposit Addresses.
Many SDK functions return an object with nullable data and error fields instead of throwing. Checking that one is defined narrows the other to non-nullable in the opposite code path. Errors are always a discriminated union with a _tag or type field as the discriminator. Some error types include extra fields with details about the error.For example, an error when generating a user quote could be:
Amounts in errors are decimal strings in whole token units, as everywhere in the API. See Errors for the common error names and what to do about them.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"rhino.fi - Docs","colors":{"primary":"#EC6530","light":"#FFAE6E","dark":"#EC6530"},"logo":{"light":"https://mintcdn.com/rhinofi/HGZOBv0k7QrdOe9G/logo/light.svg?fit=max\u0026auto=format\u0026n=HGZOBv0k7QrdOe9G\u0026q=85\u0026s=f00220627b114f0d5385756ccb61f55e","dark":"https://mintcdn.com/rhinofi/HGZOBv0k7QrdOe9G/logo/dark.svg?fit=max\u0026auto=format\u0026n=HGZOBv0k7QrdOe9G\u0026q=85\u0026s=6c233cf6099c635a00dcdb3643ea41cf"},"favicon":"https://mintcdn.com/rhinofi/HGZOBv0k7QrdOe9G/favicon.png?fit=max\u0026auto=format\u0026n=HGZOBv0k7QrdOe9G\u0026q=85\u0026s=32cac0eb60b5a965cb7308ad1eafefe8","api":{"mdx":{"server":"https://api.rhino.fi/bridge"}},"navbar":{"links":[{"href":"https://go.crisp.chat/chat/embed/?website_id=598d8062-c46b-40e7-a7cd-0bf2061390a5","label":"Support"}],"primary":{"type":"button","label":"Talk to the team","href":"https://rhino.fi/contact"}},"footer":{"socials":{"x":"https://x.com/rhinofi","github":"https://github.com/rhinofi"}},"fonts":{"family":"Geist"},"integrations":{"heap":{"appId":"3649556247"}},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"Rhino.fi Console","icon":"code","href":"https://console.rhino.fi"},{"anchor":"Website","icon":"globe","href":"https://rhino.fi/"},{"anchor":"Blog","icon":"newspaper","href":"https://rhino.fi/blog/"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"rhinofi","hasAudioNarration":false,"actualSubdomain":"rhinofi","customDomains":["docs.rhino.fi"],"gitSource":{"type":"github","owner":"rhinofi","repo":"rhino-public-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae4a50ef49f5b7aedfded9e","collectionId":"5c7b2aa0-65a9-47f4-8337-45a4347604b6","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae4a50ef49f5b7aedfded9e"},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae4a50ef49f5b7aedfded9e","clientVersion":"0.0.4045","searchFilterCounts":[{"language":"default","tag":"Guides","count":55},{"language":"default","tag":"API Reference","count":25},{"language":"default","tag":"SDK","count":18},{"language":"default","tag":"Get Started","count":13},{"language":"default","tag":"Bridge \u0026 swap endpoints","count":13},{"language":"default","tag":"SDA endpoints","count":9},{"language":"default","tag":"depositAddresses","count":9},{"language":"default","tag":"Chain Adapters","count":8},{"language":"default","tag":"API Integration","count":7},{"language":"default","tag":"Extensions","count":7}]},"assistantConfig":{"enableAskAiButton":true,"enableAskAiSearchBar":false},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"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":"byok-sep-25","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":"billing-updated-9-15","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}],"googleFontsInlined":true},"customCss":[],"page":{"pagePath":"sdk/concepts","slug":"/sdk/concepts","pageMetadata":{"title":"Concepts","og:title":"Concepts | Rhino.fi","description":"Learn about the core concepts of the SDK.","href":"/sdk/concepts"},"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: \"Learn about the core concepts of the 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`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`2`,id:`bridge-and-chain-configs`,children:`Bridge and chain configs`}),`\n`,_jsx(_components.p,{children:`Rhino.fi has two configurations:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`The `,_jsx(_components.strong,{children:`bridge config`}),` lists every chain and token available for bridging.`]}),`\n`,_jsxs(_components.li,{children:[`The `,_jsx(_components.strong,{children:`swap tokens config`}),` lists the tokens available for bridge and swap, by chain.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`You can fetch them with these SDK calls:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`6`,language:`typescript`,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:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`6`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Bridge config`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` bridgeConfigResult`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` sdk`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`api`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`config`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`bridge`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`()`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Tokens available for swapping, by chain`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` swapTokensResult`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` sdk`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`api`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`config`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`swapTokens`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`()`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Shortcut to fetch both configs in one call`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` allConfigsResult`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` sdk`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`api`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`config`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`all`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`()`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.a,{href:`/sdk/bridge-api`,children:`Learn about the bridge API`}),`.`]}),`\n`,_jsx(_components.p,{children:`If no error occurs, the bridge config looks like this:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`40`,language:`typescript`,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:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`40`,children:[_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:`#953800`,\"--shiki-dark\":`#C8C8C8`},children:` ETHEREUM`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#C8C8C8`},children:` name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Ethereum\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#C8C8C8`},children:` type`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"EVM\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#C8C8C8`},children:` networkId`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"1\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#C8C8C8`},children:` contractAddress`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"0xbca3039a18c0d2f2f84ba8a028c67290bc045afa\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#C8C8C8`},children:` multicallContractAddress`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"0x0dbBD1bB03Ed63AE2beA0Ce892567884dffb70a5\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#C8C8C8`},children:` confirmationBlocks`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`5`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#C8C8C8`},children:` avgBlockTime`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`12`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#C8C8C8`},children:` nativeTokenName`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"ETH\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#C8C8C8`},children:` nativeTokenDecimals`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`18`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#C8C8C8`},children:` nativeTokenSafeguard`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`0.008`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#C8C8C8`},children:` blockExplorer`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"https://etherscan.io\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#C8C8C8`},children:` rpc`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"https://...\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#C8C8C8`},children:` site`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"https://ethereum.org\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#C8C8C8`},children:` status`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"enabled\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#C8C8C8`},children:` tokens`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#C8C8C8`},children:` ETH`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#C8C8C8`},children:` token`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"ETH\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#C8C8C8`},children:` address`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"0x0000000000000000000000000000000000000000\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#C8C8C8`},children:` decimals`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`18`})]}),`\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:`#953800`,\"--shiki-dark\":`#C8C8C8`},children:` USDC`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#C8C8C8`},children:` token`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"USDC\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#C8C8C8`},children:` address`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#C8C8C8`},children:` decimals`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`6`})]}),`\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:`#953800`,\"--shiki-dark\":`#C8C8C8`},children:` USDT`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#C8C8C8`},children:` token`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"USDT\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#C8C8C8`},children:` address`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"0xdac17f958d2ee523a2206206994597c13d831ec7\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#C8C8C8`},children:` decimals`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`6`})]}),`\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`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#C8C8C8`},children:` gasBoostEnabled`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`false`})]}),`\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:`#953800`,\"--shiki-dark\":`#C8C8C8`},children:` SOLANA`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` // same format as above`})}),`\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:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` // Every supported chain has an entry here`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`The whole object corresponds to the `,_jsx(_components.code,{children:`BridgeConfig`}),` type exported by the SDK. Each key is a chain, and each value is that chain’s config (the `,_jsx(_components.code,{children:`ChainConfig`}),` type). Each entry in a chain config’s `,_jsx(_components.code,{children:`tokens`}),` field is a `,_jsx(_components.code,{children:`TokenConfig`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`Many SDK functions take the `,_jsx(_components.code,{children:`BridgeConfig`}),`, or a specific `,_jsx(_components.code,{children:`ChainConfig`}),` or `,_jsx(_components.code,{children:`TokenConfig`}),`, as parameters. For most advanced use cases, fetch the bridge config first.`]}),`\n`,_jsx(Heading,{level:`2`,id:`chain-adapters`,children:`Chain adapters`}),`\n`,_jsx(_components.p,{children:`The SDK takes a modular approach: all blockchain interactions are handled by chain adapters. When you use one of the bridge functions, you always pass in a chain adapter that matches the origin chain.`}),`\n`,_jsx(_components.p,{children:`Chain adapters handle:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Fetching balances`}),`\n`,_jsx(_components.li,{children:`Checking and setting token allowances`}),`\n`,_jsx(_components.li,{children:`Making a deposit to a bridge contract`}),`\n`,_jsx(_components.li,{children:`Estimating the gas fees for a bridge transaction (optional)`}),`\n`]}),`\n`,_jsx(_components.p,{children:`Resources:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/sdk/chain-adapters/overview`,children:`More about chain adapters`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/sdk/chain-adapters/custom-chain-adapters`,children:`How to implement custom chain adapters`})}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`supported-chains-and-tokens`,children:`Supported chains and tokens`}),`\n`,_jsxs(_components.p,{children:[`Bridge functions often take chains or tokens as `,_jsx(_components.code,{children:`string`}),` parameters, so the SDK provides lists of supported chains and tokens to avoid magic strings:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`5`,language:`typescript`,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:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`5`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`SupportedChains`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`SupportedTokens`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` } `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`from`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '@rhino.fi/sdk'`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` chainIn`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` SupportedChains`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`ETHEREUM`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` chainOut`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` SupportedChains`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`SOLANA`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` token`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` SupportedTokens`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`USDT`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`These lists are generated when the SDK is released, so they can fall out of sync with the bridge config if Rhino.fi adds a chain or token, or temporarily suspends one.`}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`To show users a list of available chains or tokens, always use a freshly fetched bridge config. Don’t rely on these hard-coded lists for that.`})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`SupportedTokens`}),` doesn’t include swap tokens, as they change too often for a static list.`]}),`\n`,_jsxs(_components.p,{children:[`See `,_jsx(_components.a,{href:`/get-started/supported-chains`,children:`Supported chains and tokens`}),` for the chains and tokens available for Smart Deposit Addresses.`]}),`\n`,_jsx(Heading,{level:`2`,id:`error-handling`,children:`Error handling`}),`\n`,_jsxs(_components.p,{children:[`Many SDK functions return an object with nullable `,_jsx(_components.code,{children:`data`}),` and `,_jsx(_components.code,{children:`error`}),` fields instead of throwing. Checking that one is defined narrows the other to non-nullable in the opposite code path. Errors are always a discriminated union with a `,_jsx(_components.code,{children:`_tag`}),` or `,_jsx(_components.code,{children:`type`}),` field as the discriminator. Some error types include extra fields with details about the error.`]}),`\n`,_jsx(_components.p,{children:`For example, an error when generating a user quote could be:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`7`,language:`typescript`,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:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`7`,children:[_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:`#953800`,\"--shiki-dark\":`#C8C8C8`},children:` _tag`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'WithdrawLimitReached'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#C8C8C8`},children:` token`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'USDT'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#C8C8C8`},children:` chain`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'ETHEREUM'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#C8C8C8`},children:` receiveAmount`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'5000'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#C8C8C8`},children:` maxWithdrawAmount`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'1000'`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Amounts in errors are decimal strings in whole token units, as everywhere in the API. See `,_jsx(_components.a,{href:`/api-integration/core-concepts#errors`,children:`Errors`}),` for the common error names and what to do about them.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Concepts","og:title":"Concepts | Rhino.fi","description":"Learn about the core concepts of the SDK.","href":"/sdk/concepts"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Bridge and chain configs","slug":"bridge-and-chain-configs","depth":2,"children":[]},{"title":"Chain adapters","slug":"chain-adapters","depth":2,"children":[]},{"title":"Supported chains and tokens","slug":"supported-chains-and-tokens","depth":2,"children":[]},{"title":"Error handling","slug":"error-handling","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"rhinofi","siteName":"rhino.fi - Docs","title":"Concepts | Rhino.fi","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-21T13:47:14.134Z","originalFileLocation":"sdk/concepts.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=\"Learn about the core concepts of the SDK.\">\u003cmeta data-mint-head name=\"application-name\" content=\"rhino.fi - Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/rhinofi/PNn_yjvIpiQYKdTH/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/rhinofi/PNn_yjvIpiQYKdTH/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/rhinofi/PNn_yjvIpiQYKdTH/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/rhinofi/PNn_yjvIpiQYKdTH/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/rhinofi/PNn_yjvIpiQYKdTH/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/rhinofi/PNn_yjvIpiQYKdTH/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/rhinofi/PNn_yjvIpiQYKdTH/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/rhinofi/PNn_yjvIpiQYKdTH/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/rhinofi/PNn_yjvIpiQYKdTH/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Concepts | Rhino.fi\">\u003cmeta data-mint-head property=\"og:description\" content=\"Learn about the core concepts of the SDK.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"rhino.fi - Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.rhino.fi/sdk/concepts\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://rhinofi.mintlify.app/_mintlify/api/og/v2?division=SDK\u0026amp;title=Concepts\u0026amp;description=Learn+about+the+core+concepts+of+the+SDK.\u0026amp;theme=484fc511abe23cc78a1d37b7\u0026amp;signature=47197845391406d2600da15fc48aba1cd91c999a621ea1b7abec15a37e86f998\">\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=\"Concepts | Rhino.fi\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Learn about the core concepts of the SDK.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://rhinofi.mintlify.app/_mintlify/api/og/v2?division=SDK\u0026amp;title=Concepts\u0026amp;description=Learn+about+the+core+concepts+of+the+SDK.\u0026amp;theme=484fc511abe23cc78a1d37b7\u0026amp;signature=47197845391406d2600da15fc48aba1cd91c999a621ea1b7abec15a37e86f998\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/rhinofi/PNn_yjvIpiQYKdTH/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"rhino.fi - Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#EC6530\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.rhino.fi/sdk/concepts\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/sdk/concepts.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.rhino.fi/#organization\",\"name\":\"rhino.fi - Docs\",\"url\":\"https://docs.rhino.fi\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/rhinofi/HGZOBv0k7QrdOe9G/logo/light.svg?fit=max\u0026auto=format\u0026n=HGZOBv0k7QrdOe9G\u0026q=85\u0026s=f00220627b114f0d5385756ccb61f55e\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.rhino.fi#website\",\"name\":\"rhino.fi - Docs\",\"url\":\"https://docs.rhino.fi\",\"publisher\":{\"@id\":\"https://docs.rhino.fi/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.rhino.fi/sdk/concepts#webpage\",\"url\":\"https://docs.rhino.fi/sdk/concepts\",\"name\":\"Concepts\",\"description\":\"Learn about the core concepts of the SDK.\",\"dateModified\":\"2026-10-21T13:47:14.134Z\",\"isPartOf\":{\"@id\":\"https://docs.rhino.fi#website\"},\"breadcrumb\":{\"@id\":\"https://docs.rhino.fi/sdk/concepts#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.rhino.fi/sdk/concepts#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"SDK\",\"item\":\"https://docs.rhino.fi/sdk/quickstart\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Concepts\",\"item\":\"https://docs.rhino.fi/sdk/concepts\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.rhino.fi/sdk/concepts#article\",\"headline\":\"Concepts\",\"name\":\"Concepts\",\"description\":\"Learn about the core concepts of the SDK.\",\"url\":\"https://docs.rhino.fi/sdk/concepts\",\"mainEntityOfPage\":{\"@id\":\"https://docs.rhino.fi/sdk/concepts#webpage\"},\"dateModified\":\"2026-10-21T13:47:14.134Z\",\"publisher\":{\"@id\":\"https://docs.rhino.fi/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.rhino.fi#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"rhino.fi - Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"rhino.fi - Docs","nav":{"global":{"anchors":[{"anchor":"Rhino.fi Console","icon":"code","href":"https://console.rhino.fi"},{"anchor":"Website","icon":"globe","href":"https://rhino.fi/"},{"anchor":"Blog","icon":"newspaper","href":"https://rhino.fi/blog/"}]},"tabs":[{"tab":"Guides","groups":[{"group":"Get Started","pages":[{"title":"Get Started","sidebarTitle":"Overview","href":"/get-started/introduction"},{"title":"What is Rhino.fi?","href":"/get-started/what-is-rhino"},{"title":"Fees","href":"/get-started/fees-and-limits"},{"title":"Limits ","href":"/get-started/limits"},{"title":"Rhino Console","href":"/get-started/rhino-console"},{"group":"Extensions","pages":[{"title":"Extensions","href":"/get-started/extensions"},{"title":"Enhanced Compliance \u0026 Risk Management","href":"/get-started/extensions/enhanced-compliance"},{"title":"Automated Actions","href":"/get-started/extensions/automated-onchain-actions"},{"title":"1:1 Stablecoin Settlement","href":"/get-started/extensions/stablecoin-swaps"},{"title":"Advanced Fee \u0026 Limit Management","href":"/get-started/extensions/advanced-fee-management"},{"title":"Custom Chain \u0026 Token Support","href":"/get-started/extensions/custom-chain-token-support"},{"title":"Tron, Solana and Bitcoin Access","href":"/get-started/extensions/tron-access"}]},{"title":"Supported Chains and Tokens","href":"/get-started/supported-chains"}]},{"group":"SDK","pages":[{"title":"Quickstart","href":"/sdk/quickstart"},{"title":"Smart Deposit Addresses","href":"/sdk/smart-deposits"},{"group":"Bridging","pages":[{"title":"Bridge","href":"/sdk/bridge-functions/bridge"},{"title":"Prepare bridge","href":"/sdk/bridge-functions/prepare-bridge"},{"title":"Bridge and swap","href":"/sdk/bridge-and-swap"},{"title":"Bridge API","href":"/sdk/bridge-api"},{"title":"Interacting with Stellar","href":"/interacting-with-stellar"},{"title":"Interacting with Bitcoin","description":null,"href":"/interacting-with-bitcoin"}]},{"title":"Concepts","href":"/sdk/concepts"},{"title":"Token Prices","description":"Learn how to easily fetch token prices through the SDK.","href":"/sdk/token-prices"},{"group":"Chain Adapters","pages":[{"title":"Chain Adapters Overview","href":"/sdk/chain-adapters/overview"},{"title":"EVM Chain Adapter","href":"/sdk/chain-adapters/evm-chains"},{"title":"Solana Chain Adapter","href":"/sdk/chain-adapters/solana"},{"title":"Starknet Chain Adapter","href":"/sdk/chain-adapters/starknet"},{"title":"Ton Chain Adapter","href":"/sdk/chain-adapters/ton"},{"title":"Tron Chain Adapter","href":"/sdk/chain-adapters/tron"},{"title":"Paradex Chain Adapter","href":"/sdk/chain-adapters/paradex"},{"title":"Custom chain adapters","href":"/sdk/chain-adapters/custom-chain-adapters"}]}]},{"group":"Migration guides","pages":[{"title":"To SDK version 1.x","href":"/migration-guides/to-1x"},{"title":"From API to SDK","href":"/migration-guides/from-api"}]},{"group":"Webhook","pages":[{"group":"Setup","pages":[{"title":"Server setup","href":"/webhook/endpoint-setup"},{"title":"Subscribe to webhooks","href":"/webhook/subscribe"},{"title":"Verify signature","href":"/webhook/verify-webhook-signature"},{"title":"Get missed events","href":"/webhook/get-missed-events"}]},{"title":"Events List","href":"/webhook/events-list"}]},{"group":"API Integration","pages":[{"title":"Overview","href":"/api-integration/introduction"},{"title":"Authentication","href":"/api-integration/authentication"},{"title":"Core concepts","href":"/api-integration/core-concepts"},{"title":"Smart Deposit Addresses","href":"/api-integration/smart-deposits"},{"title":"Bridge transfers","href":"/api-integration/bridge"},{"title":"Track transactions","href":"/api-integration/status-history"},{"title":"Go-live checklist","href":"/api-integration/go-live"}]},{"group":"Smart Contracts","pages":[{"title":"Overview","href":"/contracts/contract-examples"},{"group":"Direct Integration","pages":[{"title":"EVM (Ethereum / L2s)","href":"/contracts/evm"},{"title":"Solana Contracts","href":"/contracts/solana"},{"title":"Starknet Contracts","href":"/contracts/starknet"},{"title":"TON Contracts","href":"/contracts/ton"},{"title":"TRON Contracts","href":"/contracts/tron"}]}]},{"group":"Widgets","pages":[{"title":"iframe Widget","href":"/widget/widget"},{"title":"iframe SDA Widget","href":"/widget/sda-widget"}]},{"group":"General information","pages":[{"title":"Contract addresses","href":"/general/contract-addresses"},{"title":"Status page","href":"/general/status-page"}]}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/api-reference/introduction"}]}]},"basePath":"","title":"Concepts | Rhino.fi","buildId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","deploymentId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","dynamics":[],"chunks":[]}