{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown"},"seo":{"title":"Counterfactual Wallets & Signing Accounts"},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"counterfactual-wallets--signing-accounts","__idx":0},"children":["Counterfactual Wallets & Signing Accounts"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"overview","__idx":1},"children":["Overview"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["PERS implements a counterfactual wallet system that provides users with blockchain addresses before their first transaction. The system automatically determines the best execution strategy for each transaction request."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"how-counterfactual-wallets-work","__idx":2},"children":["How Counterfactual Wallets Work"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"immediate-wallet-creation","__idx":3},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Immediate Wallet Creation"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Address Generation"]},": Users receive a deterministic wallet address immediately upon account creation"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Zero Cost"]},": No blockchain fees required for initial wallet setup"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Pre-Computed"]},": Wallet address exists mathematically before being deployed on-chain"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Receiving Tokens"]},": Users can receive tokens to their address immediately"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Multi-Chain Support"]},": Same address calculation across different blockchain networks"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"transaction-execution","__idx":4},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Transaction Execution"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When users make their first transaction, the system automatically determines whether to:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Execute immediately"]}," (for internal wallets)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Prepare for signing"]}," (for external wallets)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Provide setup guidance"]}," (when wallet configuration is needed)"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"unified-transaction-api","__idx":5},"children":["Unified Transaction API"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"single-endpoint-intelligence","__idx":6},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Single Endpoint Intelligence"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The system provides a ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["single transaction endpoint"]}," that automatically handles complexity:"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Endpoint"]},": ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /transactions"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The API automatically handles the complexity of determining execution strategy and provides appropriate responses."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"response-types","__idx":7},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Response Types"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The API returns a unified response structure that eliminates frontend complexity:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"typescript","header":{"controls":{"copy":{}}},"source":"interface TransactionRequestResponseDTO {\n  transaction: TransactionDTO;           // Always present\n  signingData?: AnyTransactionData;     // Present when client signing required\n  walletStatus: WalletSigningScenarioType; // Execution strategy indicator\n  actionable?: ActionableWalletResponse;    // Guidance when setup needed\n}\n","lang":"typescript"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"signing-account-management","__idx":8},"children":["Signing Account Management"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"signing-account-management-1","__idx":9},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Signing Account Management"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The system supports multiple signing account providers for flexible wallet integration."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"signing-account-status","__idx":10},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Signing Account Status"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["ACTIVE"]},": Account is ready for use with all required information"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["INACTIVE"]},": Account is temporarily disabled but can be reactivated"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["REVOKED"]},": Account is permanently disabled and cannot be used"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"wallet-signing-scenarios","__idx":11},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Wallet Signing Scenarios"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The system identifies different wallet states and provides appropriate responses:"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["WALLET_AND_SIGNING_READY"]},": Wallet exists with active signing capability"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["WALLET_MISSING_SIGNING_ACCOUNT"]},": Wallet exists but lacks signing account"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["WALLET_NOT_FOUND"]},": No wallet found for the user"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["WALLET_HAS_SIGNED"]},": Client has signed; awaiting broadcast/submission"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["WALLET_SIGNING_NOT_REQUIRED"]},": Transaction executes server-side, no client signature needed"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"actionable-user-guidance","__idx":12},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Actionable User Guidance"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When wallet setup is required, the system provides actionable information:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"typescript","header":{"controls":{"copy":{}}},"source":"interface ActionableWalletResponse {\n  message: string;                    // User-friendly guidance message\n  actionUrl?: string;                 // URL for wallet setup/signup\n  actionType: \"SIGN_UP\" | \"LINK_WALLET\" | \"CREATE_SIGNING_ACCOUNT\" | \"NONE\";\n  priority: \"LOW\" | \"MEDIUM\" | \"HIGH\";\n  category: \"WALLET_CREATION\" | \"WALLET_CONFIGURATION\" | \"WALLET_READY\";\n}\n","lang":"typescript"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"api-integration-patterns","__idx":13},"children":["API Integration Patterns"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"unified-transaction-creation","__idx":14},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Unified Transaction Creation"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Frontend applications use a single endpoint regardless of wallet type or execution strategy:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"typescript","header":{"controls":{"copy":{}}},"source":"// Single API call for all transaction types\nconst response = await fetch(\"/transactions\", {\n  method: \"POST\",\n  headers: {\n    \"Authorization\": `Bearer ${userToken}`,\n    \"X-Project-Key\": projectKey, // Context only\n    \"Content-Type\": \"application/json\"\n  },\n  body: JSON.stringify({\n    transactionType: \"SPEND\",\n    recipient: { accountId: \"recipient-id\", accountType: \"USER\" },\n    token: { tokenDbId: \"token-uuid\" },\n    amount: 100\n  })\n});\n\nconst result = await response.json();\n","lang":"typescript"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"response-handling","__idx":15},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Response Handling"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Frontend handles different execution strategies based on the response:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"typescript","header":{"controls":{"copy":{}}},"source":"// Intelligent response handling\nif (result.walletStatus === \"WALLET_AND_SIGNING_READY\") {\n  // Transaction completed server-side\n  showSuccess(result.transaction);\n  \n} else if (result.walletStatus === \"WALLET_MISSING_SIGNING_ACCOUNT\" && result.signingData) {\n  // Client signing required\n  const signature = await userWallet.signTransaction(result.signingData);\n  await submitSignedTransaction(result.transaction.id, signature);\n  \n} else if (result.actionable) {\n  // Setup required - guide user\n  showWalletSetupDialog(result.actionable);\n}\n","lang":"typescript"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"authentication","__idx":16},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Authentication"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The API supports standard authentication methods:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["User Authentication"]},": ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Authorization: Bearer {userToken}"]}," (JWT)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Admin Authentication"]},": ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Authorization: Bearer {adminToken}"]}," (JWT)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Tenant Context"]},": ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["X-Project-Key: {projectKey}"]}," (Required for all requests)"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"key-benefits","__idx":17},"children":["Key Benefits"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"user-experience","__idx":18},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["User Experience"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Instant Participation"]},": Users can start participating immediately"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["No Upfront Costs"]},": Eliminates blockchain transaction fees for new users"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Progressive Enhancement"]},": Advanced features unlock as users engage more deeply"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"cost-optimization","__idx":19},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Cost Optimization"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Reduced Gas Costs"]},": Only active users incur deployment costs"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Predictable Costs"]},": Clear cost structure for wallet deployment and transactions"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"technical-implementation","__idx":20},"children":["Technical Implementation"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"backend-architecture","__idx":21},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Backend Architecture"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The backend automatically handles wallet capability detection and execution strategy routing."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"smart-contract-architecture","__idx":22},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Smart Contract Architecture"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Deterministic Address Generation"]},": Consistent address calculation using factory contracts"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Multi-Chain Compatibility"]},": Same address calculation across different blockchain networks"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Counterfactual Deployment"]},": Wallets deployed only when first outgoing transaction occurs"]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"api-endpoints","__idx":23},"children":["API Endpoints"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"core-transaction-endpoints","__idx":24},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Core Transaction Endpoints"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"create-transaction-unified","__idx":25},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Create Transaction (Unified)"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["HTTP Request"]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"http","header":{"controls":{"copy":{}}},"source":"POST /transactions\nAuthorization: Bearer {token}\nX-Project-Key: {projectKey}\nContent-Type: application/json\n","lang":"http"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Request Body"]},":"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"transactionType\": \"SPEND\",\n  \"recipient\": {\n    \"accountId\": \"user_123\",\n    \"accountType\": \"USER\"\n  },\n  \"token\": {\n    \"tokenDbId\": \"token_456\",\n    \"chainId\": 1\n  },\n  \"amount\": 100\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Response Example"]},":"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"transaction\": {\n    \"id\": \"txn_123\",\n    \"status\": \"PENDING\",\n    \"amount\": \"100\",\n    \"tokenId\": \"token_456\"\n  },\n  \"walletStatus\": \"WALLET_AND_SIGNING_READY\",\n  \"signingData\": null\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"submit-signed-transaction","__idx":26},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Submit Signed Transaction"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["HTTP Request"]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"http","header":{"controls":{"copy":{}}},"source":"POST /transactions/{transactionId}/submit\nAuthorization: Bearer {userToken}\nX-Project-Key: {projectKey}\nContent-Type: application/json\n","lang":"http"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Request Body"]},":"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"typescript","header":{"controls":{"copy":{}}},"source":"{\n  type: \"EIP_712\" | \"LEGACY\" | \"EIP_1559\",\n  signature?: string,           // For EIP-712\n  signedTransaction?: string    // For other formats\n}\n","lang":"typescript"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"authentication-endpoints","__idx":27},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Authentication Endpoints"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"user-authentication","__idx":28},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["User Authentication"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["HTTP Request"]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"http","header":{"controls":{"copy":{}}},"source":"POST /auth/token\nX-Project-Key: {projectKey}\nContent-Type: application/json\n","lang":"http"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Request Body"]},":"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"typescript","header":{"controls":{"copy":{}}},"source":"{\n  authToken: string  // Token from external provider (DFNS, etc.)\n  // authType: \"firebase\" | \"custom\" (optional)\n}\n","lang":"typescript"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"integration-checklist","__idx":29},"children":["Integration Checklist"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"input","attributes":{"checked":false,"type":"checkbox","readOnly":true},"children":[]}," Implement unified ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/transactions"]}," endpoint for all transaction types"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"input","attributes":{"checked":false,"type":"checkbox","readOnly":true},"children":[]}," Handle both immediate execution and signing preparation responses"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"input","attributes":{"checked":false,"type":"checkbox","readOnly":true},"children":[]}," Implement actionable error handling for setup scenarios"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"input","attributes":{"checked":false,"type":"checkbox","readOnly":true},"children":[]}," Use proper authentication headers"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"input","attributes":{"checked":false,"type":"checkbox","readOnly":true},"children":[]}," Add transaction status tracking"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"getting-started","__idx":30},"children":["Getting Started"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Authentication Setup"]},": Implement user authentication using ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/auth/token"]}," endpoint"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Transaction Integration"]},": Use unified ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/transactions"]}," endpoint for all transaction types"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Response Handling"]},": Implement intelligent response handling for different execution strategies"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Error Management"]},": Handle actionable responses for wallet setup scenarios"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Testing"]},": Validate all scenarios including server execution, client signing, and setup flows"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For detailed implementation assistance, contact our integration team or refer to the complete API documentation."]}]},"headings":[{"value":"Counterfactual Wallets & Signing Accounts","id":"counterfactual-wallets--signing-accounts","depth":1},{"value":"Overview","id":"overview","depth":2},{"value":"How Counterfactual Wallets Work","id":"how-counterfactual-wallets-work","depth":2},{"value":"Immediate Wallet Creation","id":"immediate-wallet-creation","depth":3},{"value":"Transaction Execution","id":"transaction-execution","depth":3},{"value":"Unified Transaction API","id":"unified-transaction-api","depth":2},{"value":"Single Endpoint Intelligence","id":"single-endpoint-intelligence","depth":3},{"value":"Response Types","id":"response-types","depth":3},{"value":"Signing Account Management","id":"signing-account-management","depth":2},{"value":"Signing Account Management","id":"signing-account-management-1","depth":3},{"value":"Signing Account Status","id":"signing-account-status","depth":3},{"value":"Wallet Signing Scenarios","id":"wallet-signing-scenarios","depth":3},{"value":"Actionable User Guidance","id":"actionable-user-guidance","depth":3},{"value":"API Integration Patterns","id":"api-integration-patterns","depth":2},{"value":"Unified Transaction Creation","id":"unified-transaction-creation","depth":3},{"value":"Response Handling","id":"response-handling","depth":3},{"value":"Authentication","id":"authentication","depth":3},{"value":"Key Benefits","id":"key-benefits","depth":2},{"value":"User Experience","id":"user-experience","depth":3},{"value":"Cost Optimization","id":"cost-optimization","depth":3},{"value":"Technical Implementation","id":"technical-implementation","depth":2},{"value":"Backend Architecture","id":"backend-architecture","depth":3},{"value":"Smart Contract Architecture","id":"smart-contract-architecture","depth":3},{"value":"API Endpoints","id":"api-endpoints","depth":2},{"value":"Core Transaction Endpoints","id":"core-transaction-endpoints","depth":3},{"value":"Create Transaction (Unified)","id":"create-transaction-unified","depth":4},{"value":"Submit Signed Transaction","id":"submit-signed-transaction","depth":4},{"value":"Authentication Endpoints","id":"authentication-endpoints","depth":3},{"value":"User Authentication","id":"user-authentication","depth":4},{"value":"Integration Checklist","id":"integration-checklist","depth":2},{"value":"Getting Started","id":"getting-started","depth":2}],"frontmatter":{"seo":{"title":"Counterfactual Wallets & Signing Accounts"}},"lastModified":"2026-08-21T19:40:30.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/7.counterfactual-wallets-guide","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}