Inspect intent messages and coordinate signatures across custom owner implementations.
Use getTransactionMessages to inspect the ordered signing requests for a prepared transaction. Requests can carry EIP-712, personal-sign, EIP-7702, or WebAuthn payloads. Let the SDK create the proofs and account-specific envelopes.
Use these requests to render an approval screen, audit the requested operation, or send metadata to an external coordinator. In the signed result, proofs[i] answers quote.signingRequests[i]. Never sort, filter, or deduplicate that vector, even when two payloads look identical. Pass { intentId } as the second argument to inspect a quote other than prepared.quotes.best.
Do not sign these messages independently and construct a submitTransaction
payload by hand. Raw EIP-712 signatures do not include every validator and
account-specific envelope assembled by the SDK.
The accounts configured in evm.owners are viem Account or WebAuthnAccount objects. Implement their signing methods with your own HSM, MPC service, custody provider, or remote approval flow. The SDK calls those methods while preserving the account’s required encoding.For the normal single-process flow, signTransaction automatically collects required EIP-7702 delegations as well as account proofs:
const signed = await rhinestoneAccount.signTransaction(prepared);const result = await rhinestoneAccount.submitTransaction(signed);await rhinestoneAccount.waitForExecution(result);
A managed Solana entry takes one viem secp256k1 Account or WebAuthnAccount under solana.owner. For an existing ECDSA role, adapt your remote signer with toAccount and forward signMessage unchanged:
import { toAccount } from 'viem/accounts'const remoteOwner = toAccount({ address: remoteSigner.address, signMessage: (parameters) => remoteSigner.signMessage(parameters), async signTypedData() { throw new Error('Typed-data signing is not enabled by this adapter') }, async signTransaction() { throw new Error('Raw transaction signing is not enabled by this adapter') },})const solanaAccount = await rhinestone.createAccount({ solana: { swig, owner: { type: 'ecdsa', account: remoteOwner } },})
Here remoteSigner is your authenticated viem-compatible signing adapter, rhinestone is the shared SDK instance, and swig is saved state with that key already authorized. Authorize every remote request. Preserve viem message semantics, including raw bytes and Ethereum personal-sign framing; do not hash or prefix the SDK message twice. Let the SDK encode the final Solana proof.Spending through an existing role needs the account address and signMessage. Creating a Swig additionally needs the corresponding 65-byte, 0x04-prefixed uncompressed secp256k1 publicKey exposed on the configured account; the SDK verifies it derives the account address. An address-only remote adapter cannot deploy a new root. Authority enrollment helpers also need the actual public key, not an EVM address. Obtain it from the signer provider without exporting the private key. A provider’s Ed25519 Solana wallet is not a substitute.For passkeys, reuse the shared credential setup and restoration. Use normal signTransaction for supported Solana flows; independent owner contribution assembly remains EVM-only. See Solana support and account deployment.
ECDSA, passkey, and multi-factor smart-account owners can approve the same prepared transaction in separate processes. Each process must receive the same complete prepared transaction and sign the same quote. These snippets continue an existing managed EVM account setup with ownerA and ownerB in its configured owner set:
For a multi-factor account, also pass the factor’s validatorId with each owner. assembleTransaction orders owners for encoding but rejects duplicate contributions, unknown owners, mixed intent IDs, and signatures below the configured threshold.Keep returned owner contributions opaque. Pass them back unchanged; do not reconstruct their fields or cast them to a hand-written transport schema. When transporting prepared artifacts and contributions, use a serialization format that preserves bigint values and the complete SDK objects.
These indexed contributions bind intentId, requestSetId, and requestIndex to a proof. Preserve them unchanged. Assembly checks that they belong to the selected quote’s request set and that every required slot is covered. Do not append them manually to a proof vector. Normal signing does not need this separate step.
Keep the complete prepared transaction, including request, unchanged across signers. Preparing again can select a different quote or request set. Earlier SDK artifact formats are rejected; there is no automatic migration or re-quote.
Submit before the selected quote expires. Re-prepare and collect new signatures after expiry.
Keep the SDK’s local owner and threshold configuration synchronized with on-chain changes.
Independent assembly is limited to supported managed EVM owner validators and exposed authorization slots. Target-execution requests are not a blanket prohibition: supported EIP-712 slots can be assembled. EOA account mode, session keys, K1/ERC-7739, and Solana independent owner assembly are not supported. Use the normal signing flow where supported; if assembly raises IndependentSigningNotSupportedError, do not bypass it.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Rhinestone","colors":{"primary":"#4f41ef","light":"#8479ff","dark":"#3428d1"},"logo":{"light":"https://mintcdn.com/rhinestone/IVpDy9zUkncYAe5u/logo/light.svg?fit=max\u0026auto=format\u0026n=IVpDy9zUkncYAe5u\u0026q=85\u0026s=6868a5854576ff60d371d5fdc0ae55c9","dark":"https://mintcdn.com/rhinestone/IVpDy9zUkncYAe5u/logo/dark.svg?fit=max\u0026auto=format\u0026n=IVpDy9zUkncYAe5u\u0026q=85\u0026s=2f9bff4fef6da993b8782b8e5d7357c5"},"favicon":"https://mintcdn.com/rhinestone/BVnq0VV8MigHINpS/favicon.svg?fit=max\u0026auto=format\u0026n=BVnq0VV8MigHINpS\u0026q=85\u0026s=25439e41b789b8369c52fa15ceae2644","appearance":{"default":"dark","strict":true},"background":{"color":{"dark":"#0C0C0C"}},"navbar":{"links":[{"href":"https://dashboard.rhinestone.dev","label":"Dashboard"},{"href":"https://github.com/rhinestonewtf","label":"GitHub"}]},"icons":{"library":"lucide"},"contextual":{"options":["copy","view","claude","chatgpt"],"display":"header"},"styling":{"latex":true},"navigation":{"global":{"anchors":[{"anchor":"Create API Key","icon":"key","href":"https://tally.so/r/wg22x4"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"rhinestone","hasAudioNarration":false,"actualSubdomain":"rhinestone","customDomains":["docs.rhinestone.dev"],"gitSource":{"type":"github","owner":"rhinestonewtf","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6aeb4295a60f76c94453464a","collectionId":"7618524b-8144-4f55-a620-58d79fbeddf2","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6aeb4295a60f76c94453464a"},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6aeb4295a60f76c94453464a","clientVersion":"0.0.4076","searchFilterCounts":[{"language":"default","tag":"Wallets","count":153},{"language":"default","tag":"Custom signer","count":107},{"language":"default","tag":"Deposits","count":88},{"language":"default","tag":"SDK reference","count":74},{"language":"default","tag":"API Reference","count":67},{"language":"default","tag":"Transactions","count":30},{"language":"default","tag":"Account","count":28},{"language":"default","tag":"Overview","count":25},{"language":"default","tag":"Actions","count":25},{"language":"default","tag":"Session keys","count":21}]},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"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},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":":root{--background: #0C0C0C}.vm-code-group{--vm-menu-bg: #fff;--vm-menu-border: rgb(0 0 0 / 10%);--vm-hover: rgb(0 0 0 / 5%);margin:1.5rem 0;border:1px solid #404045;border-radius:12px}.dark .vm-code-group{--vm-menu-bg: #171717;--vm-menu-border: rgb(255 255 255 / 10%);--vm-hover: rgb(255 255 255 / 7%)}.vm-code-group-header{display:flex;align-items:center;justify-content:space-between;gap:0.75rem;padding:0.375rem 0.75rem;border-bottom:1px solid #404045;font-size:0.8125rem}.vm-code-caption{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;opacity:0.65}.vm-code-selector{position:relative;flex:none}.vm-code-trigger,.vm-code-option{display:flex;align-items:center;gap:0.5rem;min-height:32px;padding:0.375rem 0.5rem;border:0;border-radius:6px;background:transparent;color:inherit;font:inherit;line-height:1.25;cursor:pointer}.vm-code-trigger:hover,.vm-code-trigger[aria-expanded=\"true\"],.vm-code-option:hover,.vm-code-option:focus{background:var(--vm-hover)}.vm-code-trigger:focus-visible,.vm-code-option:focus-visible{outline:2px solid #8b7bf7;outline-offset:2px}.vm-code-group .vm-code-icon{display:block;flex:none;width:16px;height:16px;margin:0;border-radius:0}.vm-code-chevron{margin-left:0.125rem;opacity:0.55;transition:transform 150ms ease}.vm-code-trigger[aria-expanded=\"true\"] .vm-code-chevron{transform:rotate(180deg)}.vm-code-menu{position:absolute;top:calc(100% + 6px);right:0;z-index:30;min-width:156px;padding:4px;border:1px solid var(--vm-menu-border);border-radius:10px;background:var(--vm-menu-bg);box-shadow:0 8px 24px rgb(0 0 0 / 18%)}.vm-code-option{width:100%;text-align:left}.vm-code-check{margin-left:auto;opacity:0.65}@media (pointer: coarse){.vm-code-trigger,.vm-code-option{min-height:44px}}@media (prefers-reduced-motion: reduce){.vm-code-chevron{transition:none}}.vm-code-group-panel>*{margin:0!important;border:0!important;border-radius:0 0 12px 12px;box-shadow:none!important}.vm-code-group-panel[hidden]{display:none}.prose table{display:table}table{border-collapse:separate;border-spacing:0;border:1px solid #404045;border-radius:8px;width:fit-content!important}table th,table td{border-right:1px solid #404045;border-bottom:1px solid #404045;padding:12px 16px!important}table th:last-child,table td:last-child{border-right:none}table tr:last-child td{border-bottom:none}table th{background-color:#201E2C}table th:first-child{border-radius:8px 0 0 0}table th:last-child{border-radius:0 8px 0 0}[data-component-name=\"mermaid-controls-wrapper\"]{display:none!important}.mermaid svg .actor{fill:#17132E!important;stroke:#373352!important}.mermaid svg rect.actor{rx:6;ry:6}.mermaid svg text.actor>tspan{fill:#D3CFF7!important}.mermaid svg .actor-line{stroke:#464359!important;stroke-width:1!important}.mermaid svg .messageLine0,.mermaid svg .messageLine1{stroke:#464359!important;stroke-width:1.5!important}.mermaid svg #arrowhead path,.mermaid svg [id$=\"-arrowhead\"] path{fill:#464359!important;stroke:#464359!important}.mermaid svg #crosshead path,.mermaid svg [id$=\"-crosshead\"] path{stroke:#464359!important}.mermaid svg .messageText{fill:#C7C6CC!important}.mermaid svg .activation0,.mermaid svg .activation1,.mermaid svg .activation2{fill:#17132E!important;stroke:#373352!important}.mermaid svg .note{fill:#17132E!important;stroke:#373352!important}.mermaid svg .noteText,.mermaid svg .noteText>tspan{fill:#C7C6CC!important}.mermaid svg .loopText,.mermaid svg .loopText>tspan{fill:#C7C6CC!important}.mermaid svg .loopLine{stroke:#373352!important}.mermaid svg .labelBox{fill:#17132E!important;stroke:#373352!important}.mermaid svg .labelText,.mermaid svg .labelText>tspan{fill:#C7C6CC!important}.mermaid svg .sequenceNumber{fill:#D3CFF7!important}.mermaid svg .node rect,.mermaid svg .node circle,.mermaid svg .node ellipse,.mermaid svg .node polygon,.mermaid svg .node path{fill:#17132E!important;stroke:#373352!important}.mermaid svg .nodeLabel,.mermaid svg .node .label{color:#D3CFF7!important;fill:#D3CFF7!important}.mermaid svg .flowchart-link{stroke:#464359!important}.mermaid svg .edgeLabel,.mermaid svg .edge-label{color:#C7C6CC!important;fill:#C7C6CC!important}.mermaid .labelBkg,.mermaid .labelBkg *{background:transparent!important}.mermaid svg .marker{fill:#464359!important;stroke:#464359!important}.dark #sidebar [data-active=\"true\"]{background-color:#141414!important;border-radius:6px}.deposit-demo{container-type:inline-size}.deposit-demo-loading{position:absolute;inset:0;display:grid;place-items:center;margin:0}.deposit-demo-stage:has(iframe[data-ready=\"true\"]) .deposit-demo-loading{visibility:hidden}@container (max-width: 411px){.deposit-demo-stage{--deposit-demo-height: 629px}}"}],"page":{"pagePath":"wallets/custom-signer/signing/custom-signing","slug":"/wallets/custom-signer/signing/custom-signing","pageMetadata":{"title":"Custom signing","description":"Inspect intent messages and coordinate signatures across custom owner implementations.","href":"/wallets/custom-signer/signing/custom-signing"},"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: \"Inspect intent messages and coordinate signatures across custom owner implementations.\"\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`,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:[_jsxs(_components.p,{children:[`Use `,_jsx(_components.code,{children:`getTransactionMessages`}),` to inspect the ordered signing requests for a prepared transaction. Requests can carry EIP-712, personal-sign, EIP-7702, or WebAuthn payloads. Let the SDK create the proofs and account-specific envelopes.`]}),`\n`,_jsx(Heading,{level:`2`,id:`inspect-the-messages`,children:`Inspect the messages`}),`\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:[_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:` prepared`}),_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:` rhinestoneAccount`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`prepareTransaction`}),_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:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\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:` requests`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` rhinestoneAccount`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`getTransactionMessages`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`prepared`}),_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:` (`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` request`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` of`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` requests`}),_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\":`#9CDCFE`},children:` console`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`log`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`request`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`purpose`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`request`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`account`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`request`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`authority`}),_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\":`#9CDCFE`},children:` console`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`log`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`request`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`scope`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`request`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`validity`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`request`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`payload`}),_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:[`Use these requests to render an approval screen, audit the requested operation, or send metadata to an external coordinator. In the signed result, `,_jsx(_components.code,{children:`proofs[i]`}),` answers `,_jsx(_components.code,{children:`quote.signingRequests[i]`}),`. Never sort, filter, or deduplicate that vector, even when two payloads look identical. Pass `,_jsx(_components.code,{children:`{ intentId }`}),` as the second argument to inspect a quote other than `,_jsx(_components.code,{children:`prepared.quotes.best`}),`.`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`Do not sign these messages independently and construct a `,_jsx(_components.code,{children:`submitTransaction`}),`\npayload by hand. Raw EIP-712 signatures do not include every validator and\naccount-specific envelope assembled by the SDK.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`provide-a-custom-signer`,children:`Provide a custom signer`}),`\n`,_jsxs(_components.p,{children:[`The accounts configured in `,_jsx(_components.code,{children:`evm.owners`}),` are viem `,_jsx(_components.code,{children:`Account`}),` or `,_jsx(_components.code,{children:`WebAuthnAccount`}),` objects. Implement their signing methods with your own HSM, MPC service, custody provider, or remote approval flow. The SDK calls those methods while preserving the account’s required encoding.`]}),`\n`,_jsxs(_components.p,{children:[`For the normal single-process flow, `,_jsx(_components.code,{children:`signTransaction`}),` automatically collects required EIP-7702 delegations as well as account proofs:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`3`,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:`3`,children:[_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:` signed`}),_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:` rhinestoneAccount`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`signTransaction`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`prepared`}),_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:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` result`}),_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:` rhinestoneAccount`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`submitTransaction`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`signed`}),_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:`await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` rhinestoneAccount`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`waitForExecution`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`result`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`solana-remote-signers`,children:`Solana remote signers`}),`\n`,_jsxs(_components.p,{children:[`A managed Solana entry takes one viem secp256k1 `,_jsx(_components.code,{children:`Account`}),` or `,_jsx(_components.code,{children:`WebAuthnAccount`}),` under `,_jsx(_components.code,{children:`solana.owner`}),`. For an existing ECDSA role, adapt your remote signer with `,_jsx(_components.code,{children:`toAccount`}),` and forward `,_jsx(_components.code,{children:`signMessage`}),` unchanged:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`15`,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:`15`,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:`toAccount`}),_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:` 'viem/accounts'`})]}),`\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:` remoteOwner`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` toAccount`}),_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\":`#9CDCFE`},children:` address:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` remoteSigner`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_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:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` signMessage`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`parameters`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`=>`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` remoteSigner`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`signMessage`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`parameters`}),_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:` async`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` signTypedData`}),_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:` throw`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` new`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` Error`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'Typed-data signing is not enabled by this adapter'`}),_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:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` async`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` signTransaction`}),_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:` throw`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` new`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` Error`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'Raw transaction signing is not enabled by this adapter'`}),_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`,_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:` solanaAccount`}),_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:` rhinestone`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`createAccount`}),_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\":`#9CDCFE`},children:` solana:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`swig`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`owner:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`type:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'ecdsa'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`account:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` remoteOwner`}),_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:[`Here `,_jsx(_components.code,{children:`remoteSigner`}),` is your authenticated viem-compatible signing adapter, `,_jsx(_components.code,{children:`rhinestone`}),` is the shared SDK instance, and `,_jsx(_components.code,{children:`swig`}),` is saved state with that key already authorized. Authorize every remote request. Preserve viem message semantics, including raw bytes and Ethereum personal-sign framing; do not hash or prefix the SDK message twice. Let the SDK encode the final Solana proof.`]}),`\n`,_jsxs(_components.p,{children:[`Spending through an existing role needs the account address and `,_jsx(_components.code,{children:`signMessage`}),`. Creating a Swig additionally needs the corresponding 65-byte, `,_jsx(_components.code,{children:`0x04`}),`-prefixed uncompressed secp256k1 `,_jsx(_components.code,{children:`publicKey`}),` exposed on the configured account; the SDK verifies it derives the account address. An address-only remote adapter cannot deploy a new root. Authority enrollment helpers also need the actual public key, not an EVM address. Obtain it from the signer provider without exporting the private key. A provider’s Ed25519 Solana wallet is not a substitute.`]}),`\n`,_jsxs(_components.p,{children:[`For passkeys, reuse the `,_jsx(_components.a,{href:`/wallets/custom-signer/account-setup/native-signers/passkeys`,children:`shared credential setup and restoration`}),`. Use normal `,_jsx(_components.code,{children:`signTransaction`}),` for supported Solana flows; independent owner contribution assembly remains EVM-only. See `,_jsx(_components.a,{href:`/wallets/custom-signer/solana-support`,children:`Solana support`}),` and `,_jsx(_components.a,{href:`/transactions/relaying/account-deployment`,children:`account deployment`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`collect-owner-approvals-independently`,children:`Collect owner approvals independently`}),`\n`,_jsxs(_components.p,{children:[`ECDSA, passkey, and multi-factor smart-account owners can approve the same prepared transaction in separate processes. Each process must receive the same complete prepared transaction and sign the same quote. These snippets continue an existing managed EVM account setup with `,_jsx(_components.code,{children:`ownerA`}),` and `,_jsx(_components.code,{children:`ownerB`}),` in its configured owner set:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`15`,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:`15`,children:[_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:` signatureA`}),_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:` rhinestoneAccount`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`signTransaction`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`prepared`}),_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\":`#9CDCFE`},children:` owner:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` ownerA`}),_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\":`#9CDCFE`},children:` intentId:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` prepared`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`quotes`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`best`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`intentId`}),_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\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` signatureB`}),_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:` rhinestoneAccount`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`signTransaction`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`prepared`}),_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\":`#9CDCFE`},children:` owner:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` ownerB`}),_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\":`#9CDCFE`},children:` intentId:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` prepared`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`quotes`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`best`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`intentId`}),_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\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` signed`}),_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:` rhinestoneAccount`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`assembleTransaction`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`prepared`}),_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\":`#9CDCFE`},children:` signatureA`}),_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\":`#9CDCFE`},children:` signatureB`}),_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:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` result`}),_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:` rhinestoneAccount`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`submitTransaction`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`signed`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`For a multi-factor account, also pass the factor’s `,_jsx(_components.code,{children:`validatorId`}),` with each owner. `,_jsx(_components.code,{children:`assembleTransaction`}),` orders owners for encoding but rejects duplicate contributions, unknown owners, mixed intent IDs, and signatures below the configured threshold.`]}),`\n`,_jsxs(_components.p,{children:[`Keep returned owner contributions opaque. Pass them back unchanged; do not reconstruct their fields or cast them to a hand-written transport schema. When transporting prepared artifacts and contributions, use a serialization format that preserves `,_jsx(_components.code,{children:`bigint`}),` values and the complete SDK objects.`]}),`\n`,_jsx(Heading,{level:`3`,id:`collect-delegations-separately`,children:`Collect delegations separately`}),`\n`,_jsx(_components.p,{children:`For independent assembly that also needs EIP-7702 delegation proofs, replace the assembly step above with:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`8`,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:`8`,children:[_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:` proofs`}),_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:` rhinestoneAccount`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`signAuthorizations`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`prepared`}),_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\":`#9CDCFE`},children:` intentId:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` prepared`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`quotes`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`best`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`intentId`}),_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:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` signed`}),_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:` rhinestoneAccount`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`assembleTransaction`}),_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\":`#9CDCFE`},children:` prepared`}),_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:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`signatureA`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`signatureB`}),_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:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`proofs`}),_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:[`These indexed contributions bind `,_jsx(_components.code,{children:`intentId`}),`, `,_jsx(_components.code,{children:`requestSetId`}),`, and `,_jsx(_components.code,{children:`requestIndex`}),` to a proof. Preserve them unchanged. Assembly checks that they belong to the selected quote’s request set and that every required slot is covered. Do not append them manually to a proof vector. Normal signing does not need this separate step.`]}),`\n`,_jsx(Heading,{level:`2`,id:`constraints`,children:`Constraints`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Keep the complete prepared transaction, including `,_jsx(_components.code,{children:`request`}),`, unchanged across signers. Preparing again can select a different quote or request set. Earlier SDK artifact formats are rejected; there is no automatic migration or re-quote.`]}),`\n`,_jsx(_components.li,{children:`Submit before the selected quote expires. Re-prepare and collect new signatures after expiry.`}),`\n`,_jsx(_components.li,{children:`Keep the SDK’s local owner and threshold configuration synchronized with on-chain changes.`}),`\n`,_jsxs(_components.li,{children:[`Independent assembly is limited to supported managed EVM owner validators and exposed authorization slots. Target-execution requests are not a blanket prohibition: supported EIP-712 slots can be assembled. EOA account mode, session keys, K1/ERC-7739, and Solana independent owner assembly are not supported. Use the normal signing flow where supported; if assembly raises `,_jsx(_components.code,{children:`IndependentSigningNotSupportedError`}),`, do not bypass it.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`See the generated references for `,_jsx(_components.a,{href:`/wallets/custom-signer/sdk-reference/account/transactions/get-transaction-messages`,children:_jsx(_components.code,{children:`getTransactionMessages`})}),`, `,_jsx(_components.a,{href:`/wallets/custom-signer/sdk-reference/account/transactions/sign-transaction`,children:_jsx(_components.code,{children:`signTransaction`})}),`, and `,_jsx(_components.a,{href:`/wallets/custom-signer/sdk-reference/account/transactions/assemble-transaction`,children:_jsx(_components.code,{children:`assembleTransaction`})}),`.`]})]})}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":"Custom signing","description":"Inspect intent messages and coordinate signatures across custom owner implementations.","href":"/wallets/custom-signer/signing/custom-signing"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Inspect the messages","slug":"inspect-the-messages","depth":2,"children":[]},{"title":"Provide a custom signer","slug":"provide-a-custom-signer","depth":2,"children":[]},{"title":"Solana remote signers","slug":"solana-remote-signers","depth":2,"children":[]},{"title":"Collect owner approvals independently","slug":"collect-owner-approvals-independently","depth":2,"children":[{"title":"Collect delegations separately","slug":"collect-delegations-separately","depth":3,"children":[]}]},{"title":"Constraints","slug":"constraints","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"rhinestone","siteName":"Rhinestone","title":"Custom signing - Rhinestone","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-13T17:05:39.080Z","originalFileLocation":"wallets/custom-signer/signing/custom-signing.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=\"dark\";if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"dark\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Inspect intent messages and coordinate signatures across custom owner implementations.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Rhinestone\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/rhinestone/3aadr-awyf35tysK/_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/rhinestone/3aadr-awyf35tysK/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/rhinestone/3aadr-awyf35tysK/_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/rhinestone/3aadr-awyf35tysK/_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/rhinestone/3aadr-awyf35tysK/_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/rhinestone/3aadr-awyf35tysK/_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/rhinestone/3aadr-awyf35tysK/_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/rhinestone/3aadr-awyf35tysK/_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/rhinestone/3aadr-awyf35tysK/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Custom signing - Rhinestone\">\u003cmeta data-mint-head property=\"og:description\" content=\"Inspect intent messages and coordinate signatures across custom owner implementations.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Rhinestone\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.rhinestone.dev/wallets/custom-signer/signing/custom-signing\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://rhinestone.mintlify.site/_mintlify/api/og/v2?division=Signing\u0026amp;title=Custom+signing\u0026amp;description=Inspect+intent+messages+and+coordinate+signatures+across+custom+owner+implementations.\u0026amp;theme=480304d2cd15a3be6f477401\u0026amp;signature=60201c457a4531a56aa0ad69c5fdfb932330d7632ddd9544ea9886adb0b2677a\">\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=\"Custom signing - Rhinestone\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Inspect intent messages and coordinate signatures across custom owner implementations.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://rhinestone.mintlify.site/_mintlify/api/og/v2?division=Signing\u0026amp;title=Custom+signing\u0026amp;description=Inspect+intent+messages+and+coordinate+signatures+across+custom+owner+implementations.\u0026amp;theme=480304d2cd15a3be6f477401\u0026amp;signature=60201c457a4531a56aa0ad69c5fdfb932330d7632ddd9544ea9886adb0b2677a\">\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/rhinestone/3aadr-awyf35tysK/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Rhinestone\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#4f41ef\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.rhinestone.dev/wallets/custom-signer/signing/custom-signing\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/wallets/custom-signer/signing/custom-signing.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.rhinestone.dev/#organization\",\"name\":\"Rhinestone\",\"url\":\"https://docs.rhinestone.dev\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/rhinestone/IVpDy9zUkncYAe5u/logo/light.svg?fit=max\u0026auto=format\u0026n=IVpDy9zUkncYAe5u\u0026q=85\u0026s=6868a5854576ff60d371d5fdc0ae55c9\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.rhinestone.dev#website\",\"name\":\"Rhinestone\",\"url\":\"https://docs.rhinestone.dev\",\"publisher\":{\"@id\":\"https://docs.rhinestone.dev/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.rhinestone.dev/wallets/custom-signer/signing/custom-signing#webpage\",\"url\":\"https://docs.rhinestone.dev/wallets/custom-signer/signing/custom-signing\",\"name\":\"Custom signing\",\"description\":\"Inspect intent messages and coordinate signatures across custom owner implementations.\",\"dateModified\":\"2026-10-13T17:05:39.080Z\",\"isPartOf\":{\"@id\":\"https://docs.rhinestone.dev#website\"},\"breadcrumb\":{\"@id\":\"https://docs.rhinestone.dev/wallets/custom-signer/signing/custom-signing#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.rhinestone.dev/wallets/custom-signer/signing/custom-signing#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Signing\",\"item\":\"https://docs.rhinestone.dev/wallets/custom-signer/signing/message-and-typed-data\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Custom signing\",\"item\":\"https://docs.rhinestone.dev/wallets/custom-signer/signing/custom-signing\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.rhinestone.dev/wallets/custom-signer/signing/custom-signing#article\",\"headline\":\"Custom signing\",\"name\":\"Custom signing\",\"description\":\"Inspect intent messages and coordinate signatures across custom owner implementations.\",\"url\":\"https://docs.rhinestone.dev/wallets/custom-signer/signing/custom-signing\",\"mainEntityOfPage\":{\"@id\":\"https://docs.rhinestone.dev/wallets/custom-signer/signing/custom-signing#webpage\"},\"dateModified\":\"2026-10-13T17:05:39.080Z\",\"publisher\":{\"@id\":\"https://docs.rhinestone.dev/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.rhinestone.dev#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Rhinestone\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Rhinestone","nav":{"global":{"anchors":[{"anchor":"Create API Key","icon":"key","href":"https://tally.so/r/wg22x4"}]},"tabs":[{"tab":"Home","pages":[{"title":"Home","href":"/home/introduction"}]},{"tab":"Wallets","menu":[{"item":"Overview","pages":[{"title":"Overview","href":"/wallets/overview"}]},{"item":"Embedded wallets","pages":[{"title":"Embedded wallets","href":"/wallets/embedded-wallets/overview"}]},{"item":"Session keys","pages":[{"title":"Session keys","href":"/wallets/session-keys/overview"}]},{"item":"Recovery","pages":[{"title":"Recovery","href":"/wallets/recovery/overview"}]},{"item":"Custom signer","pages":[{"title":"Custom signer","sidebarTitle":"Overview","href":"/wallets/custom-signer/overview"},{"title":"Quickstart","href":"/wallets/custom-signer/quickstart"},{"title":"Solana support","href":"/wallets/custom-signer/solana-support"},{"group":"Account setup","public":true,"pages":[{"title":"Create an account","href":"/wallets/custom-signer/account-setup/create-an-account"},{"title":"Choose a signer","href":"/wallets/custom-signer/account-setup/choose-a-signer"},{"group":"Native signers","public":true,"pages":[{"title":"ECDSA","href":"/wallets/custom-signer/account-setup/native-signers/ecdsa"},{"title":"Passkeys","href":"/wallets/custom-signer/account-setup/native-signers/passkeys"},{"title":"Multisig","href":"/wallets/custom-signer/account-setup/native-signers/multisig"},{"title":"Multi-factor authentication","href":"/wallets/custom-signer/account-setup/native-signers/multi-factor-authentication"}]},{"group":"Embedded wallet signers","public":true,"pages":[{"title":"Privy","href":"/wallets/custom-signer/account-setup/embedded-wallet-signers/privy"},{"title":"Dynamic","href":"/wallets/custom-signer/account-setup/embedded-wallet-signers/dynamic"},{"title":"Para","href":"/wallets/custom-signer/account-setup/embedded-wallet-signers/para"},{"title":"Magic","href":"/wallets/custom-signer/account-setup/embedded-wallet-signers/magic"},{"title":"Turnkey","href":"/wallets/custom-signer/account-setup/embedded-wallet-signers/turnkey"},{"title":"Openfort","href":"/wallets/custom-signer/account-setup/embedded-wallet-signers/openfort"}]},{"group":"External wallet signers","public":true,"pages":[{"title":"External wallet signers","href":"/wallets/custom-signer/account-setup/external-wallet-signers"}]},{"group":"Account types and providers","public":true,"pages":[{"title":"EOA","href":"/wallets/custom-signer/account-setup/account-types-and-providers/eoa"},{"title":"EIP-7702","href":"/wallets/custom-signer/account-setup/account-types-and-providers/eip-7702"},{"title":"Smart account providers","href":"/wallets/custom-signer/account-setup/account-types-and-providers/smart-account-providers"},{"title":"Bring your own account","href":"/wallets/custom-signer/account-setup/account-types-and-providers/bring-your-own-account"}]}]},{"group":"Recovery","public":true,"pages":[{"title":"Set up recovery","href":"/wallets/custom-signer/recovery/set-up"},{"title":"Recover an account","href":"/wallets/custom-signer/recovery/recover-an-account"}]},{"group":"Signing","public":true,"pages":[{"title":"Message signing","description":"Create ERC-1271 signatures for messages and EIP-712 typed data.","href":"/wallets/custom-signer/signing/message-and-typed-data"},{"title":"Custom signing","href":"/wallets/custom-signer/signing/custom-signing"}]},{"group":"Configuration","public":true,"pages":[{"group":"Account types","public":true,"pages":[{"title":"EOA","description":"Configure a plain EOA for Rhinestone intents without deploying a smart account.","href":"/wallets/custom-signer/configuration/account-types/eoa"},{"title":"EIP-7702","href":"/wallets/custom-signer/configuration/account-types/eip-7702"}]},{"title":"Smart account providers","href":"/wallets/custom-signer/configuration/smart-account-providers"},{"title":"Bring your own account","href":"/wallets/custom-signer/configuration/bring-your-own-account"},{"title":"JSON-RPC providers","href":"/wallets/custom-signer/configuration/json-rpc-providers"},{"title":"ERC-4337","href":"/wallets/custom-signer/configuration/erc-4337"}]},{"group":"Integration","public":true,"pages":[{"title":"Migration guide","href":"/wallets/custom-signer/integration/migration-guide"},{"title":"Security","href":"/wallets/custom-signer/integration/security"}]},{"title":"Troubleshooting","href":"/wallets/custom-signer/troubleshooting"},{"group":"SDK reference","pages":[{"group":"RhinestoneSDK","pages":[{"title":"RhinestoneSDK","href":"/wallets/custom-signer/sdk-reference/rhinestone-sdk/rhinestone-sdk"},{"title":"createAccount","href":"/wallets/custom-signer/sdk-reference/rhinestone-sdk/create-account"},{"title":"getIntentStatus","href":"/wallets/custom-signer/sdk-reference/rhinestone-sdk/get-intent-status"},{"title":"splitIntents","href":"/wallets/custom-signer/sdk-reference/rhinestone-sdk/split-intents"},{"title":"getAppFeeBalances","href":"/wallets/custom-signer/sdk-reference/rhinestone-sdk/get-app-fee-balances"},{"title":"createSession","href":"/wallets/custom-signer/sdk-reference/rhinestone-sdk/create-session"},{"title":"validateSession","href":"/wallets/custom-signer/sdk-reference/rhinestone-sdk/validate-session"}]},{"group":"Account","pages":[{"group":"Deployment","pages":[{"title":"deploy","href":"/wallets/custom-signer/sdk-reference/account/deployment/deploy"},{"title":"deploy (Solana)","href":"/wallets/custom-signer/sdk-reference/account/deployment/deploy-solana"},{"title":"isDeployed","href":"/wallets/custom-signer/sdk-reference/account/deployment/is-deployed"},{"title":"setup","href":"/wallets/custom-signer/sdk-reference/account/deployment/setup"},{"title":"getInitData","href":"/wallets/custom-signer/sdk-reference/account/deployment/get-init-data"},{"title":"signEip7702InitData","href":"/wallets/custom-signer/sdk-reference/account/deployment/sign-eip7702-init-data"}]},{"group":"Transactions","pages":[{"title":"prepareTransaction","href":"/wallets/custom-signer/sdk-reference/account/transactions/prepare-transaction"},{"title":"getTransactionMessages","href":"/wallets/custom-signer/sdk-reference/account/transactions/get-transaction-messages"},{"title":"signTransaction","href":"/wallets/custom-signer/sdk-reference/account/transactions/sign-transaction"},{"title":"assembleTransaction","href":"/wallets/custom-signer/sdk-reference/account/transactions/assemble-transaction"},{"title":"signAuthorizations","href":"/wallets/custom-signer/sdk-reference/account/transactions/sign-authorizations"},{"title":"signIntent","href":"/wallets/custom-signer/sdk-reference/account/transactions/sign-intent"},{"title":"submitTransaction","href":"/wallets/custom-signer/sdk-reference/account/transactions/submit-transaction"}]},{"group":"User operations","pages":[{"title":"prepareUserOperation","href":"/wallets/custom-signer/sdk-reference/account/user-operations/prepare-user-operation"},{"title":"signUserOperation","href":"/wallets/custom-signer/sdk-reference/account/user-operations/sign-user-operation"},{"title":"submitUserOperation","href":"/wallets/custom-signer/sdk-reference/account/user-operations/submit-user-operation"},{"title":"sendUserOperation","href":"/wallets/custom-signer/sdk-reference/account/user-operations/send-user-operation"}]},{"group":"Signing","pages":[{"title":"signMessage","href":"/wallets/custom-signer/sdk-reference/account/signing/sign-message"},{"title":"signTypedData","href":"/wallets/custom-signer/sdk-reference/account/signing/sign-typed-data"}]},{"group":"Execution","pages":[{"title":"waitForExecution","href":"/wallets/custom-signer/sdk-reference/account/execution/wait-for-execution"}]},{"group":"Reads","pages":[{"title":"getAddress","href":"/wallets/custom-signer/sdk-reference/account/reads/get-address"},{"title":"getPortfolio","href":"/wallets/custom-signer/sdk-reference/account/reads/get-portfolio"},{"title":"getOwners","href":"/wallets/custom-signer/sdk-reference/account/reads/get-owners"},{"title":"getValidators","href":"/wallets/custom-signer/sdk-reference/account/reads/get-validators"},{"title":"getExecutors","href":"/wallets/custom-signer/sdk-reference/account/reads/get-executors"}]},{"group":"Smart sessions","pages":[{"title":"getSessionDetails","href":"/wallets/custom-signer/sdk-reference/account/smart-sessions/get-session-details"},{"title":"isSessionEnabled","href":"/wallets/custom-signer/sdk-reference/account/smart-sessions/is-session-enabled"},{"title":"signEnableSession","href":"/wallets/custom-signer/sdk-reference/account/smart-sessions/sign-enable-session"}]}]},{"group":"Actions","pages":[{"group":"ECDSA","pages":[{"title":"enable","href":"/wallets/custom-signer/sdk-reference/actions/ecdsa/enable"},{"title":"disable","href":"/wallets/custom-signer/sdk-reference/actions/ecdsa/disable"},{"title":"addOwner","href":"/wallets/custom-signer/sdk-reference/actions/ecdsa/add-owner"},{"title":"removeOwner","href":"/wallets/custom-signer/sdk-reference/actions/ecdsa/remove-owner"},{"title":"changeThreshold","href":"/wallets/custom-signer/sdk-reference/actions/ecdsa/change-threshold"}]},{"group":"Passkeys","pages":[{"title":"enable","href":"/wallets/custom-signer/sdk-reference/actions/passkeys/enable"},{"title":"disable","href":"/wallets/custom-signer/sdk-reference/actions/passkeys/disable"},{"title":"addOwner","href":"/wallets/custom-signer/sdk-reference/actions/passkeys/add-owner"},{"title":"removeOwner","href":"/wallets/custom-signer/sdk-reference/actions/passkeys/remove-owner"},{"title":"changeThreshold","href":"/wallets/custom-signer/sdk-reference/actions/passkeys/change-threshold"}]},{"group":"Recovery","pages":[{"title":"enable","href":"/wallets/custom-signer/sdk-reference/actions/recovery/enable"},{"title":"recoverEcdsaOwnership","href":"/wallets/custom-signer/sdk-reference/actions/recovery/recover-ecdsa-ownership"},{"title":"recoverPasskeyOwnership","href":"/wallets/custom-signer/sdk-reference/actions/recovery/recover-passkey-ownership"}]},{"group":"MFA","pages":[{"title":"enable","href":"/wallets/custom-signer/sdk-reference/actions/mfa/enable"},{"title":"disable","href":"/wallets/custom-signer/sdk-reference/actions/mfa/disable"},{"title":"changeThreshold","href":"/wallets/custom-signer/sdk-reference/actions/mfa/change-threshold"},{"title":"setSubValidator","href":"/wallets/custom-signer/sdk-reference/actions/mfa/set-sub-validator"},{"title":"removeSubValidator","href":"/wallets/custom-signer/sdk-reference/actions/mfa/remove-sub-validator"}]},{"group":"Modules","pages":[{"title":"installModule","href":"/wallets/custom-signer/sdk-reference/actions/modules/install-module"},{"title":"uninstallModule","href":"/wallets/custom-signer/sdk-reference/actions/modules/uninstall-module"},{"title":"deploy","href":"/wallets/custom-signer/sdk-reference/actions/modules/deploy"}]},{"group":"Smart sessions","pages":[{"title":"enable","href":"/wallets/custom-signer/sdk-reference/actions/smart-sessions/enable"},{"title":"disable","href":"/wallets/custom-signer/sdk-reference/actions/smart-sessions/disable"},{"title":"enableSession","href":"/wallets/custom-signer/sdk-reference/actions/smart-sessions/enable-session"},{"title":"disableSession","href":"/wallets/custom-signer/sdk-reference/actions/smart-sessions/disable-session"}]}]},{"group":"HyperCore","pages":[{"title":"getPerpMarket","href":"/wallets/custom-signer/sdk-reference/hyper-core/get-perp-market"},{"title":"getPerpMarkets","href":"/wallets/custom-signer/sdk-reference/hyper-core/get-perp-markets"},{"title":"getPerpPosition","href":"/wallets/custom-signer/sdk-reference/hyper-core/get-perp-position"},{"title":"getPerpPositions","href":"/wallets/custom-signer/sdk-reference/hyper-core/get-perp-positions"}]},{"group":"Solana","pages":[{"title":"solanaAddress","href":"/wallets/custom-signer/sdk-reference/solana/solana-address"},{"title":"createSolanaSwigId","href":"/wallets/custom-signer/sdk-reference/solana/create-solana-swig-id"},{"title":"addPasskey","href":"/wallets/custom-signer/sdk-reference/solana/add-passkey"},{"title":"removePasskey","href":"/wallets/custom-signer/sdk-reference/solana/remove-passkey"},{"title":"addEcdsaKey","href":"/wallets/custom-signer/sdk-reference/solana/add-ecdsa-key"},{"title":"removeEcdsaKey","href":"/wallets/custom-signer/sdk-reference/solana/remove-ecdsa-key"},{"title":"getAuthorityStatus","href":"/wallets/custom-signer/sdk-reference/solana/get-authority-status"}]},{"group":"EVM","pages":[{"title":"experimental_getV0InitData","href":"/wallets/custom-signer/sdk-reference/evm/experimental-get-v0-init-data"},{"title":"experimental_getRhinestoneInitData","href":"/wallets/custom-signer/sdk-reference/evm/experimental-get-rhinestone-init-data"},{"title":"toViewOnlyAccount","href":"/wallets/custom-signer/sdk-reference/evm/to-view-only-account"}]}]}]}]},{"tab":"Transactions","menu":[{"item":"Overview","pages":[{"title":"Overview","href":"/transactions/overview"}]},{"item":"Relaying","pages":[{"title":"Relaying","href":"/transactions/relaying/overview"}]},{"item":"Multichain","pages":[{"title":"Multichain","href":"/transactions/multichain/overview"}]},{"item":"Trading","pages":[{"title":"Trading","href":"/transactions/trading/overview"}]},{"item":"Sponsorship \u0026 monetization","pages":[{"title":"Sponsorship \u0026 monetization","href":"/transactions/sponsorship/overview"}]}],"pages":[{"title":"Transactions","href":"/transactions/overview"}]},{"tab":"Deposits","menu":[{"item":"Overview","pages":[{"title":"Overview","href":"/deposits/overview/overview"}]},{"item":"Onramps","pages":[{"title":"Onramps","href":"/deposits/onramps/overview"}]},{"item":"Crypto","pages":[{"title":"Crypto","href":"/deposits/crypto/overview"}]},{"item":"Exchanges","pages":[{"title":"Exchanges","href":"/deposits/exchanges/overview"}]},{"item":"Headless","pages":[{"title":"Headless","href":"/deposits/headless/overview"}]}],"pages":[{"title":"Deposits","href":"/deposits/overview/overview"}]},{"tab":"Fiat integrations","pages":[{"title":"Fiat integrations","href":"/fiat/overview"}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/api-reference/introduction"}]}]},"basePath":"","title":"Custom signing - Rhinestone","buildId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","deploymentId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","dynamics":[],"chunks":[]}