@openfort/openfort-node 0.7.3 → 0.7.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +13 -13
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +13 -13
- package/dist/index.mjs.map +1 -1
- package/examples/evm/embedded/pregenerate.ts +1 -1
- package/openapi.json +4 -0
- package/package.json +1 -1
- package/pnpm-workspace.yaml +4 -0
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/errors.ts","../src/openapi-client/errors.ts","../src/openapi-client/openfortApiClient.ts","../src/utilities/walletAuth.ts","../src/version.ts","../src/openapi-client/generated/accs-v1/accs-v1.ts","../src/openapi-client/generated/accs-v2/accs-v2.ts","../src/openapi-client/generated/admin-authentication/admin-authentication.ts","../src/openapi-client/generated/auth/auth-v2/auth-v2.ts","../src/openapi-client/generated/auth/openfortAuth.schemas.ts","../src/openapi-client/generated/auth-v1/auth-v1.ts","../src/openapi-client/generated/backend-wallets/backend-wallets.ts","../src/openapi-client/generated/contracts/contracts.ts","../src/openapi-client/generated/events/events.ts","../src/openapi-client/generated/exchange/exchange.ts","../src/openapi-client/generated/forwarder-contract/forwarder-contract.ts","../src/openapi-client/generated/graph-q-l/graph-q-l.ts","../src/openapi-client/generated/logs/logs.ts","../src/openapi-client/generated/onramp/onramp.ts","../src/openapi-client/generated/openfortAPI.schemas.ts","../src/openapi-client/generated/paymaster/paymaster.ts","../src/openapi-client/generated/players/players.ts","../src/openapi-client/generated/policies/policies.ts","../src/openapi-client/generated/policy-rules/policy-rules.ts","../src/openapi-client/generated/rpc/rpc.ts","../src/openapi-client/generated/sessions/sessions.ts","../src/openapi-client/generated/settings/settings.ts","../src/openapi-client/generated/subscriptions/subscriptions.ts","../src/openapi-client/generated/transaction-intents/transaction-intents.ts","../src/openapi-client/generated/users/users.ts","../src/utilities/signer.ts","../src/constants.ts","../src/utilities/encryption.ts","../src/wallets/evm/actions/signHash.ts","../src/wallets/evm/actions/signMessage.ts","../src/wallets/evm/actions/signTransaction.ts","../src/wallets/evm/actions/signTypedData.ts","../src/wallets/evm/accounts/evmAccount.ts","../src/wallets/evm/evmClient.ts","../src/wallets/solana/solanaClient.ts","../src/wallets/solana/actions/signMessage.ts","../src/wallets/solana/actions/signTransaction.ts","../src/wallets/solana/accounts/solanaAccount.ts"],"sourcesContent":["import {\n entropy,\n type Share,\n type ShieldAuthOptions,\n ShieldAuthProvider,\n ShieldSDK,\n} from '@openfort/shield-js'\nimport fetch from 'node-fetch'\nimport {\n InvalidAPIKeyFormatError,\n InvalidPublishableKeyFormatError,\n MissingAPIKeyError,\n} from './errors'\nimport * as api from './openapi-client'\nimport { configure } from './openapi-client/openfortApiClient'\nimport { sign } from './utilities/signer'\nimport { EvmClient } from './wallets/evm/evmClient'\nimport { SolanaClient } from './wallets/solana/solanaClient'\n\n// Re-export ShieldAuthProvider for convenience\nexport { ShieldAuthProvider } from '@openfort/shield-js'\n\n/**\n * Configuration options for the Openfort client\n */\nexport interface OpenfortOptions {\n /** API base URL (optional) */\n basePath?: string\n /** Wallet secret for X-Wallet-Auth header (optional) */\n walletSecret?: string\n /** Enable debug logging (optional) */\n debugging?: boolean\n /** Publishable key for client-side auth endpoints (pk_live_... or pk_test_...) */\n publishableKey?: string\n}\n\n/**\n * Configuration for pre-generating embedded accounts with Shield\n */\nexport interface ShieldConfiguration {\n /** Shield API key */\n shieldApiKey: string\n /** Shield API secret */\n shieldApiSecret: string\n /** Encryption share for the recovery share */\n encryptionShare: string\n /** Shield auth provider type */\n shieldAuthProvider: ShieldAuthProvider\n /** Shield API base URL (optional, defaults to https://shield.openfort.io) */\n shieldApiBaseUrl?: string\n}\n\n/**\n * Validates that a string is a valid Openfort secret API key format.\n * @param key - The key to validate\n * @returns true if valid\n */\nfunction isValidSecretKey(key: string): boolean {\n return key.startsWith('sk_test_') || key.startsWith('sk_live_')\n}\n\n/**\n * Validates that a string is a valid Openfort publishable key format.\n * @param key - The key to validate\n * @returns true if valid\n */\nfunction isValidPublishableKey(key: string): boolean {\n return key.startsWith('pk_test_') || key.startsWith('pk_live_')\n}\n\n/**\n * The Openfort SDK client.\n * Provides access to all Openfort API endpoints and wallet functionality.\n *\n * Environment variables (all optional, constructor options take precedence):\n * - `OPENFORT_API_KEY` - Secret API key (sk_test_... or sk_live_...)\n * - `OPENFORT_WALLET_SECRET` - Wallet secret for backend wallet operations\n * - `OPENFORT_PUBLISHABLE_KEY` - Publishable key for auth endpoints (pk_test_... or pk_live_...)\n * - `OPENFORT_BASE_URL` - Custom API base URL\n *\n * @example\n * ```typescript\n * import Openfort from '@openfort/openfort-node';\n *\n * // Using environment variables\n * const openfort = new Openfort();\n *\n * // Or with explicit API key\n * const openfort = new Openfort('sk_test_...');\n *\n * // Or with options\n * const openfort = new Openfort('sk_test_...', {\n * walletSecret: 'your-wallet-secret',\n * publishableKey: 'pk_test_...',\n * });\n *\n * // Create a player\n * const player = await openfort.players.create({ name: 'Player-1' });\n *\n * // Get an account (V2)\n * const account = await openfort.accounts.get('acc_...');\n *\n * // Create an account (V1 legacy)\n * const newAccount = await openfort.accounts.v1.create({ player: player.id, chainId: 1 });\n * ```\n */\nclass Openfort {\n private readonly _apiKey: string\n private _evmClient?: EvmClient\n private _solanaClient?: SolanaClient\n\n constructor(apiKey?: string, options?: string | OpenfortOptions) {\n // Resolve API key: explicit parameter > environment variable\n const resolvedApiKey = apiKey || process.env.OPENFORT_API_KEY\n\n // Resolve options\n const resolvedBasePath =\n typeof options === 'string'\n ? options\n : options?.basePath || process.env.OPENFORT_BASE_URL\n\n const resolvedWalletSecret =\n typeof options === 'object'\n ? options.walletSecret || process.env.OPENFORT_WALLET_SECRET\n : process.env.OPENFORT_WALLET_SECRET\n\n const resolvedPublishableKey =\n typeof options === 'object'\n ? options.publishableKey || process.env.OPENFORT_PUBLISHABLE_KEY\n : process.env.OPENFORT_PUBLISHABLE_KEY\n\n const debugging =\n typeof options === 'object' ? options.debugging : undefined\n\n // Validate API key presence\n if (!resolvedApiKey) {\n throw new MissingAPIKeyError()\n }\n\n // Validate API key format\n if (!isValidSecretKey(resolvedApiKey)) {\n throw new InvalidAPIKeyFormatError(resolvedApiKey)\n }\n\n // Validate publishable key format if provided\n if (\n resolvedPublishableKey &&\n !isValidPublishableKey(resolvedPublishableKey)\n ) {\n throw new InvalidPublishableKeyFormatError(resolvedPublishableKey)\n }\n\n // Store API key for webhook signature verification\n this._apiKey = resolvedApiKey\n\n // Configure the API client\n configure({\n apiKey: resolvedApiKey,\n basePath: resolvedBasePath,\n walletSecret: resolvedWalletSecret,\n debugging,\n publishableKey: resolvedPublishableKey,\n })\n }\n\n // ============================================\n // Accounts API\n // ============================================\n\n /**\n * Unified accounts namespace for managing wallets across chains.\n *\n * @example\n * ```typescript\n * // Create a backend wallet (Developer custody)\n * const wallet = await openfort.accounts.evm.backend.create({ name: 'Treasury' })\n *\n * // Pregenerate an embedded wallet (User custody)\n * const embedded = await openfort.accounts.evm.embedded.pregenerate(\n * { email: 'user@example.com' },\n * shieldConfig\n * )\n *\n * // List all accounts\n * const all = await openfort.accounts.list()\n *\n * // List with filters\n * const evmBackend = await openfort.accounts.list({\n * chainType: 'EVM',\n * custody: 'Developer',\n * })\n *\n * // V1 API\n * await openfort.accounts.v1.create({ player: 'pla_...', chainId: 1 })\n * ```\n */\n public get accounts() {\n // Lazily initialize clients\n if (!this._evmClient) {\n this._evmClient = new EvmClient()\n }\n if (!this._solanaClient) {\n this._solanaClient = new SolanaClient()\n }\n const evmClient = this._evmClient\n const solanaClient = this._solanaClient\n\n return {\n /** List all accounts across chains */\n list: api.getAccountsV2,\n /** EVM accounts */\n evm: {\n /** List EVM accounts */\n list: (params?: Omit<api.GetAccountsV2Params, 'chainType'>) =>\n api.getAccountsV2({ ...params, chainType: 'EVM' }),\n /** Backend wallet operations (Developer custody) */\n backend: {\n /** Create EVM backend wallet */\n create: evmClient.createAccount.bind(evmClient),\n /** List EVM backend wallets */\n list: evmClient.listAccounts.bind(evmClient),\n /** Get backend wallet by ID or address */\n get: evmClient.getAccount.bind(evmClient),\n /** Delete backend wallet */\n delete: api.deleteBackendWallet,\n /** Sign data */\n sign: evmClient.signData.bind(evmClient),\n /** Import private key (with E2E encryption) */\n import: evmClient.importAccount.bind(evmClient),\n /** Export private key (with E2E encryption) */\n export: evmClient.exportAccount.bind(evmClient),\n },\n /** Embedded wallet operations (User custody) */\n embedded: {\n /** Pregenerate embedded account */\n pregenerate: (\n req: Omit<api.PregenerateUserRequestV2, 'chainType'>,\n shieldConfig: ShieldConfiguration,\n ) => this.pregenerateUser({ ...req, chainType: 'EVM' }, shieldConfig),\n /** List embedded accounts */\n list: (\n params?: Omit<api.GetAccountsV2Params, 'chainType' | 'custody'>,\n ) =>\n api.getAccountsV2({ ...params, chainType: 'EVM', custody: 'User' }),\n },\n },\n /** Solana accounts */\n solana: {\n /** List Solana accounts */\n list: (params?: Omit<api.GetAccountsV2Params, 'chainType'>) =>\n api.getAccountsV2({ ...params, chainType: 'SVM' }),\n /** Backend wallet operations (Developer custody) */\n backend: {\n /** Create Solana backend wallet */\n create: solanaClient.createAccount.bind(solanaClient),\n /** List Solana backend wallets */\n list: solanaClient.listAccounts.bind(solanaClient),\n /** Get backend wallet by ID or address */\n get: solanaClient.getAccount.bind(solanaClient),\n /** Delete backend wallet */\n delete: api.deleteBackendWallet,\n /** Sign data */\n sign: solanaClient.signData.bind(solanaClient),\n /** Import private key (with E2E encryption) */\n import: solanaClient.importAccount.bind(solanaClient),\n /** Export private key (with E2E encryption) */\n export: solanaClient.exportAccount.bind(solanaClient),\n },\n /** Embedded wallet operations (User custody) */\n embedded: {\n /** Pregenerate embedded account */\n pregenerate: (\n req: Omit<api.PregenerateUserRequestV2, 'chainType'>,\n shieldConfig: ShieldConfiguration,\n ) => this.pregenerateUser({ ...req, chainType: 'SVM' }, shieldConfig),\n /** List embedded accounts */\n list: (\n params?: Omit<api.GetAccountsV2Params, 'chainType' | 'custody'>,\n ) =>\n api.getAccountsV2({ ...params, chainType: 'SVM', custody: 'User' }),\n },\n },\n /** V1 legacy API */\n v1: {\n list: api.getAccounts,\n create: api.createAccount,\n get: api.getAccount,\n requestTransferOwnership: api.requestTransferOwnership,\n cancelTransferOwnership: api.cancelTransferOwnership,\n signPayload: api.signPayload,\n sync: api.syncAccount,\n deploy: api.deployAccount,\n startRecovery: api.startRecovery,\n completeRecovery: api.completeRecovery,\n },\n }\n }\n\n // ============================================\n // Players API\n // ============================================\n\n /**\n * Player management endpoints\n */\n public get players() {\n return {\n /** List players */\n list: api.getPlayers,\n /** Create a player */\n create: api.createPlayer,\n /** Get a player by ID */\n get: api.getPlayer,\n /** Update a player */\n update: api.updatePlayer,\n /** Delete a player */\n delete: api.deletePlayer,\n }\n }\n\n // ============================================\n // Contracts API\n // ============================================\n\n /**\n * Contract management endpoints\n */\n public get contracts() {\n return {\n /** List contracts */\n list: api.getContracts,\n /** Create a contract */\n create: api.createContract,\n /** Get a contract by ID */\n get: api.getContract,\n /** Update a contract */\n update: api.updateContract,\n /** Delete a contract */\n delete: api.deleteContract,\n }\n }\n\n // ============================================\n // Policies API\n // ============================================\n\n /**\n * Policy management endpoints\n */\n public get policies() {\n return {\n /** List policies */\n list: api.getPolicies,\n /** Create a policy */\n create: api.createPolicy,\n /** Get a policy by ID */\n get: api.getPolicy,\n /** Update a policy */\n update: api.updatePolicy,\n /** Delete a policy */\n delete: api.deletePolicy,\n /** Disable a policy */\n disable: api.disablePolicy,\n /** Enable a policy */\n enable: api.enablePolicy,\n /** Get policy total gas usage */\n getTotalGasUsage: api.getPolicyTotalGasUsage,\n }\n }\n\n /**\n * Policy rules management endpoints\n */\n public get policyRules() {\n return {\n /** List policy rules */\n list: api.getPolicyRules,\n /** Create a policy rule */\n create: api.createPolicyRule,\n /** Update a policy rule */\n update: api.updatePolicyRule,\n /** Delete a policy rule */\n delete: api.deletePolicyRule,\n }\n }\n\n // ============================================\n // Transaction Intents API\n // ============================================\n\n /**\n * Transaction intent management endpoints\n */\n public get transactionIntents() {\n return {\n /** List transaction intents */\n list: api.getTransactionIntents,\n /** Create a transaction intent */\n create: api.createTransactionIntent,\n /** Get a transaction intent by ID */\n get: api.getTransactionIntent,\n /** Sign a transaction intent */\n signature: api.signature,\n /** Estimate cost */\n estimateCost: api.estimateTransactionIntentCost,\n }\n }\n\n // ============================================\n // Sessions API\n // ============================================\n\n /**\n * Session management endpoints\n */\n public get sessions() {\n return {\n /** List sessions */\n list: api.getPlayerSessions,\n /** Create a session */\n create: api.createSession,\n /** Get a session by ID */\n get: api.getSession,\n /** Revoke a session */\n revoke: api.revokeSession,\n /** Sign a session */\n signature: api.signatureSession,\n }\n }\n\n // ============================================\n // Settings API\n // ============================================\n\n /**\n * Settings / Developer account management endpoints\n */\n public get settings() {\n return {\n /** List developer accounts */\n getDeveloperAccounts: api.getDeveloperAccounts,\n /** Create a developer account */\n createDeveloperAccount: api.createDeveloperAccount,\n /** Get a developer account by ID */\n getDeveloperAccount: api.getDeveloperAccount,\n /** Delete a developer account */\n deleteDeveloperAccount: api.deleteDeveloperAccount,\n /** Get verification payload */\n getVerificationPayload: api.getVerificationPayload,\n }\n }\n\n // ============================================\n // Subscriptions API\n // ============================================\n\n /**\n * Subscription management endpoints\n */\n public get subscriptions() {\n return {\n /** List subscriptions */\n list: api.getSubscriptions,\n /** Create a subscription */\n create: api.createSubscription,\n /** Get a subscription by ID */\n get: api.getSubscription,\n /** Delete a subscription */\n delete: api.deleteSubscription,\n }\n }\n\n // ============================================\n // Triggers API\n // ============================================\n\n /**\n * Trigger management endpoints\n */\n public get triggers() {\n return {\n /** List triggers */\n list: api.getTriggers,\n /** Create a trigger */\n create: api.createTrigger,\n /** Get a trigger by ID */\n get: api.getTrigger,\n /** Delete a trigger */\n delete: api.deleteTrigger,\n }\n }\n\n // ============================================\n // Exchange API\n // ============================================\n\n /**\n * Exchange endpoints\n */\n public get exchange() {\n return {\n /** Create swap */\n createSwap: api.createSwap,\n /** Get swap quote */\n quoteSwap: api.quoteSwap,\n }\n }\n\n // ============================================\n // Auth API\n // ============================================\n\n /**\n * Authentication endpoints\n *\n * @example\n * ```typescript\n * await openfort.auth.verifyThirdParty({ provider: 'firebase', token: '...' });\n * ```\n */\n public get auth() {\n return {\n /** Verify third-party auth provider token (Supabase, Firebase, etc.) */\n verifyThirdParty: api.thirdPartyV2,\n }\n }\n\n // ============================================\n // IAM API (V2 default, V1 legacy)\n // ============================================\n\n /**\n * Identity and access management endpoints (V2 default)\n *\n * @example\n * ```typescript\n * // V2 (default) - Users\n * const users = await openfort.iam.users.list();\n * const user = await openfort.iam.users.get('usr_...');\n *\n * // V1 - Players\n * const players = await openfort.iam.v1.players.list();\n * await openfort.iam.v1.players.create(request, shieldConfig);\n * ```\n */\n public get iam() {\n return {\n /** Get session from access token */\n getSession: this.getSession.bind(this),\n /** User management (V2) */\n users: {\n /** List authenticated users */\n list: api.getAuthUsers,\n /** Get an authenticated user by ID */\n get: api.getAuthUser,\n /** Delete a user */\n delete: api.deleteUser,\n },\n /** OAuth configuration */\n authProvidersConfig: {\n /** Create OAuth config */\n create: api.createOAuthConfig,\n /** Get OAuth config */\n get: api.getOAuthConfig,\n /** List OAuth configs */\n list: api.listOAuthConfig,\n /** Delete OAuth config */\n delete: api.deleteOAuthConfig,\n },\n /** V1 IAM methods */\n v1: {\n /** Auth player management (V1) */\n players: {\n /**\n * Create an auth player with optional embedded account pre-generation.\n * @param req - The create auth player request\n * @param shieldConfig - Optional Shield configuration for storing the recovery share\n * @returns The auth player response\n */\n create: this.createAuthPlayerWithShield.bind(this),\n /** List auth players */\n list: api.getAuthPlayers,\n /** Get an auth player by ID */\n get: api.getAuthPlayer,\n /** Delete an auth player */\n delete: api.deleteAuthPlayer,\n },\n /** Verify auth token */\n verifyToken: api.verifyAuthToken,\n /** Verify OAuth token */\n verifyOAuthToken: api.verifyOAuthToken,\n /** Authorize */\n authorize: api.authorize,\n },\n }\n }\n\n /**\n * Get session from access token.\n * @internal\n */\n private getSession(options: {\n accessToken: string\n disableCookieCache?: boolean\n }): Promise<api.authSchemas.GetGetSession200> {\n const { accessToken, disableCookieCache } = options\n return api.authApi.getGetSession(\n disableCookieCache !== undefined ? { disableCookieCache } : undefined,\n { accessToken },\n )\n }\n\n /**\n * Pre-generate a user with an embedded account (V2).\n * If Shield pre-registration fails, the created user will be deleted.\n * @internal\n */\n private async pregenerateUser(\n req: api.PregenerateUserRequestV2,\n shieldConfig: ShieldConfiguration,\n ): Promise<api.AccountV2Response> {\n const response = await api.pregenerateUserV2(req)\n\n try {\n await this.preRegisterWithShield(\n response.recoveryShare,\n response.user,\n req.thirdPartyUserId,\n shieldConfig,\n )\n\n // Return without recoveryShare (it's been stored in Shield)\n const { recoveryShare: _, ...accountResponse } = response\n return accountResponse\n } catch (error) {\n // If anything fails after user creation, delete the created user\n await api.deleteUser(response.user)\n throw error\n }\n }\n\n /**\n * Create an auth player with optional Shield pre-registration (V1).\n * @internal\n */\n private async createAuthPlayerWithShield(\n req: api.CreateAuthPlayerRequest,\n shieldConfig?: ShieldConfiguration,\n ): Promise<api.AuthPlayerResponse> {\n if (req.preGenerateEmbeddedAccount && !shieldConfig) {\n throw new Error(\n 'Pre-generating embedded account requires Shield configuration.',\n )\n }\n\n const response = await api.createAuthPlayer(req)\n\n if (response.recoveryShare && shieldConfig) {\n await this.preRegisterWithShield(\n response.recoveryShare,\n response.id,\n req.thirdPartyUserId,\n shieldConfig,\n )\n }\n\n // Return without recoveryShare (it's been stored in Shield)\n const { recoveryShare: _, ...playerResponse } = response\n return playerResponse as api.AuthPlayerResponse\n }\n\n /**\n * Pre-register a recovery share with Shield.\n * @internal\n */\n private async preRegisterWithShield(\n recoveryShare: string,\n openfortUserId: string,\n thirdPartyUserId: string | undefined,\n config: ShieldConfiguration,\n ): Promise<void> {\n let externalUserId: string\n\n if (config.shieldAuthProvider === ShieldAuthProvider.OPENFORT) {\n externalUserId = openfortUserId\n } else if (config.shieldAuthProvider === ShieldAuthProvider.CUSTOM) {\n if (!thirdPartyUserId) {\n throw new Error(\n 'thirdPartyUserId is required when using CUSTOM Shield auth provider.',\n )\n }\n externalUserId = thirdPartyUserId\n } else {\n throw new Error('Invalid Shield auth provider.')\n }\n\n const authOptions: ShieldAuthOptions = {\n authProvider: config.shieldAuthProvider,\n encryptionPart: config.encryptionShare,\n externalUserId,\n apiKey: config.shieldApiKey,\n apiSecret: config.shieldApiSecret,\n }\n\n const share: Share = {\n secret: recoveryShare,\n entropy: entropy.project,\n }\n\n const shieldSDK = new ShieldSDK({\n apiKey: config.shieldApiKey,\n baseURL: config.shieldApiBaseUrl,\n })\n\n await shieldSDK.preRegister(share, authOptions)\n }\n\n // ============================================\n // Paymasters API\n // ============================================\n\n /**\n * Paymaster endpoints\n */\n public get paymasters() {\n return {\n /** Create a paymaster */\n create: api.createPaymaster,\n /** Get a paymaster by ID */\n get: api.getPaymaster,\n /** Update a paymaster */\n update: api.updatePaymaster,\n /** Delete a paymaster */\n delete: api.deletePaymaster,\n }\n }\n\n // ============================================\n // Utility Methods\n // ============================================\n\n /**\n * Constructs and validates a webhook event from the request body and signature.\n * @param body - The raw request body\n * @param signature - The signature header value\n * @returns The validated webhook event\n */\n public async constructWebhookEvent<T = unknown>(\n body: string,\n signature: string,\n ): Promise<T> {\n const signedPayload = await sign(this._apiKey, body)\n if (signedPayload !== signature) {\n throw Error('Invalid signature')\n }\n return JSON.parse(body) as T\n }\n\n /**\n * Creates an encryption session with Shield.\n * This is a setup step for configuring encryption before using pregenerate.\n *\n * @param shieldApiKey - Shield API key\n * @param shieldApiSecret - Shield API secret\n * @param encryptionShare - Encryption share for the recovery share\n * @param shieldApiBaseUrl - Shield API base URL (defaults to https://shield.openfort.io)\n * @returns The encryption session ID\n *\n * @example\n * ```typescript\n * const sessionId = await openfort.createEncryptionSession(\n * 'shield_api_key',\n * 'shield_api_secret',\n * 'encryption_share',\n * );\n * ```\n */\n public async createEncryptionSession(\n shieldApiKey: string,\n shieldApiSecret: string,\n encryptionShare: string,\n shieldApiBaseUrl = 'https://shield.openfort.io',\n ): Promise<string> {\n const response = await fetch(\n `${shieldApiBaseUrl}/project/encryption-session`,\n {\n headers: {\n 'Content-Type': 'application/json',\n 'x-api-key': shieldApiKey,\n 'x-api-secret': shieldApiSecret,\n },\n method: 'POST',\n body: JSON.stringify({\n encryption_part: encryptionShare,\n }),\n },\n )\n\n if (!response.ok) {\n throw new Error('Failed to create encryption session')\n }\n\n const jsonResponse = await response.json()\n return jsonResponse.session_id\n }\n}\n\n// Export both as default and named export for better CommonJS/ESM interop\nexport { Openfort }\nexport default Openfort\n\n// Constants\nexport { IMPORT_ENCRYPTION_PUBLIC_KEY } from './constants'\n// Error classes\nexport {\n AccountNotFoundError,\n EncryptionError,\n InvalidAPIKeyFormatError,\n InvalidPublishableKeyFormatError,\n InvalidWalletSecretFormatError,\n MissingAPIKeyError,\n MissingPublishableKeyError,\n MissingWalletSecretError,\n TimeoutError,\n UserInputValidationError,\n} from './errors'\n// Re-export all types from the generated API\nexport * from './openapi-client'\n// Export the configure function for advanced use cases\nexport { configure, getConfig } from './openapi-client/openfortApiClient'\n// RSA encryption utilities for key import/export\nexport {\n decryptExportedPrivateKey,\n encryptForImport,\n generateRSAKeyPair,\n type RSAKeyPair,\n} from './utilities/encryption'\n// Re-export wallet types\nexport * from './wallets'\n","/**\n * @module Errors\n * Custom error classes for the Openfort SDK\n */\n\n/**\n * MissingAPIKeyError is thrown when no API key is provided.\n */\nexport class MissingAPIKeyError extends Error {\n constructor() {\n super(`\nMissing required Openfort API key.\n\nYou can set it as an environment variable:\n\nOPENFORT_API_KEY=sk_test_...\n\nYou can also pass it to the constructor:\n\nconst openfort = new Openfort(\"sk_test_...\");\n\nIf you're performing backend wallet operations, make sure to also set your wallet secret:\n\nOPENFORT_WALLET_SECRET=your-wallet-secret\n\nThis is also available as an option to the constructor:\n\nconst openfort = new Openfort(\"sk_test_...\", {\n walletSecret: \"your-wallet-secret\",\n});\n\nFor more information, see: https://www.openfort.io/docs\n`)\n this.name = 'MissingAPIKeyError'\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, MissingAPIKeyError)\n }\n }\n}\n\n/**\n * InvalidAPIKeyFormatError is thrown when the API key has an invalid format.\n */\nexport class InvalidAPIKeyFormatError extends Error {\n constructor(key: string) {\n const prefix = key.length > 8 ? `${key.substring(0, 8)}...` : key\n super(`\nInvalid API key format: \"${prefix}\"\n\nOpenfort secret API keys should start with:\n- \"sk_test_\" for test environment\n- \"sk_live_\" for live environment\n\nMake sure you're using a SECRET key (not a publishable key).\nPublishable keys start with \"pk_\" and cannot be used for server-side API calls.\n\nFor more information, see: https://www.openfort.io/docs\n`)\n this.name = 'InvalidAPIKeyFormatError'\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, InvalidAPIKeyFormatError)\n }\n }\n}\n\n/**\n * InvalidPublishableKeyFormatError is thrown when the publishable key has an invalid format.\n */\nexport class InvalidPublishableKeyFormatError extends Error {\n constructor(key: string) {\n const prefix = key.length > 8 ? `${key.substring(0, 8)}...` : key\n super(`\nInvalid publishable key format: \"${prefix}\"\n\nOpenfort publishable keys should start with:\n- \"pk_test_\" for test environment\n- \"pk_live_\" for live environment\n\nFor more information, see: https://www.openfort.io/docs\n`)\n this.name = 'InvalidPublishableKeyFormatError'\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, InvalidPublishableKeyFormatError)\n }\n }\n}\n\n/**\n * MissingWalletSecretError is thrown when wallet secret is required but not provided.\n */\nexport class MissingWalletSecretError extends Error {\n constructor(operation: string) {\n super(`\nWallet secret not configured. Required for: ${operation}\n\nYou can set it as an environment variable:\n\nOPENFORT_WALLET_SECRET=your-wallet-secret\n\nYou can also pass it as an option to the constructor:\n\nconst openfort = new Openfort(\"sk_test_...\", {\n walletSecret: \"your-wallet-secret\",\n});\n\nThe wallet secret is required for backend wallet operations (create, list, get, sign, import, export).\n\nFor more information, see: https://www.openfort.io/docs\n`)\n this.name = 'MissingWalletSecretError'\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, MissingWalletSecretError)\n }\n }\n}\n\n/**\n * InvalidWalletSecretFormatError is thrown when the wallet secret has an invalid format.\n */\nexport class InvalidWalletSecretFormatError extends Error {\n constructor(reason: string) {\n super(`\nInvalid wallet secret format: ${reason}\n\nThe wallet secret should be a base64-encoded EC P-256 private key in DER format.\nYou can generate a new wallet secret from the Openfort dashboard.\n\nFor more information, see: https://www.openfort.io/docs\n`)\n this.name = 'InvalidWalletSecretFormatError'\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, InvalidWalletSecretFormatError)\n }\n }\n}\n\n/**\n * MissingPublishableKeyError is thrown when publishable key is required but not provided.\n */\nexport class MissingPublishableKeyError extends Error {\n constructor(operation: string) {\n super(`\nPublishable key not configured. Required for: ${operation}\n\nYou can set it as an environment variable:\n\nOPENFORT_PUBLISHABLE_KEY=pk_test_...\n\nYou can also pass it as an option to the constructor:\n\nconst openfort = new Openfort(\"sk_test_...\", {\n publishableKey: \"pk_test_...\",\n});\n\nThe publishable key is required for client-side auth endpoints like getSession.\n\nFor more information, see: https://www.openfort.io/docs\n`)\n this.name = 'MissingPublishableKeyError'\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, MissingPublishableKeyError)\n }\n }\n}\n\n/**\n * TimeoutError is thrown when an operation times out.\n */\nexport class TimeoutError extends Error {\n /**\n * Initializes a new TimeoutError instance.\n *\n * @param message - The error message.\n */\n constructor(message = 'Timeout Error') {\n super(message)\n this.name = 'TimeoutError'\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, TimeoutError)\n }\n }\n}\n\n/**\n * UserInputValidationError is thrown when validation of a user-supplied input fails.\n */\nexport class UserInputValidationError extends Error {\n /**\n * Initializes a new UserInputValidationError instance.\n *\n * @param message - The user input validation error message.\n */\n constructor(message: string) {\n super(message)\n this.name = 'UserInputValidationError'\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, UserInputValidationError)\n }\n }\n}\n\n/**\n * AccountNotFoundError is thrown when an account cannot be found.\n */\nexport class AccountNotFoundError extends Error {\n /**\n * Initializes a new AccountNotFoundError instance.\n *\n * @param message - The error message.\n */\n constructor(message = 'Account not found') {\n super(message)\n this.name = 'AccountNotFoundError'\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, AccountNotFoundError)\n }\n }\n}\n\n/**\n * EncryptionError is thrown when encryption or decryption fails.\n */\nexport class EncryptionError extends Error {\n /**\n * Initializes a new EncryptionError instance.\n *\n * @param message - The error message.\n */\n constructor(message: string) {\n super(message)\n this.name = 'EncryptionError'\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, EncryptionError)\n }\n }\n}\n","/**\n * Error types for HTTP-level errors\n */\nexport type HttpErrorType =\n | 'unexpected_error'\n | 'unauthorized'\n | 'forbidden'\n | 'not_found'\n | 'bad_request'\n | 'conflict'\n | 'rate_limited'\n | 'bad_gateway'\n | 'service_unavailable'\n | 'unknown'\n | 'network_timeout'\n | 'network_connection_failed'\n | 'network_ip_blocked'\n | 'network_dns_failure'\n\n/**\n * Extended API error type\n */\nexport type APIErrorType = HttpErrorType | string\n\n/**\n * Shape of Openfort API error responses\n */\nexport interface OpenfortErrorResponse {\n message?: string\n error?: string\n statusCode?: number\n correlationId?: string\n}\n\n/**\n * Type guard to check if an object is an Openfort error response\n */\nexport function isOpenfortError(obj: unknown): obj is OpenfortErrorResponse {\n return (\n obj !== null &&\n typeof obj === 'object' &&\n ('message' in obj || 'error' in obj)\n )\n}\n\n/**\n * Extended API error that encompasses both Openfort errors and other API-related errors\n */\nexport class APIError extends Error {\n statusCode: number\n errorType: APIErrorType\n errorMessage: string\n correlationId?: string\n errorLink?: string\n declare cause?: Error | unknown\n\n /**\n * Constructor for the APIError class\n *\n * @param statusCode - The HTTP status code\n * @param errorType - The type of error\n * @param errorMessage - The error message\n * @param correlationId - The correlation ID for tracing\n * @param errorLink - URL to documentation about this error\n * @param cause - The cause of the error\n */\n constructor(\n statusCode: number,\n errorType: APIErrorType,\n errorMessage: string,\n correlationId?: string,\n errorLink?: string,\n cause?: Error | unknown,\n ) {\n super(errorMessage)\n if (cause) {\n this.cause = cause\n }\n this.name = 'APIError'\n this.statusCode = statusCode\n this.errorType = errorType\n this.errorMessage = errorMessage\n\n if (correlationId !== undefined) {\n this.correlationId = correlationId\n }\n\n if (errorLink !== undefined) {\n this.errorLink = errorLink\n }\n }\n\n /**\n * Convert the error to a JSON object\n */\n toJSON() {\n return {\n name: this.name,\n statusCode: this.statusCode,\n errorType: this.errorType,\n errorMessage: this.errorMessage,\n ...(this.correlationId && { correlationId: this.correlationId }),\n ...(this.errorLink && { errorLink: this.errorLink }),\n }\n }\n}\n\n/**\n * Error thrown when a network-level failure occurs before reaching the Openfort service.\n * This includes gateway errors, IP blocklist rejections, DNS failures, timeouts, etc.\n */\nexport class NetworkError extends APIError {\n networkDetails?: {\n code?: string\n message?: string\n retryable?: boolean\n }\n\n /**\n * Constructor for the NetworkError class\n *\n * @param errorType - The type of network error\n * @param errorMessage - The error message\n * @param networkDetails - Additional network error details\n * @param cause - The cause of the error\n */\n constructor(\n errorType: HttpErrorType,\n errorMessage: string,\n networkDetails?: { code?: string; message?: string; retryable?: boolean },\n cause?: Error | unknown,\n ) {\n super(\n 0, // Status code 0 indicates no response was received\n errorType,\n errorMessage,\n undefined,\n 'https://www.openfort.io/docs',\n cause,\n )\n this.name = 'NetworkError'\n this.networkDetails = networkDetails\n }\n\n /**\n * Convert the error to a JSON object\n */\n toJSON() {\n return {\n ...super.toJSON(),\n ...(this.networkDetails && { networkDetails: this.networkDetails }),\n }\n }\n}\n\n/**\n * Error thrown when an error is not known or cannot be categorized\n */\nexport class UnknownError extends Error {\n declare cause?: Error\n\n /**\n * Constructor for the UnknownError class\n *\n * @param message - The error message\n * @param cause - The cause of the error\n */\n constructor(message: string, cause?: Error) {\n super(message)\n if (cause) {\n this.cause = cause\n }\n this.name = 'UnknownError'\n }\n}\n\n/**\n * Error thrown for user input validation failures\n */\nexport class ValidationError extends Error {\n field?: string\n value?: unknown\n\n /**\n * Constructor for the ValidationError class\n *\n * @param message - The error message\n * @param field - The field that failed validation\n * @param value - The invalid value\n */\n constructor(message: string, field?: string, value?: unknown) {\n super(message)\n this.name = 'ValidationError'\n this.field = field\n this.value = value\n }\n}\n","import Axios, { type AxiosInstance, type AxiosRequestConfig } from 'axios'\nimport axiosRetry, { exponentialDelay } from 'axios-retry'\nimport { MissingPublishableKeyError, MissingWalletSecretError } from '../errors'\nimport {\n generateWalletJwt,\n requiresWalletAuth,\n sortKeys,\n} from '../utilities/walletAuth'\nimport { PACKAGE, VERSION } from '../version'\nimport {\n APIError,\n isOpenfortError,\n NetworkError,\n UnknownError,\n ValidationError,\n} from './errors'\n\nconst ERROR_DOCS_URL = 'https://www.openfort.io/docs'\n\n/**\n * Configuration options for the Openfort API client\n */\nexport interface OpenfortClientOptions {\n /** The API key (secret key starting with sk_) */\n apiKey: string\n /** Optional wallet secret for X-Wallet-Auth header */\n walletSecret?: string\n /** Optional publishable key for client-side auth endpoints (pk_live_... or pk_test_...) */\n publishableKey?: string\n /** Optional base URL for the API */\n basePath?: string\n /** If true, logs API requests and responses to the console */\n debugging?: boolean\n /** Optional source identifier for analytics */\n source?: string\n /** Optional source version for analytics */\n sourceVersion?: string\n}\n\nlet axiosInstance: AxiosInstance\nlet clientConfig: OpenfortClientOptions | undefined\n\n/**\n * Converts BigInts to strings recursively for safe JSON serialization\n */\nfunction convertBigIntsToStrings<T>(obj: T): T {\n if (obj === null || obj === undefined) {\n return obj\n }\n\n if (typeof obj === 'bigint') {\n return obj.toString() as unknown as T\n }\n\n if (Array.isArray(obj)) {\n return obj.map(convertBigIntsToStrings) as unknown as T\n }\n\n if (typeof obj === 'object') {\n const result: Record<string, unknown> = {}\n for (const [key, value] of Object.entries(obj)) {\n result[key] = convertBigIntsToStrings(value)\n }\n return result as T\n }\n\n return obj\n}\n\n/**\n * Validates the request configuration before sending\n */\nfunction validateRequest(config: AxiosRequestConfig): void {\n if (!axiosInstance) {\n throw new ValidationError(\n 'Openfort client not configured. Call configure() first.',\n )\n }\n\n if (!config.url || config.url === '') {\n throw new ValidationError('Request URL is required.')\n }\n\n if (!config.method || config.method === '') {\n throw new ValidationError('Request method is required.')\n }\n}\n\n/**\n * Checks if a request path requires the publishable key (x-project-key header).\n * Auth V2 endpoints require the publishable key for proper project identification.\n */\nfunction requiresPublishableKey(requestPath: string): boolean {\n return requestPath.startsWith('/iam/v2/auth/')\n}\n\n/**\n * Configures the Openfort API client with the given options.\n *\n * @param options - The client configuration options\n */\nexport const configure = (options: OpenfortClientOptions): void => {\n const baseURL = options.basePath || 'https://api.openfort.io'\n\n clientConfig = {\n ...options,\n basePath: baseURL,\n }\n\n axiosInstance = Axios.create({\n baseURL,\n headers: {\n 'User-Agent': `${PACKAGE}@${VERSION}`,\n ...(options.source && { 'X-Source': options.source }),\n ...(options.sourceVersion && {\n 'X-Source-Version': options.sourceVersion,\n }),\n ...(options.publishableKey && {\n 'x-project-key': options.publishableKey,\n }),\n },\n paramsSerializer: {\n indexes: null, // Use repeat style for arrays: ?player=a&player=b instead of ?player[0]=a&player[1]=b\n },\n })\n\n // Add retry logic with exponential backoff\n axiosRetry(axiosInstance, {\n retryDelay: exponentialDelay,\n retries: 3,\n retryCondition: (error) => {\n // Retry on network errors and 5xx responses\n return (\n axiosRetry.isNetworkOrIdempotentRequestError(error) ||\n (error.response?.status !== undefined && error.response.status >= 500)\n )\n },\n })\n\n // Add request interceptor for authentication and data transformation\n axiosInstance.interceptors.request.use(async (config) => {\n // Add API key authentication only if not already set (e.g., by accessToken)\n if (!config.headers.Authorization) {\n config.headers.Authorization = `Bearer ${options.apiKey}`\n }\n\n // Convert BigInts in request body to strings\n if (config.data) {\n config.data = convertBigIntsToStrings(config.data)\n }\n\n // Add X-Wallet-Auth header if needed\n if (config.url && config.method) {\n const url = new URL(config.url, baseURL)\n const method = config.method.toUpperCase()\n const path = url.pathname\n\n // Validate publishable key for auth endpoints\n if (requiresPublishableKey(path) && !options.publishableKey) {\n throw new MissingPublishableKeyError(`${method} ${path}`)\n }\n\n if (requiresWalletAuth(method, path)) {\n // Throw early if wallet secret is required but not configured\n if (!options.walletSecret) {\n throw new MissingWalletSecretError(`${method} ${path}`)\n }\n\n let requestData: Record<string, unknown> = {}\n if (config.data && typeof config.data === 'object') {\n requestData = config.data as Record<string, unknown>\n }\n\n // IMPORTANT: Sort the request data keys to ensure the HTTP body\n // matches the hash computed for the JWT's reqHash claim.\n // The TEE hashes the raw body bytes without sorting, so we must\n // send the sorted JSON to match what generateWalletJwt hashes.\n if (Object.keys(requestData).length > 0) {\n config.data = sortKeys(requestData)\n }\n\n const walletAuthToken = await generateWalletJwt({\n walletSecret: options.walletSecret,\n requestMethod: method,\n requestHost: url.host,\n requestPath: path,\n requestData,\n })\n\n config.headers['X-Wallet-Auth'] = walletAuthToken\n }\n }\n\n return config\n })\n\n // Add debug interceptors if enabled\n if (options.debugging) {\n axiosInstance.interceptors.request.use((config) => {\n console.log('[Openfort] Request:', {\n method: config.method?.toUpperCase(),\n url: config.url,\n headers: config.headers,\n data: config.data,\n })\n return config\n })\n\n axiosInstance.interceptors.response.use(\n (response) => {\n console.log('[Openfort] Response:', {\n status: response.status,\n statusText: response.statusText,\n data: response.data,\n })\n return response\n },\n (error) => {\n return Promise.reject(error)\n },\n )\n }\n}\n\n/**\n * Request options for the API client\n */\nexport interface RequestOptions {\n /** Idempotency key for the request */\n idempotencyKey?: string\n /** Access token for authenticated requests (overrides default Authorization header) */\n accessToken?: string\n}\n\n/**\n * Adds custom headers to request config based on options\n */\nconst addRequestHeaders = (\n config: AxiosRequestConfig,\n options?: RequestOptions | string,\n): AxiosRequestConfig => {\n // Support legacy string parameter (idempotency key only)\n const opts: RequestOptions | undefined =\n typeof options === 'string' ? { idempotencyKey: options } : options\n\n if (!opts) {\n return config\n }\n\n const additionalHeaders: Record<string, string> = {}\n\n if (opts.idempotencyKey) {\n additionalHeaders['X-Idempotency-Key'] = opts.idempotencyKey\n }\n\n if (opts.accessToken) {\n additionalHeaders.Authorization = `Bearer ${opts.accessToken}`\n }\n\n if (Object.keys(additionalHeaders).length === 0) {\n return config\n }\n\n return {\n ...config,\n headers: {\n ...(config.headers || {}),\n ...additionalHeaders,\n },\n }\n}\n\n/**\n * Handles network-level errors (no response received)\n */\nfunction handleNetworkError(error: {\n message?: string\n code?: string\n cause?: unknown\n}): never {\n const errorMessage = (error.message || '').toLowerCase()\n const errorCode = error.code?.toLowerCase()\n\n if (\n errorCode === 'econnrefused' ||\n errorMessage.includes('connection refused')\n ) {\n throw new NetworkError(\n 'network_connection_failed',\n 'Unable to connect to Openfort service. The service may be unavailable.',\n { code: error.code, message: error.message, retryable: true },\n error.cause,\n )\n }\n\n if (\n errorCode === 'etimedout' ||\n errorCode === 'econnaborted' ||\n errorMessage.includes('timeout')\n ) {\n throw new NetworkError(\n 'network_timeout',\n 'Request timed out. Please try again.',\n { code: error.code, message: error.message, retryable: true },\n error.cause,\n )\n }\n\n if (errorCode === 'enotfound' || errorMessage.includes('getaddrinfo')) {\n throw new NetworkError(\n 'network_dns_failure',\n 'DNS resolution failed. Please check your network connection.',\n { code: error.code, message: error.message, retryable: false },\n error.cause,\n )\n }\n\n if (\n errorMessage.includes('network error') ||\n errorMessage.includes('econnreset')\n ) {\n throw new NetworkError(\n 'network_connection_failed',\n 'Network error occurred. Please check your connection and try again.',\n { code: error.code, message: error.message, retryable: true },\n error.cause,\n )\n }\n\n // Generic network error\n throw new NetworkError(\n 'unknown',\n error.message || 'An unknown network error occurred.',\n { code: error.code, message: error.message, retryable: true },\n error.cause,\n )\n}\n\n/**\n * Handles HTTP response errors\n */\nfunction handleResponseError(\n statusCode: number,\n responseData: unknown,\n cause?: unknown,\n): never {\n // Check for gateway-level errors\n const isGatewayError =\n responseData &&\n typeof responseData === 'string' &&\n (responseData.toLowerCase().includes('forbidden') ||\n responseData.toLowerCase().includes('ip') ||\n responseData.toLowerCase().includes('blocked') ||\n responseData.toLowerCase().includes('gateway'))\n\n // Extract correlation ID if available\n const correlationId = isOpenfortError(responseData)\n ? responseData.correlationId\n : undefined\n\n // Extract error message\n let errorMessage: string\n if (isOpenfortError(responseData)) {\n errorMessage = responseData.message || responseData.error || 'Unknown error'\n } else if (typeof responseData === 'string') {\n errorMessage = responseData\n } else if (responseData) {\n try {\n errorMessage = JSON.stringify(responseData)\n } catch {\n errorMessage = String(responseData)\n }\n } else {\n errorMessage = 'Unknown error'\n }\n\n switch (statusCode) {\n case 400:\n throw new APIError(\n statusCode,\n 'bad_request',\n errorMessage,\n correlationId,\n `${ERROR_DOCS_URL}#bad-request`,\n cause,\n )\n\n case 401:\n throw new APIError(\n statusCode,\n 'unauthorized',\n 'Unauthorized. Check your API key.',\n correlationId,\n `${ERROR_DOCS_URL}#unauthorized`,\n cause,\n )\n\n case 403:\n if (isGatewayError) {\n throw new NetworkError(\n 'network_ip_blocked',\n 'Access denied. Your IP address may be blocked or restricted.',\n {\n code: 'IP_BLOCKED',\n message:\n typeof responseData === 'string' ? responseData : errorMessage,\n retryable: false,\n },\n cause,\n )\n }\n throw new APIError(\n statusCode,\n 'forbidden',\n \"Forbidden. You don't have permission to access this resource.\",\n correlationId,\n `${ERROR_DOCS_URL}#forbidden`,\n cause,\n )\n\n case 404:\n throw new APIError(\n statusCode,\n 'not_found',\n errorMessage || 'Resource not found.',\n correlationId,\n `${ERROR_DOCS_URL}#not-found`,\n cause,\n )\n\n case 409:\n throw new APIError(\n statusCode,\n 'conflict',\n errorMessage || 'Resource conflict.',\n correlationId,\n `${ERROR_DOCS_URL}#conflict`,\n cause,\n )\n\n case 429:\n throw new APIError(\n statusCode,\n 'rate_limited',\n 'Rate limit exceeded. Please slow down your requests.',\n correlationId,\n `${ERROR_DOCS_URL}#rate-limited`,\n cause,\n )\n\n case 502:\n throw new APIError(\n statusCode,\n 'bad_gateway',\n 'Bad gateway. Please try again later.',\n correlationId,\n `${ERROR_DOCS_URL}`,\n cause,\n )\n\n case 503:\n throw new APIError(\n statusCode,\n 'service_unavailable',\n 'Service unavailable. Please try again later.',\n correlationId,\n `${ERROR_DOCS_URL}`,\n cause,\n )\n\n default:\n throw new APIError(\n statusCode,\n 'unexpected_error',\n `An unexpected error occurred: ${errorMessage}`,\n correlationId,\n `${ERROR_DOCS_URL}`,\n cause,\n )\n }\n}\n\n/**\n * The Openfort API client mutator for Orval.\n * This function is called by generated API functions to make HTTP requests.\n *\n * @param config - The Axios request configuration\n * @param options - Optional request options (idempotency key, access token)\n * @returns Promise resolving to the response data\n */\nexport const openfortApiClient = async <T>(\n config: AxiosRequestConfig,\n options?: RequestOptions | string,\n): Promise<T> => {\n // Validate the request\n validateRequest(config)\n\n const configWithHeaders = addRequestHeaders(config, options)\n\n try {\n const response = await axiosInstance(configWithHeaders)\n return response.data as T\n } catch (error) {\n // Handle validation errors (pass through)\n if (error instanceof ValidationError) {\n throw error\n }\n\n // Handle Axios errors\n if (Axios.isAxiosError(error)) {\n // Network-level errors (no response received)\n if (!error.response) {\n handleNetworkError({\n message: error.message,\n code: error.code,\n cause: error.cause,\n })\n }\n\n // HTTP response errors\n handleResponseError(\n error.response.status,\n error.response.data,\n error.cause,\n )\n }\n\n // Unknown errors\n throw new UnknownError(\n 'Something went wrong. Please contact support at https://www.openfort.io/support',\n error instanceof Error ? error : undefined,\n )\n }\n}\n\n/**\n * Gets the current client configuration\n */\nexport const getConfig = (): OpenfortClientOptions | undefined => clientConfig\n","/**\n * @module WalletAuth\n * Wallet authentication utilities for generating X-Wallet-Auth headers\n */\n\nimport { createHash, randomBytes } from 'node:crypto'\nimport { importPKCS8, SignJWT } from 'jose'\nimport {\n InvalidWalletSecretFormatError,\n UserInputValidationError,\n} from '../errors'\n\n/**\n * Options for generating a wallet JWT\n */\nexport interface WalletJwtOptions {\n /** The wallet secret (EC private key in base64 DER format) */\n walletSecret: string\n /** The HTTP method for the request */\n requestMethod: string\n /** The host for the request */\n requestHost: string\n /** The path for the request */\n requestPath: string\n /** The request body data */\n requestData?: Record<string, unknown>\n}\n\n/**\n * Generates a random nonce for the JWT\n */\nfunction generateNonce(): string {\n return randomBytes(16).toString('hex')\n}\n\n/**\n * Creates a hash of the request data for the JWT\n */\nfunction hashRequestData(data: Record<string, unknown>): string {\n const sortedData = sortKeys(data)\n const jsonString = JSON.stringify(sortedData)\n return createHash('sha256').update(jsonString).digest('hex')\n}\n\n/**\n * Recursively sorts object keys alphabetically.\n * This ensures deterministic JSON serialization for hash computation.\n * Exported for use in request body serialization (must match hash computation).\n */\nexport function sortKeys(obj: unknown): unknown {\n if (obj === null || typeof obj !== 'object') {\n return obj\n }\n\n if (Array.isArray(obj)) {\n return obj.map(sortKeys)\n }\n\n const sorted: Record<string, unknown> = {}\n for (const key of Object.keys(obj as Record<string, unknown>).sort()) {\n sorted[key] = sortKeys((obj as Record<string, unknown>)[key])\n }\n return sorted\n}\n\n/**\n * Generates a wallet authentication JWT for signing requests.\n * Used for authenticating wallet operations that require additional security.\n *\n * @param options - The configuration options for generating the JWT\n * @returns The generated JWT token string\n * @throws {Error} If the wallet secret is invalid or signing fails\n */\nexport async function generateWalletJwt(\n options: WalletJwtOptions,\n): Promise<string> {\n if (!options.walletSecret) {\n throw new UserInputValidationError('Wallet secret is required')\n }\n\n const uri = `${options.requestMethod} ${options.requestHost}${options.requestPath}`\n const now = Math.floor(Date.now() / 1000)\n\n const claims: Record<string, unknown> = {\n uris: [uri],\n }\n\n // Add request hash if there's request data\n if (\n options.requestData &&\n typeof options.requestData === 'object' &&\n Object.keys(options.requestData).length > 0 &&\n Object.values(options.requestData).some((value) => value !== undefined)\n ) {\n claims.reqHash = hashRequestData(options.requestData)\n }\n\n try {\n // Convert base64 DER to PEM format for jose\n const derBuffer = Buffer.from(options.walletSecret, 'base64')\n const pemKey = `-----BEGIN PRIVATE KEY-----\\n${derBuffer\n .toString('base64')\n .match(/.{1,64}/g)\n ?.join('\\n')}\\n-----END PRIVATE KEY-----`\n\n const ecKey = await importPKCS8(pemKey, 'ES256')\n\n return await new SignJWT(claims)\n .setProtectedHeader({ alg: 'ES256', typ: 'JWT' })\n .setIssuedAt(now)\n .setNotBefore(now)\n .setJti(generateNonce())\n .sign(ecKey)\n } catch (error) {\n throw new InvalidWalletSecretFormatError(\n `Could not create the EC key: ${error instanceof Error ? error.message : String(error)}`,\n )\n }\n}\n\n/**\n * Determines if a request requires wallet authentication based on method and path.\n *\n * @param requestMethod - The HTTP method of the request\n * @param requestPath - The URL path of the request\n * @returns True if the request requires wallet authentication\n */\nexport function requiresWalletAuth(\n requestMethod: string,\n requestPath: string,\n): boolean {\n // Other account-related paths only require auth for mutating methods\n const methodRequiresAuth =\n requestMethod === 'POST' ||\n requestMethod === 'DELETE' ||\n requestMethod === 'PUT'\n\n const pathRequiresAuth = requestPath?.includes('/accounts/backend')\n\n return methodRequiresAuth && pathRequiresAuth\n}\n","export const VERSION = \"0.7.3\";\nexport const PACKAGE = \"@openfort/openfort-node\";\n","/**\n * Generated by orval v7.18.0 🍺\n * Do not edit manually.\n * Openfort API\n * Complete Openfort API references and guides can be found at: https://www.openfort.io/docs\n * OpenAPI spec version: 1.0.0\n */\nimport type {\n AccountListResponse,\n AccountResponse,\n CancelTransferOwnershipRequest,\n CompleteRecoveryRequest,\n CreateAccountRequest,\n DeployRequest,\n GetAccountParams,\n GetAccountsParams,\n SignPayloadRequest,\n SignPayloadResponse,\n StartRecoveryRequest,\n TransactionIntentResponse,\n TransferOwnershipRequest\n} from '../openfortAPI.schemas';\n\nimport { openfortApiClient } from '../../openfortApiClient';\n\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n\n /**\n * Returns a list of accounts for the given player.\n\nThis object represents a player's account, which is a blockchain smart account that can be used to interact with the blockchain.\n\nThe accounts are returned sorted by creation date, with the most recently created accounts appearing first.\n\nReturns the latest 10 transaction intents for each account.\n\nBy default, a maximum of 10 accounts are shown per page.\n * @summary List accounts of a player.\n */\nexport const getAccounts = (\n params?: GetAccountsParams,\n options?: SecondParameter<typeof openfortApiClient<AccountListResponse>>,) => {\n return openfortApiClient<AccountListResponse>(\n {url: `/v1/accounts`, method: 'GET',\n params\n },\n options);\n }\n /**\n * Creates a new blockchain account for the provided player. If not player is provided, a new one will be created.\n\nAccount creation does not consume any gas. All accounts of a player will use the same address across blockchains.\n\nEach player can only have one account per chain.\n * @summary Create an account object.\n */\nexport const createAccount = (\n createAccountRequest: CreateAccountRequest,\n options?: SecondParameter<typeof openfortApiClient<AccountResponse>>,) => {\n return openfortApiClient<AccountResponse>(\n {url: `/v1/accounts`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: createAccountRequest\n },\n options);\n }\n /**\n * Retrieves the details of an existing account.\n\nSupply the unique account ID from either a account creation request or the account list, and Openfort will return the corresponding account information.\n\nReturns the latest 10 transaction intents created by this account.\n * @summary Get existing account.\n */\nexport const getAccount = (\n id: string,\n params?: GetAccountParams,\n options?: SecondParameter<typeof openfortApiClient<AccountResponse>>,) => {\n return openfortApiClient<AccountResponse>(\n {url: `/v1/accounts/${id}`, method: 'GET',\n params\n },\n options);\n }\n /**\n * Disables an account.\n\nAccounts won't be shown for user and won't be accessible for transactions.\n * @summary Disable account by id.\n */\nexport const disableAccount = (\n id: string,\n options?: SecondParameter<typeof openfortApiClient<void>>,) => {\n return openfortApiClient<void>(\n {url: `/v1/accounts/${id}/disable`, method: 'POST'\n },\n options);\n }\n /**\n * Perform a request to change the owner of an account.\n\nTo perform an update on the owner of an account, first you must provide a new owner address.\nOnce requested, the owner must accept to take ownership by calling `acceptOwnership()` in the smart contract account.\n * @summary Request transfer ownership of account.\n */\nexport const requestTransferOwnership = (\n id: string,\n transferOwnershipRequest: TransferOwnershipRequest,\n options?: SecondParameter<typeof openfortApiClient<TransactionIntentResponse>>,) => {\n return openfortApiClient<TransactionIntentResponse>(\n {url: `/v1/accounts/${id}/request_transfer_ownership`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: transferOwnershipRequest\n },\n options);\n }\n /**\n * Cancel a pending transfer of ownership.\n * @summary Cancel request to transfer ownership of an account.\n */\nexport const cancelTransferOwnership = (\n id: string,\n cancelTransferOwnershipRequest: CancelTransferOwnershipRequest,\n options?: SecondParameter<typeof openfortApiClient<TransactionIntentResponse>>,) => {\n return openfortApiClient<TransactionIntentResponse>(\n {url: `/v1/accounts/${id}/cancel_transfer_ownership`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: cancelTransferOwnershipRequest\n },\n options);\n }\n /**\n * **Custodial Accounts only** - Signs the typed repositories value with types repositories structure for domain using the [EIP-712](https://eips.ethereum.org/EIPS/eip-712) specification.\n * @summary Sign a given payload\n */\nexport const signPayload = (\n id: string,\n signPayloadRequest: SignPayloadRequest,\n options?: SecondParameter<typeof openfortApiClient<SignPayloadResponse>>,) => {\n return openfortApiClient<SignPayloadResponse>(\n {url: `/v1/accounts/${id}/sign_payload`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: signPayloadRequest\n },\n options);\n }\n /**\n * Synchronize the account state with the blockchain.\nSpecifically, it updates the account owner and whether its deployed or not.\n * @summary Sync account state with the blockchain\n */\nexport const syncAccount = (\n id: string,\n options?: SecondParameter<typeof openfortApiClient<AccountResponse>>,) => {\n return openfortApiClient<AccountResponse>(\n {url: `/v1/accounts/${id}/sync`, method: 'POST'\n },\n options);\n }\n /**\n * This endpoint can be used to deploy a smart contract account that was counterfactually generated.\n * @summary Deploy an account.\n */\nexport const deployAccount = (\n id: string,\n deployRequest: DeployRequest,\n options?: SecondParameter<typeof openfortApiClient<AccountResponse>>,) => {\n return openfortApiClient<AccountResponse>(\n {url: `/v1/accounts/${id}/deploy`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: deployRequest\n },\n options);\n }\n /**\n * @summary Start a recovery process of a recoverable account.\n */\nexport const startRecovery = (\n id: string,\n startRecoveryRequest: StartRecoveryRequest,\n options?: SecondParameter<typeof openfortApiClient<TransactionIntentResponse>>,) => {\n return openfortApiClient<TransactionIntentResponse>(\n {url: `/v1/accounts/${id}/start_recovery`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: startRecoveryRequest\n },\n options);\n }\n /**\n * @summary Complete a recovery process of a recoverable account.\n */\nexport const completeRecovery = (\n id: string,\n completeRecoveryRequest: CompleteRecoveryRequest,\n options?: SecondParameter<typeof openfortApiClient<TransactionIntentResponse>>,) => {\n return openfortApiClient<TransactionIntentResponse>(\n {url: `/v1/accounts/${id}/complete_recovery`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: completeRecoveryRequest\n },\n options);\n }\n export type GetAccountsResult = NonNullable<Awaited<ReturnType<typeof getAccounts>>>\nexport type CreateAccountResult = NonNullable<Awaited<ReturnType<typeof createAccount>>>\nexport type GetAccountResult = NonNullable<Awaited<ReturnType<typeof getAccount>>>\nexport type DisableAccountResult = NonNullable<Awaited<ReturnType<typeof disableAccount>>>\nexport type RequestTransferOwnershipResult = NonNullable<Awaited<ReturnType<typeof requestTransferOwnership>>>\nexport type CancelTransferOwnershipResult = NonNullable<Awaited<ReturnType<typeof cancelTransferOwnership>>>\nexport type SignPayloadResult = NonNullable<Awaited<ReturnType<typeof signPayload>>>\nexport type SyncAccountResult = NonNullable<Awaited<ReturnType<typeof syncAccount>>>\nexport type DeployAccountResult = NonNullable<Awaited<ReturnType<typeof deployAccount>>>\nexport type StartRecoveryResult = NonNullable<Awaited<ReturnType<typeof startRecovery>>>\nexport type CompleteRecoveryResult = NonNullable<Awaited<ReturnType<typeof completeRecovery>>>\n","/**\n * Generated by orval v7.18.0 🍺\n * Do not edit manually.\n * Openfort API\n * Complete Openfort API references and guides can be found at: https://www.openfort.io/docs\n * OpenAPI spec version: 1.0.0\n */\nimport type {\n AccountV2Response,\n BaseEntityListResponseAccountV2Response,\n CreateAccountRequestV2,\n DeleteAccountResponse,\n GetAccountsV2Params,\n GetSignerIdByAddressParams,\n SignerIdResponse,\n SwitchChainQueriesV2\n} from '../openfortAPI.schemas';\n\nimport { openfortApiClient } from '../../openfortApiClient';\n\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n\n /**\n * Returns a list of accounts for the given user.\n\nThis object represents a user's account, which is a blockchain smart account that can be used to interact with the blockchain.\n\nThe accounts are returned sorted by creation date, with the most recently created accounts appearing first.\n * @summary List user accounts.\n */\nexport const getAccountsV2 = (\n params?: GetAccountsV2Params,\n options?: SecondParameter<typeof openfortApiClient<BaseEntityListResponseAccountV2Response>>,) => {\n return openfortApiClient<BaseEntityListResponseAccountV2Response>(\n {url: `/v2/accounts`, method: 'GET',\n params\n },\n options);\n }\n /**\n * Creates a new blockchain account for a user.\n\nAccount creation does not consume any gas. The account can be used to interact with the blockchain.\n * @summary Create new account.\n */\nexport const createAccountV2 = (\n createAccountRequestV2: CreateAccountRequestV2,\n options?: SecondParameter<typeof openfortApiClient<AccountV2Response>>,) => {\n return openfortApiClient<AccountV2Response>(\n {url: `/v2/accounts`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: createAccountRequestV2\n },\n options);\n }\n /**\n * Retrieves the signer ID associated with a given blockchain address.\n * @summary Get signer ID by address.\n */\nexport const getSignerIdByAddress = (\n params: GetSignerIdByAddressParams,\n options?: SecondParameter<typeof openfortApiClient<SignerIdResponse>>,) => {\n return openfortApiClient<SignerIdResponse>(\n {url: `/v2/accounts/signer`, method: 'GET',\n params\n },\n options);\n }\n /**\n * Retrieves the details of an existing account.\n\nSupply the unique account ID and Openfort will return the corresponding account information.\n * @summary Get existing account.\n */\nexport const getAccountV2 = (\n id: string,\n options?: SecondParameter<typeof openfortApiClient<AccountV2Response>>,) => {\n return openfortApiClient<AccountV2Response>(\n {url: `/v2/accounts/${id}`, method: 'GET'\n },\n options);\n }\n /**\n * Removes an account from a project.\n * @summary Delete account.\n */\nexport const removeAccount = (\n id: string,\n options?: SecondParameter<typeof openfortApiClient<DeleteAccountResponse>>,) => {\n return openfortApiClient<DeleteAccountResponse>(\n {url: `/v2/accounts/${id}`, method: 'DELETE'\n },\n options);\n }\n /**\n * Switches the blockchain network for an existing account.\n\nThis allows moving an account between different blockchain networks while maintaining the same account identity.\n * @summary Switch account blockchain.\n */\nexport const switchChainV2 = (\n switchChainQueriesV2: SwitchChainQueriesV2,\n options?: SecondParameter<typeof openfortApiClient<AccountV2Response>>,) => {\n return openfortApiClient<AccountV2Response>(\n {url: `/v2/accounts/switch-chain`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: switchChainQueriesV2\n },\n options);\n }\n export type GetAccountsV2Result = NonNullable<Awaited<ReturnType<typeof getAccountsV2>>>\nexport type CreateAccountV2Result = NonNullable<Awaited<ReturnType<typeof createAccountV2>>>\nexport type GetSignerIdByAddressResult = NonNullable<Awaited<ReturnType<typeof getSignerIdByAddress>>>\nexport type GetAccountV2Result = NonNullable<Awaited<ReturnType<typeof getAccountV2>>>\nexport type RemoveAccountResult = NonNullable<Awaited<ReturnType<typeof removeAccount>>>\nexport type SwitchChainV2Result = NonNullable<Awaited<ReturnType<typeof switchChainV2>>>\n","/**\n * Generated by orval v7.18.0 🍺\n * Do not edit manually.\n * Openfort API\n * Complete Openfort API references and guides can be found at: https://www.openfort.io/docs\n * OpenAPI spec version: 1.0.0\n */\nimport type {\n AuthConfig,\n AuthPlayerListResponse,\n AuthPlayerResponse,\n AuthPlayerResponseWithRecoveryShare,\n AuthProviderListResponse,\n AuthSessionResponse,\n AuthenticateOAuthRequest,\n Authorize200,\n AuthorizePlayerRequest,\n CallbackOAuthParams,\n CreateAuthPlayerRequest,\n DeprecatedCallbackOAuthParams,\n GetAuthPlayersParams,\n GrantCallbackRequest,\n GrantOAuthResponse,\n ListParams,\n OAuthConfigListResponse,\n OAuthProvider,\n PlayerResponse,\n VerifyAuthTokenParams\n} from '../openfortAPI.schemas';\n\nimport { openfortApiClient } from '../../openfortApiClient';\n\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n\n /**\n * The endpoint verifies the token generated by OAuth provider and retrieves a corresponding player.\n\nReturns the latest 10 transaction intents for the player.\n * @summary Retrieve player by oauth token.\n */\nexport const verifyOAuthToken = (\n authenticateOAuthRequest: AuthenticateOAuthRequest,\n options?: SecondParameter<typeof openfortApiClient<PlayerResponse>>,) => {\n return openfortApiClient<PlayerResponse>(\n {url: `/iam/v1/oauth/verify`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: authenticateOAuthRequest\n },\n options);\n }\n /**\n * List configured OAuth methods for the current project environment.\n * @deprecated\n * @summary List of oauth configurations.\n */\nexport const listOAuthConfig = (\n \n options?: SecondParameter<typeof openfortApiClient<OAuthConfigListResponse>>,) => {\n return openfortApiClient<OAuthConfigListResponse>(\n {url: `/iam/v1/oauth`, method: 'GET'\n },\n options);\n }\n /**\n * The endpoint creates oauth configuration for the current project environment.\n * @deprecated\n * @summary Create oauth configuration.\n */\nexport const createOAuthConfig = (\n authConfig: AuthConfig,\n options?: SecondParameter<typeof openfortApiClient<AuthConfig>>,) => {\n return openfortApiClient<AuthConfig>(\n {url: `/iam/v1/oauth`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: authConfig\n },\n options);\n }\n /**\n * @deprecated\n * @summary oauth callback.\n */\nexport const deprecatedCallbackOAuth = (\n params: DeprecatedCallbackOAuthParams,\n options?: SecondParameter<typeof openfortApiClient<unknown>>,) => {\n return openfortApiClient<unknown>(\n {url: `/iam/v1/oauth/callback`, method: 'GET',\n params\n },\n options);\n }\n /**\n * @summary oauth grant.\n */\nexport const grantOAuth = (\n provider: OAuthProvider,\n grantCallbackRequest: GrantCallbackRequest,\n options?: SecondParameter<typeof openfortApiClient<GrantOAuthResponse>>,) => {\n return openfortApiClient<GrantOAuthResponse>(\n {url: `/iam/v1/oauth/grant/${provider}`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: grantCallbackRequest\n },\n options);\n }\n /**\n * @summary oauth callback.\n */\nexport const callbackOAuth = (\n provider: OAuthProvider,\n params: CallbackOAuthParams,\n options?: SecondParameter<typeof openfortApiClient<unknown>>,) => {\n return openfortApiClient<unknown>(\n {url: `/iam/v1/oauth/callback/${provider}`, method: 'GET',\n params\n },\n options);\n }\n /**\n * The endpoint retrieves oauth configuration for specified provider for the current project environment.\n * @deprecated\n * @summary Get oauth configuration.\n */\nexport const getOAuthConfig = (\n provider: OAuthProvider,\n options?: SecondParameter<typeof openfortApiClient<AuthConfig>>,) => {\n return openfortApiClient<AuthConfig>(\n {url: `/iam/v1/oauth/${provider}`, method: 'GET'\n },\n options);\n }\n /**\n * The endpoint deletes oauth configuration for specified provider for the current project environment.\n * @deprecated\n * @summary Delete oauth configuration.\n */\nexport const deleteOAuthConfig = (\n provider: OAuthProvider,\n options?: SecondParameter<typeof openfortApiClient<void>>,) => {\n return openfortApiClient<void>(\n {url: `/iam/v1/oauth/${provider}`, method: 'DELETE'\n },\n options);\n }\n /**\n * List configured auth methods for the current project environment.\n * @summary List of auth configurations.\n */\nexport const list = (\n params?: ListParams,\n options?: SecondParameter<typeof openfortApiClient<AuthProviderListResponse>>,) => {\n return openfortApiClient<AuthProviderListResponse>(\n {url: `/iam/v1/config`, method: 'GET',\n params\n },\n options);\n }\n /**\n * The endpoint creates oauth configuration for the current project environment.\n * @summary Create oauth configuration.\n */\nexport const create = (\n authConfig: AuthConfig,\n options?: SecondParameter<typeof openfortApiClient<AuthConfig>>,) => {\n return openfortApiClient<AuthConfig>(\n {url: `/iam/v1/config`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: authConfig\n },\n options);\n }\n /**\n * Creates an authenticated player.\n\nThe player will be authenticated with the provider and an embedded account can be pre generated.\n * @summary Create an authenticated player.\n */\nexport const createAuthPlayer = (\n createAuthPlayerRequest: CreateAuthPlayerRequest,\n options?: SecondParameter<typeof openfortApiClient<AuthPlayerResponseWithRecoveryShare>>,) => {\n return openfortApiClient<AuthPlayerResponseWithRecoveryShare>(\n {url: `/iam/v1/players`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: createAuthPlayerRequest\n },\n options);\n }\n /**\n * Retrieves a list of authenticated players.\n\nPlayers have linked accounts and are authenticated with a provider.\n * @summary List authenticated players.\n */\nexport const getAuthPlayers = (\n params?: GetAuthPlayersParams,\n options?: SecondParameter<typeof openfortApiClient<AuthPlayerListResponse>>,) => {\n return openfortApiClient<AuthPlayerListResponse>(\n {url: `/iam/v1/players`, method: 'GET',\n params\n },\n options);\n }\n /**\n * Retrieves an authenticated player.\n\nPlayers have linked accounts and are authenticated with a provider.\n * @summary Authenticated player.\n */\nexport const getAuthPlayer = (\n id: string,\n options?: SecondParameter<typeof openfortApiClient<AuthPlayerResponse>>,) => {\n return openfortApiClient<AuthPlayerResponse>(\n {url: `/iam/v1/players/${id}`, method: 'GET'\n },\n options);\n }\n /**\n * Deletes a player auth object.\n\nIt will delete all linked accounts the player is authenticated with.\nIf the player has a linked embedded signer, it will be deleted as well.\n * @summary Deletes a player auth object.\n */\nexport const deleteAuthPlayer = (\n id: string,\n options?: SecondParameter<typeof openfortApiClient<AuthPlayerResponse>>,) => {\n return openfortApiClient<AuthPlayerResponse>(\n {url: `/iam/v1/players/${id}`, method: 'DELETE'\n },\n options);\n }\n /**\n * Verifies the token generated by Openfort Auth.\n * @summary Verify auth token.\n */\nexport const verifyAuthToken = (\n params: VerifyAuthTokenParams,\n options?: SecondParameter<typeof openfortApiClient<AuthSessionResponse>>,) => {\n return openfortApiClient<AuthSessionResponse>(\n {url: `/iam/v1/verify`, method: 'GET',\n params\n },\n options);\n }\n export const authorize = (\n authorizePlayerRequest: AuthorizePlayerRequest,\n options?: SecondParameter<typeof openfortApiClient<Authorize200>>,) => {\n return openfortApiClient<Authorize200>(\n {url: `/iam/v1/authorize`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: authorizePlayerRequest\n },\n options);\n }\n export type VerifyOAuthTokenResult = NonNullable<Awaited<ReturnType<typeof verifyOAuthToken>>>\nexport type ListOAuthConfigResult = NonNullable<Awaited<ReturnType<typeof listOAuthConfig>>>\nexport type CreateOAuthConfigResult = NonNullable<Awaited<ReturnType<typeof createOAuthConfig>>>\nexport type DeprecatedCallbackOAuthResult = NonNullable<Awaited<ReturnType<typeof deprecatedCallbackOAuth>>>\nexport type GrantOAuthResult = NonNullable<Awaited<ReturnType<typeof grantOAuth>>>\nexport type CallbackOAuthResult = NonNullable<Awaited<ReturnType<typeof callbackOAuth>>>\nexport type GetOAuthConfigResult = NonNullable<Awaited<ReturnType<typeof getOAuthConfig>>>\nexport type DeleteOAuthConfigResult = NonNullable<Awaited<ReturnType<typeof deleteOAuthConfig>>>\nexport type ListResult = NonNullable<Awaited<ReturnType<typeof list>>>\nexport type CreateResult = NonNullable<Awaited<ReturnType<typeof create>>>\nexport type CreateAuthPlayerResult = NonNullable<Awaited<ReturnType<typeof createAuthPlayer>>>\nexport type GetAuthPlayersResult = NonNullable<Awaited<ReturnType<typeof getAuthPlayers>>>\nexport type GetAuthPlayerResult = NonNullable<Awaited<ReturnType<typeof getAuthPlayer>>>\nexport type DeleteAuthPlayerResult = NonNullable<Awaited<ReturnType<typeof deleteAuthPlayer>>>\nexport type VerifyAuthTokenResult = NonNullable<Awaited<ReturnType<typeof verifyAuthToken>>>\nexport type AuthorizeResult = NonNullable<Awaited<ReturnType<typeof authorize>>>\n","/**\n * Generated by orval v7.18.0 🍺\n * Do not edit manually.\n * Openfort Auth\n * API Reference for Openfort Auth\n * OpenAPI spec version: 1.0.0\n */\nimport type {\n CheckVerificationOtp200,\n CheckVerificationOtpBody,\n GetGetSession200,\n GetGetSessionParams,\n GetLinkSiweListWallets200Item,\n GetListAccounts200Item,\n GetResetPasswordToken200,\n GetResetPasswordTokenParams,\n GetVerifyEmail200,\n GetVerifyEmailParams,\n PostAccountInfo200,\n PostAccountInfoBody,\n PostChangeEmail200,\n PostChangeEmailBody,\n PostChangePassword200,\n PostChangePasswordBody,\n PostEmailOtpResetPasswordBody,\n PostEmailOtpSendVerificationOtp200,\n PostEmailOtpSendVerificationOtpBody,\n PostEmailOtpVerifyEmail200,\n PostEmailOtpVerifyEmailBody,\n PostForgetPassword200,\n PostForgetPasswordBody,\n PostForgetPasswordEmailOtp200,\n PostForgetPasswordEmailOtpBody,\n PostGetAccessToken200,\n PostGetAccessTokenBody,\n PostLinkSiweNonce200,\n PostLinkSiweNonceBody,\n PostLinkSiweUnlink200,\n PostLinkSiweUnlinkBody,\n PostLinkSiweVerify200,\n PostLinkSiweVerifyBody,\n PostLinkSocial200,\n PostLinkSocialBody,\n PostPhoneNumberForgetPassword200,\n PostPhoneNumberForgetPasswordBody,\n PostPhoneNumberRequestPasswordReset200,\n PostPhoneNumberRequestPasswordResetBody,\n PostPhoneNumberResetPasswordBody,\n PostPhoneNumberSendOtp200,\n PostPhoneNumberSendOtpBody,\n PostPhoneNumberVerify200,\n PostPhoneNumberVerifyBody,\n PostRefreshToken200,\n PostRefreshTokenBody,\n PostRequestPasswordReset200,\n PostRequestPasswordResetBody,\n PostResetPasswordBody,\n PostRevokeOtherSessions200,\n PostRevokeOtherSessionsBody,\n PostRevokeSession200,\n PostRevokeSessionBody,\n PostRevokeSessions200,\n PostRevokeSessionsBody,\n PostSendVerificationEmail200,\n PostSendVerificationEmailBody,\n PostSignInAnonymous200,\n PostSignInEmail200,\n PostSignInEmailBody,\n PostSignInEmailOtp200,\n PostSignInEmailOtpBody,\n PostSignInPhoneNumber200,\n PostSignInPhoneNumberBody,\n PostSignOut200,\n PostSignOutBody,\n PostSignUpEmail200,\n PostSignUpEmailBody,\n PostSiweNonce200,\n PostSiweNonceBody,\n PostSiweVerify200,\n PostSiweVerifyBody,\n PostUnlinkAccountBody,\n ResetPasswordResponse,\n Session,\n SocialSignIn200,\n SocialSignInBody,\n UnlinkAccountResponse\n} from '../openfortAuth.schemas';\n\nimport { openfortApiClient } from '../../../openfortApiClient';\n\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n\n /**\n * Sign in with a social provider\n * @summary Sign in with a social provider.\n */\nexport const socialSignIn = (\n socialSignInBody: SocialSignInBody,\n options?: SecondParameter<typeof openfortApiClient<SocialSignIn200>>,) => {\n return openfortApiClient<SocialSignIn200>(\n {url: `/iam/v2/auth/sign-in/social`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: socialSignInBody\n },\n options);\n }\n /**\n * Get the current session\n * @summary Get the current session.\n */\nexport const getGetSession = (\n params?: GetGetSessionParams,\n options?: SecondParameter<typeof openfortApiClient<GetGetSession200>>,) => {\n return openfortApiClient<GetGetSession200>(\n {url: `/iam/v2/auth/get-session`, method: 'GET',\n params\n },\n options);\n }\n /**\n * Sign out the current user\n * @summary Sign out.\n */\nexport const postSignOut = (\n postSignOutBody: PostSignOutBody,\n options?: SecondParameter<typeof openfortApiClient<PostSignOut200>>,) => {\n return openfortApiClient<PostSignOut200>(\n {url: `/iam/v2/auth/sign-out`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postSignOutBody\n },\n options);\n }\n /**\n * Sign up a user using email and password\n * @summary Sign up with email and password.\n */\nexport const postSignUpEmail = (\n postSignUpEmailBody: PostSignUpEmailBody,\n options?: SecondParameter<typeof openfortApiClient<PostSignUpEmail200>>,) => {\n return openfortApiClient<PostSignUpEmail200>(\n {url: `/iam/v2/auth/sign-up/email`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postSignUpEmailBody\n },\n options);\n }\n /**\n * Sign in with email and password\n * @summary Sign in with email and password.\n */\nexport const postSignInEmail = (\n postSignInEmailBody: PostSignInEmailBody,\n options?: SecondParameter<typeof openfortApiClient<PostSignInEmail200>>,) => {\n return openfortApiClient<PostSignInEmail200>(\n {url: `/iam/v2/auth/sign-in/email`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postSignInEmailBody\n },\n options);\n }\n /**\n * Send a password reset email to the user\n * @summary Forget password.\n */\nexport const postForgetPassword = (\n postForgetPasswordBody: PostForgetPasswordBody,\n options?: SecondParameter<typeof openfortApiClient<PostForgetPassword200>>,) => {\n return openfortApiClient<PostForgetPassword200>(\n {url: `/iam/v2/auth/forget-password`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postForgetPasswordBody\n },\n options);\n }\n /**\n * Reset the password for a user\n * @summary Reset password.\n */\nexport const postResetPassword = (\n postResetPasswordBody: PostResetPasswordBody,\n options?: SecondParameter<typeof openfortApiClient<ResetPasswordResponse>>,) => {\n return openfortApiClient<ResetPasswordResponse>(\n {url: `/iam/v2/auth/reset-password`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postResetPasswordBody\n },\n options);\n }\n /**\n * Verify the email of the user.\nUsually this endpoint is called when user clicks 'Verify email' link from the letter.\n * @summary Verify email.\n */\nexport const getVerifyEmail = (\n params: GetVerifyEmailParams,\n options?: SecondParameter<typeof openfortApiClient<GetVerifyEmail200>>,) => {\n return openfortApiClient<GetVerifyEmail200>(\n {url: `/iam/v2/auth/verify-email`, method: 'GET',\n params\n },\n options);\n }\n /**\n * Send a verification email to the user\n * @summary Send verification email.\n */\nexport const postSendVerificationEmail = (\n postSendVerificationEmailBody: PostSendVerificationEmailBody,\n options?: SecondParameter<typeof openfortApiClient<PostSendVerificationEmail200>>,) => {\n return openfortApiClient<PostSendVerificationEmail200>(\n {url: `/iam/v2/auth/send-verification-email`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postSendVerificationEmailBody\n },\n options);\n }\n /**\n * Change user's email\n * @summary Change email.\n */\nexport const postChangeEmail = (\n postChangeEmailBody: PostChangeEmailBody,\n options?: SecondParameter<typeof openfortApiClient<PostChangeEmail200>>,) => {\n return openfortApiClient<PostChangeEmail200>(\n {url: `/iam/v2/auth/change-email`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postChangeEmailBody\n },\n options);\n }\n /**\n * Change the password of the user\n * @summary Change password.\n */\nexport const postChangePassword = (\n postChangePasswordBody: PostChangePasswordBody,\n options?: SecondParameter<typeof openfortApiClient<PostChangePassword200>>,) => {\n return openfortApiClient<PostChangePassword200>(\n {url: `/iam/v2/auth/change-password`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postChangePasswordBody\n },\n options);\n }\n /**\n * Redirects the user to the callback URL with the token\n * @summary Reset password callback.\n */\nexport const getResetPasswordToken = (\n token: string,\n params?: GetResetPasswordTokenParams,\n options?: SecondParameter<typeof openfortApiClient<GetResetPasswordToken200>>,) => {\n return openfortApiClient<GetResetPasswordToken200>(\n {url: `/iam/v2/auth/reset-password/${token}`, method: 'GET',\n params\n },\n options);\n }\n /**\n * Send a password reset email to the user\n * @summary Request password reset.\n */\nexport const postRequestPasswordReset = (\n postRequestPasswordResetBody: PostRequestPasswordResetBody,\n options?: SecondParameter<typeof openfortApiClient<PostRequestPasswordReset200>>,) => {\n return openfortApiClient<PostRequestPasswordReset200>(\n {url: `/iam/v2/auth/request-password-reset`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postRequestPasswordResetBody\n },\n options);\n }\n /**\n * List all active sessions for the user\n * @summary List sessions.\n */\nexport const getListSessions = (\n \n options?: SecondParameter<typeof openfortApiClient<Session[]>>,) => {\n return openfortApiClient<Session[]>(\n {url: `/iam/v2/auth/list-sessions`, method: 'GET'\n },\n options);\n }\n /**\n * Revoke a single session\n * @summary Revoke session.\n */\nexport const postRevokeSession = (\n postRevokeSessionBody: PostRevokeSessionBody,\n options?: SecondParameter<typeof openfortApiClient<PostRevokeSession200>>,) => {\n return openfortApiClient<PostRevokeSession200>(\n {url: `/iam/v2/auth/revoke-session`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postRevokeSessionBody\n },\n options);\n }\n /**\n * Revoke all sessions for the user\n * @summary Revoke sessions.\n */\nexport const postRevokeSessions = (\n postRevokeSessionsBody: PostRevokeSessionsBody,\n options?: SecondParameter<typeof openfortApiClient<PostRevokeSessions200>>,) => {\n return openfortApiClient<PostRevokeSessions200>(\n {url: `/iam/v2/auth/revoke-sessions`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postRevokeSessionsBody\n },\n options);\n }\n /**\n * Revoke all other sessions for the user except the current one\n * @summary Revoke other sessions.\n */\nexport const postRevokeOtherSessions = (\n postRevokeOtherSessionsBody: PostRevokeOtherSessionsBody,\n options?: SecondParameter<typeof openfortApiClient<PostRevokeOtherSessions200>>,) => {\n return openfortApiClient<PostRevokeOtherSessions200>(\n {url: `/iam/v2/auth/revoke-other-sessions`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postRevokeOtherSessionsBody\n },\n options);\n }\n /**\n * Link a social account to the user\n * @summary Link social account.\n */\nexport const postLinkSocial = (\n postLinkSocialBody: PostLinkSocialBody,\n options?: SecondParameter<typeof openfortApiClient<PostLinkSocial200>>,) => {\n return openfortApiClient<PostLinkSocial200>(\n {url: `/iam/v2/auth/link-social`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postLinkSocialBody\n },\n options);\n }\n /**\n * List all accounts linked to the user\n * @summary List lined accounts.\n */\nexport const getListAccounts = (\n \n options?: SecondParameter<typeof openfortApiClient<GetListAccounts200Item[]>>,) => {\n return openfortApiClient<GetListAccounts200Item[]>(\n {url: `/iam/v2/auth/list-accounts`, method: 'GET'\n },\n options);\n }\n /**\n * Unlink an account\n * @summary Unlink account.\n */\nexport const postUnlinkAccount = (\n postUnlinkAccountBody: PostUnlinkAccountBody,\n options?: SecondParameter<typeof openfortApiClient<UnlinkAccountResponse>>,) => {\n return openfortApiClient<UnlinkAccountResponse>(\n {url: `/iam/v2/auth/unlink-account`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postUnlinkAccountBody\n },\n options);\n }\n /**\n * Refresh the access token using a refresh token\n * @summary Refresh access token.\n */\nexport const postRefreshToken = (\n postRefreshTokenBody: PostRefreshTokenBody,\n options?: SecondParameter<typeof openfortApiClient<PostRefreshToken200>>,) => {\n return openfortApiClient<PostRefreshToken200>(\n {url: `/iam/v2/auth/refresh-token`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postRefreshTokenBody\n },\n options);\n }\n /**\n * Get a valid access token, doing a refresh if needed\n * @summary Get access token.\n */\nexport const postGetAccessToken = (\n postGetAccessTokenBody: PostGetAccessTokenBody,\n options?: SecondParameter<typeof openfortApiClient<PostGetAccessToken200>>,) => {\n return openfortApiClient<PostGetAccessToken200>(\n {url: `/iam/v2/auth/get-access-token`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postGetAccessTokenBody\n },\n options);\n }\n /**\n * Get the account info provided by the provider\n * @summary Get account info.\n */\nexport const postAccountInfo = (\n postAccountInfoBody: PostAccountInfoBody,\n options?: SecondParameter<typeof openfortApiClient<PostAccountInfo200>>,) => {\n return openfortApiClient<PostAccountInfo200>(\n {url: `/iam/v2/auth/account-info`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postAccountInfoBody\n },\n options);\n }\n /**\n * Sign in anonymously\n * @summary Anonymous sign in.\n */\nexport const postSignInAnonymous = (\n \n options?: SecondParameter<typeof openfortApiClient<PostSignInAnonymous200>>,) => {\n return openfortApiClient<PostSignInAnonymous200>(\n {url: `/iam/v2/auth/sign-in/anonymous`, method: 'POST'\n },\n options);\n }\n /**\n * Use this endpoint to sign in with phone number\n * @summary Sign in with phone.\n */\nexport const postSignInPhoneNumber = (\n postSignInPhoneNumberBody: PostSignInPhoneNumberBody,\n options?: SecondParameter<typeof openfortApiClient<PostSignInPhoneNumber200>>,) => {\n return openfortApiClient<PostSignInPhoneNumber200>(\n {url: `/iam/v2/auth/sign-in/phone-number`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postSignInPhoneNumberBody\n },\n options);\n }\n /**\n * Use this endpoint to send OTP to phone number\n * @summary Send OTP to phone number.\n */\nexport const postPhoneNumberSendOtp = (\n postPhoneNumberSendOtpBody: PostPhoneNumberSendOtpBody,\n options?: SecondParameter<typeof openfortApiClient<PostPhoneNumberSendOtp200>>,) => {\n return openfortApiClient<PostPhoneNumberSendOtp200>(\n {url: `/iam/v2/auth/phone-number/send-otp`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postPhoneNumberSendOtpBody\n },\n options);\n }\n /**\n * Use this endpoint to verify phone number\n * @summary Verify phone OTP.\n */\nexport const postPhoneNumberVerify = (\n postPhoneNumberVerifyBody: PostPhoneNumberVerifyBody,\n options?: SecondParameter<typeof openfortApiClient<PostPhoneNumberVerify200>>,) => {\n return openfortApiClient<PostPhoneNumberVerify200>(\n {url: `/iam/v2/auth/phone-number/verify`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postPhoneNumberVerifyBody\n },\n options);\n }\n /**\n * Request OTP for password reset via phone number\n * @summary Reset password reset with phone(forget password flow).\n */\nexport const postPhoneNumberForgetPassword = (\n postPhoneNumberForgetPasswordBody: PostPhoneNumberForgetPasswordBody,\n options?: SecondParameter<typeof openfortApiClient<PostPhoneNumberForgetPassword200>>,) => {\n return openfortApiClient<PostPhoneNumberForgetPassword200>(\n {url: `/iam/v2/auth/phone-number/forget-password`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postPhoneNumberForgetPasswordBody\n },\n options);\n }\n /**\n * Request OTP for password reset via phone number\n * @summary Request password reset with phone.\n */\nexport const postPhoneNumberRequestPasswordReset = (\n postPhoneNumberRequestPasswordResetBody: PostPhoneNumberRequestPasswordResetBody,\n options?: SecondParameter<typeof openfortApiClient<PostPhoneNumberRequestPasswordReset200>>,) => {\n return openfortApiClient<PostPhoneNumberRequestPasswordReset200>(\n {url: `/iam/v2/auth/phone-number/request-password-reset`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postPhoneNumberRequestPasswordResetBody\n },\n options);\n }\n /**\n * Reset password using phone number OTP\n * @summary Reset password with phone OTP.\n */\nexport const postPhoneNumberResetPassword = (\n postPhoneNumberResetPasswordBody: PostPhoneNumberResetPasswordBody,\n options?: SecondParameter<typeof openfortApiClient<ResetPasswordResponse>>,) => {\n return openfortApiClient<ResetPasswordResponse>(\n {url: `/iam/v2/auth/phone-number/reset-password`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postPhoneNumberResetPasswordBody\n },\n options);\n }\n /**\n * Send verification OTP\n * @summary Request email verification with OTP.\n */\nexport const postEmailOtpSendVerificationOtp = (\n postEmailOtpSendVerificationOtpBody: PostEmailOtpSendVerificationOtpBody,\n options?: SecondParameter<typeof openfortApiClient<PostEmailOtpSendVerificationOtp200>>,) => {\n return openfortApiClient<PostEmailOtpSendVerificationOtp200>(\n {url: `/iam/v2/auth/email-otp/send-verification-otp`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postEmailOtpSendVerificationOtpBody\n },\n options);\n }\n /**\n * Check if a verification OTP is valid\n * @summary Check email OTP.\n */\nexport const checkVerificationOtp = (\n checkVerificationOtpBody: CheckVerificationOtpBody,\n options?: SecondParameter<typeof openfortApiClient<CheckVerificationOtp200>>,) => {\n return openfortApiClient<CheckVerificationOtp200>(\n {url: `/iam/v2/auth/email-otp/check-verification-otp`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: checkVerificationOtpBody\n },\n options);\n }\n /**\n * Verify email with OTP\n * @summary Verify email with OTP.\n */\nexport const postEmailOtpVerifyEmail = (\n postEmailOtpVerifyEmailBody: PostEmailOtpVerifyEmailBody,\n options?: SecondParameter<typeof openfortApiClient<PostEmailOtpVerifyEmail200>>,) => {\n return openfortApiClient<PostEmailOtpVerifyEmail200>(\n {url: `/iam/v2/auth/email-otp/verify-email`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postEmailOtpVerifyEmailBody\n },\n options);\n }\n /**\n * Sign in with OTP\n * @summary Sign in with email OTP.\n */\nexport const postSignInEmailOtp = (\n postSignInEmailOtpBody: PostSignInEmailOtpBody,\n options?: SecondParameter<typeof openfortApiClient<PostSignInEmailOtp200>>,) => {\n return openfortApiClient<PostSignInEmailOtp200>(\n {url: `/iam/v2/auth/sign-in/email-otp`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postSignInEmailOtpBody\n },\n options);\n }\n /**\n * Send a password reset OTP to the user\n * @summary Request password reset with email OTP.\n */\nexport const postForgetPasswordEmailOtp = (\n postForgetPasswordEmailOtpBody: PostForgetPasswordEmailOtpBody,\n options?: SecondParameter<typeof openfortApiClient<PostForgetPasswordEmailOtp200>>,) => {\n return openfortApiClient<PostForgetPasswordEmailOtp200>(\n {url: `/iam/v2/auth/forget-password/email-otp`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postForgetPasswordEmailOtpBody\n },\n options);\n }\n /**\n * Reset user password with OTP\n * @summary Reset password with email OTP.\n */\nexport const postEmailOtpResetPassword = (\n postEmailOtpResetPasswordBody: PostEmailOtpResetPasswordBody,\n options?: SecondParameter<typeof openfortApiClient<ResetPasswordResponse>>,) => {\n return openfortApiClient<ResetPasswordResponse>(\n {url: `/iam/v2/auth/email-otp/reset-password`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postEmailOtpResetPasswordBody\n },\n options);\n }\n /**\n * Generate a nonce for Sign-In With Ethereum (SIWE) authentication\n * @summary Initialize SIWE login.\n */\nexport const postSiweNonce = (\n postSiweNonceBody: PostSiweNonceBody,\n options?: SecondParameter<typeof openfortApiClient<PostSiweNonce200>>,) => {\n return openfortApiClient<PostSiweNonce200>(\n {url: `/iam/v2/auth/siwe/nonce`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postSiweNonceBody\n },\n options);\n }\n /**\n * Verify a signed SIWE message and authenticate the user\n * @summary Login with SIWE.\n */\nexport const postSiweVerify = (\n postSiweVerifyBody: PostSiweVerifyBody,\n options?: SecondParameter<typeof openfortApiClient<PostSiweVerify200>>,) => {\n return openfortApiClient<PostSiweVerify200>(\n {url: `/iam/v2/auth/siwe/verify`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postSiweVerifyBody\n },\n options);\n }\n /**\n * Generates a cryptographically secure nonce for creating a SIWE message to link a wallet to the current authenticated user. Requires active session.\n * @summary Initialize SIWE link.\n */\nexport const postLinkSiweNonce = (\n postLinkSiweNonceBody: PostLinkSiweNonceBody,\n options?: SecondParameter<typeof openfortApiClient<PostLinkSiweNonce200>>,) => {\n return openfortApiClient<PostLinkSiweNonce200>(\n {url: `/iam/v2/auth/link-siwe/nonce`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postLinkSiweNonceBody\n },\n options);\n }\n /**\n * Verifies the SIWE signature and links the wallet to the currently authenticated user. Requires active session.\n * @summary Verify and link SIWE wallet.\n */\nexport const postLinkSiweVerify = (\n postLinkSiweVerifyBody: PostLinkSiweVerifyBody,\n options?: SecondParameter<typeof openfortApiClient<PostLinkSiweVerify200>>,) => {\n return openfortApiClient<PostLinkSiweVerify200>(\n {url: `/iam/v2/auth/link-siwe/verify`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postLinkSiweVerifyBody\n },\n options);\n }\n /**\n * Get all SIWE wallets linked to the authenticated user with full wallet metadata including primary status and chain information. Requires active session.\n * @summary List linked wallets.\n */\nexport const getLinkSiweListWallets = (\n \n options?: SecondParameter<typeof openfortApiClient<GetLinkSiweListWallets200Item[]>>,) => {\n return openfortApiClient<GetLinkSiweListWallets200Item[]>(\n {url: `/iam/v2/auth/link-siwe/list-wallets`, method: 'GET'\n },\n options);\n }\n /**\n * Remove a linked wallet from the authenticated user account. If the wallet being unlinked is the primary wallet, another wallet will be automatically promoted to primary. Requires active session.\n * @summary Unlink SIWE wallet.\n */\nexport const postLinkSiweUnlink = (\n postLinkSiweUnlinkBody: PostLinkSiweUnlinkBody,\n options?: SecondParameter<typeof openfortApiClient<PostLinkSiweUnlink200>>,) => {\n return openfortApiClient<PostLinkSiweUnlink200>(\n {url: `/iam/v2/auth/link-siwe/unlink`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postLinkSiweUnlinkBody\n },\n options);\n }\n export type SocialSignInResult = NonNullable<Awaited<ReturnType<typeof socialSignIn>>>\nexport type GetGetSessionResult = NonNullable<Awaited<ReturnType<typeof getGetSession>>>\nexport type PostSignOutResult = NonNullable<Awaited<ReturnType<typeof postSignOut>>>\nexport type PostSignUpEmailResult = NonNullable<Awaited<ReturnType<typeof postSignUpEmail>>>\nexport type PostSignInEmailResult = NonNullable<Awaited<ReturnType<typeof postSignInEmail>>>\nexport type PostForgetPasswordResult = NonNullable<Awaited<ReturnType<typeof postForgetPassword>>>\nexport type PostResetPasswordResult = NonNullable<Awaited<ReturnType<typeof postResetPassword>>>\nexport type GetVerifyEmailResult = NonNullable<Awaited<ReturnType<typeof getVerifyEmail>>>\nexport type PostSendVerificationEmailResult = NonNullable<Awaited<ReturnType<typeof postSendVerificationEmail>>>\nexport type PostChangeEmailResult = NonNullable<Awaited<ReturnType<typeof postChangeEmail>>>\nexport type PostChangePasswordResult = NonNullable<Awaited<ReturnType<typeof postChangePassword>>>\nexport type GetResetPasswordTokenResult = NonNullable<Awaited<ReturnType<typeof getResetPasswordToken>>>\nexport type PostRequestPasswordResetResult = NonNullable<Awaited<ReturnType<typeof postRequestPasswordReset>>>\nexport type GetListSessionsResult = NonNullable<Awaited<ReturnType<typeof getListSessions>>>\nexport type PostRevokeSessionResult = NonNullable<Awaited<ReturnType<typeof postRevokeSession>>>\nexport type PostRevokeSessionsResult = NonNullable<Awaited<ReturnType<typeof postRevokeSessions>>>\nexport type PostRevokeOtherSessionsResult = NonNullable<Awaited<ReturnType<typeof postRevokeOtherSessions>>>\nexport type PostLinkSocialResult = NonNullable<Awaited<ReturnType<typeof postLinkSocial>>>\nexport type GetListAccountsResult = NonNullable<Awaited<ReturnType<typeof getListAccounts>>>\nexport type PostUnlinkAccountResult = NonNullable<Awaited<ReturnType<typeof postUnlinkAccount>>>\nexport type PostRefreshTokenResult = NonNullable<Awaited<ReturnType<typeof postRefreshToken>>>\nexport type PostGetAccessTokenResult = NonNullable<Awaited<ReturnType<typeof postGetAccessToken>>>\nexport type PostAccountInfoResult = NonNullable<Awaited<ReturnType<typeof postAccountInfo>>>\nexport type PostSignInAnonymousResult = NonNullable<Awaited<ReturnType<typeof postSignInAnonymous>>>\nexport type PostSignInPhoneNumberResult = NonNullable<Awaited<ReturnType<typeof postSignInPhoneNumber>>>\nexport type PostPhoneNumberSendOtpResult = NonNullable<Awaited<ReturnType<typeof postPhoneNumberSendOtp>>>\nexport type PostPhoneNumberVerifyResult = NonNullable<Awaited<ReturnType<typeof postPhoneNumberVerify>>>\nexport type PostPhoneNumberForgetPasswordResult = NonNullable<Awaited<ReturnType<typeof postPhoneNumberForgetPassword>>>\nexport type PostPhoneNumberRequestPasswordResetResult = NonNullable<Awaited<ReturnType<typeof postPhoneNumberRequestPasswordReset>>>\nexport type PostPhoneNumberResetPasswordResult = NonNullable<Awaited<ReturnType<typeof postPhoneNumberResetPassword>>>\nexport type PostEmailOtpSendVerificationOtpResult = NonNullable<Awaited<ReturnType<typeof postEmailOtpSendVerificationOtp>>>\nexport type CheckVerificationOtpResult = NonNullable<Awaited<ReturnType<typeof checkVerificationOtp>>>\nexport type PostEmailOtpVerifyEmailResult = NonNullable<Awaited<ReturnType<typeof postEmailOtpVerifyEmail>>>\nexport type PostSignInEmailOtpResult = NonNullable<Awaited<ReturnType<typeof postSignInEmailOtp>>>\nexport type PostForgetPasswordEmailOtpResult = NonNullable<Awaited<ReturnType<typeof postForgetPasswordEmailOtp>>>\nexport type PostEmailOtpResetPasswordResult = NonNullable<Awaited<ReturnType<typeof postEmailOtpResetPassword>>>\nexport type PostSiweNonceResult = NonNullable<Awaited<ReturnType<typeof postSiweNonce>>>\nexport type PostSiweVerifyResult = NonNullable<Awaited<ReturnType<typeof postSiweVerify>>>\nexport type PostLinkSiweNonceResult = NonNullable<Awaited<ReturnType<typeof postLinkSiweNonce>>>\nexport type PostLinkSiweVerifyResult = NonNullable<Awaited<ReturnType<typeof postLinkSiweVerify>>>\nexport type GetLinkSiweListWalletsResult = NonNullable<Awaited<ReturnType<typeof getLinkSiweListWallets>>>\nexport type PostLinkSiweUnlinkResult = NonNullable<Awaited<ReturnType<typeof postLinkSiweUnlink>>>\n","/**\n * Generated by orval v7.18.0 🍺\n * Do not edit manually.\n * Openfort Auth\n * API Reference for Openfort Auth\n * OpenAPI spec version: 1.0.0\n */\nexport interface User {\n id: string;\n name: string;\n email: string;\n readonly emailVerified?: boolean;\n image?: string;\n createdAt: string;\n updatedAt: string;\n isAnonymous?: boolean;\n phoneNumber?: string;\n readonly phoneNumberVerified?: boolean;\n}\n\nexport interface Session {\n id: string;\n expiresAt: string;\n token: string;\n createdAt: string;\n updatedAt: string;\n ipAddress?: string;\n userAgent?: string;\n userId: string;\n}\n\nexport interface Account {\n id?: string;\n accountId: string;\n providerId: string;\n userId: string;\n accessToken?: string;\n refreshToken?: string;\n idToken?: string;\n accessTokenExpiresAt?: string;\n refreshTokenExpiresAt?: string;\n scope?: string;\n password?: string;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface Verification {\n id?: string;\n identifier: string;\n value: string;\n expiresAt: string;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface Jwks {\n id?: string;\n publicKey: string;\n privateKey: string;\n createdAt: string;\n}\n\n/**\n * Response from OTP verification check\n */\nexport interface OtpVerificationResponse {\n /** Indicates whether the OTP verification was successful */\n success: boolean;\n}\n\n/**\n * Response from sign out operation\n */\nexport interface SignOutResponse {\n /** Indicates whether the sign out was successful */\n success: boolean;\n}\n\n/**\n * Response from unlink account operation\n */\nexport interface UnlinkAccountResponse {\n /** Indicates whether the account was successfully unlinked */\n status: boolean;\n}\n\n/**\n * Response from reset password operation\n */\nexport interface ResetPasswordResponse {\n /** Indicates whether the password was successfully reset */\n status: boolean;\n}\n\n/**\n * @nullable\n */\nexport type SocialSignInBodyIdToken = {\n /** ID token from the provider */\n token: string;\n /**\n * Nonce used to generate the token\n * @nullable\n */\n nonce?: string | null;\n /**\n * Access token from the provider\n * @nullable\n */\n accessToken?: string | null;\n /**\n * Refresh token from the provider\n * @nullable\n */\n refreshToken?: string | null;\n /**\n * Expiry date of the token\n * @nullable\n */\n expiresAt?: number | null;\n} | null;\n\nexport type SocialSignInBody = {\n /**\n * Callback URL to redirect to after the user has signed in\n * @nullable\n */\n callbackURL?: string | null;\n /** @nullable */\n newUserCallbackURL?: string | null;\n /**\n * Callback URL to redirect to if an error happens\n * @nullable\n */\n errorCallbackURL?: string | null;\n provider: string;\n /**\n * Disable automatic redirection to the provider. Useful for handling the redirection yourself\n * @nullable\n */\n disableRedirect?: boolean | null;\n /** @nullable */\n idToken?: SocialSignInBodyIdToken;\n /**\n * Array of scopes to request from the provider. This will override the default scopes passed.\n * @nullable\n */\n scopes?: string[] | null;\n /**\n * Explicitly request sign-up. Useful when disableImplicitSignUp is true for this provider\n * @nullable\n */\n requestSignUp?: boolean | null;\n /**\n * The login hint to use for the authorization code request\n * @nullable\n */\n loginHint?: string | null;\n};\n\nexport type SocialSignIn200User = {\n id: string;\n email: string;\n /** @nullable */\n name?: string | null;\n /** @nullable */\n image?: string | null;\n emailVerified: boolean;\n createdAt: string;\n updatedAt: string;\n};\n\n/**\n * Session response when idToken is provided\n */\nexport type SocialSignIn200 = {\n redirect: boolean;\n /** Session token */\n token: string;\n /** @nullable */\n url?: string | null;\n user: SocialSignIn200User;\n};\n\nexport type SocialSignIn400 = {\n message: string;\n};\n\nexport type SocialSignIn401 = {\n message: string;\n};\n\nexport type SocialSignIn403 = {\n message?: string;\n};\n\nexport type SocialSignIn404 = {\n message?: string;\n};\n\nexport type SocialSignIn429 = {\n message?: string;\n};\n\nexport type SocialSignIn500 = {\n message?: string;\n};\n\nexport type GetGetSessionParams = {\n/**\n * Disable cookie cache and fetch session from database\n */\ndisableCookieCache?: boolean;\n};\n\nexport type GetGetSession200 = {\n session: Session;\n user: User;\n};\n\nexport type GetGetSession400 = {\n message: string;\n};\n\nexport type GetGetSession401 = {\n message: string;\n};\n\nexport type GetGetSession403 = {\n message?: string;\n};\n\nexport type GetGetSession404 = {\n message?: string;\n};\n\nexport type GetGetSession429 = {\n message?: string;\n};\n\nexport type GetGetSession500 = {\n message?: string;\n};\n\nexport type PostSignOutBody = { [key: string]: unknown };\n\nexport type PostSignOut200 = {\n success?: boolean;\n};\n\nexport type PostSignOut400 = {\n message: string;\n};\n\nexport type PostSignOut401 = {\n message: string;\n};\n\nexport type PostSignOut403 = {\n message?: string;\n};\n\nexport type PostSignOut404 = {\n message?: string;\n};\n\nexport type PostSignOut429 = {\n message?: string;\n};\n\nexport type PostSignOut500 = {\n message?: string;\n};\n\nexport type PostSignUpEmailBody = {\n /** The name of the user */\n name: string;\n /** The email of the user */\n email: string;\n /** The password of the user */\n password: string;\n /** The profile image URL of the user */\n image?: string;\n /** The URL to use for email verification callback */\n callbackURL?: string;\n /** If this is false, the session will not be remembered. Default is `true`. */\n rememberMe?: boolean;\n};\n\nexport type PostSignUpEmail200 = {\n /**\n * Authentication token for the session\n * @nullable\n */\n token?: string | null;\n user: User;\n};\n\nexport type PostSignUpEmail400 = {\n message: string;\n};\n\nexport type PostSignUpEmail401 = {\n message: string;\n};\n\nexport type PostSignUpEmail403 = {\n message?: string;\n};\n\nexport type PostSignUpEmail404 = {\n message?: string;\n};\n\nexport type PostSignUpEmail422 = {\n message?: string;\n};\n\nexport type PostSignUpEmail429 = {\n message?: string;\n};\n\nexport type PostSignUpEmail500 = {\n message?: string;\n};\n\nexport type PostSignInEmailBody = {\n /** Email of the user */\n email: string;\n /** Password of the user */\n password: string;\n /**\n * Callback URL to use as a redirect for email verification\n * @nullable\n */\n callbackURL?: string | null;\n /** @nullable */\n rememberMe?: boolean | null;\n};\n\nexport type PostSignInEmail200User = {\n id: string;\n email: string;\n /** @nullable */\n name?: string | null;\n /** @nullable */\n image?: string | null;\n emailVerified: boolean;\n createdAt: string;\n updatedAt: string;\n};\n\n/**\n * Session response when idToken is provided\n */\nexport type PostSignInEmail200 = {\n redirect: boolean;\n /** Session token */\n token: string;\n /** @nullable */\n url?: string | null;\n user: PostSignInEmail200User;\n};\n\nexport type PostSignInEmail400 = {\n message: string;\n};\n\nexport type PostSignInEmail401 = {\n message: string;\n};\n\nexport type PostSignInEmail403 = {\n message?: string;\n};\n\nexport type PostSignInEmail404 = {\n message?: string;\n};\n\nexport type PostSignInEmail429 = {\n message?: string;\n};\n\nexport type PostSignInEmail500 = {\n message?: string;\n};\n\nexport type PostForgetPasswordBody = {\n /** The email address of the user to send a password reset email to */\n email: string;\n /**\n * The URL to redirect the user to reset their password. If the token isn't valid or expired, it'll be redirected with a query parameter `?error=INVALID_TOKEN`. If the token is valid, it'll be redirected with a query parameter `?token=VALID_TOKEN\n * @nullable\n */\n redirectTo?: string | null;\n};\n\nexport type PostForgetPassword200 = {\n status?: boolean;\n message?: string;\n};\n\nexport type PostForgetPassword400 = {\n message: string;\n};\n\nexport type PostForgetPassword401 = {\n message: string;\n};\n\nexport type PostForgetPassword403 = {\n message?: string;\n};\n\nexport type PostForgetPassword404 = {\n message?: string;\n};\n\nexport type PostForgetPassword429 = {\n message?: string;\n};\n\nexport type PostForgetPassword500 = {\n message?: string;\n};\n\nexport type PostResetPasswordBody = {\n /** The new password to set */\n newPassword: string;\n /**\n * The token to reset the password\n * @nullable\n */\n token?: string | null;\n};\n\nexport type PostResetPassword400 = {\n message: string;\n};\n\nexport type PostResetPassword401 = {\n message: string;\n};\n\nexport type PostResetPassword403 = {\n message?: string;\n};\n\nexport type PostResetPassword404 = {\n message?: string;\n};\n\nexport type PostResetPassword429 = {\n message?: string;\n};\n\nexport type PostResetPassword500 = {\n message?: string;\n};\n\nexport type GetVerifyEmailParams = {\n/**\n * The token to verify the email\n */\ntoken: string;\n/**\n * The URL to redirect to after email verification\n */\ncallbackURL?: string;\n};\n\nexport type GetVerifyEmail200User = {\n /** User ID */\n id: string;\n /** User email */\n email: string;\n /** User name */\n name: string;\n /** User image URL */\n image: string;\n /** Indicates if the user email is verified */\n emailVerified: boolean;\n /** User creation date */\n createdAt: string;\n /** User update date */\n updatedAt: string;\n};\n\nexport type GetVerifyEmail200 = {\n user: GetVerifyEmail200User;\n /** Indicates if the email was verified successfully */\n status: boolean;\n};\n\nexport type GetVerifyEmail400 = {\n message: string;\n};\n\nexport type GetVerifyEmail401 = {\n message: string;\n};\n\nexport type GetVerifyEmail403 = {\n message?: string;\n};\n\nexport type GetVerifyEmail404 = {\n message?: string;\n};\n\nexport type GetVerifyEmail429 = {\n message?: string;\n};\n\nexport type GetVerifyEmail500 = {\n message?: string;\n};\n\nexport type PostSendVerificationEmailBody = {\n /** The email to send the verification email to */\n email: string;\n /**\n * The URL to use for email verification callback\n * @nullable\n */\n callbackURL?: string | null;\n};\n\nexport type PostSendVerificationEmail200 = {\n /** Indicates if the email was sent successfully */\n status?: boolean;\n};\n\nexport type PostSendVerificationEmail400 = {\n /** Error message */\n message?: string;\n};\n\nexport type PostSendVerificationEmail401 = {\n message: string;\n};\n\nexport type PostSendVerificationEmail403 = {\n message?: string;\n};\n\nexport type PostSendVerificationEmail404 = {\n message?: string;\n};\n\nexport type PostSendVerificationEmail429 = {\n message?: string;\n};\n\nexport type PostSendVerificationEmail500 = {\n message?: string;\n};\n\nexport type PostChangeEmailBody = {\n /** The new email address to set must be a valid email address */\n newEmail: string;\n /**\n * The URL to redirect to after email verification\n * @nullable\n */\n callbackURL?: string | null;\n};\n\n/**\n * Status message of the email change process\n * @nullable\n */\nexport type PostChangeEmail200Message = typeof PostChangeEmail200Message[keyof typeof PostChangeEmail200Message] | null;\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const PostChangeEmail200Message = {\n Email_updated: 'Email updated',\n Verification_email_sent: 'Verification email sent',\n} as const;\n\nexport type PostChangeEmail200 = {\n /** Indicates if the request was successful */\n status: boolean;\n /**\n * Status message of the email change process\n * @nullable\n */\n message?: PostChangeEmail200Message;\n};\n\nexport type PostChangeEmail400 = {\n message: string;\n};\n\nexport type PostChangeEmail401 = {\n message: string;\n};\n\nexport type PostChangeEmail403 = {\n message?: string;\n};\n\nexport type PostChangeEmail404 = {\n message?: string;\n};\n\nexport type PostChangeEmail422 = {\n message?: string;\n};\n\nexport type PostChangeEmail429 = {\n message?: string;\n};\n\nexport type PostChangeEmail500 = {\n message?: string;\n};\n\nexport type PostChangePasswordBody = {\n /** The new password to set */\n newPassword: string;\n /** The current password is required */\n currentPassword: string;\n /**\n * Must be a boolean value\n * @nullable\n */\n revokeOtherSessions?: boolean | null;\n};\n\nexport type PostChangePassword200 = {\n /**\n * New session token if other sessions were revoked\n * @nullable\n */\n token?: string | null;\n user: User;\n};\n\nexport type PostChangePassword400 = {\n message: string;\n};\n\nexport type PostChangePassword401 = {\n message: string;\n};\n\nexport type PostChangePassword403 = {\n message?: string;\n};\n\nexport type PostChangePassword404 = {\n message?: string;\n};\n\nexport type PostChangePassword429 = {\n message?: string;\n};\n\nexport type PostChangePassword500 = {\n message?: string;\n};\n\nexport type GetResetPasswordTokenParams = {\n/**\n * The URL to redirect the user to reset their password\n */\ncallbackURL?: string;\n};\n\nexport type GetResetPasswordToken200 = {\n token?: string;\n};\n\nexport type GetResetPasswordToken400 = {\n message: string;\n};\n\nexport type GetResetPasswordToken401 = {\n message: string;\n};\n\nexport type GetResetPasswordToken403 = {\n message?: string;\n};\n\nexport type GetResetPasswordToken404 = {\n message?: string;\n};\n\nexport type GetResetPasswordToken429 = {\n message?: string;\n};\n\nexport type GetResetPasswordToken500 = {\n message?: string;\n};\n\nexport type PostRequestPasswordResetBody = {\n /** The email address of the user to send a password reset email to */\n email: string;\n /**\n * The URL to redirect the user to reset their password. If the token isn't valid or expired, it'll be redirected with a query parameter `?error=INVALID_TOKEN`. If the token is valid, it'll be redirected with a query parameter `?token=VALID_TOKEN\n * @nullable\n */\n redirectTo?: string | null;\n};\n\nexport type PostRequestPasswordReset200 = {\n status?: boolean;\n message?: string;\n};\n\nexport type PostRequestPasswordReset400 = {\n message: string;\n};\n\nexport type PostRequestPasswordReset401 = {\n message: string;\n};\n\nexport type PostRequestPasswordReset403 = {\n message?: string;\n};\n\nexport type PostRequestPasswordReset404 = {\n message?: string;\n};\n\nexport type PostRequestPasswordReset429 = {\n message?: string;\n};\n\nexport type PostRequestPasswordReset500 = {\n message?: string;\n};\n\nexport type GetListSessions400 = {\n message: string;\n};\n\nexport type GetListSessions401 = {\n message: string;\n};\n\nexport type GetListSessions403 = {\n message?: string;\n};\n\nexport type GetListSessions404 = {\n message?: string;\n};\n\nexport type GetListSessions429 = {\n message?: string;\n};\n\nexport type GetListSessions500 = {\n message?: string;\n};\n\nexport type PostRevokeSessionBody = {\n /** The token to revoke */\n token: string;\n};\n\nexport type PostRevokeSession200 = {\n /** Indicates if the session was revoked successfully */\n status: boolean;\n};\n\nexport type PostRevokeSession400 = {\n message: string;\n};\n\nexport type PostRevokeSession401 = {\n message: string;\n};\n\nexport type PostRevokeSession403 = {\n message?: string;\n};\n\nexport type PostRevokeSession404 = {\n message?: string;\n};\n\nexport type PostRevokeSession429 = {\n message?: string;\n};\n\nexport type PostRevokeSession500 = {\n message?: string;\n};\n\nexport type PostRevokeSessionsBody = { [key: string]: unknown };\n\nexport type PostRevokeSessions200 = {\n /** Indicates if all sessions were revoked successfully */\n status: boolean;\n};\n\nexport type PostRevokeSessions400 = {\n message: string;\n};\n\nexport type PostRevokeSessions401 = {\n message: string;\n};\n\nexport type PostRevokeSessions403 = {\n message?: string;\n};\n\nexport type PostRevokeSessions404 = {\n message?: string;\n};\n\nexport type PostRevokeSessions429 = {\n message?: string;\n};\n\nexport type PostRevokeSessions500 = {\n message?: string;\n};\n\nexport type PostRevokeOtherSessionsBody = { [key: string]: unknown };\n\nexport type PostRevokeOtherSessions200 = {\n /** Indicates if all other sessions were revoked successfully */\n status: boolean;\n};\n\nexport type PostRevokeOtherSessions400 = {\n message: string;\n};\n\nexport type PostRevokeOtherSessions401 = {\n message: string;\n};\n\nexport type PostRevokeOtherSessions403 = {\n message?: string;\n};\n\nexport type PostRevokeOtherSessions404 = {\n message?: string;\n};\n\nexport type PostRevokeOtherSessions429 = {\n message?: string;\n};\n\nexport type PostRevokeOtherSessions500 = {\n message?: string;\n};\n\n/**\n * @nullable\n */\nexport type PostLinkSocialBodyIdToken = {\n token: string;\n /** @nullable */\n nonce?: string | null;\n /** @nullable */\n accessToken?: string | null;\n /** @nullable */\n refreshToken?: string | null;\n /** @nullable */\n scopes?: string[] | null;\n} | null;\n\nexport type PostLinkSocialBody = {\n /**\n * The URL to redirect to after the user has signed in\n * @nullable\n */\n callbackURL?: string | null;\n provider: string;\n /** @nullable */\n idToken?: PostLinkSocialBodyIdToken;\n /** @nullable */\n requestSignUp?: boolean | null;\n /**\n * Additional scopes to request from the provider\n * @nullable\n */\n scopes?: string[] | null;\n /**\n * The URL to redirect to if there is an error during the link process\n * @nullable\n */\n errorCallbackURL?: string | null;\n /**\n * Disable automatic redirection to the provider. Useful for handling the redirection yourself\n * @nullable\n */\n disableRedirect?: boolean | null;\n};\n\nexport type PostLinkSocial200 = {\n /** The authorization URL to redirect the user to */\n url?: string;\n /** Indicates if the user should be redirected to the authorization URL */\n redirect: boolean;\n status?: boolean;\n};\n\nexport type PostLinkSocial400 = {\n message: string;\n};\n\nexport type PostLinkSocial401 = {\n message: string;\n};\n\nexport type PostLinkSocial403 = {\n message?: string;\n};\n\nexport type PostLinkSocial404 = {\n message?: string;\n};\n\nexport type PostLinkSocial429 = {\n message?: string;\n};\n\nexport type PostLinkSocial500 = {\n message?: string;\n};\n\nexport type GetListAccounts200Item = {\n provider: string;\n createdAt: number;\n updatedAt: number;\n accountId: string;\n chainType: string;\n chainId: string;\n connectorType: string;\n walletClientType: string;\n};\n\nexport type GetListAccounts400 = {\n message: string;\n};\n\nexport type GetListAccounts401 = {\n message: string;\n};\n\nexport type GetListAccounts403 = {\n message?: string;\n};\n\nexport type GetListAccounts404 = {\n message?: string;\n};\n\nexport type GetListAccounts429 = {\n message?: string;\n};\n\nexport type GetListAccounts500 = {\n message?: string;\n};\n\nexport type PostUnlinkAccountBody = {\n providerId: string;\n /** @nullable */\n accountId?: string | null;\n};\n\nexport type PostUnlinkAccount400 = {\n message: string;\n};\n\nexport type PostUnlinkAccount401 = {\n message: string;\n};\n\nexport type PostUnlinkAccount403 = {\n message?: string;\n};\n\nexport type PostUnlinkAccount404 = {\n message?: string;\n};\n\nexport type PostUnlinkAccount429 = {\n message?: string;\n};\n\nexport type PostUnlinkAccount500 = {\n message?: string;\n};\n\nexport type PostRefreshTokenBody = {\n /** The provider ID for the OAuth provider */\n providerId: string;\n /**\n * The account ID associated with the refresh token\n * @nullable\n */\n accountId?: string | null;\n /**\n * The user ID associated with the account\n * @nullable\n */\n userId?: string | null;\n};\n\nexport type PostRefreshToken200 = {\n tokenType?: string;\n idToken?: string;\n accessToken?: string;\n refreshToken?: string;\n accessTokenExpiresAt?: string;\n refreshTokenExpiresAt?: string;\n};\n\nexport type PostRefreshToken401 = {\n message: string;\n};\n\nexport type PostRefreshToken403 = {\n message?: string;\n};\n\nexport type PostRefreshToken404 = {\n message?: string;\n};\n\nexport type PostRefreshToken429 = {\n message?: string;\n};\n\nexport type PostRefreshToken500 = {\n message?: string;\n};\n\nexport type PostGetAccessTokenBody = {\n /** The provider ID for the OAuth provider */\n providerId: string;\n /**\n * The account ID associated with the refresh token\n * @nullable\n */\n accountId?: string | null;\n /**\n * The user ID associated with the account\n * @nullable\n */\n userId?: string | null;\n};\n\nexport type PostGetAccessToken200 = {\n tokenType?: string;\n idToken?: string;\n accessToken?: string;\n refreshToken?: string;\n accessTokenExpiresAt?: string;\n refreshTokenExpiresAt?: string;\n};\n\nexport type PostGetAccessToken401 = {\n message: string;\n};\n\nexport type PostGetAccessToken403 = {\n message?: string;\n};\n\nexport type PostGetAccessToken404 = {\n message?: string;\n};\n\nexport type PostGetAccessToken429 = {\n message?: string;\n};\n\nexport type PostGetAccessToken500 = {\n message?: string;\n};\n\nexport type PostAccountInfoBody = {\n /** The provider given account id for which to get the account info */\n accountId: string;\n};\n\nexport type PostAccountInfo200User = {\n id: string;\n name?: string;\n email?: string;\n image?: string;\n emailVerified: boolean;\n};\n\nexport type PostAccountInfo200Data = { [key: string]: unknown };\n\nexport type PostAccountInfo200 = {\n user: PostAccountInfo200User;\n data: PostAccountInfo200Data;\n};\n\nexport type PostAccountInfo400 = {\n message: string;\n};\n\nexport type PostAccountInfo401 = {\n message: string;\n};\n\nexport type PostAccountInfo403 = {\n message?: string;\n};\n\nexport type PostAccountInfo404 = {\n message?: string;\n};\n\nexport type PostAccountInfo429 = {\n message?: string;\n};\n\nexport type PostAccountInfo500 = {\n message?: string;\n};\n\nexport type PostSignInAnonymous200 = {\n /** Session token */\n token: string;\n user: User;\n};\n\nexport type PostSignInAnonymous400 = {\n message: string;\n};\n\nexport type PostSignInAnonymous401 = {\n message: string;\n};\n\nexport type PostSignInAnonymous403 = {\n message?: string;\n};\n\nexport type PostSignInAnonymous404 = {\n message?: string;\n};\n\nexport type PostSignInAnonymous429 = {\n message?: string;\n};\n\nexport type PostSignInAnonymous500 = {\n message?: string;\n};\n\nexport type PostSignInPhoneNumberBody = {\n /** Phone number to sign in. Eg: \"+1234567890\" */\n phoneNumber: string;\n /** Password to use for sign in. */\n password: string;\n /**\n * Remember the session. Eg: true\n * @nullable\n */\n rememberMe?: boolean | null;\n};\n\nexport type PostSignInPhoneNumber200 = {\n /** Session token */\n token: string;\n user: User;\n};\n\nexport type PostSignInPhoneNumber401 = {\n message: string;\n};\n\nexport type PostSignInPhoneNumber403 = {\n message?: string;\n};\n\nexport type PostSignInPhoneNumber404 = {\n message?: string;\n};\n\nexport type PostSignInPhoneNumber429 = {\n message?: string;\n};\n\nexport type PostSignInPhoneNumber500 = {\n message?: string;\n};\n\nexport type PostPhoneNumberSendOtpBody = {\n /** Phone number to send OTP. Eg: \"+1234567890\" */\n phoneNumber: string;\n};\n\nexport type PostPhoneNumberSendOtp200 = {\n message?: string;\n};\n\nexport type PostPhoneNumberSendOtp400 = {\n message: string;\n};\n\nexport type PostPhoneNumberSendOtp401 = {\n message: string;\n};\n\nexport type PostPhoneNumberSendOtp403 = {\n message?: string;\n};\n\nexport type PostPhoneNumberSendOtp404 = {\n message?: string;\n};\n\nexport type PostPhoneNumberSendOtp429 = {\n message?: string;\n};\n\nexport type PostPhoneNumberSendOtp500 = {\n message?: string;\n};\n\nexport type PostPhoneNumberVerifyBody = {\n /** Phone number to verify. Eg: \"+1234567890\" */\n phoneNumber: string;\n /** OTP code. Eg: \"123456\" */\n code: string;\n /**\n * Disable session creation after verification. Eg: false\n * @nullable\n */\n disableSession?: boolean | null;\n /**\n * Check if there is a session and update the phone number. Eg: true\n * @nullable\n */\n updatePhoneNumber?: boolean | null;\n};\n\n/**\n * User object with phone number details, null if no user is created or found\n * @nullable\n */\nexport type PostPhoneNumberVerify200User = {\n /** Unique identifier of the user */\n id: string;\n /**\n * User's email address\n * @nullable\n */\n email?: string | null;\n /**\n * Whether the email is verified\n * @nullable\n */\n emailVerified?: boolean | null;\n /**\n * User's name\n * @nullable\n */\n name?: string | null;\n /**\n * User's profile image URL\n * @nullable\n */\n image?: string | null;\n /** User's phone number */\n phoneNumber: string;\n /** Whether the phone number is verified */\n phoneNumberVerified: boolean;\n /** Timestamp when the user was created */\n createdAt: string;\n /** Timestamp when the user was last updated */\n updatedAt: string;\n} | null;\n\nexport type PostPhoneNumberVerify200 = {\n /** Indicates if the verification was successful */\n status: boolean;\n /**\n * Session token if session is created, null if disableSession is true or no session is created\n * @nullable\n */\n token?: string | null;\n /**\n * User object with phone number details, null if no user is created or found\n * @nullable\n */\n user?: PostPhoneNumberVerify200User;\n};\n\nexport type PostPhoneNumberVerify401 = {\n message: string;\n};\n\nexport type PostPhoneNumberVerify403 = {\n message?: string;\n};\n\nexport type PostPhoneNumberVerify404 = {\n message?: string;\n};\n\nexport type PostPhoneNumberVerify429 = {\n message?: string;\n};\n\nexport type PostPhoneNumberVerify500 = {\n message?: string;\n};\n\nexport type PostPhoneNumberForgetPasswordBody = {\n /** The phone number which is associated with the user. Eg: \"+1234567890\" */\n phoneNumber: string;\n};\n\nexport type PostPhoneNumberForgetPassword200 = {\n /** Indicates if the OTP was sent successfully */\n status: boolean;\n};\n\nexport type PostPhoneNumberForgetPassword400 = {\n message: string;\n};\n\nexport type PostPhoneNumberForgetPassword401 = {\n message: string;\n};\n\nexport type PostPhoneNumberForgetPassword403 = {\n message?: string;\n};\n\nexport type PostPhoneNumberForgetPassword404 = {\n message?: string;\n};\n\nexport type PostPhoneNumberForgetPassword429 = {\n message?: string;\n};\n\nexport type PostPhoneNumberForgetPassword500 = {\n message?: string;\n};\n\nexport type PostPhoneNumberRequestPasswordResetBody = {\n phoneNumber: string;\n};\n\nexport type PostPhoneNumberRequestPasswordReset200 = {\n /** Indicates if the OTP was sent successfully */\n status: boolean;\n};\n\nexport type PostPhoneNumberRequestPasswordReset400 = {\n message: string;\n};\n\nexport type PostPhoneNumberRequestPasswordReset401 = {\n message: string;\n};\n\nexport type PostPhoneNumberRequestPasswordReset403 = {\n message?: string;\n};\n\nexport type PostPhoneNumberRequestPasswordReset404 = {\n message?: string;\n};\n\nexport type PostPhoneNumberRequestPasswordReset429 = {\n message?: string;\n};\n\nexport type PostPhoneNumberRequestPasswordReset500 = {\n message?: string;\n};\n\nexport type PostPhoneNumberResetPasswordBody = {\n /** The one time password to reset the password. Eg: \"123456\" */\n otp: string;\n /** The phone number to the account which intends to reset the password for. Eg: \"+1234567890\" */\n phoneNumber: string;\n /** The new password. Eg: \"new-and-secure-password\" */\n newPassword: string;\n};\n\nexport type PostPhoneNumberResetPassword400 = {\n message: string;\n};\n\nexport type PostPhoneNumberResetPassword401 = {\n message: string;\n};\n\nexport type PostPhoneNumberResetPassword403 = {\n message?: string;\n};\n\nexport type PostPhoneNumberResetPassword404 = {\n message?: string;\n};\n\nexport type PostPhoneNumberResetPassword429 = {\n message?: string;\n};\n\nexport type PostPhoneNumberResetPassword500 = {\n message?: string;\n};\n\nexport type PostEmailOtpSendVerificationOtpBody = {\n /** Email address to send the OTP */\n email: string;\n /** Type of the OTP */\n type: string;\n};\n\nexport type PostEmailOtpSendVerificationOtp200 = {\n success?: boolean;\n};\n\nexport type PostEmailOtpSendVerificationOtp400 = {\n message: string;\n};\n\nexport type PostEmailOtpSendVerificationOtp401 = {\n message: string;\n};\n\nexport type PostEmailOtpSendVerificationOtp403 = {\n message?: string;\n};\n\nexport type PostEmailOtpSendVerificationOtp404 = {\n message?: string;\n};\n\nexport type PostEmailOtpSendVerificationOtp429 = {\n message?: string;\n};\n\nexport type PostEmailOtpSendVerificationOtp500 = {\n message?: string;\n};\n\n/**\n * Type of the OTP\n */\nexport type CheckVerificationOtpBodyType = typeof CheckVerificationOtpBodyType[keyof typeof CheckVerificationOtpBodyType];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const CheckVerificationOtpBodyType = {\n 'email-verification': 'email-verification',\n 'sign-in': 'sign-in',\n 'forget-password': 'forget-password',\n} as const;\n\nexport type CheckVerificationOtpBody = {\n /** Email address the OTP was sent to */\n email: string;\n /** Type of the OTP */\n type: CheckVerificationOtpBodyType;\n /** OTP to verify */\n otp: string;\n};\n\nexport type CheckVerificationOtp200 = {\n success?: boolean;\n};\n\nexport type CheckVerificationOtp400 = {\n message: string;\n};\n\nexport type CheckVerificationOtp401 = {\n message: string;\n};\n\nexport type CheckVerificationOtp403 = {\n message?: string;\n};\n\nexport type CheckVerificationOtp404 = {\n message?: string;\n};\n\nexport type CheckVerificationOtp429 = {\n message?: string;\n};\n\nexport type CheckVerificationOtp500 = {\n message?: string;\n};\n\nexport type PostEmailOtpVerifyEmailBody = {\n /** Email address to verify */\n email: string;\n /** OTP to verify */\n otp: string;\n};\n\nexport type PostEmailOtpVerifyEmail200 = {\n /** Indicates if the verification was successful */\n status: boolean;\n /**\n * Session token if autoSignInAfterVerification is enabled, otherwise null\n * @nullable\n */\n token: string | null;\n user: User;\n};\n\nexport type PostEmailOtpVerifyEmail400 = {\n message: string;\n};\n\nexport type PostEmailOtpVerifyEmail401 = {\n message: string;\n};\n\nexport type PostEmailOtpVerifyEmail403 = {\n message?: string;\n};\n\nexport type PostEmailOtpVerifyEmail404 = {\n message?: string;\n};\n\nexport type PostEmailOtpVerifyEmail429 = {\n message?: string;\n};\n\nexport type PostEmailOtpVerifyEmail500 = {\n message?: string;\n};\n\nexport type PostSignInEmailOtpBody = {\n /** Email address to sign in */\n email: string;\n /** OTP sent to the email */\n otp: string;\n};\n\nexport type PostSignInEmailOtp200 = {\n /** Session token for the authenticated session */\n token: string;\n user: User;\n};\n\nexport type PostSignInEmailOtp400 = {\n message: string;\n};\n\nexport type PostSignInEmailOtp401 = {\n message: string;\n};\n\nexport type PostSignInEmailOtp403 = {\n message?: string;\n};\n\nexport type PostSignInEmailOtp404 = {\n message?: string;\n};\n\nexport type PostSignInEmailOtp429 = {\n message?: string;\n};\n\nexport type PostSignInEmailOtp500 = {\n message?: string;\n};\n\nexport type PostForgetPasswordEmailOtpBody = {\n /** Email address to send the OTP */\n email: string;\n};\n\nexport type PostForgetPasswordEmailOtp200 = {\n /** Indicates if the OTP was sent successfully */\n success?: boolean;\n};\n\nexport type PostForgetPasswordEmailOtp400 = {\n message: string;\n};\n\nexport type PostForgetPasswordEmailOtp401 = {\n message: string;\n};\n\nexport type PostForgetPasswordEmailOtp403 = {\n message?: string;\n};\n\nexport type PostForgetPasswordEmailOtp404 = {\n message?: string;\n};\n\nexport type PostForgetPasswordEmailOtp429 = {\n message?: string;\n};\n\nexport type PostForgetPasswordEmailOtp500 = {\n message?: string;\n};\n\nexport type PostEmailOtpResetPasswordBody = {\n /** Email address to reset the password */\n email: string;\n /** OTP sent to the email */\n otp: string;\n /** New password */\n password: string;\n};\n\nexport type PostEmailOtpResetPassword400 = {\n message: string;\n};\n\nexport type PostEmailOtpResetPassword401 = {\n message: string;\n};\n\nexport type PostEmailOtpResetPassword403 = {\n message?: string;\n};\n\nexport type PostEmailOtpResetPassword404 = {\n message?: string;\n};\n\nexport type PostEmailOtpResetPassword429 = {\n message?: string;\n};\n\nexport type PostEmailOtpResetPassword500 = {\n message?: string;\n};\n\nexport type PostSiweNonceBody = {\n /**\n * Ethereum wallet address (must be 42 characters starting with 0x)\n * @minLength 42\n * @maxLength 42\n * @pattern ^0[xX][a-fA-F0-9]{40}$\n */\n walletAddress: string;\n /**\n * Blockchain network chain ID (default: 1 for Ethereum mainnet)\n * @minimum 1\n * @maximum 2147483647\n */\n chainId?: number;\n};\n\nexport type PostSiweNonce200 = {\n /** Cryptographically secure random nonce to be used in SIWE message */\n nonce: string;\n};\n\nexport type PostSiweNonce400 = {\n message: string;\n};\n\nexport type PostSiweNonce401 = {\n message: string;\n};\n\nexport type PostSiweNonce500 = {\n message?: string;\n};\n\nexport type PostSiweVerifyBody = {\n /**\n * The SIWE message string that was signed\n * @minLength 1\n */\n message: string;\n /**\n * The signature from the user's wallet\n * @minLength 1\n */\n signature: string;\n /**\n * Ethereum wallet address (must be 42 characters starting with 0x)\n * @minLength 42\n * @maxLength 42\n * @pattern ^0[xX][a-fA-F0-9]{40}$\n */\n walletAddress: string;\n /**\n * Blockchain network chain ID (must match the Chain ID in SIWE message, default: 1)\n * @minimum 1\n * @maximum 2147483647\n */\n chainId?: number;\n /** Type of wallet client used (e.g., 'Phantom', 'MetaMask') */\n walletClientType?: string;\n /** Type of connector used (e.g., 'injected', 'walletConnect') */\n connectorType?: string;\n};\n\nexport type PostSiweVerify200User = {\n /** User ID */\n id: string;\n /** Ethereum wallet address */\n walletAddress: string;\n /** Chain ID used for authentication */\n chainId: number;\n};\n\nexport type PostSiweVerify200 = {\n /** Session token */\n token: string;\n /** Always true on successful authentication */\n success: boolean;\n user: PostSiweVerify200User;\n};\n\nexport type PostSiweVerify400 = {\n message: string;\n};\n\nexport type PostSiweVerify401 = {\n message: string;\n /** Error code (e.g., UNAUTHORIZED_INVALID_OR_EXPIRED_NONCE) */\n code?: string;\n};\n\nexport type PostSiweVerify500 = {\n message?: string;\n};\n\nexport type PostLinkSiweNonceBody = {\n /**\n * Ethereum wallet address (must be 42 characters starting with 0x)\n * @minLength 42\n * @maxLength 42\n * @pattern ^0[xX][a-fA-F0-9]{40}$\n */\n walletAddress: string;\n /**\n * Blockchain network chain ID (default: 1 for Ethereum mainnet)\n * @minimum 1\n * @maximum 2147483647\n */\n chainId?: number;\n};\n\nexport type PostLinkSiweNonce200 = {\n /** Cryptographically secure nonce to use in SIWE message */\n nonce: string;\n};\n\nexport type PostLinkSiweNonce400 = {\n message: string;\n};\n\nexport type PostLinkSiweNonce401 = {\n message: string;\n};\n\nexport type PostLinkSiweNonce500 = {\n message?: string;\n};\n\nexport type PostLinkSiweVerifyBody = {\n /**\n * The SIWE message string that was signed\n * @minLength 1\n */\n message: string;\n /**\n * The signature from the user's wallet\n * @minLength 1\n */\n signature: string;\n /**\n * Ethereum wallet address (must be 42 characters starting with 0x)\n * @minLength 42\n * @maxLength 42\n * @pattern ^0[xX][a-fA-F0-9]{40}$\n */\n walletAddress: string;\n /**\n * Blockchain network chain ID (must match the Chain ID in SIWE message, default: 1)\n * @minimum 1\n * @maximum 2147483647\n */\n chainId?: number;\n /** Type of wallet client used (e.g., 'Phantom', 'MetaMask') */\n walletClientType?: string;\n /** Type of connector used (e.g., 'injected', 'walletConnect') */\n connectorType?: string;\n};\n\nexport type PostLinkSiweVerify200 = {\n /** Whether the wallet was successfully linked */\n success: boolean;\n /** The checksummed Ethereum address that was linked */\n walletAddress: string;\n /** The blockchain network chain ID */\n chainId: number;\n /** Whether this is the user's primary wallet (first wallet linked) */\n isPrimary: boolean;\n /** Type of connector used (e.g., 'injected', 'walletConnect') */\n connectorType?: string;\n /** Type of wallet client used (e.g., 'Phantom', 'MetaMask') */\n walletClientType?: string;\n /** ENS name associated with the wallet (if available) */\n ensName?: string;\n /** ENS avatar URL (if available) */\n ensAvatar?: string;\n /** Optional informational message */\n message?: string;\n};\n\n/**\n * Error code indicating the type of error\n */\nexport type PostLinkSiweVerify400Code = typeof PostLinkSiweVerify400Code[keyof typeof PostLinkSiweVerify400Code];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const PostLinkSiweVerify400Code = {\n WALLET_ALREADY_LINKED: 'WALLET_ALREADY_LINKED',\n BAD_REQUEST: 'BAD_REQUEST',\n} as const;\n\nexport type PostLinkSiweVerify400 = {\n message: string;\n /** Error code indicating the type of error */\n code?: PostLinkSiweVerify400Code;\n};\n\n/**\n * Error code indicating the authentication failure reason\n */\nexport type PostLinkSiweVerify401Code = typeof PostLinkSiweVerify401Code[keyof typeof PostLinkSiweVerify401Code];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const PostLinkSiweVerify401Code = {\n UNAUTHORIZED: 'UNAUTHORIZED',\n INVALID_OR_EXPIRED_NONCE: 'INVALID_OR_EXPIRED_NONCE',\n INVALID_SIGNATURE: 'INVALID_SIGNATURE',\n} as const;\n\nexport type PostLinkSiweVerify401 = {\n message: string;\n /** Error code indicating the authentication failure reason */\n code?: PostLinkSiweVerify401Code;\n};\n\nexport type PostLinkSiweVerify500 = {\n message?: string;\n};\n\nexport type GetLinkSiweListWallets200Item = {\n /** Unique identifier for this wallet record */\n id: string;\n /** User ID this wallet is linked to */\n userId: string;\n /**\n * Checksummed Ethereum wallet address\n * @pattern ^0[xX][a-fA-F0-9]{40}$\n */\n address: string;\n /** Blockchain network chain ID */\n chainId: number;\n /** Whether this is the user's primary wallet */\n isPrimary: boolean;\n /** Timestamp when the wallet was linked */\n createdAt: string;\n};\n\nexport type GetLinkSiweListWallets401 = {\n message?: string;\n};\n\nexport type GetLinkSiweListWallets500 = {\n message?: string;\n};\n\nexport type PostLinkSiweUnlinkBody = {\n /**\n * Ethereum wallet address to unlink (must be 42 characters starting with 0x)\n * @minLength 42\n * @maxLength 42\n * @pattern ^0[xX][a-fA-F0-9]{40}$\n */\n walletAddress: string;\n /**\n * Blockchain network chain ID (default: 1 for Ethereum mainnet)\n * @minimum 1\n * @maximum 2147483647\n */\n chainId?: number;\n};\n\nexport type PostLinkSiweUnlink200 = {\n /** Indicates successful wallet unlinking */\n success: boolean;\n};\n\n/**\n * Error code indicating the type of error\n */\nexport type PostLinkSiweUnlink400Code = typeof PostLinkSiweUnlink400Code[keyof typeof PostLinkSiweUnlink400Code];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const PostLinkSiweUnlink400Code = {\n BAD_REQUEST: 'BAD_REQUEST',\n CANNOT_UNLINK_LAST_ACCOUNT: 'CANNOT_UNLINK_LAST_ACCOUNT',\n WALLET_NOT_FOUND: 'WALLET_NOT_FOUND',\n} as const;\n\nexport type PostLinkSiweUnlink400 = {\n message: string;\n /** Error code indicating the type of error */\n code?: PostLinkSiweUnlink400Code;\n};\n\nexport type PostLinkSiweUnlink401 = {\n message?: string;\n};\n\nexport type PostLinkSiweUnlink500 = {\n message?: string;\n};\n\n","/**\n * Generated by orval v7.18.0 🍺\n * Do not edit manually.\n * Openfort API\n * Complete Openfort API references and guides can be found at: https://www.openfort.io/docs\n * OpenAPI spec version: 1.0.0\n */\nimport type {\n AuthPlayerResponse,\n AuthResponse,\n JwtKeyResponse,\n LinkEmail200,\n LoginEmailPassword200,\n LoginOIDCRequest,\n LoginRequest,\n LoginWithIdTokenRequest,\n LogoutRequest,\n OAuthInitRequest,\n OAuthResponse,\n PoolOAuthParams,\n RefreshTokenRequest,\n RequestResetPasswordRequest,\n RequestVerifyEmailRequest,\n ResetPasswordRequest,\n SIWEAuthenticateRequest,\n SIWEInitResponse,\n SIWERequest,\n SignupEmailPassword201,\n SignupRequest,\n ThirdPartyLinkRequest,\n ThirdPartyOAuthRequest,\n UnlinkEmailRequest,\n UnlinkOAuthRequest,\n VerifyEmailRequest\n} from '../openfortAPI.schemas';\n\nimport { openfortApiClient } from '../../openfortApiClient';\n\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n\n /**\n * Get or create a new session for the player based on the refresh token.\n * @summary Refresh or create auth session.\n */\nexport const refresh = (\n refreshTokenRequest: RefreshTokenRequest,\n options?: SecondParameter<typeof openfortApiClient<AuthResponse>>,) => {\n return openfortApiClient<AuthResponse>(\n {url: `/iam/v1/sessions`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: refreshTokenRequest\n },\n options);\n }\n /**\n * When using Openfort Auth, the endpoint logs out the player.\n * @summary Log out a player.\n */\nexport const logout = (\n logoutRequest: LogoutRequest,\n options?: SecondParameter<typeof openfortApiClient<void>>,) => {\n return openfortApiClient<void>(\n {url: `/iam/v1/sessions/logout`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: logoutRequest\n },\n options);\n }\n /**\n * Create a challenge to link external wallet to the player.\n * @summary Initialize SIWE.\n */\nexport const initSIWE = (\n sIWERequest: SIWERequest,\n options?: SecondParameter<typeof openfortApiClient<SIWEInitResponse>>,) => {\n return openfortApiClient<SIWEInitResponse>(\n {url: `/iam/v1/siwe/init`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: sIWERequest\n },\n options);\n }\n /**\n * @summary Authenticate player with SIWE\n */\nexport const authenticateSIWE = (\n sIWEAuthenticateRequest: SIWEAuthenticateRequest,\n options?: SecondParameter<typeof openfortApiClient<AuthResponse | void>>,) => {\n return openfortApiClient<AuthResponse | void>(\n {url: `/iam/v1/siwe/authenticate`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: sIWEAuthenticateRequest\n },\n options);\n }\n /**\n * @summary Unlink external wallet.\n */\nexport const unlinkSIWE = (\n sIWERequest: SIWERequest,\n options?: SecondParameter<typeof openfortApiClient<AuthPlayerResponse | void>>,) => {\n return openfortApiClient<AuthPlayerResponse | void>(\n {url: `/iam/v1/siwe/unlink`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: sIWERequest\n },\n options);\n }\n /**\n * @summary Link external wallet.\n */\nexport const linkSIWE = (\n sIWEAuthenticateRequest: SIWEAuthenticateRequest,\n options?: SecondParameter<typeof openfortApiClient<AuthPlayerResponse | void>>,) => {\n return openfortApiClient<AuthPlayerResponse | void>(\n {url: `/iam/v1/siwe/link`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: sIWEAuthenticateRequest\n },\n options);\n }\n /**\n * Create and authenticate a player based on email and password.\n * @summary Email and password signup.\n */\nexport const signupEmailPassword = (\n signupRequest: SignupRequest,\n options?: SecondParameter<typeof openfortApiClient<SignupEmailPassword201>>,) => {\n return openfortApiClient<SignupEmailPassword201>(\n {url: `/iam/v1/password/signup`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: signupRequest\n },\n options);\n }\n /**\n * Authenticate a player based on email and password.\n * @summary Email and password login.\n */\nexport const loginEmailPassword = (\n loginRequest: LoginRequest,\n options?: SecondParameter<typeof openfortApiClient<LoginEmailPassword200>>,) => {\n return openfortApiClient<LoginEmailPassword200>(\n {url: `/iam/v1/password/login`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: loginRequest\n },\n options);\n }\n /**\n * Start the Email Verification process for a player.\n * @summary Request an Email Verification.\n */\nexport const requestEmailVerification = (\n requestVerifyEmailRequest: RequestVerifyEmailRequest,\n options?: SecondParameter<typeof openfortApiClient<void>>,) => {\n return openfortApiClient<void>(\n {url: `/iam/v1/password/request_email_verification`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: requestVerifyEmailRequest\n },\n options);\n }\n /**\n * Verify a player's email address.\n * @summary Verify an email.\n */\nexport const verifyEmail = (\n verifyEmailRequest: VerifyEmailRequest,\n options?: SecondParameter<typeof openfortApiClient<void>>,) => {\n return openfortApiClient<void>(\n {url: `/iam/v1/password/verify_email`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: verifyEmailRequest\n },\n options);\n }\n /**\n * Start the Reset process for a player's password.\n * @summary Request a Reset password.\n */\nexport const requestResetPassword = (\n requestResetPasswordRequest: RequestResetPasswordRequest,\n options?: SecondParameter<typeof openfortApiClient<void>>,) => {\n return openfortApiClient<void>(\n {url: `/iam/v1/password/request_reset`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: requestResetPasswordRequest\n },\n options);\n }\n /**\n * Reset a player's password.\n * @summary Reset a password.\n */\nexport const resetPassword = (\n resetPasswordRequest: ResetPasswordRequest,\n options?: SecondParameter<typeof openfortApiClient<void>>,) => {\n return openfortApiClient<void>(\n {url: `/iam/v1/password/reset`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: resetPasswordRequest\n },\n options);\n }\n export const linkEmail = (\n loginRequest: LoginRequest,\n options?: SecondParameter<typeof openfortApiClient<LinkEmail200>>,) => {\n return openfortApiClient<LinkEmail200>(\n {url: `/iam/v1/password/link`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: loginRequest\n },\n options);\n }\n export const unlinkEmail = (\n unlinkEmailRequest: UnlinkEmailRequest,\n options?: SecondParameter<typeof openfortApiClient<AuthPlayerResponse>>,) => {\n return openfortApiClient<AuthPlayerResponse>(\n {url: `/iam/v1/password/unlink`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: unlinkEmailRequest\n },\n options);\n }\n /**\n * Authenticate a player from an identity token.\n * @summary OIDC Identity token.\n */\nexport const loginOIDC = (\n loginOIDCRequest: LoginOIDCRequest,\n options?: SecondParameter<typeof openfortApiClient<AuthResponse>>,) => {\n return openfortApiClient<AuthResponse>(\n {url: `/iam/v1/oidc/login`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: loginOIDCRequest\n },\n options);\n }\n /**\n * @summary Initialize OAuth.\n */\nexport const initOAuth = (\n oAuthInitRequest: OAuthInitRequest,\n options?: SecondParameter<typeof openfortApiClient<OAuthResponse>>,) => {\n return openfortApiClient<OAuthResponse>(\n {url: `/iam/v1/oauth/init`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: oAuthInitRequest\n },\n options);\n }\n /**\n * @summary Initialize Link OAuth.\n */\nexport const linkOAuth = (\n oAuthInitRequest: OAuthInitRequest,\n options?: SecondParameter<typeof openfortApiClient<OAuthResponse>>,) => {\n return openfortApiClient<OAuthResponse>(\n {url: `/iam/v1/oauth/init_link`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: oAuthInitRequest\n },\n options);\n }\n /**\n * @summary Initialize Link OAuth.\n */\nexport const linkThirdParty = (\n thirdPartyLinkRequest: ThirdPartyLinkRequest,\n options?: SecondParameter<typeof openfortApiClient<AuthPlayerResponse>>,) => {\n return openfortApiClient<AuthPlayerResponse>(\n {url: `/iam/v1/oauth/link`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: thirdPartyLinkRequest\n },\n options);\n }\n /**\n * @summary Initialize OAuth.\n */\nexport const poolOAuth = (\n params: PoolOAuthParams,\n options?: SecondParameter<typeof openfortApiClient<AuthResponse>>,) => {\n return openfortApiClient<AuthResponse>(\n {url: `/iam/v1/oauth/pool`, method: 'POST',\n params\n },\n options);\n }\n /**\n * @summary Authenticate player with oauth token.\n */\nexport const loginWithIdToken = (\n loginWithIdTokenRequest: LoginWithIdTokenRequest,\n options?: SecondParameter<typeof openfortApiClient<AuthResponse>>,) => {\n return openfortApiClient<AuthResponse>(\n {url: `/iam/v1/oauth/login_id_token`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: loginWithIdTokenRequest\n },\n options);\n }\n /**\n * @summary Verify oauth token of a third party auth provider.\n */\nexport const thirdParty = (\n thirdPartyOAuthRequest: ThirdPartyOAuthRequest,\n options?: SecondParameter<typeof openfortApiClient<AuthPlayerResponse>>,) => {\n return openfortApiClient<AuthPlayerResponse>(\n {url: `/iam/v1/oauth/third_party`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: thirdPartyOAuthRequest\n },\n options);\n }\n /**\n * @summary Unlink OAuth account\n */\nexport const unlinkOAuth = (\n unlinkOAuthRequest: UnlinkOAuthRequest,\n options?: SecondParameter<typeof openfortApiClient<AuthPlayerResponse>>,) => {\n return openfortApiClient<AuthPlayerResponse>(\n {url: `/iam/v1/oauth/unlink`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: unlinkOAuthRequest\n },\n options);\n }\n /**\n * Create a guest player.\n * @summary Create a guest player.\n */\nexport const registerGuest = (\n \n options?: SecondParameter<typeof openfortApiClient<AuthResponse>>,) => {\n return openfortApiClient<AuthResponse>(\n {url: `/iam/v1/guest`, method: 'POST'\n },\n options);\n }\n /**\n * Get the jwks.json file.\n\nYou can use the jwks.json file to verify the signature of a JWT token issued by Openfort Auth.\n * @summary Get the jwks.json file.\n */\nexport const getJwks = (\n publishableKey: string,\n options?: SecondParameter<typeof openfortApiClient<JwtKeyResponse>>,) => {\n return openfortApiClient<JwtKeyResponse>(\n {url: `/iam/v1/${publishableKey}/jwks.json`, method: 'GET'\n },\n options);\n }\n export const me = (\n \n options?: SecondParameter<typeof openfortApiClient<AuthPlayerResponse>>,) => {\n return openfortApiClient<AuthPlayerResponse>(\n {url: `/iam/v1/me`, method: 'GET'\n },\n options);\n }\n export type RefreshResult = NonNullable<Awaited<ReturnType<typeof refresh>>>\nexport type LogoutResult = NonNullable<Awaited<ReturnType<typeof logout>>>\nexport type InitSIWEResult = NonNullable<Awaited<ReturnType<typeof initSIWE>>>\nexport type AuthenticateSIWEResult = NonNullable<Awaited<ReturnType<typeof authenticateSIWE>>>\nexport type UnlinkSIWEResult = NonNullable<Awaited<ReturnType<typeof unlinkSIWE>>>\nexport type LinkSIWEResult = NonNullable<Awaited<ReturnType<typeof linkSIWE>>>\nexport type SignupEmailPasswordResult = NonNullable<Awaited<ReturnType<typeof signupEmailPassword>>>\nexport type LoginEmailPasswordResult = NonNullable<Awaited<ReturnType<typeof loginEmailPassword>>>\nexport type RequestEmailVerificationResult = NonNullable<Awaited<ReturnType<typeof requestEmailVerification>>>\nexport type VerifyEmailResult = NonNullable<Awaited<ReturnType<typeof verifyEmail>>>\nexport type RequestResetPasswordResult = NonNullable<Awaited<ReturnType<typeof requestResetPassword>>>\nexport type ResetPasswordResult = NonNullable<Awaited<ReturnType<typeof resetPassword>>>\nexport type LinkEmailResult = NonNullable<Awaited<ReturnType<typeof linkEmail>>>\nexport type UnlinkEmailResult = NonNullable<Awaited<ReturnType<typeof unlinkEmail>>>\nexport type LoginOIDCResult = NonNullable<Awaited<ReturnType<typeof loginOIDC>>>\nexport type InitOAuthResult = NonNullable<Awaited<ReturnType<typeof initOAuth>>>\nexport type LinkOAuthResult = NonNullable<Awaited<ReturnType<typeof linkOAuth>>>\nexport type LinkThirdPartyResult = NonNullable<Awaited<ReturnType<typeof linkThirdParty>>>\nexport type PoolOAuthResult = NonNullable<Awaited<ReturnType<typeof poolOAuth>>>\nexport type LoginWithIdTokenResult = NonNullable<Awaited<ReturnType<typeof loginWithIdToken>>>\nexport type ThirdPartyResult = NonNullable<Awaited<ReturnType<typeof thirdParty>>>\nexport type UnlinkOAuthResult = NonNullable<Awaited<ReturnType<typeof unlinkOAuth>>>\nexport type RegisterGuestResult = NonNullable<Awaited<ReturnType<typeof registerGuest>>>\nexport type GetJwksResult = NonNullable<Awaited<ReturnType<typeof getJwks>>>\nexport type MeResult = NonNullable<Awaited<ReturnType<typeof me>>>\n","/**\n * Generated by orval v7.18.0 🍺\n * Do not edit manually.\n * Openfort API\n * Complete Openfort API references and guides can be found at: https://www.openfort.io/docs\n * OpenAPI spec version: 1.0.0\n */\nimport type {\n BackendWalletListResponse,\n BackendWalletResponse,\n CreateBackendWalletRequest,\n CreateBackendWalletResponse,\n DeleteBackendWalletResponse,\n ExportPrivateKeyRequest,\n ExportPrivateKeyResponse,\n ImportPrivateKeyRequest,\n ImportPrivateKeyResponse,\n ListBackendWalletsParams,\n RegisterWalletSecretRequest,\n RegisterWalletSecretResponse,\n RevokeWalletSecretRequest,\n RevokeWalletSecretResponse,\n RotateWalletSecretRequest,\n RotateWalletSecretResponse,\n SignRequest,\n SignResponse\n} from '../openfortAPI.schemas';\n\nimport { openfortApiClient } from '../../openfortApiClient';\n\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n\n /**\n * List backend wallets.\n\nReturns a paginated list of backend wallets for the project.\n * @summary List backend wallets.\n */\nexport const listBackendWallets = (\n params?: ListBackendWalletsParams,\n options?: SecondParameter<typeof openfortApiClient<BackendWalletListResponse>>,) => {\n return openfortApiClient<BackendWalletListResponse>(\n {url: `/v2/accounts/backend`, method: 'GET',\n params\n },\n options);\n }\n /**\n * Create a new backend wallet account.\n\nGenerates a new keypair securely in the backend wallet system.\nThe private key is stored encrypted and never exposed.\n * @summary Create backend wallet.\n */\nexport const createBackendWallet = (\n createBackendWalletRequest: CreateBackendWalletRequest,\n options?: SecondParameter<typeof openfortApiClient<CreateBackendWalletResponse>>,) => {\n return openfortApiClient<CreateBackendWalletResponse>(\n {url: `/v2/accounts/backend`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: createBackendWalletRequest\n },\n options);\n }\n /**\n * Get backend wallet details.\n\nReturns details for a specific backend wallet.\n * @summary Get backend wallet.\n */\nexport const getBackendWallet = (\n id: string,\n options?: SecondParameter<typeof openfortApiClient<BackendWalletResponse>>,) => {\n return openfortApiClient<BackendWalletResponse>(\n {url: `/v2/accounts/backend/${id}`, method: 'GET'\n },\n options);\n }\n /**\n * Delete a backend wallet.\n\nPermanently deletes a backend wallet and its associated private key.\n * @summary Delete backend wallet.\n */\nexport const deleteBackendWallet = (\n id: string,\n options?: SecondParameter<typeof openfortApiClient<DeleteBackendWalletResponse>>,) => {\n return openfortApiClient<DeleteBackendWalletResponse>(\n {url: `/v2/accounts/backend/${id}`, method: 'DELETE'\n },\n options);\n }\n /**\n * Sign data via backend wallet.\n\nSigns the provided data using the account's private key managed by the backend wallet.\nThe private key is securely stored and never exposed.\n * @summary Sign data via backend wallet.\n */\nexport const sign = (\n id: string,\n signRequest: SignRequest,\n options?: SecondParameter<typeof openfortApiClient<SignResponse>>,) => {\n return openfortApiClient<SignResponse>(\n {url: `/v2/accounts/backend/${id}/sign`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: signRequest\n },\n options);\n }\n /**\n * Export private key with E2E encryption via backend wallet.\n\nExports the account's private key encrypted using RSA-4096 OAEP SHA-256.\nThe client must provide their ephemeral RSA-4096 public key (base64 SPKI DER format).\nThe response contains the encrypted private key that can be decrypted with the client's private key.\n * @summary Export private key (E2E encrypted).\n */\nexport const exportPrivateKey = (\n id: string,\n exportPrivateKeyRequest: ExportPrivateKeyRequest,\n options?: SecondParameter<typeof openfortApiClient<ExportPrivateKeyResponse>>,) => {\n return openfortApiClient<ExportPrivateKeyResponse>(\n {url: `/v2/accounts/backend/${id}/export`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: exportPrivateKeyRequest\n },\n options);\n }\n /**\n * Import private key with E2E encryption via backend wallet.\n\nImports a private key into the backend wallet system.\nThe private key must be encrypted using RSA-4096 OAEP SHA-256 with the server's\nstatic import public key (obtain out-of-band from SDK or documentation).\n * @summary Import private key (E2E encrypted).\n */\nexport const importPrivateKey = (\n importPrivateKeyRequest: ImportPrivateKeyRequest,\n options?: SecondParameter<typeof openfortApiClient<ImportPrivateKeyResponse>>,) => {\n return openfortApiClient<ImportPrivateKeyResponse>(\n {url: `/v2/accounts/backend/import`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: importPrivateKeyRequest\n },\n options);\n }\n /**\n * Register a new wallet secret (authentication key).\n\nRegisters an ECDSA P-256 public key that will be used to verify\nX-Wallet-Auth JWT signatures. This is required before using WALLET_AUTH\nfor other backend wallet operations.\n * @summary Register wallet secret.\n */\nexport const registerWalletSecret = (\n registerWalletSecretRequest: RegisterWalletSecretRequest,\n options?: SecondParameter<typeof openfortApiClient<RegisterWalletSecretResponse>>,) => {\n return openfortApiClient<RegisterWalletSecretResponse>(\n {url: `/v2/accounts/backend/register-secret`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: registerWalletSecretRequest\n },\n options);\n }\n /**\n * Revoke a wallet secret (authentication key).\n\nPermanently revokes a wallet secret so it can no longer be used\nfor X-Wallet-Auth JWT signing.\n * @summary Revoke wallet secret.\n */\nexport const revokeWalletSecret = (\n revokeWalletSecretRequest: RevokeWalletSecretRequest,\n options?: SecondParameter<typeof openfortApiClient<RevokeWalletSecretResponse>>,) => {\n return openfortApiClient<RevokeWalletSecretResponse>(\n {url: `/v2/accounts/backend/revoke-secret`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: revokeWalletSecretRequest\n },\n options);\n }\n /**\n * Rotate wallet secret (authentication key).\n\nReplaces the current wallet secret (ECDSA P-256 public key) used for\nX-Wallet-Auth JWT signing. The old secret will be revoked.\n * @summary Rotate wallet secret.\n */\nexport const rotateWalletSecret = (\n rotateWalletSecretRequest: RotateWalletSecretRequest,\n options?: SecondParameter<typeof openfortApiClient<RotateWalletSecretResponse>>,) => {\n return openfortApiClient<RotateWalletSecretResponse>(\n {url: `/v2/accounts/backend/rotate-secrets`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: rotateWalletSecretRequest\n },\n options);\n }\n export type ListBackendWalletsResult = NonNullable<Awaited<ReturnType<typeof listBackendWallets>>>\nexport type CreateBackendWalletResult = NonNullable<Awaited<ReturnType<typeof createBackendWallet>>>\nexport type GetBackendWalletResult = NonNullable<Awaited<ReturnType<typeof getBackendWallet>>>\nexport type DeleteBackendWalletResult = NonNullable<Awaited<ReturnType<typeof deleteBackendWallet>>>\nexport type SignResult = NonNullable<Awaited<ReturnType<typeof sign>>>\nexport type ExportPrivateKeyResult = NonNullable<Awaited<ReturnType<typeof exportPrivateKey>>>\nexport type ImportPrivateKeyResult = NonNullable<Awaited<ReturnType<typeof importPrivateKey>>>\nexport type RegisterWalletSecretResult = NonNullable<Awaited<ReturnType<typeof registerWalletSecret>>>\nexport type RevokeWalletSecretResult = NonNullable<Awaited<ReturnType<typeof revokeWalletSecret>>>\nexport type RotateWalletSecretResult = NonNullable<Awaited<ReturnType<typeof rotateWalletSecret>>>\n","/**\n * Generated by orval v7.18.0 🍺\n * Do not edit manually.\n * Openfort API\n * Complete Openfort API references and guides can be found at: https://www.openfort.io/docs\n * OpenAPI spec version: 1.0.0\n */\nimport type {\n ContractDeleteResponse,\n ContractListResponse,\n ContractReadResponse,\n ContractResponse,\n CreateContractRequest,\n GetContractsParams,\n ReadContractParams,\n UpdateContractRequest\n} from '../openfortAPI.schemas';\n\nimport { openfortApiClient } from '../../openfortApiClient';\n\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n\n /**\n * List of all contracts per project.\nBy default, a maximum of ten contracts are shown.\n * @summary List contracts.\n */\nexport const getContracts = (\n params?: GetContractsParams,\n options?: SecondParameter<typeof openfortApiClient<ContractListResponse>>,) => {\n return openfortApiClient<ContractListResponse>(\n {url: `/v1/contracts`, method: 'GET',\n params\n },\n options);\n }\n /**\n * Add a new contract to your project in Openfort\n * @summary Create contract object.\n */\nexport const createContract = (\n createContractRequest: CreateContractRequest,\n options?: SecondParameter<typeof openfortApiClient<ContractResponse>>,) => {\n return openfortApiClient<ContractResponse>(\n {url: `/v1/contracts`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: createContractRequest\n },\n options);\n }\n /**\n * Retrieve a contract by providing their contract id.\n * @summary Get a contract.\n */\nexport const getContract = (\n id: string,\n options?: SecondParameter<typeof openfortApiClient<ContractResponse>>,) => {\n return openfortApiClient<ContractResponse>(\n {url: `/v1/contracts/${id}`, method: 'GET'\n },\n options);\n }\n /**\n * @summary Updates a contract object.\n */\nexport const updateContract = (\n id: string,\n updateContractRequest: UpdateContractRequest,\n options?: SecondParameter<typeof openfortApiClient<ContractResponse>>,) => {\n return openfortApiClient<ContractResponse>(\n {url: `/v1/contracts/${id}`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: updateContractRequest\n },\n options);\n }\n /**\n * Delete a contract from the project by providing its contract id.\n * @summary Deletes a contract object.\n */\nexport const deleteContract = (\n id: string,\n options?: SecondParameter<typeof openfortApiClient<ContractDeleteResponse>>,) => {\n return openfortApiClient<ContractDeleteResponse>(\n {url: `/v1/contracts/${id}`, method: 'DELETE'\n },\n options);\n }\n /**\n * Using this endpoint, you can get the repositories returned by any readable\nfunction listed in a contracts ABI. This could be things like querying\nthe totalSupply of a currency contract, the number of owners of an items\ncontract, and more.\n * @summary Read on chain contract repositories.\n */\nexport const readContract = (\n id: string,\n params: ReadContractParams,\n options?: SecondParameter<typeof openfortApiClient<ContractReadResponse>>,) => {\n return openfortApiClient<ContractReadResponse>(\n {url: `/v1/contracts/${id}/read`, method: 'GET',\n params\n },\n options);\n }\n export type GetContractsResult = NonNullable<Awaited<ReturnType<typeof getContracts>>>\nexport type CreateContractResult = NonNullable<Awaited<ReturnType<typeof createContract>>>\nexport type GetContractResult = NonNullable<Awaited<ReturnType<typeof getContract>>>\nexport type UpdateContractResult = NonNullable<Awaited<ReturnType<typeof updateContract>>>\nexport type DeleteContractResult = NonNullable<Awaited<ReturnType<typeof deleteContract>>>\nexport type ReadContractResult = NonNullable<Awaited<ReturnType<typeof readContract>>>\n","/**\n * Generated by orval v7.18.0 🍺\n * Do not edit manually.\n * Openfort API\n * Complete Openfort API references and guides can be found at: https://www.openfort.io/docs\n * OpenAPI spec version: 1.0.0\n */\nimport type {\n CreateEventRequest,\n EventDeleteResponse,\n EventListResponse,\n EventResponse,\n GetEventsParams\n} from '../openfortAPI.schemas';\n\nimport { openfortApiClient } from '../../openfortApiClient';\n\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n\n /**\n * Returns a list of events.\n\nBy default, a maximum of 10 events are shown per page.\n * @summary List events.\n */\nexport const getEvents = (\n params?: GetEventsParams,\n options?: SecondParameter<typeof openfortApiClient<EventListResponse>>,) => {\n return openfortApiClient<EventListResponse>(\n {url: `/v1/events`, method: 'GET',\n params\n },\n options);\n }\n /**\n * Create a new event.\n * @summary Create a new event.\n */\nexport const createEvent = (\n createEventRequest: CreateEventRequest,\n options?: SecondParameter<typeof openfortApiClient<EventResponse>>,) => {\n return openfortApiClient<EventResponse>(\n {url: `/v1/events`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: createEventRequest\n },\n options);\n }\n /**\n * Get a single event.\n * @summary Get a single event.\n */\nexport const getEvent = (\n id: string,\n options?: SecondParameter<typeof openfortApiClient<EventResponse>>,) => {\n return openfortApiClient<EventResponse>(\n {url: `/v1/events/${id}`, method: 'GET'\n },\n options);\n }\n /**\n * Delete an event.\n * @summary Delete an event.\n */\nexport const deleteEvent = (\n id: string,\n options?: SecondParameter<typeof openfortApiClient<EventDeleteResponse>>,) => {\n return openfortApiClient<EventDeleteResponse>(\n {url: `/v1/events/${id}`, method: 'DELETE'\n },\n options);\n }\n export type GetEventsResult = NonNullable<Awaited<ReturnType<typeof getEvents>>>\nexport type CreateEventResult = NonNullable<Awaited<ReturnType<typeof createEvent>>>\nexport type GetEventResult = NonNullable<Awaited<ReturnType<typeof getEvent>>>\nexport type DeleteEventResult = NonNullable<Awaited<ReturnType<typeof deleteEvent>>>\n","/**\n * Generated by orval v7.18.0 🍺\n * Do not edit manually.\n * Openfort API\n * Complete Openfort API references and guides can be found at: https://www.openfort.io/docs\n * OpenAPI spec version: 1.0.0\n */\nimport type {\n CreateExchangeRequest,\n QuoteExchangeResult,\n TransactionIntentResponse\n} from '../openfortAPI.schemas';\n\nimport { openfortApiClient } from '../../openfortApiClient';\n\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n\n /**\n * Creates token swap.\n * @summary Create token swap.\n */\nexport const createSwap = (\n createExchangeRequest: CreateExchangeRequest,\n options?: SecondParameter<typeof openfortApiClient<TransactionIntentResponse>>,) => {\n return openfortApiClient<TransactionIntentResponse>(\n {url: `/v1/exchange`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: createExchangeRequest\n },\n options);\n }\n /**\n * Quote token swap.\n * @summary Quote token swap.\n */\nexport const quoteSwap = (\n createExchangeRequest: CreateExchangeRequest,\n options?: SecondParameter<typeof openfortApiClient<QuoteExchangeResult>>,) => {\n return openfortApiClient<QuoteExchangeResult>(\n {url: `/v1/exchange/quote`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: createExchangeRequest\n },\n options);\n }\n export type CreateSwapResult = NonNullable<Awaited<ReturnType<typeof createSwap>>>\nexport type QuoteSwapResult = NonNullable<Awaited<ReturnType<typeof quoteSwap>>>\n","/**\n * Generated by orval v7.18.0 🍺\n * Do not edit manually.\n * Openfort API\n * Complete Openfort API references and guides can be found at: https://www.openfort.io/docs\n * OpenAPI spec version: 1.0.0\n */\nimport type {\n CreateForwarderContractRequest,\n ForwarderContractDeleteResponse,\n ForwarderContractResponse,\n ListForwarderContractsParams\n} from '../openfortAPI.schemas';\n\nimport { openfortApiClient } from '../../openfortApiClient';\n\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n\n /**\n * Create a new forwarder contract.\n\nThis object represents the forwarder contract that will be used to pay the gas fees of the transactions.\n * @summary Create a new forwarder contract.\n */\nexport const createForwarderContract = (\n createForwarderContractRequest: CreateForwarderContractRequest,\n options?: SecondParameter<typeof openfortApiClient<ForwarderContractResponse>>,) => {\n return openfortApiClient<ForwarderContractResponse>(\n {url: `/v1/forwarder_contracts`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: createForwarderContractRequest\n },\n options);\n }\n /**\n * Returns a list of forwarder contract.\n\nThis object represents the forwarder contract that will be used to pay the gas fees for the transactions.\n\nBy default, a maximum of 10 forwarder contract are shown per page.\n * @summary List forwarder contract.\n */\nexport const listForwarderContracts = (\n params?: ListForwarderContractsParams,\n options?: SecondParameter<typeof openfortApiClient<ForwarderContractResponse[]>>,) => {\n return openfortApiClient<ForwarderContractResponse[]>(\n {url: `/v1/forwarder_contracts`, method: 'GET',\n params\n },\n options);\n }\n /**\n * Update a forwarder contract.\n\nThis object represents the forwarder contract that will be used to pay the gas fees of the transactions.\n * @summary Update a forwarder contract.\n */\nexport const updateForwarderContract = (\n id: string,\n createForwarderContractRequest: CreateForwarderContractRequest,\n options?: SecondParameter<typeof openfortApiClient<ForwarderContractResponse>>,) => {\n return openfortApiClient<ForwarderContractResponse>(\n {url: `/v1/forwarder_contracts/${id}`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: createForwarderContractRequest\n },\n options);\n }\n /**\n * Returns the forwarder contract with the given id.\n\nThis object represents the forwarder contract that will be used to pay the gas fees for the transactions.\n * @summary Get forwarder contract by id.\n */\nexport const getForwarderContract = (\n id: string,\n options?: SecondParameter<typeof openfortApiClient<ForwarderContractResponse>>,) => {\n return openfortApiClient<ForwarderContractResponse>(\n {url: `/v1/forwarder_contracts/${id}`, method: 'GET'\n },\n options);\n }\n /**\n * Delete the forwarder contract with the given id.\n\nThis object represents the forwarder contract that will be used to pay the gas fees for the transactions.\n * @summary Delete forwarder contract by id.\n */\nexport const deleteForwarderContract = (\n id: string,\n options?: SecondParameter<typeof openfortApiClient<ForwarderContractDeleteResponse>>,) => {\n return openfortApiClient<ForwarderContractDeleteResponse>(\n {url: `/v1/forwarder_contracts/${id}`, method: 'DELETE'\n },\n options);\n }\n export type CreateForwarderContractResult = NonNullable<Awaited<ReturnType<typeof createForwarderContract>>>\nexport type ListForwarderContractsResult = NonNullable<Awaited<ReturnType<typeof listForwarderContracts>>>\nexport type UpdateForwarderContractResult = NonNullable<Awaited<ReturnType<typeof updateForwarderContract>>>\nexport type GetForwarderContractResult = NonNullable<Awaited<ReturnType<typeof getForwarderContract>>>\nexport type DeleteForwarderContractResult = NonNullable<Awaited<ReturnType<typeof deleteForwarderContract>>>\n","/**\n * Generated by orval v7.18.0 🍺\n * Do not edit manually.\n * Openfort API\n * Complete Openfort API references and guides can be found at: https://www.openfort.io/docs\n * OpenAPI spec version: 1.0.0\n */\nimport { openfortApiClient } from '../../openfortApiClient';\n\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n\n export const query = (\n queryBody: unknown,\n options?: SecondParameter<typeof openfortApiClient<unknown>>,) => {\n return openfortApiClient<unknown>(\n {url: `/v1/graphql`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: queryBody\n },\n options);\n }\n export type QueryResult = NonNullable<Awaited<ReturnType<typeof query>>>\n","/**\n * Generated by orval v7.18.0 🍺\n * Do not edit manually.\n * Openfort API\n * Complete Openfort API references and guides can be found at: https://www.openfort.io/docs\n * OpenAPI spec version: 1.0.0\n */\nimport type {\n GetProjectLogsParams,\n ProjectLogs\n} from '../openfortAPI.schemas';\n\nimport { openfortApiClient } from '../../openfortApiClient';\n\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n\n /**\n * @summary Get logs for a project.\n */\nexport const getProjectLogs = (\n params?: GetProjectLogsParams,\n options?: SecondParameter<typeof openfortApiClient<ProjectLogs>>,) => {\n return openfortApiClient<ProjectLogs>(\n {url: `/v1/logs`, method: 'GET',\n params\n },\n options);\n }\n /**\n * @summary Get webhook logs for a project.\n */\nexport const getWebhookLogsByProjectId = (\n \n options?: SecondParameter<typeof openfortApiClient<ProjectLogs>>,) => {\n return openfortApiClient<ProjectLogs>(\n {url: `/v1/logs/webhook`, method: 'GET'\n },\n options);\n }\n export type GetProjectLogsResult = NonNullable<Awaited<ReturnType<typeof getProjectLogs>>>\nexport type GetWebhookLogsByProjectIdResult = NonNullable<Awaited<ReturnType<typeof getWebhookLogsByProjectId>>>\n","/**\n * Generated by orval v7.18.0 🍺\n * Do not edit manually.\n * Openfort API\n * Complete Openfort API references and guides can be found at: https://www.openfort.io/docs\n * OpenAPI spec version: 1.0.0\n */\nimport type {\n OnrampQuoteRequest,\n OnrampQuotesResponse,\n OnrampSessionRequest,\n OnrampSessionResponse\n} from '../openfortAPI.schemas';\n\nimport { openfortApiClient } from '../../openfortApiClient';\n\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n\n /**\n * Creates an onramp session for the selected provider.\n\nThe provider is selected via the `provider` field. All request and response formats are unified\nand provider-agnostic. The service layer handles translation between the common format and\nprovider-specific APIs.\n * @summary Create onramp session\n */\nexport const createOnrampSession = (\n onrampSessionRequest: OnrampSessionRequest,\n options?: SecondParameter<typeof openfortApiClient<OnrampSessionResponse>>,) => {\n return openfortApiClient<OnrampSessionResponse>(\n {url: `/v1/onramp/sessions`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: onrampSessionRequest\n },\n options);\n }\n /**\n * Retrieves onramp quote(s) without creating an actual transaction.\n\nIf provider is specified, returns a single quote for that provider.\nIf provider is not specified, returns quotes from all available providers.\n\nAll request and response formats are unified and provider-agnostic.\n * @summary Get onramp quote(s)\n */\nexport const getOnrampQuote = (\n onrampQuoteRequest: OnrampQuoteRequest,\n options?: SecondParameter<typeof openfortApiClient<OnrampQuotesResponse>>,) => {\n return openfortApiClient<OnrampQuotesResponse>(\n {url: `/v1/onramp/quotes`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: onrampQuoteRequest\n },\n options);\n }\n export type CreateOnrampSessionResult = NonNullable<Awaited<ReturnType<typeof createOnrampSession>>>\nexport type GetOnrampQuoteResult = NonNullable<Awaited<ReturnType<typeof getOnrampQuote>>>\n","/**\n * Generated by orval v7.18.0 🍺\n * Do not edit manually.\n * Openfort API\n * Complete Openfort API references and guides can be found at: https://www.openfort.io/docs\n * OpenAPI spec version: 1.0.0\n */\n/**\n */\nexport type JsonRpcSuccessResponseAnyJsonrpc = typeof JsonRpcSuccessResponseAnyJsonrpc[keyof typeof JsonRpcSuccessResponseAnyJsonrpc];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const JsonRpcSuccessResponseAnyJsonrpc = {\n '20': '2.0',\n} as const;\n\n/**\n * @nullable\n */\nexport type JsonRpcSuccessResponseAnyId = string | number | null;\n\n/**\n * JSON-RPC 2.0 Success Response\n */\nexport interface JsonRpcSuccessResponseAny {\n /** */\n jsonrpc: JsonRpcSuccessResponseAnyJsonrpc;\n result: unknown;\n /** @nullable */\n id: JsonRpcSuccessResponseAnyId;\n}\n\n/**\n * JSON-RPC 2.0 Error Object\n */\nexport interface JsonRpcError {\n code: number;\n message: string;\n data?: unknown;\n}\n\n/**\n */\nexport type JsonRpcErrorResponseJsonrpc = typeof JsonRpcErrorResponseJsonrpc[keyof typeof JsonRpcErrorResponseJsonrpc];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const JsonRpcErrorResponseJsonrpc = {\n '20': '2.0',\n} as const;\n\n/**\n * @nullable\n */\nexport type JsonRpcErrorResponseId = string | number | null;\n\n/**\n * JSON-RPC 2.0 Error Response\n */\nexport interface JsonRpcErrorResponse {\n /** */\n jsonrpc: JsonRpcErrorResponseJsonrpc;\n error: JsonRpcError;\n /** @nullable */\n id: JsonRpcErrorResponseId;\n}\n\n/**\n * JSON-RPC 2.0 Response (either success or error)\n */\nexport type JsonRpcResponse = JsonRpcSuccessResponseAny | JsonRpcErrorResponse;\n\n/**\n */\nexport type JsonRpcRequestJsonrpc = typeof JsonRpcRequestJsonrpc[keyof typeof JsonRpcRequestJsonrpc];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const JsonRpcRequestJsonrpc = {\n '20': '2.0',\n} as const;\n\n/**\n * @nullable\n */\nexport type JsonRpcRequestId = string | number | null;\n\n/**\n * JSON-RPC 2.0 Request\n */\nexport interface JsonRpcRequest {\n /** */\n jsonrpc: JsonRpcRequestJsonrpc;\n method: string;\n params?: unknown;\n /** @nullable */\n id?: JsonRpcRequestId;\n}\n\nexport interface CheckoutResponse {\n url: string;\n}\n\nexport type Currency = typeof Currency[keyof typeof Currency];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const Currency = {\n usd: 'usd',\n} as const;\n\nexport interface CheckoutRequest {\n /**\n * Amount in cents\n * @minimum 1\n */\n amount: number;\n currency: Currency;\n cancelUrl?: string;\n successUrl?: string;\n}\n\nexport interface CheckoutSubscriptionRequest {\n plan: string;\n cancelUrl?: string;\n successUrl?: string;\n}\n\nexport interface Money {\n /**\n * Amount in cents\n * @minimum 1\n */\n amount: number;\n currency: Currency;\n}\n\nexport interface BalanceResponse {\n balance: Money;\n expenses: Money;\n payments: Money;\n}\n\nexport type ResponseTypeLIST = typeof ResponseTypeLIST[keyof typeof ResponseTypeLIST];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const ResponseTypeLIST = {\n list: 'list',\n} as const;\n\nexport interface EntityIdResponse {\n id: string;\n}\n\nexport type SponsorSchemaPAYFORUSER = typeof SponsorSchemaPAYFORUSER[keyof typeof SponsorSchemaPAYFORUSER];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const SponsorSchemaPAYFORUSER = {\n pay_for_user: 'pay_for_user',\n} as const;\n\nexport type SponsorSchema = typeof SponsorSchema[keyof typeof SponsorSchema];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const SponsorSchema = {\n pay_for_user: 'pay_for_user',\n charge_custom_tokens: 'charge_custom_tokens',\n fixed_rate: 'fixed_rate',\n} as const;\n\nexport interface PayForUserPolicyStrategy {\n sponsorSchema: SponsorSchemaPAYFORUSER;\n /** @nullable */\n depositor?: string | null;\n}\n\nexport type SponsorSchemaCHARGECUSTOMTOKENS = typeof SponsorSchemaCHARGECUSTOMTOKENS[keyof typeof SponsorSchemaCHARGECUSTOMTOKENS];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const SponsorSchemaCHARGECUSTOMTOKENS = {\n charge_custom_tokens: 'charge_custom_tokens',\n} as const;\n\nexport interface ChargeCustomTokenPolicyStrategy {\n sponsorSchema: SponsorSchemaCHARGECUSTOMTOKENS;\n /** @nullable */\n depositor?: string | null;\n tokenContract: string;\n tokenContractAmount: string;\n}\n\nexport type SponsorSchemaFIXEDRATE = typeof SponsorSchemaFIXEDRATE[keyof typeof SponsorSchemaFIXEDRATE];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const SponsorSchemaFIXEDRATE = {\n fixed_rate: 'fixed_rate',\n} as const;\n\nexport interface FixedRateTokenPolicyStrategy {\n sponsorSchema: SponsorSchemaFIXEDRATE;\n /** @nullable */\n depositor?: string | null;\n tokenContract: string;\n tokenContractAmount: string;\n}\n\nexport type PolicyStrategy = PayForUserPolicyStrategy | ChargeCustomTokenPolicyStrategy | FixedRateTokenPolicyStrategy;\n\nexport type EntityTypePOLICY = typeof EntityTypePOLICY[keyof typeof EntityTypePOLICY];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const EntityTypePOLICY = {\n policy: 'policy',\n} as const;\n\nexport interface Policy {\n id: string;\n object: EntityTypePOLICY;\n createdAt: number;\n /** @nullable */\n name: string | null;\n deleted: boolean;\n enabled: boolean;\n /** The chain ID. */\n chainId: number;\n paymaster?: EntityIdResponse;\n forwarderContract?: EntityIdResponse;\n strategy: PolicyStrategy;\n transactionIntents: EntityIdResponse[];\n policyRules: EntityIdResponse[];\n}\n\nexport interface PlayerMetadata {[key: string]: string | number}\n\nexport type EntityTypePLAYER = typeof EntityTypePLAYER[keyof typeof EntityTypePLAYER];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const EntityTypePLAYER = {\n player: 'player',\n} as const;\n\nexport interface Player {\n id: string;\n object: EntityTypePLAYER;\n createdAt: number;\n name: string;\n description?: string;\n metadata?: PlayerMetadata;\n transactionIntents?: EntityIdResponse[];\n accounts?: EntityIdResponse[];\n}\n\nexport type EntityTypeACCOUNT = typeof EntityTypeACCOUNT[keyof typeof EntityTypeACCOUNT];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const EntityTypeACCOUNT = {\n account: 'account',\n} as const;\n\nexport interface Account {\n id: string;\n object: EntityTypeACCOUNT;\n createdAt: number;\n address: string;\n ownerAddress: string;\n deployed: boolean;\n custodial: boolean;\n embeddedSigner: boolean;\n /** The chain ID. */\n chainId: number;\n accountType: string;\n pendingOwnerAddress?: string;\n transactionIntents?: EntityIdResponse[];\n player: EntityIdResponse;\n}\n\nexport type EntityTypeDEVELOPERACCOUNT = typeof EntityTypeDEVELOPERACCOUNT[keyof typeof EntityTypeDEVELOPERACCOUNT];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const EntityTypeDEVELOPERACCOUNT = {\n developerAccount: 'developerAccount',\n} as const;\n\nexport interface DeveloperAccount {\n id: string;\n object: EntityTypeDEVELOPERACCOUNT;\n createdAt: number;\n address: string;\n custodial: boolean;\n name?: string;\n transactionIntents?: EntityIdResponse[];\n}\n\nexport type TransactionAbstractionType = typeof TransactionAbstractionType[keyof typeof TransactionAbstractionType];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const TransactionAbstractionType = {\n accountAbstractionV6: 'accountAbstractionV6',\n accountAbstractionV8: 'accountAbstractionV8',\n accountAbstractionV9: 'accountAbstractionV9',\n zkSync: 'zkSync',\n standard: 'standard',\n} as const;\n\nexport type TransactionStatus = typeof TransactionStatus[keyof typeof TransactionStatus];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const TransactionStatus = {\n none: 'none',\n new: 'new',\n sent: 'sent',\n dropped: 'dropped',\n indexed: 'indexed',\n confirmed: 'confirmed',\n reverted: 'reverted',\n notfound: 'notfound',\n replaced: 'replaced',\n expired: 'expired',\n} as const;\n\n/**\n * A transition represents a change in the status of a transaction intent.\n */\nexport interface Transition {\n fromStatus: TransactionStatus;\n toStatus: TransactionStatus;\n at: number;\n}\n\nexport interface ZKSyncDetails {\n /** The transaction sender. */\n from: string;\n /** The transaction recipient or contract address. */\n to: string;\n /** A contract hashed method call with encoded args. */\n data?: string;\n /** Unique number identifying this transaction. */\n nonce: string;\n /** The gas limit for the transaction. */\n gas: string;\n /** Total fee per gas (in wei), inclusive of `maxPriorityFeePerGas`. Only applies to EIP-1559 Transactions. */\n maxFeePerGas: string;\n /** Max priority fee per gas (in wei). Only applies to EIP-1559 Transactions. */\n maxPriorityFeePerGas: string;\n /** Address of the paymaster account that will pay the fees. */\n paymaster?: string;\n /** Input data to the paymaster */\n paymasterInput?: string;\n /** Value in wei sent with this transaction. */\n value?: string;\n}\n\nexport interface UserOperationV6 {\n /** The data to pass to the `sender` during the main execution call. */\n callData: string;\n /** The amount of gas to allocate the main execution call */\n callGasLimit: string;\n /** Account init code. Only for new accounts. */\n initCode?: string;\n /** Maximum fee per gas. */\n maxFeePerGas: string;\n /** Maximum priority fee per gas. */\n maxPriorityFeePerGas: string;\n /** Anti-replay parameter. */\n nonce: string;\n /** Paymaster address with calldata. */\n paymasterAndData?: string;\n /** Extra gas to pay the bundler. */\n preVerificationGas: string;\n /** The account making the operation. */\n sender: string;\n /** Data passed into the account to verify authorization. */\n signature: string;\n /** The amount of gas to allocate for the verification step. */\n verificationGasLimit: string;\n}\n\nexport interface AccountAbstractionV6Details {\n userOperation: UserOperationV6;\n /** A User Operation hash. */\n userOperationHash: string;\n}\n\nexport interface UserOperationV8 {\n /** The data to pass to the `sender` during the main execution call. */\n callData: string;\n /** The amount of gas to allocate the main execution call */\n callGasLimit: string;\n /** Account init code. Only for new accounts. */\n factory?: string;\n /** Factory data for account creation. */\n factoryData?: string;\n /** Maximum fee per gas. */\n maxFeePerGas: string;\n /** Maximum priority fee per gas. */\n maxPriorityFeePerGas: string;\n /** Anti-replay parameter. */\n nonce: string;\n /** Paymaster address. */\n paymaster?: string;\n /** Paymaster verification gas limit. */\n paymasterVerificationGasLimit?: string;\n /** Paymaster post-operation gas limit. */\n paymasterPostOpGasLimit?: string;\n /** Paymaster data. */\n paymasterData?: string;\n /** Extra gas to pay the bundler. */\n preVerificationGas: string;\n /** The account making the operation. */\n sender: string;\n /** Data passed into the account to verify authorization. */\n signature: string;\n /** The amount of gas to allocate for the verification step. */\n verificationGasLimit: string;\n}\n\nexport interface AccountAbstractionV8Details {\n userOperation: UserOperationV8;\n /** A User Operation hash. */\n userOperationHash: string;\n}\n\n/**\n * V9 UserOperation extends V8 with paymasterSignature field.\npaymasterSignature enables parallelizable Paymaster signing -\ndata can be passed to the Paymaster after the UserOperation is signed by the wallet.\n */\nexport interface UserOperationV9 {\n /** The data to pass to the `sender` during the main execution call. */\n callData: string;\n /** The amount of gas to allocate the main execution call */\n callGasLimit: string;\n /** Account init code. Only for new accounts. */\n factory?: string;\n /** Factory data for account creation. */\n factoryData?: string;\n /** Maximum fee per gas. */\n maxFeePerGas: string;\n /** Maximum priority fee per gas. */\n maxPriorityFeePerGas: string;\n /** Anti-replay parameter. */\n nonce: string;\n /** Paymaster address. */\n paymaster?: string;\n /** Paymaster verification gas limit. */\n paymasterVerificationGasLimit?: string;\n /** Paymaster post-operation gas limit. */\n paymasterPostOpGasLimit?: string;\n /** Paymaster data. */\n paymasterData?: string;\n /** Extra gas to pay the bundler. */\n preVerificationGas: string;\n /** The account making the operation. */\n sender: string;\n /** Data passed into the account to verify authorization. */\n signature: string;\n /** The amount of gas to allocate for the verification step. */\n verificationGasLimit: string;\n /** Paymaster signature - enables parallelizable signing.\nThis field does not affect the UserOperation hash, allowing\nthe sender and paymaster to sign in parallel. */\n paymasterSignature?: string;\n}\n\n/**\n * V9 details - extends V8 with paymasterSignature for parallelizable signing\n */\nexport interface AccountAbstractionV9Details {\n userOperation: UserOperationV9;\n /** A User Operation hash. */\n userOperationHash: string;\n}\n\nexport interface StandardDetails {\n /** The transaction sender. */\n from: string;\n /** The transaction recipient or contract address. */\n to: string;\n /** A contract hashed method call with encoded args. */\n data?: string;\n /** Unique number identifying this transaction. */\n nonce: string;\n /** The gas limit for the transaction. */\n gas: string;\n /** Total fee per gas (in wei), inclusive of `maxPriorityFeePerGas`. Only applies to EIP-1559 Transactions. */\n maxFeePerGas: string;\n /** Max priority fee per gas (in wei). Only applies to EIP-1559 Transactions. */\n maxPriorityFeePerGas: string;\n /** Value in wei sent with this transaction. */\n value?: string;\n}\n\nexport interface TransactionResponseLog {\n blockNumber: number;\n blockHash: string;\n transactionIndex: number;\n removed: boolean;\n address: string;\n data: string;\n topics: string[];\n transactionHash: string;\n logIndex: number;\n orphaned?: boolean;\n}\n\nexport interface ResponseResponse {\n /** The unix timestamp in seconds when the transactionIntent was created. */\n createdAt: number;\n /** The block height (number) of the block including the transaction of this log. */\n blockNumber?: number;\n /** The transaction hash of the transaction of this log. */\n transactionHash?: string;\n /** The l1 gas used by the transaction of this log. */\n l1GasUsed?: string;\n /** The gas used by the transaction of this log. */\n gasUsed?: string;\n /** The gas fee by the transaction of this log. */\n gasFee?: string;\n /** The l1 gas fee by the transaction of this log. */\n l1GasFee?: string;\n /** The status of the transaction of this log. */\n status?: number;\n /** The logs of the transaction of this log. */\n logs?: TransactionResponseLog[];\n /** The address of the contract of this log. */\n to?: string;\n /** The error of the transaction of this log. */\n error?: unknown;\n}\n\nexport interface Interaction {\n /** The address of the recipient of native tokens. Use *only* to transfer native tokens. If you provide one of a `pla_...`, or `acc_...` it will be converted to the corresponding address. */\n to?: string;\n /** The value intended to be sent with the transaction. Should be a stringified number in WEI (i.e. factor 10^18).\n* */\n value?: string;\n /** The contract ID you want to interact with. Must have been added to Openfort first, starts with `con_`. */\n contract?: string;\n /** The function name of the contract. Accepts a a function signature as well (e.g. mint(address)). */\n functionName?: string;\n /** The function arguments of the contract, in string format. If you provide one of a `pla_...`, `con_...` or `acc_...` it will be converted to the corresponding address. */\n functionArgs?: unknown[];\n /** Data to append to the end of the calldata. Useful for [adding a \"domain\" tag](https://opensea.notion.site/opensea/Seaport-Order-Attributions-ec2d69bf455041a5baa490941aad307f) */\n dataSuffix?: string;\n /** The encoded calldata of the contract. */\n data?: string;\n}\n\nexport type NextActionType = typeof NextActionType[keyof typeof NextActionType];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const NextActionType = {\n sign_with_wallet: 'sign_with_wallet',\n} as const;\n\nexport interface NextActionPayload {\n /**\n * The userOperation.\n * @deprecated\n */\n userOp?: unknown;\n /**\n * The hashed userOperation.\n * @deprecated\n */\n userOpHash?: string;\n /**\n * The userOperation.\n * @deprecated\n */\n userOperation?: unknown;\n /**\n * The hashed userOperation.\n * @deprecated\n */\n userOperationHash?: string;\n /** chain-agnostic hash to sign. */\n signableHash?: string;\n}\n\nexport interface NextActionResponse {\n type: NextActionType;\n payload: NextActionPayload;\n}\n\nexport type EntityTypeTRANSACTIONINTENT = typeof EntityTypeTRANSACTIONINTENT[keyof typeof EntityTypeTRANSACTIONINTENT];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const EntityTypeTRANSACTIONINTENT = {\n transactionIntent: 'transactionIntent',\n} as const;\n\n/**\n * Specific transaction details based on its type\n */\nexport type TransactionIntentResponseDetails = ZKSyncDetails | AccountAbstractionV6Details | AccountAbstractionV8Details | AccountAbstractionV9Details | StandardDetails;\n\n/**\n * The policy ID (starts with pol_).\n */\nexport type TransactionIntentResponsePolicy = Policy | EntityIdResponse;\n\n/**\n * The player ID (starts with pla_).\n */\nexport type TransactionIntentResponsePlayer = Player | EntityIdResponse;\n\n/**\n * The account ID (starts with acc_).\n */\nexport type TransactionIntentResponseAccount = Account | EntityIdResponse | DeveloperAccount;\n\nexport interface TransactionIntentResponse {\n id: string;\n object: EntityTypeTRANSACTIONINTENT;\n createdAt: number;\n /** The unix timestamp in seconds when the transactionIntent was created. */\n updatedAt: number;\n /** The chain ID. */\n chainId: number;\n /** The transaction abstraction type */\n abstractionType: TransactionAbstractionType;\n /** Transition of statuses the transaction has gone through. */\n transitions?: Transition[];\n /** Specific transaction details based on its type */\n details?: TransactionIntentResponseDetails;\n /** @deprecated */\n userOperationHash?: string;\n /** @deprecated */\n userOperation?: unknown;\n response?: ResponseResponse;\n interactions?: Interaction[];\n nextAction?: NextActionResponse;\n /** The policy ID (starts with pol_). */\n policy?: TransactionIntentResponsePolicy;\n /** The player ID (starts with pla_). */\n player?: TransactionIntentResponsePlayer;\n /** The account ID (starts with acc_). */\n account: TransactionIntentResponseAccount;\n}\n\nexport interface TransactionIntentListResponse {\n object: ResponseTypeLIST;\n url: string;\n data: TransactionIntentResponse[];\n start: number;\n end: number;\n total: number;\n}\n\nexport type ErrorTypeINVALIDREQUESTERROR = typeof ErrorTypeINVALIDREQUESTERROR[keyof typeof ErrorTypeINVALIDREQUESTERROR];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const ErrorTypeINVALIDREQUESTERROR = {\n invalid_request_error: 'invalid_request_error',\n} as const;\n\nexport interface FieldErrors {[key: string]: {\n value?: unknown;\n message: string;\n}}\n\nexport interface InvalidRequestError {\n type: ErrorTypeINVALIDREQUESTERROR;\n message: string;\n details?: FieldErrors;\n}\n\nexport interface InvalidRequestErrorResponse {\n error: InvalidRequestError;\n}\n\n/**\n */\nexport type TransactionIntentResponseExpandable = typeof TransactionIntentResponseExpandable[keyof typeof TransactionIntentResponseExpandable];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const TransactionIntentResponseExpandable = {\n policy: 'policy',\n player: 'player',\n account: 'account',\n} as const;\n\nexport type PrismaSortOrder = typeof PrismaSortOrder[keyof typeof PrismaSortOrder];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const PrismaSortOrder = {\n asc: 'asc',\n desc: 'desc',\n} as const;\n\nexport interface TransactionIntentListQueries {\n /**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\n limit?: number;\n /**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\n skip?: number;\n /** Specifies the order in which to sort the results. */\n order?: PrismaSortOrder;\n /** Specifies the fields to expand in the response. */\n expand?: TransactionIntentResponseExpandable[];\n /** The chain ID. Must be a [supported chain](/development/chains). */\n chainId?: number;\n /** Filter by account ID or developer account (starts with acc_ or dac_ respectively). */\n account?: string[];\n /** Filter by player ID (starts with pla_). */\n player?: string[];\n /** Filter by successful (1) or failed (0) transaction intents. */\n status?: number;\n /** Filter by policy ID (starts with pol_). */\n policy?: string[];\n}\n\nexport interface CreateTransactionIntentRequest {\n /** The chain ID. Must be a [supported chain](/development/chains). */\n chainId: number;\n /** ID of the Player this TransactionIntent belongs to, if one exists (starts with `pla_`).\n\nIf you omit this parameter a new Player will be created. */\n player?: string;\n /** ID of the Account this TransactionIntent is executed with, if one exists (starts with `acc_` or `dac_`).\n\nWhen providing a Player and ChainID, you can omit this parameter. */\n account?: string;\n /** ID of the Policy that defines the gas sponsorship strategy (starts with `pol_`). If no Policy is provided, the own Account native token funds will be used to pay for gas. */\n policy?: string;\n /** Use this parameter to create a new Account for Player with the provided owner address.\n\nIf you omit this parameter and no Account exists for the Player, a custodial Account will be created. */\n externalOwnerAddress?: string;\n /** Set to `true` to indicate that the transactionIntent request should be resolved as soon as possible, after the transactionIntent is created and simulated and before it arrives on chain. */\n optimistic?: boolean;\n /** Signed authorization for delegated accounts. This signature is used to authorize the user operation for AccountAbstractionV8.\nThe signature should be in the format \"0x...\" and will be parsed to extract r, s, and yParity values. */\n signedAuthorization?: string;\n interactions: Interaction[];\n}\n\n/**\n * return value from estimateTransactionIntentCost\n */\nexport interface EstimateTransactionIntentGasResult {\n /** estimated TX gas cost */\n estimatedTXGas: string;\n /** estimated TX gas cost in the chain native token (WEI) */\n estimatedTXGasFee: string;\n /** estimated TX gas cost in USD */\n estimatedTXGasFeeUSD: string;\n /** when using a policy, the estimated TX gas cost in the ERC-20 token defined in the strategy (WEI) */\n estimatedTXGasFeeToken?: string;\n /** gas price used for the estimation */\n gasPrice: string;\n}\n\nexport interface SignatureRequest {\n /** signed userOperationHash by the owner or valid session key */\n signature: string;\n /** Set to `true` to indicate that the transactionIntent request should be resolved as soon as possible, after the transactionIntent is created and simulated and before it arrives on chain. */\n optimistic?: boolean;\n}\n\nexport type APITopic = typeof APITopic[keyof typeof APITopic];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const APITopic = {\n transaction_intentbroadcast: 'transaction_intent.broadcast',\n transaction_intentsuccessful: 'transaction_intent.successful',\n transaction_intentcancelled: 'transaction_intent.cancelled',\n transaction_intentfailed: 'transaction_intent.failed',\n balanceproject: 'balance.project',\n balancecontract: 'balance.contract',\n balancedev_account: 'balance.dev_account',\n test: 'test',\n} as const;\n\nexport type APITriggerType = typeof APITriggerType[keyof typeof APITriggerType];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const APITriggerType = {\n webhook: 'webhook',\n email: 'email',\n} as const;\n\nexport type EntityTypeTRIGGER = typeof EntityTypeTRIGGER[keyof typeof EntityTypeTRIGGER];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const EntityTypeTRIGGER = {\n trigger: 'trigger',\n} as const;\n\nexport interface TriggerResponse {\n id: string;\n object: EntityTypeTRIGGER;\n createdAt: number;\n target: string;\n type: APITriggerType;\n subscription: string;\n updatedAt?: number;\n}\n\nexport type EntityTypeSUBSCRIPTION = typeof EntityTypeSUBSCRIPTION[keyof typeof EntityTypeSUBSCRIPTION];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const EntityTypeSUBSCRIPTION = {\n subscription: 'subscription',\n} as const;\n\nexport interface SubscriptionResponse {\n id: string;\n object: EntityTypeSUBSCRIPTION;\n createdAt: number;\n topic: APITopic;\n triggers: TriggerResponse[];\n updatedAt?: number;\n}\n\nexport interface SubscriptionListResponse {\n object: ResponseTypeLIST;\n url: string;\n data: SubscriptionResponse[];\n start: number;\n end: number;\n total: number;\n}\n\nexport type Status = typeof Status[keyof typeof Status];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const Status = {\n success: 'success',\n failed: 'failed',\n} as const;\n\nexport type EntityTypeLOG = typeof EntityTypeLOG[keyof typeof EntityTypeLOG];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const EntityTypeLOG = {\n log: 'log',\n} as const;\n\nexport interface LogResponse {\n id: string;\n object: EntityTypeLOG;\n createdAt: number;\n topic: APITopic;\n status: Status;\n subscription: string;\n trigger: string;\n requestID: string;\n}\n\nexport interface BaseEntityListResponseLogResponse {\n object: ResponseTypeLIST;\n url: string;\n data: LogResponse[];\n start: number;\n end: number;\n total: number;\n}\n\nexport type SubscriptionLogsResponse = BaseEntityListResponseLogResponse;\n\nexport interface ListSubscriptionLogsRequest {\n /**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\n limit?: number;\n /**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\n skip?: number;\n /** Specifies the order in which to sort the results. */\n order?: PrismaSortOrder;\n /** Specifies the topic of the subscription logs */\n topic?: APITopic;\n /** Specifies the status of the subscription logs */\n status?: Status;\n /** Specifies the object ID of the object related to triggered notification */\n object?: string;\n /** Specifies the subscription ID */\n subscription?: string;\n /** Specifies the trigger ID */\n trigger?: string;\n /** Specifies the request ID */\n requestID?: string;\n}\n\nexport type GetSubscriptionResponse = SubscriptionResponse;\n\nexport type CreateSubscriptionResponse = SubscriptionResponse;\n\nexport interface CreateTriggerRequest {\n /** Specifies the target of the trigger */\n target: string;\n /** Specifies the type of the trigger */\n type: APITriggerType;\n /** Specifies the subscription ID */\n subscription?: string;\n}\n\nexport interface CreateSubscriptionRequest {\n /** Specifies the topic of the subscription */\n topic: APITopic;\n /** Specifies the triggers of the subscription */\n triggers: CreateTriggerRequest[];\n}\n\nexport interface SubscriptionDeleteResponse {\n id: string;\n object: EntityTypeSUBSCRIPTION;\n deleted: boolean;\n}\n\nexport interface BaseEntityListResponseTriggerResponse {\n object: ResponseTypeLIST;\n url: string;\n data: TriggerResponse[];\n start: number;\n end: number;\n total: number;\n}\n\nexport type TriggerListResponse = BaseEntityListResponseTriggerResponse;\n\nexport type GetTriggerResponse = TriggerResponse;\n\nexport type CreateTriggerResponse = TriggerResponse;\n\nexport interface TriggerDeleteResponse {\n id: string;\n object: EntityTypeTRIGGER;\n deleted: boolean;\n}\n\n/**\n * Specific transaction details based on its type\n */\nexport type TransactionIntentDetails = ZKSyncDetails | AccountAbstractionV6Details | AccountAbstractionV8Details | AccountAbstractionV9Details | StandardDetails;\n\nexport interface TransactionIntent {\n id: string;\n object: EntityTypeTRANSACTIONINTENT;\n createdAt: number;\n /** The unix timestamp in seconds when the transactionIntent was created. */\n updatedAt: number;\n /** The chain ID. */\n chainId: number;\n /** The transaction abstraction type */\n abstractionType: TransactionAbstractionType;\n /** Transition of statuses the transaction has gone through. */\n transitions?: Transition[];\n /** Specific transaction details based on its type */\n details?: TransactionIntentDetails;\n /** @deprecated */\n userOperationHash?: string;\n /** @deprecated */\n userOperation?: unknown;\n response?: ResponseResponse;\n interactions?: Interaction[];\n nextAction?: NextActionResponse;\n /** The policy ID (starts with pol_). */\n policy?: EntityIdResponse;\n /** The player ID (starts with pla_). */\n player?: EntityIdResponse;\n /** The account ID. */\n account: EntityIdResponse;\n}\n\nexport type DeveloperAccountResponseTransactionIntentsItem = TransactionIntent | EntityIdResponse;\n\nexport interface DeveloperAccountResponse {\n id: string;\n object: EntityTypeDEVELOPERACCOUNT;\n createdAt: number;\n address: string;\n custodial: boolean;\n name?: string;\n transactionIntents?: DeveloperAccountResponseTransactionIntentsItem[];\n}\n\nexport interface DeveloperAccountListResponse {\n object: ResponseTypeLIST;\n url: string;\n data: DeveloperAccountResponse[];\n start: number;\n end: number;\n total: number;\n}\n\n/**\n */\nexport type DeveloperAccountResponseExpandable = typeof DeveloperAccountResponseExpandable[keyof typeof DeveloperAccountResponseExpandable];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const DeveloperAccountResponseExpandable = {\n transactionIntents: 'transactionIntents',\n} as const;\n\nexport interface DeveloperAccountListQueries {\n /**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\n limit?: number;\n /**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\n skip?: number;\n /** Specifies the order in which to sort the results. */\n order?: PrismaSortOrder;\n /** Specifies the fields to expand in the response. */\n expand?: DeveloperAccountResponseExpandable[];\n /** Specifies whether to include deleted dev accounts. */\n deleted?: boolean;\n}\n\nexport interface CreateDeveloperAccountCreateRequest {\n /** The address of the wallet that has deposited funds in the paymaster. */\n address?: string;\n /** Signature to verify the account ownership. */\n signature?: string;\n /** The name of the account. */\n name?: string;\n}\n\nexport type EntityTypeSIGNATURE = typeof EntityTypeSIGNATURE[keyof typeof EntityTypeSIGNATURE];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const EntityTypeSIGNATURE = {\n signature: 'signature',\n} as const;\n\nexport interface SignPayloadResponse {\n object: EntityTypeSIGNATURE;\n account: string;\n address: string;\n hash: string;\n signature: string;\n}\n\nexport interface TypedDomainData {\n /** The chain ID. */\n chainId: number;\n /** The user readable name of signing domain, i.e. the name of the DApp or the protocol.. */\n name?: string;\n /** The current major version of the signing domain. Signatures from different versions are not compatible. */\n version?: string;\n /** The address of the contract that will verify the signature. The user-agent may do contract specific phishing prevention. */\n verifyingContract?: string;\n /** An disambiguating salt for the protocol. This can be used as a domain separator of last resort. */\n salt?: string;\n}\n\nexport interface TypedDataField {\n name: string;\n type: string;\n}\n\nexport type SignPayloadRequestTypes = {[key: string]: TypedDataField[]};\n\nexport type SignPayloadRequestValue = {[key: string]: unknown};\n\nexport interface SignPayloadRequest {\n /** Domain. Specific to the dApp. */\n domain: TypedDomainData;\n types: SignPayloadRequestTypes;\n primaryType: string;\n value: SignPayloadRequestValue;\n /** Hash to verify and that will be signed */\n hash?: string;\n}\n\nexport interface UpdateDeveloperAccountCreateRequest {\n /** The name of the account. */\n name?: string;\n}\n\nexport interface DeveloperAccountGetMessageResponse {\n message: string;\n address: string;\n}\n\nexport interface DeveloperAccountDeleteResponse {\n id: string;\n object: EntityTypeDEVELOPERACCOUNT;\n deleted: boolean;\n}\n\nexport type EntityTypeSESSION = typeof EntityTypeSESSION[keyof typeof EntityTypeSESSION];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const EntityTypeSESSION = {\n session: 'session',\n} as const;\n\nexport type SessionResponseTransactionIntentsItem = TransactionIntent | EntityIdResponse;\n\nexport interface SessionResponse {\n id: string;\n object: EntityTypeSESSION;\n createdAt: number;\n updatedAt: number;\n isActive: boolean;\n address: string;\n validAfter: string;\n validUntil: string;\n /** The account ID. */\n account: EntityIdResponse;\n whitelist: string[];\n limit: number;\n nextAction?: NextActionResponse;\n transactionIntents?: SessionResponseTransactionIntentsItem[];\n}\n\nexport interface SessionListResponse {\n object: ResponseTypeLIST;\n url: string;\n data: SessionResponse[];\n start: number;\n end: number;\n total: number;\n}\n\n/**\n * Contains list of the expandable fields for the session response\n */\nexport type SessionResponseExpandable = typeof SessionResponseExpandable[keyof typeof SessionResponseExpandable];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const SessionResponseExpandable = {\n transactionIntents: 'transactionIntents',\n} as const;\n\nexport interface SessionListQueries {\n /**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\n limit?: number;\n /**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\n skip?: number;\n /** Specifies the order in which to sort the results. */\n order?: PrismaSortOrder;\n /** The player ID (starts with pla_) */\n player: string;\n /** Specifies the fields to expand in the response. */\n expand?: SessionResponseExpandable[];\n}\n\nexport interface CreateSessionRequest {\n /** The address of the session key. */\n address: string;\n /** The chain ID. Must be a [supported chain](/development/chains). */\n chainId: number;\n /** If no account exists for a given player, create one with this address. */\n externalOwnerAddress?: string;\n /**\n * Maximum number of times the session key can be used.\n * @minimum 1\n */\n limit?: number;\n /** Set to `true` to indicate that the transactionIntent request should be resolved as soon as possible, after the transactionIntent is created and simulated and before it arrives on chain. */\n optimistic?: boolean;\n /** ID of the Policy that defines the gas sponsorship strategy (starts with `pol_`). If no Policy is provided, the own Account native token funds will be used to pay for gas. */\n policy?: string;\n /** The unix timestamp in seconds when the session key becomes valid. */\n validAfter: number;\n /** The unix timestamp in seconds when the session key expires. */\n validUntil: number;\n /** The list of whitelisted addresses (contracts the session key can interact with). */\n whitelist?: string[];\n /** The player ID (starts with pla_). */\n player?: string;\n /** ID of the Account this TransactionIntent is executed with, if one exists (starts with `acc_` or `dac_`).\n\nWhen providing a Player and ChainID, you can omit this parameter. */\n account?: string;\n}\n\nexport interface RevokeSessionRequest {\n /** The address of the session key to revoke. */\n address: string;\n /** ID of the Policy that defines the gas sponsorship strategy (starts with `pol_`). If no Policy is provided, the own Account native token funds will be used to pay for gas. */\n policy?: string;\n /** Whether the transactionIntent is optimistic (resolve before it arrives on chain) or not. */\n optimistic?: boolean;\n /** The chain ID. Must be a [supported chain](/development/chains). */\n chainId: number;\n /** The player ID (starts with pla_). */\n player?: string;\n /** ID of the Account this TransactionIntent is executed with, if one exists (starts with `acc_` or `dac_`).\n\nWhen providing a Player and ChainID, you can omit this parameter. */\n account?: string;\n}\n\nexport type PolicyRuleTypeCONTRACT = typeof PolicyRuleTypeCONTRACT[keyof typeof PolicyRuleTypeCONTRACT];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const PolicyRuleTypeCONTRACT = {\n contract_functions: 'contract_functions',\n} as const;\n\nexport type PolicyRuleType = typeof PolicyRuleType[keyof typeof PolicyRuleType];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const PolicyRuleType = {\n contract_functions: 'contract_functions',\n account_functions: 'account_functions',\n rate_limit: 'rate_limit',\n} as const;\n\nexport type EntityTypePOLICYRULE = typeof EntityTypePOLICYRULE[keyof typeof EntityTypePOLICYRULE];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const EntityTypePOLICYRULE = {\n policyRule: 'policyRule',\n} as const;\n\nexport interface AbiType {\n name?: string;\n type?: string;\n indexed?: boolean;\n internalType?: unknown;\n components?: AbiType[];\n}\n\n/**\n * From T, pick a set of properties whose keys are in the union K\n */\nexport interface PickJsonFragmentTypeExcludeKeyofJsonFragmentTypeComponents {\n name?: string;\n type?: string;\n indexed?: boolean;\n internalType?: unknown;\n}\n\n/**\n * From T, pick a set of properties whose keys are in the union K\n */\nexport interface PickJsonFragmentExcludeKeyofJsonFragmentInputsOrOutputs {\n name?: string;\n type?: string;\n anonymous?: boolean;\n payable?: boolean;\n constant?: boolean;\n stateMutability?: string;\n gas?: string;\n}\n\nexport interface Abi {\n name?: string;\n type?: string;\n anonymous?: boolean;\n payable?: boolean;\n constant?: boolean;\n stateMutability?: string;\n gas?: string;\n inputs?: AbiType[];\n outputs?: AbiType[];\n}\n\nexport type EntityTypeCONTRACT = typeof EntityTypeCONTRACT[keyof typeof EntityTypeCONTRACT];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const EntityTypeCONTRACT = {\n contract: 'contract',\n} as const;\n\nexport interface ContractResponse {\n id: string;\n object: EntityTypeCONTRACT;\n createdAt: number;\n /** @nullable */\n name: string | null;\n /** The chain ID. */\n chainId: number;\n address: string;\n deleted: boolean;\n abi: Abi[];\n publicVerification: boolean;\n}\n\n/**\n * From T, pick a set of properties whose keys are in the union K\n */\nexport interface PickContractResponseId {\n id: string;\n}\n\nexport type ContractPolicyRuleResponseContract = ContractResponse | PickContractResponseId;\n\nexport interface ContractPolicyRuleResponse {\n id: string;\n object: EntityTypePOLICYRULE;\n createdAt: number;\n type: PolicyRuleTypeCONTRACT;\n contract?: ContractPolicyRuleResponseContract;\n functionName?: string;\n wildcard: boolean;\n}\n\nexport type PolicyRuleTypeACCOUNT = typeof PolicyRuleTypeACCOUNT[keyof typeof PolicyRuleTypeACCOUNT];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const PolicyRuleTypeACCOUNT = {\n account_functions: 'account_functions',\n} as const;\n\nexport interface AccountPolicyRuleResponse {\n id: string;\n object: EntityTypePOLICYRULE;\n createdAt: number;\n type: PolicyRuleTypeACCOUNT;\n}\n\nexport type PolicyRateLimitGASPERTRANSACTION = typeof PolicyRateLimitGASPERTRANSACTION[keyof typeof PolicyRateLimitGASPERTRANSACTION];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const PolicyRateLimitGASPERTRANSACTION = {\n gas_per_transaction: 'gas_per_transaction',\n} as const;\n\nexport type PolicyRuleTypeRATELIMIT = typeof PolicyRuleTypeRATELIMIT[keyof typeof PolicyRuleTypeRATELIMIT];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const PolicyRuleTypeRATELIMIT = {\n rate_limit: 'rate_limit',\n} as const;\n\nexport type PolicyRateLimit = typeof PolicyRateLimit[keyof typeof PolicyRateLimit];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const PolicyRateLimit = {\n gas_per_transaction: 'gas_per_transaction',\n gas_per_interval: 'gas_per_interval',\n count_per_interval: 'count_per_interval',\n} as const;\n\nexport interface GasPerTransactionLimitPolicyRuleResponse {\n id: string;\n object: EntityTypePOLICYRULE;\n createdAt: number;\n type: PolicyRuleTypeRATELIMIT;\n functionName: PolicyRateLimitGASPERTRANSACTION;\n gasLimit: string;\n}\n\nexport type PolicyRateLimitGASPERINTERVAL = typeof PolicyRateLimitGASPERINTERVAL[keyof typeof PolicyRateLimitGASPERINTERVAL];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const PolicyRateLimitGASPERINTERVAL = {\n gas_per_interval: 'gas_per_interval',\n} as const;\n\nexport type TimeIntervalType = typeof TimeIntervalType[keyof typeof TimeIntervalType];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const TimeIntervalType = {\n minute: 'minute',\n hour: 'hour',\n day: 'day',\n week: 'week',\n month: 'month',\n} as const;\n\nexport interface GasPerIntervalLimitPolicyRuleResponse {\n id: string;\n object: EntityTypePOLICYRULE;\n createdAt: number;\n type: PolicyRuleTypeRATELIMIT;\n functionName: PolicyRateLimitGASPERINTERVAL;\n gasLimit: string;\n timeIntervalType: TimeIntervalType;\n timeIntervalValue: number;\n}\n\nexport type PolicyRateLimitCOUNTPERINTERVAL = typeof PolicyRateLimitCOUNTPERINTERVAL[keyof typeof PolicyRateLimitCOUNTPERINTERVAL];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const PolicyRateLimitCOUNTPERINTERVAL = {\n count_per_interval: 'count_per_interval',\n} as const;\n\nexport interface CountPerIntervalLimitPolicyRuleResponse {\n id: string;\n object: EntityTypePOLICYRULE;\n createdAt: number;\n type: PolicyRuleTypeRATELIMIT;\n functionName: PolicyRateLimitCOUNTPERINTERVAL;\n countLimit: number;\n timeIntervalType: TimeIntervalType;\n timeIntervalValue: number;\n}\n\nexport type PolicyRuleResponse = ContractPolicyRuleResponse | AccountPolicyRuleResponse | GasPerTransactionLimitPolicyRuleResponse | GasPerIntervalLimitPolicyRuleResponse | CountPerIntervalLimitPolicyRuleResponse;\n\nexport interface PolicyRuleListResponse {\n object: ResponseTypeLIST;\n url: string;\n data: PolicyRuleResponse[];\n start: number;\n end: number;\n total: number;\n}\n\n/**\n */\nexport type PolicyRuleListQueriesExpandItem = typeof PolicyRuleListQueriesExpandItem[keyof typeof PolicyRuleListQueriesExpandItem];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const PolicyRuleListQueriesExpandItem = {\n contract: 'contract',\n} as const;\n\nexport interface PolicyRuleListQueries {\n /**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\n limit?: number;\n /**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\n skip?: number;\n /** Specifies the order in which to sort the results. */\n order?: PrismaSortOrder;\n /** Specifies the fields to expand in the response. */\n expand?: PolicyRuleListQueriesExpandItem[];\n /** Specifies the unique policy ID (starts with pol_). */\n policy: string;\n}\n\nexport interface CreatePolicyRuleRequest {\n /** The type of rule to add. */\n type: PolicyRuleType;\n /** Name of the function in the contract to allow. If you want to allow all functions, use the wildcard 'All functions'. */\n functionName?: string;\n /** The contract ID you want to interact with. Must have been added to Openfort first, starts with `con_`. */\n contract?: string;\n /** When using `contract_functions` type, set this to `true` to allow all contracts. */\n wildcard?: boolean;\n /** Gas limit in WEI (i.e. factor 10^18). */\n gasLimit?: string;\n /** Number of times the function will be sponsored. */\n countLimit?: number;\n /** Time interval between sponsorships. */\n timeIntervalType?: TimeIntervalType;\n /** Time interval value. */\n timeIntervalValue?: number;\n /** The unique Policy ID to add the rule to (starts with pol_). */\n policy: string;\n}\n\nexport interface UpdatePolicyRuleRequest {\n /** The type of rule to add. */\n type: PolicyRuleType;\n /** Name of the function in the contract to allow. If you want to allow all functions, use the wildcard 'All functions'. */\n functionName?: string;\n /** The contract ID you want to interact with. Must have been added to Openfort first, starts with `con_`. */\n contract?: string;\n /** When using `contract_functions` type, set this to `true` to allow all contracts. */\n wildcard?: boolean;\n /** Gas limit in WEI (i.e. factor 10^18). */\n gasLimit?: string;\n /** Number of times the function will be sponsored. */\n countLimit?: number;\n /** Time interval between sponsorships. */\n timeIntervalType?: TimeIntervalType;\n /** Time interval value. */\n timeIntervalValue?: number;\n}\n\nexport interface PolicyRuleDeleteResponse {\n id: string;\n object: EntityTypePOLICYRULE;\n deleted: boolean;\n}\n\nexport type PolicyResponseTransactionIntentsItem = TransactionIntent | EntityIdResponse;\n\nexport type PolicyResponsePolicyRulesItem = PolicyRuleResponse | EntityIdResponse;\n\nexport interface PolicyResponse {\n id: string;\n object: EntityTypePOLICY;\n createdAt: number;\n /** @nullable */\n name: string | null;\n deleted: boolean;\n enabled: boolean;\n /** The chain ID. */\n chainId: number;\n paymaster?: EntityIdResponse;\n forwarderContract?: EntityIdResponse;\n strategy: PolicyStrategy;\n transactionIntents: PolicyResponseTransactionIntentsItem[];\n policyRules: PolicyResponsePolicyRulesItem[];\n}\n\nexport interface PolicyListResponse {\n object: ResponseTypeLIST;\n url: string;\n data: PolicyResponse[];\n start: number;\n end: number;\n total: number;\n}\n\n/**\n */\nexport type PolicyResponseExpandable = typeof PolicyResponseExpandable[keyof typeof PolicyResponseExpandable];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const PolicyResponseExpandable = {\n transactionIntents: 'transactionIntents',\n policyRules: 'policyRules',\n} as const;\n\nexport interface PolicyListQueries {\n /**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\n limit?: number;\n /**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\n skip?: number;\n /** Specifies the order in which to sort the results. */\n order?: PrismaSortOrder;\n /** Specifies the fields to expand in the response. */\n expand?: PolicyResponseExpandable[];\n /** Specifies the name of the policy. */\n name?: string;\n /** Specifies whether to include deleted policies. */\n deleted?: boolean;\n /** The chain ID of the policy. */\n chainId?: number;\n /** Specifies whether to include enabled policies. */\n enabled?: boolean;\n}\n\nexport interface PolicyStrategyRequest {\n /** The sponsor schema of the policy. */\n sponsorSchema: SponsorSchema;\n /** If the user pays in custom tokens, the contract ID (starts with con_) of the token contract. */\n tokenContract?: string;\n /** If the user pays in ERC20 tokens, this reflects either the exchange rate or the amount in WEI. */\n tokenContractAmount?: string;\n /** If the you want to use your own native tokens to pay for gas, specify the developer account ID (starts with dac_) */\n depositor?: string;\n}\n\nexport interface CreatePolicyRequest {\n /** Specifies the name of the policy. */\n name: string;\n /** The chain ID. Must be a [supported chain](/development/chains). */\n chainId: number;\n /** The sponsor schema of the policy. */\n strategy: PolicyStrategyRequest;\n /** The ID of the paymaster. */\n paymaster?: string;\n /** The ID of the forwarder contract. */\n forwarderContract?: string;\n}\n\nexport interface UpdatePolicyRequest {\n /** Specifies the name of the policy. */\n name?: string;\n /** The chain ID. Must be a [supported chain](/development/chains). */\n chainId?: number;\n /** The sponsor schema of the policy. */\n strategy?: PolicyStrategyRequest;\n /** The ID of the paymaster. */\n paymaster?: string;\n /** The ID of the forwarder contract. */\n forwarderContract?: string;\n /** Specifies whether to delete the policy. */\n deleted?: boolean;\n}\n\nexport interface PolicyDeleteResponse {\n id: string;\n object: EntityTypePOLICY;\n deleted: boolean;\n}\n\nexport interface MonthRange {\n start: number;\n end: number;\n}\n\nexport interface GasReportTransactionIntents {\n id: string;\n gasFee: string;\n gasPrice: string;\n gasUsed: string;\n gasFeeInUSD: string;\n}\n\nexport interface GasReport {\n period: MonthRange;\n averageTransactionFee: string;\n totalTransactionFeeInCustomTokens: string;\n totalTransactionFee: string;\n totalTransactionFeeInUSD: string;\n /** @deprecated */\n transactionIntents: GasReportTransactionIntents[];\n}\n\nexport interface GasReportListResponse {\n object: ResponseTypeLIST;\n url: string;\n data: GasReport[];\n start: number;\n end: number;\n total: number;\n}\n\nexport interface PolicyReportQueries {\n /**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\n limit?: number;\n /**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\n skip?: number;\n /** Specifies the order in which to sort the results. */\n order?: PrismaSortOrder;\n}\n\nexport interface GasReportTransactionIntentsListResponse {\n object: ResponseTypeLIST;\n url: string;\n data: GasReportTransactionIntents[];\n start: number;\n end: number;\n total: number;\n}\n\nexport interface PolicyReportTransactionIntentsQueries {\n /** The start date of the period in unix timestamp. */\n to: number;\n /** The end date of the period in unix timestamp. */\n from: number;\n}\n\nexport interface PolicyBalanceWithdrawResponse {\n policy: string;\n balance: string;\n contract: string;\n}\n\nexport interface WithdrawalPolicyRequest {\n /** ID of the Dev Account this TransactionIntent will send the specified amount of tokens to (starts with `dac_`). */\n account: string;\n /** Amount in WEI to withdraw (i.e. factor 10^18).. */\n amount: string;\n}\n\nexport type PlayerResponseTransactionIntentsItem = TransactionIntent | EntityIdResponse;\n\nexport type PlayerResponseAccountsItem = Account | EntityIdResponse;\n\nexport interface PlayerResponse {\n id: string;\n object: EntityTypePLAYER;\n createdAt: number;\n name: string;\n description?: string;\n metadata?: PlayerMetadata;\n transactionIntents?: PlayerResponseTransactionIntentsItem[];\n accounts?: PlayerResponseAccountsItem[];\n}\n\nexport interface PlayerListResponse {\n object: ResponseTypeLIST;\n url: string;\n data: PlayerResponse[];\n start: number;\n end: number;\n total: number;\n}\n\n/**\n */\nexport type PlayerResponseExpandable = typeof PlayerResponseExpandable[keyof typeof PlayerResponseExpandable];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const PlayerResponseExpandable = {\n transactionIntents: 'transactionIntents',\n accounts: 'accounts',\n} as const;\n\nexport interface PlayerListQueries {\n /**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\n limit?: number;\n /**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\n skip?: number;\n /** Specifies the order in which to sort the results. */\n order?: PrismaSortOrder;\n /** Specifies the fields to expand in the response. */\n expand?: PlayerResponseExpandable[];\n /** Filter by player name. */\n name?: string;\n}\n\nexport interface PlayerCreateRequest {\n /**\n * Specifies the player name.\n * @minLength 1\n * @maxLength 256\n */\n name?: string;\n /** Specifies the player description. */\n description?: string;\n /** Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format. Individual keys can be unset by posting an empty value to them. All keys can be unset by posting an empty value to metadata. */\n metadata?: PlayerMetadata;\n}\n\nexport interface PlayerUpdateRequest {\n /**\n * Specifies the player name.\n * @minLength 1\n * @maxLength 256\n */\n name?: string;\n /** Specifies the player description. */\n description?: string;\n /** Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format. Individual keys can be unset by posting an empty value to them. All keys can be unset by posting an empty value to metadata. */\n metadata?: PlayerMetadata;\n}\n\nexport interface PlayerDeleteResponse {\n id: string;\n object: EntityTypePLAYER;\n deleted: boolean;\n}\n\nexport interface PlayerTransferOwnershipRequest {\n /** ID of the Policy that defines the gas sponsorship strategy (starts with `pol_`). A policy must be provided. */\n policy: string;\n /** The chain ID. Must be a [supported chain](/development/chains). */\n chainId: number;\n /** The address of the new owner */\n newOwnerAddress: string;\n /** ID of the Player that has the Account you want to transfer ownership from (starts with `pla_`). */\n player?: string;\n}\n\nexport interface PlayerCancelTransferOwnershipRequest {\n /** ID of the Policy that defines the gas sponsorship strategy (starts with `pol_`). A policy must be provided. */\n policy: string;\n /** The chain ID. Must be a [supported chain](/development/chains). */\n chainId: number;\n}\n\nexport type EntityTypePAYMASTER = typeof EntityTypePAYMASTER[keyof typeof EntityTypePAYMASTER];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const EntityTypePAYMASTER = {\n paymaster: 'paymaster',\n} as const;\n\nexport type PaymasterResponseContext = { [key: string]: unknown };\n\nexport interface PaymasterResponse {\n id: string;\n object: EntityTypePAYMASTER;\n createdAt: number;\n address: string;\n url?: string;\n context?: PaymasterResponseContext;\n}\n\nexport type CreatePaymasterResponse = PaymasterResponse;\n\n/**\n * Specifies the context, that is, the arbitrary repositories that the specific paymaster may require\n */\nexport type CreatePaymasterRequestContext = { [key: string]: unknown };\n\nexport interface CreatePaymasterRequest {\n /** Specifies the address of the paymaster */\n address: string;\n /** Specifies the paymaster URL */\n url?: string;\n /** Specifies the context, that is, the arbitrary repositories that the specific paymaster may require */\n context?: CreatePaymasterRequestContext;\n /** Specifies the name of the paymaster */\n name?: string;\n}\n\nexport interface PagingQueries {\n /**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\n limit?: number;\n /**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\n skip?: number;\n /** Specifies the order in which to sort the results. */\n order?: PrismaSortOrder;\n}\n\nexport interface PaymasterDeleteResponse {\n id: string;\n object: EntityTypePAYMASTER;\n deleted: boolean;\n}\n\nexport type OnrampProvider = typeof OnrampProvider[keyof typeof OnrampProvider];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const OnrampProvider = {\n coinbase: 'coinbase',\n stripe: 'stripe',\n} as const;\n\n/**\n * Common fee structure for onramp operations\n */\nexport interface OnrampFee {\n type: string;\n amount: string;\n currency: string;\n}\n\nexport type OnrampSessionResponseQuote = {\n exchangeRate?: string;\n fees?: OnrampFee[];\n destinationNetwork?: string;\n destinationCurrency?: string;\n destinationAmount?: string;\n sourceCurrency?: string;\n sourceAmount?: string;\n};\n\n/**\n * Common unified response format for creating an onramp session.\nThis format is provider-agnostic.\n */\nexport interface OnrampSessionResponse {\n provider: OnrampProvider;\n sessionId?: string;\n clientSecret?: string;\n status?: string;\n onrampUrl: string;\n redirectUrl?: string;\n quote?: OnrampSessionResponseQuote;\n}\n\n/**\n * Common unified request format for creating an onramp session.\nThis format is provider-agnostic and will be adapted by each provider service.\n */\nexport interface OnrampSessionRequest {\n provider: OnrampProvider;\n destinationCurrency: string;\n destinationNetwork: string;\n destinationAddress: string;\n sourceAmount?: string;\n sourceCurrency?: string;\n redirectUrl?: string;\n country?: string;\n subdivision?: string;\n paymentMethod?: string;\n clientIp?: string;\n}\n\n/**\n * Common unified response format for getting an onramp quote.\nThis format is provider-agnostic.\n */\nexport interface OnrampQuoteResponse {\n provider: OnrampProvider;\n sourceAmount: string;\n sourceCurrency: string;\n destinationAmount: string;\n destinationCurrency: string;\n destinationNetwork: string;\n fees: OnrampFee[];\n exchangeRate: string;\n}\n\n/**\n * Response type for quote requests that can return either a single quote or multiple quotes.\n- Returns OnrampQuoteResponse when provider is specified\n- Returns OnrampQuoteResponse[] when provider is not specified\n */\nexport type OnrampQuotesResponse = OnrampQuoteResponse | OnrampQuoteResponse[];\n\n/**\n * Common unified request format for getting an onramp quote.\nThis format is provider-agnostic and will be adapted by each provider service.\nIf provider is specified, returns a single quote for that provider.\nIf provider is not specified, returns quotes from all available providers.\n */\nexport interface OnrampQuoteRequest {\n provider?: OnrampProvider;\n sourceCurrency: string;\n destinationCurrency: string;\n destinationNetwork: string;\n sourceAmount: string;\n paymentMethod?: string;\n country?: string;\n subdivision?: string;\n}\n\nexport interface Log {\n id: string;\n timestamp: string;\n event: string;\n request_body: unknown;\n status: number;\n response_time: number;\n response_data: unknown;\n}\n\nexport interface ProjectLogs {\n object: ResponseTypeLIST;\n url: string;\n data: Log[];\n start: number;\n end: number;\n total: number;\n}\n\nexport type EntityTypeFORWARDERCONTRACT = typeof EntityTypeFORWARDERCONTRACT[keyof typeof EntityTypeFORWARDERCONTRACT];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const EntityTypeFORWARDERCONTRACT = {\n forwarderContract: 'forwarderContract',\n} as const;\n\nexport interface ForwarderContractResponse {\n id: string;\n object: EntityTypeFORWARDERCONTRACT;\n createdAt: number;\n address: string;\n chainId: number;\n name?: string;\n}\n\nexport type CreateForwarderContractResponse = ForwarderContractResponse;\n\nexport interface CreateForwarderContractRequest {\n /** Specifies the address of the paymaster */\n address: string;\n /** The chain ID. Must be a [supported chain](/development/chains). */\n chainId: number;\n /** Specifies the name of the paymaster */\n name?: string;\n}\n\nexport interface ForwarderContractDeleteResponse {\n id: string;\n object: EntityTypeFORWARDERCONTRACT;\n deleted: boolean;\n}\n\nexport type TradeType = typeof TradeType[keyof typeof TradeType];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const TradeType = {\n EXACT_INPUT: 'EXACT_INPUT',\n EXACT_OUTPUT: 'EXACT_OUTPUT',\n} as const;\n\nexport interface CreateExchangeRequest {\n /** The chain ID. Must be a [supported chain](/development/chains). */\n chainId: number;\n /** The public address that will sign and submit the transaction. If you provide one of a `pla_...` or `acc_...` it will be converted to the corresponding address. */\n fromAddress: string;\n /** Token address or 'native' to sell */\n tokenInAddress: string;\n /** Token address or 'native' to buy */\n tokenOutAddress: string;\n /** Amount in the smallest unit of the token */\n amount: string;\n /** The type of trade, exact input or exact output */\n tradeType: TradeType;\n /** The percentage of slippage tolerance. Default = 0.1. Max = 50. Min = 0 */\n slippagePercent?: number;\n /** Maximum hops allowed in optimal route. Default is 2 */\n maxHops?: number;\n /** Latest time swap can execute. Default is 15 minutes */\n deadline?: number;\n /** ID of the Policy that defines the gas sponsorship strategy (starts with `pol_`). If no Policy is provided, the own Account native token funds will be used to pay for gas. */\n policy?: string;\n /** Set to `true` to indicate that the transactionIntent request should be resolved as soon as possible, after the transactionIntent is created and simulated and before it arrives on chain. */\n optimistic?: boolean;\n}\n\n/**\n * Type representing a token\n */\nexport interface Token {\n name?: string;\n symbol?: string;\n decimals: number;\n address: string;\n chainId: number;\n}\n\n/**\n * Interface representing a token amount\n */\nexport interface Amount {\n value: string;\n token: Token;\n}\n\n/**\n * Type representing the fees returned in the quote\n */\nexport interface Fee {\n amount: Amount;\n basisPoints: number;\n recipient: string;\n}\n\nexport interface QuoteExchangeResult {\n amount: Amount;\n amountWithMaxSlippage: Amount;\n slippage: number;\n fees: Fee[];\n estimatedTXGasFee: string;\n estimatedTXGasFeeUSD: string;\n estimatedTXGasFeeToken?: string;\n}\n\nexport type APITopicBALANCECONTRACT = typeof APITopicBALANCECONTRACT[keyof typeof APITopicBALANCECONTRACT];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const APITopicBALANCECONTRACT = {\n balancecontract: 'balance.contract',\n} as const;\n\nexport type EntityTypeEVENT = typeof EntityTypeEVENT[keyof typeof EntityTypeEVENT];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const EntityTypeEVENT = {\n event: 'event',\n} as const;\n\nexport interface ContractEventResponse {\n id: string;\n object: EntityTypeEVENT;\n createdAt: number;\n topic: APITopicBALANCECONTRACT;\n threshold: string;\n contract: EntityIdResponse;\n functionName: string;\n functionArgs: string[];\n}\n\nexport type APITopicBALANCEDEVACCOUNT = typeof APITopicBALANCEDEVACCOUNT[keyof typeof APITopicBALANCEDEVACCOUNT];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const APITopicBALANCEDEVACCOUNT = {\n balancedev_account: 'balance.dev_account',\n} as const;\n\nexport interface AccountEventResponse {\n id: string;\n object: EntityTypeEVENT;\n createdAt: number;\n topic: APITopicBALANCEDEVACCOUNT;\n threshold: string;\n developerAccount: EntityIdResponse;\n chainId: number;\n}\n\nexport type APITopicBALANCEPROJECT = typeof APITopicBALANCEPROJECT[keyof typeof APITopicBALANCEPROJECT];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const APITopicBALANCEPROJECT = {\n balanceproject: 'balance.project',\n} as const;\n\nexport interface BalanceEventResponse {\n id: string;\n object: EntityTypeEVENT;\n createdAt: number;\n topic: APITopicBALANCEPROJECT;\n threshold: string;\n}\n\nexport type APITopicTRANSACTIONSUCCESSFUL = typeof APITopicTRANSACTIONSUCCESSFUL[keyof typeof APITopicTRANSACTIONSUCCESSFUL];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const APITopicTRANSACTIONSUCCESSFUL = {\n transaction_intentsuccessful: 'transaction_intent.successful',\n} as const;\n\nexport interface TransactionConfirmedEventResponse {\n id: string;\n object: EntityTypeEVENT;\n createdAt: number;\n topic: APITopicTRANSACTIONSUCCESSFUL;\n numberOfBlocks: number;\n}\n\nexport type EventResponse = ContractEventResponse | AccountEventResponse | BalanceEventResponse | TransactionConfirmedEventResponse;\n\nexport interface EventListResponse {\n object: ResponseTypeLIST;\n url: string;\n data: EventResponse[];\n start: number;\n end: number;\n total: number;\n}\n\nexport interface EventListQueries {\n /**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\n limit?: number;\n /**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\n skip?: number;\n /** Specifies the order in which to sort the results. */\n order?: PrismaSortOrder;\n /** Specifies the name of the event */\n name?: string;\n /** Specifies if display deleted events */\n deleted?: boolean;\n}\n\nexport type GetEventResponse = EventResponse;\n\nexport type CreateEventResponse = EventResponse;\n\nexport interface CreateEventRequest {\n /** Specifies the name of the event */\n name: string;\n /** Specifies the type of the event (transaction_intent.successful, balance.project, balance.contract, balance.dev_account) */\n topic: APITopic;\n /** Specifies the contract id (if the event is a contract event) */\n contract?: string;\n /** Specifies the function arguments (if the event is a contract event) */\n functionArgs?: string[];\n /** Specifies the function name (if the event is a contract event) */\n functionName?: string;\n /** Specifies the developer account id (if the event is a developer account event) */\n developerAccount?: string;\n /** Specifies the chain id (if the event is a developer account event) */\n chainId?: number;\n /** Threshold for the event (if the event is a contract, dev account or project event) */\n threshold?: string;\n /** Specifies the number of confirmations required for the event to trigger */\n numberOfBlocks?: number;\n}\n\nexport interface EventDeleteResponse {\n id: string;\n object: EntityTypeEVENT;\n deleted: boolean;\n}\n\nexport interface EmbeddedResponse {\n share: string;\n accountType: string;\n address: string;\n chainId: number;\n deviceId?: string;\n}\n\nexport type EmbeddedNextActionResponseNextAction = typeof EmbeddedNextActionResponseNextAction[keyof typeof EmbeddedNextActionResponseNextAction];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const EmbeddedNextActionResponseNextAction = {\n RECOVER: 'RECOVER',\n REGISTER: 'REGISTER',\n} as const;\n\nexport interface EmbeddedNextActionResponse {\n nextAction: EmbeddedNextActionResponseNextAction;\n player: string;\n embedded?: EmbeddedResponse;\n}\n\nexport interface InitEmbeddedRequest {\n chainId: number;\n}\n\nexport interface EmbeddedV2Response {\n share?: string;\n accountType: string;\n implementationType?: string;\n implementationAddress?: string;\n factoryAddress?: string;\n salt?: string;\n address: string;\n ownerAddress: string;\n chainType: string;\n chainId?: number;\n device?: string;\n account: string;\n signer: string;\n}\n\nexport interface RegisterEmbeddedRequest {\n chainId: number;\n address: string;\n share: string;\n signerUuid?: string;\n}\n\nexport interface SwitchChainRequest {\n chainId: number;\n deviceId: string;\n}\n\nexport interface ExportedEmbeddedRequest {\n address: string;\n}\n\nexport type EntityTypeDEVICE = typeof EntityTypeDEVICE[keyof typeof EntityTypeDEVICE];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const EntityTypeDEVICE = {\n device: 'device',\n} as const;\n\nexport interface DeviceResponse {\n id: string;\n object: EntityTypeDEVICE;\n createdAt: number;\n account: string;\n share: string;\n isPrimary: boolean;\n}\n\nexport interface BaseEntityListResponseDeviceResponse {\n object: ResponseTypeLIST;\n url: string;\n data: DeviceResponse[];\n start: number;\n end: number;\n total: number;\n}\n\nexport type DeviceListResponse = BaseEntityListResponseDeviceResponse;\n\nexport interface DeviceListQueries {\n /**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\n limit?: number;\n /**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\n skip?: number;\n /** Specifies the order in which to sort the results. */\n order?: PrismaSortOrder;\n /** Specifies the unique account ID (starts with acc_) */\n account: string;\n}\n\nexport type GetDeviceResponse = DeviceResponse;\n\nexport type CreateDeviceResponse = DeviceResponse;\n\nexport interface CreateDeviceRequest {\n /** Specifies the unique account ID (starts with acc_) */\n account: string;\n /** Specifies the share repositories */\n share: string;\n}\n\nexport interface ContractListResponse {\n object: ResponseTypeLIST;\n url: string;\n data: ContractResponse[];\n start: number;\n end: number;\n total: number;\n}\n\nexport interface ContractListQueries {\n /**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\n limit?: number;\n /**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\n skip?: number;\n /** Specifies the order in which to sort the results. */\n order?: PrismaSortOrder;\n /** Specifies the name of the contract. */\n name?: string;\n /** Specifies whether to include deleted contracts. */\n deleted?: boolean;\n /** The chain ID of the contract. */\n chainId?: number;\n /** Specifies the address of the contract. */\n address?: string;\n}\n\nexport interface CreateContractRequest {\n /** Specifies the name of the contract (Only for display purposes). */\n name: string;\n /** Specifies the chain ID of the contract. Must be a [supported chain](/development/chains). */\n chainId: number;\n /** Specifies the address of the contract. */\n address: string;\n /** Specifies the ABI of the contract. */\n abi?: Abi[];\n /** Specifies whether to verify the contract publicly. */\n publicVerification?: boolean;\n}\n\nexport interface UpdateContractRequest {\n /** Specifies the name of the contract (Only for display purposes). */\n name?: string;\n /** Specifies the chain ID of the contract. Must be a [supported chain](/development/chains). */\n chainId?: number;\n /** Specifies whether to delete the contract. */\n deleted?: boolean;\n /** Specifies the address of the contract. */\n address?: string;\n /** Specifies the ABI of the contract. */\n abi?: Abi[];\n /** Specifies whether to verify the contract publicly. */\n publicVerification?: boolean;\n}\n\nexport type EntityTypeREADCONTRACT = typeof EntityTypeREADCONTRACT[keyof typeof EntityTypeREADCONTRACT];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const EntityTypeREADCONTRACT = {\n readContract: 'readContract',\n} as const;\n\nexport interface ContractReadResponse {\n id: string;\n object: EntityTypeREADCONTRACT;\n createdAt: number;\n functionName: string;\n result: unknown;\n}\n\nexport interface ContractReadQueries {\n /** The function name of the contract. */\n functionName: string;\n /** The function arguments of the contract, in string format. Accepts pla_, con_ and acc_ IDs. */\n functionArgs?: unknown[];\n}\n\nexport interface ContractDeleteResponse {\n id: string;\n object: EntityTypeCONTRACT;\n deleted: boolean;\n}\n\nexport type AccountResponseTransactionIntentsItem = TransactionIntent | EntityIdResponse;\n\nexport type AccountResponsePlayer = EntityIdResponse | Player;\n\nexport interface AccountResponse {\n id: string;\n object: EntityTypeACCOUNT;\n createdAt: number;\n address: string;\n ownerAddress: string;\n deployed: boolean;\n custodial: boolean;\n embeddedSigner: boolean;\n /** The chain ID. */\n chainId: number;\n accountType: string;\n pendingOwnerAddress?: string;\n transactionIntents?: AccountResponseTransactionIntentsItem[];\n player: AccountResponsePlayer;\n}\n\nexport interface AccountListResponse {\n object: ResponseTypeLIST;\n url: string;\n data: AccountResponse[];\n start: number;\n end: number;\n total: number;\n}\n\n/**\n */\nexport type AccountResponseExpandable = typeof AccountResponseExpandable[keyof typeof AccountResponseExpandable];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const AccountResponseExpandable = {\n player: 'player',\n transactionIntents: 'transactionIntents',\n} as const;\n\nexport interface AccountListQueries {\n /**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\n limit?: number;\n /**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\n skip?: number;\n /** Specifies the order in which to sort the results. */\n order?: PrismaSortOrder;\n /** The chain ID. Must be a [supported chain](/development/chains). */\n chainId?: number;\n /** Specifies the unique player ID (starts with pla_) */\n player?: string;\n /** Specifies the address of the account */\n address?: string;\n /** Specifies the fields to expand in the response. */\n expand?: AccountResponseExpandable[];\n}\n\nexport interface CreateAccountRequest {\n /** The chain ID. Must be a [supported chain](/development/chains). */\n chainId: number;\n /** Use this parameter to create a new Account for Player with the provided owner address. */\n externalOwnerAddress?: string;\n /** The type of smart account that will be created (e.g. UpgradeableV6, UpgradeableV5, ZKSyncUpgradeableV2). Defaults to UpgradeableV6. */\n accountType?: string;\n /** For account types that support social recovery, wether to enable Openfort as guardian or not. Defaults to false. */\n defaultGuardian?: boolean;\n /** ID of the player this account belongs to (starts with `pla_`). If none is provided, a new player will be created. */\n player?: string;\n}\n\nexport interface TransferOwnershipRequest {\n /** The address of the new owner */\n newOwnerAddress: string;\n /** ID of the Policy that defines the gas sponsorship strategy (starts with `pol_`). A policy must be provided. */\n policy: string;\n}\n\nexport interface CancelTransferOwnershipRequest {\n /** ID of the Policy that defines the gas sponsorship strategy (starts with `pol_`). A policy must be provided. */\n policy: string;\n}\n\nexport interface DeployRequest {\n /** The policy ID (starts with pol_) */\n policy: string;\n}\n\nexport interface StartRecoveryRequest {\n /** Address of the new owner */\n newOwnerAddress: string;\n /** The policy ID (starts with pol_) */\n policy: string;\n}\n\nexport interface CompleteRecoveryRequest {\n /** Address of the new owner */\n newOwnerAddress: string;\n /** Signatures by the guardians */\n signatures?: string[];\n /** The policy ID (starts with pol_) */\n policy: string;\n}\n\nexport type AuthProviderResponseV2 = typeof AuthProviderResponseV2[keyof typeof AuthProviderResponseV2];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const AuthProviderResponseV2 = {\n credential: 'credential',\n email: 'email',\n wallet: 'wallet',\n google: 'google',\n apple: 'apple',\n twitter: 'twitter',\n discord: 'discord',\n facebook: 'facebook',\n custom: 'custom',\n oidc: 'oidc',\n siwe: 'siwe',\n} as const;\n\nexport interface LinkedAccountResponseV2 {\n provider: AuthProviderResponseV2;\n createdAt: number;\n updatedAt: number;\n accountId?: string;\n chainType?: string;\n connectorType?: string;\n walletClientType?: string;\n}\n\nexport interface AuthUserResponse {\n id: string;\n createdAt: number;\n name: string;\n /** @nullable */\n email: string | null;\n emailVerified: boolean;\n /** @nullable */\n phoneNumber: string | null;\n phoneNumberVerified: boolean;\n isAnonymous?: boolean;\n linkedAccounts: LinkedAccountResponseV2[];\n}\n\nexport interface BaseEntityListResponseAuthUserResponse {\n object: ResponseTypeLIST;\n url: string;\n data: AuthUserResponse[];\n start: number;\n end: number;\n total: number;\n}\n\nexport type UserListResponse = BaseEntityListResponseAuthUserResponse;\n\nexport interface UserListQueries {\n /**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\n limit?: number;\n /**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\n skip?: number;\n /** Specifies the order in which to sort the results. */\n order?: PrismaSortOrder;\n /** Filter by user name. */\n name?: string;\n /** Filter by external user ID. */\n externalUserId?: string;\n}\n\nexport interface BaseDeleteEntityResponseEntityTypePLAYER {\n id: string;\n object: EntityTypePLAYER;\n deleted: boolean;\n}\n\nexport type UserDeleteResponse = BaseDeleteEntityResponseEntityTypePLAYER;\n\nexport interface SmartAccountData {\n implementationType: string;\n factoryAddress?: string;\n implementationAddress: string;\n salt?: string;\n deployedTx?: string;\n deployedAt?: number;\n active: boolean;\n}\n\nexport interface PasskeyEnv {\n name?: string;\n os?: string;\n osVersion?: string;\n device?: string;\n}\n\nexport interface RecoveryMethodDetails {\n passkeyId?: string;\n passkeyEnv?: PasskeyEnv;\n}\n\n/**\n * Indicates key custody: \"Developer\" for server-managed keys (WALLTEE), \"User\" for user-managed keys (DB).\n */\nexport type PregenerateAccountResponseCustody = typeof PregenerateAccountResponseCustody[keyof typeof PregenerateAccountResponseCustody];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const PregenerateAccountResponseCustody = {\n Developer: 'Developer',\n User: 'User',\n} as const;\n\nexport interface PregenerateAccountResponse {\n id: string;\n user: string;\n accountType: string;\n address: string;\n ownerAddress?: string;\n chainType: string;\n chainId?: number;\n createdAt: number;\n updatedAt: number;\n smartAccount?: SmartAccountData;\n recoveryMethod?: string;\n recoveryMethodDetails?: RecoveryMethodDetails;\n /** Indicates key custody: \"Developer\" for server-managed keys (WALLTEE), \"User\" for user-managed keys (DB). */\n custody: PregenerateAccountResponseCustody;\n /** The recovery share for the user's embedded signer.\nThis should be stored securely and provided to the user for account recovery. */\n recoveryShare: string;\n}\n\n/**\n * Enum of the supporting third party auth providers.\n */\nexport type ThirdPartyOAuthProvider = typeof ThirdPartyOAuthProvider[keyof typeof ThirdPartyOAuthProvider];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const ThirdPartyOAuthProvider = {\n accelbyte: 'accelbyte',\n firebase: 'firebase',\n lootlocker: 'lootlocker',\n playfab: 'playfab',\n supabase: 'supabase',\n custom: 'custom',\n oidc: 'oidc',\n 'better-auth': 'better-auth',\n} as const;\n\n/**\n * The type of account to pregenerate. \"Externally Owned Account\", \"Smart Account\" or \"Delegated Account\".\nDefaults to \"Smart Account\".\n */\nexport type PregenerateUserRequestV2AccountType = typeof PregenerateUserRequestV2AccountType[keyof typeof PregenerateUserRequestV2AccountType];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const PregenerateUserRequestV2AccountType = {\n Externally_Owned_Account: 'Externally Owned Account',\n Smart_Account: 'Smart Account',\n Delegated_Account: 'Delegated Account',\n} as const;\n\n/**\n * The chain type. \"EVM\" or \"SVM\". Defaults to \"EVM\".\n */\nexport type PregenerateUserRequestV2ChainType = typeof PregenerateUserRequestV2ChainType[keyof typeof PregenerateUserRequestV2ChainType];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const PregenerateUserRequestV2ChainType = {\n EVM: 'EVM',\n SVM: 'SVM',\n} as const;\n\nexport interface PregenerateUserRequestV2 {\n /** The email address of the user to pregenerate.\nRequired if thirdPartyUserId is not provided. */\n email?: string;\n /** The third-party user ID from an external auth provider (Firebase, Supabase, etc.).\nRequired if email is not provided. */\n thirdPartyUserId?: string;\n /** The third-party auth provider. Required when thirdPartyUserId is provided. */\n thirdPartyProvider?: ThirdPartyOAuthProvider;\n /** The type of account to pregenerate. \"Externally Owned Account\", \"Smart Account\" or \"Delegated Account\".\nDefaults to \"Smart Account\". */\n accountType?: PregenerateUserRequestV2AccountType;\n /** The chain type. \"EVM\" or \"SVM\". Defaults to \"EVM\". */\n chainType?: PregenerateUserRequestV2ChainType;\n /** The chain ID. Required for Smart Account and Delegated Account types.\nMust be a [supported chain](/development/chains). */\n chainId?: number;\n /** The implementation type for Smart Account or Delegated Account (e.g. Calibur, UpgradeableV6).\nRequired for Smart Account and Delegated Account types. */\n implementationType?: string;\n}\n\nexport interface RecoverV2Response {\n id: string;\n account: string;\n signerAddress: string;\n signer: string;\n share: string;\n isPrimary: boolean;\n createdAt: string;\n user: string;\n}\n\nexport interface RecoverV2EmbeddedRequest {\n account: string;\n}\n\nexport interface RegisterEmbeddedV2Request {\n account: string;\n share: string;\n}\n\n/**\n * The type of smart account that will be created. \"Externally Owned Account\", \"Smart Account\" or \"Delegated Account\".\n */\nexport type CreateEmbeddedRequestAccountType = typeof CreateEmbeddedRequestAccountType[keyof typeof CreateEmbeddedRequestAccountType];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const CreateEmbeddedRequestAccountType = {\n Externally_Owned_Account: 'Externally Owned Account',\n Smart_Account: 'Smart Account',\n Delegated_Account: 'Delegated Account',\n} as const;\n\n/**\n * The chain type. \"EVM\" or \"SVM\".\n */\nexport type CreateEmbeddedRequestChainType = typeof CreateEmbeddedRequestChainType[keyof typeof CreateEmbeddedRequestChainType];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const CreateEmbeddedRequestChainType = {\n EVM: 'EVM',\n SVM: 'SVM',\n} as const;\n\nexport interface CreateEmbeddedRequest {\n /** The type of smart account that will be created. \"Externally Owned Account\", \"Smart Account\" or \"Delegated Account\". */\n accountType: CreateEmbeddedRequestAccountType;\n /** The chain type. \"EVM\" or \"SVM\". */\n chainType: CreateEmbeddedRequestChainType;\n /** The wallet address. For EOA: the EOA address. For Smart Account: the owner address (EOA will be created with this address). For Delegated Account: the address for both EOA and Delegated Account. */\n address: string;\n /** The chain ID. Must be a [supported chain](/development/chains). Required for Smart Account and Delegated Account types. */\n chainId?: number;\n /** Specifies the share repositories. Required for creating embedded accounts. */\n share?: string;\n signerUuid?: string;\n /** The type of smart account that will be created (e.g. UpgradeableV6, UpgradeableV5, Calibur, Simple). Defaults to UpgradeableV6 in mainnets. Must support EIP-7702 for Delegated Accounts. */\n implementationType?: string;\n}\n\n/**\n * The type of object.\n */\nexport type BackendWalletResponseObject = typeof BackendWalletResponseObject[keyof typeof BackendWalletResponseObject];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const BackendWalletResponseObject = {\n backendWallet: 'backendWallet',\n} as const;\n\n/**\n * The chain type the wallet is associated with.\n */\nexport type BackendWalletResponseChainType = typeof BackendWalletResponseChainType[keyof typeof BackendWalletResponseChainType];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const BackendWalletResponseChainType = {\n EVM: 'EVM',\n SVM: 'SVM',\n} as const;\n\n/**\n * Key custody: always \"Developer\" for backend wallets (server-managed keys in TEE).\n */\nexport type BackendWalletResponseCustody = typeof BackendWalletResponseCustody[keyof typeof BackendWalletResponseCustody];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const BackendWalletResponseCustody = {\n Developer: 'Developer',\n} as const;\n\n/**\n * Backend wallet details response.\n */\nexport interface BackendWalletResponse {\n /**\n * The type of object.\n */\n object: BackendWalletResponseObject;\n /** The wallet ID (starts with `acc_`). */\n id: string;\n /** The wallet address. */\n address: string;\n /** The chain type the wallet is associated with. */\n chainType: BackendWalletResponseChainType;\n /** Optional name for the wallet. */\n name?: string;\n /**\n * Key custody: always \"Developer\" for backend wallets (server-managed keys in TEE).\n */\n custody: BackendWalletResponseCustody;\n /** Creation timestamp (Unix epoch seconds). */\n createdAt: number;\n /** Last updated timestamp (Unix epoch seconds). */\n updatedAt: number;\n}\n\n/**\n * The type of object.\n */\nexport type BackendWalletListResponseObject = typeof BackendWalletListResponseObject[keyof typeof BackendWalletListResponseObject];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const BackendWalletListResponseObject = {\n list: 'list',\n} as const;\n\n/**\n * List of backend wallets response.\n */\nexport interface BackendWalletListResponse {\n /**\n * The type of object.\n */\n object: BackendWalletListResponseObject;\n /** API endpoint URL. */\n url: string;\n /** List of backend wallets. */\n data: BackendWalletResponse[];\n /** Starting index. */\n start: number;\n /** Ending index. */\n end: number;\n /** Total number of wallets. */\n total: number;\n}\n\n/**\n * Filter by chain type.\n */\nexport type BackendWalletListQueriesChainType = typeof BackendWalletListQueriesChainType[keyof typeof BackendWalletListQueriesChainType];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const BackendWalletListQueriesChainType = {\n EVM: 'EVM',\n SVM: 'SVM',\n} as const;\n\n/**\n * Query parameters for listing backend wallets.\n */\nexport interface BackendWalletListQueries {\n /** Number of wallets to return (default: 10, max: 100). */\n limit?: number;\n /** Number of wallets to skip (for pagination). */\n skip?: number;\n /** Filter by chain type. */\n chainType?: BackendWalletListQueriesChainType;\n /** Filter by wallet address. */\n address?: string;\n /** Filter by wallet name. */\n name?: string;\n /** Filter by associated wallet ID (starts with `pla_`). */\n wallet?: string;\n}\n\n/**\n * The type of object.\n */\nexport type CreateBackendWalletResponseObject = typeof CreateBackendWalletResponseObject[keyof typeof CreateBackendWalletResponseObject];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const CreateBackendWalletResponseObject = {\n account: 'account',\n} as const;\n\n/**\n * The chain type the wallet is associated with.\n */\nexport type CreateBackendWalletResponseChainType = typeof CreateBackendWalletResponseChainType[keyof typeof CreateBackendWalletResponseChainType];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const CreateBackendWalletResponseChainType = {\n EVM: 'EVM',\n SVM: 'SVM',\n} as const;\n\n/**\n * Response from creating a new backend wallet account.\n */\nexport interface CreateBackendWalletResponse {\n /**\n * The type of object.\n */\n object: CreateBackendWalletResponseObject;\n /** The created account ID (starts with `acc_`). */\n id: string;\n /** The wallet address generated for this account. */\n address: string;\n /** The chain type the wallet is associated with. */\n chainType: CreateBackendWalletResponseChainType;\n /** Creation timestamp (Unix epoch seconds). */\n createdAt: number;\n}\n\n/**\n * The chain type for the new wallet.\n */\nexport type CreateBackendWalletRequestChainType = typeof CreateBackendWalletRequestChainType[keyof typeof CreateBackendWalletRequestChainType];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const CreateBackendWalletRequestChainType = {\n EVM: 'EVM',\n SVM: 'SVM',\n} as const;\n\n/**\n * Request to create a new backend wallet account.\n */\nexport interface CreateBackendWalletRequest {\n /** The chain type for the new wallet. */\n chainType: CreateBackendWalletRequestChainType;\n /** The wallet ID to associate with this wallet (starts with `pla_`). */\n wallet?: string;\n /** Optional name for the wallet. */\n name?: string;\n}\n\n/**\n * The type of object.\n */\nexport type DeleteBackendWalletResponseObject = typeof DeleteBackendWalletResponseObject[keyof typeof DeleteBackendWalletResponseObject];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const DeleteBackendWalletResponseObject = {\n backendWallet: 'backendWallet',\n} as const;\n\n/**\n * Response from deleting a backend wallet.\n */\nexport interface DeleteBackendWalletResponse {\n /**\n * The type of object.\n */\n object: DeleteBackendWalletResponseObject;\n /** The deleted wallet ID. */\n id: string;\n /** Whether the wallet was deleted. */\n deleted: boolean;\n}\n\n/**\n * The type of object.\n */\nexport type SignResponseObject = typeof SignResponseObject[keyof typeof SignResponseObject];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const SignResponseObject = {\n signature: 'signature',\n} as const;\n\n/**\n * Response from signing data via backend wallet.\n */\nexport interface SignResponse {\n /**\n * The type of object.\n */\n object: SignResponseObject;\n /** The account ID that signed the data (starts with `acc_`). */\n account: string;\n /** The signature bytes (hex-encoded). */\n signature: string;\n}\n\n/**\n * Request to sign data via backend wallet.\n */\nexport interface SignRequest {\n /** The data to sign (hex-encoded transaction data or message hash). */\n data: string;\n}\n\n/**\n * The type of object.\n */\nexport type ExportPrivateKeyResponseObject = typeof ExportPrivateKeyResponseObject[keyof typeof ExportPrivateKeyResponseObject];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const ExportPrivateKeyResponseObject = {\n exportedKey: 'exportedKey',\n} as const;\n\n/**\n * Response from exporting a private key with E2E encryption.\n */\nexport interface ExportPrivateKeyResponse {\n /**\n * The type of object.\n */\n object: ExportPrivateKeyResponseObject;\n /** The private key encrypted with RSA-OAEP SHA-256 using your ephemeral public key (base64-encoded).\nDecrypt using your ephemeral RSA private key. */\n encryptedPrivateKey: string;\n}\n\n/**\n * Request to export private key with E2E encryption.\n */\nexport interface ExportPrivateKeyRequest {\n /** Client's ephemeral RSA-4096 public key for end-to-end encryption (base64 SPKI DER format).\nThe backend wallet will encrypt the private key using RSA-OAEP SHA-256. */\n encryptionKey: string;\n}\n\n/**\n * The type of object.\n */\nexport type ImportPrivateKeyResponseObject = typeof ImportPrivateKeyResponseObject[keyof typeof ImportPrivateKeyResponseObject];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const ImportPrivateKeyResponseObject = {\n account: 'account',\n} as const;\n\n/**\n * The chain type the wallet is associated with.\n */\nexport type ImportPrivateKeyResponseChainType = typeof ImportPrivateKeyResponseChainType[keyof typeof ImportPrivateKeyResponseChainType];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const ImportPrivateKeyResponseChainType = {\n EVM: 'EVM',\n SVM: 'SVM',\n} as const;\n\n/**\n * Response from importing a private key with E2E encryption.\n */\nexport interface ImportPrivateKeyResponse {\n /**\n * The type of object.\n */\n object: ImportPrivateKeyResponseObject;\n /** The created account ID (starts with `acc_`). */\n id: string;\n /** The wallet address derived from the imported private key. */\n address: string;\n /** The chain type the wallet is associated with. */\n chainType?: ImportPrivateKeyResponseChainType;\n /** Creation timestamp (Unix epoch seconds). */\n createdAt: number;\n}\n\n/**\n * The chain type for the imported wallet.\n */\nexport type ImportPrivateKeyRequestChainType = typeof ImportPrivateKeyRequestChainType[keyof typeof ImportPrivateKeyRequestChainType];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const ImportPrivateKeyRequestChainType = {\n EVM: 'EVM',\n SVM: 'SVM',\n} as const;\n\n/**\n * Request to import private key with E2E encryption.\n */\nexport interface ImportPrivateKeyRequest {\n /** The private key encrypted with RSA-OAEP SHA-256 using the server's static import public key.\nObtain the server's import public key out-of-band (e.g., from SDK or documentation). */\n encryptedPrivateKey: string;\n /** The chain type for the imported wallet. */\n chainType?: ImportPrivateKeyRequestChainType;\n /** The wallet ID to associate with this wallet (starts with `pla_`). */\n wallet?: string;\n /** Optional name for the imported wallet. */\n name?: string;\n}\n\n/**\n * The type of object.\n */\nexport type RegisterWalletSecretResponseObject = typeof RegisterWalletSecretResponseObject[keyof typeof RegisterWalletSecretResponseObject];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const RegisterWalletSecretResponseObject = {\n walletSecret: 'walletSecret',\n} as const;\n\n/**\n * Response from registering a new wallet secret.\n */\nexport interface RegisterWalletSecretResponse {\n /**\n * The type of object.\n */\n object: RegisterWalletSecretResponseObject;\n /** The key ID for the registered secret. */\n keyId: string;\n /** Timestamp when the secret was registered (Unix epoch seconds). */\n registeredAt: number;\n}\n\n/**\n * Request to register a new wallet secret (authentication key).\n */\nexport interface RegisterWalletSecretRequest {\n /** ECDSA P-256 public key for wallet authentication (PEM or raw hex format).\nThis will be used to verify X-Wallet-Auth JWT signatures. */\n publicKey: string;\n /** Key identifier for the secret.\nUsed to identify this key in X-Wallet-Auth JWT headers. */\n keyId?: string;\n}\n\n/**\n * The type of object.\n */\nexport type RevokeWalletSecretResponseObject = typeof RevokeWalletSecretResponseObject[keyof typeof RevokeWalletSecretResponseObject];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const RevokeWalletSecretResponseObject = {\n walletSecretRevocation: 'walletSecretRevocation',\n} as const;\n\n/**\n * Response from revoking a wallet secret.\n */\nexport interface RevokeWalletSecretResponse {\n /**\n * The type of object.\n */\n object: RevokeWalletSecretResponseObject;\n /** The key ID of the revoked secret. */\n keyId: string;\n /** Whether the secret was successfully revoked. */\n revoked: boolean;\n /** Timestamp when the secret was revoked (Unix epoch seconds). */\n revokedAt: number;\n}\n\n/**\n * Request to revoke a wallet secret (authentication key).\n */\nexport interface RevokeWalletSecretRequest {\n /** Key identifier of the secret to revoke. */\n keyId: string;\n}\n\n/**\n * The type of object.\n */\nexport type RotateWalletSecretResponseObject = typeof RotateWalletSecretResponseObject[keyof typeof RotateWalletSecretResponseObject];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const RotateWalletSecretResponseObject = {\n walletSecretRotation: 'walletSecretRotation',\n} as const;\n\n/**\n * Response from rotating a wallet secret.\n */\nexport interface RotateWalletSecretResponse {\n /**\n * The type of object.\n */\n object: RotateWalletSecretResponseObject;\n /** Whether the rotation was successful. */\n success: boolean;\n /** Timestamp when the rotation occurred (Unix epoch seconds). */\n rotatedAt: number;\n}\n\n/**\n * Request to rotate wallet secret (authentication key).\n */\nexport interface RotateWalletSecretRequest {\n /** New ECDSA P-256 public key for wallet authentication.\nThis will replace the current wallet secret used for X-Wallet-Auth JWT signing. */\n newSecretPublicKey: string;\n /** Key identifier for the new secret.\nUsed to identify this key in X-Wallet-Auth JWT headers. */\n newKeyId?: string;\n}\n\n/**\n * Indicates key custody: \"Developer\" for server-managed keys (WALLTEE), \"User\" for user-managed keys (DB).\n */\nexport type AccountV2ResponseCustody = typeof AccountV2ResponseCustody[keyof typeof AccountV2ResponseCustody];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const AccountV2ResponseCustody = {\n Developer: 'Developer',\n User: 'User',\n} as const;\n\nexport interface AccountV2Response {\n id: string;\n user: string;\n accountType: string;\n address: string;\n ownerAddress?: string;\n chainType: string;\n chainId?: number;\n createdAt: number;\n updatedAt: number;\n smartAccount?: SmartAccountData;\n recoveryMethod?: string;\n recoveryMethodDetails?: RecoveryMethodDetails;\n /** Indicates key custody: \"Developer\" for server-managed keys (WALLTEE), \"User\" for user-managed keys (DB). */\n custody: AccountV2ResponseCustody;\n}\n\nexport interface BaseEntityListResponseAccountV2Response {\n object: ResponseTypeLIST;\n url: string;\n data: AccountV2Response[];\n start: number;\n end: number;\n total: number;\n}\n\nexport type AccountListV2Response = BaseEntityListResponseAccountV2Response;\n\n/**\n * The chain type. Must be either \"EVM\" or \"SVM\".\n */\nexport type AccountListQueriesV2ChainType = typeof AccountListQueriesV2ChainType[keyof typeof AccountListQueriesV2ChainType];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const AccountListQueriesV2ChainType = {\n EVM: 'EVM',\n SVM: 'SVM',\n} as const;\n\n/**\n * Specifies the type of account. Must be either \"Smart Account\" or \"Externally Owned Account\".\n */\nexport type AccountListQueriesV2AccountType = typeof AccountListQueriesV2AccountType[keyof typeof AccountListQueriesV2AccountType];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const AccountListQueriesV2AccountType = {\n Externally_Owned_Account: 'Externally Owned Account',\n Smart_Account: 'Smart Account',\n Delegated_Account: 'Delegated Account',\n} as const;\n\n/**\n * Specifies the key custody of the account. Must be either \"Developer\" or \"User\".\n */\nexport type AccountListQueriesV2Custody = typeof AccountListQueriesV2Custody[keyof typeof AccountListQueriesV2Custody];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const AccountListQueriesV2Custody = {\n Developer: 'Developer',\n User: 'User',\n} as const;\n\nexport interface AccountListQueriesV2 {\n /**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\n limit?: number;\n /**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\n skip?: number;\n /** Specifies the order in which to sort the results. */\n order?: PrismaSortOrder;\n /** The chain ID. Must be a [supported chain](/development/chains). */\n chainId?: number;\n /** Specifies the unique user ID (starts with pla_) */\n user?: string;\n /** The chain type. Must be either \"EVM\" or \"SVM\". */\n chainType?: AccountListQueriesV2ChainType;\n /** Specifies the type of account. Must be either \"Smart Account\" or \"Externally Owned Account\". */\n accountType?: AccountListQueriesV2AccountType;\n /** Specifies the key custody of the account. Must be either \"Developer\" or \"User\". */\n custody?: AccountListQueriesV2Custody;\n /** Specifies the account address */\n address?: string;\n}\n\nexport interface SignerIdResponse {\n id: string;\n}\n\nexport interface SwitchChainQueriesV2 {\n /** The account ID (starts with acc_) */\n account: string;\n /** The target chain ID. Must be a [supported chain](/development/chains). */\n chainId: number;\n}\n\n/**\n * The type of smart account that will be created. \"Externally Owned Account\", \"Smart Account\" or \"Delegated Account\".\n */\nexport type CreateAccountRequestV2AccountType = typeof CreateAccountRequestV2AccountType[keyof typeof CreateAccountRequestV2AccountType];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const CreateAccountRequestV2AccountType = {\n Externally_Owned_Account: 'Externally Owned Account',\n Smart_Account: 'Smart Account',\n Delegated_Account: 'Delegated Account',\n} as const;\n\n/**\n * The chain type. \"EVM\" or \"SVM\".\n */\nexport type CreateAccountRequestV2ChainType = typeof CreateAccountRequestV2ChainType[keyof typeof CreateAccountRequestV2ChainType];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const CreateAccountRequestV2ChainType = {\n EVM: 'EVM',\n SVM: 'SVM',\n} as const;\n\nexport interface CreateAccountRequestV2 {\n /** The type of smart account that will be created. \"Externally Owned Account\", \"Smart Account\" or \"Delegated Account\". */\n accountType: CreateAccountRequestV2AccountType;\n /** The chain type. \"EVM\" or \"SVM\". */\n chainType: CreateAccountRequestV2ChainType;\n address?: string;\n /** The type of smart account that will be created (e.g. UpgradeableV6, UpgradeableV5, Calibur). Defaults to UpgradeableV6 in mainnets. */\n implementationType?: string;\n /** The chain ID. Must be a [supported chain](/development/chains). */\n chainId?: number;\n /** ID of the user this account belongs to (starts with `pla_`). If none is provided, a new user will be created. */\n user: string;\n /** ID of the account (starts with `acc_`) to be linked with. Required for accountType \"Smart Account\". */\n account?: string;\n}\n\nexport interface DeleteAccountResponse {\n id: string;\n object: EntityTypeACCOUNT;\n deleted: boolean;\n}\n\nexport type UserProjectRole = typeof UserProjectRole[keyof typeof UserProjectRole];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const UserProjectRole = {\n OWNER: 'OWNER',\n ADMIN: 'ADMIN',\n MEMBER: 'MEMBER',\n} as const;\n\nexport type EntityTypeUSER = typeof EntityTypeUSER[keyof typeof EntityTypeUSER];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const EntityTypeUSER = {\n user: 'user',\n} as const;\n\nexport interface UserProjectResponse {\n id: string;\n object: EntityTypeUSER;\n createdAt: number;\n updatedAt: number;\n firstName: string;\n lastName: string;\n role: UserProjectRole;\n email: string;\n}\n\nexport interface UserProjectListResponse {\n object: ResponseTypeLIST;\n url: string;\n data: UserProjectResponse[];\n start: number;\n end: number;\n total: number;\n}\n\nexport type UserProjectRoleADMIN = typeof UserProjectRoleADMIN[keyof typeof UserProjectRoleADMIN];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const UserProjectRoleADMIN = {\n ADMIN: 'ADMIN',\n} as const;\n\nexport type UserProjectRoleMEMBER = typeof UserProjectRoleMEMBER[keyof typeof UserProjectRoleMEMBER];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const UserProjectRoleMEMBER = {\n MEMBER: 'MEMBER',\n} as const;\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const UserProjectCreateRequestRole = {...UserProjectRoleADMIN,...UserProjectRoleMEMBER,} as const\nexport interface UserProjectCreateRequest {\n /** The role of the user. */\n role?: typeof UserProjectCreateRequestRole[keyof typeof UserProjectCreateRequestRole] ;\n /** The email of the user to add. */\n email: string;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const UserProjectUpdateRequestRole = {...UserProjectRoleMEMBER,...UserProjectRoleADMIN,} as const\nexport interface UserProjectUpdateRequest {\n /** The role of the user. */\n role: typeof UserProjectUpdateRequestRole[keyof typeof UserProjectUpdateRequestRole] ;\n}\n\nexport interface UserProjectDeleteResponse {\n id: string;\n object: EntityTypeUSER;\n deleted: boolean;\n}\n\nexport interface ApiKeyResponse {\n id: number;\n createdAt: number;\n token: string;\n name: string;\n livemode: boolean;\n}\n\nexport interface WebhookResponse {\n /** @nullable */\n webhook: string | null;\n livemode: boolean;\n}\n\nexport type EntityTypePROJECT = typeof EntityTypePROJECT[keyof typeof EntityTypePROJECT];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const EntityTypePROJECT = {\n project: 'project',\n} as const;\n\nexport interface ChildProjectResponse {\n id: string;\n object: EntityTypePROJECT;\n createdAt: number;\n name: string;\n}\n\nexport interface ChildProjectListResponse {\n object: ResponseTypeLIST;\n url: string;\n data: ChildProjectResponse[];\n start: number;\n end: number;\n total: number;\n}\n\nexport interface ProjectResponse {\n id: string;\n object: EntityTypePROJECT;\n createdAt: number;\n updatedAt: number;\n name: string;\n apikeys?: ApiKeyResponse[];\n webhook?: WebhookResponse[];\n parentProject?: string;\n childProjects?: ChildProjectListResponse;\n isV2: boolean;\n}\n\nexport interface ProjectListResponse {\n object: ResponseTypeLIST;\n url: string;\n data: ProjectResponse[];\n start: number;\n end: number;\n total: number;\n}\n\nexport interface TransactionStat {\n timestamp: string;\n total: number;\n successful: number;\n gasUsed: string;\n}\n\nexport interface Stat {\n timestamp: string;\n total: number;\n}\n\nexport type DeviceStat = Stat;\n\nexport interface ProjectStatsResponse {\n transactionIntents: TransactionStat[];\n devices: Stat[];\n}\n\nexport type ProjectStatsRequestTimeFrame = typeof ProjectStatsRequestTimeFrame[keyof typeof ProjectStatsRequestTimeFrame];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const ProjectStatsRequestTimeFrame = {\n day: 'day',\n week: 'week',\n month: 'month',\n all: 'all',\n} as const;\n\nexport interface ProjectStatsRequest {\n timeFrame: ProjectStatsRequestTimeFrame;\n}\n\nexport type PlanChangeType = typeof PlanChangeType[keyof typeof PlanChangeType];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const PlanChangeType = {\n upgrade: 'upgrade',\n downgrade: 'downgrade',\n none: 'none',\n} as const;\n\nexport interface Plan {\n id: string;\n name: string;\n price: number;\n is_current: boolean;\n change_type: PlanChangeType;\n legacy?: boolean;\n}\n\nexport interface PlansResponse {\n plans: Plan[];\n}\n\nexport type BillingSubscriptionResponsePlan = {\n price: number;\n name: string;\n id: string;\n};\n\nexport interface BillingSubscriptionResponse {\n currentPeriodEnd?: string;\n currentPeriodStart?: string;\n canceledAt?: string;\n plan: BillingSubscriptionResponsePlan;\n}\n\nexport type PrivateKeyPolicy = typeof PrivateKeyPolicy[keyof typeof PrivateKeyPolicy];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const PrivateKeyPolicy = {\n INDIVIDUAL: 'INDIVIDUAL',\n PROJECT: 'PROJECT',\n} as const;\n\nexport interface CreateProjectRequest {\n /**\n * Name of the project.\n * @minLength 1\n * @maxLength 256\n */\n name: string;\n /** The private key policyfor the project. */\n pkPolicy?: PrivateKeyPolicy;\n}\n\nexport interface UpdateProjectRequest {\n /**\n * Name of the project.\n * @minLength 1\n * @maxLength 256\n */\n name: string;\n}\n\nexport interface AllowedOriginsResponse {\n allowedOrigins: string[];\n}\n\nexport interface AllowedOriginsRequest {\n allowedOrigins: string[];\n}\n\nexport type EntityTypeSMTPCONFIG = typeof EntityTypeSMTPCONFIG[keyof typeof EntityTypeSMTPCONFIG];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const EntityTypeSMTPCONFIG = {\n smtpConfig: 'smtpConfig',\n} as const;\n\nexport interface SMTPConfigResponse {\n user: string;\n pass: string;\n host: string;\n port: number;\n from: string;\n useSSL: boolean;\n object: EntityTypeSMTPCONFIG;\n}\n\nexport type CreateSMTPConfigResponse = SMTPConfigResponse;\n\nexport interface UpsertSMTPConfigRequest {\n /** Specifies the user name */\n user?: string;\n /** Specifies the password */\n pass?: string;\n /** Specifies the host */\n host?: string;\n /** Specifies the from */\n from?: string;\n /** Specifies the port */\n port?: number;\n /** Specifies the use SSL */\n useSSL?: boolean;\n}\n\nexport type GetSMTPConfigResponse = SMTPConfigResponse;\n\nexport interface DeleteSMTPConfigResponse {\n deleted: boolean;\n object: EntityTypeSMTPCONFIG;\n}\n\nexport type EmailTypeResponse = typeof EmailTypeResponse[keyof typeof EmailTypeResponse];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const EmailTypeResponse = {\n emailVerification: 'emailVerification',\n passwordReset: 'passwordReset',\n} as const;\n\nexport type EntityTypeEMAILSAMPLE = typeof EntityTypeEMAILSAMPLE[keyof typeof EntityTypeEMAILSAMPLE];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const EntityTypeEMAILSAMPLE = {\n emailSample: 'emailSample',\n} as const;\n\nexport interface EmailSampleResponse {\n id: string;\n object: EntityTypeEMAILSAMPLE;\n createdAt: number;\n name: string;\n subject: string;\n body: string;\n type: EmailTypeResponse;\n}\n\nexport type CreateEmailSampleResponse = EmailSampleResponse;\n\nexport type EmailTypeRequest = typeof EmailTypeRequest[keyof typeof EmailTypeRequest];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const EmailTypeRequest = {\n emailVerification: 'emailVerification',\n passwordReset: 'passwordReset',\n} as const;\n\nexport interface CreateEmailSampleRequest {\n /** Specifies the name */\n name: string;\n /** Specifies the subject */\n subject: string;\n /** Specifies the body */\n body: string;\n /** Specifies the type */\n type: EmailTypeRequest;\n}\n\nexport type GetEmailSampleResponse = EmailSampleResponse;\n\nexport interface BaseEntityListResponseEmailSampleResponse {\n object: ResponseTypeLIST;\n url: string;\n data: EmailSampleResponse[];\n start: number;\n end: number;\n total: number;\n}\n\nexport type EmailSampleListResponse = BaseEntityListResponseEmailSampleResponse;\n\nexport interface EmailSampleDeleteResponse {\n deleted: boolean;\n id: string;\n object: EntityTypeEMAILSAMPLE;\n}\n\nexport type UpdateEmailSampleResponse = EmailSampleResponse;\n\nexport interface UpdateEmailSampleRequest {\n /** Specifies the name */\n name?: string;\n /** Specifies the subject */\n subject?: string;\n /** Specifies the body */\n body?: string;\n /** Specifies the type */\n type?: EmailTypeRequest;\n}\n\nexport interface EcosystemMetadata {[key: string]: string | number}\n\nexport interface EcosystemConfigurationResponse {\n /** Subdomain of the ecosystem. */\n customDomain: string;\n /** Primary color of the ecosystem. */\n primaryColor: string;\n /** Primary color foreground of the ecosystem. */\n primaryColorForeground: string;\n /** Radius of the ecosystem. */\n radius: string;\n /** Logo URL of the ecosystem. */\n logoUrl: string;\n /** Whitelisted frontend domains of the ecosystem. */\n ecosystemWalletDomains: string[];\n /** Terms of service URL */\n termsOfServiceUrl?: string;\n /** Privacy policy URL */\n privacyPolicyUrl?: string;\n /** Favicon URL */\n faviconUrl?: string;\n /** Examples of the ecosystem. */\n dashboardExamples?: EcosystemMetadata[];\n /** SDKs of the ecosystem. */\n dashboardSDKs?: EcosystemMetadata[];\n /** Support email of the ecosystem. */\n supportEmail?: string;\n /** Documentation URL of the ecosystem. */\n documentationUrl?: string;\n}\n\nexport interface CreateEcosystemConfigurationRequest {\n /** Custom domain of the ecosystem. */\n customDomain: string;\n /** Primary color of the ecosystem. */\n primaryColor: string;\n /** Primary color foreground of the ecosystem. */\n primaryColorForeground: string;\n /** Radius of the ecosystem. */\n radius: string;\n /** Logo URL of the ecosystem. */\n logoUrl: string;\n /** URLs where the ecosystem wallet is hosted. */\n ecosystemWalletDomains?: string[];\n /** Terms of service URL */\n termsOfServiceUrl?: string;\n /** Privacy policy URL */\n privacyPolicyUrl?: string;\n /** Favicon URL */\n faviconUrl?: string;\n /** Examples of the ecosystem. */\n dashboardExamples?: EcosystemMetadata[];\n /** SDKs of the ecosystem. */\n dashboardSDKs?: EcosystemMetadata[];\n /** Support email of the ecosystem. */\n supportEmail?: string;\n /** Documentation URL of the ecosystem. */\n documentationUrl?: string;\n}\n\nexport interface MyEcosystemResponse {\n publishableKey: string;\n name: string;\n configuration?: EcosystemConfigurationResponse;\n}\n\nexport type ApiKeyType = typeof ApiKeyType[keyof typeof ApiKeyType];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const ApiKeyType = {\n pk: 'pk',\n sk: 'sk',\n pk_shield: 'pk_shield',\n sk_shield: 'sk_shield',\n} as const;\n\nexport interface CreateProjectApiKeyRequest {\n /** The type of the API key. */\n type: ApiKeyType;\n}\n\nexport interface UpdateProjectApiKeyRequest {\n /** The type of the API key. */\n type: ApiKeyType;\n /** The API key to update. */\n uuid: string;\n /** Whether key to use to sign webhooks. */\n use_for_webhooks?: boolean;\n}\n\nexport interface AuthorizedOriginsResponse {\n origins: string[];\n}\n\nexport interface UpdateAuthorizedOriginsRequest {\n origins: string[];\n}\n\nexport type AuthorizedNetworksResponseAuthorizedNetworksItem = {\n network: string;\n name: string;\n};\n\nexport interface AuthorizedNetworksResponse {\n authorizedNetworks: AuthorizedNetworksResponseAuthorizedNetworksItem[];\n}\n\nexport interface AuthorizedNetwork {\n name: string;\n network: string;\n}\n\nexport interface UpdateAuthorizedNetworksRequest {\n authorizedNetworks: AuthorizedNetwork[];\n}\n\nexport type AuthorizedAppsResponseAuthorizedAppsItem = {\n appUrlScheme?: string;\n appIdentifier: string;\n name: string;\n};\n\nexport interface AuthorizedAppsResponse {\n authorizedApps: AuthorizedAppsResponseAuthorizedAppsItem[];\n}\n\nexport interface AuthorizedApp {\n name: string;\n appIdentifier: string;\n appUrlScheme?: string;\n}\n\nexport interface UpdateAuthorizedAppsRequest {\n authorizedApps: AuthorizedApp[];\n}\n\nexport type AuthProviderResponse = typeof AuthProviderResponse[keyof typeof AuthProviderResponse];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const AuthProviderResponse = {\n email: 'email',\n wallet: 'wallet',\n google: 'google',\n apple: 'apple',\n twitter: 'twitter',\n discord: 'discord',\n epic_games: 'epic_games',\n facebook: 'facebook',\n accelbyte: 'accelbyte',\n firebase: 'firebase',\n lootlocker: 'lootlocker',\n playfab: 'playfab',\n supabase: 'supabase',\n custom: 'custom',\n oidc: 'oidc',\n} as const;\n\nexport interface LinkedAccountResponse {\n provider: AuthProviderResponse;\n email?: string;\n externalUserId?: string;\n connectorType?: string;\n walletClientType?: string;\n disabled: boolean;\n verified?: boolean;\n updatedAt?: number;\n address?: string;\n metadata?: PlayerMetadata;\n}\n\n/**\n * From T, pick a set of properties whose keys are in the union K\n */\nexport interface PickPlayerResponseId {\n id: string;\n}\n\nexport type AuthPlayerResponsePlayer = PlayerResponse | PickPlayerResponseId;\n\nexport interface AuthPlayerResponse {\n player?: AuthPlayerResponsePlayer;\n id: string;\n object: EntityTypePLAYER;\n createdAt: number;\n linkedAccounts: LinkedAccountResponse[];\n}\n\nexport interface AuthResponse {\n /** Player's identifier. */\n player: AuthPlayerResponse;\n /** JWT access token. */\n token: string;\n /** Refresh token. */\n refreshToken: string;\n}\n\nexport interface RefreshTokenRequest {\n /** Specifies the session refresh token. */\n refreshToken: string;\n /** Specifies whether to force refresh the session. */\n forceRefresh?: boolean;\n}\n\nexport interface LogoutRequest {\n /** Specifies the refresh token. */\n refreshToken: string;\n}\n\nexport interface SIWEInitResponse {\n /** The address of the player. */\n address: string;\n nonce: string;\n expiresAt: number;\n}\n\nexport interface SIWERequest {\n /** The address of the user. */\n address: string;\n}\n\nexport interface SIWEAuthenticateRequest {\n /** Signature of the EIP-712 message with the user's wallet. */\n signature: string;\n /** The EIP-712 message to sign. */\n message: string;\n /** The wallet client of the user */\n walletClientType: string;\n /** The connector type of the user */\n connectorType: string;\n}\n\nexport type Actions = typeof Actions[keyof typeof Actions];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const Actions = {\n verify_email: 'verify_email',\n} as const;\n\nexport interface ActionRequiredResponse {\n action: Actions;\n}\n\nexport interface SignupRequest {\n /** The email address of the player. */\n email: string;\n /** The password of the player. */\n password: string;\n /** The name of the player. */\n name?: string;\n /** The description of the player. */\n description?: string;\n}\n\nexport interface LoginRequest {\n /** The email address of the user. */\n email: string;\n /** The password of the user. */\n password: string;\n}\n\n/**\n * The code verifier.\n */\nexport type CodeChallengeMethod = typeof CodeChallengeMethod[keyof typeof CodeChallengeMethod];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const CodeChallengeMethod = {\n plain: 'plain',\n S256: 'S256',\n} as const;\n\nexport interface CodeChallenge {\n /** The code challenge. */\n codeChallenge: string;\n /** The code verifier. */\n method: CodeChallengeMethod;\n}\n\nexport interface RequestVerifyEmailRequest {\n /** The email address of the user. */\n email: string;\n /** The URL sent to the user by email to reset the password. At the end of the URL, we will add the token in the format `?token=token`. */\n redirectUrl: string;\n /** The Code Challenge if you want to use PKCE. */\n challenge?: CodeChallenge;\n}\n\nexport interface CodeChallengeVerify {\n /** The code verifier. */\n codeVerifier: string;\n}\n\nexport interface VerifyEmailRequest {\n /** The email address of the user. */\n email: string;\n /** Unique value to identify the request. Obtained from the email. */\n token: string;\n /** The Code Challenge to verify the PKCE if you used it in the request. */\n challenge?: CodeChallengeVerify;\n}\n\nexport interface RequestResetPasswordRequest {\n /** The email address of the user. */\n email: string;\n /** The URL sent to the user by email to reset the password. At the end of the URL, we will add the token in the format `?token=token`. */\n redirectUrl: string;\n /** The Code Challenge if you want to use PKCE. */\n challenge?: CodeChallenge;\n}\n\nexport interface ResetPasswordRequest {\n /** The email address of the user. */\n email: string;\n /** The new password of the user. */\n password: string;\n /** Unique value to identify the request. It's used to mitigate CSRF attacks. */\n state?: string;\n /** The Code Challenge to verify the PKCE if you used it in the request. */\n challenge?: CodeChallengeVerify;\n}\n\nexport interface UnlinkEmailRequest {\n /** The email address of the user. */\n email: string;\n}\n\nexport interface LoginOIDCRequest {\n /** The identity token of the user. */\n identityToken: string;\n}\n\nexport interface OAuthResponse {\n url: string;\n key: string;\n}\n\n/**\n * Enum of the supporting OAuth providers.\n */\nexport type OAuthProvider = typeof OAuthProvider[keyof typeof OAuthProvider];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const OAuthProvider = {\n google: 'google',\n twitter: 'twitter',\n facebook: 'facebook',\n discord: 'discord',\n epic_games: 'epic_games',\n line: 'line',\n apple: 'apple',\n} as const;\n\n/**\n * An object of query params\n */\nexport type OAuthInitRequestOptionsQueryParams = {[key: string]: string};\n\nexport type OAuthInitRequestOptions = {\n /** A URL to custom handle the provider callback */\n callbackTo?: string;\n /** An object of query params */\n queryParams?: OAuthInitRequestOptionsQueryParams;\n /** A URL to send the user to after they are confirmed. */\n redirectTo?: string;\n};\n\nexport interface OAuthInitRequest {\n options?: OAuthInitRequestOptions;\n /** Use Pooling for the OAuth flow\n\nThis option is for the flow that requires the user can't be redirected from the authorization page to the application.\nThe client should poll the server to check if the user has authorized the application. */\n usePooling?: boolean;\n /** One of the providers supported by Openfort */\n provider: OAuthProvider;\n}\n\nexport interface ThirdPartyLinkRequest {\n provider: ThirdPartyOAuthProvider;\n token: string;\n tokenType: string;\n}\n\nexport interface LoginWithIdTokenRequest {\n /** OAuth provider */\n provider: OAuthProvider;\n /** Token to be verified */\n token: string;\n}\n\n/**\n * Enum of the supporting OAuth providers.\n */\nexport type TokenType = typeof TokenType[keyof typeof TokenType];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const TokenType = {\n idToken: 'idToken',\n customToken: 'customToken',\n} as const;\n\nexport interface ThirdPartyOAuthRequest {\n /** OAuth provider */\n provider: ThirdPartyOAuthProvider;\n /** Token to be verified */\n token: string;\n tokenType?: TokenType;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const AuthenticateOAuthRequestProvider = {...OAuthProvider,...ThirdPartyOAuthProvider,} as const\nexport interface AuthenticateOAuthRequest {\n /** OAuth provider */\n provider: typeof AuthenticateOAuthRequestProvider[keyof typeof AuthenticateOAuthRequestProvider] ;\n /** Token to be verified */\n token: string;\n /** Type of the token. */\n tokenType: TokenType;\n /** Specifies the fields to expand in the response. */\n expand?: PlayerResponseExpandable[];\n}\n\n/**\n * The request to verify access token\n */\nexport interface UnlinkOAuthRequest {\n /** The provider type being linked */\n provider: OAuthProvider;\n}\n\nexport type BasicAuthProviderEMAIL = typeof BasicAuthProviderEMAIL[keyof typeof BasicAuthProviderEMAIL];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const BasicAuthProviderEMAIL = {\n email: 'email',\n} as const;\n\n/**\n * Enum of the supporting Basic Auth providers.\n */\nexport type BasicAuthProvider = typeof BasicAuthProvider[keyof typeof BasicAuthProvider];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const BasicAuthProvider = {\n email: 'email',\n wallet: 'wallet',\n guest: 'guest',\n web3: 'web3',\n phone: 'phone',\n} as const;\n\n/**\n * Enum of the supporting Auth providers.\n */\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const AuthProvider = {...OAuthProvider,...ThirdPartyOAuthProvider,...BasicAuthProvider,} as const\nexport type AuthProvider = typeof AuthProvider[keyof typeof AuthProvider] ;\n\n/**\n * Password requirements configuration\n */\nexport type EmailAuthConfigPasswordRequirements = {\n /** Require at least one special character (default: false) */\n requireSpecialChar?: boolean;\n /** Require at least one number (default: false) */\n requireNumber?: boolean;\n /** Require at least one lowercase letter (default: false) */\n requireLowercase?: boolean;\n /** Require at least one uppercase letter (default: false) */\n requireUppercase?: boolean;\n /** Minimum password length (default: 6) */\n minLength: number;\n};\n\n/**\n * Email auth configuration\n */\nexport interface EmailAuthConfig {\n /** Enable OAuth provider. */\n enabled: boolean;\n /** Auth provider type */\n provider: BasicAuthProviderEMAIL;\n /** Allow unverified emails: Users will be able to sign in with unverified emails */\n allowUnverified: boolean;\n /** Length of the OTP code (default: 6) */\n otpLength: number;\n /** Password requirements configuration */\n passwordRequirements: EmailAuthConfigPasswordRequirements;\n}\n\nexport type BasicAuthProviderGUEST = typeof BasicAuthProviderGUEST[keyof typeof BasicAuthProviderGUEST];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const BasicAuthProviderGUEST = {\n guest: 'guest',\n} as const;\n\nexport interface GuestAuthConfig {\n /** Enable OAuth provider. */\n enabled: boolean;\n /** Auth provider type */\n provider: BasicAuthProviderGUEST;\n}\n\nexport type BasicAuthProviderWEB3 = typeof BasicAuthProviderWEB3[keyof typeof BasicAuthProviderWEB3];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const BasicAuthProviderWEB3 = {\n web3: 'web3',\n} as const;\n\nexport interface Web3AuthConfig {\n /** Enable OAuth provider. */\n enabled: boolean;\n /** Auth provider type */\n provider: BasicAuthProviderWEB3;\n}\n\nexport type BasicAuthProviderPHONE = typeof BasicAuthProviderPHONE[keyof typeof BasicAuthProviderPHONE];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const BasicAuthProviderPHONE = {\n phone: 'phone',\n} as const;\n\nexport type SmsProviderTWILIO = typeof SmsProviderTWILIO[keyof typeof SmsProviderTWILIO];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const SmsProviderTWILIO = {\n twilio: 'twilio',\n} as const;\n\n/**\n * Twilio SMS provider configuration\n */\nexport interface TwilioSmsProviderConfig {\n provider: SmsProviderTWILIO;\n /** Twilio Account SID */\n accountSid: string;\n /** Twilio Auth Token */\n authToken: string;\n /** Twilio phone number (from) */\n phoneNumber: string;\n}\n\nexport type SmsProviderMESSAGEBIRD = typeof SmsProviderMESSAGEBIRD[keyof typeof SmsProviderMESSAGEBIRD];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const SmsProviderMESSAGEBIRD = {\n messagebird: 'messagebird',\n} as const;\n\n/**\n * MessageBird SMS provider configuration\n */\nexport interface MessageBirdSmsProviderConfig {\n provider: SmsProviderMESSAGEBIRD;\n /** MessageBird Access Key */\n accessKey: string;\n /** Sender name or number */\n originator: string;\n}\n\nexport type SmsProviderTXTLOCAL = typeof SmsProviderTXTLOCAL[keyof typeof SmsProviderTXTLOCAL];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const SmsProviderTXTLOCAL = {\n txtlocal: 'txtlocal',\n} as const;\n\n/**\n * TxtLocal SMS provider configuration\n */\nexport interface TxtLocalSmsProviderConfig {\n provider: SmsProviderTXTLOCAL;\n /** TxtLocal API Key */\n apiKey: string;\n /** Sender name */\n sender: string;\n}\n\nexport type SmsProviderVONAGE = typeof SmsProviderVONAGE[keyof typeof SmsProviderVONAGE];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const SmsProviderVONAGE = {\n vonage: 'vonage',\n} as const;\n\n/**\n * Vonage SMS provider configuration\n */\nexport interface VonageSmsProviderConfig {\n provider: SmsProviderVONAGE;\n /** Vonage API Key */\n apiKey: string;\n /** Vonage API Secret */\n apiSecret: string;\n /** Sender ID or phone number */\n from: string;\n}\n\nexport type SmsProviderSMSAPI = typeof SmsProviderSMSAPI[keyof typeof SmsProviderSMSAPI];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const SmsProviderSMSAPI = {\n sms_api: 'sms_api',\n} as const;\n\n/**\n * SMS API provider configuration\n */\nexport interface SmsApiProviderConfig {\n provider: SmsProviderSMSAPI;\n /** Sender name */\n from: string;\n /** SMSAPI OAuth token */\n token: string;\n}\n\n/**\n * SMS provider configuration\n */\nexport type PhoneAuthConfigSmsProviderConfig = TwilioSmsProviderConfig | MessageBirdSmsProviderConfig | TxtLocalSmsProviderConfig | VonageSmsProviderConfig | SmsApiProviderConfig;\n\n/**\n * Phone auth configuration\n */\nexport interface PhoneAuthConfig {\n /** Enable OAuth provider. */\n enabled: boolean;\n /** Auth provider type */\n provider: BasicAuthProviderPHONE;\n /** SMS provider configuration */\n smsProviderConfig: PhoneAuthConfigSmsProviderConfig;\n /** SMS message template. Use {{ .Code }} to format the OTP code (default: \"Your code is {{ .Code }}\") */\n smsTemplate: string;\n}\n\nexport type ThirdPartyOAuthProviderSUPABASE = typeof ThirdPartyOAuthProviderSUPABASE[keyof typeof ThirdPartyOAuthProviderSUPABASE];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const ThirdPartyOAuthProviderSUPABASE = {\n supabase: 'supabase',\n} as const;\n\n/**\n * Supabase oauth configuration\n */\nexport interface SupabaseAuthConfig {\n /** Enable OAuth provider. */\n enabled: boolean;\n /** OAuth provider type */\n provider: ThirdPartyOAuthProviderSUPABASE;\n /** The unique Supabase URL which is supplied when you create a new project in your project dashboard. */\n url: string;\n /** The unique Supabase Key which is supplied when you create a new project in your project dashboard. */\n key: string;\n}\n\nexport type ThirdPartyOAuthProviderOIDC = typeof ThirdPartyOAuthProviderOIDC[keyof typeof ThirdPartyOAuthProviderOIDC];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const ThirdPartyOAuthProviderOIDC = {\n oidc: 'oidc',\n} as const;\n\nexport interface OIDCAuthConfig {\n /** Enable OAuth provider. */\n enabled: boolean;\n /** OAuth provider type */\n provider: ThirdPartyOAuthProviderOIDC;\n /** PEM encoded public key to verify the JWT token */\n publicVerificationKey?: string;\n /** Audience of the JWT token */\n aud: string;\n /** JWKS URL to fetch the public key */\n jwksUrl?: string;\n}\n\nexport type ThirdPartyOAuthProviderACCELBYTE = typeof ThirdPartyOAuthProviderACCELBYTE[keyof typeof ThirdPartyOAuthProviderACCELBYTE];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const ThirdPartyOAuthProviderACCELBYTE = {\n accelbyte: 'accelbyte',\n} as const;\n\n/**\n * Accelbyte oauth configuration\n */\nexport interface AccelbyteOAuthConfig {\n /** Enable OAuth provider. */\n enabled: boolean;\n /** OAuth provider type */\n provider: ThirdPartyOAuthProviderACCELBYTE;\n /** Base URI of your accelbyte gaming service environment. E.g. https://mygame.dev.gamingservices.accelbyte.io/ */\n baseUrl: string;\n /** Client ID of your accelbyte gaming service environment. */\n clientId: string;\n /** Secret of your confidential IAM client. */\n clientSecret: string;\n}\n\nexport type OAuthProviderGOOGLE = typeof OAuthProviderGOOGLE[keyof typeof OAuthProviderGOOGLE];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const OAuthProviderGOOGLE = {\n google: 'google',\n} as const;\n\n/**\n * Google oauth configuration\n */\nexport interface GoogleOAuthConfig {\n /** Enable OAuth provider. */\n enabled: boolean;\n /** OAuth provider type */\n provider: OAuthProviderGOOGLE;\n /** Google API client ID. */\n clientId: string;\n /** Google API client secret. */\n clientSecret?: string;\n}\n\nexport type OAuthProviderTWITTER = typeof OAuthProviderTWITTER[keyof typeof OAuthProviderTWITTER];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const OAuthProviderTWITTER = {\n twitter: 'twitter',\n} as const;\n\n/**\n * Twitter oauth configuration\n */\nexport interface TwitterOAuthConfig {\n /** Enable OAuth provider. */\n enabled: boolean;\n /** OAuth provider type */\n provider: OAuthProviderTWITTER;\n /** Twitter API consumer key. */\n clientId: string;\n /** Twitter API consumer secret. */\n clientSecret: string;\n}\n\nexport type OAuthProviderFACEBOOK = typeof OAuthProviderFACEBOOK[keyof typeof OAuthProviderFACEBOOK];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const OAuthProviderFACEBOOK = {\n facebook: 'facebook',\n} as const;\n\nexport interface FacebookOAuthConfig {\n /** Enable OAuth provider. */\n enabled: boolean;\n /** OAuth provider type */\n provider: OAuthProviderFACEBOOK;\n /** Facebook API client ID. */\n clientId: string;\n /** Facebook API client secret. */\n clientSecret: string;\n}\n\nexport type OAuthProviderAPPLE = typeof OAuthProviderAPPLE[keyof typeof OAuthProviderAPPLE];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const OAuthProviderAPPLE = {\n apple: 'apple',\n} as const;\n\nexport interface AppleOAuthConfig {\n /** Enable OAuth provider. */\n enabled: boolean;\n /** OAuth provider type */\n provider: OAuthProviderAPPLE;\n /** Apple API client ID (Service ID). */\n clientId: string;\n /** Pre-generated client secret JWT */\n clientSecret?: string;\n}\n\nexport type OAuthProviderLINE = typeof OAuthProviderLINE[keyof typeof OAuthProviderLINE];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const OAuthProviderLINE = {\n line: 'line',\n} as const;\n\nexport interface LineOAuthConfig {\n /** Enable OAuth provider. */\n enabled: boolean;\n /** OAuth provider type */\n provider: OAuthProviderLINE;\n /** Line Channel ID. */\n channelId: string;\n /** Line Channel secret. */\n channelSecret: string;\n}\n\nexport type OAuthProviderDISCORD = typeof OAuthProviderDISCORD[keyof typeof OAuthProviderDISCORD];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const OAuthProviderDISCORD = {\n discord: 'discord',\n} as const;\n\nexport interface DiscordOAuthConfig {\n /** Enable OAuth provider. */\n enabled: boolean;\n /** OAuth provider type */\n provider: OAuthProviderDISCORD;\n /** Discord API client ID. */\n clientId: string;\n /** Discord API client secret. */\n clientSecret: string;\n}\n\nexport type OAuthProviderEPICGAMES = typeof OAuthProviderEPICGAMES[keyof typeof OAuthProviderEPICGAMES];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const OAuthProviderEPICGAMES = {\n epic_games: 'epic_games',\n} as const;\n\nexport interface EpicGamesOAuthConfig {\n /** Enable OAuth provider. */\n enabled: boolean;\n /** OAuth provider type */\n provider: OAuthProviderEPICGAMES;\n /** Epic Games API client ID. */\n clientId: string;\n /** Epic Games API client secret. */\n clientSecret: string;\n}\n\nexport type ThirdPartyOAuthProviderPLAYFAB = typeof ThirdPartyOAuthProviderPLAYFAB[keyof typeof ThirdPartyOAuthProviderPLAYFAB];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const ThirdPartyOAuthProviderPLAYFAB = {\n playfab: 'playfab',\n} as const;\n\n/**\n * PlayFab oauth configuration\n */\nexport interface PlayFabOAuthConfig {\n /** Enable OAuth provider. */\n enabled: boolean;\n /** OAuth provider type */\n provider: ThirdPartyOAuthProviderPLAYFAB;\n /** Title ID of your Play Fab gaming service environment. */\n titleId: string;\n}\n\nexport type ThirdPartyOAuthProviderFIREBASE = typeof ThirdPartyOAuthProviderFIREBASE[keyof typeof ThirdPartyOAuthProviderFIREBASE];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const ThirdPartyOAuthProviderFIREBASE = {\n firebase: 'firebase',\n} as const;\n\n/**\n * Firebase configuration\n */\nexport interface FirebaseOAuthConfig {\n /** Enable OAuth provider. */\n enabled: boolean;\n /** OAuth provider type */\n provider: ThirdPartyOAuthProviderFIREBASE;\n /** Project ID of your Firebase service environment. */\n projectId: string;\n}\n\nexport type ThirdPartyOAuthProviderCUSTOM = typeof ThirdPartyOAuthProviderCUSTOM[keyof typeof ThirdPartyOAuthProviderCUSTOM];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const ThirdPartyOAuthProviderCUSTOM = {\n custom: 'custom',\n} as const;\n\nexport interface CustomAuthConfig {\n /** Enable OAuth provider. */\n enabled: boolean;\n /** OAuth provider type */\n provider: ThirdPartyOAuthProviderCUSTOM;\n /** Headers to send with the request */\n headers?: string;\n /** URL to send the request to to verify the payload */\n authenticationUrl: string;\n}\n\nexport type ThirdPartyOAuthProviderLOOTLOCKER = typeof ThirdPartyOAuthProviderLOOTLOCKER[keyof typeof ThirdPartyOAuthProviderLOOTLOCKER];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const ThirdPartyOAuthProviderLOOTLOCKER = {\n lootlocker: 'lootlocker',\n} as const;\n\n/**\n * LootLocker oauth configuration\n */\nexport interface LootLockerOAuthConfig {\n /** Enable OAuth provider. */\n enabled: boolean;\n /** OAuth provider type */\n provider: ThirdPartyOAuthProviderLOOTLOCKER;\n}\n\nexport type ThirdPartyOAuthProviderBETTERAUTH = typeof ThirdPartyOAuthProviderBETTERAUTH[keyof typeof ThirdPartyOAuthProviderBETTERAUTH];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const ThirdPartyOAuthProviderBETTERAUTH = {\n 'better-auth': 'better-auth',\n} as const;\n\n/**\n * Better Auth configuration\n */\nexport interface BetterAuthConfig {\n /** Enable OAuth provider. */\n enabled: boolean;\n /** OAuth provider type */\n provider: ThirdPartyOAuthProviderBETTERAUTH;\n /** Base URL of the Better Auth instance. E.g. https://your-app.com/api/auth */\n baseUrl: string;\n}\n\nexport type AuthConfig = EmailAuthConfig | GuestAuthConfig | Web3AuthConfig | PhoneAuthConfig | SupabaseAuthConfig | OIDCAuthConfig | AccelbyteOAuthConfig | GoogleOAuthConfig | TwitterOAuthConfig | FacebookOAuthConfig | AppleOAuthConfig | LineOAuthConfig | DiscordOAuthConfig | EpicGamesOAuthConfig | PlayFabOAuthConfig | FirebaseOAuthConfig | CustomAuthConfig | LootLockerOAuthConfig | BetterAuthConfig;\n\n/**\n * Response for the OAuth config list method.\n */\nexport interface OAuthConfigListResponse {\n /** List of the OAuth providers configurations */\n data: AuthConfig[];\n}\n\nexport interface GrantOAuthResponse {\n authorizationCode?: string;\n accessToken?: string;\n refreshToken?: string;\n playerId?: string;\n}\n\nexport interface GrantCallbackRequest {\n code: string;\n state: string;\n}\n\n/**\n * OAuth provider specific configuration.\n */\nexport type OAuthConfigResponse = AuthConfig;\n\n/**\n * Request for the configuration endpoints for the OAuth providers\n */\nexport type OAuthConfigRequest = AuthConfig;\n\nexport type AuthMigrationStatus = typeof AuthMigrationStatus[keyof typeof AuthMigrationStatus];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const AuthMigrationStatus = {\n created: 'created',\n running: 'running',\n paused: 'paused',\n completed: 'completed',\n failed: 'failed',\n canceled: 'canceled',\n} as const;\n\n/**\n * Mapping strategy for the migration. This is used to transform the ids between the source and destination providers.\nFor the transformation, the order of the operations is:\n1. Trim the prefix and suffix from the destination id.\n2. Add the prefix and suffix to the destination id.\nWhen a user is authenticated in the destination provider, the id is transformed using the mapping strategy to find if exists in the source provider.\nIf the id is not found, the user is created in the destination provider.\nIf the id is found, the user in the destination provider is linked to the source provider.\n */\nexport interface MappingStrategy {\n /** Prefix to trim from the destination id. */\n trimPrefix?: string;\n /** Suffix to trim from the destination id. */\n trimSuffix?: string;\n /** Prefix to add to the destination id. */\n addPrefix?: string;\n /** Suffix to add to the destination id. */\n addSuffix?: string;\n}\n\n/**\n * Auth Migration Response.\n */\nexport interface AuthMigrationResponse {\n /** Unique identifier for the migration. */\n id: string;\n /** The source provider for the migration. */\n sourceProvider: AuthProvider;\n /** The destination provider for the migration. */\n destinationProvider: AuthProvider;\n /** The status of the migration. */\n status: AuthMigrationStatus;\n /** The created date of the migration. */\n createdAt: string;\n /** If the migration is finished, this will be the date it was finished. */\n finishedAt?: string;\n /** The mapping strategy used for the migration.\nIf not provided, the direct mapping will be used. */\n mappingStrategy?: MappingStrategy;\n}\n\n/**\n * Request for migrating authentication from one provider to another\n */\nexport interface CreateMigrationRequest {\n /** The mapping strategy used for the migration.\nIf not provided, the direct mapping will be used. */\n mappingStrategy?: MappingStrategy;\n /** Destination provider */\n destinationProvider: AuthProvider;\n /** Source provider */\n sourceProvider: AuthProvider;\n}\n\nexport interface AuthMigrationListResponse {\n object: ResponseTypeLIST;\n url: string;\n data: AuthMigrationResponse[];\n start: number;\n end: number;\n total: number;\n}\n\n/**\n * Request for listing Migrations\n */\nexport interface ListMigrationsRequest {\n /**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\n limit?: number;\n /**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\n skip?: number;\n /** Specifies the order in which to sort the results. */\n order?: PrismaSortOrder;\n /** Source provider */\n sourceProvider?: AuthProvider;\n /** Destination provider */\n destinationProvider?: AuthProvider;\n /** Status of the migration */\n status?: AuthMigrationStatus[];\n}\n\n/**\n * Request for update the status of a migration\n */\nexport interface UpdateMigrationRequest {\n /** The mapping strategy used for the migration.\nIf not provided, the direct mapping will be used. */\n mappingStrategy?: MappingStrategy;\n /** Status of the migration */\n status: AuthMigrationStatus;\n}\n\nexport type AuthenticationType = typeof AuthenticationType[keyof typeof AuthenticationType];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const AuthenticationType = {\n oauth: 'oauth',\n basic: 'basic',\n third_party: 'third_party',\n} as const;\n\nexport interface AuthProviderWithTypeResponse {\n type: AuthenticationType;\n provider: AuthProvider;\n}\n\nexport interface AuthProviderListResponse {\n data: AuthProviderWithTypeResponse[];\n}\n\nexport interface ListConfigRequest {\n enabled?: boolean;\n}\n\nexport type AuthPlayerResponseWithRecoverySharePlayer = PlayerResponse | PickPlayerResponseId;\n\nexport interface AuthPlayerResponseWithRecoveryShare {\n player?: AuthPlayerResponseWithRecoverySharePlayer;\n id: string;\n object: EntityTypePLAYER;\n createdAt: number;\n linkedAccounts: LinkedAccountResponse[];\n recoveryShare?: string;\n}\n\nexport interface CreateAuthPlayerRequest {\n /** The third party user id. */\n thirdPartyUserId: string;\n /** The third party provider. */\n thirdPartyProvider: ThirdPartyOAuthProvider;\n /** Pre generate embedded account. */\n preGenerateEmbeddedAccount: boolean;\n /** The chain ID. Must be a [supported chain](/development/chains). */\n chainId?: number;\n /** Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format. Individual keys can be unset by posting an empty value to them. All keys can be unset by posting an empty value to metadata. */\n metadata?: PlayerMetadata;\n}\n\nexport interface AuthPlayerListResponse {\n object: ResponseTypeLIST;\n url: string;\n data: AuthPlayerResponse[];\n start: number;\n end: number;\n total: number;\n}\n\nexport interface AuthPlayerListQueries {\n /**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\n limit?: number;\n /**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\n skip?: number;\n /** Specifies the order in which to sort the results. */\n order?: PrismaSortOrder;\n /** Specifies the email address of the user. */\n email?: string;\n /** Specifies the external user ID. */\n externalUserId?: string;\n}\n\nexport interface AuthSessionResponse {\n livemode: boolean;\n projectId: string;\n playerId: string;\n issuer: string;\n issuedAt: number;\n expiration: number;\n sessionId: string;\n}\n\nexport interface JwtKey {\n kty: string;\n x: string;\n y: string;\n crv: string;\n kid: string;\n use: string;\n alg: string;\n}\n\nexport interface JwtKeyResponse {\n keys: JwtKey[];\n}\n\nexport interface AuthenticatedPlayerResponse {\n /** Player's identifier. */\n player: AuthPlayerResponse;\n}\n\nexport interface AuthorizePlayerRequest {\n /** The authorization code received from the api to authorize the project to use the Ecosystem player. */\n authorizationCode: string;\n}\n\nexport type GetTransactionIntentsParams = {\n/**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\nlimit?: number;\n/**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\nskip?: number;\n/**\n * Specifies the order in which to sort the results.\n */\norder?: PrismaSortOrder;\n/**\n * Specifies the fields to expand in the response.\n */\nexpand?: TransactionIntentResponseExpandable[];\n/**\n * The chain ID. Must be a [supported chain](/development/chains).\n */\nchainId?: number;\n/**\n * Filter by account ID or developer account (starts with acc_ or dac_ respectively).\n */\naccount?: string[];\n/**\n * Filter by player ID (starts with pla_).\n */\nplayer?: string[];\n/**\n * Filter by successful (1) or failed (0) transaction intents.\n */\nstatus?: number;\n/**\n * Filter by policy ID (starts with pol_).\n */\npolicy?: string[];\n};\n\nexport type GetTransactionIntentParams = {\n/**\n * Specifies the expandable fields.\n */\nexpand?: TransactionIntentResponseExpandable[];\n};\n\nexport type ListSubscriptionLogsParams = {\n/**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\nlimit?: number;\n/**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\nskip?: number;\n/**\n * Specifies the order in which to sort the results.\n */\norder?: PrismaSortOrder;\n/**\n * Specifies the topic of the subscription logs\n */\ntopic?: APITopic;\n/**\n * Specifies the status of the subscription logs\n */\nstatus?: Status;\n/**\n * Specifies the object ID of the object related to triggered notification\n */\nobject?: string;\n/**\n * Specifies the subscription ID\n */\nsubscription?: string;\n/**\n * Specifies the trigger ID\n */\ntrigger?: string;\n/**\n * Specifies the request ID\n */\nrequestID?: string;\n};\n\nexport type TestTrigger200 = {\n sent: boolean;\n};\n\nexport type GetDeveloperAccountsParams = {\n/**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\nlimit?: number;\n/**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\nskip?: number;\n/**\n * Specifies the order in which to sort the results.\n */\norder?: PrismaSortOrder;\n/**\n * Specifies the fields to expand in the response.\n */\nexpand?: DeveloperAccountResponseExpandable[];\n/**\n * Specifies whether to include deleted dev accounts.\n */\ndeleted?: boolean;\n};\n\nexport type GetDeveloperAccountParams = {\nexpand?: DeveloperAccountResponseExpandable[];\n};\n\nexport type GetVerificationPayloadParams = {\n/**\n * Specifies the address\n */\naddress: string;\n};\n\nexport type GetPlayerSessionsParams = {\n/**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\nlimit?: number;\n/**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\nskip?: number;\n/**\n * Specifies the order in which to sort the results.\n */\norder?: PrismaSortOrder;\n/**\n * The player ID (starts with pla_)\n */\nplayer: string;\n/**\n * Specifies the fields to expand in the response.\n */\nexpand?: SessionResponseExpandable[];\n};\n\nexport type GetSessionParams = {\n/**\n * Specifies the fields to expand.\n */\nexpand?: SessionResponseExpandable[];\n};\n\nexport type GetPolicyRulesParams = {\n/**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\nlimit?: number;\n/**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\nskip?: number;\n/**\n * Specifies the order in which to sort the results.\n */\norder?: PrismaSortOrder;\n/**\n * Specifies the fields to expand in the response.\n */\nexpand?: GetPolicyRulesExpandItem[];\n/**\n * Specifies the unique policy ID (starts with pol_).\n */\npolicy: string;\n};\n\n/**\n */\nexport type GetPolicyRulesExpandItem = typeof GetPolicyRulesExpandItem[keyof typeof GetPolicyRulesExpandItem];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetPolicyRulesExpandItem = {\n contract: 'contract',\n} as const;\n\nexport type GetPoliciesParams = {\n/**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\nlimit?: number;\n/**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\nskip?: number;\n/**\n * Specifies the order in which to sort the results.\n */\norder?: PrismaSortOrder;\n/**\n * Specifies the fields to expand in the response.\n */\nexpand?: PolicyResponseExpandable[];\n/**\n * Specifies the name of the policy.\n */\nname?: string;\n/**\n * Specifies whether to include deleted policies.\n */\ndeleted?: boolean;\n/**\n * The chain ID of the policy.\n */\nchainId?: number;\n/**\n * Specifies whether to include enabled policies.\n */\nenabled?: boolean;\n};\n\nexport type GetPolicyParams = {\n/**\n * Specifies the fields to expand.\n */\nexpand?: PolicyResponseExpandable[];\n};\n\nexport type GetPolicyTotalGasUsageParams = {\n/**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\nlimit?: number;\n/**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\nskip?: number;\n/**\n * Specifies the order in which to sort the results.\n */\norder?: PrismaSortOrder;\n};\n\nexport type GetPolicyReportTransactionIntentsParams = {\n/**\n * The start date of the period in unix timestamp.\n */\nto: number;\n/**\n * The end date of the period in unix timestamp.\n */\nfrom: number;\n};\n\nexport type GetPlayersParams = {\n/**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\nlimit?: number;\n/**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\nskip?: number;\n/**\n * Specifies the order in which to sort the results.\n */\norder?: PrismaSortOrder;\n/**\n * Specifies the fields to expand in the response.\n */\nexpand?: PlayerResponseExpandable[];\n/**\n * Filter by player name.\n */\nname?: string;\n};\n\nexport type GetPlayerParams = {\n/**\n * Specifies the expandable fields.\n */\nexpand?: PlayerResponseExpandable[];\n};\n\nexport type ListPaymastersParams = {\n/**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\nlimit?: number;\n/**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\nskip?: number;\n/**\n * Specifies the order in which to sort the results.\n */\norder?: PrismaSortOrder;\n};\n\nexport type GetProjectLogsParams = {\n/**\n * .\n */\nmethod?: string[];\n/**\n * Specifies the unique project ID.\n */\nid?: string;\n};\n\nexport type ListForwarderContractsParams = {\n/**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\nlimit?: number;\n/**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\nskip?: number;\n/**\n * Specifies the order in which to sort the results.\n */\norder?: PrismaSortOrder;\n};\n\nexport type GetEventsParams = {\n/**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\nlimit?: number;\n/**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\nskip?: number;\n/**\n * Specifies the order in which to sort the results.\n */\norder?: PrismaSortOrder;\n/**\n * Specifies the name of the event\n */\nname?: string;\n/**\n * Specifies if display deleted events\n */\ndeleted?: boolean;\n};\n\nexport type GetContractsParams = {\n/**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\nlimit?: number;\n/**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\nskip?: number;\n/**\n * Specifies the order in which to sort the results.\n */\norder?: PrismaSortOrder;\n/**\n * Specifies the name of the contract.\n */\nname?: string;\n/**\n * Specifies whether to include deleted contracts.\n */\ndeleted?: boolean;\n/**\n * The chain ID of the contract.\n */\nchainId?: number;\n/**\n * Specifies the address of the contract.\n */\naddress?: string;\n};\n\nexport type ReadContractParams = {\n/**\n * The function name of the contract.\n */\nfunctionName: string;\n/**\n * The function arguments of the contract, in string format. Accepts pla_, con_ and acc_ IDs.\n */\nfunctionArgs?: unknown[];\n};\n\nexport type GetAccountsParams = {\n/**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\nlimit?: number;\n/**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\nskip?: number;\n/**\n * Specifies the order in which to sort the results.\n */\norder?: PrismaSortOrder;\n/**\n * The chain ID. Must be a [supported chain](/development/chains).\n */\nchainId?: number;\n/**\n * Specifies the unique player ID (starts with pla_)\n */\nplayer?: string;\n/**\n * Specifies the address of the account\n */\naddress?: string;\n/**\n * Specifies the fields to expand in the response.\n */\nexpand?: AccountResponseExpandable[];\n};\n\nexport type GetAccountParams = {\nexpand?: AccountResponseExpandable[];\n};\n\nexport type GetAuthUsersParams = {\n/**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\nlimit?: number;\n/**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\nskip?: number;\n/**\n * Specifies the order in which to sort the results.\n */\norder?: PrismaSortOrder;\n/**\n * Filter by user name.\n */\nname?: string;\n/**\n * Filter by external user ID.\n */\nexternalUserId?: string;\n};\n\nexport type ListBackendWalletsParams = {\n/**\n * Number of wallets to return (default: 10, max: 100).\n */\nlimit?: number;\n/**\n * Number of wallets to skip (for pagination).\n */\nskip?: number;\n/**\n * Filter by chain type.\n */\nchainType?: ListBackendWalletsChainType;\n/**\n * Filter by wallet address.\n */\naddress?: string;\n/**\n * Filter by wallet name.\n */\nname?: string;\n/**\n * Filter by associated wallet ID (starts with `pla_`).\n */\nwallet?: string;\n};\n\nexport type ListBackendWalletsChainType = typeof ListBackendWalletsChainType[keyof typeof ListBackendWalletsChainType];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const ListBackendWalletsChainType = {\n EVM: 'EVM',\n SVM: 'SVM',\n} as const;\n\nexport type GetAccountsV2Params = {\n/**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\nlimit?: number;\n/**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\nskip?: number;\n/**\n * Specifies the order in which to sort the results.\n */\norder?: PrismaSortOrder;\n/**\n * The chain ID. Must be a [supported chain](/development/chains).\n */\nchainId?: number;\n/**\n * Specifies the unique user ID (starts with pla_)\n */\nuser?: string;\n/**\n * The chain type. Must be either \"EVM\" or \"SVM\".\n */\nchainType?: GetAccountsV2ChainType;\n/**\n * Specifies the type of account. Must be either \"Smart Account\" or \"Externally Owned Account\".\n */\naccountType?: GetAccountsV2AccountType;\n/**\n * Specifies the key custody of the account. Must be either \"Developer\" or \"User\".\n */\ncustody?: GetAccountsV2Custody;\n/**\n * Specifies the account address\n */\naddress?: string;\n};\n\nexport type GetAccountsV2ChainType = typeof GetAccountsV2ChainType[keyof typeof GetAccountsV2ChainType];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetAccountsV2ChainType = {\n EVM: 'EVM',\n SVM: 'SVM',\n} as const;\n\nexport type GetAccountsV2AccountType = typeof GetAccountsV2AccountType[keyof typeof GetAccountsV2AccountType];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetAccountsV2AccountType = {\n Externally_Owned_Account: 'Externally Owned Account',\n Smart_Account: 'Smart Account',\n Delegated_Account: 'Delegated Account',\n} as const;\n\nexport type GetAccountsV2Custody = typeof GetAccountsV2Custody[keyof typeof GetAccountsV2Custody];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetAccountsV2Custody = {\n Developer: 'Developer',\n User: 'User',\n} as const;\n\nexport type GetSignerIdByAddressParams = {\naddress: string;\n};\n\nexport type SignupEmailPassword201 = AuthResponse | ActionRequiredResponse;\n\nexport type LoginEmailPassword200 = AuthResponse | ActionRequiredResponse;\n\nexport type LinkEmail200 = AuthPlayerResponse | ActionRequiredResponse;\n\nexport type PoolOAuthParams = {\nkey: string;\n};\n\nexport type DeprecatedCallbackOAuthParams = {\n/**\n * Specifies the oauth code.\n */\ncode: string;\n/**\n * Specifies the oauth state.\n */\nstate: string;\n};\n\nexport type CallbackOAuthParams = {\n/**\n * Specifies the oauth code.\n */\ncode: string;\n/**\n * Specifies the oauth state.\n */\nstate: string;\n};\n\nexport type ListParams = {\nenabled?: boolean;\n};\n\nexport type GetAuthPlayersParams = {\n/**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\nlimit?: number;\n/**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\nskip?: number;\n/**\n * Specifies the order in which to sort the results.\n */\norder?: PrismaSortOrder;\n/**\n * Specifies the email address of the user.\n */\nemail?: string;\n/**\n * Specifies the external user ID.\n */\nexternalUserId?: string;\n};\n\nexport type VerifyAuthTokenParams = {\n/**\n * Specifies the auth token.\n */\ntoken: string;\n};\n\nexport type Authorize200 = AuthPlayerResponse | AuthenticatedPlayerResponse;\n\n","/**\n * Generated by orval v7.18.0 🍺\n * Do not edit manually.\n * Openfort API\n * Complete Openfort API references and guides can be found at: https://www.openfort.io/docs\n * OpenAPI spec version: 1.0.0\n */\nimport type {\n CreatePaymasterRequest,\n ListPaymastersParams,\n PaymasterDeleteResponse,\n PaymasterResponse\n} from '../openfortAPI.schemas';\n\nimport { openfortApiClient } from '../../openfortApiClient';\n\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n\n /**\n * Create a new paymaster.\n\nThis object represents the paymaster that will be used to pay the gas fees of the transactions.\n * @summary Create a new paymaster.\n */\nexport const createPaymaster = (\n createPaymasterRequest: CreatePaymasterRequest,\n options?: SecondParameter<typeof openfortApiClient<PaymasterResponse>>,) => {\n return openfortApiClient<PaymasterResponse>(\n {url: `/v1/paymasters`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: createPaymasterRequest\n },\n options);\n }\n /**\n * Returns a list of paymasters.\n\nThis object represents the paymasters that will be used to pay the gas fees for the transactions.\n\nBy default, a maximum of 10 paymasters are shown per page.\n * @summary List paymasters.\n */\nexport const listPaymasters = (\n params?: ListPaymastersParams,\n options?: SecondParameter<typeof openfortApiClient<PaymasterResponse[]>>,) => {\n return openfortApiClient<PaymasterResponse[]>(\n {url: `/v1/paymasters`, method: 'GET',\n params\n },\n options);\n }\n /**\n * Update a paymaster.\n\nThis object represents the paymaster that will be used to pay the gas fees of the transactions.\n * @summary Update a paymaster.\n */\nexport const updatePaymaster = (\n id: string,\n createPaymasterRequest: CreatePaymasterRequest,\n options?: SecondParameter<typeof openfortApiClient<PaymasterResponse>>,) => {\n return openfortApiClient<PaymasterResponse>(\n {url: `/v1/paymasters/${id}`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: createPaymasterRequest\n },\n options);\n }\n /**\n * Returns the paymaster with the given id.\n\nThis object represents the paymaster that will be used to pay the gas fees for the transactions.\n * @summary Get paymaster by id.\n */\nexport const getPaymaster = (\n id: string,\n options?: SecondParameter<typeof openfortApiClient<PaymasterResponse>>,) => {\n return openfortApiClient<PaymasterResponse>(\n {url: `/v1/paymasters/${id}`, method: 'GET'\n },\n options);\n }\n /**\n * Delete the paymaster with the given id.\n\nThis object represents the paymaster that will be used to pay the gas fees for the transactions.\n * @summary Delete paymaster by id.\n */\nexport const deletePaymaster = (\n id: string,\n options?: SecondParameter<typeof openfortApiClient<PaymasterDeleteResponse>>,) => {\n return openfortApiClient<PaymasterDeleteResponse>(\n {url: `/v1/paymasters/${id}`, method: 'DELETE'\n },\n options);\n }\n export type CreatePaymasterResult = NonNullable<Awaited<ReturnType<typeof createPaymaster>>>\nexport type ListPaymastersResult = NonNullable<Awaited<ReturnType<typeof listPaymasters>>>\nexport type UpdatePaymasterResult = NonNullable<Awaited<ReturnType<typeof updatePaymaster>>>\nexport type GetPaymasterResult = NonNullable<Awaited<ReturnType<typeof getPaymaster>>>\nexport type DeletePaymasterResult = NonNullable<Awaited<ReturnType<typeof deletePaymaster>>>\n","/**\n * Generated by orval v7.18.0 🍺\n * Do not edit manually.\n * Openfort API\n * Complete Openfort API references and guides can be found at: https://www.openfort.io/docs\n * OpenAPI spec version: 1.0.0\n */\nimport type {\n GetPlayerParams,\n GetPlayersParams,\n PlayerCancelTransferOwnershipRequest,\n PlayerCreateRequest,\n PlayerDeleteResponse,\n PlayerListResponse,\n PlayerResponse,\n PlayerTransferOwnershipRequest,\n PlayerUpdateRequest,\n TransactionIntentResponse\n} from '../openfortAPI.schemas';\n\nimport { openfortApiClient } from '../../openfortApiClient';\n\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n\n /**\n * By default, a maximum of 10 players are shown.\n\nReturns the latest 10 transaction intents that were created with each player.\n * @summary List players.\n */\nexport const getPlayers = (\n params?: GetPlayersParams,\n options?: SecondParameter<typeof openfortApiClient<PlayerListResponse>>,) => {\n return openfortApiClient<PlayerListResponse>(\n {url: `/v1/players`, method: 'GET',\n params\n },\n options);\n }\n /**\n * Creates a player.\n * @summary Create a player object.\n */\nexport const createPlayer = (\n playerCreateRequest: PlayerCreateRequest,\n options?: SecondParameter<typeof openfortApiClient<PlayerResponse>>,) => {\n return openfortApiClient<PlayerResponse>(\n {url: `/v1/players`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: playerCreateRequest\n },\n options);\n }\n /**\n * Retrieves the details of a player that has previously been created.\n\nReturns the latest 10 transaction intents that were created with this player.\n * @summary Retrieves the details of an existing player.\n */\nexport const getPlayer = (\n id: string,\n params?: GetPlayerParams,\n options?: SecondParameter<typeof openfortApiClient<PlayerResponse>>,) => {\n return openfortApiClient<PlayerResponse>(\n {url: `/v1/players/${id}`, method: 'GET',\n params\n },\n options);\n }\n /**\n * Updates the specified player by setting the values of the parameters passed.\n * @summary Updates a player object.\n */\nexport const updatePlayer = (\n id: string,\n playerUpdateRequest: PlayerUpdateRequest,\n options?: SecondParameter<typeof openfortApiClient<PlayerResponse>>,) => {\n return openfortApiClient<PlayerResponse>(\n {url: `/v1/players/${id}`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: playerUpdateRequest\n },\n options);\n }\n /**\n * It will delete all linked accounts the player is authenticated with.\nIf the player has a linked embedded signer, it will be deleted as well.\n * @summary Deletes a player object.\n */\nexport const deletePlayer = (\n id: string,\n options?: SecondParameter<typeof openfortApiClient<PlayerDeleteResponse>>,) => {\n return openfortApiClient<PlayerDeleteResponse>(\n {url: `/v1/players/${id}`, method: 'DELETE'\n },\n options);\n }\n /**\n * This endpoint allows you to perform a request to change the owner of an account.\nTo perform an update on the owner of an account, first you must provide a new owner address.\nOnce requested, the owner must accept to take ownership by calling `acceptOwnership()` in the smart contract account.\n * @summary Request transfer ownership of a player.\n */\nexport const requestTransferAccountOwnership = (\n id: string,\n playerTransferOwnershipRequest: PlayerTransferOwnershipRequest,\n options?: SecondParameter<typeof openfortApiClient<TransactionIntentResponse>>,) => {\n return openfortApiClient<TransactionIntentResponse>(\n {url: `/v1/players/${id}/request_transfer_ownership`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: playerTransferOwnershipRequest\n },\n options);\n }\n /**\n * This endpoint allows you to cancel a pending transfer of ownership.\n * @summary Cancel request to transfer ownership of a player.\n */\nexport const cancelTransferAccountOwnership = (\n id: string,\n playerCancelTransferOwnershipRequest: PlayerCancelTransferOwnershipRequest,\n options?: SecondParameter<typeof openfortApiClient<TransactionIntentResponse>>,) => {\n return openfortApiClient<TransactionIntentResponse>(\n {url: `/v1/players/${id}/cancel_transfer_ownership`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: playerCancelTransferOwnershipRequest\n },\n options);\n }\n export type GetPlayersResult = NonNullable<Awaited<ReturnType<typeof getPlayers>>>\nexport type CreatePlayerResult = NonNullable<Awaited<ReturnType<typeof createPlayer>>>\nexport type GetPlayerResult = NonNullable<Awaited<ReturnType<typeof getPlayer>>>\nexport type UpdatePlayerResult = NonNullable<Awaited<ReturnType<typeof updatePlayer>>>\nexport type DeletePlayerResult = NonNullable<Awaited<ReturnType<typeof deletePlayer>>>\nexport type RequestTransferAccountOwnershipResult = NonNullable<Awaited<ReturnType<typeof requestTransferAccountOwnership>>>\nexport type CancelTransferAccountOwnershipResult = NonNullable<Awaited<ReturnType<typeof cancelTransferAccountOwnership>>>\n","/**\n * Generated by orval v7.18.0 🍺\n * Do not edit manually.\n * Openfort API\n * Complete Openfort API references and guides can be found at: https://www.openfort.io/docs\n * OpenAPI spec version: 1.0.0\n */\nimport type {\n CreatePolicyRequest,\n GasReportListResponse,\n GasReportTransactionIntentsListResponse,\n GetPoliciesParams,\n GetPolicyParams,\n GetPolicyReportTransactionIntentsParams,\n GetPolicyTotalGasUsageParams,\n PolicyBalanceWithdrawResponse,\n PolicyDeleteResponse,\n PolicyListResponse,\n PolicyResponse,\n TransactionIntentResponse,\n UpdatePolicyRequest,\n WithdrawalPolicyRequest\n} from '../openfortAPI.schemas';\n\nimport { openfortApiClient } from '../../openfortApiClient';\n\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n\n /**\n * Returns a list of Policies.\n\nReturns the latest 10 transaction intents for each policy.\n * @summary List policies.\n */\nexport const getPolicies = (\n params?: GetPoliciesParams,\n options?: SecondParameter<typeof openfortApiClient<PolicyListResponse>>,) => {\n return openfortApiClient<PolicyListResponse>(\n {url: `/v1/policies`, method: 'GET',\n params\n },\n options);\n }\n /**\n * @summary Create a policy object.\n */\nexport const createPolicy = (\n createPolicyRequest: CreatePolicyRequest,\n options?: SecondParameter<typeof openfortApiClient<PolicyResponse>>,) => {\n return openfortApiClient<PolicyResponse>(\n {url: `/v1/policies`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: createPolicyRequest\n },\n options);\n }\n /**\n * Retrieves the details of a Policy that has previously been created.\n\nReturns the latest 10 transaction intents that used this policy.\n * @summary Get a policy object.\n */\nexport const getPolicy = (\n id: string,\n params?: GetPolicyParams,\n options?: SecondParameter<typeof openfortApiClient<PolicyResponse>>,) => {\n return openfortApiClient<PolicyResponse>(\n {url: `/v1/policies/${id}`, method: 'GET',\n params\n },\n options);\n }\n /**\n * @summary Update a policy object.\n */\nexport const updatePolicy = (\n id: string,\n updatePolicyRequest: UpdatePolicyRequest,\n options?: SecondParameter<typeof openfortApiClient<PolicyResponse>>,) => {\n return openfortApiClient<PolicyResponse>(\n {url: `/v1/policies/${id}`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: updatePolicyRequest\n },\n options);\n }\n /**\n * @summary Delete a policy object.\n */\nexport const deletePolicy = (\n id: string,\n options?: SecondParameter<typeof openfortApiClient<PolicyDeleteResponse>>,) => {\n return openfortApiClient<PolicyDeleteResponse>(\n {url: `/v1/policies/${id}`, method: 'DELETE'\n },\n options);\n }\n /**\n * @summary Disable a policy object.\n */\nexport const disablePolicy = (\n id: string,\n options?: SecondParameter<typeof openfortApiClient<PolicyResponse>>,) => {\n return openfortApiClient<PolicyResponse>(\n {url: `/v1/policies/${id}/disable`, method: 'PUT'\n },\n options);\n }\n /**\n * @summary Enable a policy object.\n */\nexport const enablePolicy = (\n id: string,\n options?: SecondParameter<typeof openfortApiClient<PolicyResponse>>,) => {\n return openfortApiClient<PolicyResponse>(\n {url: `/v1/policies/${id}/enable`, method: 'PUT'\n },\n options);\n }\n /**\n * @summary List all gas reports of a policy.\n */\nexport const getPolicyTotalGasUsage = (\n id: string,\n params?: GetPolicyTotalGasUsageParams,\n options?: SecondParameter<typeof openfortApiClient<GasReportListResponse>>,) => {\n return openfortApiClient<GasReportListResponse>(\n {url: `/v1/policies/${id}/reports`, method: 'GET',\n params\n },\n options);\n }\n /**\n * @summary List transaction intents of a policy report.\n */\nexport const getPolicyReportTransactionIntents = (\n id: string,\n params: GetPolicyReportTransactionIntentsParams,\n options?: SecondParameter<typeof openfortApiClient<GasReportTransactionIntentsListResponse>>,) => {\n return openfortApiClient<GasReportTransactionIntentsListResponse>(\n {url: `/v1/policies/${id}/reports/transaction_intents`, method: 'GET',\n params\n },\n options);\n }\n /**\n * Get the amount of ERC-20 tokens collected by policy.\n\nWhen using a policy that includes payment of gas in ERC-20 tokens, this endpoint returns the amount of tokens paid for gas.\nThis is specific to a policy that doesn't use your own deposited tokens in the paymaster.\n * @summary Get amount of tokens paid for gas policy.\n */\nexport const getPolicyBalance = (\n id: string,\n options?: SecondParameter<typeof openfortApiClient<PolicyBalanceWithdrawResponse>>,) => {\n return openfortApiClient<PolicyBalanceWithdrawResponse>(\n {url: `/v1/policies/${id}/withdraw`, method: 'GET'\n },\n options);\n }\n /**\n * Transfer ERC-20 tokens collected by policy.\n\nWhen using a policy that includes payment of gas in ERC-20 tokens, this endpoint returns the amount of tokens paid for gas.\nThis is specific to a policy that doesn't use your own deposited tokens in the paymaster.\n * @summary Withdraw tokens collected by policy.\n */\nexport const createPolicyWithdrawal = (\n id: string,\n withdrawalPolicyRequest: WithdrawalPolicyRequest,\n options?: SecondParameter<typeof openfortApiClient<TransactionIntentResponse>>,) => {\n return openfortApiClient<TransactionIntentResponse>(\n {url: `/v1/policies/${id}/withdraw`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: withdrawalPolicyRequest\n },\n options);\n }\n export type GetPoliciesResult = NonNullable<Awaited<ReturnType<typeof getPolicies>>>\nexport type CreatePolicyResult = NonNullable<Awaited<ReturnType<typeof createPolicy>>>\nexport type GetPolicyResult = NonNullable<Awaited<ReturnType<typeof getPolicy>>>\nexport type UpdatePolicyResult = NonNullable<Awaited<ReturnType<typeof updatePolicy>>>\nexport type DeletePolicyResult = NonNullable<Awaited<ReturnType<typeof deletePolicy>>>\nexport type DisablePolicyResult = NonNullable<Awaited<ReturnType<typeof disablePolicy>>>\nexport type EnablePolicyResult = NonNullable<Awaited<ReturnType<typeof enablePolicy>>>\nexport type GetPolicyTotalGasUsageResult = NonNullable<Awaited<ReturnType<typeof getPolicyTotalGasUsage>>>\nexport type GetPolicyReportTransactionIntentsResult = NonNullable<Awaited<ReturnType<typeof getPolicyReportTransactionIntents>>>\nexport type GetPolicyBalanceResult = NonNullable<Awaited<ReturnType<typeof getPolicyBalance>>>\nexport type CreatePolicyWithdrawalResult = NonNullable<Awaited<ReturnType<typeof createPolicyWithdrawal>>>\n","/**\n * Generated by orval v7.18.0 🍺\n * Do not edit manually.\n * Openfort API\n * Complete Openfort API references and guides can be found at: https://www.openfort.io/docs\n * OpenAPI spec version: 1.0.0\n */\nimport type {\n CreatePolicyRuleRequest,\n GetPolicyRulesParams,\n PolicyRuleDeleteResponse,\n PolicyRuleListResponse,\n PolicyRuleResponse,\n UpdatePolicyRuleRequest\n} from '../openfortAPI.schemas';\n\nimport { openfortApiClient } from '../../openfortApiClient';\n\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n\n /**\n * Returns a list of policy rules of a policy.\n\nThe policy rules are returned sorted by creation date, with the most recently created policy rules appearing first.\n\nBy default, a maximum of 10 policy rules are shown per page.\n * @summary List policy rules of a policy.\n */\nexport const getPolicyRules = (\n params: GetPolicyRulesParams,\n options?: SecondParameter<typeof openfortApiClient<PolicyRuleListResponse>>,) => {\n return openfortApiClient<PolicyRuleListResponse>(\n {url: `/v1/policy_rules`, method: 'GET',\n params\n },\n options);\n }\n /**\n * @summary Create a policy rule object.\n */\nexport const createPolicyRule = (\n createPolicyRuleRequest: CreatePolicyRuleRequest,\n options?: SecondParameter<typeof openfortApiClient<PolicyRuleResponse>>,) => {\n return openfortApiClient<PolicyRuleResponse>(\n {url: `/v1/policy_rules`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: createPolicyRuleRequest\n },\n options);\n }\n /**\n * @summary Update a policy rule object.\n */\nexport const updatePolicyRule = (\n id: string,\n updatePolicyRuleRequest: UpdatePolicyRuleRequest,\n options?: SecondParameter<typeof openfortApiClient<PolicyRuleResponse>>,) => {\n return openfortApiClient<PolicyRuleResponse>(\n {url: `/v1/policy_rules/${id}`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: updatePolicyRuleRequest\n },\n options);\n }\n /**\n * @summary Deletes a policy rule object.\n */\nexport const deletePolicyRule = (\n id: string,\n options?: SecondParameter<typeof openfortApiClient<PolicyRuleDeleteResponse>>,) => {\n return openfortApiClient<PolicyRuleDeleteResponse>(\n {url: `/v1/policy_rules/${id}`, method: 'DELETE'\n },\n options);\n }\n export type GetPolicyRulesResult = NonNullable<Awaited<ReturnType<typeof getPolicyRules>>>\nexport type CreatePolicyRuleResult = NonNullable<Awaited<ReturnType<typeof createPolicyRule>>>\nexport type UpdatePolicyRuleResult = NonNullable<Awaited<ReturnType<typeof updatePolicyRule>>>\nexport type DeletePolicyRuleResult = NonNullable<Awaited<ReturnType<typeof deletePolicyRule>>>\n","/**\n * Generated by orval v7.18.0 🍺\n * Do not edit manually.\n * Openfort API\n * Complete Openfort API references and guides can be found at: https://www.openfort.io/docs\n * OpenAPI spec version: 1.0.0\n */\nimport type {\n JsonRpcRequest,\n JsonRpcResponse\n} from '../openfortAPI.schemas';\n\nimport { openfortApiClient } from '../../openfortApiClient';\n\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n\n /**\n * Execute JSON-RPC 2.0 wallet methods\n\nThis endpoint handles wallet-namespace JSON-RPC 2.0 requests following the specification at https://www.jsonrpc.org/specification.\nIt supports EIP-7811 wallet methods that operate across multiple chains.\n\n**Supported methods:**\n- `wallet_getAssets`: Retrieve wallet assets across multiple chains with optional filtering\n\n**Authentication:**\nSupports multiple authentication methods including public key access tokens and third-party tokens\n * @summary Execute wallet JSON-RPC methods\n */\nexport const handleRpcRequest = (\n jsonRpcRequest: JsonRpcRequest,\n options?: SecondParameter<typeof openfortApiClient<JsonRpcResponse>>,) => {\n return openfortApiClient<JsonRpcResponse>(\n {url: `/rpc`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: jsonRpcRequest\n },\n options);\n }\n /**\n * Execute chain-specific JSON-RPC 2.0 methods (bundler & paymaster)\n\nThis endpoint handles chain-specific JSON-RPC 2.0 requests for ERC-4337 bundler operations and ERC-7677 paymaster operations.\nThe chainId is specified in the URL path following the standard pattern.\n\n**Supported namespaces:**\n- `eth_*`: ERC-4337 bundler methods (sendUserOperation, estimateUserOperationGas, getUserOperationReceipt, getUserOperationByHash, supportedEntryPoints)\n- `openfort_*`: Openfort bundler extensions (getUserOperationGasPrice, getUserOperationStatus)\n- `pm_*`: ERC-7677 paymaster methods (getPaymasterStubData, getPaymasterData)\n- `wallet_*`: EIP-7811 wallet methods (can also be called here with chainId context)\n * @summary Execute chain-specific bundler and paymaster JSON-RPC methods\n */\nexport const handleChainRpcRequest = (\n chainId: number,\n jsonRpcRequest: JsonRpcRequest,\n options?: SecondParameter<typeof openfortApiClient<JsonRpcResponse>>,) => {\n return openfortApiClient<JsonRpcResponse>(\n {url: `/rpc/${chainId}`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: jsonRpcRequest\n },\n options);\n }\n export type HandleRpcRequestResult = NonNullable<Awaited<ReturnType<typeof handleRpcRequest>>>\nexport type HandleChainRpcRequestResult = NonNullable<Awaited<ReturnType<typeof handleChainRpcRequest>>>\n","/**\n * Generated by orval v7.18.0 🍺\n * Do not edit manually.\n * Openfort API\n * Complete Openfort API references and guides can be found at: https://www.openfort.io/docs\n * OpenAPI spec version: 1.0.0\n */\nimport type {\n CreateSessionRequest,\n GetPlayerSessionsParams,\n GetSessionParams,\n RevokeSessionRequest,\n SessionListResponse,\n SessionResponse,\n SignatureRequest\n} from '../openfortAPI.schemas';\n\nimport { openfortApiClient } from '../../openfortApiClient';\n\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n\n /**\n * Returns a list of Sessions.\n\nReturns the latest 10 transaction intents for each session.\n * @summary List session keys of a player.\n */\nexport const getPlayerSessions = (\n params: GetPlayerSessionsParams,\n options?: SecondParameter<typeof openfortApiClient<SessionListResponse>>,) => {\n return openfortApiClient<SessionListResponse>(\n {url: `/v1/sessions`, method: 'GET',\n params\n },\n options);\n }\n /**\n * Creates a Session.\n * @summary Create a session key.\n */\nexport const createSession = (\n createSessionRequest: CreateSessionRequest,\n options?: SecondParameter<typeof openfortApiClient<SessionResponse>>,) => {\n return openfortApiClient<SessionResponse>(\n {url: `/v1/sessions`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: createSessionRequest\n },\n options);\n }\n /**\n * @summary Revoke the session session key.\n */\nexport const revokeSession = (\n revokeSessionRequest: RevokeSessionRequest,\n options?: SecondParameter<typeof openfortApiClient<SessionResponse>>,) => {\n return openfortApiClient<SessionResponse>(\n {url: `/v1/sessions/revoke`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: revokeSessionRequest\n },\n options);\n }\n /**\n * @summary Send signed userOperationHash to create session.\n */\nexport const signatureSession = (\n id: string,\n signatureRequest: SignatureRequest,\n options?: SecondParameter<typeof openfortApiClient<SessionResponse>>,) => {\n return openfortApiClient<SessionResponse>(\n {url: `/v1/sessions/${id}/signature`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: signatureRequest\n },\n options);\n }\n /**\n * Retrieves the details of a Session that has previously been created.\n\nReturns the latest 10 transaction intents that used this session.\n * @summary Returns a player session by session id\n */\nexport const getSession = (\n id: string,\n params?: GetSessionParams,\n options?: SecondParameter<typeof openfortApiClient<SessionResponse>>,) => {\n return openfortApiClient<SessionResponse>(\n {url: `/v1/sessions/${id}`, method: 'GET',\n params\n },\n options);\n }\n export type GetPlayerSessionsResult = NonNullable<Awaited<ReturnType<typeof getPlayerSessions>>>\nexport type CreateSessionResult = NonNullable<Awaited<ReturnType<typeof createSession>>>\nexport type RevokeSessionResult = NonNullable<Awaited<ReturnType<typeof revokeSession>>>\nexport type SignatureSessionResult = NonNullable<Awaited<ReturnType<typeof signatureSession>>>\nexport type GetSessionResult = NonNullable<Awaited<ReturnType<typeof getSession>>>\n","/**\n * Generated by orval v7.18.0 🍺\n * Do not edit manually.\n * Openfort API\n * Complete Openfort API references and guides can be found at: https://www.openfort.io/docs\n * OpenAPI spec version: 1.0.0\n */\nimport type {\n CreateDeveloperAccountCreateRequest,\n DeveloperAccountDeleteResponse,\n DeveloperAccountGetMessageResponse,\n DeveloperAccountListResponse,\n DeveloperAccountResponse,\n GetDeveloperAccountParams,\n GetDeveloperAccountsParams,\n GetVerificationPayloadParams,\n SignPayloadRequest,\n SignPayloadResponse,\n UpdateDeveloperAccountCreateRequest\n} from '../openfortAPI.schemas';\n\nimport { openfortApiClient } from '../../openfortApiClient';\n\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n\n /**\n * Retrieve the list of the developer accounts for the current project.\n\nReturns the latest 10 transaction intents that were created with each developer account.\n\nBy default, a maximum of 10 accounts are shown per page.\n * @summary List of developer accounts.\n */\nexport const getDeveloperAccounts = (\n params?: GetDeveloperAccountsParams,\n options?: SecondParameter<typeof openfortApiClient<DeveloperAccountListResponse>>,) => {\n return openfortApiClient<DeveloperAccountListResponse>(\n {url: `/v1/settings/developer_accounts`, method: 'GET',\n params\n },\n options);\n }\n /**\n * Create or add a developer account.\nTo add your own external account, add a signature and the address of the account. This verified account can then be used as a verified depositor\n * @summary Create a developer account.\n */\nexport const createDeveloperAccount = (\n createDeveloperAccountCreateRequest: CreateDeveloperAccountCreateRequest,\n options?: SecondParameter<typeof openfortApiClient<DeveloperAccountResponse>>,) => {\n return openfortApiClient<DeveloperAccountResponse>(\n {url: `/v1/settings/developer_accounts`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: createDeveloperAccountCreateRequest\n },\n options);\n }\n /**\n * Signs the typed repositories value with types repositories structure for domain using the [EIP-712](https://eips.ethereum.org/EIPS/eip-712) specification.\n * @summary Sign a given payload\n */\nexport const signPayloadDeveloperAccount = (\n id: string,\n signPayloadRequest: SignPayloadRequest,\n options?: SecondParameter<typeof openfortApiClient<SignPayloadResponse>>,) => {\n return openfortApiClient<SignPayloadResponse>(\n {url: `/v1/settings/developer_accounts/${id}/sign_payload`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: signPayloadRequest\n },\n options);\n }\n /**\n * Update a developer account.\n * @summary Update a developer account.\n */\nexport const updateDeveloperAccount = (\n id: string,\n updateDeveloperAccountCreateRequest: UpdateDeveloperAccountCreateRequest,\n options?: SecondParameter<typeof openfortApiClient<DeveloperAccountResponse>>,) => {\n return openfortApiClient<DeveloperAccountResponse>(\n {url: `/v1/settings/developer_accounts/${id}`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: updateDeveloperAccountCreateRequest\n },\n options);\n }\n /**\n * Retrieve a developer account.\n\nReturns the latest 10 transaction intents that were created with each developer account.\n * @summary Get existing developer account.\n */\nexport const getDeveloperAccount = (\n id: string,\n params?: GetDeveloperAccountParams,\n options?: SecondParameter<typeof openfortApiClient<DeveloperAccountResponse>>,) => {\n return openfortApiClient<DeveloperAccountResponse>(\n {url: `/v1/settings/developer_accounts/${id}`, method: 'GET',\n params\n },\n options);\n }\n /**\n * Delete a developer account from the current project.\n * @summary Delete a developer account.\n */\nexport const deleteDeveloperAccount = (\n id: string,\n options?: SecondParameter<typeof openfortApiClient<DeveloperAccountDeleteResponse>>,) => {\n return openfortApiClient<DeveloperAccountDeleteResponse>(\n {url: `/v1/settings/developer_accounts/${id}`, method: 'DELETE'\n },\n options);\n }\n /**\n * Generate message, which should be signed by the account your want to add as a developer account.\n * @summary Generate message to sign\n */\nexport const getVerificationPayload = (\n params: GetVerificationPayloadParams,\n options?: SecondParameter<typeof openfortApiClient<DeveloperAccountGetMessageResponse>>,) => {\n return openfortApiClient<DeveloperAccountGetMessageResponse>(\n {url: `/v1/settings/developer_accounts/message_to_sign`, method: 'GET',\n params\n },\n options);\n }\n export type GetDeveloperAccountsResult = NonNullable<Awaited<ReturnType<typeof getDeveloperAccounts>>>\nexport type CreateDeveloperAccountResult = NonNullable<Awaited<ReturnType<typeof createDeveloperAccount>>>\nexport type SignPayloadDeveloperAccountResult = NonNullable<Awaited<ReturnType<typeof signPayloadDeveloperAccount>>>\nexport type UpdateDeveloperAccountResult = NonNullable<Awaited<ReturnType<typeof updateDeveloperAccount>>>\nexport type GetDeveloperAccountResult = NonNullable<Awaited<ReturnType<typeof getDeveloperAccount>>>\nexport type DeleteDeveloperAccountResult = NonNullable<Awaited<ReturnType<typeof deleteDeveloperAccount>>>\nexport type GetVerificationPayloadResult = NonNullable<Awaited<ReturnType<typeof getVerificationPayload>>>\n","/**\n * Generated by orval v7.18.0 🍺\n * Do not edit manually.\n * Openfort API\n * Complete Openfort API references and guides can be found at: https://www.openfort.io/docs\n * OpenAPI spec version: 1.0.0\n */\nimport type {\n BaseEntityListResponseLogResponse,\n BaseEntityListResponseTriggerResponse,\n CreateSubscriptionRequest,\n CreateTriggerRequest,\n ListSubscriptionLogsParams,\n SubscriptionDeleteResponse,\n SubscriptionListResponse,\n SubscriptionResponse,\n TestTrigger200,\n TriggerDeleteResponse,\n TriggerResponse\n} from '../openfortAPI.schemas';\n\nimport { openfortApiClient } from '../../openfortApiClient';\n\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n\n /**\n * Returns a list of subscriptions for the given project.\n\nThis object represents the subscriptions where the project owner has subscribed to.\n\nSubscriptions are returned sorted by creation date, with the most recently created subscriptions appearing first.\n\nBy default, a maximum of 10 subscriptions are shown per page.\n * @summary List subscriptions of project.\n */\nexport const getSubscriptions = (\n \n options?: SecondParameter<typeof openfortApiClient<SubscriptionListResponse>>,) => {\n return openfortApiClient<SubscriptionListResponse>(\n {url: `/v1/subscriptions`, method: 'GET'\n },\n options);\n }\n /**\n * Creates a subscription for the given project.\n\nThis object represents the subscription where the project owner has subscribed to.\n * @summary Create subscription for project.\n */\nexport const createSubscription = (\n createSubscriptionRequest: CreateSubscriptionRequest,\n options?: SecondParameter<typeof openfortApiClient<SubscriptionResponse>>,) => {\n return openfortApiClient<SubscriptionResponse>(\n {url: `/v1/subscriptions`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: createSubscriptionRequest\n },\n options);\n }\n /**\n * Lists logs of the triggered subscriptions for the given project.\n\nThis object represents the logs of the triggered subscriptions where the project owner has subscribed to.\n * @summary List logs of triggered subscriptions.\n */\nexport const listSubscriptionLogs = (\n params?: ListSubscriptionLogsParams,\n options?: SecondParameter<typeof openfortApiClient<BaseEntityListResponseLogResponse>>,) => {\n return openfortApiClient<BaseEntityListResponseLogResponse>(\n {url: `/v1/subscriptions/logs`, method: 'GET',\n params\n },\n options);\n }\n /**\n * Returns a subscription for the given project.\n\nThis object represents the subscription where the project owner has subscribed to.\n * @summary Get subscription of project.\n */\nexport const getSubscription = (\n id: string,\n options?: SecondParameter<typeof openfortApiClient<SubscriptionResponse>>,) => {\n return openfortApiClient<SubscriptionResponse>(\n {url: `/v1/subscriptions/${id}`, method: 'GET'\n },\n options);\n }\n /**\n * Deletes a subscription for the given project.\n\nThis object represents the subscription where the project owner has subscribed to.\n * @summary Delete subscription of project.\n */\nexport const deleteSubscription = (\n id: string,\n options?: SecondParameter<typeof openfortApiClient<SubscriptionDeleteResponse>>,) => {\n return openfortApiClient<SubscriptionDeleteResponse>(\n {url: `/v1/subscriptions/${id}`, method: 'DELETE'\n },\n options);\n }\n /**\n * Returns a list of triggers for the given subscription.\n\nThis object represents the triggers where the subscription owner has subscribed to.\n\nTriggers are returned sorted by creation date, with the most recently created triggers appearing first.\n\nBy default, a maximum of 10 triggers are shown per page.\n * @summary List triggers of subscription.\n */\nexport const getTriggers = (\n id: string,\n options?: SecondParameter<typeof openfortApiClient<BaseEntityListResponseTriggerResponse>>,) => {\n return openfortApiClient<BaseEntityListResponseTriggerResponse>(\n {url: `/v1/subscriptions/${id}/triggers`, method: 'GET'\n },\n options);\n }\n /**\n * Creates a trigger for the given subscription.\n\nThis object represents the trigger where the subscription owner has subscribed to.\n * @summary Create trigger for subscription.\n */\nexport const createTrigger = (\n id: string,\n createTriggerRequest: CreateTriggerRequest,\n options?: SecondParameter<typeof openfortApiClient<TriggerResponse>>,) => {\n return openfortApiClient<TriggerResponse>(\n {url: `/v1/subscriptions/${id}/triggers`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: createTriggerRequest\n },\n options);\n }\n /**\n * Returns a trigger for the given id.\n\nThis object represents the trigger where the subscription owner has subscribed to.\n * @summary Get trigger by id.\n */\nexport const getTrigger = (\n id: string,\n triggerId: string,\n options?: SecondParameter<typeof openfortApiClient<TriggerResponse>>,) => {\n return openfortApiClient<TriggerResponse>(\n {url: `/v1/subscriptions/${id}/triggers/${triggerId}`, method: 'GET'\n },\n options);\n }\n /**\n * Deletes a trigger for the given subscription.\n\nThis object represents the trigger where the subscription owner has subscribed to.\n * @summary Delete trigger of subscription.\n */\nexport const deleteTrigger = (\n id: string,\n triggerId: string,\n options?: SecondParameter<typeof openfortApiClient<TriggerDeleteResponse>>,) => {\n return openfortApiClient<TriggerDeleteResponse>(\n {url: `/v1/subscriptions/${id}/triggers/${triggerId}`, method: 'DELETE'\n },\n options);\n }\n /**\n * Test a trigger\n\nReturns a trigger for the given id.\n * @summary Test trigger by id.\n */\nexport const testTrigger = (\n \n options?: SecondParameter<typeof openfortApiClient<TestTrigger200>>,) => {\n return openfortApiClient<TestTrigger200>(\n {url: `/v1/subscriptions/test`, method: 'POST'\n },\n options);\n }\n export type GetSubscriptionsResult = NonNullable<Awaited<ReturnType<typeof getSubscriptions>>>\nexport type CreateSubscriptionResult = NonNullable<Awaited<ReturnType<typeof createSubscription>>>\nexport type ListSubscriptionLogsResult = NonNullable<Awaited<ReturnType<typeof listSubscriptionLogs>>>\nexport type GetSubscriptionResult = NonNullable<Awaited<ReturnType<typeof getSubscription>>>\nexport type DeleteSubscriptionResult = NonNullable<Awaited<ReturnType<typeof deleteSubscription>>>\nexport type GetTriggersResult = NonNullable<Awaited<ReturnType<typeof getTriggers>>>\nexport type CreateTriggerResult = NonNullable<Awaited<ReturnType<typeof createTrigger>>>\nexport type GetTriggerResult = NonNullable<Awaited<ReturnType<typeof getTrigger>>>\nexport type DeleteTriggerResult = NonNullable<Awaited<ReturnType<typeof deleteTrigger>>>\nexport type TestTriggerResult = NonNullable<Awaited<ReturnType<typeof testTrigger>>>\n","/**\n * Generated by orval v7.18.0 🍺\n * Do not edit manually.\n * Openfort API\n * Complete Openfort API references and guides can be found at: https://www.openfort.io/docs\n * OpenAPI spec version: 1.0.0\n */\nimport type {\n CreateTransactionIntentRequest,\n EstimateTransactionIntentGasResult,\n GetTransactionIntentParams,\n GetTransactionIntentsParams,\n SignatureRequest,\n TransactionIntentListResponse,\n TransactionIntentResponse\n} from '../openfortAPI.schemas';\n\nimport { openfortApiClient } from '../../openfortApiClient';\n\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n\n /**\n * Returns a list of TransactionIntents.\n * @summary List transaction intents.\n */\nexport const getTransactionIntents = (\n params?: GetTransactionIntentsParams,\n options?: SecondParameter<typeof openfortApiClient<TransactionIntentListResponse>>,) => {\n return openfortApiClient<TransactionIntentListResponse>(\n {url: `/v1/transaction_intents`, method: 'GET',\n params\n },\n options);\n }\n /**\n * Creates a TransactionIntent.\n\nA pending TransactionIntent has the `response` attribute as undefined.\n\nAfter the TransactionIntent is created and broadcasted to the blockchain, `response` will be populated with the transaction hash and a status (1 success, 0 fail).\n\nWhen using a non-custodial account, a `nextAction` attribute is returned with the `userOperationHash` that must be signed by the owner of the account.\n * @summary Create a transaction intent object.\n */\nexport const createTransactionIntent = (\n createTransactionIntentRequest: CreateTransactionIntentRequest,\n options?: SecondParameter<typeof openfortApiClient<TransactionIntentResponse>>,) => {\n return openfortApiClient<TransactionIntentResponse>(\n {url: `/v1/transaction_intents`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: createTransactionIntentRequest\n },\n options);\n }\n /**\n * Retrieves the details of a TransactionIntent that has previously been created.\n * @summary Get a transaction intent object.\n */\nexport const getTransactionIntent = (\n id: string,\n params?: GetTransactionIntentParams,\n options?: SecondParameter<typeof openfortApiClient<TransactionIntentResponse>>,) => {\n return openfortApiClient<TransactionIntentResponse>(\n {url: `/v1/transaction_intents/${id}`, method: 'GET',\n params\n },\n options);\n }\n /**\n * Estimate the gas cost of broadcasting a TransactionIntent.\n\nThis is a simulation, it does not send the transaction on-chain.\n\nIf a Policy ID is used that includes payment of gas in ERC-20 tokens, an extra field `estimatedTXGasFeeToken` is returned with the estimated amount of tokens that will be used.\n * @summary Estimate gas cost of creating a transaction\n */\nexport const estimateTransactionIntentCost = (\n createTransactionIntentRequest: CreateTransactionIntentRequest,\n options?: SecondParameter<typeof openfortApiClient<EstimateTransactionIntentGasResult>>,) => {\n return openfortApiClient<EstimateTransactionIntentGasResult>(\n {url: `/v1/transaction_intents/estimate_gas_cost`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: createTransactionIntentRequest\n },\n options);\n }\n /**\n * Broadcasts a signed TransactionIntent to the blockchain.\n\nUse this endpoint to send the signed `signableHash`. Openfort will then put it on-chain.\n * @summary Send a signed transaction signableHash.\n */\nexport const signature = (\n id: string,\n signatureRequest: SignatureRequest,\n options?: SecondParameter<typeof openfortApiClient<TransactionIntentResponse>>,) => {\n return openfortApiClient<TransactionIntentResponse>(\n {url: `/v1/transaction_intents/${id}/signature`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: signatureRequest\n },\n options);\n }\n export type GetTransactionIntentsResult = NonNullable<Awaited<ReturnType<typeof getTransactionIntents>>>\nexport type CreateTransactionIntentResult = NonNullable<Awaited<ReturnType<typeof createTransactionIntent>>>\nexport type GetTransactionIntentResult = NonNullable<Awaited<ReturnType<typeof getTransactionIntent>>>\nexport type EstimateTransactionIntentCostResult = NonNullable<Awaited<ReturnType<typeof estimateTransactionIntentCost>>>\nexport type SignatureResult = NonNullable<Awaited<ReturnType<typeof signature>>>\n","/**\n * Generated by orval v7.18.0 🍺\n * Do not edit manually.\n * Openfort API\n * Complete Openfort API references and guides can be found at: https://www.openfort.io/docs\n * OpenAPI spec version: 1.0.0\n */\nimport type {\n AuthUserResponse,\n BaseDeleteEntityResponseEntityTypePLAYER,\n BaseEntityListResponseAuthUserResponse,\n GetAuthUsersParams,\n PregenerateAccountResponse,\n PregenerateUserRequestV2,\n ThirdPartyOAuthRequest\n} from '../openfortAPI.schemas';\n\nimport { openfortApiClient } from '../../openfortApiClient';\n\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n\n /**\n * Retrieves an authenticated users.\n\nUsers have linked accounts and are authenticated with a provider.\n * @summary List authenticated users.\n */\nexport const getAuthUsers = (\n params?: GetAuthUsersParams,\n options?: SecondParameter<typeof openfortApiClient<BaseEntityListResponseAuthUserResponse>>,) => {\n return openfortApiClient<BaseEntityListResponseAuthUserResponse>(\n {url: `/v2/users`, method: 'GET',\n params\n },\n options);\n }\n /**\n * Retrieves an authenticated user.\n\nUsers have linked accounts and are authenticated with a provider.\n * @summary Get authenticated user by id.\n */\nexport const getAuthUser = (\n id: string,\n options?: SecondParameter<typeof openfortApiClient<AuthUserResponse>>,) => {\n return openfortApiClient<AuthUserResponse>(\n {url: `/v2/users/${id}`, method: 'GET'\n },\n options);\n }\n /**\n * It will delete all linked accounts the user is authenticated with.\nIf the user has a linked embedded signer, it will be deleted as well.\n * @summary Delete user by id.\n */\nexport const deleteUser = (\n id: string,\n options?: SecondParameter<typeof openfortApiClient<BaseDeleteEntityResponseEntityTypePLAYER>>,) => {\n return openfortApiClient<BaseDeleteEntityResponseEntityTypePLAYER>(\n {url: `/v2/users/${id}`, method: 'DELETE'\n },\n options);\n }\n /**\n * Pre-generate a user with an embedded account before they authenticate.\nCreates a user record and an embedded account using the provided SSS key shares.\nWhen the user later authenticates (via email, OAuth, third-party auth, etc.)\nwith the same identifier, they will be linked to this pre-generated account.\n\nYou can pregenerate using either:\n- `email`: User will be linked when they authenticate with the same email\n- `thirdPartyUserId` + `thirdPartyProvider`: User will be linked when they authenticate via the same third-party provider\n * @summary Pre-generate a user with an embedded account.\n */\nexport const pregenerateUserV2 = (\n pregenerateUserRequestV2: PregenerateUserRequestV2,\n options?: SecondParameter<typeof openfortApiClient<PregenerateAccountResponse>>,) => {\n return openfortApiClient<PregenerateAccountResponse>(\n {url: `/v2/users/pregenerate`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: pregenerateUserRequestV2\n },\n options);\n }\n /**\n * @summary Get user information.\n */\nexport const meV2 = (\n \n options?: SecondParameter<typeof openfortApiClient<AuthUserResponse>>,) => {\n return openfortApiClient<AuthUserResponse>(\n {url: `/iam/v2/me`, method: 'GET'\n },\n options);\n }\n /**\n * @summary Verify oauth token of a third party auth provider.\n */\nexport const thirdPartyV2 = (\n thirdPartyOAuthRequest: ThirdPartyOAuthRequest,\n options?: SecondParameter<typeof openfortApiClient<AuthUserResponse>>,) => {\n return openfortApiClient<AuthUserResponse>(\n {url: `/iam/v2/user/third_party`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: thirdPartyOAuthRequest\n },\n options);\n }\n export type GetAuthUsersResult = NonNullable<Awaited<ReturnType<typeof getAuthUsers>>>\nexport type GetAuthUserResult = NonNullable<Awaited<ReturnType<typeof getAuthUser>>>\nexport type DeleteUserResult = NonNullable<Awaited<ReturnType<typeof deleteUser>>>\nexport type PregenerateUserV2Result = NonNullable<Awaited<ReturnType<typeof pregenerateUserV2>>>\nexport type MeV2Result = NonNullable<Awaited<ReturnType<typeof meV2>>>\nexport type ThirdPartyV2Result = NonNullable<Awaited<ReturnType<typeof thirdPartyV2>>>\n","import { createHmac } from 'node:crypto'\n\n// This function is used to sign a string with a secret key\nexport async function sign(secretKey: string, data: string): Promise<string> {\n const signingKey = secretKey\n .replace('sk_', '')\n .replace('test_', '')\n .replace(/-/g, '')\n return createHmac('sha256', signingKey).update(data, 'utf8').digest('hex')\n}\n","/**\n * Constants for the Openfort SDK.\n *\n * @module Constants\n */\n\n/**\n * Server's RSA-4096 public key for import encryption.\n *\n * This key is used to encrypt private keys before sending them to the server\n * for import. The server holds the corresponding private key in a KMS HSM\n * (non-extractable) to decrypt.\n *\n * Algorithm: RSA-OAEP with SHA-256\n * Key Size: 4096 bits (production) / 2048 bits (development)\n * Format: PEM-encoded SPKI public key\n */\nexport const IMPORT_ENCRYPTION_PUBLIC_KEY = `-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAj/AOU9F/GPDPCmvB4TIx\nQ9Sif8nu7NERsfiuePcqsfUH1hATeCVRRPtRQmHflRdDmhhew62bQfOF1G0gAKp6\nc2A1TTy3JYLLo7zzfxDHlA58qjZQKJwbzy+/ZWpbAZ1RksW4UDffX/Poy8kgxAgq\nqg1dHNZ/YJq7Lp4lh9gFlbur5gKb59RBLUaszadLI3lo+sYx19ZZbjuaoBjeltUu\n5FbIEE3pjDE+45MFG1KH2o+4gNsPKxPYyXebMkjNfGr4xCZnCA7kRCnseCV5Vno9\nkge134e3CNNDmEHl70JlkpCTmGBTk64xqk2cZtk2S/iiRaK/gxiV3HCzHbA2WxA1\nZqCWpFZ+hRB08U26l1dnhTJnVar4IFAMRtwX3RCFhG6JQuem6JAZYoPFaYMbfdGg\nSZcZzpoYm0e44JGgZTN17MyZf8HCSxPgnKa/CtUFvYm4QEf9y83fDKk6vfh1wX19\ngF5eltRAiwq++MJyKUFTyBAtux/HS4vniMJbi/gpLgVhWCiT2Jo/SS7MjhiYuXSi\n5TF+i/2A3MiuBmiv+T6K/D1XfkDuvU0ybk6gO49BL0OS0t2O4SbXB85qxI4gd5sH\n+xI7WsBdZfFak5NUcBz285NvuRxWnhh6lvPHf04jftdchj01u6BZcv+8vV9f4VPO\ncpVsvSx6G98MYbYBtqqjjdECAwEAAQ==\n-----END PUBLIC KEY-----`\n\n// `-----BEGIN PUBLIC KEY-----\n// MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApEhDh4E/WszNdUMl3m7f\n// MJro99ppHBud1EFnCRMXA2Ydhjt4PXnkOZuuo8aWjCd5ceJDJpIBve3KjeEw/SjY\n// L5eBXwpirZrTM+Hz6QHFcmtjH+x8lBYn860CgfnpLNFUcfZFJkDCWyOLx0Eb98nw\n// IfMmqGYB2UQ5wUJFwTw0fYVy8stzQgrSr4+CVI074F6kTpIeKt0ovB2ACOOkxIn9\n// w31kdzhKRyXTjiGueP1cCA8jD42HD0BHMyiFiYoFq97ME9RbvDazXZQn11jhZdGh\n// GYKfC847arHZBMsDaX8unVGa79cbRu1ho6aQfJyv0PtTrWxXbjPiooh6Lcb0XKKZ\n// aQIDAQAB\n// -----END PUBLIC KEY-----`\n","/**\n * Encryption utilities for key import/export operations.\n * Uses RSA-4096 OAEP SHA-256 for end-to-end encrypted key transfer.\n *\n * Import: SDK encrypts with server's static RSA public key\n * Export: SDK generates ephemeral RSA key pair, server encrypts with client's public key\n *\n * @module Utilities/Encryption\n */\n\nimport {\n constants,\n generateKeyPairSync,\n privateDecrypt,\n publicEncrypt,\n} from 'node:crypto'\nimport { UserInputValidationError } from '../errors'\n\n/**\n * RSA key pair for export decryption\n */\nexport interface RSAKeyPair {\n /** Base64-encoded SPKI DER public key (to send to server) */\n publicKey: string\n /** PEM-encoded private key (for decryption) */\n privateKeyPem: string\n}\n\n/**\n * Generates an ephemeral RSA-4096 key pair for export encryption.\n * The public key is sent to the server, and the private key is used\n * to decrypt the response.\n *\n * @returns RSA key pair with base64-encoded public key\n */\nexport const generateRSAKeyPair = (): RSAKeyPair => {\n const { publicKey, privateKey } = generateKeyPairSync('rsa', {\n modulusLength: 4096,\n publicKeyEncoding: {\n type: 'spki',\n format: 'der',\n },\n privateKeyEncoding: {\n type: 'pkcs1',\n format: 'pem',\n },\n })\n\n return {\n publicKey: (publicKey as Buffer).toString('base64'),\n privateKeyPem: privateKey as string,\n }\n}\n\n/**\n * Encrypts a private key for import using RSA-OAEP with SHA-256.\n * Uses the server's static RSA public key embedded in the SDK.\n *\n * @param privateKeyHex - Private key as hex string (with or without 0x prefix)\n * @param serverPublicKeyPem - Server's RSA public key in PEM format\n * @returns Encrypted data (base64-encoded)\n */\nexport const encryptForImport = (\n privateKeyHex: string,\n serverPublicKeyPem: string,\n): string => {\n const keyHex = privateKeyHex.startsWith('0x')\n ? privateKeyHex.slice(2)\n : privateKeyHex\n\n if (!/^[0-9a-fA-F]+$/.test(keyHex)) {\n throw new UserInputValidationError(\n 'Private key must be a valid hexadecimal string',\n )\n }\n\n const privateKeyBytes = Buffer.from(keyHex, 'hex')\n\n const encrypted = publicEncrypt(\n {\n key: serverPublicKeyPem,\n padding: constants.RSA_PKCS1_OAEP_PADDING,\n oaepHash: 'sha256',\n },\n privateKeyBytes,\n )\n\n return encrypted.toString('base64')\n}\n\n/**\n * Decrypts a private key received from the export endpoint.\n * Uses the ephemeral RSA private key generated for this request.\n *\n * @param encryptedPrivateKeyBase64 - Encrypted private key from server (base64)\n * @param privateKeyPem - Your RSA private key in PEM format\n * @returns Decrypted private key as hex string (without 0x prefix)\n */\nexport const decryptExportedPrivateKey = (\n encryptedPrivateKeyBase64: string,\n privateKeyPem: string,\n): string => {\n const encryptedData = Buffer.from(encryptedPrivateKeyBase64, 'base64')\n\n const decrypted = privateDecrypt(\n {\n key: privateKeyPem,\n padding: constants.RSA_PKCS1_OAEP_PADDING,\n oaepHash: 'sha256',\n },\n encryptedData,\n )\n\n return decrypted.toString('hex')\n}\n","/**\n * @module Wallets/EVM/Actions/SignHash\n * Sign a raw hash directly (no EIP-191 prefix)\n */\n\nimport { sign } from '../../../openapi-client'\nimport type { Hash, Hex } from '../types'\n\n/**\n * Options for signing a hash\n */\nexport interface SignHashOptions {\n /** Account ID for API calls */\n accountId: string\n /** Hash to sign (32-byte hex string) */\n hash: Hash\n}\n\n/**\n * Result of sign hash operation\n */\nexport interface SignHashResult {\n /** Signature as hex string */\n signature: Hex\n}\n\n/**\n * Signs a raw hash directly via the Openfort API.\n * Unlike signMessage, this does NOT apply EIP-191 prefix or any hashing.\n * The hash is signed as-is.\n *\n * @param options - Sign hash options\n * @returns The signature\n */\nexport async function signHash(\n options: SignHashOptions,\n): Promise<SignHashResult> {\n const { accountId, hash } = options\n\n // Sign the hash directly via v2 API (no EIP-191 prefix)\n const response = await sign(accountId, { data: hash })\n\n return {\n signature: response.signature as Hex,\n }\n}\n","/**\n * @module Wallets/EVM/Actions/SignMessage\n * Sign an EIP-191 personal message\n */\n\nimport { hashMessage, toHex } from 'viem'\nimport { UserInputValidationError } from '../../../errors'\nimport { sign } from '../../../openapi-client'\nimport type { Address, Hex, SignableMessage } from '../types'\n\n/**\n * Options for signing a message\n */\nexport interface SignMessageOptions {\n /** Account address */\n address: Address\n /** Account ID for API calls */\n accountId: string\n /** Message to sign */\n message: SignableMessage\n}\n\n/**\n * Result of sign message operation\n */\nexport interface SignMessageResult {\n /** Signature as hex string */\n signature: Hex\n}\n\n/**\n * Signs a message using EIP-191 personal sign.\n * The message is hashed with the EIP-191 prefix and signed via the Openfort API.\n *\n * @param options - Sign message options\n * @returns The signature\n */\nexport async function signMessage(\n options: SignMessageOptions,\n): Promise<SignMessageResult> {\n const { accountId, message } = options\n\n // Convert message to string if needed\n let messageStr: string\n if (typeof message === 'string') {\n messageStr = message\n } else if (message instanceof Uint8Array) {\n messageStr = toHex(message)\n } else if ('raw' in message) {\n messageStr =\n typeof message.raw === 'string' ? message.raw : toHex(message.raw)\n } else {\n throw new UserInputValidationError('Invalid message format')\n }\n\n // Hash the message using EIP-191 format: \"\\x19Ethereum Signed Message:\\n\" + len(message) + message\n const messageHash = hashMessage(messageStr)\n\n // Sign the hash directly via v2 API\n const response = await sign(accountId, { data: messageHash })\n\n return {\n signature: response.signature as Hex,\n }\n}\n","/**\n * @module Wallets/EVM/Actions/SignTransaction\n * Sign an EVM transaction\n */\n\nimport {\n keccak256,\n parseSignature,\n type Signature,\n serializeTransaction,\n} from 'viem'\nimport { sign as signApi } from '../../../openapi-client'\nimport type { Address, Hex, TransactionSerializable } from '../types'\n\n/**\n * Options for signing a transaction\n */\nexport interface SignTransactionOptions {\n /** Account address */\n address: Address\n /** Account ID for API calls */\n accountId: string\n /** Transaction to sign */\n transaction: TransactionSerializable\n}\n\n/**\n * Result of sign transaction operation\n */\nexport interface SignTransactionResult {\n /** Signed transaction as hex string (ready to broadcast) */\n signedTransaction: Hex\n /** Transaction hash */\n transactionHash: Hex\n}\n\n/**\n * Signs an EVM transaction via the Openfort API.\n * The transaction is serialized, signed, and returned as a fully signed\n * transaction ready to broadcast.\n *\n * @param options - Sign transaction options\n * @returns The signed transaction and hash\n */\nexport async function signTransaction(\n options: SignTransactionOptions,\n): Promise<SignTransactionResult> {\n const { accountId, transaction } = options\n\n // Serialize the unsigned transaction\n const serialized = serializeTransaction(transaction)\n\n // Sign the serialized transaction via API\n const response = await signApi(accountId, { data: serialized })\n\n // Parse signature into v, r, s components\n const signature = parseSignature(response.signature as Hex) as Signature\n\n // Re-serialize with signature to get fully signed transaction\n const signedTransaction = serializeTransaction(transaction, signature) as Hex\n\n // Hash the signed transaction to get the transaction hash\n const transactionHash = keccak256(signedTransaction)\n\n return {\n signedTransaction,\n transactionHash,\n }\n}\n","/**\n * @module Wallets/EVM/Actions/SignTypedData\n * Sign EIP-712 typed data\n */\n\nimport { hashTypedData } from 'viem'\nimport { sign } from '../../../openapi-client'\nimport type { Address, Hex, TypedData, TypedDataDefinition } from '../types'\n\n/**\n * Options for signing typed data\n */\nexport interface SignTypedDataOptions<\n T extends TypedData | Record<string, unknown> = TypedData,\n P extends keyof T | 'EIP712Domain' = keyof T,\n> {\n /** Account address */\n address: Address\n /** Account ID for API calls */\n accountId: string\n /** Typed data definition */\n typedData: TypedDataDefinition<T, P>\n}\n\n/**\n * Result of sign typed data operation\n */\nexport interface SignTypedDataResult {\n /** Signature as hex string */\n signature: Hex\n}\n\n/**\n * Signs EIP-712 typed data via the Openfort API.\n * The typed data is hashed according to EIP-712 and signed.\n *\n * @param options - Sign typed data options\n * @returns The signature\n */\nexport async function signTypedData<\n T extends TypedData | Record<string, unknown> = TypedData,\n P extends keyof T | 'EIP712Domain' = keyof T,\n>(options: SignTypedDataOptions<T, P>): Promise<SignTypedDataResult> {\n const { accountId, typedData } = options\n\n // Hash the typed data using EIP-712\n const hash = hashTypedData(typedData)\n\n // Sign the hash via v2 API\n const response = await sign(accountId, { data: hash })\n\n return {\n signature: response.signature as Hex,\n }\n}\n","/**\n * @module Wallets/EVM/Accounts/EvmAccount\n * Factory function for creating EVM account objects with bound action methods\n */\n\nimport { signHash as signHashAction } from '../actions/signHash'\nimport { signMessage as signMessageAction } from '../actions/signMessage'\nimport { signTransaction as signTransactionAction } from '../actions/signTransaction'\nimport { signTypedData as signTypedDataAction } from '../actions/signTypedData'\nimport type {\n Address,\n EvmAccount,\n Hash,\n Hex,\n SignableMessage,\n TransactionSerializable,\n TypedData,\n TypedDataDefinition,\n} from '../types'\n\n/**\n * Raw account data from API response\n */\nexport interface EvmAccountData {\n /** Account unique ID */\n id: string\n /** Account address */\n address: string\n}\n\n/**\n * Creates an EVM account object with bound action methods.\n *\n * @param data - Raw account data from API\n * @returns EVM account object with signing methods\n */\nexport function toEvmAccount(data: EvmAccountData): EvmAccount {\n const { id, address } = data\n\n const account: EvmAccount = {\n id,\n address: address as Address,\n custody: 'Developer',\n\n async sign(parameters: { hash: Hash }): Promise<Hex> {\n const result = await signHashAction({\n accountId: id,\n hash: parameters.hash,\n })\n return result.signature\n },\n\n async signMessage(parameters: { message: SignableMessage }): Promise<Hex> {\n const result = await signMessageAction({\n address: address as Address,\n accountId: id,\n message: parameters.message,\n })\n return result.signature\n },\n\n async signTransaction(transaction: TransactionSerializable): Promise<Hex> {\n const result = await signTransactionAction({\n address: address as Address,\n accountId: id,\n transaction,\n })\n return result.signedTransaction\n },\n\n async signTypedData<\n const T extends TypedData | Record<string, unknown>,\n P extends keyof T | 'EIP712Domain' = keyof T,\n >(parameters: TypedDataDefinition<T, P>): Promise<Hex> {\n const result = await signTypedDataAction({\n address: address as Address,\n accountId: id,\n typedData: parameters,\n })\n return result.signature\n },\n }\n\n return account\n}\n","/**\n * @module Wallets/EVM/EvmClient\n * Main client for EVM wallet operations\n */\n\nimport { IMPORT_ENCRYPTION_PUBLIC_KEY } from '../../constants'\nimport {\n AccountNotFoundError,\n EncryptionError,\n UserInputValidationError,\n} from '../../errors'\nimport {\n type BackendWalletResponse,\n createBackendWallet,\n exportPrivateKey,\n getBackendWallet,\n importPrivateKey,\n listBackendWallets,\n sign,\n} from '../../openapi-client'\nimport {\n decryptExportedPrivateKey,\n encryptForImport,\n generateRSAKeyPair,\n} from '../../utilities/encryption'\nimport type { ListAccountsResult } from '../types'\nimport { type EvmAccountData, toEvmAccount } from './accounts/evmAccount'\nimport type {\n CreateEvmAccountOptions,\n EvmAccount,\n ExportEvmAccountOptions,\n GetEvmAccountOptions,\n ImportEvmAccountOptions,\n ListEvmAccountsOptions,\n SignDataOptions,\n} from './types'\n\n/**\n * Converts a BackendWalletResponse to EvmAccountData\n */\nfunction toEvmAccountData(response: BackendWalletResponse): EvmAccountData {\n return {\n id: response.id,\n address: response.address,\n }\n}\n\n/**\n * Options for creating an EVM wallet client\n */\nexport interface EvmClientOptions {\n /** Optional custom API base URL */\n basePath?: string\n /** Optional wallet secret for X-Wallet-Auth header */\n walletSecret?: string\n}\n\n/**\n * Client for managing EVM wallets.\n * Provides methods for creating, retrieving, and managing server-side EVM accounts.\n */\nexport class EvmClient {\n static type = 'evmWallet'\n\n /**\n * Creates a new EVM wallet client.\n *\n * Note: The API client is configured globally via the main Openfort class.\n * This client just provides wallet-specific methods.\n *\n * @param _accessToken - Openfort API key (passed for backwards compatibility)\n * @param _options - Optional client configuration (for backwards compatibility)\n */\n // biome-ignore lint/complexity/noUselessConstructor: Constructor needed for backwards compatibility\n constructor(_accessToken?: string, _options?: string | EvmClientOptions) {\n // The API client is configured globally via openfortApiClient.configure()\n // No per-client configuration needed anymore\n }\n\n /**\n * Creates a new EVM backend wallet.\n *\n * @param options - Account creation options\n * @returns The created EVM account\n *\n * @example\n * ```typescript\n * // Create an EVM wallet\n * const account = await openfort.evm.createAccount();\n *\n * // Create with a specific wallet\n * const account = await openfort.evm.createAccount({\n * wallet: 'pla_...',\n * });\n * ```\n */\n public async createAccount(\n options: CreateEvmAccountOptions = {},\n ): Promise<EvmAccount> {\n const response = await createBackendWallet({\n chainType: 'EVM',\n wallet: options.wallet,\n })\n\n return toEvmAccount({\n id: response.id,\n address: response.address,\n })\n }\n\n /**\n * Retrieves an existing EVM account.\n *\n * @param options - Account retrieval options (id or address)\n * @returns The EVM account\n *\n * @example\n * ```typescript\n * const account = await openfort.evm.getAccount({\n * id: 'acc_...',\n * });\n *\n * // Or by address (requires listing and filtering)\n * const account = await openfort.evm.getAccount({\n * address: '0x...',\n * });\n * ```\n */\n public async getAccount(options: GetEvmAccountOptions): Promise<EvmAccount> {\n if (!options.id && !options.address) {\n throw new UserInputValidationError(\n 'Must provide either id or address to get account',\n )\n }\n\n // If we have an ID, fetch directly\n if (options.id) {\n const response = await getBackendWallet(options.id)\n return toEvmAccount(toEvmAccountData(response))\n }\n\n // For address lookup, use listBackendWallets with address filter\n if (options.address) {\n const wallets = await listBackendWallets({\n address: options.address,\n chainType: 'EVM',\n limit: 1,\n })\n\n if (wallets.data.length === 0) {\n throw new AccountNotFoundError()\n }\n\n return toEvmAccount(toEvmAccountData(wallets.data[0]))\n }\n\n throw new AccountNotFoundError()\n }\n\n /**\n * Lists all EVM backend wallets.\n *\n * @param options - List options (limit, skip, filters)\n * @returns List of EVM accounts\n *\n * @example\n * ```typescript\n * const { accounts } = await openfort.evm.listAccounts({\n * limit: 10,\n * });\n * ```\n */\n public async listAccounts(\n options: ListEvmAccountsOptions = {},\n ): Promise<ListAccountsResult<EvmAccount>> {\n const response = await listBackendWallets({\n limit: options.limit,\n skip: options.skip,\n chainType: 'EVM',\n })\n\n const accounts = response.data.map((wallet) =>\n toEvmAccount(toEvmAccountData(wallet)),\n )\n\n return {\n accounts,\n total: response.total,\n }\n }\n\n /**\n * Imports an EVM account using a private key.\n * The private key is encrypted using RSA-OAEP with SHA-256.\n *\n * @param options - Import options including the private key\n * @returns The imported EVM account\n *\n * @example\n * ```typescript\n * const account = await openfort.evm.importAccount({\n * privateKey: '0x...',\n * });\n * ```\n */\n public async importAccount(\n options: ImportEvmAccountOptions,\n ): Promise<EvmAccount> {\n // Validate private key format\n const privateKeyHex = options.privateKey.startsWith('0x')\n ? options.privateKey.slice(2)\n : options.privateKey\n\n if (!/^[0-9a-fA-F]{64}$/.test(privateKeyHex)) {\n throw new UserInputValidationError(\n 'Private key must be a valid 32-byte hexadecimal string (64 characters)',\n )\n }\n\n // Check if server public key is configured\n if (!IMPORT_ENCRYPTION_PUBLIC_KEY) {\n throw new EncryptionError(\n 'Import encryption public key is not configured. ' +\n 'Please contact Openfort to get the server public key.',\n )\n }\n\n try {\n // Encrypt the private key with the server's RSA public key\n const encryptedPrivateKey = encryptForImport(\n privateKeyHex,\n IMPORT_ENCRYPTION_PUBLIC_KEY,\n )\n\n // Call the import API\n const response = await importPrivateKey({\n encryptedPrivateKey,\n chainType: 'EVM',\n name: options.name,\n })\n\n return toEvmAccount({\n id: response.id,\n address: response.address,\n })\n } catch (error) {\n if (error instanceof UserInputValidationError) {\n throw error\n }\n throw new EncryptionError(\n `Failed to encrypt private key: ${error instanceof Error ? error.message : String(error)}`,\n )\n }\n }\n\n /**\n * Exports an EVM account's private key.\n * Uses RSA-OAEP with SHA-256 for E2E encryption.\n *\n * @param options - Export options with account ID\n * @returns The private key as a hex string (without 0x prefix)\n *\n * @example\n * ```typescript\n * const privateKey = await openfort.evm.exportAccount({\n * id: 'acc_...',\n * });\n * // Returns: 'a1b2c3d4...' (64-character hex string)\n * ```\n */\n public async exportAccount(\n options: ExportEvmAccountOptions,\n ): Promise<string> {\n // Generate ephemeral RSA key pair for decryption\n const { publicKey, privateKeyPem } = generateRSAKeyPair()\n\n // Call the export API with our ephemeral public key\n const response = await exportPrivateKey(options.id, {\n encryptionKey: publicKey,\n })\n\n // Decrypt the private key using our ephemeral private key\n const privateKey = decryptExportedPrivateKey(\n response.encryptedPrivateKey,\n privateKeyPem,\n )\n\n return privateKey\n }\n\n /**\n * Signs data (transaction or message hash) using the backend wallet.\n *\n * @param options - Sign options with account ID and data\n * @returns The signature as a hex string\n *\n * @example\n * ```typescript\n * const signature = await openfort.evm.signData({\n * id: 'acc_...',\n * data: '0x...', // hex-encoded transaction or message hash\n * });\n * ```\n */\n public async signData(options: SignDataOptions): Promise<string> {\n const response = await sign(options.id, {\n data: options.data,\n })\n\n return response.signature\n }\n}\n","/**\n * @module Wallets/Solana/SolanaClient\n * Main client for Solana wallet operations\n */\n\nimport bs58 from 'bs58'\nimport { IMPORT_ENCRYPTION_PUBLIC_KEY } from '../../constants'\nimport {\n AccountNotFoundError,\n EncryptionError,\n UserInputValidationError,\n} from '../../errors'\nimport {\n type BackendWalletResponse,\n createBackendWallet,\n exportPrivateKey,\n getBackendWallet,\n importPrivateKey,\n listBackendWallets,\n sign,\n} from '../../openapi-client'\nimport {\n decryptExportedPrivateKey,\n encryptForImport,\n generateRSAKeyPair,\n} from '../../utilities/encryption'\nimport type { ListAccountsResult } from '../types'\nimport {\n type SolanaAccountData,\n toSolanaAccount,\n} from './accounts/solanaAccount'\nimport type {\n CreateSolanaAccountOptions,\n ExportSolanaAccountOptions,\n GetSolanaAccountOptions,\n ImportSolanaAccountOptions,\n ListSolanaAccountsOptions,\n SolanaAccount,\n} from './types'\n\n/**\n * Converts a BackendWalletResponse to SolanaAccountData\n */\nfunction toSolanaAccountData(\n response: BackendWalletResponse,\n): SolanaAccountData {\n return {\n id: response.id,\n address: response.address,\n }\n}\n\n/**\n * Options for creating a Solana wallet client\n */\nexport interface SolanaClientOptions {\n /** Optional custom API base URL */\n basePath?: string\n /** Optional wallet secret for X-Wallet-Auth header */\n walletSecret?: string\n}\n\n/**\n * Client for managing Solana wallets.\n * Provides methods for creating, retrieving, and managing server-side Solana accounts.\n */\nexport class SolanaClient {\n static type = 'solanaWallet'\n\n /**\n * Creates a new Solana wallet client.\n *\n * Note: The API client is configured globally via the main Openfort class.\n * This client just provides wallet-specific methods.\n *\n * @param _accessToken - Openfort API key (passed for backwards compatibility)\n * @param _options - Optional client configuration (for backwards compatibility)\n */\n // biome-ignore lint/complexity/noUselessConstructor: Constructor needed for backwards compatibility\n constructor(_accessToken?: string, _options?: string | SolanaClientOptions) {\n // The API client is configured globally via openfortApiClient.configure()\n // No per-client configuration needed anymore\n }\n\n /**\n * Creates a new Solana backend wallet.\n *\n * @param options - Account creation options\n * @returns The created Solana account\n *\n * @example\n * ```typescript\n * // Create a Solana wallet\n * const account = await openfort.solana.createAccount();\n *\n * // Create with a specific wallet/player\n * const account = await openfort.solana.createAccount({\n * wallet: 'pla_...',\n * });\n * ```\n */\n public async createAccount(\n options: CreateSolanaAccountOptions = {},\n ): Promise<SolanaAccount> {\n const response = await createBackendWallet({\n chainType: 'SVM',\n wallet: options.wallet,\n })\n\n return toSolanaAccount({\n id: response.id,\n address: response.address,\n })\n }\n\n /**\n * Retrieves an existing Solana account.\n *\n * @param options - Account retrieval options (id or address)\n * @returns The Solana account\n *\n * @example\n * ```typescript\n * const account = await openfort.solana.getAccount({\n * id: 'acc_...',\n * });\n *\n * // Or by address (requires listing and filtering)\n * const account = await openfort.solana.getAccount({\n * address: 'So1ana...',\n * });\n * ```\n */\n public async getAccount(\n options: GetSolanaAccountOptions,\n ): Promise<SolanaAccount> {\n if (!options.id && !options.address) {\n throw new UserInputValidationError(\n 'Must provide either id or address to get account',\n )\n }\n\n // If we have an ID, fetch directly\n if (options.id) {\n const response = await getBackendWallet(options.id)\n return toSolanaAccount(toSolanaAccountData(response))\n }\n\n // For address lookup, use listBackendWallets with address filter\n if (options.address) {\n const wallets = await listBackendWallets({\n address: options.address,\n chainType: 'SVM',\n limit: 1,\n })\n\n if (wallets.data.length === 0) {\n throw new AccountNotFoundError()\n }\n\n return toSolanaAccount(toSolanaAccountData(wallets.data[0]))\n }\n\n throw new AccountNotFoundError()\n }\n\n /**\n * Lists all Solana backend wallets.\n *\n * @param options - List options (limit, skip, filters)\n * @returns List of Solana accounts\n *\n * @example\n * ```typescript\n * const { accounts } = await openfort.solana.listAccounts({\n * limit: 10,\n * });\n * ```\n */\n public async listAccounts(\n options: ListSolanaAccountsOptions = {},\n ): Promise<ListAccountsResult<SolanaAccount>> {\n const response = await listBackendWallets({\n limit: options.limit,\n skip: options.skip,\n chainType: 'SVM',\n })\n\n const accounts = response.data.map((wallet) =>\n toSolanaAccount(toSolanaAccountData(wallet)),\n )\n\n return {\n accounts,\n total: response.total,\n }\n }\n\n /**\n * Imports a Solana account using a private key.\n * The private key is encrypted using RSA-OAEP with SHA-256.\n *\n * @param options - Import options including the private key\n * @returns The imported Solana account\n *\n * @example\n * ```typescript\n * const account = await openfort.solana.importAccount({\n * privateKey: '5K...', // base58 or hex format\n * name: 'ImportedWallet',\n * });\n * ```\n */\n public async importAccount(\n options: ImportSolanaAccountOptions,\n ): Promise<SolanaAccount> {\n let privateKeyBytes: Uint8Array\n\n // Determine the format and convert to bytes\n if (options.privateKey.startsWith('0x')) {\n // Hex format with 0x prefix\n const hex = options.privateKey.slice(2)\n if (!/^[0-9a-fA-F]+$/.test(hex)) {\n throw new UserInputValidationError('Invalid hex string')\n }\n privateKeyBytes = Uint8Array.from(Buffer.from(hex, 'hex'))\n } else if (/^[0-9a-fA-F]+$/.test(options.privateKey)) {\n // Hex format without prefix\n privateKeyBytes = Uint8Array.from(Buffer.from(options.privateKey, 'hex'))\n } else {\n // Assume base58 format (standard Solana format)\n try {\n privateKeyBytes = bs58.decode(options.privateKey)\n } catch {\n throw new UserInputValidationError(\n 'Invalid private key format. Provide either a base58 string or hex string.',\n )\n }\n }\n\n // Solana private keys can be 32 bytes (seed) or 64 bytes (full keypair)\n // If 64 bytes, the first 32 are the private key, last 32 are the public key\n if (privateKeyBytes.length === 64) {\n privateKeyBytes = privateKeyBytes.slice(0, 32)\n } else if (privateKeyBytes.length !== 32) {\n throw new UserInputValidationError(\n 'Private key must be 32 bytes (seed) or 64 bytes (full keypair)',\n )\n }\n\n // Convert to hex for encryption\n const privateKeyHex = Buffer.from(privateKeyBytes).toString('hex')\n\n // Check if server public key is configured\n if (!IMPORT_ENCRYPTION_PUBLIC_KEY) {\n throw new EncryptionError(\n 'Import encryption public key is not configured. ' +\n 'Please contact Openfort to get the server public key.',\n )\n }\n\n try {\n // Encrypt the private key with the server's RSA public key\n const encryptedPrivateKey = encryptForImport(\n privateKeyHex,\n IMPORT_ENCRYPTION_PUBLIC_KEY,\n )\n\n // Call the import API\n const response = await importPrivateKey({\n encryptedPrivateKey,\n chainType: 'SVM',\n name: options.name,\n })\n\n return toSolanaAccount({\n id: response.id,\n address: response.address,\n })\n } catch (error) {\n if (error instanceof UserInputValidationError) {\n throw error\n }\n throw new EncryptionError(\n `Failed to encrypt private key: ${error instanceof Error ? error.message : String(error)}`,\n )\n }\n }\n\n /**\n * Exports a Solana account's private key.\n * Uses RSA-OAEP with SHA-256 for E2E encryption.\n *\n * @param options - Export options with account ID\n * @returns The private key as a base58 encoded string (standard Solana format)\n *\n * @example\n * ```typescript\n * const privateKey = await openfort.solana.exportAccount({\n * id: 'acc_...',\n * });\n * // Returns: '5Kd3...' (base58 encoded)\n * ```\n */\n public async exportAccount(\n options: ExportSolanaAccountOptions,\n ): Promise<string> {\n // Generate ephemeral RSA key pair for decryption\n const { publicKey, privateKeyPem } = generateRSAKeyPair()\n\n // Call the export API with our ephemeral public key\n const response = await exportPrivateKey(options.id, {\n encryptionKey: publicKey,\n })\n\n // Decrypt the private key using our ephemeral private key\n const privateKeyHex = decryptExportedPrivateKey(\n response.encryptedPrivateKey,\n privateKeyPem,\n )\n\n // Convert hex to base58 (standard Solana format)\n const privateKeyBytes = Buffer.from(privateKeyHex, 'hex')\n return bs58.encode(privateKeyBytes)\n }\n\n /**\n * Signs data using the backend wallet.\n *\n * @param accountId - The account ID\n * @param data - Data to sign (hex-encoded)\n * @returns The signature\n */\n public async signData(accountId: string, data: string): Promise<string> {\n const response = await sign(accountId, { data })\n return response.signature\n }\n}\n","/**\n * @module Wallets/Solana/Actions/SignMessage\n * Sign a Solana message\n */\n\nimport { sign } from '../../../openapi-client'\nimport type { SignMessageOptions } from '../types'\n\n/**\n * Result of sign message operation\n */\nexport interface SignMessageResult {\n /** Signature as base58 string */\n signature: string\n}\n\n/**\n * Signs a message via the Openfort API.\n * The message is UTF-8 encoded and signed.\n *\n * @param options - Sign message options\n * @returns The signature\n */\nexport async function signMessage(\n options: SignMessageOptions,\n): Promise<SignMessageResult> {\n const { accountId, message } = options\n\n // Encode message as hex for the API\n const messageBytes = Buffer.from(message, 'utf-8')\n const messageHex = `0x${messageBytes.toString('hex')}`\n\n // Sign via v2 API\n const response = await sign(accountId, { data: messageHex })\n\n return {\n signature: response.signature,\n }\n}\n","/**\n * @module Wallets/Solana/Actions/SignTransaction\n * Sign a Solana transaction\n */\n\nimport { sign as signApi } from '../../../openapi-client'\nimport type { SignTransactionOptions } from '../types'\n\n/**\n * Result of sign transaction operation\n */\nexport interface SignTransactionResult {\n /** Signed transaction as base64 string */\n signedTransaction: string\n}\n\n/**\n * Signs a Solana transaction via the Openfort API.\n * The transaction should be a base64-encoded serialized transaction.\n *\n * @param options - Sign transaction options\n * @returns The signed transaction\n *\n * @example\n * ```typescript\n * import { Transaction } from '@solana/web3.js';\n *\n * // Create your transaction\n * const transaction = new Transaction();\n * // ... add instructions ...\n *\n * // Serialize without requiring signatures\n * const serialized = transaction.serialize({\n * requireAllSignatures: false,\n * });\n *\n * // Base64 encode for the API\n * const base64Tx = Buffer.from(serialized).toString('base64');\n *\n * // Sign via Openfort\n * const { signedTransaction } = await signTransaction({\n * accountId: 'acc_...',\n * transaction: base64Tx,\n * });\n * ```\n */\nexport async function signTransaction(\n options: SignTransactionOptions,\n): Promise<SignTransactionResult> {\n const { accountId, transaction } = options\n\n // Convert base64 to hex for the API\n const txBytes = Buffer.from(transaction, 'base64')\n const txHex = `0x${txBytes.toString('hex')}`\n\n // Sign via v2 API\n const response = await signApi(accountId, { data: txHex })\n\n // The response signature is the signed transaction\n return {\n signedTransaction: response.signature,\n }\n}\n","/**\n * @module Wallets/Solana/Accounts/SolanaAccount\n * Factory function for creating Solana account objects with bound action methods\n */\n\nimport { signMessage as signMessageAction } from '../actions/signMessage'\nimport { signTransaction as signTransactionAction } from '../actions/signTransaction'\nimport type { SolanaAccount } from '../types'\n\n/**\n * Raw account data from API response\n */\nexport interface SolanaAccountData {\n /** Account unique ID */\n id: string\n /** Account address (base58 encoded) */\n address: string\n}\n\n/**\n * Creates a Solana account object with bound action methods.\n *\n * @param data - Raw account data from API\n * @returns Solana account object with signing methods\n */\nexport function toSolanaAccount(data: SolanaAccountData): SolanaAccount {\n const { id, address } = data\n\n const account: SolanaAccount = {\n id,\n address,\n custody: 'Developer',\n\n async signMessage(parameters: { message: string }): Promise<string> {\n const result = await signMessageAction({\n accountId: id,\n message: parameters.message,\n })\n return result.signature\n },\n\n async signTransaction(parameters: {\n transaction: string\n }): Promise<string> {\n const result = await signTransactionAction({\n accountId: id,\n transaction: parameters.transaction,\n })\n return result.signedTransaction\n },\n }\n\n return account\n}\n"],"mappings":";;;;;;;AAAA;AAAA,EACE;AAAA,EAGA;AAAA,EACA;AAAA,OACK;AACP,OAAO,WAAW;;;ACCX,IAAM,qBAAN,MAAM,4BAA2B,MAAM;AAAA,EAC5C,cAAc;AACZ,UAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAsBT;AACG,SAAK,OAAO;AACZ,QAAI,MAAM,mBAAmB;AAC3B,YAAM,kBAAkB,MAAM,mBAAkB;AAAA,IAClD;AAAA,EACF;AACF;AAKO,IAAM,2BAAN,MAAM,kCAAiC,MAAM;AAAA,EAClD,YAAY,KAAa;AACvB,UAAM,SAAS,IAAI,SAAS,IAAI,GAAG,IAAI,UAAU,GAAG,CAAC,CAAC,QAAQ;AAC9D,UAAM;AAAA,2BACiB,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAUhC;AACG,SAAK,OAAO;AACZ,QAAI,MAAM,mBAAmB;AAC3B,YAAM,kBAAkB,MAAM,yBAAwB;AAAA,IACxD;AAAA,EACF;AACF;AAKO,IAAM,mCAAN,MAAM,0CAAyC,MAAM;AAAA,EAC1D,YAAY,KAAa;AACvB,UAAM,SAAS,IAAI,SAAS,IAAI,GAAG,IAAI,UAAU,GAAG,CAAC,CAAC,QAAQ;AAC9D,UAAM;AAAA,mCACyB,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAOxC;AACG,SAAK,OAAO;AACZ,QAAI,MAAM,mBAAmB;AAC3B,YAAM,kBAAkB,MAAM,iCAAgC;AAAA,IAChE;AAAA,EACF;AACF;AAKO,IAAM,2BAAN,MAAM,kCAAiC,MAAM;AAAA,EAClD,YAAY,WAAmB;AAC7B,UAAM;AAAA,8CACoC,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAetD;AACG,SAAK,OAAO;AACZ,QAAI,MAAM,mBAAmB;AAC3B,YAAM,kBAAkB,MAAM,yBAAwB;AAAA,IACxD;AAAA,EACF;AACF;AAKO,IAAM,iCAAN,MAAM,wCAAuC,MAAM;AAAA,EACxD,YAAY,QAAgB;AAC1B,UAAM;AAAA,gCACsB,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAMrC;AACG,SAAK,OAAO;AACZ,QAAI,MAAM,mBAAmB;AAC3B,YAAM,kBAAkB,MAAM,+BAA8B;AAAA,IAC9D;AAAA,EACF;AACF;AAKO,IAAM,6BAAN,MAAM,oCAAmC,MAAM;AAAA,EACpD,YAAY,WAAmB;AAC7B,UAAM;AAAA,gDACsC,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAexD;AACG,SAAK,OAAO;AACZ,QAAI,MAAM,mBAAmB;AAC3B,YAAM,kBAAkB,MAAM,2BAA0B;AAAA,IAC1D;AAAA,EACF;AACF;AAKO,IAAM,eAAN,MAAM,sBAAqB,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMtC,YAAY,UAAU,iBAAiB;AACrC,UAAM,OAAO;AACb,SAAK,OAAO;AACZ,QAAI,MAAM,mBAAmB;AAC3B,YAAM,kBAAkB,MAAM,aAAY;AAAA,IAC5C;AAAA,EACF;AACF;AAKO,IAAM,2BAAN,MAAM,kCAAiC,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMlD,YAAY,SAAiB;AAC3B,UAAM,OAAO;AACb,SAAK,OAAO;AACZ,QAAI,MAAM,mBAAmB;AAC3B,YAAM,kBAAkB,MAAM,yBAAwB;AAAA,IACxD;AAAA,EACF;AACF;AAKO,IAAM,uBAAN,MAAM,8BAA6B,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAM9C,YAAY,UAAU,qBAAqB;AACzC,UAAM,OAAO;AACb,SAAK,OAAO;AACZ,QAAI,MAAM,mBAAmB;AAC3B,YAAM,kBAAkB,MAAM,qBAAoB;AAAA,IACpD;AAAA,EACF;AACF;AAKO,IAAM,kBAAN,MAAM,yBAAwB,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMzC,YAAY,SAAiB;AAC3B,UAAM,OAAO;AACb,SAAK,OAAO;AACZ,QAAI,MAAM,mBAAmB;AAC3B,YAAM,kBAAkB,MAAM,gBAAe;AAAA,IAC/C;AAAA,EACF;AACF;;;ACtMO,SAAS,gBAAgB,KAA4C;AAC1E,SACE,QAAQ,QACR,OAAO,QAAQ,aACd,aAAa,OAAO,WAAW;AAEpC;AAKO,IAAM,WAAN,cAAuB,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAkBlC,YACE,YACA,WACA,cACA,eACA,WACA,OACA;AACA,UAAM,YAAY;AAClB,QAAI,OAAO;AACT,WAAK,QAAQ;AAAA,IACf;AACA,SAAK,OAAO;AACZ,SAAK,aAAa;AAClB,SAAK,YAAY;AACjB,SAAK,eAAe;AAEpB,QAAI,kBAAkB,QAAW;AAC/B,WAAK,gBAAgB;AAAA,IACvB;AAEA,QAAI,cAAc,QAAW;AAC3B,WAAK,YAAY;AAAA,IACnB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,SAAS;AACP,WAAO;AAAA,MACL,MAAM,KAAK;AAAA,MACX,YAAY,KAAK;AAAA,MACjB,WAAW,KAAK;AAAA,MAChB,cAAc,KAAK;AAAA,MACnB,GAAI,KAAK,iBAAiB,EAAE,eAAe,KAAK,cAAc;AAAA,MAC9D,GAAI,KAAK,aAAa,EAAE,WAAW,KAAK,UAAU;AAAA,IACpD;AAAA,EACF;AACF;AAMO,IAAM,eAAN,cAA2B,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAezC,YACE,WACA,cACA,gBACA,OACA;AACA;AAAA,MACE;AAAA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AACA,SAAK,OAAO;AACZ,SAAK,iBAAiB;AAAA,EACxB;AAAA;AAAA;AAAA;AAAA,EAKA,SAAS;AACP,WAAO;AAAA,MACL,GAAG,MAAM,OAAO;AAAA,MAChB,GAAI,KAAK,kBAAkB,EAAE,gBAAgB,KAAK,eAAe;AAAA,IACnE;AAAA,EACF;AACF;AAKO,IAAM,eAAN,cAA2B,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAStC,YAAY,SAAiB,OAAe;AAC1C,UAAM,OAAO;AACb,QAAI,OAAO;AACT,WAAK,QAAQ;AAAA,IACf;AACA,SAAK,OAAO;AAAA,EACd;AACF;AAKO,IAAM,kBAAN,cAA8B,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWzC,YAAY,SAAiB,OAAgB,OAAiB;AAC5D,UAAM,OAAO;AACb,SAAK,OAAO;AACZ,SAAK,QAAQ;AACb,SAAK,QAAQ;AAAA,EACf;AACF;;;ACpMA,OAAO,WAA4D;AACnE,OAAO,cAAc,wBAAwB;;;ACI7C,SAAS,YAAY,mBAAmB;AACxC,SAAS,aAAa,eAAe;AAyBrC,SAAS,gBAAwB;AAC/B,SAAO,YAAY,EAAE,EAAE,SAAS,KAAK;AACvC;AAKA,SAAS,gBAAgB,MAAuC;AAC9D,QAAM,aAAa,SAAS,IAAI;AAChC,QAAM,aAAa,KAAK,UAAU,UAAU;AAC5C,SAAO,WAAW,QAAQ,EAAE,OAAO,UAAU,EAAE,OAAO,KAAK;AAC7D;AAOO,SAAS,SAAS,KAAuB;AAC9C,MAAI,QAAQ,QAAQ,OAAO,QAAQ,UAAU;AAC3C,WAAO;AAAA,EACT;AAEA,MAAI,MAAM,QAAQ,GAAG,GAAG;AACtB,WAAO,IAAI,IAAI,QAAQ;AAAA,EACzB;AAEA,QAAM,SAAkC,CAAC;AACzC,aAAW,OAAO,OAAO,KAAK,GAA8B,EAAE,KAAK,GAAG;AACpE,WAAO,GAAG,IAAI,SAAU,IAAgC,GAAG,CAAC;AAAA,EAC9D;AACA,SAAO;AACT;AAUA,eAAsB,kBACpB,SACiB;AACjB,MAAI,CAAC,QAAQ,cAAc;AACzB,UAAM,IAAI,yBAAyB,2BAA2B;AAAA,EAChE;AAEA,QAAM,MAAM,GAAG,QAAQ,aAAa,IAAI,QAAQ,WAAW,GAAG,QAAQ,WAAW;AACjF,QAAM,MAAM,KAAK,MAAM,KAAK,IAAI,IAAI,GAAI;AAExC,QAAM,SAAkC;AAAA,IACtC,MAAM,CAAC,GAAG;AAAA,EACZ;AAGA,MACE,QAAQ,eACR,OAAO,QAAQ,gBAAgB,YAC/B,OAAO,KAAK,QAAQ,WAAW,EAAE,SAAS,KAC1C,OAAO,OAAO,QAAQ,WAAW,EAAE,KAAK,CAAC,UAAU,UAAU,MAAS,GACtE;AACA,WAAO,UAAU,gBAAgB,QAAQ,WAAW;AAAA,EACtD;AAEA,MAAI;AAEF,UAAM,YAAY,OAAO,KAAK,QAAQ,cAAc,QAAQ;AAC5D,UAAM,SAAS;AAAA,EAAgC,UAC5C,SAAS,QAAQ,EACjB,MAAM,UAAU,GACf,KAAK,IAAI,CAAC;AAAA;AAEd,UAAM,QAAQ,MAAM,YAAY,QAAQ,OAAO;AAE/C,WAAO,MAAM,IAAI,QAAQ,MAAM,EAC5B,mBAAmB,EAAE,KAAK,SAAS,KAAK,MAAM,CAAC,EAC/C,YAAY,GAAG,EACf,aAAa,GAAG,EAChB,OAAO,cAAc,CAAC,EACtB,KAAK,KAAK;AAAA,EACf,SAAS,OAAO;AACd,UAAM,IAAI;AAAA,MACR,gCAAgC,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CAAC;AAAA,IACxF;AAAA,EACF;AACF;AASO,SAAS,mBACd,eACA,aACS;AAET,QAAM,qBACJ,kBAAkB,UAClB,kBAAkB,YAClB,kBAAkB;AAEpB,QAAM,mBAAmB,aAAa,SAAS,mBAAmB;AAElE,SAAO,sBAAsB;AAC/B;;;AC5IO,IAAM,UAAU;AAChB,IAAM,UAAU;;;AFgBvB,IAAM,iBAAiB;AAsBvB,IAAI;AACJ,IAAI;AAKJ,SAAS,wBAA2B,KAAW;AAC7C,MAAI,QAAQ,QAAQ,QAAQ,QAAW;AACrC,WAAO;AAAA,EACT;AAEA,MAAI,OAAO,QAAQ,UAAU;AAC3B,WAAO,IAAI,SAAS;AAAA,EACtB;AAEA,MAAI,MAAM,QAAQ,GAAG,GAAG;AACtB,WAAO,IAAI,IAAI,uBAAuB;AAAA,EACxC;AAEA,MAAI,OAAO,QAAQ,UAAU;AAC3B,UAAM,SAAkC,CAAC;AACzC,eAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,GAAG,GAAG;AAC9C,aAAO,GAAG,IAAI,wBAAwB,KAAK;AAAA,IAC7C;AACA,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAKA,SAAS,gBAAgB,QAAkC;AACzD,MAAI,CAAC,eAAe;AAClB,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,MAAI,CAAC,OAAO,OAAO,OAAO,QAAQ,IAAI;AACpC,UAAM,IAAI,gBAAgB,0BAA0B;AAAA,EACtD;AAEA,MAAI,CAAC,OAAO,UAAU,OAAO,WAAW,IAAI;AAC1C,UAAM,IAAI,gBAAgB,6BAA6B;AAAA,EACzD;AACF;AAMA,SAAS,uBAAuB,aAA8B;AAC5D,SAAO,YAAY,WAAW,eAAe;AAC/C;AAOO,IAAM,YAAY,CAAC,YAAyC;AACjE,QAAM,UAAU,QAAQ,YAAY;AAEpC,iBAAe;AAAA,IACb,GAAG;AAAA,IACH,UAAU;AAAA,EACZ;AAEA,kBAAgB,MAAM,OAAO;AAAA,IAC3B;AAAA,IACA,SAAS;AAAA,MACP,cAAc,GAAG,OAAO,IAAI,OAAO;AAAA,MACnC,GAAI,QAAQ,UAAU,EAAE,YAAY,QAAQ,OAAO;AAAA,MACnD,GAAI,QAAQ,iBAAiB;AAAA,QAC3B,oBAAoB,QAAQ;AAAA,MAC9B;AAAA,MACA,GAAI,QAAQ,kBAAkB;AAAA,QAC5B,iBAAiB,QAAQ;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,kBAAkB;AAAA,MAChB,SAAS;AAAA;AAAA,IACX;AAAA,EACF,CAAC;AAGD,aAAW,eAAe;AAAA,IACxB,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,gBAAgB,CAAC,UAAU;AAEzB,aACE,WAAW,kCAAkC,KAAK,KACjD,MAAM,UAAU,WAAW,UAAa,MAAM,SAAS,UAAU;AAAA,IAEtE;AAAA,EACF,CAAC;AAGD,gBAAc,aAAa,QAAQ,IAAI,OAAO,WAAW;AAEvD,QAAI,CAAC,OAAO,QAAQ,eAAe;AACjC,aAAO,QAAQ,gBAAgB,UAAU,QAAQ,MAAM;AAAA,IACzD;AAGA,QAAI,OAAO,MAAM;AACf,aAAO,OAAO,wBAAwB,OAAO,IAAI;AAAA,IACnD;AAGA,QAAI,OAAO,OAAO,OAAO,QAAQ;AAC/B,YAAM,MAAM,IAAI,IAAI,OAAO,KAAK,OAAO;AACvC,YAAM,SAAS,OAAO,OAAO,YAAY;AACzC,YAAM,OAAO,IAAI;AAGjB,UAAI,uBAAuB,IAAI,KAAK,CAAC,QAAQ,gBAAgB;AAC3D,cAAM,IAAI,2BAA2B,GAAG,MAAM,IAAI,IAAI,EAAE;AAAA,MAC1D;AAEA,UAAI,mBAAmB,QAAQ,IAAI,GAAG;AAEpC,YAAI,CAAC,QAAQ,cAAc;AACzB,gBAAM,IAAI,yBAAyB,GAAG,MAAM,IAAI,IAAI,EAAE;AAAA,QACxD;AAEA,YAAI,cAAuC,CAAC;AAC5C,YAAI,OAAO,QAAQ,OAAO,OAAO,SAAS,UAAU;AAClD,wBAAc,OAAO;AAAA,QACvB;AAMA,YAAI,OAAO,KAAK,WAAW,EAAE,SAAS,GAAG;AACvC,iBAAO,OAAO,SAAS,WAAW;AAAA,QACpC;AAEA,cAAM,kBAAkB,MAAM,kBAAkB;AAAA,UAC9C,cAAc,QAAQ;AAAA,UACtB,eAAe;AAAA,UACf,aAAa,IAAI;AAAA,UACjB,aAAa;AAAA,UACb;AAAA,QACF,CAAC;AAED,eAAO,QAAQ,eAAe,IAAI;AAAA,MACpC;AAAA,IACF;AAEA,WAAO;AAAA,EACT,CAAC;AAGD,MAAI,QAAQ,WAAW;AACrB,kBAAc,aAAa,QAAQ,IAAI,CAAC,WAAW;AACjD,cAAQ,IAAI,uBAAuB;AAAA,QACjC,QAAQ,OAAO,QAAQ,YAAY;AAAA,QACnC,KAAK,OAAO;AAAA,QACZ,SAAS,OAAO;AAAA,QAChB,MAAM,OAAO;AAAA,MACf,CAAC;AACD,aAAO;AAAA,IACT,CAAC;AAED,kBAAc,aAAa,SAAS;AAAA,MAClC,CAAC,aAAa;AACZ,gBAAQ,IAAI,wBAAwB;AAAA,UAClC,QAAQ,SAAS;AAAA,UACjB,YAAY,SAAS;AAAA,UACrB,MAAM,SAAS;AAAA,QACjB,CAAC;AACD,eAAO;AAAA,MACT;AAAA,MACA,CAAC,UAAU;AACT,eAAO,QAAQ,OAAO,KAAK;AAAA,MAC7B;AAAA,IACF;AAAA,EACF;AACF;AAeA,IAAM,oBAAoB,CACxB,QACA,YACuB;AAEvB,QAAM,OACJ,OAAO,YAAY,WAAW,EAAE,gBAAgB,QAAQ,IAAI;AAE9D,MAAI,CAAC,MAAM;AACT,WAAO;AAAA,EACT;AAEA,QAAM,oBAA4C,CAAC;AAEnD,MAAI,KAAK,gBAAgB;AACvB,sBAAkB,mBAAmB,IAAI,KAAK;AAAA,EAChD;AAEA,MAAI,KAAK,aAAa;AACpB,sBAAkB,gBAAgB,UAAU,KAAK,WAAW;AAAA,EAC9D;AAEA,MAAI,OAAO,KAAK,iBAAiB,EAAE,WAAW,GAAG;AAC/C,WAAO;AAAA,EACT;AAEA,SAAO;AAAA,IACL,GAAG;AAAA,IACH,SAAS;AAAA,MACP,GAAI,OAAO,WAAW,CAAC;AAAA,MACvB,GAAG;AAAA,IACL;AAAA,EACF;AACF;AAKA,SAAS,mBAAmB,OAIlB;AACR,QAAM,gBAAgB,MAAM,WAAW,IAAI,YAAY;AACvD,QAAM,YAAY,MAAM,MAAM,YAAY;AAE1C,MACE,cAAc,kBACd,aAAa,SAAS,oBAAoB,GAC1C;AACA,UAAM,IAAI;AAAA,MACR;AAAA,MACA;AAAA,MACA,EAAE,MAAM,MAAM,MAAM,SAAS,MAAM,SAAS,WAAW,KAAK;AAAA,MAC5D,MAAM;AAAA,IACR;AAAA,EACF;AAEA,MACE,cAAc,eACd,cAAc,kBACd,aAAa,SAAS,SAAS,GAC/B;AACA,UAAM,IAAI;AAAA,MACR;AAAA,MACA;AAAA,MACA,EAAE,MAAM,MAAM,MAAM,SAAS,MAAM,SAAS,WAAW,KAAK;AAAA,MAC5D,MAAM;AAAA,IACR;AAAA,EACF;AAEA,MAAI,cAAc,eAAe,aAAa,SAAS,aAAa,GAAG;AACrE,UAAM,IAAI;AAAA,MACR;AAAA,MACA;AAAA,MACA,EAAE,MAAM,MAAM,MAAM,SAAS,MAAM,SAAS,WAAW,MAAM;AAAA,MAC7D,MAAM;AAAA,IACR;AAAA,EACF;AAEA,MACE,aAAa,SAAS,eAAe,KACrC,aAAa,SAAS,YAAY,GAClC;AACA,UAAM,IAAI;AAAA,MACR;AAAA,MACA;AAAA,MACA,EAAE,MAAM,MAAM,MAAM,SAAS,MAAM,SAAS,WAAW,KAAK;AAAA,MAC5D,MAAM;AAAA,IACR;AAAA,EACF;AAGA,QAAM,IAAI;AAAA,IACR;AAAA,IACA,MAAM,WAAW;AAAA,IACjB,EAAE,MAAM,MAAM,MAAM,SAAS,MAAM,SAAS,WAAW,KAAK;AAAA,IAC5D,MAAM;AAAA,EACR;AACF;AAKA,SAAS,oBACP,YACA,cACA,OACO;AAEP,QAAM,iBACJ,gBACA,OAAO,iBAAiB,aACvB,aAAa,YAAY,EAAE,SAAS,WAAW,KAC9C,aAAa,YAAY,EAAE,SAAS,IAAI,KACxC,aAAa,YAAY,EAAE,SAAS,SAAS,KAC7C,aAAa,YAAY,EAAE,SAAS,SAAS;AAGjD,QAAM,gBAAgB,gBAAgB,YAAY,IAC9C,aAAa,gBACb;AAGJ,MAAI;AACJ,MAAI,gBAAgB,YAAY,GAAG;AACjC,mBAAe,aAAa,WAAW,aAAa,SAAS;AAAA,EAC/D,WAAW,OAAO,iBAAiB,UAAU;AAC3C,mBAAe;AAAA,EACjB,WAAW,cAAc;AACvB,QAAI;AACF,qBAAe,KAAK,UAAU,YAAY;AAAA,IAC5C,QAAQ;AACN,qBAAe,OAAO,YAAY;AAAA,IACpC;AAAA,EACF,OAAO;AACL,mBAAe;AAAA,EACjB;AAEA,UAAQ,YAAY;AAAA,IAClB,KAAK;AACH,YAAM,IAAI;AAAA,QACR;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,GAAG,cAAc;AAAA,QACjB;AAAA,MACF;AAAA,IAEF,KAAK;AACH,YAAM,IAAI;AAAA,QACR;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,GAAG,cAAc;AAAA,QACjB;AAAA,MACF;AAAA,IAEF,KAAK;AACH,UAAI,gBAAgB;AAClB,cAAM,IAAI;AAAA,UACR;AAAA,UACA;AAAA,UACA;AAAA,YACE,MAAM;AAAA,YACN,SACE,OAAO,iBAAiB,WAAW,eAAe;AAAA,YACpD,WAAW;AAAA,UACb;AAAA,UACA;AAAA,QACF;AAAA,MACF;AACA,YAAM,IAAI;AAAA,QACR;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,GAAG,cAAc;AAAA,QACjB;AAAA,MACF;AAAA,IAEF,KAAK;AACH,YAAM,IAAI;AAAA,QACR;AAAA,QACA;AAAA,QACA,gBAAgB;AAAA,QAChB;AAAA,QACA,GAAG,cAAc;AAAA,QACjB;AAAA,MACF;AAAA,IAEF,KAAK;AACH,YAAM,IAAI;AAAA,QACR;AAAA,QACA;AAAA,QACA,gBAAgB;AAAA,QAChB;AAAA,QACA,GAAG,cAAc;AAAA,QACjB;AAAA,MACF;AAAA,IAEF,KAAK;AACH,YAAM,IAAI;AAAA,QACR;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,GAAG,cAAc;AAAA,QACjB;AAAA,MACF;AAAA,IAEF,KAAK;AACH,YAAM,IAAI;AAAA,QACR;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,GAAG,cAAc;AAAA,QACjB;AAAA,MACF;AAAA,IAEF,KAAK;AACH,YAAM,IAAI;AAAA,QACR;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,GAAG,cAAc;AAAA,QACjB;AAAA,MACF;AAAA,IAEF;AACE,YAAM,IAAI;AAAA,QACR;AAAA,QACA;AAAA,QACA,iCAAiC,YAAY;AAAA,QAC7C;AAAA,QACA,GAAG,cAAc;AAAA,QACjB;AAAA,MACF;AAAA,EACJ;AACF;AAUO,IAAM,oBAAoB,OAC/B,QACA,YACe;AAEf,kBAAgB,MAAM;AAEtB,QAAM,oBAAoB,kBAAkB,QAAQ,OAAO;AAE3D,MAAI;AACF,UAAM,WAAW,MAAM,cAAc,iBAAiB;AACtD,WAAO,SAAS;AAAA,EAClB,SAAS,OAAO;AAEd,QAAI,iBAAiB,iBAAiB;AACpC,YAAM;AAAA,IACR;AAGA,QAAI,MAAM,aAAa,KAAK,GAAG;AAE7B,UAAI,CAAC,MAAM,UAAU;AACnB,2BAAmB;AAAA,UACjB,SAAS,MAAM;AAAA,UACf,MAAM,MAAM;AAAA,UACZ,OAAO,MAAM;AAAA,QACf,CAAC;AAAA,MACH;AAGA;AAAA,QACE,MAAM,SAAS;AAAA,QACf,MAAM,SAAS;AAAA,QACf,MAAM;AAAA,MACR;AAAA,IACF;AAGA,UAAM,IAAI;AAAA,MACR;AAAA,MACA,iBAAiB,QAAQ,QAAQ;AAAA,IACnC;AAAA,EACF;AACF;AAKO,IAAM,YAAY,MAAyC;;;AGjf3D,IAAM,cAAc,CACvB,QACH,YAA8E;AACzE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAgB,QAAQ;AAAA,MAC5B;AAAA,IACJ;AAAA,IACE;AAAA,EAAO;AACT;AASG,IAAM,gBAAgB,CACzB,sBACH,YAA0E;AACrE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAgB,QAAQ;AAAA,MAC9B,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AASG,IAAM,aAAa,CACtB,IACA,QACH,YAA0E;AACrE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,gBAAgB,EAAE;AAAA,MAAI,QAAQ;AAAA,MAClC;AAAA,IACJ;AAAA,IACE;AAAA,EAAO;AACT;AAOG,IAAM,iBAAiB,CAC1B,IACH,YAA+D;AAC1D,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,gBAAgB,EAAE;AAAA,MAAY,QAAQ;AAAA,IAC9C;AAAA,IACE;AAAA,EAAO;AACT;AAQG,IAAM,2BAA2B,CACpC,IACA,0BACH,YAAoF;AAC/E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,gBAAgB,EAAE;AAAA,MAA+B,QAAQ;AAAA,MAC/D,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,0BAA0B,CACnC,IACA,gCACH,YAAoF;AAC/E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,gBAAgB,EAAE;AAAA,MAA8B,QAAQ;AAAA,MAC9D,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,cAAc,CACvB,IACA,oBACH,YAA8E;AACzE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,gBAAgB,EAAE;AAAA,MAAiB,QAAQ;AAAA,MACjD,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAMG,IAAM,cAAc,CACvB,IACH,YAA0E;AACrE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,gBAAgB,EAAE;AAAA,MAAS,QAAQ;AAAA,IAC3C;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,gBAAgB,CACzB,IACA,eACH,YAA0E;AACrE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,gBAAgB,EAAE;AAAA,MAAW,QAAQ;AAAA,MAC3C,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAIG,IAAM,gBAAgB,CACzB,IACA,sBACH,YAAoF;AAC/E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,gBAAgB,EAAE;AAAA,MAAmB,QAAQ;AAAA,MACnD,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAIG,IAAM,mBAAmB,CAC5B,IACA,yBACH,YAAoF;AAC/E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,gBAAgB,EAAE;AAAA,MAAsB,QAAQ;AAAA,MACtD,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;;;AC3KG,IAAM,gBAAgB,CACzB,QACH,YAAkG;AAC7F,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAgB,QAAQ;AAAA,MAC5B;AAAA,IACJ;AAAA,IACE;AAAA,EAAO;AACT;AAOG,IAAM,kBAAkB,CAC3B,wBACH,YAA4E;AACvE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAgB,QAAQ;AAAA,MAC9B,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,uBAAuB,CAChC,QACH,YAA2E;AACtE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAuB,QAAQ;AAAA,MACnC;AAAA,IACJ;AAAA,IACE;AAAA,EAAO;AACT;AAOG,IAAM,eAAe,CACxB,IACH,YAA4E;AACvE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,gBAAgB,EAAE;AAAA,MAAI,QAAQ;AAAA,IACtC;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,gBAAgB,CACzB,IACH,YAAgF;AAC3E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,gBAAgB,EAAE;AAAA,MAAI,QAAQ;AAAA,IACtC;AAAA,IACE;AAAA,EAAO;AACT;AAOG,IAAM,gBAAgB,CACzB,sBACH,YAA4E;AACvE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAA6B,QAAQ;AAAA,MAC3C,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;;;ACrEG,IAAM,mBAAmB,CAC5B,0BACH,YAAyE;AACpE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAwB,QAAQ;AAAA,MACtC,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAMG,IAAM,kBAAkB,CAE9B,YAAkF;AAC7E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAiB,QAAQ;AAAA,IACjC;AAAA,IACE;AAAA,EAAO;AACT;AAMG,IAAM,oBAAoB,CAC7B,YACH,YAAqE;AAChE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAiB,QAAQ;AAAA,MAC/B,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,0BAA0B,CACnC,QACH,YAAkE;AAC7D,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAA0B,QAAQ;AAAA,MACtC;AAAA,IACJ;AAAA,IACE;AAAA,EAAO;AACT;AAIG,IAAM,aAAa,CACtB,UACA,sBACH,YAA6E;AACxE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,uBAAuB,QAAQ;AAAA,MAAI,QAAQ;AAAA,MACjD,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAIG,IAAM,gBAAgB,CACzB,UACA,QACH,YAAkE;AAC7D,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,0BAA0B,QAAQ;AAAA,MAAI,QAAQ;AAAA,MAClD;AAAA,IACJ;AAAA,IACE;AAAA,EAAO;AACT;AAMG,IAAM,iBAAiB,CAC1B,UACH,YAAqE;AAChE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,iBAAiB,QAAQ;AAAA,MAAI,QAAQ;AAAA,IAC7C;AAAA,IACE;AAAA,EAAO;AACT;AAMG,IAAM,oBAAoB,CAC7B,UACH,YAA+D;AAC1D,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,iBAAiB,QAAQ;AAAA,MAAI,QAAQ;AAAA,IAC7C;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,OAAO,CAChB,QACH,YAAmF;AAC9E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAkB,QAAQ;AAAA,MAC9B;AAAA,IACJ;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,SAAS,CAClB,YACH,YAAqE;AAChE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAkB,QAAQ;AAAA,MAChC,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAOG,IAAM,mBAAmB,CAC5B,yBACH,YAA8F;AACzF,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAmB,QAAQ;AAAA,MACjC,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAOG,IAAM,iBAAiB,CAC1B,QACH,YAAiF;AAC5E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAmB,QAAQ;AAAA,MAC/B;AAAA,IACJ;AAAA,IACE;AAAA,EAAO;AACT;AAOG,IAAM,gBAAgB,CACzB,IACH,YAA6E;AACxE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,mBAAmB,EAAE;AAAA,MAAI,QAAQ;AAAA,IACzC;AAAA,IACE;AAAA,EAAO;AACT;AAQG,IAAM,mBAAmB,CAC5B,IACH,YAA6E;AACxE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,mBAAmB,EAAE;AAAA,MAAI,QAAQ;AAAA,IACzC;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,kBAAkB,CAC3B,QACH,YAA8E;AACzE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAkB,QAAQ;AAAA,MAC9B;AAAA,IACJ;AAAA,IACE;AAAA,EAAO;AACT;AACK,IAAM,YAAY,CACvB,wBACH,YAAuE;AAClE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAqB,QAAQ;AAAA,MACnC,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;;;AC/PJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkGO,IAAM,eAAe,CACxB,kBACH,YAA0E;AACrE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAA+B,QAAQ;AAAA,MAC7C,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,gBAAgB,CACzB,QACH,YAA2E;AACtE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAA4B,QAAQ;AAAA,MACxC;AAAA,IACJ;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,cAAc,CACvB,iBACH,YAAyE;AACpE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAyB,QAAQ;AAAA,MACvC,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,kBAAkB,CAC3B,qBACH,YAA6E;AACxE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAA8B,QAAQ;AAAA,MAC5C,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,kBAAkB,CAC3B,qBACH,YAA6E;AACxE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAA8B,QAAQ;AAAA,MAC5C,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,qBAAqB,CAC9B,wBACH,YAAgF;AAC3E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAgC,QAAQ;AAAA,MAC9C,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,oBAAoB,CAC7B,uBACH,YAAgF;AAC3E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAA+B,QAAQ;AAAA,MAC7C,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAMG,IAAM,iBAAiB,CAC1B,QACH,YAA4E;AACvE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAA6B,QAAQ;AAAA,MACzC;AAAA,IACJ;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,4BAA4B,CACrC,+BACH,YAAuF;AAClF,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAwC,QAAQ;AAAA,MACtD,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,kBAAkB,CAC3B,qBACH,YAA6E;AACxE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAA6B,QAAQ;AAAA,MAC3C,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,qBAAqB,CAC9B,wBACH,YAAgF;AAC3E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAgC,QAAQ;AAAA,MAC9C,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,wBAAwB,CACjC,OACA,QACH,YAAmF;AAC9E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,+BAA+B,KAAK;AAAA,MAAI,QAAQ;AAAA,MACpD;AAAA,IACJ;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,2BAA2B,CACpC,8BACH,YAAsF;AACjF,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAuC,QAAQ;AAAA,MACrD,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,kBAAkB,CAE9B,YAAoE;AAC/D,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAA8B,QAAQ;AAAA,IAC9C;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,oBAAoB,CAC7B,uBACH,YAA+E;AAC1E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAA+B,QAAQ;AAAA,MAC7C,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,qBAAqB,CAC9B,wBACH,YAAgF;AAC3E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAgC,QAAQ;AAAA,MAC9C,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,0BAA0B,CACnC,6BACH,YAAqF;AAChF,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAsC,QAAQ;AAAA,MACpD,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,iBAAiB,CAC1B,oBACH,YAA4E;AACvE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAA4B,QAAQ;AAAA,MAC1C,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,kBAAkB,CAE9B,YAAmF;AAC9E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAA8B,QAAQ;AAAA,IAC9C;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,oBAAoB,CAC7B,uBACH,YAAgF;AAC3E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAA+B,QAAQ;AAAA,MAC7C,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,mBAAmB,CAC5B,sBACH,YAA8E;AACzE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAA8B,QAAQ;AAAA,MAC5C,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,qBAAqB,CAC9B,wBACH,YAAgF;AAC3E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAiC,QAAQ;AAAA,MAC/C,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,kBAAkB,CAC3B,qBACH,YAA6E;AACxE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAA6B,QAAQ;AAAA,MAC3C,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,sBAAsB,CAElC,YAAiF;AAC5E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAkC,QAAQ;AAAA,IAClD;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,wBAAwB,CACjC,2BACH,YAAmF;AAC9E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAqC,QAAQ;AAAA,MACnD,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,yBAAyB,CAClC,4BACH,YAAoF;AAC/E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAsC,QAAQ;AAAA,MACpD,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,wBAAwB,CACjC,2BACH,YAAmF;AAC9E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAoC,QAAQ;AAAA,MAClD,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,gCAAgC,CACzC,mCACH,YAA2F;AACtF,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAA6C,QAAQ;AAAA,MAC3D,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,sCAAsC,CAC/C,yCACH,YAAiG;AAC5F,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAoD,QAAQ;AAAA,MAClE,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,+BAA+B,CACxC,kCACH,YAAgF;AAC3E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAA4C,QAAQ;AAAA,MAC1D,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,kCAAkC,CAC3C,qCACH,YAA6F;AACxF,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAgD,QAAQ;AAAA,MAC9D,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,uBAAuB,CAChC,0BACH,YAAkF;AAC7E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAiD,QAAQ;AAAA,MAC/D,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,0BAA0B,CACnC,6BACH,YAAqF;AAChF,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAuC,QAAQ;AAAA,MACrD,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,qBAAqB,CAC9B,wBACH,YAAgF;AAC3E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAkC,QAAQ;AAAA,MAChD,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,6BAA6B,CACtC,gCACH,YAAwF;AACnF,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAA0C,QAAQ;AAAA,MACxD,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,4BAA4B,CACrC,+BACH,YAAgF;AAC3E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAyC,QAAQ;AAAA,MACvD,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,gBAAgB,CACzB,mBACH,YAA2E;AACtE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAA2B,QAAQ;AAAA,MACzC,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,iBAAiB,CAC1B,oBACH,YAA4E;AACvE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAA4B,QAAQ;AAAA,MAC1C,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,oBAAoB,CAC7B,uBACH,YAA+E;AAC1E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAgC,QAAQ;AAAA,MAC9C,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,qBAAqB,CAC9B,wBACH,YAAgF;AAC3E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAiC,QAAQ;AAAA,MAC/C,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,yBAAyB,CAErC,YAA0F;AACrF,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAuC,QAAQ;AAAA,IACvD;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,qBAAqB,CAC9B,wBACH,YAAgF;AAC3E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAiC,QAAQ;AAAA,MAC/C,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;;;AChqBJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkkBO,IAAM,4BAA4B;AAAA,EACvC,eAAe;AAAA,EACf,yBAAyB;AAC3B;AAm3BO,IAAM,+BAA+B;AAAA,EAC1C,sBAAsB;AAAA,EACtB,WAAW;AAAA,EACX,mBAAmB;AACrB;AAkXO,IAAM,4BAA4B;AAAA,EACvC,uBAAuB;AAAA,EACvB,aAAa;AACf;AAeO,IAAM,4BAA4B;AAAA,EACvC,cAAc;AAAA,EACd,0BAA0B;AAAA,EAC1B,mBAAmB;AACrB;AAkEO,IAAM,4BAA4B;AAAA,EACvC,aAAa;AAAA,EACb,4BAA4B;AAAA,EAC5B,kBAAkB;AACpB;;;AC51DO,IAAM,UAAU,CACnB,qBACH,YAAuE;AAClE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAoB,QAAQ;AAAA,MAClC,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,SAAS,CAClB,eACH,YAA+D;AAC1D,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAA2B,QAAQ;AAAA,MACzC,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,WAAW,CACpB,aACH,YAA2E;AACtE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAqB,QAAQ;AAAA,MACnC,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAIG,IAAM,mBAAmB,CAC5B,yBACH,YAA8E;AACzE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAA6B,QAAQ;AAAA,MAC3C,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAIG,IAAM,aAAa,CACtB,aACH,YAAoF;AAC/E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAuB,QAAQ;AAAA,MACrC,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAIG,IAAM,WAAW,CACpB,yBACH,YAAoF;AAC/E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAqB,QAAQ;AAAA,MACnC,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,sBAAsB,CAC/B,eACH,YAAiF;AAC5E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAA2B,QAAQ;AAAA,MACzC,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,qBAAqB,CAC9B,cACH,YAAgF;AAC3E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAA0B,QAAQ;AAAA,MACxC,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,2BAA2B,CACpC,2BACH,YAA+D;AAC1D,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAA+C,QAAQ;AAAA,MAC7D,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,cAAc,CACvB,oBACH,YAA+D;AAC1D,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAiC,QAAQ;AAAA,MAC/C,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,uBAAuB,CAChC,6BACH,YAA+D;AAC1D,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAkC,QAAQ;AAAA,MAChD,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,gBAAgB,CACzB,sBACH,YAA+D;AAC1D,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAA0B,QAAQ;AAAA,MACxC,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AACK,IAAM,YAAY,CACvB,cACH,YAAuE;AAClE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAyB,QAAQ;AAAA,MACvC,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AACK,IAAM,cAAc,CACzB,oBACH,YAA6E;AACxE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAA2B,QAAQ;AAAA,MACzC,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,YAAY,CACrB,kBACH,YAAuE;AAClE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAsB,QAAQ;AAAA,MACpC,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAIG,IAAM,YAAY,CACrB,kBACH,YAAwE;AACnE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAsB,QAAQ;AAAA,MACpC,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAIG,IAAM,YAAY,CACrB,kBACH,YAAwE;AACnE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAA2B,QAAQ;AAAA,MACzC,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAIG,IAAM,iBAAiB,CAC1B,uBACH,YAA6E;AACxE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAsB,QAAQ;AAAA,MACpC,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAIG,IAAM,YAAY,CACrB,QACH,YAAuE;AAClE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAsB,QAAQ;AAAA,MAClC;AAAA,IACJ;AAAA,IACE;AAAA,EAAO;AACT;AAIG,IAAM,mBAAmB,CAC5B,yBACH,YAAuE;AAClE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAgC,QAAQ;AAAA,MAC9C,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAIG,IAAM,aAAa,CACtB,wBACH,YAA6E;AACxE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAA6B,QAAQ;AAAA,MAC3C,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAIG,IAAM,cAAc,CACvB,oBACH,YAA6E;AACxE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAwB,QAAQ;AAAA,MACtC,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,gBAAgB,CAE5B,YAAuE;AAClE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAiB,QAAQ;AAAA,IACjC;AAAA,IACE;AAAA,EAAO;AACT;AAOG,IAAM,UAAU,CACnB,gBACH,YAAyE;AACpE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,WAAW,cAAc;AAAA,MAAc,QAAQ;AAAA,IACvD;AAAA,IACE;AAAA,EAAO;AACT;AACK,IAAM,KAAK,CAEnB,YAA6E;AACxE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAc,QAAQ;AAAA,IAC9B;AAAA,IACE;AAAA,EAAO;AACT;;;ACpUG,IAAM,qBAAqB,CAC9B,QACH,YAAoF;AAC/E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAwB,QAAQ;AAAA,MACpC;AAAA,IACJ;AAAA,IACE;AAAA,EAAO;AACT;AAQG,IAAM,sBAAsB,CAC/B,4BACH,YAAsF;AACjF,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAwB,QAAQ;AAAA,MACtC,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAOG,IAAM,mBAAmB,CAC5B,IACH,YAAgF;AAC3E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,wBAAwB,EAAE;AAAA,MAAI,QAAQ;AAAA,IAC9C;AAAA,IACE;AAAA,EAAO;AACT;AAOG,IAAM,sBAAsB,CAC/B,IACH,YAAsF;AACjF,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,wBAAwB,EAAE;AAAA,MAAI,QAAQ;AAAA,IAC9C;AAAA,IACE;AAAA,EAAO;AACT;AAQG,IAAM,OAAO,CAChB,IACA,aACH,YAAuE;AAClE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,wBAAwB,EAAE;AAAA,MAAS,QAAQ;AAAA,MACjD,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AASG,IAAM,mBAAmB,CAC5B,IACA,yBACH,YAAmF;AAC9E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,wBAAwB,EAAE;AAAA,MAAW,QAAQ;AAAA,MACnD,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AASG,IAAM,mBAAmB,CAC5B,yBACH,YAAmF;AAC9E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAA+B,QAAQ;AAAA,MAC7C,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AASG,IAAM,uBAAuB,CAChC,6BACH,YAAuF;AAClF,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAwC,QAAQ;AAAA,MACtD,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAQG,IAAM,qBAAqB,CAC9B,2BACH,YAAqF;AAChF,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAsC,QAAQ;AAAA,MACpD,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAQG,IAAM,qBAAqB,CAC9B,2BACH,YAAqF;AAChF,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAuC,QAAQ;AAAA,MACrD,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;;;AC3KG,IAAM,eAAe,CACxB,QACH,YAA+E;AAC1E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAiB,QAAQ;AAAA,MAC7B;AAAA,IACJ;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,iBAAiB,CAC1B,uBACH,YAA2E;AACtE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAiB,QAAQ;AAAA,MAC/B,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,cAAc,CACvB,IACH,YAA2E;AACtE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,iBAAiB,EAAE;AAAA,MAAI,QAAQ;AAAA,IACvC;AAAA,IACE;AAAA,EAAO;AACT;AAIG,IAAM,iBAAiB,CAC1B,IACA,uBACH,YAA2E;AACtE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,iBAAiB,EAAE;AAAA,MAAI,QAAQ;AAAA,MACrC,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,iBAAiB,CAC1B,IACH,YAAiF;AAC5E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,iBAAiB,EAAE;AAAA,MAAI,QAAQ;AAAA,IACvC;AAAA,IACE;AAAA,EAAO;AACT;AAQG,IAAM,eAAe,CACxB,IACA,QACH,YAA+E;AAC1E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,iBAAiB,EAAE;AAAA,MAAS,QAAQ;AAAA,MACxC;AAAA,IACJ;AAAA,IACE;AAAA,EAAO;AACT;;;AC/EG,IAAM,YAAY,CACrB,QACH,YAA4E;AACvE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAc,QAAQ;AAAA,MAC1B;AAAA,IACJ;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,cAAc,CACvB,oBACH,YAAwE;AACnE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAc,QAAQ;AAAA,MAC5B,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,WAAW,CACpB,IACH,YAAwE;AACnE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,cAAc,EAAE;AAAA,MAAI,QAAQ;AAAA,IACpC;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,cAAc,CACvB,IACH,YAA8E;AACzE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,cAAc,EAAE;AAAA,MAAI,QAAQ;AAAA,IACpC;AAAA,IACE;AAAA,EAAO;AACT;;;AClDG,IAAM,aAAa,CACtB,uBACH,YAAoF;AAC/E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAgB,QAAQ;AAAA,MAC9B,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,YAAY,CACrB,uBACH,YAA8E;AACzE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAsB,QAAQ;AAAA,MACpC,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;;;ACpBG,IAAM,0BAA0B,CACnC,gCACH,YAAoF;AAC/E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAA2B,QAAQ;AAAA,MACzC,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AASG,IAAM,yBAAyB,CAClC,QACH,YAAsF;AACjF,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAA2B,QAAQ;AAAA,MACvC;AAAA,IACJ;AAAA,IACE;AAAA,EAAO;AACT;AAOG,IAAM,0BAA0B,CACnC,IACA,gCACH,YAAoF;AAC/E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,2BAA2B,EAAE;AAAA,MAAI,QAAQ;AAAA,MAC/C,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAOG,IAAM,uBAAuB,CAChC,IACH,YAAoF;AAC/E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,2BAA2B,EAAE;AAAA,MAAI,QAAQ;AAAA,IACjD;AAAA,IACE;AAAA,EAAO;AACT;AAOG,IAAM,0BAA0B,CACnC,IACH,YAA0F;AACrF,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,2BAA2B,EAAE;AAAA,MAAI,QAAQ;AAAA,IACjD;AAAA,IACE;AAAA,EAAO;AACT;;;ACpFK,IAAM,QAAQ,CACnB,WACH,YAAkE;AAC7D,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAe,QAAQ;AAAA,MAC7B,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;;;ACDG,IAAM,iBAAiB,CAC1B,QACH,YAAsE;AACjE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAY,QAAQ;AAAA,MACxB;AAAA,IACJ;AAAA,IACE;AAAA,EAAO;AACT;AAIG,IAAM,4BAA4B,CAExC,YAAsE;AACjE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAoB,QAAQ;AAAA,IACpC;AAAA,IACE;AAAA,EAAO;AACT;;;ACZG,IAAM,sBAAsB,CAC/B,sBACH,YAAgF;AAC3E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAuB,QAAQ;AAAA,MACrC,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAUG,IAAM,iBAAiB,CAC1B,oBACH,YAA+E;AAC1E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAqB,QAAQ;AAAA,MACnC,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;;;AC3CG,IAAM,mCAAmC;AAAA,EAC9C,MAAM;AACR;AAiCO,IAAM,8BAA8B;AAAA,EACzC,MAAM;AACR;AA6BO,IAAM,wBAAwB;AAAA,EACnC,MAAM;AACR;AA2BO,IAAM,WAAW;AAAA,EACtB,KAAK;AACP;AAsCO,IAAM,mBAAmB;AAAA,EAC9B,MAAM;AACR;AAUO,IAAM,0BAA0B;AAAA,EACrC,cAAc;AAChB;AAMO,IAAM,gBAAgB;AAAA,EAC3B,cAAc;AAAA,EACd,sBAAsB;AAAA,EACtB,YAAY;AACd;AAYO,IAAM,kCAAkC;AAAA,EAC7C,sBAAsB;AACxB;AAcO,IAAM,yBAAyB;AAAA,EACpC,YAAY;AACd;AAgBO,IAAM,mBAAmB;AAAA,EAC9B,QAAQ;AACV;AAyBO,IAAM,mBAAmB;AAAA,EAC9B,QAAQ;AACV;AAiBO,IAAM,oBAAoB;AAAA,EAC/B,SAAS;AACX;AAuBO,IAAM,6BAA6B;AAAA,EACxC,kBAAkB;AACpB;AAgBO,IAAM,6BAA6B;AAAA,EACxC,sBAAsB;AAAA,EACtB,sBAAsB;AAAA,EACtB,sBAAsB;AAAA,EACtB,QAAQ;AAAA,EACR,UAAU;AACZ;AAMO,IAAM,oBAAoB;AAAA,EAC/B,MAAM;AAAA,EACN,KAAK;AAAA,EACL,MAAM;AAAA,EACN,SAAS;AAAA,EACT,SAAS;AAAA,EACT,WAAW;AAAA,EACX,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,SAAS;AACX;AA0OO,IAAM,iBAAiB;AAAA,EAC5B,kBAAkB;AACpB;AAoCO,IAAM,8BAA8B;AAAA,EACzC,mBAAmB;AACrB;AAgEO,IAAM,+BAA+B;AAAA,EAC1C,uBAAuB;AACzB;AAuBO,IAAM,sCAAsC;AAAA,EACjD,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,SAAS;AACX;AAMO,IAAM,kBAAkB;AAAA,EAC7B,KAAK;AAAA,EACL,MAAM;AACR;AAiFO,IAAM,WAAW;AAAA,EACtB,6BAA6B;AAAA,EAC7B,8BAA8B;AAAA,EAC9B,6BAA6B;AAAA,EAC7B,0BAA0B;AAAA,EAC1B,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB,oBAAoB;AAAA,EACpB,MAAM;AACR;AAMO,IAAM,iBAAiB;AAAA,EAC5B,SAAS;AAAA,EACT,OAAO;AACT;AAMO,IAAM,oBAAoB;AAAA,EAC/B,SAAS;AACX;AAgBO,IAAM,yBAAyB;AAAA,EACpC,cAAc;AAChB;AAwBO,IAAM,SAAS;AAAA,EACpB,SAAS;AAAA,EACT,QAAQ;AACV;AAMO,IAAM,gBAAgB;AAAA,EAC3B,KAAK;AACP;AA+JO,IAAM,qCAAqC;AAAA,EAChD,oBAAoB;AACtB;AAkCO,IAAM,sBAAsB;AAAA,EACjC,WAAW;AACb;AA8DO,IAAM,oBAAoB;AAAA,EAC/B,SAAS;AACX;AAqCO,IAAM,4BAA4B;AAAA,EACvC,oBAAoB;AACtB;AAwEO,IAAM,yBAAyB;AAAA,EACpC,oBAAoB;AACtB;AAMO,IAAM,iBAAiB;AAAA,EAC5B,oBAAoB;AAAA,EACpB,mBAAmB;AAAA,EACnB,YAAY;AACd;AAMO,IAAM,uBAAuB;AAAA,EAClC,YAAY;AACd;AAiDO,IAAM,qBAAqB;AAAA,EAChC,UAAU;AACZ;AAuCO,IAAM,wBAAwB;AAAA,EACnC,mBAAmB;AACrB;AAaO,IAAM,mCAAmC;AAAA,EAC9C,qBAAqB;AACvB;AAMO,IAAM,0BAA0B;AAAA,EACrC,YAAY;AACd;AAMO,IAAM,kBAAkB;AAAA,EAC7B,qBAAqB;AAAA,EACrB,kBAAkB;AAAA,EAClB,oBAAoB;AACtB;AAeO,IAAM,gCAAgC;AAAA,EAC3C,kBAAkB;AACpB;AAMO,IAAM,mBAAmB;AAAA,EAC9B,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,KAAK;AAAA,EACL,MAAM;AAAA,EACN,OAAO;AACT;AAiBO,IAAM,kCAAkC;AAAA,EAC7C,oBAAoB;AACtB;AA8BO,IAAM,kCAAkC;AAAA,EAC7C,UAAU;AACZ;AAuGO,IAAM,2BAA2B;AAAA,EACtC,oBAAoB;AAAA,EACpB,aAAa;AACf;AAkLO,IAAM,2BAA2B;AAAA,EACtC,oBAAoB;AAAA,EACpB,UAAU;AACZ;AA2EO,IAAM,sBAAsB;AAAA,EACjC,WAAW;AACb;AAwDO,IAAM,iBAAiB;AAAA,EAC5B,UAAU;AAAA,EACV,QAAQ;AACV;AAmHO,IAAM,8BAA8B;AAAA,EACzC,mBAAmB;AACrB;AAgCO,IAAM,YAAY;AAAA,EACvB,aAAa;AAAA,EACb,cAAc;AAChB;AAqEO,IAAM,0BAA0B;AAAA,EACrC,iBAAiB;AACnB;AAMO,IAAM,kBAAkB;AAAA,EAC7B,OAAO;AACT;AAiBO,IAAM,4BAA4B;AAAA,EACvC,oBAAoB;AACtB;AAgBO,IAAM,yBAAyB;AAAA,EACpC,gBAAgB;AAClB;AAcO,IAAM,gCAAgC;AAAA,EAC3C,8BAA8B;AAChC;AAmFO,IAAM,uCAAuC;AAAA,EAClD,SAAS;AAAA,EACT,UAAU;AACZ;AAgDO,IAAM,mBAAmB;AAAA,EAC9B,QAAQ;AACV;AAkHO,IAAM,yBAAyB;AAAA,EACpC,cAAc;AAChB;AA2DO,IAAM,4BAA4B;AAAA,EACvC,QAAQ;AAAA,EACR,oBAAoB;AACtB;AA2EO,IAAM,yBAAyB;AAAA,EACpC,YAAY;AAAA,EACZ,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,SAAS;AAAA,EACT,SAAS;AAAA,EACT,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,MAAM;AACR;AA6FO,IAAM,oCAAoC;AAAA,EAC/C,WAAW;AAAA,EACX,MAAM;AACR;AA6BO,IAAM,0BAA0B;AAAA,EACrC,WAAW;AAAA,EACX,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,eAAe;AACjB;AAUO,IAAM,sCAAsC;AAAA,EACjD,0BAA0B;AAAA,EAC1B,eAAe;AAAA,EACf,mBAAmB;AACrB;AASO,IAAM,oCAAoC;AAAA,EAC/C,KAAK;AAAA,EACL,KAAK;AACP;AAmDO,IAAM,mCAAmC;AAAA,EAC9C,0BAA0B;AAAA,EAC1B,eAAe;AAAA,EACf,mBAAmB;AACrB;AASO,IAAM,iCAAiC;AAAA,EAC5C,KAAK;AAAA,EACL,KAAK;AACP;AAyBO,IAAM,8BAA8B;AAAA,EACzC,eAAe;AACjB;AASO,IAAM,iCAAiC;AAAA,EAC5C,KAAK;AAAA,EACL,KAAK;AACP;AASO,IAAM,+BAA+B;AAAA,EAC1C,WAAW;AACb;AAmCO,IAAM,kCAAkC;AAAA,EAC7C,MAAM;AACR;AA6BO,IAAM,oCAAoC;AAAA,EAC/C,KAAK;AAAA,EACL,KAAK;AACP;AA2BO,IAAM,oCAAoC;AAAA,EAC/C,SAAS;AACX;AASO,IAAM,uCAAuC;AAAA,EAClD,KAAK;AAAA,EACL,KAAK;AACP;AA2BO,IAAM,sCAAsC;AAAA,EACjD,KAAK;AAAA,EACL,KAAK;AACP;AAqBO,IAAM,oCAAoC;AAAA,EAC/C,eAAe;AACjB;AAuBO,IAAM,qBAAqB;AAAA,EAChC,WAAW;AACb;AA+BO,IAAM,iCAAiC;AAAA,EAC5C,aAAa;AACf;AA+BO,IAAM,iCAAiC;AAAA,EAC5C,SAAS;AACX;AASO,IAAM,oCAAoC;AAAA,EAC/C,KAAK;AAAA,EACL,KAAK;AACP;AA2BO,IAAM,mCAAmC;AAAA,EAC9C,KAAK;AAAA,EACL,KAAK;AACP;AAwBO,IAAM,qCAAqC;AAAA,EAChD,cAAc;AAChB;AAmCO,IAAM,mCAAmC;AAAA,EAC9C,wBAAwB;AAC1B;AAiCO,IAAM,mCAAmC;AAAA,EAC9C,sBAAsB;AACxB;AAmCO,IAAM,2BAA2B;AAAA,EACtC,WAAW;AAAA,EACX,MAAM;AACR;AAqCO,IAAM,gCAAgC;AAAA,EAC3C,KAAK;AAAA,EACL,KAAK;AACP;AASO,IAAM,kCAAkC;AAAA,EAC7C,0BAA0B;AAAA,EAC1B,eAAe;AAAA,EACf,mBAAmB;AACrB;AASO,IAAM,8BAA8B;AAAA,EACzC,WAAW;AAAA,EACX,MAAM;AACR;AA+CO,IAAM,oCAAoC;AAAA,EAC/C,0BAA0B;AAAA,EAC1B,eAAe;AAAA,EACf,mBAAmB;AACrB;AASO,IAAM,kCAAkC;AAAA,EAC7C,KAAK;AAAA,EACL,KAAK;AACP;AA4BO,IAAM,kBAAkB;AAAA,EAC7B,OAAO;AAAA,EACP,OAAO;AAAA,EACP,QAAQ;AACV;AAMO,IAAM,iBAAiB;AAAA,EAC5B,MAAM;AACR;AA0BO,IAAM,uBAAuB;AAAA,EAClC,OAAO;AACT;AAMO,IAAM,wBAAwB;AAAA,EACnC,QAAQ;AACV;AAGO,IAAM,+BAA+B,EAAC,GAAG,sBAAqB,GAAG,sBAAsB;AASvF,IAAM,+BAA+B,EAAC,GAAG,uBAAsB,GAAG,qBAAqB;AA8BvF,IAAM,oBAAoB;AAAA,EAC/B,SAAS;AACX;AA+DO,IAAM,+BAA+B;AAAA,EAC1C,KAAK;AAAA,EACL,MAAM;AAAA,EACN,OAAO;AAAA,EACP,KAAK;AACP;AAUO,IAAM,iBAAiB;AAAA,EAC5B,SAAS;AAAA,EACT,WAAW;AAAA,EACX,MAAM;AACR;AAgCO,IAAM,mBAAmB;AAAA,EAC9B,YAAY;AAAA,EACZ,SAAS;AACX;AAkCO,IAAM,uBAAuB;AAAA,EAClC,YAAY;AACd;AAwCO,IAAM,oBAAoB;AAAA,EAC/B,mBAAmB;AAAA,EACnB,eAAe;AACjB;AAMO,IAAM,wBAAwB;AAAA,EACnC,aAAa;AACf;AAkBO,IAAM,mBAAmB;AAAA,EAC9B,mBAAmB;AAAA,EACnB,eAAe;AACjB;AAmHO,IAAM,aAAa;AAAA,EACxB,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,WAAW;AAAA,EACX,WAAW;AACb;AAkEO,IAAM,uBAAuB;AAAA,EAClC,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,SAAS;AAAA,EACT,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,WAAW;AAAA,EACX,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,MAAM;AACR;AAgFO,IAAM,UAAU;AAAA,EACrB,cAAc;AAChB;AA+BO,IAAM,sBAAsB;AAAA,EACjC,OAAO;AAAA,EACP,MAAM;AACR;AA0EO,IAAM,gBAAgB;AAAA,EAC3B,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,UAAU;AAAA,EACV,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,MAAM;AAAA,EACN,OAAO;AACT;AA+CO,IAAM,YAAY;AAAA,EACvB,SAAS;AAAA,EACT,aAAa;AACf;AAWO,IAAM,mCAAmC,EAAC,GAAG,eAAc,GAAG,wBAAwB;AAwBtF,IAAM,yBAAyB;AAAA,EACpC,OAAO;AACT;AASO,IAAM,oBAAoB;AAAA,EAC/B,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,MAAM;AAAA,EACN,OAAO;AACT;AAMO,IAAM,eAAe,EAAC,GAAG,eAAc,GAAG,yBAAwB,GAAG,kBAAkB;AAuCvF,IAAM,yBAAyB;AAAA,EACpC,OAAO;AACT;AAaO,IAAM,wBAAwB;AAAA,EACnC,MAAM;AACR;AAaO,IAAM,yBAAyB;AAAA,EACpC,OAAO;AACT;AAMO,IAAM,oBAAoB;AAAA,EAC/B,QAAQ;AACV;AAmBO,IAAM,yBAAyB;AAAA,EACpC,aAAa;AACf;AAiBO,IAAM,sBAAsB;AAAA,EACjC,UAAU;AACZ;AAiBO,IAAM,oBAAoB;AAAA,EAC/B,QAAQ;AACV;AAmBO,IAAM,oBAAoB;AAAA,EAC/B,SAAS;AACX;AAoCO,IAAM,kCAAkC;AAAA,EAC7C,UAAU;AACZ;AAoBO,IAAM,8BAA8B;AAAA,EACzC,MAAM;AACR;AAmBO,IAAM,mCAAmC;AAAA,EAC9C,WAAW;AACb;AAsBO,IAAM,sBAAsB;AAAA,EACjC,QAAQ;AACV;AAoBO,IAAM,uBAAuB;AAAA,EAClC,SAAS;AACX;AAoBO,IAAM,wBAAwB;AAAA,EACnC,UAAU;AACZ;AAiBO,IAAM,qBAAqB;AAAA,EAChC,OAAO;AACT;AAiBO,IAAM,oBAAoB;AAAA,EAC/B,MAAM;AACR;AAiBO,IAAM,uBAAuB;AAAA,EAClC,SAAS;AACX;AAiBO,IAAM,yBAAyB;AAAA,EACpC,YAAY;AACd;AAiBO,IAAM,iCAAiC;AAAA,EAC5C,SAAS;AACX;AAkBO,IAAM,kCAAkC;AAAA,EAC7C,UAAU;AACZ;AAkBO,IAAM,gCAAgC;AAAA,EAC3C,QAAQ;AACV;AAiBO,IAAM,oCAAoC;AAAA,EAC/C,YAAY;AACd;AAgBO,IAAM,oCAAoC;AAAA,EAC/C,eAAe;AACjB;AAkDO,IAAM,sBAAsB;AAAA,EACjC,SAAS;AAAA,EACT,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,UAAU;AACZ;AAwGO,IAAM,qBAAqB;AAAA,EAChC,OAAO;AAAA,EACP,OAAO;AAAA,EACP,aAAa;AACf;AAqSO,IAAM,2BAA2B;AAAA,EACtC,UAAU;AACZ;AAyTO,IAAM,8BAA8B;AAAA,EACzC,KAAK;AAAA,EACL,KAAK;AACP;AA+CO,IAAM,yBAAyB;AAAA,EACpC,KAAK;AAAA,EACL,KAAK;AACP;AAMO,IAAM,2BAA2B;AAAA,EACtC,0BAA0B;AAAA,EAC1B,eAAe;AAAA,EACf,mBAAmB;AACrB;AAMO,IAAM,uBAAuB;AAAA,EAClC,WAAW;AAAA,EACX,MAAM;AACR;;;ACx7KO,IAAM,kBAAkB,CAC3B,wBACH,YAA4E;AACvE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAkB,QAAQ;AAAA,MAChC,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AASG,IAAM,iBAAiB,CAC1B,QACH,YAA8E;AACzE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAkB,QAAQ;AAAA,MAC9B;AAAA,IACJ;AAAA,IACE;AAAA,EAAO;AACT;AAOG,IAAM,kBAAkB,CAC3B,IACA,wBACH,YAA4E;AACvE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,kBAAkB,EAAE;AAAA,MAAI,QAAQ;AAAA,MACtC,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAOG,IAAM,eAAe,CACxB,IACH,YAA4E;AACvE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,kBAAkB,EAAE;AAAA,MAAI,QAAQ;AAAA,IACxC;AAAA,IACE;AAAA,EAAO;AACT;AAOG,IAAM,kBAAkB,CAC3B,IACH,YAAkF;AAC7E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,kBAAkB,EAAE;AAAA,MAAI,QAAQ;AAAA,IACxC;AAAA,IACE;AAAA,EAAO;AACT;;;ACjEG,IAAM,aAAa,CACtB,QACH,YAA6E;AACxE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAe,QAAQ;AAAA,MAC3B;AAAA,IACJ;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,eAAe,CACxB,qBACH,YAAyE;AACpE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAe,QAAQ;AAAA,MAC7B,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAOG,IAAM,YAAY,CACrB,IACA,QACH,YAAyE;AACpE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,eAAe,EAAE;AAAA,MAAI,QAAQ;AAAA,MACjC;AAAA,IACJ;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,eAAe,CACxB,IACA,qBACH,YAAyE;AACpE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,eAAe,EAAE;AAAA,MAAI,QAAQ;AAAA,MACnC,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAMG,IAAM,eAAe,CACxB,IACH,YAA+E;AAC1E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,eAAe,EAAE;AAAA,MAAI,QAAQ;AAAA,IACrC;AAAA,IACE;AAAA,EAAO;AACT;AAOG,IAAM,kCAAkC,CAC3C,IACA,gCACH,YAAoF;AAC/E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,eAAe,EAAE;AAAA,MAA+B,QAAQ;AAAA,MAC9D,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,iCAAiC,CAC1C,IACA,sCACH,YAAoF;AAC/E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,eAAe,EAAE;AAAA,MAA8B,QAAQ;AAAA,MAC7D,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;;;AC9FG,IAAM,cAAc,CACvB,QACH,YAA6E;AACxE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAgB,QAAQ;AAAA,MAC5B;AAAA,IACJ;AAAA,IACE;AAAA,EAAO;AACT;AAIG,IAAM,eAAe,CACxB,qBACH,YAAyE;AACpE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAgB,QAAQ;AAAA,MAC9B,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAOG,IAAM,YAAY,CACrB,IACA,QACH,YAAyE;AACpE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,gBAAgB,EAAE;AAAA,MAAI,QAAQ;AAAA,MAClC;AAAA,IACJ;AAAA,IACE;AAAA,EAAO;AACT;AAIG,IAAM,eAAe,CACxB,IACA,qBACH,YAAyE;AACpE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,gBAAgB,EAAE;AAAA,MAAI,QAAQ;AAAA,MACpC,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAIG,IAAM,eAAe,CACxB,IACH,YAA+E;AAC1E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,gBAAgB,EAAE;AAAA,MAAI,QAAQ;AAAA,IACtC;AAAA,IACE;AAAA,EAAO;AACT;AAIG,IAAM,gBAAgB,CACzB,IACH,YAAyE;AACpE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,gBAAgB,EAAE;AAAA,MAAY,QAAQ;AAAA,IAC9C;AAAA,IACE;AAAA,EAAO;AACT;AAIG,IAAM,eAAe,CACxB,IACH,YAAyE;AACpE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,gBAAgB,EAAE;AAAA,MAAW,QAAQ;AAAA,IAC7C;AAAA,IACE;AAAA,EAAO;AACT;AAIG,IAAM,yBAAyB,CAClC,IACA,QACH,YAAgF;AAC3E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,gBAAgB,EAAE;AAAA,MAAY,QAAQ;AAAA,MAC1C;AAAA,IACJ;AAAA,IACE;AAAA,EAAO;AACT;AAIG,IAAM,oCAAoC,CAC7C,IACA,QACH,YAAkG;AAC7F,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,gBAAgB,EAAE;AAAA,MAAgC,QAAQ;AAAA,MAC9D;AAAA,IACJ;AAAA,IACE;AAAA,EAAO;AACT;AAQG,IAAM,mBAAmB,CAC5B,IACH,YAAwF;AACnF,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,gBAAgB,EAAE;AAAA,MAAa,QAAQ;AAAA,IAC/C;AAAA,IACE;AAAA,EAAO;AACT;AAQG,IAAM,yBAAyB,CAClC,IACA,yBACH,YAAoF;AAC/E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,gBAAgB,EAAE;AAAA,MAAa,QAAQ;AAAA,MAC7C,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;;;ACrJG,IAAM,iBAAiB,CAC1B,QACH,YAAiF;AAC5E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAoB,QAAQ;AAAA,MAChC;AAAA,IACJ;AAAA,IACE;AAAA,EAAO;AACT;AAIG,IAAM,mBAAmB,CAC5B,yBACH,YAA6E;AACxE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAoB,QAAQ;AAAA,MAClC,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAIG,IAAM,mBAAmB,CAC5B,IACA,yBACH,YAA6E;AACxE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,oBAAoB,EAAE;AAAA,MAAI,QAAQ;AAAA,MACxC,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAIG,IAAM,mBAAmB,CAC5B,IACH,YAAmF;AAC9E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,oBAAoB,EAAE;AAAA,MAAI,QAAQ;AAAA,IAC1C;AAAA,IACE;AAAA,EAAO;AACT;;;AC7CG,IAAM,mBAAmB,CAC5B,gBACH,YAA0E;AACrE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAQ,QAAQ;AAAA,MACtB,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAcG,IAAM,wBAAwB,CACjC,SACA,gBACH,YAA0E;AACrE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,QAAQ,OAAO;AAAA,MAAI,QAAQ;AAAA,MACjC,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;;;ACnCG,IAAM,oBAAoB,CAC7B,QACH,YAA8E;AACzE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAgB,QAAQ;AAAA,MAC5B;AAAA,IACJ;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,gBAAgB,CACzB,sBACH,YAA0E;AACrE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAgB,QAAQ;AAAA,MAC9B,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAIG,IAAM,gBAAgB,CACzB,sBACH,YAA0E;AACrE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAuB,QAAQ;AAAA,MACrC,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAIG,IAAM,mBAAmB,CAC5B,IACA,kBACH,YAA0E;AACrE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,gBAAgB,EAAE;AAAA,MAAc,QAAQ;AAAA,MAC9C,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAOG,IAAM,aAAa,CACtB,IACA,QACH,YAA0E;AACrE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,gBAAgB,EAAE;AAAA,MAAI,QAAQ;AAAA,MAClC;AAAA,IACJ;AAAA,IACE;AAAA,EAAO;AACT;;;AC3DG,IAAM,uBAAuB,CAChC,QACH,YAAuF;AAClF,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAmC,QAAQ;AAAA,MAC/C;AAAA,IACJ;AAAA,IACE;AAAA,EAAO;AACT;AAMG,IAAM,yBAAyB,CAClC,qCACH,YAAmF;AAC9E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAmC,QAAQ;AAAA,MACjD,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,8BAA8B,CACvC,IACA,oBACH,YAA8E;AACzE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,mCAAmC,EAAE;AAAA,MAAiB,QAAQ;AAAA,MACpE,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,yBAAyB,CAClC,IACA,qCACH,YAAmF;AAC9E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,mCAAmC,EAAE;AAAA,MAAI,QAAQ;AAAA,MACvD,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAOG,IAAM,sBAAsB,CAC/B,IACA,QACH,YAAmF;AAC9E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,mCAAmC,EAAE;AAAA,MAAI,QAAQ;AAAA,MACrD;AAAA,IACJ;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,yBAAyB,CAClC,IACH,YAAyF;AACpF,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,mCAAmC,EAAE;AAAA,MAAI,QAAQ;AAAA,IACzD;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,yBAAyB,CAClC,QACH,YAA6F;AACxF,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAmD,QAAQ;AAAA,MAC/D;AAAA,IACJ;AAAA,IACE;AAAA,EAAO;AACT;;;AC5FG,IAAM,mBAAmB,CAE/B,YAAmF;AAC9E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAqB,QAAQ;AAAA,IACrC;AAAA,IACE;AAAA,EAAO;AACT;AAOG,IAAM,qBAAqB,CAC9B,2BACH,YAA+E;AAC1E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAqB,QAAQ;AAAA,MACnC,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAOG,IAAM,uBAAuB,CAChC,QACH,YAA4F;AACvF,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAA0B,QAAQ;AAAA,MACtC;AAAA,IACJ;AAAA,IACE;AAAA,EAAO;AACT;AAOG,IAAM,kBAAkB,CAC3B,IACH,YAA+E;AAC1E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,qBAAqB,EAAE;AAAA,MAAI,QAAQ;AAAA,IAC3C;AAAA,IACE;AAAA,EAAO;AACT;AAOG,IAAM,qBAAqB,CAC9B,IACH,YAAqF;AAChF,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,qBAAqB,EAAE;AAAA,MAAI,QAAQ;AAAA,IAC3C;AAAA,IACE;AAAA,EAAO;AACT;AAWG,IAAM,cAAc,CACvB,IACH,YAAgG;AAC3F,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,qBAAqB,EAAE;AAAA,MAAa,QAAQ;AAAA,IACpD;AAAA,IACE;AAAA,EAAO;AACT;AAOG,IAAM,gBAAgB,CACzB,IACA,sBACH,YAA0E;AACrE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,qBAAqB,EAAE;AAAA,MAAa,QAAQ;AAAA,MAClD,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAOG,IAAM,aAAa,CACtB,IACA,WACH,YAA0E;AACrE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,qBAAqB,EAAE,aAAa,SAAS;AAAA,MAAI,QAAQ;AAAA,IACjE;AAAA,IACE;AAAA,EAAO;AACT;AAOG,IAAM,gBAAgB,CACzB,IACA,WACH,YAAgF;AAC3E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,qBAAqB,EAAE,aAAa,SAAS;AAAA,MAAI,QAAQ;AAAA,IACjE;AAAA,IACE;AAAA,EAAO;AACT;AAOG,IAAM,cAAc,CAE1B,YAAyE;AACpE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAA0B,QAAQ;AAAA,IAC1C;AAAA,IACE;AAAA,EAAO;AACT;;;AC3JG,IAAM,wBAAwB,CACjC,QACH,YAAwF;AACnF,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAA2B,QAAQ;AAAA,MACvC;AAAA,IACJ;AAAA,IACE;AAAA,EAAO;AACT;AAWG,IAAM,0BAA0B,CACnC,gCACH,YAAoF;AAC/E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAA2B,QAAQ;AAAA,MACzC,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAKG,IAAM,uBAAuB,CAChC,IACA,QACH,YAAoF;AAC/E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,2BAA2B,EAAE;AAAA,MAAI,QAAQ;AAAA,MAC7C;AAAA,IACJ;AAAA,IACE;AAAA,EAAO;AACT;AASG,IAAM,gCAAgC,CACzC,gCACH,YAA6F;AACxF,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAA6C,QAAQ;AAAA,MAC3D,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAOG,IAAM,YAAY,CACrB,IACA,kBACH,YAAoF;AAC/E,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,2BAA2B,EAAE;AAAA,MAAc,QAAQ;AAAA,MACzD,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;;;AC3EG,IAAM,eAAe,CACxB,QACH,YAAiG;AAC5F,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAa,QAAQ;AAAA,MACzB;AAAA,IACJ;AAAA,IACE;AAAA,EAAO;AACT;AAOG,IAAM,cAAc,CACvB,IACH,YAA2E;AACtE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,aAAa,EAAE;AAAA,MAAI,QAAQ;AAAA,IACnC;AAAA,IACE;AAAA,EAAO;AACT;AAMG,IAAM,aAAa,CACtB,IACH,YAAmG;AAC9F,SAAO;AAAA,IACP;AAAA,MAAC,KAAK,aAAa,EAAE;AAAA,MAAI,QAAQ;AAAA,IACnC;AAAA,IACE;AAAA,EAAO;AACT;AAYG,IAAM,oBAAoB,CAC7B,0BACH,YAAqF;AAChF,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAyB,QAAQ;AAAA,MACvC,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;AAIG,IAAM,OAAO,CAEnB,YAA2E;AACtE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAAc,QAAQ;AAAA,IAC9B;AAAA,IACE;AAAA,EAAO;AACT;AAIG,IAAM,eAAe,CACxB,wBACH,YAA2E;AACtE,SAAO;AAAA,IACP;AAAA,MAAC,KAAK;AAAA,MAA4B,QAAQ;AAAA,MAC1C,SAAS,EAAC,gBAAgB,mBAAoB;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,IACE;AAAA,EAAO;AACT;;;AC7GJ,SAAS,kBAAkB;AAG3B,eAAsBA,MAAK,WAAmB,MAA+B;AAC3E,QAAM,aAAa,UAChB,QAAQ,OAAO,EAAE,EACjB,QAAQ,SAAS,EAAE,EACnB,QAAQ,MAAM,EAAE;AACnB,SAAO,WAAW,UAAU,UAAU,EAAE,OAAO,MAAM,MAAM,EAAE,OAAO,KAAK;AAC3E;;;ACQO,IAAM,+BAA+B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACP5C;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAoBA,IAAM,qBAAqB,MAAkB;AAClD,QAAM,EAAE,WAAW,WAAW,IAAI,oBAAoB,OAAO;AAAA,IAC3D,eAAe;AAAA,IACf,mBAAmB;AAAA,MACjB,MAAM;AAAA,MACN,QAAQ;AAAA,IACV;AAAA,IACA,oBAAoB;AAAA,MAClB,MAAM;AAAA,MACN,QAAQ;AAAA,IACV;AAAA,EACF,CAAC;AAED,SAAO;AAAA,IACL,WAAY,UAAqB,SAAS,QAAQ;AAAA,IAClD,eAAe;AAAA,EACjB;AACF;AAUO,IAAM,mBAAmB,CAC9B,eACA,uBACW;AACX,QAAM,SAAS,cAAc,WAAW,IAAI,IACxC,cAAc,MAAM,CAAC,IACrB;AAEJ,MAAI,CAAC,iBAAiB,KAAK,MAAM,GAAG;AAClC,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,QAAM,kBAAkB,OAAO,KAAK,QAAQ,KAAK;AAEjD,QAAM,YAAY;AAAA,IAChB;AAAA,MACE,KAAK;AAAA,MACL,SAAS,UAAU;AAAA,MACnB,UAAU;AAAA,IACZ;AAAA,IACA;AAAA,EACF;AAEA,SAAO,UAAU,SAAS,QAAQ;AACpC;AAUO,IAAM,4BAA4B,CACvC,2BACA,kBACW;AACX,QAAM,gBAAgB,OAAO,KAAK,2BAA2B,QAAQ;AAErE,QAAM,YAAY;AAAA,IAChB;AAAA,MACE,KAAK;AAAA,MACL,SAAS,UAAU;AAAA,MACnB,UAAU;AAAA,IACZ;AAAA,IACA;AAAA,EACF;AAEA,SAAO,UAAU,SAAS,KAAK;AACjC;;;AChFA,eAAsB,SACpB,SACyB;AACzB,QAAM,EAAE,WAAW,KAAK,IAAI;AAG5B,QAAM,WAAW,MAAM,KAAK,WAAW,EAAE,MAAM,KAAK,CAAC;AAErD,SAAO;AAAA,IACL,WAAW,SAAS;AAAA,EACtB;AACF;;;ACxCA,SAAS,aAAa,aAAa;AAgCnC,eAAsB,YACpB,SAC4B;AAC5B,QAAM,EAAE,WAAW,QAAQ,IAAI;AAG/B,MAAI;AACJ,MAAI,OAAO,YAAY,UAAU;AAC/B,iBAAa;AAAA,EACf,WAAW,mBAAmB,YAAY;AACxC,iBAAa,MAAM,OAAO;AAAA,EAC5B,WAAW,SAAS,SAAS;AAC3B,iBACE,OAAO,QAAQ,QAAQ,WAAW,QAAQ,MAAM,MAAM,QAAQ,GAAG;AAAA,EACrE,OAAO;AACL,UAAM,IAAI,yBAAyB,wBAAwB;AAAA,EAC7D;AAGA,QAAM,cAAc,YAAY,UAAU;AAG1C,QAAM,WAAW,MAAM,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAE5D,SAAO;AAAA,IACL,WAAW,SAAS;AAAA,EACtB;AACF;;;AC3DA;AAAA,EACE;AAAA,EACA;AAAA,EAEA;AAAA,OACK;AAkCP,eAAsB,gBACpB,SACgC;AAChC,QAAM,EAAE,WAAW,YAAY,IAAI;AAGnC,QAAM,aAAa,qBAAqB,WAAW;AAGnD,QAAM,WAAW,MAAM,KAAQ,WAAW,EAAE,MAAM,WAAW,CAAC;AAG9D,QAAMC,aAAY,eAAe,SAAS,SAAgB;AAG1D,QAAM,oBAAoB,qBAAqB,aAAaA,UAAS;AAGrE,QAAM,kBAAkB,UAAU,iBAAiB;AAEnD,SAAO;AAAA,IACL;AAAA,IACA;AAAA,EACF;AACF;;;AC/DA,SAAS,qBAAqB;AAkC9B,eAAsB,cAGpB,SAAmE;AACnE,QAAM,EAAE,WAAW,UAAU,IAAI;AAGjC,QAAM,OAAO,cAAc,SAAS;AAGpC,QAAM,WAAW,MAAM,KAAK,WAAW,EAAE,MAAM,KAAK,CAAC;AAErD,SAAO;AAAA,IACL,WAAW,SAAS;AAAA,EACtB;AACF;;;AClBO,SAAS,aAAa,MAAkC;AAC7D,QAAM,EAAE,IAAI,QAAQ,IAAI;AAExB,QAAM,UAAsB;AAAA,IAC1B;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IAET,MAAM,KAAK,YAA0C;AACnD,YAAM,SAAS,MAAM,SAAe;AAAA,QAClC,WAAW;AAAA,QACX,MAAM,WAAW;AAAA,MACnB,CAAC;AACD,aAAO,OAAO;AAAA,IAChB;AAAA,IAEA,MAAM,YAAY,YAAwD;AACxE,YAAM,SAAS,MAAM,YAAkB;AAAA,QACrC;AAAA,QACA,WAAW;AAAA,QACX,SAAS,WAAW;AAAA,MACtB,CAAC;AACD,aAAO,OAAO;AAAA,IAChB;AAAA,IAEA,MAAM,gBAAgB,aAAoD;AACxE,YAAM,SAAS,MAAM,gBAAsB;AAAA,QACzC;AAAA,QACA,WAAW;AAAA,QACX;AAAA,MACF,CAAC;AACD,aAAO,OAAO;AAAA,IAChB;AAAA,IAEA,MAAM,cAGJ,YAAqD;AACrD,YAAM,SAAS,MAAM,cAAoB;AAAA,QACvC;AAAA,QACA,WAAW;AAAA,QACX,WAAW;AAAA,MACb,CAAC;AACD,aAAO,OAAO;AAAA,IAChB;AAAA,EACF;AAEA,SAAO;AACT;;;AC5CA,SAAS,iBAAiB,UAAiD;AACzE,SAAO;AAAA,IACL,IAAI,SAAS;AAAA,IACb,SAAS,SAAS;AAAA,EACpB;AACF;AAgBO,IAAM,YAAN,MAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAarB,YAAY,cAAuB,UAAsC;AAAA,EAGzE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAmBA,MAAa,cACX,UAAmC,CAAC,GACf;AACrB,UAAM,WAAW,MAAM,oBAAoB;AAAA,MACzC,WAAW;AAAA,MACX,QAAQ,QAAQ;AAAA,IAClB,CAAC;AAED,WAAO,aAAa;AAAA,MAClB,IAAI,SAAS;AAAA,MACb,SAAS,SAAS;AAAA,IACpB,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAoBA,MAAa,WAAW,SAAoD;AAC1E,QAAI,CAAC,QAAQ,MAAM,CAAC,QAAQ,SAAS;AACnC,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAGA,QAAI,QAAQ,IAAI;AACd,YAAM,WAAW,MAAM,iBAAiB,QAAQ,EAAE;AAClD,aAAO,aAAa,iBAAiB,QAAQ,CAAC;AAAA,IAChD;AAGA,QAAI,QAAQ,SAAS;AACnB,YAAM,UAAU,MAAM,mBAAmB;AAAA,QACvC,SAAS,QAAQ;AAAA,QACjB,WAAW;AAAA,QACX,OAAO;AAAA,MACT,CAAC;AAED,UAAI,QAAQ,KAAK,WAAW,GAAG;AAC7B,cAAM,IAAI,qBAAqB;AAAA,MACjC;AAEA,aAAO,aAAa,iBAAiB,QAAQ,KAAK,CAAC,CAAC,CAAC;AAAA,IACvD;AAEA,UAAM,IAAI,qBAAqB;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAeA,MAAa,aACX,UAAkC,CAAC,GACM;AACzC,UAAM,WAAW,MAAM,mBAAmB;AAAA,MACxC,OAAO,QAAQ;AAAA,MACf,MAAM,QAAQ;AAAA,MACd,WAAW;AAAA,IACb,CAAC;AAED,UAAM,WAAW,SAAS,KAAK;AAAA,MAAI,CAAC,WAClC,aAAa,iBAAiB,MAAM,CAAC;AAAA,IACvC;AAEA,WAAO;AAAA,MACL;AAAA,MACA,OAAO,SAAS;AAAA,IAClB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBA,MAAa,cACX,SACqB;AAErB,UAAM,gBAAgB,QAAQ,WAAW,WAAW,IAAI,IACpD,QAAQ,WAAW,MAAM,CAAC,IAC1B,QAAQ;AAEZ,QAAI,CAAC,oBAAoB,KAAK,aAAa,GAAG;AAC5C,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAGA,QAAI,CAAC,8BAA8B;AACjC,YAAM,IAAI;AAAA,QACR;AAAA,MAEF;AAAA,IACF;AAEA,QAAI;AAEF,YAAM,sBAAsB;AAAA,QAC1B;AAAA,QACA;AAAA,MACF;AAGA,YAAM,WAAW,MAAM,iBAAiB;AAAA,QACtC;AAAA,QACA,WAAW;AAAA,QACX,MAAM,QAAQ;AAAA,MAChB,CAAC;AAED,aAAO,aAAa;AAAA,QAClB,IAAI,SAAS;AAAA,QACb,SAAS,SAAS;AAAA,MACpB,CAAC;AAAA,IACH,SAAS,OAAO;AACd,UAAI,iBAAiB,0BAA0B;AAC7C,cAAM;AAAA,MACR;AACA,YAAM,IAAI;AAAA,QACR,kCAAkC,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CAAC;AAAA,MAC1F;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBA,MAAa,cACX,SACiB;AAEjB,UAAM,EAAE,WAAW,cAAc,IAAI,mBAAmB;AAGxD,UAAM,WAAW,MAAM,iBAAiB,QAAQ,IAAI;AAAA,MAClD,eAAe;AAAA,IACjB,CAAC;AAGD,UAAM,aAAa;AAAA,MACjB,SAAS;AAAA,MACT;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBA,MAAa,SAAS,SAA2C;AAC/D,UAAM,WAAW,MAAM,KAAK,QAAQ,IAAI;AAAA,MACtC,MAAM,QAAQ;AAAA,IAChB,CAAC;AAED,WAAO,SAAS;AAAA,EAClB;AACF;AA1Pa,UACJ,OAAO;;;ACzDhB,OAAO,UAAU;;;ACkBjB,eAAsBC,aACpB,SAC4B;AAC5B,QAAM,EAAE,WAAW,QAAQ,IAAI;AAG/B,QAAM,eAAe,OAAO,KAAK,SAAS,OAAO;AACjD,QAAM,aAAa,KAAK,aAAa,SAAS,KAAK,CAAC;AAGpD,QAAM,WAAW,MAAM,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AAE3D,SAAO;AAAA,IACL,WAAW,SAAS;AAAA,EACtB;AACF;;;ACQA,eAAsBC,iBACpB,SACgC;AAChC,QAAM,EAAE,WAAW,YAAY,IAAI;AAGnC,QAAM,UAAU,OAAO,KAAK,aAAa,QAAQ;AACjD,QAAM,QAAQ,KAAK,QAAQ,SAAS,KAAK,CAAC;AAG1C,QAAM,WAAW,MAAM,KAAQ,WAAW,EAAE,MAAM,MAAM,CAAC;AAGzD,SAAO;AAAA,IACL,mBAAmB,SAAS;AAAA,EAC9B;AACF;;;ACrCO,SAAS,gBAAgB,MAAwC;AACtE,QAAM,EAAE,IAAI,QAAQ,IAAI;AAExB,QAAM,UAAyB;AAAA,IAC7B;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IAET,MAAM,YAAY,YAAkD;AAClE,YAAM,SAAS,MAAMC,aAAkB;AAAA,QACrC,WAAW;AAAA,QACX,SAAS,WAAW;AAAA,MACtB,CAAC;AACD,aAAO,OAAO;AAAA,IAChB;AAAA,IAEA,MAAM,gBAAgB,YAEF;AAClB,YAAM,SAAS,MAAMC,iBAAsB;AAAA,QACzC,WAAW;AAAA,QACX,aAAa,WAAW;AAAA,MAC1B,CAAC;AACD,aAAO,OAAO;AAAA,IAChB;AAAA,EACF;AAEA,SAAO;AACT;;;AHVA,SAAS,oBACP,UACmB;AACnB,SAAO;AAAA,IACL,IAAI,SAAS;AAAA,IACb,SAAS,SAAS;AAAA,EACpB;AACF;AAgBO,IAAM,eAAN,MAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaxB,YAAY,cAAuB,UAAyC;AAAA,EAG5E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAmBA,MAAa,cACX,UAAsC,CAAC,GACf;AACxB,UAAM,WAAW,MAAM,oBAAoB;AAAA,MACzC,WAAW;AAAA,MACX,QAAQ,QAAQ;AAAA,IAClB,CAAC;AAED,WAAO,gBAAgB;AAAA,MACrB,IAAI,SAAS;AAAA,MACb,SAAS,SAAS;AAAA,IACpB,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAoBA,MAAa,WACX,SACwB;AACxB,QAAI,CAAC,QAAQ,MAAM,CAAC,QAAQ,SAAS;AACnC,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAGA,QAAI,QAAQ,IAAI;AACd,YAAM,WAAW,MAAM,iBAAiB,QAAQ,EAAE;AAClD,aAAO,gBAAgB,oBAAoB,QAAQ,CAAC;AAAA,IACtD;AAGA,QAAI,QAAQ,SAAS;AACnB,YAAM,UAAU,MAAM,mBAAmB;AAAA,QACvC,SAAS,QAAQ;AAAA,QACjB,WAAW;AAAA,QACX,OAAO;AAAA,MACT,CAAC;AAED,UAAI,QAAQ,KAAK,WAAW,GAAG;AAC7B,cAAM,IAAI,qBAAqB;AAAA,MACjC;AAEA,aAAO,gBAAgB,oBAAoB,QAAQ,KAAK,CAAC,CAAC,CAAC;AAAA,IAC7D;AAEA,UAAM,IAAI,qBAAqB;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAeA,MAAa,aACX,UAAqC,CAAC,GACM;AAC5C,UAAM,WAAW,MAAM,mBAAmB;AAAA,MACxC,OAAO,QAAQ;AAAA,MACf,MAAM,QAAQ;AAAA,MACd,WAAW;AAAA,IACb,CAAC;AAED,UAAM,WAAW,SAAS,KAAK;AAAA,MAAI,CAAC,WAClC,gBAAgB,oBAAoB,MAAM,CAAC;AAAA,IAC7C;AAEA,WAAO;AAAA,MACL;AAAA,MACA,OAAO,SAAS;AAAA,IAClB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBA,MAAa,cACX,SACwB;AACxB,QAAI;AAGJ,QAAI,QAAQ,WAAW,WAAW,IAAI,GAAG;AAEvC,YAAM,MAAM,QAAQ,WAAW,MAAM,CAAC;AACtC,UAAI,CAAC,iBAAiB,KAAK,GAAG,GAAG;AAC/B,cAAM,IAAI,yBAAyB,oBAAoB;AAAA,MACzD;AACA,wBAAkB,WAAW,KAAK,OAAO,KAAK,KAAK,KAAK,CAAC;AAAA,IAC3D,WAAW,iBAAiB,KAAK,QAAQ,UAAU,GAAG;AAEpD,wBAAkB,WAAW,KAAK,OAAO,KAAK,QAAQ,YAAY,KAAK,CAAC;AAAA,IAC1E,OAAO;AAEL,UAAI;AACF,0BAAkB,KAAK,OAAO,QAAQ,UAAU;AAAA,MAClD,QAAQ;AACN,cAAM,IAAI;AAAA,UACR;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAIA,QAAI,gBAAgB,WAAW,IAAI;AACjC,wBAAkB,gBAAgB,MAAM,GAAG,EAAE;AAAA,IAC/C,WAAW,gBAAgB,WAAW,IAAI;AACxC,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAGA,UAAM,gBAAgB,OAAO,KAAK,eAAe,EAAE,SAAS,KAAK;AAGjE,QAAI,CAAC,8BAA8B;AACjC,YAAM,IAAI;AAAA,QACR;AAAA,MAEF;AAAA,IACF;AAEA,QAAI;AAEF,YAAM,sBAAsB;AAAA,QAC1B;AAAA,QACA;AAAA,MACF;AAGA,YAAM,WAAW,MAAM,iBAAiB;AAAA,QACtC;AAAA,QACA,WAAW;AAAA,QACX,MAAM,QAAQ;AAAA,MAChB,CAAC;AAED,aAAO,gBAAgB;AAAA,QACrB,IAAI,SAAS;AAAA,QACb,SAAS,SAAS;AAAA,MACpB,CAAC;AAAA,IACH,SAAS,OAAO;AACd,UAAI,iBAAiB,0BAA0B;AAC7C,cAAM;AAAA,MACR;AACA,YAAM,IAAI;AAAA,QACR,kCAAkC,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CAAC;AAAA,MAC1F;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBA,MAAa,cACX,SACiB;AAEjB,UAAM,EAAE,WAAW,cAAc,IAAI,mBAAmB;AAGxD,UAAM,WAAW,MAAM,iBAAiB,QAAQ,IAAI;AAAA,MAClD,eAAe;AAAA,IACjB,CAAC;AAGD,UAAM,gBAAgB;AAAA,MACpB,SAAS;AAAA,MACT;AAAA,IACF;AAGA,UAAM,kBAAkB,OAAO,KAAK,eAAe,KAAK;AACxD,WAAO,KAAK,OAAO,eAAe;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAa,SAAS,WAAmB,MAA+B;AACtE,UAAM,WAAW,MAAM,KAAK,WAAW,EAAE,KAAK,CAAC;AAC/C,WAAO,SAAS;AAAA,EAClB;AACF;AA/Qa,aACJ,OAAO;;;AxC/ChB,SAAS,sBAAAC,2BAA0B;AAqCnC,SAAS,iBAAiB,KAAsB;AAC9C,SAAO,IAAI,WAAW,UAAU,KAAK,IAAI,WAAW,UAAU;AAChE;AAOA,SAAS,sBAAsB,KAAsB;AACnD,SAAO,IAAI,WAAW,UAAU,KAAK,IAAI,WAAW,UAAU;AAChE;AAsCA,IAAM,WAAN,MAAe;AAAA,EAKb,YAAY,QAAiB,SAAoC;AAE/D,UAAM,iBAAiB,UAAU,QAAQ,IAAI;AAG7C,UAAM,mBACJ,OAAO,YAAY,WACf,UACA,SAAS,YAAY,QAAQ,IAAI;AAEvC,UAAM,uBACJ,OAAO,YAAY,WACf,QAAQ,gBAAgB,QAAQ,IAAI,yBACpC,QAAQ,IAAI;AAElB,UAAM,yBACJ,OAAO,YAAY,WACf,QAAQ,kBAAkB,QAAQ,IAAI,2BACtC,QAAQ,IAAI;AAElB,UAAM,YACJ,OAAO,YAAY,WAAW,QAAQ,YAAY;AAGpD,QAAI,CAAC,gBAAgB;AACnB,YAAM,IAAI,mBAAmB;AAAA,IAC/B;AAGA,QAAI,CAAC,iBAAiB,cAAc,GAAG;AACrC,YAAM,IAAI,yBAAyB,cAAc;AAAA,IACnD;AAGA,QACE,0BACA,CAAC,sBAAsB,sBAAsB,GAC7C;AACA,YAAM,IAAI,iCAAiC,sBAAsB;AAAA,IACnE;AAGA,SAAK,UAAU;AAGf,cAAU;AAAA,MACR,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,cAAc;AAAA,MACd;AAAA,MACA,gBAAgB;AAAA,IAClB,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiCA,IAAW,WAAW;AAEpB,QAAI,CAAC,KAAK,YAAY;AACpB,WAAK,aAAa,IAAI,UAAU;AAAA,IAClC;AACA,QAAI,CAAC,KAAK,eAAe;AACvB,WAAK,gBAAgB,IAAI,aAAa;AAAA,IACxC;AACA,UAAM,YAAY,KAAK;AACvB,UAAM,eAAe,KAAK;AAE1B,WAAO;AAAA;AAAA,MAEL,MAAU;AAAA;AAAA,MAEV,KAAK;AAAA;AAAA,QAEH,MAAM,CAAC,WACD,cAAc,EAAE,GAAG,QAAQ,WAAW,MAAM,CAAC;AAAA;AAAA,QAEnD,SAAS;AAAA;AAAA,UAEP,QAAQ,UAAU,cAAc,KAAK,SAAS;AAAA;AAAA,UAE9C,MAAM,UAAU,aAAa,KAAK,SAAS;AAAA;AAAA,UAE3C,KAAK,UAAU,WAAW,KAAK,SAAS;AAAA;AAAA,UAExC,QAAY;AAAA;AAAA,UAEZ,MAAM,UAAU,SAAS,KAAK,SAAS;AAAA;AAAA,UAEvC,QAAQ,UAAU,cAAc,KAAK,SAAS;AAAA;AAAA,UAE9C,QAAQ,UAAU,cAAc,KAAK,SAAS;AAAA,QAChD;AAAA;AAAA,QAEA,UAAU;AAAA;AAAA,UAER,aAAa,CACX,KACA,iBACG,KAAK,gBAAgB,EAAE,GAAG,KAAK,WAAW,MAAM,GAAG,YAAY;AAAA;AAAA,UAEpE,MAAM,CACJ,WAEI,cAAc,EAAE,GAAG,QAAQ,WAAW,OAAO,SAAS,OAAO,CAAC;AAAA,QACtE;AAAA,MACF;AAAA;AAAA,MAEA,QAAQ;AAAA;AAAA,QAEN,MAAM,CAAC,WACD,cAAc,EAAE,GAAG,QAAQ,WAAW,MAAM,CAAC;AAAA;AAAA,QAEnD,SAAS;AAAA;AAAA,UAEP,QAAQ,aAAa,cAAc,KAAK,YAAY;AAAA;AAAA,UAEpD,MAAM,aAAa,aAAa,KAAK,YAAY;AAAA;AAAA,UAEjD,KAAK,aAAa,WAAW,KAAK,YAAY;AAAA;AAAA,UAE9C,QAAY;AAAA;AAAA,UAEZ,MAAM,aAAa,SAAS,KAAK,YAAY;AAAA;AAAA,UAE7C,QAAQ,aAAa,cAAc,KAAK,YAAY;AAAA;AAAA,UAEpD,QAAQ,aAAa,cAAc,KAAK,YAAY;AAAA,QACtD;AAAA;AAAA,QAEA,UAAU;AAAA;AAAA,UAER,aAAa,CACX,KACA,iBACG,KAAK,gBAAgB,EAAE,GAAG,KAAK,WAAW,MAAM,GAAG,YAAY;AAAA;AAAA,UAEpE,MAAM,CACJ,WAEI,cAAc,EAAE,GAAG,QAAQ,WAAW,OAAO,SAAS,OAAO,CAAC;AAAA,QACtE;AAAA,MACF;AAAA;AAAA,MAEA,IAAI;AAAA,QACF,MAAU;AAAA,QACV,QAAY;AAAA,QACZ,KAAS;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA,MAAU;AAAA,QACV,QAAY;AAAA,QACZ;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,IAAW,UAAU;AACnB,WAAO;AAAA;AAAA,MAEL,MAAU;AAAA;AAAA,MAEV,QAAY;AAAA;AAAA,MAEZ,KAAS;AAAA;AAAA,MAET,QAAY;AAAA;AAAA,MAEZ,QAAY;AAAA,IACd;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,IAAW,YAAY;AACrB,WAAO;AAAA;AAAA,MAEL,MAAU;AAAA;AAAA,MAEV,QAAY;AAAA;AAAA,MAEZ,KAAS;AAAA;AAAA,MAET,QAAY;AAAA;AAAA,MAEZ,QAAY;AAAA,IACd;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,IAAW,WAAW;AACpB,WAAO;AAAA;AAAA,MAEL,MAAU;AAAA;AAAA,MAEV,QAAY;AAAA;AAAA,MAEZ,KAAS;AAAA;AAAA,MAET,QAAY;AAAA;AAAA,MAEZ,QAAY;AAAA;AAAA,MAEZ,SAAa;AAAA;AAAA,MAEb,QAAY;AAAA;AAAA,MAEZ,kBAAsB;AAAA,IACxB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,IAAW,cAAc;AACvB,WAAO;AAAA;AAAA,MAEL,MAAU;AAAA;AAAA,MAEV,QAAY;AAAA;AAAA,MAEZ,QAAY;AAAA;AAAA,MAEZ,QAAY;AAAA,IACd;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,IAAW,qBAAqB;AAC9B,WAAO;AAAA;AAAA,MAEL,MAAU;AAAA;AAAA,MAEV,QAAY;AAAA;AAAA,MAEZ,KAAS;AAAA;AAAA,MAET;AAAA;AAAA,MAEA,cAAkB;AAAA,IACpB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,IAAW,WAAW;AACpB,WAAO;AAAA;AAAA,MAEL,MAAU;AAAA;AAAA,MAEV,QAAY;AAAA;AAAA,MAEZ,KAAS;AAAA;AAAA,MAET,QAAY;AAAA;AAAA,MAEZ,WAAe;AAAA,IACjB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,IAAW,WAAW;AACpB,WAAO;AAAA;AAAA,MAEL;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,IAAW,gBAAgB;AACzB,WAAO;AAAA;AAAA,MAEL,MAAU;AAAA;AAAA,MAEV,QAAY;AAAA;AAAA,MAEZ,KAAS;AAAA;AAAA,MAET,QAAY;AAAA,IACd;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,IAAW,WAAW;AACpB,WAAO;AAAA;AAAA,MAEL,MAAU;AAAA;AAAA,MAEV,QAAY;AAAA;AAAA,MAEZ,KAAS;AAAA;AAAA,MAET,QAAY;AAAA,IACd;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,IAAW,WAAW;AACpB,WAAO;AAAA;AAAA,MAEL;AAAA;AAAA,MAEA;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcA,IAAW,OAAO;AAChB,WAAO;AAAA;AAAA,MAEL,kBAAsB;AAAA,IACxB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAoBA,IAAW,MAAM;AACf,WAAO;AAAA;AAAA,MAEL,YAAY,KAAK,WAAW,KAAK,IAAI;AAAA;AAAA,MAErC,OAAO;AAAA;AAAA,QAEL,MAAU;AAAA;AAAA,QAEV,KAAS;AAAA;AAAA,QAET,QAAY;AAAA,MACd;AAAA;AAAA,MAEA,qBAAqB;AAAA;AAAA,QAEnB,QAAY;AAAA;AAAA,QAEZ,KAAS;AAAA;AAAA,QAET,MAAU;AAAA;AAAA,QAEV,QAAY;AAAA,MACd;AAAA;AAAA,MAEA,IAAI;AAAA;AAAA,QAEF,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAOP,QAAQ,KAAK,2BAA2B,KAAK,IAAI;AAAA;AAAA,UAEjD,MAAU;AAAA;AAAA,UAEV,KAAS;AAAA;AAAA,UAET,QAAY;AAAA,QACd;AAAA;AAAA,QAEA,aAAiB;AAAA;AAAA,QAEjB;AAAA;AAAA,QAEA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMQ,WAAW,SAG2B;AAC5C,UAAM,EAAE,aAAa,mBAAmB,IAAI;AAC5C,WAAW,gBAAQ;AAAA,MACjB,uBAAuB,SAAY,EAAE,mBAAmB,IAAI;AAAA,MAC5D,EAAE,YAAY;AAAA,IAChB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAc,gBACZ,KACA,cACgC;AAChC,UAAM,WAAW,MAAU,kBAAkB,GAAG;AAEhD,QAAI;AACF,YAAM,KAAK;AAAA,QACT,SAAS;AAAA,QACT,SAAS;AAAA,QACT,IAAI;AAAA,QACJ;AAAA,MACF;AAGA,YAAM,EAAE,eAAe,GAAG,GAAG,gBAAgB,IAAI;AACjD,aAAO;AAAA,IACT,SAAS,OAAO;AAEd,YAAU,WAAW,SAAS,IAAI;AAClC,YAAM;AAAA,IACR;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAc,2BACZ,KACA,cACiC;AACjC,QAAI,IAAI,8BAA8B,CAAC,cAAc;AACnD,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAEA,UAAM,WAAW,MAAU,iBAAiB,GAAG;AAE/C,QAAI,SAAS,iBAAiB,cAAc;AAC1C,YAAM,KAAK;AAAA,QACT,SAAS;AAAA,QACT,SAAS;AAAA,QACT,IAAI;AAAA,QACJ;AAAA,MACF;AAAA,IACF;AAGA,UAAM,EAAE,eAAe,GAAG,GAAG,eAAe,IAAI;AAChD,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAc,sBACZ,eACA,gBACA,kBACA,QACe;AACf,QAAI;AAEJ,QAAI,OAAO,uBAAuB,mBAAmB,UAAU;AAC7D,uBAAiB;AAAA,IACnB,WAAW,OAAO,uBAAuB,mBAAmB,QAAQ;AAClE,UAAI,CAAC,kBAAkB;AACrB,cAAM,IAAI;AAAA,UACR;AAAA,QACF;AAAA,MACF;AACA,uBAAiB;AAAA,IACnB,OAAO;AACL,YAAM,IAAI,MAAM,+BAA+B;AAAA,IACjD;AAEA,UAAM,cAAiC;AAAA,MACrC,cAAc,OAAO;AAAA,MACrB,gBAAgB,OAAO;AAAA,MACvB;AAAA,MACA,QAAQ,OAAO;AAAA,MACf,WAAW,OAAO;AAAA,IACpB;AAEA,UAAM,QAAe;AAAA,MACnB,QAAQ;AAAA,MACR,SAAS,QAAQ;AAAA,IACnB;AAEA,UAAM,YAAY,IAAI,UAAU;AAAA,MAC9B,QAAQ,OAAO;AAAA,MACf,SAAS,OAAO;AAAA,IAClB,CAAC;AAED,UAAM,UAAU,YAAY,OAAO,WAAW;AAAA,EAChD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,IAAW,aAAa;AACtB,WAAO;AAAA;AAAA,MAEL,QAAY;AAAA;AAAA,MAEZ,KAAS;AAAA;AAAA,MAET,QAAY;AAAA;AAAA,MAEZ,QAAY;AAAA,IACd;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,MAAa,sBACX,MACAC,YACY;AACZ,UAAM,gBAAgB,MAAMC,MAAK,KAAK,SAAS,IAAI;AACnD,QAAI,kBAAkBD,YAAW;AAC/B,YAAM,MAAM,mBAAmB;AAAA,IACjC;AACA,WAAO,KAAK,MAAM,IAAI;AAAA,EACxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAqBA,MAAa,wBACX,cACA,iBACA,iBACA,mBAAmB,8BACF;AACjB,UAAM,WAAW,MAAM;AAAA,MACrB,GAAG,gBAAgB;AAAA,MACnB;AAAA,QACE,SAAS;AAAA,UACP,gBAAgB;AAAA,UAChB,aAAa;AAAA,UACb,gBAAgB;AAAA,QAClB;AAAA,QACA,QAAQ;AAAA,QACR,MAAM,KAAK,UAAU;AAAA,UACnB,iBAAiB;AAAA,QACnB,CAAC;AAAA,MACH;AAAA,IACF;AAEA,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI,MAAM,qCAAqC;AAAA,IACvD;AAEA,UAAM,eAAe,MAAM,SAAS,KAAK;AACzC,WAAO,aAAa;AAAA,EACtB;AACF;AAIA,IAAO,gBAAQ;","names":["sign","signature","signMessage","signTransaction","signMessage","signTransaction","ShieldAuthProvider","signature","sign"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/errors.ts","../src/openapi-client/errors.ts","../src/openapi-client/openfortApiClient.ts","../src/utilities/walletAuth.ts","../src/version.ts","../src/openapi-client/generated/accs-v1/accs-v1.ts","../src/openapi-client/generated/accs-v2/accs-v2.ts","../src/openapi-client/generated/admin-authentication/admin-authentication.ts","../src/openapi-client/generated/auth/auth-v2/auth-v2.ts","../src/openapi-client/generated/auth/openfortAuth.schemas.ts","../src/openapi-client/generated/auth-v1/auth-v1.ts","../src/openapi-client/generated/backend-wallets/backend-wallets.ts","../src/openapi-client/generated/contracts/contracts.ts","../src/openapi-client/generated/events/events.ts","../src/openapi-client/generated/exchange/exchange.ts","../src/openapi-client/generated/forwarder-contract/forwarder-contract.ts","../src/openapi-client/generated/graph-q-l/graph-q-l.ts","../src/openapi-client/generated/logs/logs.ts","../src/openapi-client/generated/onramp/onramp.ts","../src/openapi-client/generated/openfortAPI.schemas.ts","../src/openapi-client/generated/paymaster/paymaster.ts","../src/openapi-client/generated/players/players.ts","../src/openapi-client/generated/policies/policies.ts","../src/openapi-client/generated/policy-rules/policy-rules.ts","../src/openapi-client/generated/rpc/rpc.ts","../src/openapi-client/generated/sessions/sessions.ts","../src/openapi-client/generated/settings/settings.ts","../src/openapi-client/generated/subscriptions/subscriptions.ts","../src/openapi-client/generated/transaction-intents/transaction-intents.ts","../src/openapi-client/generated/users/users.ts","../src/utilities/signer.ts","../src/constants.ts","../src/utilities/encryption.ts","../src/wallets/evm/actions/signHash.ts","../src/wallets/evm/actions/signMessage.ts","../src/wallets/evm/actions/signTransaction.ts","../src/wallets/evm/actions/signTypedData.ts","../src/wallets/evm/accounts/evmAccount.ts","../src/wallets/evm/evmClient.ts","../src/wallets/solana/solanaClient.ts","../src/wallets/solana/actions/signMessage.ts","../src/wallets/solana/actions/signTransaction.ts","../src/wallets/solana/accounts/solanaAccount.ts"],"sourcesContent":["import {\n entropy,\n type Share,\n type ShieldAuthOptions,\n ShieldAuthProvider,\n ShieldSDK,\n} from '@openfort/shield-js'\nimport fetch from 'node-fetch'\nimport {\n InvalidAPIKeyFormatError,\n InvalidPublishableKeyFormatError,\n MissingAPIKeyError,\n} from './errors'\nimport * as api from './openapi-client'\nimport { configure } from './openapi-client/openfortApiClient'\nimport { sign } from './utilities/signer'\nimport { EvmClient } from './wallets/evm/evmClient'\nimport { SolanaClient } from './wallets/solana/solanaClient'\n\n// Re-export ShieldAuthProvider for convenience\nexport { ShieldAuthProvider } from '@openfort/shield-js'\n\n/**\n * Configuration options for the Openfort client\n */\nexport interface OpenfortOptions {\n /** API base URL (optional) */\n basePath?: string\n /** Wallet secret for X-Wallet-Auth header (optional) */\n walletSecret?: string\n /** Enable debug logging (optional) */\n debugging?: boolean\n /** Publishable key for client-side auth endpoints (pk_live_... or pk_test_...) */\n publishableKey?: string\n}\n\n/**\n * Configuration for pre-generating embedded accounts with Shield\n */\nexport interface ShieldConfiguration {\n /** Shield API key */\n shieldApiKey: string\n /** Shield API secret */\n shieldApiSecret: string\n /** Encryption share for the recovery share */\n encryptionShare: string\n /** Shield auth provider type */\n shieldAuthProvider: ShieldAuthProvider\n /** Shield API base URL (optional, defaults to https://shield.openfort.io) */\n shieldApiBaseUrl?: string\n}\n\n/**\n * Validates that a string is a valid Openfort secret API key format.\n * @param key - The key to validate\n * @returns true if valid\n */\nfunction isValidSecretKey(key: string): boolean {\n return key.startsWith('sk_test_') || key.startsWith('sk_live_')\n}\n\n/**\n * Validates that a string is a valid Openfort publishable key format.\n * @param key - The key to validate\n * @returns true if valid\n */\nfunction isValidPublishableKey(key: string): boolean {\n return key.startsWith('pk_test_') || key.startsWith('pk_live_')\n}\n\n/**\n * The Openfort SDK client.\n * Provides access to all Openfort API endpoints and wallet functionality.\n *\n * Environment variables (all optional, constructor options take precedence):\n * - `OPENFORT_API_KEY` - Secret API key (sk_test_... or sk_live_...)\n * - `OPENFORT_WALLET_SECRET` - Wallet secret for backend wallet operations\n * - `OPENFORT_PUBLISHABLE_KEY` - Publishable key for auth endpoints (pk_test_... or pk_live_...)\n * - `OPENFORT_BASE_URL` - Custom API base URL\n *\n * @example\n * ```typescript\n * import Openfort from '@openfort/openfort-node';\n *\n * // Using environment variables\n * const openfort = new Openfort();\n *\n * // Or with explicit API key\n * const openfort = new Openfort('sk_test_...');\n *\n * // Or with options\n * const openfort = new Openfort('sk_test_...', {\n * walletSecret: 'your-wallet-secret',\n * publishableKey: 'pk_test_...',\n * });\n *\n * // Create a player\n * const player = await openfort.players.create({ name: 'Player-1' });\n *\n * // Get an account (V2)\n * const account = await openfort.accounts.get('acc_...');\n *\n * // Create an account (V1 legacy)\n * const newAccount = await openfort.accounts.v1.create({ player: player.id, chainId: 1 });\n * ```\n */\nclass Openfort {\n private readonly _apiKey: string\n private _evmClient?: EvmClient\n private _solanaClient?: SolanaClient\n\n constructor(apiKey?: string, options?: string | OpenfortOptions) {\n // Resolve API key: explicit parameter > environment variable\n const resolvedApiKey = apiKey || process.env.OPENFORT_API_KEY\n\n // Resolve options\n const resolvedBasePath =\n typeof options === 'string'\n ? options\n : options?.basePath || process.env.OPENFORT_BASE_URL\n\n const resolvedWalletSecret =\n typeof options === 'object'\n ? options.walletSecret || process.env.OPENFORT_WALLET_SECRET\n : process.env.OPENFORT_WALLET_SECRET\n\n const resolvedPublishableKey =\n typeof options === 'object'\n ? options.publishableKey || process.env.OPENFORT_PUBLISHABLE_KEY\n : process.env.OPENFORT_PUBLISHABLE_KEY\n\n const debugging =\n typeof options === 'object' ? options.debugging : undefined\n\n // Validate API key presence\n if (!resolvedApiKey) {\n throw new MissingAPIKeyError()\n }\n\n // Validate API key format\n if (!isValidSecretKey(resolvedApiKey)) {\n throw new InvalidAPIKeyFormatError(resolvedApiKey)\n }\n\n // Validate publishable key format if provided\n if (\n resolvedPublishableKey &&\n !isValidPublishableKey(resolvedPublishableKey)\n ) {\n throw new InvalidPublishableKeyFormatError(resolvedPublishableKey)\n }\n\n // Store API key for webhook signature verification\n this._apiKey = resolvedApiKey\n\n // Configure the API client\n configure({\n apiKey: resolvedApiKey,\n basePath: resolvedBasePath,\n walletSecret: resolvedWalletSecret,\n debugging,\n publishableKey: resolvedPublishableKey,\n })\n }\n\n // ============================================\n // Accounts API\n // ============================================\n\n /**\n * Unified accounts namespace for managing wallets across chains.\n *\n * @example\n * ```typescript\n * // Create a backend wallet (Developer custody)\n * const wallet = await openfort.accounts.evm.backend.create({ name: 'Treasury' })\n *\n * // Pregenerate an embedded wallet (User custody)\n * const embedded = await openfort.accounts.evm.embedded.pregenerate(\n * { email: 'user@example.com' },\n * shieldConfig\n * )\n *\n * // List all accounts\n * const all = await openfort.accounts.list()\n *\n * // List with filters\n * const evmBackend = await openfort.accounts.list({\n * chainType: 'EVM',\n * custody: 'Developer',\n * })\n *\n * // V1 API\n * await openfort.accounts.v1.create({ player: 'pla_...', chainId: 1 })\n * ```\n */\n public get accounts() {\n // Lazily initialize clients\n if (!this._evmClient) {\n this._evmClient = new EvmClient()\n }\n if (!this._solanaClient) {\n this._solanaClient = new SolanaClient()\n }\n const evmClient = this._evmClient\n const solanaClient = this._solanaClient\n\n return {\n /** List all accounts across chains */\n list: api.getAccountsV2,\n /** EVM accounts */\n evm: {\n /** List EVM accounts */\n list: (params?: Omit<api.GetAccountsV2Params, 'chainType'>) =>\n api.getAccountsV2({ ...params, chainType: 'EVM' }),\n /** Backend wallet operations (Developer custody) */\n backend: {\n /** Create EVM backend wallet */\n create: evmClient.createAccount.bind(evmClient),\n /** List EVM backend wallets */\n list: evmClient.listAccounts.bind(evmClient),\n /** Get backend wallet by ID or address */\n get: evmClient.getAccount.bind(evmClient),\n /** Delete backend wallet */\n delete: api.deleteBackendWallet,\n /** Sign data */\n sign: evmClient.signData.bind(evmClient),\n /** Import private key (with E2E encryption) */\n import: evmClient.importAccount.bind(evmClient),\n /** Export private key (with E2E encryption) */\n export: evmClient.exportAccount.bind(evmClient),\n },\n /** Embedded wallet operations (User custody) */\n embedded: {\n /** Pregenerate embedded account */\n pregenerate: (\n req: Omit<api.PregenerateUserRequestV2, 'chainType'>,\n shieldConfig: ShieldConfiguration,\n ) => this.pregenerateUser({ ...req, chainType: 'EVM' }, shieldConfig),\n /** List embedded accounts */\n list: (\n params?: Omit<api.GetAccountsV2Params, 'chainType' | 'custody'>,\n ) =>\n api.getAccountsV2({ ...params, chainType: 'EVM', custody: 'User' }),\n },\n },\n /** Solana accounts */\n solana: {\n /** List Solana accounts */\n list: (params?: Omit<api.GetAccountsV2Params, 'chainType'>) =>\n api.getAccountsV2({ ...params, chainType: 'SVM' }),\n /** Backend wallet operations (Developer custody) */\n backend: {\n /** Create Solana backend wallet */\n create: solanaClient.createAccount.bind(solanaClient),\n /** List Solana backend wallets */\n list: solanaClient.listAccounts.bind(solanaClient),\n /** Get backend wallet by ID or address */\n get: solanaClient.getAccount.bind(solanaClient),\n /** Delete backend wallet */\n delete: api.deleteBackendWallet,\n /** Sign data */\n sign: solanaClient.signData.bind(solanaClient),\n /** Import private key (with E2E encryption) */\n import: solanaClient.importAccount.bind(solanaClient),\n /** Export private key (with E2E encryption) */\n export: solanaClient.exportAccount.bind(solanaClient),\n },\n /** Embedded wallet operations (User custody) */\n embedded: {\n /** Pregenerate embedded account */\n pregenerate: (\n req: Omit<api.PregenerateUserRequestV2, 'chainType'>,\n shieldConfig: ShieldConfiguration,\n ) => this.pregenerateUser({ ...req, chainType: 'SVM' }, shieldConfig),\n /** List embedded accounts */\n list: (\n params?: Omit<api.GetAccountsV2Params, 'chainType' | 'custody'>,\n ) =>\n api.getAccountsV2({ ...params, chainType: 'SVM', custody: 'User' }),\n },\n },\n /** V1 legacy API */\n v1: {\n list: api.getAccounts,\n create: api.createAccount,\n get: api.getAccount,\n requestTransferOwnership: api.requestTransferOwnership,\n cancelTransferOwnership: api.cancelTransferOwnership,\n signPayload: api.signPayload,\n sync: api.syncAccount,\n deploy: api.deployAccount,\n startRecovery: api.startRecovery,\n completeRecovery: api.completeRecovery,\n },\n }\n }\n\n // ============================================\n // Players API\n // ============================================\n\n /**\n * Player management endpoints\n */\n public get players() {\n return {\n /** List players */\n list: api.getPlayers,\n /** Create a player */\n create: api.createPlayer,\n /** Get a player by ID */\n get: api.getPlayer,\n /** Update a player */\n update: api.updatePlayer,\n /** Delete a player */\n delete: api.deletePlayer,\n }\n }\n\n // ============================================\n // Contracts API\n // ============================================\n\n /**\n * Contract management endpoints\n */\n public get contracts() {\n return {\n /** List contracts */\n list: api.getContracts,\n /** Create a contract */\n create: api.createContract,\n /** Get a contract by ID */\n get: api.getContract,\n /** Update a contract */\n update: api.updateContract,\n /** Delete a contract */\n delete: api.deleteContract,\n }\n }\n\n // ============================================\n // Policies API\n // ============================================\n\n /**\n * Policy management endpoints\n */\n public get policies() {\n return {\n /** List policies */\n list: api.getPolicies,\n /** Create a policy */\n create: api.createPolicy,\n /** Get a policy by ID */\n get: api.getPolicy,\n /** Update a policy */\n update: api.updatePolicy,\n /** Delete a policy */\n delete: api.deletePolicy,\n /** Disable a policy */\n disable: api.disablePolicy,\n /** Enable a policy */\n enable: api.enablePolicy,\n /** Get policy total gas usage */\n getTotalGasUsage: api.getPolicyTotalGasUsage,\n }\n }\n\n /**\n * Policy rules management endpoints\n */\n public get policyRules() {\n return {\n /** List policy rules */\n list: api.getPolicyRules,\n /** Create a policy rule */\n create: api.createPolicyRule,\n /** Update a policy rule */\n update: api.updatePolicyRule,\n /** Delete a policy rule */\n delete: api.deletePolicyRule,\n }\n }\n\n // ============================================\n // Transaction Intents API\n // ============================================\n\n /**\n * Transaction intent management endpoints\n */\n public get transactionIntents() {\n return {\n /** List transaction intents */\n list: api.getTransactionIntents,\n /** Create a transaction intent */\n create: api.createTransactionIntent,\n /** Get a transaction intent by ID */\n get: api.getTransactionIntent,\n /** Sign a transaction intent */\n signature: api.signature,\n /** Estimate cost */\n estimateCost: api.estimateTransactionIntentCost,\n }\n }\n\n // ============================================\n // Sessions API\n // ============================================\n\n /**\n * Session management endpoints\n */\n public get sessions() {\n return {\n /** List sessions */\n list: api.getPlayerSessions,\n /** Create a session */\n create: api.createSession,\n /** Get a session by ID */\n get: api.getSession,\n /** Revoke a session */\n revoke: api.revokeSession,\n /** Sign a session */\n signature: api.signatureSession,\n }\n }\n\n // ============================================\n // Settings API\n // ============================================\n\n /**\n * Settings / Developer account management endpoints\n */\n public get settings() {\n return {\n /** List developer accounts */\n getDeveloperAccounts: api.getDeveloperAccounts,\n /** Create a developer account */\n createDeveloperAccount: api.createDeveloperAccount,\n /** Get a developer account by ID */\n getDeveloperAccount: api.getDeveloperAccount,\n /** Delete a developer account */\n deleteDeveloperAccount: api.deleteDeveloperAccount,\n /** Get verification payload */\n getVerificationPayload: api.getVerificationPayload,\n }\n }\n\n // ============================================\n // Subscriptions API\n // ============================================\n\n /**\n * Subscription management endpoints\n */\n public get subscriptions() {\n return {\n /** List subscriptions */\n list: api.getSubscriptions,\n /** Create a subscription */\n create: api.createSubscription,\n /** Get a subscription by ID */\n get: api.getSubscription,\n /** Delete a subscription */\n delete: api.deleteSubscription,\n }\n }\n\n // ============================================\n // Triggers API\n // ============================================\n\n /**\n * Trigger management endpoints\n */\n public get triggers() {\n return {\n /** List triggers */\n list: api.getTriggers,\n /** Create a trigger */\n create: api.createTrigger,\n /** Get a trigger by ID */\n get: api.getTrigger,\n /** Delete a trigger */\n delete: api.deleteTrigger,\n }\n }\n\n // ============================================\n // Exchange API\n // ============================================\n\n /**\n * Exchange endpoints\n */\n public get exchange() {\n return {\n /** Create swap */\n createSwap: api.createSwap,\n /** Get swap quote */\n quoteSwap: api.quoteSwap,\n }\n }\n\n // ============================================\n // Auth API\n // ============================================\n\n /**\n * Authentication endpoints\n *\n * @example\n * ```typescript\n * await openfort.auth.verifyThirdParty({ provider: 'firebase', token: '...' });\n * ```\n */\n public get auth() {\n return {\n /** Verify third-party auth provider token (Supabase, Firebase, etc.) */\n verifyThirdParty: api.thirdPartyV2,\n }\n }\n\n // ============================================\n // IAM API (V2 default, V1 legacy)\n // ============================================\n\n /**\n * Identity and access management endpoints (V2 default)\n *\n * @example\n * ```typescript\n * // V2 (default) - Users\n * const users = await openfort.iam.users.list();\n * const user = await openfort.iam.users.get('usr_...');\n *\n * // V1 - Players\n * const players = await openfort.iam.v1.players.list();\n * await openfort.iam.v1.players.create(request, shieldConfig);\n * ```\n */\n public get iam() {\n return {\n /** Get session from access token */\n getSession: this.getSession.bind(this),\n /** User management (V2) */\n users: {\n /** List authenticated users */\n list: api.getAuthUsers,\n /** Get an authenticated user by ID */\n get: api.getAuthUser,\n /** Delete a user */\n delete: api.deleteUser,\n },\n /** OAuth configuration */\n authProvidersConfig: {\n /** Create OAuth config */\n create: api.createOAuthConfig,\n /** Get OAuth config */\n get: api.getOAuthConfig,\n /** List OAuth configs */\n list: api.listOAuthConfig,\n /** Delete OAuth config */\n delete: api.deleteOAuthConfig,\n },\n /** V1 IAM methods */\n v1: {\n /** Auth player management (V1) */\n players: {\n /**\n * Create an auth player with optional embedded account pre-generation.\n * @param req - The create auth player request\n * @param shieldConfig - Optional Shield configuration for storing the recovery share\n * @returns The auth player response\n */\n create: this.createAuthPlayerWithShield.bind(this),\n /** List auth players */\n list: api.getAuthPlayers,\n /** Get an auth player by ID */\n get: api.getAuthPlayer,\n /** Delete an auth player */\n delete: api.deleteAuthPlayer,\n },\n /** Verify auth token */\n verifyToken: api.verifyAuthToken,\n /** Verify OAuth token */\n verifyOAuthToken: api.verifyOAuthToken,\n /** Authorize */\n authorize: api.authorize,\n },\n }\n }\n\n /**\n * Get session from access token.\n * @internal\n */\n private getSession(options: {\n accessToken: string\n disableCookieCache?: boolean\n }): Promise<api.authSchemas.GetGetSession200> {\n const { accessToken, disableCookieCache } = options\n return api.authApi.getGetSession(\n disableCookieCache !== undefined ? { disableCookieCache } : undefined,\n { accessToken },\n )\n }\n\n /**\n * Pre-generate a user with an embedded account (V2).\n * If Shield pre-registration fails, the created user will be deleted.\n * @internal\n */\n private async pregenerateUser(\n req: api.PregenerateUserRequestV2,\n shieldConfig: ShieldConfiguration,\n ): Promise<api.AccountV2Response> {\n const response = await api.pregenerateUserV2(req)\n\n try {\n await this.preRegisterWithShield(\n response.recoveryShare,\n response.user,\n req.thirdPartyUserId,\n shieldConfig,\n )\n\n // Return without recoveryShare (it's been stored in Shield)\n const { recoveryShare: _, ...accountResponse } = response\n return accountResponse\n } catch (error) {\n // If anything fails after user creation, delete the created user\n await api.deleteUser(response.user)\n throw error\n }\n }\n\n /**\n * Create an auth player with optional Shield pre-registration (V1).\n * @internal\n */\n private async createAuthPlayerWithShield(\n req: api.CreateAuthPlayerRequest,\n shieldConfig?: ShieldConfiguration,\n ): Promise<api.AuthPlayerResponse> {\n if (req.preGenerateEmbeddedAccount && !shieldConfig) {\n throw new Error(\n 'Pre-generating embedded account requires Shield configuration.',\n )\n }\n\n const response = await api.createAuthPlayer(req)\n\n if (response.recoveryShare && shieldConfig) {\n await this.preRegisterWithShield(\n response.recoveryShare,\n response.id,\n req.thirdPartyUserId,\n shieldConfig,\n )\n }\n\n // Return without recoveryShare (it's been stored in Shield)\n const { recoveryShare: _, ...playerResponse } = response\n return playerResponse as api.AuthPlayerResponse\n }\n\n /**\n * Pre-register a recovery share with Shield.\n * @internal\n */\n private async preRegisterWithShield(\n recoveryShare: string,\n openfortUserId: string,\n thirdPartyUserId: string | undefined,\n config: ShieldConfiguration,\n ): Promise<void> {\n let externalUserId: string\n\n if (config.shieldAuthProvider === ShieldAuthProvider.OPENFORT) {\n externalUserId = openfortUserId\n } else if (config.shieldAuthProvider === ShieldAuthProvider.CUSTOM) {\n if (!thirdPartyUserId) {\n throw new Error(\n 'thirdPartyUserId is required when using CUSTOM Shield auth provider.',\n )\n }\n externalUserId = thirdPartyUserId\n } else {\n throw new Error('Invalid Shield auth provider.')\n }\n\n const authOptions: ShieldAuthOptions = {\n authProvider: config.shieldAuthProvider,\n encryptionPart: config.encryptionShare,\n externalUserId,\n apiKey: config.shieldApiKey,\n apiSecret: config.shieldApiSecret,\n }\n\n const share: Share = {\n secret: recoveryShare,\n entropy: entropy.project,\n }\n\n const shieldSDK = new ShieldSDK({\n apiKey: config.shieldApiKey,\n baseURL: config.shieldApiBaseUrl,\n })\n\n await shieldSDK.preRegister(share, authOptions)\n }\n\n // ============================================\n // Paymasters API\n // ============================================\n\n /**\n * Paymaster endpoints\n */\n public get paymasters() {\n return {\n /** Create a paymaster */\n create: api.createPaymaster,\n /** Get a paymaster by ID */\n get: api.getPaymaster,\n /** Update a paymaster */\n update: api.updatePaymaster,\n /** Delete a paymaster */\n delete: api.deletePaymaster,\n }\n }\n\n // ============================================\n // Utility Methods\n // ============================================\n\n /**\n * Constructs and validates a webhook event from the request body and signature.\n * @param body - The raw request body\n * @param signature - The signature header value\n * @returns The validated webhook event\n */\n public async constructWebhookEvent<T = unknown>(\n body: string,\n signature: string,\n ): Promise<T> {\n const signedPayload = await sign(this._apiKey, body)\n if (signedPayload !== signature) {\n throw Error('Invalid signature')\n }\n return JSON.parse(body) as T\n }\n\n /**\n * Creates an encryption session with Shield.\n * This is a setup step for configuring encryption before using pregenerate.\n *\n * @param shieldApiKey - Shield API key\n * @param shieldApiSecret - Shield API secret\n * @param encryptionShare - Encryption share for the recovery share\n * @param shieldApiBaseUrl - Shield API base URL (defaults to https://shield.openfort.io)\n * @returns The encryption session ID\n *\n * @example\n * ```typescript\n * const sessionId = await openfort.createEncryptionSession(\n * 'shield_api_key',\n * 'shield_api_secret',\n * 'encryption_share',\n * );\n * ```\n */\n public async createEncryptionSession(\n shieldApiKey: string,\n shieldApiSecret: string,\n encryptionShare: string,\n shieldApiBaseUrl = 'https://shield.openfort.io',\n ): Promise<string> {\n const response = await fetch(\n `${shieldApiBaseUrl}/project/encryption-session`,\n {\n headers: {\n 'Content-Type': 'application/json',\n 'x-api-key': shieldApiKey,\n 'x-api-secret': shieldApiSecret,\n },\n method: 'POST',\n body: JSON.stringify({\n encryption_part: encryptionShare,\n }),\n },\n )\n\n if (!response.ok) {\n throw new Error('Failed to create encryption session')\n }\n\n const jsonResponse = await response.json()\n return jsonResponse.session_id\n }\n}\n\n// Export both as default and named export for better CommonJS/ESM interop\nexport { Openfort }\nexport default Openfort\n\n// Constants\nexport { IMPORT_ENCRYPTION_PUBLIC_KEY } from './constants'\n// Error classes\nexport {\n AccountNotFoundError,\n EncryptionError,\n InvalidAPIKeyFormatError,\n InvalidPublishableKeyFormatError,\n InvalidWalletSecretFormatError,\n MissingAPIKeyError,\n MissingPublishableKeyError,\n MissingWalletSecretError,\n TimeoutError,\n UserInputValidationError,\n} from './errors'\n// Re-export all types from the generated API\nexport * from './openapi-client'\n// Export the configure function for advanced use cases\nexport { configure, getConfig } from './openapi-client/openfortApiClient'\n// RSA encryption utilities for key import/export\nexport {\n decryptExportedPrivateKey,\n encryptForImport,\n generateRSAKeyPair,\n type RSAKeyPair,\n} from './utilities/encryption'\n// Re-export wallet types\nexport * from './wallets'\n","/**\n * @module Errors\n * Custom error classes for the Openfort SDK\n */\n\n/**\n * MissingAPIKeyError is thrown when no API key is provided.\n */\nexport class MissingAPIKeyError extends Error {\n constructor() {\n super(`\nMissing required Openfort API key.\n\nYou can set it as an environment variable:\n\nOPENFORT_API_KEY=sk_test_...\n\nYou can also pass it to the constructor:\n\nconst openfort = new Openfort(\"sk_test_...\");\n\nIf you're performing backend wallet operations, make sure to also set your wallet secret:\n\nOPENFORT_WALLET_SECRET=your-wallet-secret\n\nThis is also available as an option to the constructor:\n\nconst openfort = new Openfort(\"sk_test_...\", {\n walletSecret: \"your-wallet-secret\",\n});\n\nFor more information, see: https://www.openfort.io/docs\n`)\n this.name = 'MissingAPIKeyError'\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, MissingAPIKeyError)\n }\n }\n}\n\n/**\n * InvalidAPIKeyFormatError is thrown when the API key has an invalid format.\n */\nexport class InvalidAPIKeyFormatError extends Error {\n constructor(key: string) {\n const prefix = key.length > 8 ? `${key.substring(0, 8)}...` : key\n super(`\nInvalid API key format: \"${prefix}\"\n\nOpenfort secret API keys should start with:\n- \"sk_test_\" for test environment\n- \"sk_live_\" for live environment\n\nMake sure you're using a SECRET key (not a publishable key).\nPublishable keys start with \"pk_\" and cannot be used for server-side API calls.\n\nFor more information, see: https://www.openfort.io/docs\n`)\n this.name = 'InvalidAPIKeyFormatError'\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, InvalidAPIKeyFormatError)\n }\n }\n}\n\n/**\n * InvalidPublishableKeyFormatError is thrown when the publishable key has an invalid format.\n */\nexport class InvalidPublishableKeyFormatError extends Error {\n constructor(key: string) {\n const prefix = key.length > 8 ? `${key.substring(0, 8)}...` : key\n super(`\nInvalid publishable key format: \"${prefix}\"\n\nOpenfort publishable keys should start with:\n- \"pk_test_\" for test environment\n- \"pk_live_\" for live environment\n\nFor more information, see: https://www.openfort.io/docs\n`)\n this.name = 'InvalidPublishableKeyFormatError'\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, InvalidPublishableKeyFormatError)\n }\n }\n}\n\n/**\n * MissingWalletSecretError is thrown when wallet secret is required but not provided.\n */\nexport class MissingWalletSecretError extends Error {\n constructor(operation: string) {\n super(`\nWallet secret not configured. Required for: ${operation}\n\nYou can set it as an environment variable:\n\nOPENFORT_WALLET_SECRET=your-wallet-secret\n\nYou can also pass it as an option to the constructor:\n\nconst openfort = new Openfort(\"sk_test_...\", {\n walletSecret: \"your-wallet-secret\",\n});\n\nThe wallet secret is required for backend wallet operations (create, list, get, sign, import, export).\n\nFor more information, see: https://www.openfort.io/docs\n`)\n this.name = 'MissingWalletSecretError'\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, MissingWalletSecretError)\n }\n }\n}\n\n/**\n * InvalidWalletSecretFormatError is thrown when the wallet secret has an invalid format.\n */\nexport class InvalidWalletSecretFormatError extends Error {\n constructor(reason: string) {\n super(`\nInvalid wallet secret format: ${reason}\n\nThe wallet secret should be a base64-encoded EC P-256 private key in DER format.\nYou can generate a new wallet secret from the Openfort dashboard.\n\nFor more information, see: https://www.openfort.io/docs\n`)\n this.name = 'InvalidWalletSecretFormatError'\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, InvalidWalletSecretFormatError)\n }\n }\n}\n\n/**\n * MissingPublishableKeyError is thrown when publishable key is required but not provided.\n */\nexport class MissingPublishableKeyError extends Error {\n constructor(operation: string) {\n super(`\nPublishable key not configured. Required for: ${operation}\n\nYou can set it as an environment variable:\n\nOPENFORT_PUBLISHABLE_KEY=pk_test_...\n\nYou can also pass it as an option to the constructor:\n\nconst openfort = new Openfort(\"sk_test_...\", {\n publishableKey: \"pk_test_...\",\n});\n\nThe publishable key is required for client-side auth endpoints like getSession.\n\nFor more information, see: https://www.openfort.io/docs\n`)\n this.name = 'MissingPublishableKeyError'\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, MissingPublishableKeyError)\n }\n }\n}\n\n/**\n * TimeoutError is thrown when an operation times out.\n */\nexport class TimeoutError extends Error {\n /**\n * Initializes a new TimeoutError instance.\n *\n * @param message - The error message.\n */\n constructor(message = 'Timeout Error') {\n super(message)\n this.name = 'TimeoutError'\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, TimeoutError)\n }\n }\n}\n\n/**\n * UserInputValidationError is thrown when validation of a user-supplied input fails.\n */\nexport class UserInputValidationError extends Error {\n /**\n * Initializes a new UserInputValidationError instance.\n *\n * @param message - The user input validation error message.\n */\n constructor(message: string) {\n super(message)\n this.name = 'UserInputValidationError'\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, UserInputValidationError)\n }\n }\n}\n\n/**\n * AccountNotFoundError is thrown when an account cannot be found.\n */\nexport class AccountNotFoundError extends Error {\n /**\n * Initializes a new AccountNotFoundError instance.\n *\n * @param message - The error message.\n */\n constructor(message = 'Account not found') {\n super(message)\n this.name = 'AccountNotFoundError'\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, AccountNotFoundError)\n }\n }\n}\n\n/**\n * EncryptionError is thrown when encryption or decryption fails.\n */\nexport class EncryptionError extends Error {\n /**\n * Initializes a new EncryptionError instance.\n *\n * @param message - The error message.\n */\n constructor(message: string) {\n super(message)\n this.name = 'EncryptionError'\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, EncryptionError)\n }\n }\n}\n","/**\n * Error types for HTTP-level errors\n */\nexport type HttpErrorType =\n | 'unexpected_error'\n | 'unauthorized'\n | 'forbidden'\n | 'not_found'\n | 'bad_request'\n | 'conflict'\n | 'rate_limited'\n | 'bad_gateway'\n | 'service_unavailable'\n | 'unknown'\n | 'network_timeout'\n | 'network_connection_failed'\n | 'network_ip_blocked'\n | 'network_dns_failure'\n\n/**\n * Extended API error type\n */\nexport type APIErrorType = HttpErrorType | string\n\n/**\n * Shape of Openfort API error responses\n */\nexport interface OpenfortErrorResponse {\n message?: string\n error?: string\n statusCode?: number\n correlationId?: string\n}\n\n/**\n * Type guard to check if an object is an Openfort error response\n */\nexport function isOpenfortError(obj: unknown): obj is OpenfortErrorResponse {\n return (\n obj !== null &&\n typeof obj === 'object' &&\n ('message' in obj || 'error' in obj)\n )\n}\n\n/**\n * Extended API error that encompasses both Openfort errors and other API-related errors\n */\nexport class APIError extends Error {\n statusCode: number\n errorType: APIErrorType\n errorMessage: string\n correlationId?: string\n errorLink?: string\n declare cause?: Error | unknown\n\n /**\n * Constructor for the APIError class\n *\n * @param statusCode - The HTTP status code\n * @param errorType - The type of error\n * @param errorMessage - The error message\n * @param correlationId - The correlation ID for tracing\n * @param errorLink - URL to documentation about this error\n * @param cause - The cause of the error\n */\n constructor(\n statusCode: number,\n errorType: APIErrorType,\n errorMessage: string,\n correlationId?: string,\n errorLink?: string,\n cause?: Error | unknown,\n ) {\n super(errorMessage)\n if (cause) {\n this.cause = cause\n }\n this.name = 'APIError'\n this.statusCode = statusCode\n this.errorType = errorType\n this.errorMessage = errorMessage\n\n if (correlationId !== undefined) {\n this.correlationId = correlationId\n }\n\n if (errorLink !== undefined) {\n this.errorLink = errorLink\n }\n }\n\n /**\n * Convert the error to a JSON object\n */\n toJSON() {\n return {\n name: this.name,\n statusCode: this.statusCode,\n errorType: this.errorType,\n errorMessage: this.errorMessage,\n ...(this.correlationId && { correlationId: this.correlationId }),\n ...(this.errorLink && { errorLink: this.errorLink }),\n }\n }\n}\n\n/**\n * Error thrown when a network-level failure occurs before reaching the Openfort service.\n * This includes gateway errors, IP blocklist rejections, DNS failures, timeouts, etc.\n */\nexport class NetworkError extends APIError {\n networkDetails?: {\n code?: string\n message?: string\n retryable?: boolean\n }\n\n /**\n * Constructor for the NetworkError class\n *\n * @param errorType - The type of network error\n * @param errorMessage - The error message\n * @param networkDetails - Additional network error details\n * @param cause - The cause of the error\n */\n constructor(\n errorType: HttpErrorType,\n errorMessage: string,\n networkDetails?: { code?: string; message?: string; retryable?: boolean },\n cause?: Error | unknown,\n ) {\n super(\n 0, // Status code 0 indicates no response was received\n errorType,\n errorMessage,\n undefined,\n 'https://www.openfort.io/docs',\n cause,\n )\n this.name = 'NetworkError'\n this.networkDetails = networkDetails\n }\n\n /**\n * Convert the error to a JSON object\n */\n toJSON() {\n return {\n ...super.toJSON(),\n ...(this.networkDetails && { networkDetails: this.networkDetails }),\n }\n }\n}\n\n/**\n * Error thrown when an error is not known or cannot be categorized\n */\nexport class UnknownError extends Error {\n declare cause?: Error\n\n /**\n * Constructor for the UnknownError class\n *\n * @param message - The error message\n * @param cause - The cause of the error\n */\n constructor(message: string, cause?: Error) {\n super(message)\n if (cause) {\n this.cause = cause\n }\n this.name = 'UnknownError'\n }\n}\n\n/**\n * Error thrown for user input validation failures\n */\nexport class ValidationError extends Error {\n field?: string\n value?: unknown\n\n /**\n * Constructor for the ValidationError class\n *\n * @param message - The error message\n * @param field - The field that failed validation\n * @param value - The invalid value\n */\n constructor(message: string, field?: string, value?: unknown) {\n super(message)\n this.name = 'ValidationError'\n this.field = field\n this.value = value\n }\n}\n","import Axios, { type AxiosInstance, type AxiosRequestConfig } from 'axios'\nimport axiosRetry, { exponentialDelay } from 'axios-retry'\nimport { MissingPublishableKeyError, MissingWalletSecretError } from '../errors'\nimport {\n generateWalletJwt,\n requiresWalletAuth,\n sortKeys,\n} from '../utilities/walletAuth'\nimport { PACKAGE, VERSION } from '../version'\nimport {\n APIError,\n isOpenfortError,\n NetworkError,\n UnknownError,\n ValidationError,\n} from './errors'\n\nconst ERROR_DOCS_URL = 'https://www.openfort.io/docs'\n\n/**\n * Configuration options for the Openfort API client\n */\nexport interface OpenfortClientOptions {\n /** The API key (secret key starting with sk_) */\n apiKey: string\n /** Optional wallet secret for X-Wallet-Auth header */\n walletSecret?: string\n /** Optional publishable key for client-side auth endpoints (pk_live_... or pk_test_...) */\n publishableKey?: string\n /** Optional base URL for the API */\n basePath?: string\n /** If true, logs API requests and responses to the console */\n debugging?: boolean\n /** Optional source identifier for analytics */\n source?: string\n /** Optional source version for analytics */\n sourceVersion?: string\n}\n\nlet axiosInstance: AxiosInstance\nlet clientConfig: OpenfortClientOptions | undefined\n\n/**\n * Converts BigInts to strings recursively for safe JSON serialization\n */\nfunction convertBigIntsToStrings<T>(obj: T): T {\n if (obj === null || obj === undefined) {\n return obj\n }\n\n if (typeof obj === 'bigint') {\n return obj.toString() as unknown as T\n }\n\n if (Array.isArray(obj)) {\n return obj.map(convertBigIntsToStrings) as unknown as T\n }\n\n if (typeof obj === 'object') {\n const result: Record<string, unknown> = {}\n for (const [key, value] of Object.entries(obj)) {\n result[key] = convertBigIntsToStrings(value)\n }\n return result as T\n }\n\n return obj\n}\n\n/**\n * Validates the request configuration before sending\n */\nfunction validateRequest(config: AxiosRequestConfig): void {\n if (!axiosInstance) {\n throw new ValidationError(\n 'Openfort client not configured. Call configure() first.',\n )\n }\n\n if (!config.url || config.url === '') {\n throw new ValidationError('Request URL is required.')\n }\n\n if (!config.method || config.method === '') {\n throw new ValidationError('Request method is required.')\n }\n}\n\n/**\n * Checks if a request path requires the publishable key (x-project-key header).\n * Auth V2 endpoints require the publishable key for proper project identification.\n */\nfunction requiresPublishableKey(requestPath: string): boolean {\n return requestPath.startsWith('/iam/v2/auth/')\n}\n\n/**\n * Configures the Openfort API client with the given options.\n *\n * @param options - The client configuration options\n */\nexport const configure = (options: OpenfortClientOptions): void => {\n const baseURL = options.basePath || 'https://api.openfort.io'\n\n clientConfig = {\n ...options,\n basePath: baseURL,\n }\n\n axiosInstance = Axios.create({\n baseURL,\n headers: {\n 'User-Agent': `${PACKAGE}@${VERSION}`,\n ...(options.source && { 'X-Source': options.source }),\n ...(options.sourceVersion && {\n 'X-Source-Version': options.sourceVersion,\n }),\n ...(options.publishableKey && {\n 'x-project-key': options.publishableKey,\n }),\n },\n paramsSerializer: {\n indexes: null, // Use repeat style for arrays: ?player=a&player=b instead of ?player[0]=a&player[1]=b\n },\n })\n\n // Add retry logic with exponential backoff\n axiosRetry(axiosInstance, {\n retryDelay: exponentialDelay,\n retries: 3,\n retryCondition: (error) => {\n // Retry on network errors and 5xx responses\n return (\n axiosRetry.isNetworkOrIdempotentRequestError(error) ||\n (error.response?.status !== undefined && error.response.status >= 500)\n )\n },\n })\n\n // Add request interceptor for authentication and data transformation\n axiosInstance.interceptors.request.use(async (config) => {\n // Add API key authentication only if not already set (e.g., by accessToken)\n if (!config.headers.Authorization) {\n config.headers.Authorization = `Bearer ${options.apiKey}`\n }\n\n // Convert BigInts in request body to strings\n if (config.data) {\n config.data = convertBigIntsToStrings(config.data)\n }\n\n // Add X-Wallet-Auth header if needed\n if (config.url && config.method) {\n const url = new URL(config.url, baseURL)\n const method = config.method.toUpperCase()\n const path = url.pathname\n\n // Validate publishable key for auth endpoints\n if (requiresPublishableKey(path) && !options.publishableKey) {\n throw new MissingPublishableKeyError(`${method} ${path}`)\n }\n\n if (requiresWalletAuth(method, path)) {\n // Throw early if wallet secret is required but not configured\n if (!options.walletSecret) {\n throw new MissingWalletSecretError(`${method} ${path}`)\n }\n\n let requestData: Record<string, unknown> = {}\n if (config.data && typeof config.data === 'object') {\n requestData = config.data as Record<string, unknown>\n }\n\n // IMPORTANT: Sort the request data keys to ensure the HTTP body\n // matches the hash computed for the JWT's reqHash claim.\n // The TEE hashes the raw body bytes without sorting, so we must\n // send the sorted JSON to match what generateWalletJwt hashes.\n if (Object.keys(requestData).length > 0) {\n config.data = sortKeys(requestData)\n }\n\n const walletAuthToken = await generateWalletJwt({\n walletSecret: options.walletSecret,\n requestMethod: method,\n requestHost: url.host,\n requestPath: path,\n requestData,\n })\n\n config.headers['X-Wallet-Auth'] = walletAuthToken\n }\n }\n\n return config\n })\n\n // Add debug interceptors if enabled\n if (options.debugging) {\n axiosInstance.interceptors.request.use((config) => {\n console.log('[Openfort] Request:', {\n method: config.method?.toUpperCase(),\n url: config.url,\n headers: config.headers,\n data: config.data,\n })\n return config\n })\n\n axiosInstance.interceptors.response.use(\n (response) => {\n console.log('[Openfort] Response:', {\n status: response.status,\n statusText: response.statusText,\n data: response.data,\n })\n return response\n },\n (error) => {\n return Promise.reject(error)\n },\n )\n }\n}\n\n/**\n * Request options for the API client\n */\nexport interface RequestOptions {\n /** Idempotency key for the request */\n idempotencyKey?: string\n /** Access token for authenticated requests (overrides default Authorization header) */\n accessToken?: string\n}\n\n/**\n * Adds custom headers to request config based on options\n */\nconst addRequestHeaders = (\n config: AxiosRequestConfig,\n options?: RequestOptions | string,\n): AxiosRequestConfig => {\n // Support legacy string parameter (idempotency key only)\n const opts: RequestOptions | undefined =\n typeof options === 'string' ? { idempotencyKey: options } : options\n\n if (!opts) {\n return config\n }\n\n const additionalHeaders: Record<string, string> = {}\n\n if (opts.idempotencyKey) {\n additionalHeaders['X-Idempotency-Key'] = opts.idempotencyKey\n }\n\n if (opts.accessToken) {\n additionalHeaders.Authorization = `Bearer ${opts.accessToken}`\n }\n\n if (Object.keys(additionalHeaders).length === 0) {\n return config\n }\n\n return {\n ...config,\n headers: {\n ...(config.headers || {}),\n ...additionalHeaders,\n },\n }\n}\n\n/**\n * Handles network-level errors (no response received)\n */\nfunction handleNetworkError(error: {\n message?: string\n code?: string\n cause?: unknown\n}): never {\n const errorMessage = (error.message || '').toLowerCase()\n const errorCode = error.code?.toLowerCase()\n\n if (\n errorCode === 'econnrefused' ||\n errorMessage.includes('connection refused')\n ) {\n throw new NetworkError(\n 'network_connection_failed',\n 'Unable to connect to Openfort service. The service may be unavailable.',\n { code: error.code, message: error.message, retryable: true },\n error.cause,\n )\n }\n\n if (\n errorCode === 'etimedout' ||\n errorCode === 'econnaborted' ||\n errorMessage.includes('timeout')\n ) {\n throw new NetworkError(\n 'network_timeout',\n 'Request timed out. Please try again.',\n { code: error.code, message: error.message, retryable: true },\n error.cause,\n )\n }\n\n if (errorCode === 'enotfound' || errorMessage.includes('getaddrinfo')) {\n throw new NetworkError(\n 'network_dns_failure',\n 'DNS resolution failed. Please check your network connection.',\n { code: error.code, message: error.message, retryable: false },\n error.cause,\n )\n }\n\n if (\n errorMessage.includes('network error') ||\n errorMessage.includes('econnreset')\n ) {\n throw new NetworkError(\n 'network_connection_failed',\n 'Network error occurred. Please check your connection and try again.',\n { code: error.code, message: error.message, retryable: true },\n error.cause,\n )\n }\n\n // Generic network error\n throw new NetworkError(\n 'unknown',\n error.message || 'An unknown network error occurred.',\n { code: error.code, message: error.message, retryable: true },\n error.cause,\n )\n}\n\n/**\n * Handles HTTP response errors\n */\nfunction handleResponseError(\n statusCode: number,\n responseData: unknown,\n cause?: unknown,\n): never {\n // Check for gateway-level errors\n const isGatewayError =\n responseData &&\n typeof responseData === 'string' &&\n (responseData.toLowerCase().includes('forbidden') ||\n responseData.toLowerCase().includes('ip') ||\n responseData.toLowerCase().includes('blocked') ||\n responseData.toLowerCase().includes('gateway'))\n\n // Extract correlation ID if available\n const correlationId = isOpenfortError(responseData)\n ? responseData.correlationId\n : undefined\n\n // Extract error message\n let errorMessage: string\n if (isOpenfortError(responseData)) {\n errorMessage = responseData.message || responseData.error || 'Unknown error'\n } else if (typeof responseData === 'string') {\n errorMessage = responseData\n } else if (responseData) {\n try {\n errorMessage = JSON.stringify(responseData)\n } catch {\n errorMessage = String(responseData)\n }\n } else {\n errorMessage = 'Unknown error'\n }\n\n switch (statusCode) {\n case 400:\n throw new APIError(\n statusCode,\n 'bad_request',\n errorMessage,\n correlationId,\n `${ERROR_DOCS_URL}#bad-request`,\n cause,\n )\n\n case 401:\n throw new APIError(\n statusCode,\n 'unauthorized',\n 'Unauthorized. Check your API key.',\n correlationId,\n `${ERROR_DOCS_URL}#unauthorized`,\n cause,\n )\n\n case 403:\n if (isGatewayError) {\n throw new NetworkError(\n 'network_ip_blocked',\n 'Access denied. Your IP address may be blocked or restricted.',\n {\n code: 'IP_BLOCKED',\n message:\n typeof responseData === 'string' ? responseData : errorMessage,\n retryable: false,\n },\n cause,\n )\n }\n throw new APIError(\n statusCode,\n 'forbidden',\n \"Forbidden. You don't have permission to access this resource.\",\n correlationId,\n `${ERROR_DOCS_URL}#forbidden`,\n cause,\n )\n\n case 404:\n throw new APIError(\n statusCode,\n 'not_found',\n errorMessage || 'Resource not found.',\n correlationId,\n `${ERROR_DOCS_URL}#not-found`,\n cause,\n )\n\n case 409:\n throw new APIError(\n statusCode,\n 'conflict',\n errorMessage || 'Resource conflict.',\n correlationId,\n `${ERROR_DOCS_URL}#conflict`,\n cause,\n )\n\n case 429:\n throw new APIError(\n statusCode,\n 'rate_limited',\n 'Rate limit exceeded. Please slow down your requests.',\n correlationId,\n `${ERROR_DOCS_URL}#rate-limited`,\n cause,\n )\n\n case 502:\n throw new APIError(\n statusCode,\n 'bad_gateway',\n 'Bad gateway. Please try again later.',\n correlationId,\n `${ERROR_DOCS_URL}`,\n cause,\n )\n\n case 503:\n throw new APIError(\n statusCode,\n 'service_unavailable',\n 'Service unavailable. Please try again later.',\n correlationId,\n `${ERROR_DOCS_URL}`,\n cause,\n )\n\n default:\n throw new APIError(\n statusCode,\n 'unexpected_error',\n `An unexpected error occurred: ${errorMessage}`,\n correlationId,\n `${ERROR_DOCS_URL}`,\n cause,\n )\n }\n}\n\n/**\n * The Openfort API client mutator for Orval.\n * This function is called by generated API functions to make HTTP requests.\n *\n * @param config - The Axios request configuration\n * @param options - Optional request options (idempotency key, access token)\n * @returns Promise resolving to the response data\n */\nexport const openfortApiClient = async <T>(\n config: AxiosRequestConfig,\n options?: RequestOptions | string,\n): Promise<T> => {\n // Validate the request\n validateRequest(config)\n\n const configWithHeaders = addRequestHeaders(config, options)\n\n try {\n const response = await axiosInstance(configWithHeaders)\n return response.data as T\n } catch (error) {\n // Handle validation errors (pass through)\n if (error instanceof ValidationError) {\n throw error\n }\n\n // Handle Axios errors\n if (Axios.isAxiosError(error)) {\n // Network-level errors (no response received)\n if (!error.response) {\n handleNetworkError({\n message: error.message,\n code: error.code,\n cause: error.cause,\n })\n }\n\n // HTTP response errors\n handleResponseError(\n error.response.status,\n error.response.data,\n error.cause,\n )\n }\n\n // Unknown errors\n throw new UnknownError(\n 'Something went wrong. Please contact support at https://www.openfort.io/support',\n error instanceof Error ? error : undefined,\n )\n }\n}\n\n/**\n * Gets the current client configuration\n */\nexport const getConfig = (): OpenfortClientOptions | undefined => clientConfig\n","/**\n * @module WalletAuth\n * Wallet authentication utilities for generating X-Wallet-Auth headers\n */\n\nimport { createHash, randomBytes } from 'node:crypto'\nimport { importPKCS8, SignJWT } from 'jose'\nimport {\n InvalidWalletSecretFormatError,\n UserInputValidationError,\n} from '../errors'\n\n/**\n * Options for generating a wallet JWT\n */\nexport interface WalletJwtOptions {\n /** The wallet secret (EC private key in base64 DER format) */\n walletSecret: string\n /** The HTTP method for the request */\n requestMethod: string\n /** The host for the request */\n requestHost: string\n /** The path for the request */\n requestPath: string\n /** The request body data */\n requestData?: Record<string, unknown>\n}\n\n/**\n * Generates a random nonce for the JWT\n */\nfunction generateNonce(): string {\n return randomBytes(16).toString('hex')\n}\n\n/**\n * Creates a hash of the request data for the JWT\n */\nfunction hashRequestData(data: Record<string, unknown>): string {\n const sortedData = sortKeys(data)\n const jsonString = JSON.stringify(sortedData)\n return createHash('sha256').update(jsonString).digest('hex')\n}\n\n/**\n * Recursively sorts object keys alphabetically.\n * This ensures deterministic JSON serialization for hash computation.\n * Exported for use in request body serialization (must match hash computation).\n */\nexport function sortKeys(obj: unknown): unknown {\n if (obj === null || typeof obj !== 'object') {\n return obj\n }\n\n if (Array.isArray(obj)) {\n return obj.map(sortKeys)\n }\n\n const sorted: Record<string, unknown> = {}\n for (const key of Object.keys(obj as Record<string, unknown>).sort()) {\n sorted[key] = sortKeys((obj as Record<string, unknown>)[key])\n }\n return sorted\n}\n\n/**\n * Generates a wallet authentication JWT for signing requests.\n * Used for authenticating wallet operations that require additional security.\n *\n * @param options - The configuration options for generating the JWT\n * @returns The generated JWT token string\n * @throws {Error} If the wallet secret is invalid or signing fails\n */\nexport async function generateWalletJwt(\n options: WalletJwtOptions,\n): Promise<string> {\n if (!options.walletSecret) {\n throw new UserInputValidationError('Wallet secret is required')\n }\n\n const uri = `${options.requestMethod} ${options.requestHost}${options.requestPath}`\n const now = Math.floor(Date.now() / 1000)\n\n const claims: Record<string, unknown> = {\n uris: [uri],\n }\n\n // Add request hash if there's request data\n if (\n options.requestData &&\n typeof options.requestData === 'object' &&\n Object.keys(options.requestData).length > 0 &&\n Object.values(options.requestData).some((value) => value !== undefined)\n ) {\n claims.reqHash = hashRequestData(options.requestData)\n }\n\n try {\n // Convert base64 DER to PEM format for jose\n const derBuffer = Buffer.from(options.walletSecret, 'base64')\n const pemKey = `-----BEGIN PRIVATE KEY-----\\n${derBuffer\n .toString('base64')\n .match(/.{1,64}/g)\n ?.join('\\n')}\\n-----END PRIVATE KEY-----`\n\n const ecKey = await importPKCS8(pemKey, 'ES256')\n\n return await new SignJWT(claims)\n .setProtectedHeader({ alg: 'ES256', typ: 'JWT' })\n .setIssuedAt(now)\n .setNotBefore(now)\n .setJti(generateNonce())\n .sign(ecKey)\n } catch (error) {\n throw new InvalidWalletSecretFormatError(\n `Could not create the EC key: ${error instanceof Error ? error.message : String(error)}`,\n )\n }\n}\n\n/**\n * Determines if a request requires wallet authentication based on method and path.\n *\n * @param requestMethod - The HTTP method of the request\n * @param requestPath - The URL path of the request\n * @returns True if the request requires wallet authentication\n */\nexport function requiresWalletAuth(\n requestMethod: string,\n requestPath: string,\n): boolean {\n // Other account-related paths only require auth for mutating methods\n const methodRequiresAuth =\n requestMethod === 'POST' ||\n requestMethod === 'DELETE' ||\n requestMethod === 'PUT'\n\n const pathRequiresAuth = requestPath?.includes('/accounts/backend')\n\n return methodRequiresAuth && pathRequiresAuth\n}\n","export const VERSION = \"0.7.4\";\nexport const PACKAGE = \"@openfort/openfort-node\";\n","/**\n * Generated by orval v7.18.0 🍺\n * Do not edit manually.\n * Openfort API\n * Complete Openfort API references and guides can be found at: https://www.openfort.io/docs\n * OpenAPI spec version: 1.0.0\n */\nimport type {\n AccountListResponse,\n AccountResponse,\n CancelTransferOwnershipRequest,\n CompleteRecoveryRequest,\n CreateAccountRequest,\n DeployRequest,\n GetAccountParams,\n GetAccountsParams,\n SignPayloadRequest,\n SignPayloadResponse,\n StartRecoveryRequest,\n TransactionIntentResponse,\n TransferOwnershipRequest\n} from '../openfortAPI.schemas';\n\nimport { openfortApiClient } from '../../openfortApiClient';\n\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n\n /**\n * Returns a list of accounts for the given player.\n\nThis object represents a player's account, which is a blockchain smart account that can be used to interact with the blockchain.\n\nThe accounts are returned sorted by creation date, with the most recently created accounts appearing first.\n\nReturns the latest 10 transaction intents for each account.\n\nBy default, a maximum of 10 accounts are shown per page.\n * @summary List accounts of a player.\n */\nexport const getAccounts = (\n params?: GetAccountsParams,\n options?: SecondParameter<typeof openfortApiClient<AccountListResponse>>,) => {\n return openfortApiClient<AccountListResponse>(\n {url: `/v1/accounts`, method: 'GET',\n params\n },\n options);\n }\n /**\n * Creates a new blockchain account for the provided player. If not player is provided, a new one will be created.\n\nAccount creation does not consume any gas. All accounts of a player will use the same address across blockchains.\n\nEach player can only have one account per chain.\n * @summary Create an account object.\n */\nexport const createAccount = (\n createAccountRequest: CreateAccountRequest,\n options?: SecondParameter<typeof openfortApiClient<AccountResponse>>,) => {\n return openfortApiClient<AccountResponse>(\n {url: `/v1/accounts`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: createAccountRequest\n },\n options);\n }\n /**\n * Retrieves the details of an existing account.\n\nSupply the unique account ID from either a account creation request or the account list, and Openfort will return the corresponding account information.\n\nReturns the latest 10 transaction intents created by this account.\n * @summary Get existing account.\n */\nexport const getAccount = (\n id: string,\n params?: GetAccountParams,\n options?: SecondParameter<typeof openfortApiClient<AccountResponse>>,) => {\n return openfortApiClient<AccountResponse>(\n {url: `/v1/accounts/${id}`, method: 'GET',\n params\n },\n options);\n }\n /**\n * Disables an account.\n\nAccounts won't be shown for user and won't be accessible for transactions.\n * @summary Disable account by id.\n */\nexport const disableAccount = (\n id: string,\n options?: SecondParameter<typeof openfortApiClient<void>>,) => {\n return openfortApiClient<void>(\n {url: `/v1/accounts/${id}/disable`, method: 'POST'\n },\n options);\n }\n /**\n * Perform a request to change the owner of an account.\n\nTo perform an update on the owner of an account, first you must provide a new owner address.\nOnce requested, the owner must accept to take ownership by calling `acceptOwnership()` in the smart contract account.\n * @summary Request transfer ownership of account.\n */\nexport const requestTransferOwnership = (\n id: string,\n transferOwnershipRequest: TransferOwnershipRequest,\n options?: SecondParameter<typeof openfortApiClient<TransactionIntentResponse>>,) => {\n return openfortApiClient<TransactionIntentResponse>(\n {url: `/v1/accounts/${id}/request_transfer_ownership`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: transferOwnershipRequest\n },\n options);\n }\n /**\n * Cancel a pending transfer of ownership.\n * @summary Cancel request to transfer ownership of an account.\n */\nexport const cancelTransferOwnership = (\n id: string,\n cancelTransferOwnershipRequest: CancelTransferOwnershipRequest,\n options?: SecondParameter<typeof openfortApiClient<TransactionIntentResponse>>,) => {\n return openfortApiClient<TransactionIntentResponse>(\n {url: `/v1/accounts/${id}/cancel_transfer_ownership`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: cancelTransferOwnershipRequest\n },\n options);\n }\n /**\n * **Custodial Accounts only** - Signs the typed repositories value with types repositories structure for domain using the [EIP-712](https://eips.ethereum.org/EIPS/eip-712) specification.\n * @summary Sign a given payload\n */\nexport const signPayload = (\n id: string,\n signPayloadRequest: SignPayloadRequest,\n options?: SecondParameter<typeof openfortApiClient<SignPayloadResponse>>,) => {\n return openfortApiClient<SignPayloadResponse>(\n {url: `/v1/accounts/${id}/sign_payload`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: signPayloadRequest\n },\n options);\n }\n /**\n * Synchronize the account state with the blockchain.\nSpecifically, it updates the account owner and whether its deployed or not.\n * @summary Sync account state with the blockchain\n */\nexport const syncAccount = (\n id: string,\n options?: SecondParameter<typeof openfortApiClient<AccountResponse>>,) => {\n return openfortApiClient<AccountResponse>(\n {url: `/v1/accounts/${id}/sync`, method: 'POST'\n },\n options);\n }\n /**\n * This endpoint can be used to deploy a smart contract account that was counterfactually generated.\n * @summary Deploy an account.\n */\nexport const deployAccount = (\n id: string,\n deployRequest: DeployRequest,\n options?: SecondParameter<typeof openfortApiClient<AccountResponse>>,) => {\n return openfortApiClient<AccountResponse>(\n {url: `/v1/accounts/${id}/deploy`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: deployRequest\n },\n options);\n }\n /**\n * @summary Start a recovery process of a recoverable account.\n */\nexport const startRecovery = (\n id: string,\n startRecoveryRequest: StartRecoveryRequest,\n options?: SecondParameter<typeof openfortApiClient<TransactionIntentResponse>>,) => {\n return openfortApiClient<TransactionIntentResponse>(\n {url: `/v1/accounts/${id}/start_recovery`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: startRecoveryRequest\n },\n options);\n }\n /**\n * @summary Complete a recovery process of a recoverable account.\n */\nexport const completeRecovery = (\n id: string,\n completeRecoveryRequest: CompleteRecoveryRequest,\n options?: SecondParameter<typeof openfortApiClient<TransactionIntentResponse>>,) => {\n return openfortApiClient<TransactionIntentResponse>(\n {url: `/v1/accounts/${id}/complete_recovery`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: completeRecoveryRequest\n },\n options);\n }\n export type GetAccountsResult = NonNullable<Awaited<ReturnType<typeof getAccounts>>>\nexport type CreateAccountResult = NonNullable<Awaited<ReturnType<typeof createAccount>>>\nexport type GetAccountResult = NonNullable<Awaited<ReturnType<typeof getAccount>>>\nexport type DisableAccountResult = NonNullable<Awaited<ReturnType<typeof disableAccount>>>\nexport type RequestTransferOwnershipResult = NonNullable<Awaited<ReturnType<typeof requestTransferOwnership>>>\nexport type CancelTransferOwnershipResult = NonNullable<Awaited<ReturnType<typeof cancelTransferOwnership>>>\nexport type SignPayloadResult = NonNullable<Awaited<ReturnType<typeof signPayload>>>\nexport type SyncAccountResult = NonNullable<Awaited<ReturnType<typeof syncAccount>>>\nexport type DeployAccountResult = NonNullable<Awaited<ReturnType<typeof deployAccount>>>\nexport type StartRecoveryResult = NonNullable<Awaited<ReturnType<typeof startRecovery>>>\nexport type CompleteRecoveryResult = NonNullable<Awaited<ReturnType<typeof completeRecovery>>>\n","/**\n * Generated by orval v7.18.0 🍺\n * Do not edit manually.\n * Openfort API\n * Complete Openfort API references and guides can be found at: https://www.openfort.io/docs\n * OpenAPI spec version: 1.0.0\n */\nimport type {\n AccountV2Response,\n BaseEntityListResponseAccountV2Response,\n CreateAccountRequestV2,\n DeleteAccountResponse,\n GetAccountsV2Params,\n GetSignerIdByAddressParams,\n SignerIdResponse,\n SwitchChainQueriesV2\n} from '../openfortAPI.schemas';\n\nimport { openfortApiClient } from '../../openfortApiClient';\n\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n\n /**\n * Returns a list of accounts for the given user.\n\nThis object represents a user's account, which is a blockchain smart account that can be used to interact with the blockchain.\n\nThe accounts are returned sorted by creation date, with the most recently created accounts appearing first.\n * @summary List user accounts.\n */\nexport const getAccountsV2 = (\n params?: GetAccountsV2Params,\n options?: SecondParameter<typeof openfortApiClient<BaseEntityListResponseAccountV2Response>>,) => {\n return openfortApiClient<BaseEntityListResponseAccountV2Response>(\n {url: `/v2/accounts`, method: 'GET',\n params\n },\n options);\n }\n /**\n * Creates a new blockchain account for a user.\n\nAccount creation does not consume any gas. The account can be used to interact with the blockchain.\n * @summary Create new account.\n */\nexport const createAccountV2 = (\n createAccountRequestV2: CreateAccountRequestV2,\n options?: SecondParameter<typeof openfortApiClient<AccountV2Response>>,) => {\n return openfortApiClient<AccountV2Response>(\n {url: `/v2/accounts`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: createAccountRequestV2\n },\n options);\n }\n /**\n * Retrieves the signer ID associated with a given blockchain address.\n * @summary Get signer ID by address.\n */\nexport const getSignerIdByAddress = (\n params: GetSignerIdByAddressParams,\n options?: SecondParameter<typeof openfortApiClient<SignerIdResponse>>,) => {\n return openfortApiClient<SignerIdResponse>(\n {url: `/v2/accounts/signer`, method: 'GET',\n params\n },\n options);\n }\n /**\n * Retrieves the details of an existing account.\n\nSupply the unique account ID and Openfort will return the corresponding account information.\n * @summary Get existing account.\n */\nexport const getAccountV2 = (\n id: string,\n options?: SecondParameter<typeof openfortApiClient<AccountV2Response>>,) => {\n return openfortApiClient<AccountV2Response>(\n {url: `/v2/accounts/${id}`, method: 'GET'\n },\n options);\n }\n /**\n * Removes an account from a project.\n * @summary Delete account.\n */\nexport const removeAccount = (\n id: string,\n options?: SecondParameter<typeof openfortApiClient<DeleteAccountResponse>>,) => {\n return openfortApiClient<DeleteAccountResponse>(\n {url: `/v2/accounts/${id}`, method: 'DELETE'\n },\n options);\n }\n /**\n * Switches the blockchain network for an existing account.\n\nThis allows moving an account between different blockchain networks while maintaining the same account identity.\n * @summary Switch account blockchain.\n */\nexport const switchChainV2 = (\n switchChainQueriesV2: SwitchChainQueriesV2,\n options?: SecondParameter<typeof openfortApiClient<AccountV2Response>>,) => {\n return openfortApiClient<AccountV2Response>(\n {url: `/v2/accounts/switch-chain`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: switchChainQueriesV2\n },\n options);\n }\n export type GetAccountsV2Result = NonNullable<Awaited<ReturnType<typeof getAccountsV2>>>\nexport type CreateAccountV2Result = NonNullable<Awaited<ReturnType<typeof createAccountV2>>>\nexport type GetSignerIdByAddressResult = NonNullable<Awaited<ReturnType<typeof getSignerIdByAddress>>>\nexport type GetAccountV2Result = NonNullable<Awaited<ReturnType<typeof getAccountV2>>>\nexport type RemoveAccountResult = NonNullable<Awaited<ReturnType<typeof removeAccount>>>\nexport type SwitchChainV2Result = NonNullable<Awaited<ReturnType<typeof switchChainV2>>>\n","/**\n * Generated by orval v7.18.0 🍺\n * Do not edit manually.\n * Openfort API\n * Complete Openfort API references and guides can be found at: https://www.openfort.io/docs\n * OpenAPI spec version: 1.0.0\n */\nimport type {\n AuthConfig,\n AuthPlayerListResponse,\n AuthPlayerResponse,\n AuthPlayerResponseWithRecoveryShare,\n AuthProviderListResponse,\n AuthSessionResponse,\n AuthenticateOAuthRequest,\n Authorize200,\n AuthorizePlayerRequest,\n CallbackOAuthParams,\n CreateAuthPlayerRequest,\n DeprecatedCallbackOAuthParams,\n GetAuthPlayersParams,\n GrantCallbackRequest,\n GrantOAuthResponse,\n ListParams,\n OAuthConfigListResponse,\n OAuthProvider,\n PlayerResponse,\n VerifyAuthTokenParams\n} from '../openfortAPI.schemas';\n\nimport { openfortApiClient } from '../../openfortApiClient';\n\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n\n /**\n * The endpoint verifies the token generated by OAuth provider and retrieves a corresponding player.\n\nReturns the latest 10 transaction intents for the player.\n * @summary Retrieve player by oauth token.\n */\nexport const verifyOAuthToken = (\n authenticateOAuthRequest: AuthenticateOAuthRequest,\n options?: SecondParameter<typeof openfortApiClient<PlayerResponse>>,) => {\n return openfortApiClient<PlayerResponse>(\n {url: `/iam/v1/oauth/verify`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: authenticateOAuthRequest\n },\n options);\n }\n /**\n * List configured OAuth methods for the current project environment.\n * @deprecated\n * @summary List of oauth configurations.\n */\nexport const listOAuthConfig = (\n \n options?: SecondParameter<typeof openfortApiClient<OAuthConfigListResponse>>,) => {\n return openfortApiClient<OAuthConfigListResponse>(\n {url: `/iam/v1/oauth`, method: 'GET'\n },\n options);\n }\n /**\n * The endpoint creates oauth configuration for the current project environment.\n * @deprecated\n * @summary Create oauth configuration.\n */\nexport const createOAuthConfig = (\n authConfig: AuthConfig,\n options?: SecondParameter<typeof openfortApiClient<AuthConfig>>,) => {\n return openfortApiClient<AuthConfig>(\n {url: `/iam/v1/oauth`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: authConfig\n },\n options);\n }\n /**\n * @deprecated\n * @summary oauth callback.\n */\nexport const deprecatedCallbackOAuth = (\n params: DeprecatedCallbackOAuthParams,\n options?: SecondParameter<typeof openfortApiClient<unknown>>,) => {\n return openfortApiClient<unknown>(\n {url: `/iam/v1/oauth/callback`, method: 'GET',\n params\n },\n options);\n }\n /**\n * @summary oauth grant.\n */\nexport const grantOAuth = (\n provider: OAuthProvider,\n grantCallbackRequest: GrantCallbackRequest,\n options?: SecondParameter<typeof openfortApiClient<GrantOAuthResponse>>,) => {\n return openfortApiClient<GrantOAuthResponse>(\n {url: `/iam/v1/oauth/grant/${provider}`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: grantCallbackRequest\n },\n options);\n }\n /**\n * @summary oauth callback.\n */\nexport const callbackOAuth = (\n provider: OAuthProvider,\n params: CallbackOAuthParams,\n options?: SecondParameter<typeof openfortApiClient<unknown>>,) => {\n return openfortApiClient<unknown>(\n {url: `/iam/v1/oauth/callback/${provider}`, method: 'GET',\n params\n },\n options);\n }\n /**\n * The endpoint retrieves oauth configuration for specified provider for the current project environment.\n * @deprecated\n * @summary Get oauth configuration.\n */\nexport const getOAuthConfig = (\n provider: OAuthProvider,\n options?: SecondParameter<typeof openfortApiClient<AuthConfig>>,) => {\n return openfortApiClient<AuthConfig>(\n {url: `/iam/v1/oauth/${provider}`, method: 'GET'\n },\n options);\n }\n /**\n * The endpoint deletes oauth configuration for specified provider for the current project environment.\n * @deprecated\n * @summary Delete oauth configuration.\n */\nexport const deleteOAuthConfig = (\n provider: OAuthProvider,\n options?: SecondParameter<typeof openfortApiClient<void>>,) => {\n return openfortApiClient<void>(\n {url: `/iam/v1/oauth/${provider}`, method: 'DELETE'\n },\n options);\n }\n /**\n * List configured auth methods for the current project environment.\n * @summary List of auth configurations.\n */\nexport const list = (\n params?: ListParams,\n options?: SecondParameter<typeof openfortApiClient<AuthProviderListResponse>>,) => {\n return openfortApiClient<AuthProviderListResponse>(\n {url: `/iam/v1/config`, method: 'GET',\n params\n },\n options);\n }\n /**\n * The endpoint creates oauth configuration for the current project environment.\n * @summary Create oauth configuration.\n */\nexport const create = (\n authConfig: AuthConfig,\n options?: SecondParameter<typeof openfortApiClient<AuthConfig>>,) => {\n return openfortApiClient<AuthConfig>(\n {url: `/iam/v1/config`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: authConfig\n },\n options);\n }\n /**\n * Creates an authenticated player.\n\nThe player will be authenticated with the provider and an embedded account can be pre generated.\n * @summary Create an authenticated player.\n */\nexport const createAuthPlayer = (\n createAuthPlayerRequest: CreateAuthPlayerRequest,\n options?: SecondParameter<typeof openfortApiClient<AuthPlayerResponseWithRecoveryShare>>,) => {\n return openfortApiClient<AuthPlayerResponseWithRecoveryShare>(\n {url: `/iam/v1/players`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: createAuthPlayerRequest\n },\n options);\n }\n /**\n * Retrieves a list of authenticated players.\n\nPlayers have linked accounts and are authenticated with a provider.\n * @summary List authenticated players.\n */\nexport const getAuthPlayers = (\n params?: GetAuthPlayersParams,\n options?: SecondParameter<typeof openfortApiClient<AuthPlayerListResponse>>,) => {\n return openfortApiClient<AuthPlayerListResponse>(\n {url: `/iam/v1/players`, method: 'GET',\n params\n },\n options);\n }\n /**\n * Retrieves an authenticated player.\n\nPlayers have linked accounts and are authenticated with a provider.\n * @summary Authenticated player.\n */\nexport const getAuthPlayer = (\n id: string,\n options?: SecondParameter<typeof openfortApiClient<AuthPlayerResponse>>,) => {\n return openfortApiClient<AuthPlayerResponse>(\n {url: `/iam/v1/players/${id}`, method: 'GET'\n },\n options);\n }\n /**\n * Deletes a player auth object.\n\nIt will delete all linked accounts the player is authenticated with.\nIf the player has a linked embedded signer, it will be deleted as well.\n * @summary Deletes a player auth object.\n */\nexport const deleteAuthPlayer = (\n id: string,\n options?: SecondParameter<typeof openfortApiClient<AuthPlayerResponse>>,) => {\n return openfortApiClient<AuthPlayerResponse>(\n {url: `/iam/v1/players/${id}`, method: 'DELETE'\n },\n options);\n }\n /**\n * Verifies the token generated by Openfort Auth.\n * @summary Verify auth token.\n */\nexport const verifyAuthToken = (\n params: VerifyAuthTokenParams,\n options?: SecondParameter<typeof openfortApiClient<AuthSessionResponse>>,) => {\n return openfortApiClient<AuthSessionResponse>(\n {url: `/iam/v1/verify`, method: 'GET',\n params\n },\n options);\n }\n export const authorize = (\n authorizePlayerRequest: AuthorizePlayerRequest,\n options?: SecondParameter<typeof openfortApiClient<Authorize200>>,) => {\n return openfortApiClient<Authorize200>(\n {url: `/iam/v1/authorize`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: authorizePlayerRequest\n },\n options);\n }\n export type VerifyOAuthTokenResult = NonNullable<Awaited<ReturnType<typeof verifyOAuthToken>>>\nexport type ListOAuthConfigResult = NonNullable<Awaited<ReturnType<typeof listOAuthConfig>>>\nexport type CreateOAuthConfigResult = NonNullable<Awaited<ReturnType<typeof createOAuthConfig>>>\nexport type DeprecatedCallbackOAuthResult = NonNullable<Awaited<ReturnType<typeof deprecatedCallbackOAuth>>>\nexport type GrantOAuthResult = NonNullable<Awaited<ReturnType<typeof grantOAuth>>>\nexport type CallbackOAuthResult = NonNullable<Awaited<ReturnType<typeof callbackOAuth>>>\nexport type GetOAuthConfigResult = NonNullable<Awaited<ReturnType<typeof getOAuthConfig>>>\nexport type DeleteOAuthConfigResult = NonNullable<Awaited<ReturnType<typeof deleteOAuthConfig>>>\nexport type ListResult = NonNullable<Awaited<ReturnType<typeof list>>>\nexport type CreateResult = NonNullable<Awaited<ReturnType<typeof create>>>\nexport type CreateAuthPlayerResult = NonNullable<Awaited<ReturnType<typeof createAuthPlayer>>>\nexport type GetAuthPlayersResult = NonNullable<Awaited<ReturnType<typeof getAuthPlayers>>>\nexport type GetAuthPlayerResult = NonNullable<Awaited<ReturnType<typeof getAuthPlayer>>>\nexport type DeleteAuthPlayerResult = NonNullable<Awaited<ReturnType<typeof deleteAuthPlayer>>>\nexport type VerifyAuthTokenResult = NonNullable<Awaited<ReturnType<typeof verifyAuthToken>>>\nexport type AuthorizeResult = NonNullable<Awaited<ReturnType<typeof authorize>>>\n","/**\n * Generated by orval v7.18.0 🍺\n * Do not edit manually.\n * Openfort Auth\n * API Reference for Openfort Auth\n * OpenAPI spec version: 1.0.0\n */\nimport type {\n CheckVerificationOtp200,\n CheckVerificationOtpBody,\n GetGetSession200,\n GetGetSessionParams,\n GetLinkSiweListWallets200Item,\n GetListAccounts200Item,\n GetResetPasswordToken200,\n GetResetPasswordTokenParams,\n GetVerifyEmail200,\n GetVerifyEmailParams,\n PostAccountInfo200,\n PostAccountInfoBody,\n PostChangeEmail200,\n PostChangeEmailBody,\n PostChangePassword200,\n PostChangePasswordBody,\n PostEmailOtpResetPasswordBody,\n PostEmailOtpSendVerificationOtp200,\n PostEmailOtpSendVerificationOtpBody,\n PostEmailOtpVerifyEmail200,\n PostEmailOtpVerifyEmailBody,\n PostForgetPassword200,\n PostForgetPasswordBody,\n PostForgetPasswordEmailOtp200,\n PostForgetPasswordEmailOtpBody,\n PostGetAccessToken200,\n PostGetAccessTokenBody,\n PostLinkSiweNonce200,\n PostLinkSiweNonceBody,\n PostLinkSiweUnlink200,\n PostLinkSiweUnlinkBody,\n PostLinkSiweVerify200,\n PostLinkSiweVerifyBody,\n PostLinkSocial200,\n PostLinkSocialBody,\n PostPhoneNumberForgetPassword200,\n PostPhoneNumberForgetPasswordBody,\n PostPhoneNumberRequestPasswordReset200,\n PostPhoneNumberRequestPasswordResetBody,\n PostPhoneNumberResetPasswordBody,\n PostPhoneNumberSendOtp200,\n PostPhoneNumberSendOtpBody,\n PostPhoneNumberVerify200,\n PostPhoneNumberVerifyBody,\n PostRefreshToken200,\n PostRefreshTokenBody,\n PostRequestPasswordReset200,\n PostRequestPasswordResetBody,\n PostResetPasswordBody,\n PostRevokeOtherSessions200,\n PostRevokeOtherSessionsBody,\n PostRevokeSession200,\n PostRevokeSessionBody,\n PostRevokeSessions200,\n PostRevokeSessionsBody,\n PostSendVerificationEmail200,\n PostSendVerificationEmailBody,\n PostSignInAnonymous200,\n PostSignInEmail200,\n PostSignInEmailBody,\n PostSignInEmailOtp200,\n PostSignInEmailOtpBody,\n PostSignInPhoneNumber200,\n PostSignInPhoneNumberBody,\n PostSignOut200,\n PostSignOutBody,\n PostSignUpEmail200,\n PostSignUpEmailBody,\n PostSiweNonce200,\n PostSiweNonceBody,\n PostSiweVerify200,\n PostSiweVerifyBody,\n PostUnlinkAccountBody,\n ResetPasswordResponse,\n Session,\n SocialSignIn200,\n SocialSignInBody,\n UnlinkAccountResponse\n} from '../openfortAuth.schemas';\n\nimport { openfortApiClient } from '../../../openfortApiClient';\n\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n\n /**\n * Sign in with a social provider\n * @summary Sign in with a social provider.\n */\nexport const socialSignIn = (\n socialSignInBody: SocialSignInBody,\n options?: SecondParameter<typeof openfortApiClient<SocialSignIn200>>,) => {\n return openfortApiClient<SocialSignIn200>(\n {url: `/iam/v2/auth/sign-in/social`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: socialSignInBody\n },\n options);\n }\n /**\n * Get the current session\n * @summary Get the current session.\n */\nexport const getGetSession = (\n params?: GetGetSessionParams,\n options?: SecondParameter<typeof openfortApiClient<GetGetSession200>>,) => {\n return openfortApiClient<GetGetSession200>(\n {url: `/iam/v2/auth/get-session`, method: 'GET',\n params\n },\n options);\n }\n /**\n * Sign out the current user\n * @summary Sign out.\n */\nexport const postSignOut = (\n postSignOutBody: PostSignOutBody,\n options?: SecondParameter<typeof openfortApiClient<PostSignOut200>>,) => {\n return openfortApiClient<PostSignOut200>(\n {url: `/iam/v2/auth/sign-out`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postSignOutBody\n },\n options);\n }\n /**\n * Sign up a user using email and password\n * @summary Sign up with email and password.\n */\nexport const postSignUpEmail = (\n postSignUpEmailBody: PostSignUpEmailBody,\n options?: SecondParameter<typeof openfortApiClient<PostSignUpEmail200>>,) => {\n return openfortApiClient<PostSignUpEmail200>(\n {url: `/iam/v2/auth/sign-up/email`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postSignUpEmailBody\n },\n options);\n }\n /**\n * Sign in with email and password\n * @summary Sign in with email and password.\n */\nexport const postSignInEmail = (\n postSignInEmailBody: PostSignInEmailBody,\n options?: SecondParameter<typeof openfortApiClient<PostSignInEmail200>>,) => {\n return openfortApiClient<PostSignInEmail200>(\n {url: `/iam/v2/auth/sign-in/email`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postSignInEmailBody\n },\n options);\n }\n /**\n * Send a password reset email to the user\n * @summary Forget password.\n */\nexport const postForgetPassword = (\n postForgetPasswordBody: PostForgetPasswordBody,\n options?: SecondParameter<typeof openfortApiClient<PostForgetPassword200>>,) => {\n return openfortApiClient<PostForgetPassword200>(\n {url: `/iam/v2/auth/forget-password`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postForgetPasswordBody\n },\n options);\n }\n /**\n * Reset the password for a user\n * @summary Reset password.\n */\nexport const postResetPassword = (\n postResetPasswordBody: PostResetPasswordBody,\n options?: SecondParameter<typeof openfortApiClient<ResetPasswordResponse>>,) => {\n return openfortApiClient<ResetPasswordResponse>(\n {url: `/iam/v2/auth/reset-password`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postResetPasswordBody\n },\n options);\n }\n /**\n * Verify the email of the user.\nUsually this endpoint is called when user clicks 'Verify email' link from the letter.\n * @summary Verify email.\n */\nexport const getVerifyEmail = (\n params: GetVerifyEmailParams,\n options?: SecondParameter<typeof openfortApiClient<GetVerifyEmail200>>,) => {\n return openfortApiClient<GetVerifyEmail200>(\n {url: `/iam/v2/auth/verify-email`, method: 'GET',\n params\n },\n options);\n }\n /**\n * Send a verification email to the user\n * @summary Send verification email.\n */\nexport const postSendVerificationEmail = (\n postSendVerificationEmailBody: PostSendVerificationEmailBody,\n options?: SecondParameter<typeof openfortApiClient<PostSendVerificationEmail200>>,) => {\n return openfortApiClient<PostSendVerificationEmail200>(\n {url: `/iam/v2/auth/send-verification-email`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postSendVerificationEmailBody\n },\n options);\n }\n /**\n * Change user's email\n * @summary Change email.\n */\nexport const postChangeEmail = (\n postChangeEmailBody: PostChangeEmailBody,\n options?: SecondParameter<typeof openfortApiClient<PostChangeEmail200>>,) => {\n return openfortApiClient<PostChangeEmail200>(\n {url: `/iam/v2/auth/change-email`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postChangeEmailBody\n },\n options);\n }\n /**\n * Change the password of the user\n * @summary Change password.\n */\nexport const postChangePassword = (\n postChangePasswordBody: PostChangePasswordBody,\n options?: SecondParameter<typeof openfortApiClient<PostChangePassword200>>,) => {\n return openfortApiClient<PostChangePassword200>(\n {url: `/iam/v2/auth/change-password`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postChangePasswordBody\n },\n options);\n }\n /**\n * Redirects the user to the callback URL with the token\n * @summary Reset password callback.\n */\nexport const getResetPasswordToken = (\n token: string,\n params?: GetResetPasswordTokenParams,\n options?: SecondParameter<typeof openfortApiClient<GetResetPasswordToken200>>,) => {\n return openfortApiClient<GetResetPasswordToken200>(\n {url: `/iam/v2/auth/reset-password/${token}`, method: 'GET',\n params\n },\n options);\n }\n /**\n * Send a password reset email to the user\n * @summary Request password reset.\n */\nexport const postRequestPasswordReset = (\n postRequestPasswordResetBody: PostRequestPasswordResetBody,\n options?: SecondParameter<typeof openfortApiClient<PostRequestPasswordReset200>>,) => {\n return openfortApiClient<PostRequestPasswordReset200>(\n {url: `/iam/v2/auth/request-password-reset`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postRequestPasswordResetBody\n },\n options);\n }\n /**\n * List all active sessions for the user\n * @summary List sessions.\n */\nexport const getListSessions = (\n \n options?: SecondParameter<typeof openfortApiClient<Session[]>>,) => {\n return openfortApiClient<Session[]>(\n {url: `/iam/v2/auth/list-sessions`, method: 'GET'\n },\n options);\n }\n /**\n * Revoke a single session\n * @summary Revoke session.\n */\nexport const postRevokeSession = (\n postRevokeSessionBody: PostRevokeSessionBody,\n options?: SecondParameter<typeof openfortApiClient<PostRevokeSession200>>,) => {\n return openfortApiClient<PostRevokeSession200>(\n {url: `/iam/v2/auth/revoke-session`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postRevokeSessionBody\n },\n options);\n }\n /**\n * Revoke all sessions for the user\n * @summary Revoke sessions.\n */\nexport const postRevokeSessions = (\n postRevokeSessionsBody: PostRevokeSessionsBody,\n options?: SecondParameter<typeof openfortApiClient<PostRevokeSessions200>>,) => {\n return openfortApiClient<PostRevokeSessions200>(\n {url: `/iam/v2/auth/revoke-sessions`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postRevokeSessionsBody\n },\n options);\n }\n /**\n * Revoke all other sessions for the user except the current one\n * @summary Revoke other sessions.\n */\nexport const postRevokeOtherSessions = (\n postRevokeOtherSessionsBody: PostRevokeOtherSessionsBody,\n options?: SecondParameter<typeof openfortApiClient<PostRevokeOtherSessions200>>,) => {\n return openfortApiClient<PostRevokeOtherSessions200>(\n {url: `/iam/v2/auth/revoke-other-sessions`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postRevokeOtherSessionsBody\n },\n options);\n }\n /**\n * Link a social account to the user\n * @summary Link social account.\n */\nexport const postLinkSocial = (\n postLinkSocialBody: PostLinkSocialBody,\n options?: SecondParameter<typeof openfortApiClient<PostLinkSocial200>>,) => {\n return openfortApiClient<PostLinkSocial200>(\n {url: `/iam/v2/auth/link-social`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postLinkSocialBody\n },\n options);\n }\n /**\n * List all accounts linked to the user\n * @summary List lined accounts.\n */\nexport const getListAccounts = (\n \n options?: SecondParameter<typeof openfortApiClient<GetListAccounts200Item[]>>,) => {\n return openfortApiClient<GetListAccounts200Item[]>(\n {url: `/iam/v2/auth/list-accounts`, method: 'GET'\n },\n options);\n }\n /**\n * Unlink an account\n * @summary Unlink account.\n */\nexport const postUnlinkAccount = (\n postUnlinkAccountBody: PostUnlinkAccountBody,\n options?: SecondParameter<typeof openfortApiClient<UnlinkAccountResponse>>,) => {\n return openfortApiClient<UnlinkAccountResponse>(\n {url: `/iam/v2/auth/unlink-account`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postUnlinkAccountBody\n },\n options);\n }\n /**\n * Refresh the access token using a refresh token\n * @summary Refresh access token.\n */\nexport const postRefreshToken = (\n postRefreshTokenBody: PostRefreshTokenBody,\n options?: SecondParameter<typeof openfortApiClient<PostRefreshToken200>>,) => {\n return openfortApiClient<PostRefreshToken200>(\n {url: `/iam/v2/auth/refresh-token`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postRefreshTokenBody\n },\n options);\n }\n /**\n * Get a valid access token, doing a refresh if needed\n * @summary Get access token.\n */\nexport const postGetAccessToken = (\n postGetAccessTokenBody: PostGetAccessTokenBody,\n options?: SecondParameter<typeof openfortApiClient<PostGetAccessToken200>>,) => {\n return openfortApiClient<PostGetAccessToken200>(\n {url: `/iam/v2/auth/get-access-token`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postGetAccessTokenBody\n },\n options);\n }\n /**\n * Get the account info provided by the provider\n * @summary Get account info.\n */\nexport const postAccountInfo = (\n postAccountInfoBody: PostAccountInfoBody,\n options?: SecondParameter<typeof openfortApiClient<PostAccountInfo200>>,) => {\n return openfortApiClient<PostAccountInfo200>(\n {url: `/iam/v2/auth/account-info`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postAccountInfoBody\n },\n options);\n }\n /**\n * Sign in anonymously\n * @summary Anonymous sign in.\n */\nexport const postSignInAnonymous = (\n \n options?: SecondParameter<typeof openfortApiClient<PostSignInAnonymous200>>,) => {\n return openfortApiClient<PostSignInAnonymous200>(\n {url: `/iam/v2/auth/sign-in/anonymous`, method: 'POST'\n },\n options);\n }\n /**\n * Use this endpoint to sign in with phone number\n * @summary Sign in with phone.\n */\nexport const postSignInPhoneNumber = (\n postSignInPhoneNumberBody: PostSignInPhoneNumberBody,\n options?: SecondParameter<typeof openfortApiClient<PostSignInPhoneNumber200>>,) => {\n return openfortApiClient<PostSignInPhoneNumber200>(\n {url: `/iam/v2/auth/sign-in/phone-number`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postSignInPhoneNumberBody\n },\n options);\n }\n /**\n * Use this endpoint to send OTP to phone number\n * @summary Send OTP to phone number.\n */\nexport const postPhoneNumberSendOtp = (\n postPhoneNumberSendOtpBody: PostPhoneNumberSendOtpBody,\n options?: SecondParameter<typeof openfortApiClient<PostPhoneNumberSendOtp200>>,) => {\n return openfortApiClient<PostPhoneNumberSendOtp200>(\n {url: `/iam/v2/auth/phone-number/send-otp`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postPhoneNumberSendOtpBody\n },\n options);\n }\n /**\n * Use this endpoint to verify phone number\n * @summary Verify phone OTP.\n */\nexport const postPhoneNumberVerify = (\n postPhoneNumberVerifyBody: PostPhoneNumberVerifyBody,\n options?: SecondParameter<typeof openfortApiClient<PostPhoneNumberVerify200>>,) => {\n return openfortApiClient<PostPhoneNumberVerify200>(\n {url: `/iam/v2/auth/phone-number/verify`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postPhoneNumberVerifyBody\n },\n options);\n }\n /**\n * Request OTP for password reset via phone number\n * @summary Reset password reset with phone(forget password flow).\n */\nexport const postPhoneNumberForgetPassword = (\n postPhoneNumberForgetPasswordBody: PostPhoneNumberForgetPasswordBody,\n options?: SecondParameter<typeof openfortApiClient<PostPhoneNumberForgetPassword200>>,) => {\n return openfortApiClient<PostPhoneNumberForgetPassword200>(\n {url: `/iam/v2/auth/phone-number/forget-password`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postPhoneNumberForgetPasswordBody\n },\n options);\n }\n /**\n * Request OTP for password reset via phone number\n * @summary Request password reset with phone.\n */\nexport const postPhoneNumberRequestPasswordReset = (\n postPhoneNumberRequestPasswordResetBody: PostPhoneNumberRequestPasswordResetBody,\n options?: SecondParameter<typeof openfortApiClient<PostPhoneNumberRequestPasswordReset200>>,) => {\n return openfortApiClient<PostPhoneNumberRequestPasswordReset200>(\n {url: `/iam/v2/auth/phone-number/request-password-reset`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postPhoneNumberRequestPasswordResetBody\n },\n options);\n }\n /**\n * Reset password using phone number OTP\n * @summary Reset password with phone OTP.\n */\nexport const postPhoneNumberResetPassword = (\n postPhoneNumberResetPasswordBody: PostPhoneNumberResetPasswordBody,\n options?: SecondParameter<typeof openfortApiClient<ResetPasswordResponse>>,) => {\n return openfortApiClient<ResetPasswordResponse>(\n {url: `/iam/v2/auth/phone-number/reset-password`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postPhoneNumberResetPasswordBody\n },\n options);\n }\n /**\n * Send verification OTP\n * @summary Request email verification with OTP.\n */\nexport const postEmailOtpSendVerificationOtp = (\n postEmailOtpSendVerificationOtpBody: PostEmailOtpSendVerificationOtpBody,\n options?: SecondParameter<typeof openfortApiClient<PostEmailOtpSendVerificationOtp200>>,) => {\n return openfortApiClient<PostEmailOtpSendVerificationOtp200>(\n {url: `/iam/v2/auth/email-otp/send-verification-otp`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postEmailOtpSendVerificationOtpBody\n },\n options);\n }\n /**\n * Check if a verification OTP is valid\n * @summary Check email OTP.\n */\nexport const checkVerificationOtp = (\n checkVerificationOtpBody: CheckVerificationOtpBody,\n options?: SecondParameter<typeof openfortApiClient<CheckVerificationOtp200>>,) => {\n return openfortApiClient<CheckVerificationOtp200>(\n {url: `/iam/v2/auth/email-otp/check-verification-otp`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: checkVerificationOtpBody\n },\n options);\n }\n /**\n * Verify email with OTP\n * @summary Verify email with OTP.\n */\nexport const postEmailOtpVerifyEmail = (\n postEmailOtpVerifyEmailBody: PostEmailOtpVerifyEmailBody,\n options?: SecondParameter<typeof openfortApiClient<PostEmailOtpVerifyEmail200>>,) => {\n return openfortApiClient<PostEmailOtpVerifyEmail200>(\n {url: `/iam/v2/auth/email-otp/verify-email`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postEmailOtpVerifyEmailBody\n },\n options);\n }\n /**\n * Sign in with OTP\n * @summary Sign in with email OTP.\n */\nexport const postSignInEmailOtp = (\n postSignInEmailOtpBody: PostSignInEmailOtpBody,\n options?: SecondParameter<typeof openfortApiClient<PostSignInEmailOtp200>>,) => {\n return openfortApiClient<PostSignInEmailOtp200>(\n {url: `/iam/v2/auth/sign-in/email-otp`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postSignInEmailOtpBody\n },\n options);\n }\n /**\n * Send a password reset OTP to the user\n * @summary Request password reset with email OTP.\n */\nexport const postForgetPasswordEmailOtp = (\n postForgetPasswordEmailOtpBody: PostForgetPasswordEmailOtpBody,\n options?: SecondParameter<typeof openfortApiClient<PostForgetPasswordEmailOtp200>>,) => {\n return openfortApiClient<PostForgetPasswordEmailOtp200>(\n {url: `/iam/v2/auth/forget-password/email-otp`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postForgetPasswordEmailOtpBody\n },\n options);\n }\n /**\n * Reset user password with OTP\n * @summary Reset password with email OTP.\n */\nexport const postEmailOtpResetPassword = (\n postEmailOtpResetPasswordBody: PostEmailOtpResetPasswordBody,\n options?: SecondParameter<typeof openfortApiClient<ResetPasswordResponse>>,) => {\n return openfortApiClient<ResetPasswordResponse>(\n {url: `/iam/v2/auth/email-otp/reset-password`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postEmailOtpResetPasswordBody\n },\n options);\n }\n /**\n * Generate a nonce for Sign-In With Ethereum (SIWE) authentication\n * @summary Initialize SIWE login.\n */\nexport const postSiweNonce = (\n postSiweNonceBody: PostSiweNonceBody,\n options?: SecondParameter<typeof openfortApiClient<PostSiweNonce200>>,) => {\n return openfortApiClient<PostSiweNonce200>(\n {url: `/iam/v2/auth/siwe/nonce`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postSiweNonceBody\n },\n options);\n }\n /**\n * Verify a signed SIWE message and authenticate the user\n * @summary Login with SIWE.\n */\nexport const postSiweVerify = (\n postSiweVerifyBody: PostSiweVerifyBody,\n options?: SecondParameter<typeof openfortApiClient<PostSiweVerify200>>,) => {\n return openfortApiClient<PostSiweVerify200>(\n {url: `/iam/v2/auth/siwe/verify`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postSiweVerifyBody\n },\n options);\n }\n /**\n * Generates a cryptographically secure nonce for creating a SIWE message to link a wallet to the current authenticated user. Requires active session.\n * @summary Initialize SIWE link.\n */\nexport const postLinkSiweNonce = (\n postLinkSiweNonceBody: PostLinkSiweNonceBody,\n options?: SecondParameter<typeof openfortApiClient<PostLinkSiweNonce200>>,) => {\n return openfortApiClient<PostLinkSiweNonce200>(\n {url: `/iam/v2/auth/link-siwe/nonce`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postLinkSiweNonceBody\n },\n options);\n }\n /**\n * Verifies the SIWE signature and links the wallet to the currently authenticated user. Requires active session.\n * @summary Verify and link SIWE wallet.\n */\nexport const postLinkSiweVerify = (\n postLinkSiweVerifyBody: PostLinkSiweVerifyBody,\n options?: SecondParameter<typeof openfortApiClient<PostLinkSiweVerify200>>,) => {\n return openfortApiClient<PostLinkSiweVerify200>(\n {url: `/iam/v2/auth/link-siwe/verify`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postLinkSiweVerifyBody\n },\n options);\n }\n /**\n * Get all SIWE wallets linked to the authenticated user with full wallet metadata including primary status and chain information. Requires active session.\n * @summary List linked wallets.\n */\nexport const getLinkSiweListWallets = (\n \n options?: SecondParameter<typeof openfortApiClient<GetLinkSiweListWallets200Item[]>>,) => {\n return openfortApiClient<GetLinkSiweListWallets200Item[]>(\n {url: `/iam/v2/auth/link-siwe/list-wallets`, method: 'GET'\n },\n options);\n }\n /**\n * Remove a linked wallet from the authenticated user account. If the wallet being unlinked is the primary wallet, another wallet will be automatically promoted to primary. Requires active session.\n * @summary Unlink SIWE wallet.\n */\nexport const postLinkSiweUnlink = (\n postLinkSiweUnlinkBody: PostLinkSiweUnlinkBody,\n options?: SecondParameter<typeof openfortApiClient<PostLinkSiweUnlink200>>,) => {\n return openfortApiClient<PostLinkSiweUnlink200>(\n {url: `/iam/v2/auth/link-siwe/unlink`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: postLinkSiweUnlinkBody\n },\n options);\n }\n export type SocialSignInResult = NonNullable<Awaited<ReturnType<typeof socialSignIn>>>\nexport type GetGetSessionResult = NonNullable<Awaited<ReturnType<typeof getGetSession>>>\nexport type PostSignOutResult = NonNullable<Awaited<ReturnType<typeof postSignOut>>>\nexport type PostSignUpEmailResult = NonNullable<Awaited<ReturnType<typeof postSignUpEmail>>>\nexport type PostSignInEmailResult = NonNullable<Awaited<ReturnType<typeof postSignInEmail>>>\nexport type PostForgetPasswordResult = NonNullable<Awaited<ReturnType<typeof postForgetPassword>>>\nexport type PostResetPasswordResult = NonNullable<Awaited<ReturnType<typeof postResetPassword>>>\nexport type GetVerifyEmailResult = NonNullable<Awaited<ReturnType<typeof getVerifyEmail>>>\nexport type PostSendVerificationEmailResult = NonNullable<Awaited<ReturnType<typeof postSendVerificationEmail>>>\nexport type PostChangeEmailResult = NonNullable<Awaited<ReturnType<typeof postChangeEmail>>>\nexport type PostChangePasswordResult = NonNullable<Awaited<ReturnType<typeof postChangePassword>>>\nexport type GetResetPasswordTokenResult = NonNullable<Awaited<ReturnType<typeof getResetPasswordToken>>>\nexport type PostRequestPasswordResetResult = NonNullable<Awaited<ReturnType<typeof postRequestPasswordReset>>>\nexport type GetListSessionsResult = NonNullable<Awaited<ReturnType<typeof getListSessions>>>\nexport type PostRevokeSessionResult = NonNullable<Awaited<ReturnType<typeof postRevokeSession>>>\nexport type PostRevokeSessionsResult = NonNullable<Awaited<ReturnType<typeof postRevokeSessions>>>\nexport type PostRevokeOtherSessionsResult = NonNullable<Awaited<ReturnType<typeof postRevokeOtherSessions>>>\nexport type PostLinkSocialResult = NonNullable<Awaited<ReturnType<typeof postLinkSocial>>>\nexport type GetListAccountsResult = NonNullable<Awaited<ReturnType<typeof getListAccounts>>>\nexport type PostUnlinkAccountResult = NonNullable<Awaited<ReturnType<typeof postUnlinkAccount>>>\nexport type PostRefreshTokenResult = NonNullable<Awaited<ReturnType<typeof postRefreshToken>>>\nexport type PostGetAccessTokenResult = NonNullable<Awaited<ReturnType<typeof postGetAccessToken>>>\nexport type PostAccountInfoResult = NonNullable<Awaited<ReturnType<typeof postAccountInfo>>>\nexport type PostSignInAnonymousResult = NonNullable<Awaited<ReturnType<typeof postSignInAnonymous>>>\nexport type PostSignInPhoneNumberResult = NonNullable<Awaited<ReturnType<typeof postSignInPhoneNumber>>>\nexport type PostPhoneNumberSendOtpResult = NonNullable<Awaited<ReturnType<typeof postPhoneNumberSendOtp>>>\nexport type PostPhoneNumberVerifyResult = NonNullable<Awaited<ReturnType<typeof postPhoneNumberVerify>>>\nexport type PostPhoneNumberForgetPasswordResult = NonNullable<Awaited<ReturnType<typeof postPhoneNumberForgetPassword>>>\nexport type PostPhoneNumberRequestPasswordResetResult = NonNullable<Awaited<ReturnType<typeof postPhoneNumberRequestPasswordReset>>>\nexport type PostPhoneNumberResetPasswordResult = NonNullable<Awaited<ReturnType<typeof postPhoneNumberResetPassword>>>\nexport type PostEmailOtpSendVerificationOtpResult = NonNullable<Awaited<ReturnType<typeof postEmailOtpSendVerificationOtp>>>\nexport type CheckVerificationOtpResult = NonNullable<Awaited<ReturnType<typeof checkVerificationOtp>>>\nexport type PostEmailOtpVerifyEmailResult = NonNullable<Awaited<ReturnType<typeof postEmailOtpVerifyEmail>>>\nexport type PostSignInEmailOtpResult = NonNullable<Awaited<ReturnType<typeof postSignInEmailOtp>>>\nexport type PostForgetPasswordEmailOtpResult = NonNullable<Awaited<ReturnType<typeof postForgetPasswordEmailOtp>>>\nexport type PostEmailOtpResetPasswordResult = NonNullable<Awaited<ReturnType<typeof postEmailOtpResetPassword>>>\nexport type PostSiweNonceResult = NonNullable<Awaited<ReturnType<typeof postSiweNonce>>>\nexport type PostSiweVerifyResult = NonNullable<Awaited<ReturnType<typeof postSiweVerify>>>\nexport type PostLinkSiweNonceResult = NonNullable<Awaited<ReturnType<typeof postLinkSiweNonce>>>\nexport type PostLinkSiweVerifyResult = NonNullable<Awaited<ReturnType<typeof postLinkSiweVerify>>>\nexport type GetLinkSiweListWalletsResult = NonNullable<Awaited<ReturnType<typeof getLinkSiweListWallets>>>\nexport type PostLinkSiweUnlinkResult = NonNullable<Awaited<ReturnType<typeof postLinkSiweUnlink>>>\n","/**\n * Generated by orval v7.18.0 🍺\n * Do not edit manually.\n * Openfort Auth\n * API Reference for Openfort Auth\n * OpenAPI spec version: 1.0.0\n */\nexport interface User {\n id: string;\n name: string;\n email: string;\n readonly emailVerified?: boolean;\n image?: string;\n createdAt: string;\n updatedAt: string;\n isAnonymous?: boolean;\n phoneNumber?: string;\n readonly phoneNumberVerified?: boolean;\n}\n\nexport interface Session {\n id: string;\n expiresAt: string;\n token: string;\n createdAt: string;\n updatedAt: string;\n ipAddress?: string;\n userAgent?: string;\n userId: string;\n}\n\nexport interface Account {\n id?: string;\n accountId: string;\n providerId: string;\n userId: string;\n accessToken?: string;\n refreshToken?: string;\n idToken?: string;\n accessTokenExpiresAt?: string;\n refreshTokenExpiresAt?: string;\n scope?: string;\n password?: string;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface Verification {\n id?: string;\n identifier: string;\n value: string;\n expiresAt: string;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface Jwks {\n id?: string;\n publicKey: string;\n privateKey: string;\n createdAt: string;\n}\n\n/**\n * Response from OTP verification check\n */\nexport interface OtpVerificationResponse {\n /** Indicates whether the OTP verification was successful */\n success: boolean;\n}\n\n/**\n * Response from sign out operation\n */\nexport interface SignOutResponse {\n /** Indicates whether the sign out was successful */\n success: boolean;\n}\n\n/**\n * Response from unlink account operation\n */\nexport interface UnlinkAccountResponse {\n /** Indicates whether the account was successfully unlinked */\n status: boolean;\n}\n\n/**\n * Response from reset password operation\n */\nexport interface ResetPasswordResponse {\n /** Indicates whether the password was successfully reset */\n status: boolean;\n}\n\n/**\n * @nullable\n */\nexport type SocialSignInBodyIdToken = {\n /** ID token from the provider */\n token: string;\n /**\n * Nonce used to generate the token\n * @nullable\n */\n nonce?: string | null;\n /**\n * Access token from the provider\n * @nullable\n */\n accessToken?: string | null;\n /**\n * Refresh token from the provider\n * @nullable\n */\n refreshToken?: string | null;\n /**\n * Expiry date of the token\n * @nullable\n */\n expiresAt?: number | null;\n} | null;\n\nexport type SocialSignInBody = {\n /**\n * Callback URL to redirect to after the user has signed in\n * @nullable\n */\n callbackURL?: string | null;\n /** @nullable */\n newUserCallbackURL?: string | null;\n /**\n * Callback URL to redirect to if an error happens\n * @nullable\n */\n errorCallbackURL?: string | null;\n provider: string;\n /**\n * Disable automatic redirection to the provider. Useful for handling the redirection yourself\n * @nullable\n */\n disableRedirect?: boolean | null;\n /** @nullable */\n idToken?: SocialSignInBodyIdToken;\n /**\n * Array of scopes to request from the provider. This will override the default scopes passed.\n * @nullable\n */\n scopes?: string[] | null;\n /**\n * Explicitly request sign-up. Useful when disableImplicitSignUp is true for this provider\n * @nullable\n */\n requestSignUp?: boolean | null;\n /**\n * The login hint to use for the authorization code request\n * @nullable\n */\n loginHint?: string | null;\n};\n\nexport type SocialSignIn200User = {\n id: string;\n email: string;\n /** @nullable */\n name?: string | null;\n /** @nullable */\n image?: string | null;\n emailVerified: boolean;\n createdAt: string;\n updatedAt: string;\n};\n\n/**\n * Session response when idToken is provided\n */\nexport type SocialSignIn200 = {\n redirect: boolean;\n /** Session token */\n token: string;\n /** @nullable */\n url?: string | null;\n user: SocialSignIn200User;\n};\n\nexport type SocialSignIn400 = {\n message: string;\n};\n\nexport type SocialSignIn401 = {\n message: string;\n};\n\nexport type SocialSignIn403 = {\n message?: string;\n};\n\nexport type SocialSignIn404 = {\n message?: string;\n};\n\nexport type SocialSignIn429 = {\n message?: string;\n};\n\nexport type SocialSignIn500 = {\n message?: string;\n};\n\nexport type GetGetSessionParams = {\n/**\n * Disable cookie cache and fetch session from database\n */\ndisableCookieCache?: boolean;\n};\n\nexport type GetGetSession200 = {\n session: Session;\n user: User;\n};\n\nexport type GetGetSession400 = {\n message: string;\n};\n\nexport type GetGetSession401 = {\n message: string;\n};\n\nexport type GetGetSession403 = {\n message?: string;\n};\n\nexport type GetGetSession404 = {\n message?: string;\n};\n\nexport type GetGetSession429 = {\n message?: string;\n};\n\nexport type GetGetSession500 = {\n message?: string;\n};\n\nexport type PostSignOutBody = { [key: string]: unknown };\n\nexport type PostSignOut200 = {\n success?: boolean;\n};\n\nexport type PostSignOut400 = {\n message: string;\n};\n\nexport type PostSignOut401 = {\n message: string;\n};\n\nexport type PostSignOut403 = {\n message?: string;\n};\n\nexport type PostSignOut404 = {\n message?: string;\n};\n\nexport type PostSignOut429 = {\n message?: string;\n};\n\nexport type PostSignOut500 = {\n message?: string;\n};\n\nexport type PostSignUpEmailBody = {\n /** The name of the user */\n name: string;\n /** The email of the user */\n email: string;\n /** The password of the user */\n password: string;\n /** The profile image URL of the user */\n image?: string;\n /** The URL to use for email verification callback */\n callbackURL?: string;\n /** If this is false, the session will not be remembered. Default is `true`. */\n rememberMe?: boolean;\n};\n\nexport type PostSignUpEmail200 = {\n /**\n * Authentication token for the session\n * @nullable\n */\n token?: string | null;\n user: User;\n};\n\nexport type PostSignUpEmail400 = {\n message: string;\n};\n\nexport type PostSignUpEmail401 = {\n message: string;\n};\n\nexport type PostSignUpEmail403 = {\n message?: string;\n};\n\nexport type PostSignUpEmail404 = {\n message?: string;\n};\n\nexport type PostSignUpEmail422 = {\n message?: string;\n};\n\nexport type PostSignUpEmail429 = {\n message?: string;\n};\n\nexport type PostSignUpEmail500 = {\n message?: string;\n};\n\nexport type PostSignInEmailBody = {\n /** Email of the user */\n email: string;\n /** Password of the user */\n password: string;\n /**\n * Callback URL to use as a redirect for email verification\n * @nullable\n */\n callbackURL?: string | null;\n /** @nullable */\n rememberMe?: boolean | null;\n};\n\nexport type PostSignInEmail200User = {\n id: string;\n email: string;\n /** @nullable */\n name?: string | null;\n /** @nullable */\n image?: string | null;\n emailVerified: boolean;\n createdAt: string;\n updatedAt: string;\n};\n\n/**\n * Session response when idToken is provided\n */\nexport type PostSignInEmail200 = {\n redirect: boolean;\n /** Session token */\n token: string;\n /** @nullable */\n url?: string | null;\n user: PostSignInEmail200User;\n};\n\nexport type PostSignInEmail400 = {\n message: string;\n};\n\nexport type PostSignInEmail401 = {\n message: string;\n};\n\nexport type PostSignInEmail403 = {\n message?: string;\n};\n\nexport type PostSignInEmail404 = {\n message?: string;\n};\n\nexport type PostSignInEmail429 = {\n message?: string;\n};\n\nexport type PostSignInEmail500 = {\n message?: string;\n};\n\nexport type PostForgetPasswordBody = {\n /** The email address of the user to send a password reset email to */\n email: string;\n /**\n * The URL to redirect the user to reset their password. If the token isn't valid or expired, it'll be redirected with a query parameter `?error=INVALID_TOKEN`. If the token is valid, it'll be redirected with a query parameter `?token=VALID_TOKEN\n * @nullable\n */\n redirectTo?: string | null;\n};\n\nexport type PostForgetPassword200 = {\n status?: boolean;\n message?: string;\n};\n\nexport type PostForgetPassword400 = {\n message: string;\n};\n\nexport type PostForgetPassword401 = {\n message: string;\n};\n\nexport type PostForgetPassword403 = {\n message?: string;\n};\n\nexport type PostForgetPassword404 = {\n message?: string;\n};\n\nexport type PostForgetPassword429 = {\n message?: string;\n};\n\nexport type PostForgetPassword500 = {\n message?: string;\n};\n\nexport type PostResetPasswordBody = {\n /** The new password to set */\n newPassword: string;\n /**\n * The token to reset the password\n * @nullable\n */\n token?: string | null;\n};\n\nexport type PostResetPassword400 = {\n message: string;\n};\n\nexport type PostResetPassword401 = {\n message: string;\n};\n\nexport type PostResetPassword403 = {\n message?: string;\n};\n\nexport type PostResetPassword404 = {\n message?: string;\n};\n\nexport type PostResetPassword429 = {\n message?: string;\n};\n\nexport type PostResetPassword500 = {\n message?: string;\n};\n\nexport type GetVerifyEmailParams = {\n/**\n * The token to verify the email\n */\ntoken: string;\n/**\n * The URL to redirect to after email verification\n */\ncallbackURL?: string;\n};\n\nexport type GetVerifyEmail200User = {\n /** User ID */\n id: string;\n /** User email */\n email: string;\n /** User name */\n name: string;\n /** User image URL */\n image: string;\n /** Indicates if the user email is verified */\n emailVerified: boolean;\n /** User creation date */\n createdAt: string;\n /** User update date */\n updatedAt: string;\n};\n\nexport type GetVerifyEmail200 = {\n user: GetVerifyEmail200User;\n /** Indicates if the email was verified successfully */\n status: boolean;\n};\n\nexport type GetVerifyEmail400 = {\n message: string;\n};\n\nexport type GetVerifyEmail401 = {\n message: string;\n};\n\nexport type GetVerifyEmail403 = {\n message?: string;\n};\n\nexport type GetVerifyEmail404 = {\n message?: string;\n};\n\nexport type GetVerifyEmail429 = {\n message?: string;\n};\n\nexport type GetVerifyEmail500 = {\n message?: string;\n};\n\nexport type PostSendVerificationEmailBody = {\n /** The email to send the verification email to */\n email: string;\n /**\n * The URL to use for email verification callback\n * @nullable\n */\n callbackURL?: string | null;\n};\n\nexport type PostSendVerificationEmail200 = {\n /** Indicates if the email was sent successfully */\n status?: boolean;\n};\n\nexport type PostSendVerificationEmail400 = {\n /** Error message */\n message?: string;\n};\n\nexport type PostSendVerificationEmail401 = {\n message: string;\n};\n\nexport type PostSendVerificationEmail403 = {\n message?: string;\n};\n\nexport type PostSendVerificationEmail404 = {\n message?: string;\n};\n\nexport type PostSendVerificationEmail429 = {\n message?: string;\n};\n\nexport type PostSendVerificationEmail500 = {\n message?: string;\n};\n\nexport type PostChangeEmailBody = {\n /** The new email address to set must be a valid email address */\n newEmail: string;\n /**\n * The URL to redirect to after email verification\n * @nullable\n */\n callbackURL?: string | null;\n};\n\n/**\n * Status message of the email change process\n * @nullable\n */\nexport type PostChangeEmail200Message = typeof PostChangeEmail200Message[keyof typeof PostChangeEmail200Message] | null;\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const PostChangeEmail200Message = {\n Email_updated: 'Email updated',\n Verification_email_sent: 'Verification email sent',\n} as const;\n\nexport type PostChangeEmail200 = {\n /** Indicates if the request was successful */\n status: boolean;\n /**\n * Status message of the email change process\n * @nullable\n */\n message?: PostChangeEmail200Message;\n};\n\nexport type PostChangeEmail400 = {\n message: string;\n};\n\nexport type PostChangeEmail401 = {\n message: string;\n};\n\nexport type PostChangeEmail403 = {\n message?: string;\n};\n\nexport type PostChangeEmail404 = {\n message?: string;\n};\n\nexport type PostChangeEmail422 = {\n message?: string;\n};\n\nexport type PostChangeEmail429 = {\n message?: string;\n};\n\nexport type PostChangeEmail500 = {\n message?: string;\n};\n\nexport type PostChangePasswordBody = {\n /** The new password to set */\n newPassword: string;\n /** The current password is required */\n currentPassword: string;\n /**\n * Must be a boolean value\n * @nullable\n */\n revokeOtherSessions?: boolean | null;\n};\n\nexport type PostChangePassword200 = {\n /**\n * New session token if other sessions were revoked\n * @nullable\n */\n token?: string | null;\n user: User;\n};\n\nexport type PostChangePassword400 = {\n message: string;\n};\n\nexport type PostChangePassword401 = {\n message: string;\n};\n\nexport type PostChangePassword403 = {\n message?: string;\n};\n\nexport type PostChangePassword404 = {\n message?: string;\n};\n\nexport type PostChangePassword429 = {\n message?: string;\n};\n\nexport type PostChangePassword500 = {\n message?: string;\n};\n\nexport type GetResetPasswordTokenParams = {\n/**\n * The URL to redirect the user to reset their password\n */\ncallbackURL?: string;\n};\n\nexport type GetResetPasswordToken200 = {\n token?: string;\n};\n\nexport type GetResetPasswordToken400 = {\n message: string;\n};\n\nexport type GetResetPasswordToken401 = {\n message: string;\n};\n\nexport type GetResetPasswordToken403 = {\n message?: string;\n};\n\nexport type GetResetPasswordToken404 = {\n message?: string;\n};\n\nexport type GetResetPasswordToken429 = {\n message?: string;\n};\n\nexport type GetResetPasswordToken500 = {\n message?: string;\n};\n\nexport type PostRequestPasswordResetBody = {\n /** The email address of the user to send a password reset email to */\n email: string;\n /**\n * The URL to redirect the user to reset their password. If the token isn't valid or expired, it'll be redirected with a query parameter `?error=INVALID_TOKEN`. If the token is valid, it'll be redirected with a query parameter `?token=VALID_TOKEN\n * @nullable\n */\n redirectTo?: string | null;\n};\n\nexport type PostRequestPasswordReset200 = {\n status?: boolean;\n message?: string;\n};\n\nexport type PostRequestPasswordReset400 = {\n message: string;\n};\n\nexport type PostRequestPasswordReset401 = {\n message: string;\n};\n\nexport type PostRequestPasswordReset403 = {\n message?: string;\n};\n\nexport type PostRequestPasswordReset404 = {\n message?: string;\n};\n\nexport type PostRequestPasswordReset429 = {\n message?: string;\n};\n\nexport type PostRequestPasswordReset500 = {\n message?: string;\n};\n\nexport type GetListSessions400 = {\n message: string;\n};\n\nexport type GetListSessions401 = {\n message: string;\n};\n\nexport type GetListSessions403 = {\n message?: string;\n};\n\nexport type GetListSessions404 = {\n message?: string;\n};\n\nexport type GetListSessions429 = {\n message?: string;\n};\n\nexport type GetListSessions500 = {\n message?: string;\n};\n\nexport type PostRevokeSessionBody = {\n /** The token to revoke */\n token: string;\n};\n\nexport type PostRevokeSession200 = {\n /** Indicates if the session was revoked successfully */\n status: boolean;\n};\n\nexport type PostRevokeSession400 = {\n message: string;\n};\n\nexport type PostRevokeSession401 = {\n message: string;\n};\n\nexport type PostRevokeSession403 = {\n message?: string;\n};\n\nexport type PostRevokeSession404 = {\n message?: string;\n};\n\nexport type PostRevokeSession429 = {\n message?: string;\n};\n\nexport type PostRevokeSession500 = {\n message?: string;\n};\n\nexport type PostRevokeSessionsBody = { [key: string]: unknown };\n\nexport type PostRevokeSessions200 = {\n /** Indicates if all sessions were revoked successfully */\n status: boolean;\n};\n\nexport type PostRevokeSessions400 = {\n message: string;\n};\n\nexport type PostRevokeSessions401 = {\n message: string;\n};\n\nexport type PostRevokeSessions403 = {\n message?: string;\n};\n\nexport type PostRevokeSessions404 = {\n message?: string;\n};\n\nexport type PostRevokeSessions429 = {\n message?: string;\n};\n\nexport type PostRevokeSessions500 = {\n message?: string;\n};\n\nexport type PostRevokeOtherSessionsBody = { [key: string]: unknown };\n\nexport type PostRevokeOtherSessions200 = {\n /** Indicates if all other sessions were revoked successfully */\n status: boolean;\n};\n\nexport type PostRevokeOtherSessions400 = {\n message: string;\n};\n\nexport type PostRevokeOtherSessions401 = {\n message: string;\n};\n\nexport type PostRevokeOtherSessions403 = {\n message?: string;\n};\n\nexport type PostRevokeOtherSessions404 = {\n message?: string;\n};\n\nexport type PostRevokeOtherSessions429 = {\n message?: string;\n};\n\nexport type PostRevokeOtherSessions500 = {\n message?: string;\n};\n\n/**\n * @nullable\n */\nexport type PostLinkSocialBodyIdToken = {\n token: string;\n /** @nullable */\n nonce?: string | null;\n /** @nullable */\n accessToken?: string | null;\n /** @nullable */\n refreshToken?: string | null;\n /** @nullable */\n scopes?: string[] | null;\n} | null;\n\nexport type PostLinkSocialBody = {\n /**\n * The URL to redirect to after the user has signed in\n * @nullable\n */\n callbackURL?: string | null;\n provider: string;\n /** @nullable */\n idToken?: PostLinkSocialBodyIdToken;\n /** @nullable */\n requestSignUp?: boolean | null;\n /**\n * Additional scopes to request from the provider\n * @nullable\n */\n scopes?: string[] | null;\n /**\n * The URL to redirect to if there is an error during the link process\n * @nullable\n */\n errorCallbackURL?: string | null;\n /**\n * Disable automatic redirection to the provider. Useful for handling the redirection yourself\n * @nullable\n */\n disableRedirect?: boolean | null;\n};\n\nexport type PostLinkSocial200 = {\n /** The authorization URL to redirect the user to */\n url?: string;\n /** Indicates if the user should be redirected to the authorization URL */\n redirect: boolean;\n status?: boolean;\n};\n\nexport type PostLinkSocial400 = {\n message: string;\n};\n\nexport type PostLinkSocial401 = {\n message: string;\n};\n\nexport type PostLinkSocial403 = {\n message?: string;\n};\n\nexport type PostLinkSocial404 = {\n message?: string;\n};\n\nexport type PostLinkSocial429 = {\n message?: string;\n};\n\nexport type PostLinkSocial500 = {\n message?: string;\n};\n\nexport type GetListAccounts200Item = {\n provider: string;\n createdAt: number;\n updatedAt: number;\n accountId: string;\n chainType: string;\n chainId: string;\n connectorType: string;\n walletClientType: string;\n};\n\nexport type GetListAccounts400 = {\n message: string;\n};\n\nexport type GetListAccounts401 = {\n message: string;\n};\n\nexport type GetListAccounts403 = {\n message?: string;\n};\n\nexport type GetListAccounts404 = {\n message?: string;\n};\n\nexport type GetListAccounts429 = {\n message?: string;\n};\n\nexport type GetListAccounts500 = {\n message?: string;\n};\n\nexport type PostUnlinkAccountBody = {\n providerId: string;\n /** @nullable */\n accountId?: string | null;\n};\n\nexport type PostUnlinkAccount400 = {\n message: string;\n};\n\nexport type PostUnlinkAccount401 = {\n message: string;\n};\n\nexport type PostUnlinkAccount403 = {\n message?: string;\n};\n\nexport type PostUnlinkAccount404 = {\n message?: string;\n};\n\nexport type PostUnlinkAccount429 = {\n message?: string;\n};\n\nexport type PostUnlinkAccount500 = {\n message?: string;\n};\n\nexport type PostRefreshTokenBody = {\n /** The provider ID for the OAuth provider */\n providerId: string;\n /**\n * The account ID associated with the refresh token\n * @nullable\n */\n accountId?: string | null;\n /**\n * The user ID associated with the account\n * @nullable\n */\n userId?: string | null;\n};\n\nexport type PostRefreshToken200 = {\n tokenType?: string;\n idToken?: string;\n accessToken?: string;\n refreshToken?: string;\n accessTokenExpiresAt?: string;\n refreshTokenExpiresAt?: string;\n};\n\nexport type PostRefreshToken401 = {\n message: string;\n};\n\nexport type PostRefreshToken403 = {\n message?: string;\n};\n\nexport type PostRefreshToken404 = {\n message?: string;\n};\n\nexport type PostRefreshToken429 = {\n message?: string;\n};\n\nexport type PostRefreshToken500 = {\n message?: string;\n};\n\nexport type PostGetAccessTokenBody = {\n /** The provider ID for the OAuth provider */\n providerId: string;\n /**\n * The account ID associated with the refresh token\n * @nullable\n */\n accountId?: string | null;\n /**\n * The user ID associated with the account\n * @nullable\n */\n userId?: string | null;\n};\n\nexport type PostGetAccessToken200 = {\n tokenType?: string;\n idToken?: string;\n accessToken?: string;\n refreshToken?: string;\n accessTokenExpiresAt?: string;\n refreshTokenExpiresAt?: string;\n};\n\nexport type PostGetAccessToken401 = {\n message: string;\n};\n\nexport type PostGetAccessToken403 = {\n message?: string;\n};\n\nexport type PostGetAccessToken404 = {\n message?: string;\n};\n\nexport type PostGetAccessToken429 = {\n message?: string;\n};\n\nexport type PostGetAccessToken500 = {\n message?: string;\n};\n\nexport type PostAccountInfoBody = {\n /** The provider given account id for which to get the account info */\n accountId: string;\n};\n\nexport type PostAccountInfo200User = {\n id: string;\n name?: string;\n email?: string;\n image?: string;\n emailVerified: boolean;\n};\n\nexport type PostAccountInfo200Data = { [key: string]: unknown };\n\nexport type PostAccountInfo200 = {\n user: PostAccountInfo200User;\n data: PostAccountInfo200Data;\n};\n\nexport type PostAccountInfo400 = {\n message: string;\n};\n\nexport type PostAccountInfo401 = {\n message: string;\n};\n\nexport type PostAccountInfo403 = {\n message?: string;\n};\n\nexport type PostAccountInfo404 = {\n message?: string;\n};\n\nexport type PostAccountInfo429 = {\n message?: string;\n};\n\nexport type PostAccountInfo500 = {\n message?: string;\n};\n\nexport type PostSignInAnonymous200 = {\n /** Session token */\n token: string;\n user: User;\n};\n\nexport type PostSignInAnonymous400 = {\n message: string;\n};\n\nexport type PostSignInAnonymous401 = {\n message: string;\n};\n\nexport type PostSignInAnonymous403 = {\n message?: string;\n};\n\nexport type PostSignInAnonymous404 = {\n message?: string;\n};\n\nexport type PostSignInAnonymous429 = {\n message?: string;\n};\n\nexport type PostSignInAnonymous500 = {\n message?: string;\n};\n\nexport type PostSignInPhoneNumberBody = {\n /** Phone number to sign in. Eg: \"+1234567890\" */\n phoneNumber: string;\n /** Password to use for sign in. */\n password: string;\n /**\n * Remember the session. Eg: true\n * @nullable\n */\n rememberMe?: boolean | null;\n};\n\nexport type PostSignInPhoneNumber200 = {\n /** Session token */\n token: string;\n user: User;\n};\n\nexport type PostSignInPhoneNumber401 = {\n message: string;\n};\n\nexport type PostSignInPhoneNumber403 = {\n message?: string;\n};\n\nexport type PostSignInPhoneNumber404 = {\n message?: string;\n};\n\nexport type PostSignInPhoneNumber429 = {\n message?: string;\n};\n\nexport type PostSignInPhoneNumber500 = {\n message?: string;\n};\n\nexport type PostPhoneNumberSendOtpBody = {\n /** Phone number to send OTP. Eg: \"+1234567890\" */\n phoneNumber: string;\n};\n\nexport type PostPhoneNumberSendOtp200 = {\n message?: string;\n};\n\nexport type PostPhoneNumberSendOtp400 = {\n message: string;\n};\n\nexport type PostPhoneNumberSendOtp401 = {\n message: string;\n};\n\nexport type PostPhoneNumberSendOtp403 = {\n message?: string;\n};\n\nexport type PostPhoneNumberSendOtp404 = {\n message?: string;\n};\n\nexport type PostPhoneNumberSendOtp429 = {\n message?: string;\n};\n\nexport type PostPhoneNumberSendOtp500 = {\n message?: string;\n};\n\nexport type PostPhoneNumberVerifyBody = {\n /** Phone number to verify. Eg: \"+1234567890\" */\n phoneNumber: string;\n /** OTP code. Eg: \"123456\" */\n code: string;\n /**\n * Disable session creation after verification. Eg: false\n * @nullable\n */\n disableSession?: boolean | null;\n /**\n * Check if there is a session and update the phone number. Eg: true\n * @nullable\n */\n updatePhoneNumber?: boolean | null;\n};\n\n/**\n * User object with phone number details, null if no user is created or found\n * @nullable\n */\nexport type PostPhoneNumberVerify200User = {\n /** Unique identifier of the user */\n id: string;\n /**\n * User's email address\n * @nullable\n */\n email?: string | null;\n /**\n * Whether the email is verified\n * @nullable\n */\n emailVerified?: boolean | null;\n /**\n * User's name\n * @nullable\n */\n name?: string | null;\n /**\n * User's profile image URL\n * @nullable\n */\n image?: string | null;\n /** User's phone number */\n phoneNumber: string;\n /** Whether the phone number is verified */\n phoneNumberVerified: boolean;\n /** Timestamp when the user was created */\n createdAt: string;\n /** Timestamp when the user was last updated */\n updatedAt: string;\n} | null;\n\nexport type PostPhoneNumberVerify200 = {\n /** Indicates if the verification was successful */\n status: boolean;\n /**\n * Session token if session is created, null if disableSession is true or no session is created\n * @nullable\n */\n token?: string | null;\n /**\n * User object with phone number details, null if no user is created or found\n * @nullable\n */\n user?: PostPhoneNumberVerify200User;\n};\n\nexport type PostPhoneNumberVerify401 = {\n message: string;\n};\n\nexport type PostPhoneNumberVerify403 = {\n message?: string;\n};\n\nexport type PostPhoneNumberVerify404 = {\n message?: string;\n};\n\nexport type PostPhoneNumberVerify429 = {\n message?: string;\n};\n\nexport type PostPhoneNumberVerify500 = {\n message?: string;\n};\n\nexport type PostPhoneNumberForgetPasswordBody = {\n /** The phone number which is associated with the user. Eg: \"+1234567890\" */\n phoneNumber: string;\n};\n\nexport type PostPhoneNumberForgetPassword200 = {\n /** Indicates if the OTP was sent successfully */\n status: boolean;\n};\n\nexport type PostPhoneNumberForgetPassword400 = {\n message: string;\n};\n\nexport type PostPhoneNumberForgetPassword401 = {\n message: string;\n};\n\nexport type PostPhoneNumberForgetPassword403 = {\n message?: string;\n};\n\nexport type PostPhoneNumberForgetPassword404 = {\n message?: string;\n};\n\nexport type PostPhoneNumberForgetPassword429 = {\n message?: string;\n};\n\nexport type PostPhoneNumberForgetPassword500 = {\n message?: string;\n};\n\nexport type PostPhoneNumberRequestPasswordResetBody = {\n phoneNumber: string;\n};\n\nexport type PostPhoneNumberRequestPasswordReset200 = {\n /** Indicates if the OTP was sent successfully */\n status: boolean;\n};\n\nexport type PostPhoneNumberRequestPasswordReset400 = {\n message: string;\n};\n\nexport type PostPhoneNumberRequestPasswordReset401 = {\n message: string;\n};\n\nexport type PostPhoneNumberRequestPasswordReset403 = {\n message?: string;\n};\n\nexport type PostPhoneNumberRequestPasswordReset404 = {\n message?: string;\n};\n\nexport type PostPhoneNumberRequestPasswordReset429 = {\n message?: string;\n};\n\nexport type PostPhoneNumberRequestPasswordReset500 = {\n message?: string;\n};\n\nexport type PostPhoneNumberResetPasswordBody = {\n /** The one time password to reset the password. Eg: \"123456\" */\n otp: string;\n /** The phone number to the account which intends to reset the password for. Eg: \"+1234567890\" */\n phoneNumber: string;\n /** The new password. Eg: \"new-and-secure-password\" */\n newPassword: string;\n};\n\nexport type PostPhoneNumberResetPassword400 = {\n message: string;\n};\n\nexport type PostPhoneNumberResetPassword401 = {\n message: string;\n};\n\nexport type PostPhoneNumberResetPassword403 = {\n message?: string;\n};\n\nexport type PostPhoneNumberResetPassword404 = {\n message?: string;\n};\n\nexport type PostPhoneNumberResetPassword429 = {\n message?: string;\n};\n\nexport type PostPhoneNumberResetPassword500 = {\n message?: string;\n};\n\nexport type PostEmailOtpSendVerificationOtpBody = {\n /** Email address to send the OTP */\n email: string;\n /** Type of the OTP */\n type: string;\n};\n\nexport type PostEmailOtpSendVerificationOtp200 = {\n success?: boolean;\n};\n\nexport type PostEmailOtpSendVerificationOtp400 = {\n message: string;\n};\n\nexport type PostEmailOtpSendVerificationOtp401 = {\n message: string;\n};\n\nexport type PostEmailOtpSendVerificationOtp403 = {\n message?: string;\n};\n\nexport type PostEmailOtpSendVerificationOtp404 = {\n message?: string;\n};\n\nexport type PostEmailOtpSendVerificationOtp429 = {\n message?: string;\n};\n\nexport type PostEmailOtpSendVerificationOtp500 = {\n message?: string;\n};\n\n/**\n * Type of the OTP\n */\nexport type CheckVerificationOtpBodyType = typeof CheckVerificationOtpBodyType[keyof typeof CheckVerificationOtpBodyType];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const CheckVerificationOtpBodyType = {\n 'email-verification': 'email-verification',\n 'sign-in': 'sign-in',\n 'forget-password': 'forget-password',\n} as const;\n\nexport type CheckVerificationOtpBody = {\n /** Email address the OTP was sent to */\n email: string;\n /** Type of the OTP */\n type: CheckVerificationOtpBodyType;\n /** OTP to verify */\n otp: string;\n};\n\nexport type CheckVerificationOtp200 = {\n success?: boolean;\n};\n\nexport type CheckVerificationOtp400 = {\n message: string;\n};\n\nexport type CheckVerificationOtp401 = {\n message: string;\n};\n\nexport type CheckVerificationOtp403 = {\n message?: string;\n};\n\nexport type CheckVerificationOtp404 = {\n message?: string;\n};\n\nexport type CheckVerificationOtp429 = {\n message?: string;\n};\n\nexport type CheckVerificationOtp500 = {\n message?: string;\n};\n\nexport type PostEmailOtpVerifyEmailBody = {\n /** Email address to verify */\n email: string;\n /** OTP to verify */\n otp: string;\n};\n\nexport type PostEmailOtpVerifyEmail200 = {\n /** Indicates if the verification was successful */\n status: boolean;\n /**\n * Session token if autoSignInAfterVerification is enabled, otherwise null\n * @nullable\n */\n token: string | null;\n user: User;\n};\n\nexport type PostEmailOtpVerifyEmail400 = {\n message: string;\n};\n\nexport type PostEmailOtpVerifyEmail401 = {\n message: string;\n};\n\nexport type PostEmailOtpVerifyEmail403 = {\n message?: string;\n};\n\nexport type PostEmailOtpVerifyEmail404 = {\n message?: string;\n};\n\nexport type PostEmailOtpVerifyEmail429 = {\n message?: string;\n};\n\nexport type PostEmailOtpVerifyEmail500 = {\n message?: string;\n};\n\nexport type PostSignInEmailOtpBody = {\n /** Email address to sign in */\n email: string;\n /** OTP sent to the email */\n otp: string;\n};\n\nexport type PostSignInEmailOtp200 = {\n /** Session token for the authenticated session */\n token: string;\n user: User;\n};\n\nexport type PostSignInEmailOtp400 = {\n message: string;\n};\n\nexport type PostSignInEmailOtp401 = {\n message: string;\n};\n\nexport type PostSignInEmailOtp403 = {\n message?: string;\n};\n\nexport type PostSignInEmailOtp404 = {\n message?: string;\n};\n\nexport type PostSignInEmailOtp429 = {\n message?: string;\n};\n\nexport type PostSignInEmailOtp500 = {\n message?: string;\n};\n\nexport type PostForgetPasswordEmailOtpBody = {\n /** Email address to send the OTP */\n email: string;\n};\n\nexport type PostForgetPasswordEmailOtp200 = {\n /** Indicates if the OTP was sent successfully */\n success?: boolean;\n};\n\nexport type PostForgetPasswordEmailOtp400 = {\n message: string;\n};\n\nexport type PostForgetPasswordEmailOtp401 = {\n message: string;\n};\n\nexport type PostForgetPasswordEmailOtp403 = {\n message?: string;\n};\n\nexport type PostForgetPasswordEmailOtp404 = {\n message?: string;\n};\n\nexport type PostForgetPasswordEmailOtp429 = {\n message?: string;\n};\n\nexport type PostForgetPasswordEmailOtp500 = {\n message?: string;\n};\n\nexport type PostEmailOtpResetPasswordBody = {\n /** Email address to reset the password */\n email: string;\n /** OTP sent to the email */\n otp: string;\n /** New password */\n password: string;\n};\n\nexport type PostEmailOtpResetPassword400 = {\n message: string;\n};\n\nexport type PostEmailOtpResetPassword401 = {\n message: string;\n};\n\nexport type PostEmailOtpResetPassword403 = {\n message?: string;\n};\n\nexport type PostEmailOtpResetPassword404 = {\n message?: string;\n};\n\nexport type PostEmailOtpResetPassword429 = {\n message?: string;\n};\n\nexport type PostEmailOtpResetPassword500 = {\n message?: string;\n};\n\nexport type PostSiweNonceBody = {\n /**\n * Ethereum wallet address (must be 42 characters starting with 0x)\n * @minLength 42\n * @maxLength 42\n * @pattern ^0[xX][a-fA-F0-9]{40}$\n */\n walletAddress: string;\n /**\n * Blockchain network chain ID (default: 1 for Ethereum mainnet)\n * @minimum 1\n * @maximum 2147483647\n */\n chainId?: number;\n};\n\nexport type PostSiweNonce200 = {\n /** Cryptographically secure random nonce to be used in SIWE message */\n nonce: string;\n};\n\nexport type PostSiweNonce400 = {\n message: string;\n};\n\nexport type PostSiweNonce401 = {\n message: string;\n};\n\nexport type PostSiweNonce500 = {\n message?: string;\n};\n\nexport type PostSiweVerifyBody = {\n /**\n * The SIWE message string that was signed\n * @minLength 1\n */\n message: string;\n /**\n * The signature from the user's wallet\n * @minLength 1\n */\n signature: string;\n /**\n * Ethereum wallet address (must be 42 characters starting with 0x)\n * @minLength 42\n * @maxLength 42\n * @pattern ^0[xX][a-fA-F0-9]{40}$\n */\n walletAddress: string;\n /**\n * Blockchain network chain ID (must match the Chain ID in SIWE message, default: 1)\n * @minimum 1\n * @maximum 2147483647\n */\n chainId?: number;\n /** Type of wallet client used (e.g., 'Phantom', 'MetaMask') */\n walletClientType?: string;\n /** Type of connector used (e.g., 'injected', 'walletConnect') */\n connectorType?: string;\n};\n\nexport type PostSiweVerify200User = {\n /** User ID */\n id: string;\n /** Ethereum wallet address */\n walletAddress: string;\n /** Chain ID used for authentication */\n chainId: number;\n};\n\nexport type PostSiweVerify200 = {\n /** Session token */\n token: string;\n /** Always true on successful authentication */\n success: boolean;\n user: PostSiweVerify200User;\n};\n\nexport type PostSiweVerify400 = {\n message: string;\n};\n\nexport type PostSiweVerify401 = {\n message: string;\n /** Error code (e.g., UNAUTHORIZED_INVALID_OR_EXPIRED_NONCE) */\n code?: string;\n};\n\nexport type PostSiweVerify500 = {\n message?: string;\n};\n\nexport type PostLinkSiweNonceBody = {\n /**\n * Ethereum wallet address (must be 42 characters starting with 0x)\n * @minLength 42\n * @maxLength 42\n * @pattern ^0[xX][a-fA-F0-9]{40}$\n */\n walletAddress: string;\n /**\n * Blockchain network chain ID (default: 1 for Ethereum mainnet)\n * @minimum 1\n * @maximum 2147483647\n */\n chainId?: number;\n};\n\nexport type PostLinkSiweNonce200 = {\n /** Cryptographically secure nonce to use in SIWE message */\n nonce: string;\n};\n\nexport type PostLinkSiweNonce400 = {\n message: string;\n};\n\nexport type PostLinkSiweNonce401 = {\n message: string;\n};\n\nexport type PostLinkSiweNonce500 = {\n message?: string;\n};\n\nexport type PostLinkSiweVerifyBody = {\n /**\n * The SIWE message string that was signed\n * @minLength 1\n */\n message: string;\n /**\n * The signature from the user's wallet\n * @minLength 1\n */\n signature: string;\n /**\n * Ethereum wallet address (must be 42 characters starting with 0x)\n * @minLength 42\n * @maxLength 42\n * @pattern ^0[xX][a-fA-F0-9]{40}$\n */\n walletAddress: string;\n /**\n * Blockchain network chain ID (must match the Chain ID in SIWE message, default: 1)\n * @minimum 1\n * @maximum 2147483647\n */\n chainId?: number;\n /** Type of wallet client used (e.g., 'Phantom', 'MetaMask') */\n walletClientType?: string;\n /** Type of connector used (e.g., 'injected', 'walletConnect') */\n connectorType?: string;\n};\n\nexport type PostLinkSiweVerify200 = {\n /** Whether the wallet was successfully linked */\n success: boolean;\n /** The checksummed Ethereum address that was linked */\n walletAddress: string;\n /** The blockchain network chain ID */\n chainId: number;\n /** Whether this is the user's primary wallet (first wallet linked) */\n isPrimary: boolean;\n /** Type of connector used (e.g., 'injected', 'walletConnect') */\n connectorType?: string;\n /** Type of wallet client used (e.g., 'Phantom', 'MetaMask') */\n walletClientType?: string;\n /** ENS name associated with the wallet (if available) */\n ensName?: string;\n /** ENS avatar URL (if available) */\n ensAvatar?: string;\n /** Optional informational message */\n message?: string;\n};\n\n/**\n * Error code indicating the type of error\n */\nexport type PostLinkSiweVerify400Code = typeof PostLinkSiweVerify400Code[keyof typeof PostLinkSiweVerify400Code];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const PostLinkSiweVerify400Code = {\n WALLET_ALREADY_LINKED: 'WALLET_ALREADY_LINKED',\n BAD_REQUEST: 'BAD_REQUEST',\n} as const;\n\nexport type PostLinkSiweVerify400 = {\n message: string;\n /** Error code indicating the type of error */\n code?: PostLinkSiweVerify400Code;\n};\n\n/**\n * Error code indicating the authentication failure reason\n */\nexport type PostLinkSiweVerify401Code = typeof PostLinkSiweVerify401Code[keyof typeof PostLinkSiweVerify401Code];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const PostLinkSiweVerify401Code = {\n UNAUTHORIZED: 'UNAUTHORIZED',\n INVALID_OR_EXPIRED_NONCE: 'INVALID_OR_EXPIRED_NONCE',\n INVALID_SIGNATURE: 'INVALID_SIGNATURE',\n} as const;\n\nexport type PostLinkSiweVerify401 = {\n message: string;\n /** Error code indicating the authentication failure reason */\n code?: PostLinkSiweVerify401Code;\n};\n\nexport type PostLinkSiweVerify500 = {\n message?: string;\n};\n\nexport type GetLinkSiweListWallets200Item = {\n /** Unique identifier for this wallet record */\n id: string;\n /** User ID this wallet is linked to */\n userId: string;\n /**\n * Checksummed Ethereum wallet address\n * @pattern ^0[xX][a-fA-F0-9]{40}$\n */\n address: string;\n /** Blockchain network chain ID */\n chainId: number;\n /** Whether this is the user's primary wallet */\n isPrimary: boolean;\n /** Timestamp when the wallet was linked */\n createdAt: string;\n};\n\nexport type GetLinkSiweListWallets401 = {\n message?: string;\n};\n\nexport type GetLinkSiweListWallets500 = {\n message?: string;\n};\n\nexport type PostLinkSiweUnlinkBody = {\n /**\n * Ethereum wallet address to unlink (must be 42 characters starting with 0x)\n * @minLength 42\n * @maxLength 42\n * @pattern ^0[xX][a-fA-F0-9]{40}$\n */\n walletAddress: string;\n /**\n * Blockchain network chain ID (default: 1 for Ethereum mainnet)\n * @minimum 1\n * @maximum 2147483647\n */\n chainId?: number;\n};\n\nexport type PostLinkSiweUnlink200 = {\n /** Indicates successful wallet unlinking */\n success: boolean;\n};\n\n/**\n * Error code indicating the type of error\n */\nexport type PostLinkSiweUnlink400Code = typeof PostLinkSiweUnlink400Code[keyof typeof PostLinkSiweUnlink400Code];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const PostLinkSiweUnlink400Code = {\n BAD_REQUEST: 'BAD_REQUEST',\n CANNOT_UNLINK_LAST_ACCOUNT: 'CANNOT_UNLINK_LAST_ACCOUNT',\n WALLET_NOT_FOUND: 'WALLET_NOT_FOUND',\n} as const;\n\nexport type PostLinkSiweUnlink400 = {\n message: string;\n /** Error code indicating the type of error */\n code?: PostLinkSiweUnlink400Code;\n};\n\nexport type PostLinkSiweUnlink401 = {\n message?: string;\n};\n\nexport type PostLinkSiweUnlink500 = {\n message?: string;\n};\n\n","/**\n * Generated by orval v7.18.0 🍺\n * Do not edit manually.\n * Openfort API\n * Complete Openfort API references and guides can be found at: https://www.openfort.io/docs\n * OpenAPI spec version: 1.0.0\n */\nimport type {\n AuthPlayerResponse,\n AuthResponse,\n JwtKeyResponse,\n LinkEmail200,\n LoginEmailPassword200,\n LoginOIDCRequest,\n LoginRequest,\n LoginWithIdTokenRequest,\n LogoutRequest,\n OAuthInitRequest,\n OAuthResponse,\n PoolOAuthParams,\n RefreshTokenRequest,\n RequestResetPasswordRequest,\n RequestVerifyEmailRequest,\n ResetPasswordRequest,\n SIWEAuthenticateRequest,\n SIWEInitResponse,\n SIWERequest,\n SignupEmailPassword201,\n SignupRequest,\n ThirdPartyLinkRequest,\n ThirdPartyOAuthRequest,\n UnlinkEmailRequest,\n UnlinkOAuthRequest,\n VerifyEmailRequest\n} from '../openfortAPI.schemas';\n\nimport { openfortApiClient } from '../../openfortApiClient';\n\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n\n /**\n * Get or create a new session for the player based on the refresh token.\n * @summary Refresh or create auth session.\n */\nexport const refresh = (\n refreshTokenRequest: RefreshTokenRequest,\n options?: SecondParameter<typeof openfortApiClient<AuthResponse>>,) => {\n return openfortApiClient<AuthResponse>(\n {url: `/iam/v1/sessions`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: refreshTokenRequest\n },\n options);\n }\n /**\n * When using Openfort Auth, the endpoint logs out the player.\n * @summary Log out a player.\n */\nexport const logout = (\n logoutRequest: LogoutRequest,\n options?: SecondParameter<typeof openfortApiClient<void>>,) => {\n return openfortApiClient<void>(\n {url: `/iam/v1/sessions/logout`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: logoutRequest\n },\n options);\n }\n /**\n * Create a challenge to link external wallet to the player.\n * @summary Initialize SIWE.\n */\nexport const initSIWE = (\n sIWERequest: SIWERequest,\n options?: SecondParameter<typeof openfortApiClient<SIWEInitResponse>>,) => {\n return openfortApiClient<SIWEInitResponse>(\n {url: `/iam/v1/siwe/init`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: sIWERequest\n },\n options);\n }\n /**\n * @summary Authenticate player with SIWE\n */\nexport const authenticateSIWE = (\n sIWEAuthenticateRequest: SIWEAuthenticateRequest,\n options?: SecondParameter<typeof openfortApiClient<AuthResponse | void>>,) => {\n return openfortApiClient<AuthResponse | void>(\n {url: `/iam/v1/siwe/authenticate`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: sIWEAuthenticateRequest\n },\n options);\n }\n /**\n * @summary Unlink external wallet.\n */\nexport const unlinkSIWE = (\n sIWERequest: SIWERequest,\n options?: SecondParameter<typeof openfortApiClient<AuthPlayerResponse | void>>,) => {\n return openfortApiClient<AuthPlayerResponse | void>(\n {url: `/iam/v1/siwe/unlink`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: sIWERequest\n },\n options);\n }\n /**\n * @summary Link external wallet.\n */\nexport const linkSIWE = (\n sIWEAuthenticateRequest: SIWEAuthenticateRequest,\n options?: SecondParameter<typeof openfortApiClient<AuthPlayerResponse | void>>,) => {\n return openfortApiClient<AuthPlayerResponse | void>(\n {url: `/iam/v1/siwe/link`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: sIWEAuthenticateRequest\n },\n options);\n }\n /**\n * Create and authenticate a player based on email and password.\n * @summary Email and password signup.\n */\nexport const signupEmailPassword = (\n signupRequest: SignupRequest,\n options?: SecondParameter<typeof openfortApiClient<SignupEmailPassword201>>,) => {\n return openfortApiClient<SignupEmailPassword201>(\n {url: `/iam/v1/password/signup`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: signupRequest\n },\n options);\n }\n /**\n * Authenticate a player based on email and password.\n * @summary Email and password login.\n */\nexport const loginEmailPassword = (\n loginRequest: LoginRequest,\n options?: SecondParameter<typeof openfortApiClient<LoginEmailPassword200>>,) => {\n return openfortApiClient<LoginEmailPassword200>(\n {url: `/iam/v1/password/login`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: loginRequest\n },\n options);\n }\n /**\n * Start the Email Verification process for a player.\n * @summary Request an Email Verification.\n */\nexport const requestEmailVerification = (\n requestVerifyEmailRequest: RequestVerifyEmailRequest,\n options?: SecondParameter<typeof openfortApiClient<void>>,) => {\n return openfortApiClient<void>(\n {url: `/iam/v1/password/request_email_verification`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: requestVerifyEmailRequest\n },\n options);\n }\n /**\n * Verify a player's email address.\n * @summary Verify an email.\n */\nexport const verifyEmail = (\n verifyEmailRequest: VerifyEmailRequest,\n options?: SecondParameter<typeof openfortApiClient<void>>,) => {\n return openfortApiClient<void>(\n {url: `/iam/v1/password/verify_email`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: verifyEmailRequest\n },\n options);\n }\n /**\n * Start the Reset process for a player's password.\n * @summary Request a Reset password.\n */\nexport const requestResetPassword = (\n requestResetPasswordRequest: RequestResetPasswordRequest,\n options?: SecondParameter<typeof openfortApiClient<void>>,) => {\n return openfortApiClient<void>(\n {url: `/iam/v1/password/request_reset`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: requestResetPasswordRequest\n },\n options);\n }\n /**\n * Reset a player's password.\n * @summary Reset a password.\n */\nexport const resetPassword = (\n resetPasswordRequest: ResetPasswordRequest,\n options?: SecondParameter<typeof openfortApiClient<void>>,) => {\n return openfortApiClient<void>(\n {url: `/iam/v1/password/reset`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: resetPasswordRequest\n },\n options);\n }\n export const linkEmail = (\n loginRequest: LoginRequest,\n options?: SecondParameter<typeof openfortApiClient<LinkEmail200>>,) => {\n return openfortApiClient<LinkEmail200>(\n {url: `/iam/v1/password/link`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: loginRequest\n },\n options);\n }\n export const unlinkEmail = (\n unlinkEmailRequest: UnlinkEmailRequest,\n options?: SecondParameter<typeof openfortApiClient<AuthPlayerResponse>>,) => {\n return openfortApiClient<AuthPlayerResponse>(\n {url: `/iam/v1/password/unlink`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: unlinkEmailRequest\n },\n options);\n }\n /**\n * Authenticate a player from an identity token.\n * @summary OIDC Identity token.\n */\nexport const loginOIDC = (\n loginOIDCRequest: LoginOIDCRequest,\n options?: SecondParameter<typeof openfortApiClient<AuthResponse>>,) => {\n return openfortApiClient<AuthResponse>(\n {url: `/iam/v1/oidc/login`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: loginOIDCRequest\n },\n options);\n }\n /**\n * @summary Initialize OAuth.\n */\nexport const initOAuth = (\n oAuthInitRequest: OAuthInitRequest,\n options?: SecondParameter<typeof openfortApiClient<OAuthResponse>>,) => {\n return openfortApiClient<OAuthResponse>(\n {url: `/iam/v1/oauth/init`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: oAuthInitRequest\n },\n options);\n }\n /**\n * @summary Initialize Link OAuth.\n */\nexport const linkOAuth = (\n oAuthInitRequest: OAuthInitRequest,\n options?: SecondParameter<typeof openfortApiClient<OAuthResponse>>,) => {\n return openfortApiClient<OAuthResponse>(\n {url: `/iam/v1/oauth/init_link`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: oAuthInitRequest\n },\n options);\n }\n /**\n * @summary Initialize Link OAuth.\n */\nexport const linkThirdParty = (\n thirdPartyLinkRequest: ThirdPartyLinkRequest,\n options?: SecondParameter<typeof openfortApiClient<AuthPlayerResponse>>,) => {\n return openfortApiClient<AuthPlayerResponse>(\n {url: `/iam/v1/oauth/link`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: thirdPartyLinkRequest\n },\n options);\n }\n /**\n * @summary Initialize OAuth.\n */\nexport const poolOAuth = (\n params: PoolOAuthParams,\n options?: SecondParameter<typeof openfortApiClient<AuthResponse>>,) => {\n return openfortApiClient<AuthResponse>(\n {url: `/iam/v1/oauth/pool`, method: 'POST',\n params\n },\n options);\n }\n /**\n * @summary Authenticate player with oauth token.\n */\nexport const loginWithIdToken = (\n loginWithIdTokenRequest: LoginWithIdTokenRequest,\n options?: SecondParameter<typeof openfortApiClient<AuthResponse>>,) => {\n return openfortApiClient<AuthResponse>(\n {url: `/iam/v1/oauth/login_id_token`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: loginWithIdTokenRequest\n },\n options);\n }\n /**\n * @summary Verify oauth token of a third party auth provider.\n */\nexport const thirdParty = (\n thirdPartyOAuthRequest: ThirdPartyOAuthRequest,\n options?: SecondParameter<typeof openfortApiClient<AuthPlayerResponse>>,) => {\n return openfortApiClient<AuthPlayerResponse>(\n {url: `/iam/v1/oauth/third_party`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: thirdPartyOAuthRequest\n },\n options);\n }\n /**\n * @summary Unlink OAuth account\n */\nexport const unlinkOAuth = (\n unlinkOAuthRequest: UnlinkOAuthRequest,\n options?: SecondParameter<typeof openfortApiClient<AuthPlayerResponse>>,) => {\n return openfortApiClient<AuthPlayerResponse>(\n {url: `/iam/v1/oauth/unlink`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: unlinkOAuthRequest\n },\n options);\n }\n /**\n * Create a guest player.\n * @summary Create a guest player.\n */\nexport const registerGuest = (\n \n options?: SecondParameter<typeof openfortApiClient<AuthResponse>>,) => {\n return openfortApiClient<AuthResponse>(\n {url: `/iam/v1/guest`, method: 'POST'\n },\n options);\n }\n /**\n * Get the jwks.json file.\n\nYou can use the jwks.json file to verify the signature of a JWT token issued by Openfort Auth.\n * @summary Get the jwks.json file.\n */\nexport const getJwks = (\n publishableKey: string,\n options?: SecondParameter<typeof openfortApiClient<JwtKeyResponse>>,) => {\n return openfortApiClient<JwtKeyResponse>(\n {url: `/iam/v1/${publishableKey}/jwks.json`, method: 'GET'\n },\n options);\n }\n export const me = (\n \n options?: SecondParameter<typeof openfortApiClient<AuthPlayerResponse>>,) => {\n return openfortApiClient<AuthPlayerResponse>(\n {url: `/iam/v1/me`, method: 'GET'\n },\n options);\n }\n export type RefreshResult = NonNullable<Awaited<ReturnType<typeof refresh>>>\nexport type LogoutResult = NonNullable<Awaited<ReturnType<typeof logout>>>\nexport type InitSIWEResult = NonNullable<Awaited<ReturnType<typeof initSIWE>>>\nexport type AuthenticateSIWEResult = NonNullable<Awaited<ReturnType<typeof authenticateSIWE>>>\nexport type UnlinkSIWEResult = NonNullable<Awaited<ReturnType<typeof unlinkSIWE>>>\nexport type LinkSIWEResult = NonNullable<Awaited<ReturnType<typeof linkSIWE>>>\nexport type SignupEmailPasswordResult = NonNullable<Awaited<ReturnType<typeof signupEmailPassword>>>\nexport type LoginEmailPasswordResult = NonNullable<Awaited<ReturnType<typeof loginEmailPassword>>>\nexport type RequestEmailVerificationResult = NonNullable<Awaited<ReturnType<typeof requestEmailVerification>>>\nexport type VerifyEmailResult = NonNullable<Awaited<ReturnType<typeof verifyEmail>>>\nexport type RequestResetPasswordResult = NonNullable<Awaited<ReturnType<typeof requestResetPassword>>>\nexport type ResetPasswordResult = NonNullable<Awaited<ReturnType<typeof resetPassword>>>\nexport type LinkEmailResult = NonNullable<Awaited<ReturnType<typeof linkEmail>>>\nexport type UnlinkEmailResult = NonNullable<Awaited<ReturnType<typeof unlinkEmail>>>\nexport type LoginOIDCResult = NonNullable<Awaited<ReturnType<typeof loginOIDC>>>\nexport type InitOAuthResult = NonNullable<Awaited<ReturnType<typeof initOAuth>>>\nexport type LinkOAuthResult = NonNullable<Awaited<ReturnType<typeof linkOAuth>>>\nexport type LinkThirdPartyResult = NonNullable<Awaited<ReturnType<typeof linkThirdParty>>>\nexport type PoolOAuthResult = NonNullable<Awaited<ReturnType<typeof poolOAuth>>>\nexport type LoginWithIdTokenResult = NonNullable<Awaited<ReturnType<typeof loginWithIdToken>>>\nexport type ThirdPartyResult = NonNullable<Awaited<ReturnType<typeof thirdParty>>>\nexport type UnlinkOAuthResult = NonNullable<Awaited<ReturnType<typeof unlinkOAuth>>>\nexport type RegisterGuestResult = NonNullable<Awaited<ReturnType<typeof registerGuest>>>\nexport type GetJwksResult = NonNullable<Awaited<ReturnType<typeof getJwks>>>\nexport type MeResult = NonNullable<Awaited<ReturnType<typeof me>>>\n","/**\n * Generated by orval v7.18.0 🍺\n * Do not edit manually.\n * Openfort API\n * Complete Openfort API references and guides can be found at: https://www.openfort.io/docs\n * OpenAPI spec version: 1.0.0\n */\nimport type {\n BackendWalletListResponse,\n BackendWalletResponse,\n CreateBackendWalletRequest,\n CreateBackendWalletResponse,\n DeleteBackendWalletResponse,\n ExportPrivateKeyRequest,\n ExportPrivateKeyResponse,\n ImportPrivateKeyRequest,\n ImportPrivateKeyResponse,\n ListBackendWalletsParams,\n RegisterWalletSecretRequest,\n RegisterWalletSecretResponse,\n RevokeWalletSecretRequest,\n RevokeWalletSecretResponse,\n RotateWalletSecretRequest,\n RotateWalletSecretResponse,\n SignRequest,\n SignResponse\n} from '../openfortAPI.schemas';\n\nimport { openfortApiClient } from '../../openfortApiClient';\n\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n\n /**\n * List backend wallets.\n\nReturns a paginated list of backend wallets for the project.\n * @summary List backend wallets.\n */\nexport const listBackendWallets = (\n params?: ListBackendWalletsParams,\n options?: SecondParameter<typeof openfortApiClient<BackendWalletListResponse>>,) => {\n return openfortApiClient<BackendWalletListResponse>(\n {url: `/v2/accounts/backend`, method: 'GET',\n params\n },\n options);\n }\n /**\n * Create a new backend wallet account.\n\nGenerates a new keypair securely in the backend wallet system.\nThe private key is stored encrypted and never exposed.\n * @summary Create backend wallet.\n */\nexport const createBackendWallet = (\n createBackendWalletRequest: CreateBackendWalletRequest,\n options?: SecondParameter<typeof openfortApiClient<CreateBackendWalletResponse>>,) => {\n return openfortApiClient<CreateBackendWalletResponse>(\n {url: `/v2/accounts/backend`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: createBackendWalletRequest\n },\n options);\n }\n /**\n * Get backend wallet details.\n\nReturns details for a specific backend wallet.\n * @summary Get backend wallet.\n */\nexport const getBackendWallet = (\n id: string,\n options?: SecondParameter<typeof openfortApiClient<BackendWalletResponse>>,) => {\n return openfortApiClient<BackendWalletResponse>(\n {url: `/v2/accounts/backend/${id}`, method: 'GET'\n },\n options);\n }\n /**\n * Delete a backend wallet.\n\nPermanently deletes a backend wallet and its associated private key.\n * @summary Delete backend wallet.\n */\nexport const deleteBackendWallet = (\n id: string,\n options?: SecondParameter<typeof openfortApiClient<DeleteBackendWalletResponse>>,) => {\n return openfortApiClient<DeleteBackendWalletResponse>(\n {url: `/v2/accounts/backend/${id}`, method: 'DELETE'\n },\n options);\n }\n /**\n * Sign data via backend wallet.\n\nSigns the provided data using the account's private key managed by the backend wallet.\nThe private key is securely stored and never exposed.\n * @summary Sign data via backend wallet.\n */\nexport const sign = (\n id: string,\n signRequest: SignRequest,\n options?: SecondParameter<typeof openfortApiClient<SignResponse>>,) => {\n return openfortApiClient<SignResponse>(\n {url: `/v2/accounts/backend/${id}/sign`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: signRequest\n },\n options);\n }\n /**\n * Export private key with E2E encryption via backend wallet.\n\nExports the account's private key encrypted using RSA-4096 OAEP SHA-256.\nThe client must provide their ephemeral RSA-4096 public key (base64 SPKI DER format).\nThe response contains the encrypted private key that can be decrypted with the client's private key.\n * @summary Export private key (E2E encrypted).\n */\nexport const exportPrivateKey = (\n id: string,\n exportPrivateKeyRequest: ExportPrivateKeyRequest,\n options?: SecondParameter<typeof openfortApiClient<ExportPrivateKeyResponse>>,) => {\n return openfortApiClient<ExportPrivateKeyResponse>(\n {url: `/v2/accounts/backend/${id}/export`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: exportPrivateKeyRequest\n },\n options);\n }\n /**\n * Import private key with E2E encryption via backend wallet.\n\nImports a private key into the backend wallet system.\nThe private key must be encrypted using RSA-4096 OAEP SHA-256 with the server's\nstatic import public key (obtain out-of-band from SDK or documentation).\n * @summary Import private key (E2E encrypted).\n */\nexport const importPrivateKey = (\n importPrivateKeyRequest: ImportPrivateKeyRequest,\n options?: SecondParameter<typeof openfortApiClient<ImportPrivateKeyResponse>>,) => {\n return openfortApiClient<ImportPrivateKeyResponse>(\n {url: `/v2/accounts/backend/import`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: importPrivateKeyRequest\n },\n options);\n }\n /**\n * Register a new wallet secret (authentication key).\n\nRegisters an ECDSA P-256 public key that will be used to verify\nX-Wallet-Auth JWT signatures. This is required before using WALLET_AUTH\nfor other backend wallet operations.\n * @summary Register wallet secret.\n */\nexport const registerWalletSecret = (\n registerWalletSecretRequest: RegisterWalletSecretRequest,\n options?: SecondParameter<typeof openfortApiClient<RegisterWalletSecretResponse>>,) => {\n return openfortApiClient<RegisterWalletSecretResponse>(\n {url: `/v2/accounts/backend/register-secret`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: registerWalletSecretRequest\n },\n options);\n }\n /**\n * Revoke a wallet secret (authentication key).\n\nPermanently revokes a wallet secret so it can no longer be used\nfor X-Wallet-Auth JWT signing.\n * @summary Revoke wallet secret.\n */\nexport const revokeWalletSecret = (\n revokeWalletSecretRequest: RevokeWalletSecretRequest,\n options?: SecondParameter<typeof openfortApiClient<RevokeWalletSecretResponse>>,) => {\n return openfortApiClient<RevokeWalletSecretResponse>(\n {url: `/v2/accounts/backend/revoke-secret`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: revokeWalletSecretRequest\n },\n options);\n }\n /**\n * Rotate wallet secret (authentication key).\n\nReplaces the current wallet secret (ECDSA P-256 public key) used for\nX-Wallet-Auth JWT signing. The old secret will be revoked.\n * @summary Rotate wallet secret.\n */\nexport const rotateWalletSecret = (\n rotateWalletSecretRequest: RotateWalletSecretRequest,\n options?: SecondParameter<typeof openfortApiClient<RotateWalletSecretResponse>>,) => {\n return openfortApiClient<RotateWalletSecretResponse>(\n {url: `/v2/accounts/backend/rotate-secrets`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: rotateWalletSecretRequest\n },\n options);\n }\n export type ListBackendWalletsResult = NonNullable<Awaited<ReturnType<typeof listBackendWallets>>>\nexport type CreateBackendWalletResult = NonNullable<Awaited<ReturnType<typeof createBackendWallet>>>\nexport type GetBackendWalletResult = NonNullable<Awaited<ReturnType<typeof getBackendWallet>>>\nexport type DeleteBackendWalletResult = NonNullable<Awaited<ReturnType<typeof deleteBackendWallet>>>\nexport type SignResult = NonNullable<Awaited<ReturnType<typeof sign>>>\nexport type ExportPrivateKeyResult = NonNullable<Awaited<ReturnType<typeof exportPrivateKey>>>\nexport type ImportPrivateKeyResult = NonNullable<Awaited<ReturnType<typeof importPrivateKey>>>\nexport type RegisterWalletSecretResult = NonNullable<Awaited<ReturnType<typeof registerWalletSecret>>>\nexport type RevokeWalletSecretResult = NonNullable<Awaited<ReturnType<typeof revokeWalletSecret>>>\nexport type RotateWalletSecretResult = NonNullable<Awaited<ReturnType<typeof rotateWalletSecret>>>\n","/**\n * Generated by orval v7.18.0 🍺\n * Do not edit manually.\n * Openfort API\n * Complete Openfort API references and guides can be found at: https://www.openfort.io/docs\n * OpenAPI spec version: 1.0.0\n */\nimport type {\n ContractDeleteResponse,\n ContractListResponse,\n ContractReadResponse,\n ContractResponse,\n CreateContractRequest,\n GetContractsParams,\n ReadContractParams,\n UpdateContractRequest\n} from '../openfortAPI.schemas';\n\nimport { openfortApiClient } from '../../openfortApiClient';\n\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n\n /**\n * List of all contracts per project.\nBy default, a maximum of ten contracts are shown.\n * @summary List contracts.\n */\nexport const getContracts = (\n params?: GetContractsParams,\n options?: SecondParameter<typeof openfortApiClient<ContractListResponse>>,) => {\n return openfortApiClient<ContractListResponse>(\n {url: `/v1/contracts`, method: 'GET',\n params\n },\n options);\n }\n /**\n * Add a new contract to your project in Openfort\n * @summary Create contract object.\n */\nexport const createContract = (\n createContractRequest: CreateContractRequest,\n options?: SecondParameter<typeof openfortApiClient<ContractResponse>>,) => {\n return openfortApiClient<ContractResponse>(\n {url: `/v1/contracts`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: createContractRequest\n },\n options);\n }\n /**\n * Retrieve a contract by providing their contract id.\n * @summary Get a contract.\n */\nexport const getContract = (\n id: string,\n options?: SecondParameter<typeof openfortApiClient<ContractResponse>>,) => {\n return openfortApiClient<ContractResponse>(\n {url: `/v1/contracts/${id}`, method: 'GET'\n },\n options);\n }\n /**\n * @summary Updates a contract object.\n */\nexport const updateContract = (\n id: string,\n updateContractRequest: UpdateContractRequest,\n options?: SecondParameter<typeof openfortApiClient<ContractResponse>>,) => {\n return openfortApiClient<ContractResponse>(\n {url: `/v1/contracts/${id}`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: updateContractRequest\n },\n options);\n }\n /**\n * Delete a contract from the project by providing its contract id.\n * @summary Deletes a contract object.\n */\nexport const deleteContract = (\n id: string,\n options?: SecondParameter<typeof openfortApiClient<ContractDeleteResponse>>,) => {\n return openfortApiClient<ContractDeleteResponse>(\n {url: `/v1/contracts/${id}`, method: 'DELETE'\n },\n options);\n }\n /**\n * Using this endpoint, you can get the repositories returned by any readable\nfunction listed in a contracts ABI. This could be things like querying\nthe totalSupply of a currency contract, the number of owners of an items\ncontract, and more.\n * @summary Read on chain contract repositories.\n */\nexport const readContract = (\n id: string,\n params: ReadContractParams,\n options?: SecondParameter<typeof openfortApiClient<ContractReadResponse>>,) => {\n return openfortApiClient<ContractReadResponse>(\n {url: `/v1/contracts/${id}/read`, method: 'GET',\n params\n },\n options);\n }\n export type GetContractsResult = NonNullable<Awaited<ReturnType<typeof getContracts>>>\nexport type CreateContractResult = NonNullable<Awaited<ReturnType<typeof createContract>>>\nexport type GetContractResult = NonNullable<Awaited<ReturnType<typeof getContract>>>\nexport type UpdateContractResult = NonNullable<Awaited<ReturnType<typeof updateContract>>>\nexport type DeleteContractResult = NonNullable<Awaited<ReturnType<typeof deleteContract>>>\nexport type ReadContractResult = NonNullable<Awaited<ReturnType<typeof readContract>>>\n","/**\n * Generated by orval v7.18.0 🍺\n * Do not edit manually.\n * Openfort API\n * Complete Openfort API references and guides can be found at: https://www.openfort.io/docs\n * OpenAPI spec version: 1.0.0\n */\nimport type {\n CreateEventRequest,\n EventDeleteResponse,\n EventListResponse,\n EventResponse,\n GetEventsParams\n} from '../openfortAPI.schemas';\n\nimport { openfortApiClient } from '../../openfortApiClient';\n\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n\n /**\n * Returns a list of events.\n\nBy default, a maximum of 10 events are shown per page.\n * @summary List events.\n */\nexport const getEvents = (\n params?: GetEventsParams,\n options?: SecondParameter<typeof openfortApiClient<EventListResponse>>,) => {\n return openfortApiClient<EventListResponse>(\n {url: `/v1/events`, method: 'GET',\n params\n },\n options);\n }\n /**\n * Create a new event.\n * @summary Create a new event.\n */\nexport const createEvent = (\n createEventRequest: CreateEventRequest,\n options?: SecondParameter<typeof openfortApiClient<EventResponse>>,) => {\n return openfortApiClient<EventResponse>(\n {url: `/v1/events`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: createEventRequest\n },\n options);\n }\n /**\n * Get a single event.\n * @summary Get a single event.\n */\nexport const getEvent = (\n id: string,\n options?: SecondParameter<typeof openfortApiClient<EventResponse>>,) => {\n return openfortApiClient<EventResponse>(\n {url: `/v1/events/${id}`, method: 'GET'\n },\n options);\n }\n /**\n * Delete an event.\n * @summary Delete an event.\n */\nexport const deleteEvent = (\n id: string,\n options?: SecondParameter<typeof openfortApiClient<EventDeleteResponse>>,) => {\n return openfortApiClient<EventDeleteResponse>(\n {url: `/v1/events/${id}`, method: 'DELETE'\n },\n options);\n }\n export type GetEventsResult = NonNullable<Awaited<ReturnType<typeof getEvents>>>\nexport type CreateEventResult = NonNullable<Awaited<ReturnType<typeof createEvent>>>\nexport type GetEventResult = NonNullable<Awaited<ReturnType<typeof getEvent>>>\nexport type DeleteEventResult = NonNullable<Awaited<ReturnType<typeof deleteEvent>>>\n","/**\n * Generated by orval v7.18.0 🍺\n * Do not edit manually.\n * Openfort API\n * Complete Openfort API references and guides can be found at: https://www.openfort.io/docs\n * OpenAPI spec version: 1.0.0\n */\nimport type {\n CreateExchangeRequest,\n QuoteExchangeResult,\n TransactionIntentResponse\n} from '../openfortAPI.schemas';\n\nimport { openfortApiClient } from '../../openfortApiClient';\n\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n\n /**\n * Creates token swap.\n * @summary Create token swap.\n */\nexport const createSwap = (\n createExchangeRequest: CreateExchangeRequest,\n options?: SecondParameter<typeof openfortApiClient<TransactionIntentResponse>>,) => {\n return openfortApiClient<TransactionIntentResponse>(\n {url: `/v1/exchange`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: createExchangeRequest\n },\n options);\n }\n /**\n * Quote token swap.\n * @summary Quote token swap.\n */\nexport const quoteSwap = (\n createExchangeRequest: CreateExchangeRequest,\n options?: SecondParameter<typeof openfortApiClient<QuoteExchangeResult>>,) => {\n return openfortApiClient<QuoteExchangeResult>(\n {url: `/v1/exchange/quote`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: createExchangeRequest\n },\n options);\n }\n export type CreateSwapResult = NonNullable<Awaited<ReturnType<typeof createSwap>>>\nexport type QuoteSwapResult = NonNullable<Awaited<ReturnType<typeof quoteSwap>>>\n","/**\n * Generated by orval v7.18.0 🍺\n * Do not edit manually.\n * Openfort API\n * Complete Openfort API references and guides can be found at: https://www.openfort.io/docs\n * OpenAPI spec version: 1.0.0\n */\nimport type {\n CreateForwarderContractRequest,\n ForwarderContractDeleteResponse,\n ForwarderContractResponse,\n ListForwarderContractsParams\n} from '../openfortAPI.schemas';\n\nimport { openfortApiClient } from '../../openfortApiClient';\n\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n\n /**\n * Create a new forwarder contract.\n\nThis object represents the forwarder contract that will be used to pay the gas fees of the transactions.\n * @summary Create a new forwarder contract.\n */\nexport const createForwarderContract = (\n createForwarderContractRequest: CreateForwarderContractRequest,\n options?: SecondParameter<typeof openfortApiClient<ForwarderContractResponse>>,) => {\n return openfortApiClient<ForwarderContractResponse>(\n {url: `/v1/forwarder_contracts`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: createForwarderContractRequest\n },\n options);\n }\n /**\n * Returns a list of forwarder contract.\n\nThis object represents the forwarder contract that will be used to pay the gas fees for the transactions.\n\nBy default, a maximum of 10 forwarder contract are shown per page.\n * @summary List forwarder contract.\n */\nexport const listForwarderContracts = (\n params?: ListForwarderContractsParams,\n options?: SecondParameter<typeof openfortApiClient<ForwarderContractResponse[]>>,) => {\n return openfortApiClient<ForwarderContractResponse[]>(\n {url: `/v1/forwarder_contracts`, method: 'GET',\n params\n },\n options);\n }\n /**\n * Update a forwarder contract.\n\nThis object represents the forwarder contract that will be used to pay the gas fees of the transactions.\n * @summary Update a forwarder contract.\n */\nexport const updateForwarderContract = (\n id: string,\n createForwarderContractRequest: CreateForwarderContractRequest,\n options?: SecondParameter<typeof openfortApiClient<ForwarderContractResponse>>,) => {\n return openfortApiClient<ForwarderContractResponse>(\n {url: `/v1/forwarder_contracts/${id}`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: createForwarderContractRequest\n },\n options);\n }\n /**\n * Returns the forwarder contract with the given id.\n\nThis object represents the forwarder contract that will be used to pay the gas fees for the transactions.\n * @summary Get forwarder contract by id.\n */\nexport const getForwarderContract = (\n id: string,\n options?: SecondParameter<typeof openfortApiClient<ForwarderContractResponse>>,) => {\n return openfortApiClient<ForwarderContractResponse>(\n {url: `/v1/forwarder_contracts/${id}`, method: 'GET'\n },\n options);\n }\n /**\n * Delete the forwarder contract with the given id.\n\nThis object represents the forwarder contract that will be used to pay the gas fees for the transactions.\n * @summary Delete forwarder contract by id.\n */\nexport const deleteForwarderContract = (\n id: string,\n options?: SecondParameter<typeof openfortApiClient<ForwarderContractDeleteResponse>>,) => {\n return openfortApiClient<ForwarderContractDeleteResponse>(\n {url: `/v1/forwarder_contracts/${id}`, method: 'DELETE'\n },\n options);\n }\n export type CreateForwarderContractResult = NonNullable<Awaited<ReturnType<typeof createForwarderContract>>>\nexport type ListForwarderContractsResult = NonNullable<Awaited<ReturnType<typeof listForwarderContracts>>>\nexport type UpdateForwarderContractResult = NonNullable<Awaited<ReturnType<typeof updateForwarderContract>>>\nexport type GetForwarderContractResult = NonNullable<Awaited<ReturnType<typeof getForwarderContract>>>\nexport type DeleteForwarderContractResult = NonNullable<Awaited<ReturnType<typeof deleteForwarderContract>>>\n","/**\n * Generated by orval v7.18.0 🍺\n * Do not edit manually.\n * Openfort API\n * Complete Openfort API references and guides can be found at: https://www.openfort.io/docs\n * OpenAPI spec version: 1.0.0\n */\nimport { openfortApiClient } from '../../openfortApiClient';\n\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n\n export const query = (\n queryBody: unknown,\n options?: SecondParameter<typeof openfortApiClient<unknown>>,) => {\n return openfortApiClient<unknown>(\n {url: `/v1/graphql`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: queryBody\n },\n options);\n }\n export type QueryResult = NonNullable<Awaited<ReturnType<typeof query>>>\n","/**\n * Generated by orval v7.18.0 🍺\n * Do not edit manually.\n * Openfort API\n * Complete Openfort API references and guides can be found at: https://www.openfort.io/docs\n * OpenAPI spec version: 1.0.0\n */\nimport type {\n GetProjectLogsParams,\n ProjectLogs\n} from '../openfortAPI.schemas';\n\nimport { openfortApiClient } from '../../openfortApiClient';\n\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n\n /**\n * @summary Get logs for a project.\n */\nexport const getProjectLogs = (\n params?: GetProjectLogsParams,\n options?: SecondParameter<typeof openfortApiClient<ProjectLogs>>,) => {\n return openfortApiClient<ProjectLogs>(\n {url: `/v1/logs`, method: 'GET',\n params\n },\n options);\n }\n /**\n * @summary Get webhook logs for a project.\n */\nexport const getWebhookLogsByProjectId = (\n \n options?: SecondParameter<typeof openfortApiClient<ProjectLogs>>,) => {\n return openfortApiClient<ProjectLogs>(\n {url: `/v1/logs/webhook`, method: 'GET'\n },\n options);\n }\n export type GetProjectLogsResult = NonNullable<Awaited<ReturnType<typeof getProjectLogs>>>\nexport type GetWebhookLogsByProjectIdResult = NonNullable<Awaited<ReturnType<typeof getWebhookLogsByProjectId>>>\n","/**\n * Generated by orval v7.18.0 🍺\n * Do not edit manually.\n * Openfort API\n * Complete Openfort API references and guides can be found at: https://www.openfort.io/docs\n * OpenAPI spec version: 1.0.0\n */\nimport type {\n OnrampQuoteRequest,\n OnrampQuotesResponse,\n OnrampSessionRequest,\n OnrampSessionResponse\n} from '../openfortAPI.schemas';\n\nimport { openfortApiClient } from '../../openfortApiClient';\n\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n\n /**\n * Creates an onramp session for the selected provider.\n\nThe provider is selected via the `provider` field. All request and response formats are unified\nand provider-agnostic. The service layer handles translation between the common format and\nprovider-specific APIs.\n * @summary Create onramp session\n */\nexport const createOnrampSession = (\n onrampSessionRequest: OnrampSessionRequest,\n options?: SecondParameter<typeof openfortApiClient<OnrampSessionResponse>>,) => {\n return openfortApiClient<OnrampSessionResponse>(\n {url: `/v1/onramp/sessions`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: onrampSessionRequest\n },\n options);\n }\n /**\n * Retrieves onramp quote(s) without creating an actual transaction.\n\nIf provider is specified, returns a single quote for that provider.\nIf provider is not specified, returns quotes from all available providers.\n\nAll request and response formats are unified and provider-agnostic.\n * @summary Get onramp quote(s)\n */\nexport const getOnrampQuote = (\n onrampQuoteRequest: OnrampQuoteRequest,\n options?: SecondParameter<typeof openfortApiClient<OnrampQuotesResponse>>,) => {\n return openfortApiClient<OnrampQuotesResponse>(\n {url: `/v1/onramp/quotes`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: onrampQuoteRequest\n },\n options);\n }\n export type CreateOnrampSessionResult = NonNullable<Awaited<ReturnType<typeof createOnrampSession>>>\nexport type GetOnrampQuoteResult = NonNullable<Awaited<ReturnType<typeof getOnrampQuote>>>\n","/**\n * Generated by orval v7.18.0 🍺\n * Do not edit manually.\n * Openfort API\n * Complete Openfort API references and guides can be found at: https://www.openfort.io/docs\n * OpenAPI spec version: 1.0.0\n */\n/**\n */\nexport type JsonRpcSuccessResponseAnyJsonrpc = typeof JsonRpcSuccessResponseAnyJsonrpc[keyof typeof JsonRpcSuccessResponseAnyJsonrpc];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const JsonRpcSuccessResponseAnyJsonrpc = {\n '20': '2.0',\n} as const;\n\n/**\n * @nullable\n */\nexport type JsonRpcSuccessResponseAnyId = string | number | null;\n\n/**\n * JSON-RPC 2.0 Success Response\n */\nexport interface JsonRpcSuccessResponseAny {\n /** */\n jsonrpc: JsonRpcSuccessResponseAnyJsonrpc;\n result: unknown;\n /** @nullable */\n id: JsonRpcSuccessResponseAnyId;\n}\n\n/**\n * JSON-RPC 2.0 Error Object\n */\nexport interface JsonRpcError {\n code: number;\n message: string;\n data?: unknown;\n}\n\n/**\n */\nexport type JsonRpcErrorResponseJsonrpc = typeof JsonRpcErrorResponseJsonrpc[keyof typeof JsonRpcErrorResponseJsonrpc];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const JsonRpcErrorResponseJsonrpc = {\n '20': '2.0',\n} as const;\n\n/**\n * @nullable\n */\nexport type JsonRpcErrorResponseId = string | number | null;\n\n/**\n * JSON-RPC 2.0 Error Response\n */\nexport interface JsonRpcErrorResponse {\n /** */\n jsonrpc: JsonRpcErrorResponseJsonrpc;\n error: JsonRpcError;\n /** @nullable */\n id: JsonRpcErrorResponseId;\n}\n\n/**\n * JSON-RPC 2.0 Response (either success or error)\n */\nexport type JsonRpcResponse = JsonRpcSuccessResponseAny | JsonRpcErrorResponse;\n\n/**\n */\nexport type JsonRpcRequestJsonrpc = typeof JsonRpcRequestJsonrpc[keyof typeof JsonRpcRequestJsonrpc];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const JsonRpcRequestJsonrpc = {\n '20': '2.0',\n} as const;\n\n/**\n * @nullable\n */\nexport type JsonRpcRequestId = string | number | null;\n\n/**\n * JSON-RPC 2.0 Request\n */\nexport interface JsonRpcRequest {\n /** */\n jsonrpc: JsonRpcRequestJsonrpc;\n method: string;\n params?: unknown;\n /** @nullable */\n id?: JsonRpcRequestId;\n}\n\nexport interface CheckoutResponse {\n url: string;\n}\n\nexport type Currency = typeof Currency[keyof typeof Currency];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const Currency = {\n usd: 'usd',\n} as const;\n\nexport interface CheckoutRequest {\n /**\n * Amount in cents\n * @minimum 1\n */\n amount: number;\n currency: Currency;\n cancelUrl?: string;\n successUrl?: string;\n}\n\nexport interface CheckoutSubscriptionRequest {\n plan: string;\n cancelUrl?: string;\n successUrl?: string;\n}\n\nexport interface Money {\n /**\n * Amount in cents\n * @minimum 1\n */\n amount: number;\n currency: Currency;\n}\n\nexport interface BalanceResponse {\n balance: Money;\n expenses: Money;\n payments: Money;\n}\n\nexport type ResponseTypeLIST = typeof ResponseTypeLIST[keyof typeof ResponseTypeLIST];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const ResponseTypeLIST = {\n list: 'list',\n} as const;\n\nexport interface EntityIdResponse {\n id: string;\n}\n\nexport type SponsorSchemaPAYFORUSER = typeof SponsorSchemaPAYFORUSER[keyof typeof SponsorSchemaPAYFORUSER];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const SponsorSchemaPAYFORUSER = {\n pay_for_user: 'pay_for_user',\n} as const;\n\nexport type SponsorSchema = typeof SponsorSchema[keyof typeof SponsorSchema];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const SponsorSchema = {\n pay_for_user: 'pay_for_user',\n charge_custom_tokens: 'charge_custom_tokens',\n fixed_rate: 'fixed_rate',\n} as const;\n\nexport interface PayForUserPolicyStrategy {\n sponsorSchema: SponsorSchemaPAYFORUSER;\n /** @nullable */\n depositor?: string | null;\n}\n\nexport type SponsorSchemaCHARGECUSTOMTOKENS = typeof SponsorSchemaCHARGECUSTOMTOKENS[keyof typeof SponsorSchemaCHARGECUSTOMTOKENS];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const SponsorSchemaCHARGECUSTOMTOKENS = {\n charge_custom_tokens: 'charge_custom_tokens',\n} as const;\n\nexport interface ChargeCustomTokenPolicyStrategy {\n sponsorSchema: SponsorSchemaCHARGECUSTOMTOKENS;\n /** @nullable */\n depositor?: string | null;\n tokenContract: string;\n tokenContractAmount: string;\n}\n\nexport type SponsorSchemaFIXEDRATE = typeof SponsorSchemaFIXEDRATE[keyof typeof SponsorSchemaFIXEDRATE];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const SponsorSchemaFIXEDRATE = {\n fixed_rate: 'fixed_rate',\n} as const;\n\nexport interface FixedRateTokenPolicyStrategy {\n sponsorSchema: SponsorSchemaFIXEDRATE;\n /** @nullable */\n depositor?: string | null;\n tokenContract: string;\n tokenContractAmount: string;\n}\n\nexport type PolicyStrategy = PayForUserPolicyStrategy | ChargeCustomTokenPolicyStrategy | FixedRateTokenPolicyStrategy;\n\nexport type EntityTypePOLICY = typeof EntityTypePOLICY[keyof typeof EntityTypePOLICY];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const EntityTypePOLICY = {\n policy: 'policy',\n} as const;\n\nexport interface Policy {\n id: string;\n object: EntityTypePOLICY;\n createdAt: number;\n /** @nullable */\n name: string | null;\n deleted: boolean;\n enabled: boolean;\n /** The chain ID. */\n chainId: number;\n paymaster?: EntityIdResponse;\n forwarderContract?: EntityIdResponse;\n strategy: PolicyStrategy;\n transactionIntents: EntityIdResponse[];\n policyRules: EntityIdResponse[];\n}\n\nexport interface PlayerMetadata {[key: string]: string | number}\n\nexport type EntityTypePLAYER = typeof EntityTypePLAYER[keyof typeof EntityTypePLAYER];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const EntityTypePLAYER = {\n player: 'player',\n} as const;\n\nexport interface Player {\n id: string;\n object: EntityTypePLAYER;\n createdAt: number;\n name: string;\n description?: string;\n metadata?: PlayerMetadata;\n transactionIntents?: EntityIdResponse[];\n accounts?: EntityIdResponse[];\n}\n\nexport type EntityTypeACCOUNT = typeof EntityTypeACCOUNT[keyof typeof EntityTypeACCOUNT];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const EntityTypeACCOUNT = {\n account: 'account',\n} as const;\n\nexport interface Account {\n id: string;\n object: EntityTypeACCOUNT;\n createdAt: number;\n address: string;\n ownerAddress: string;\n deployed: boolean;\n custodial: boolean;\n embeddedSigner: boolean;\n /** The chain ID. */\n chainId: number;\n accountType: string;\n pendingOwnerAddress?: string;\n transactionIntents?: EntityIdResponse[];\n player: EntityIdResponse;\n}\n\nexport type EntityTypeDEVELOPERACCOUNT = typeof EntityTypeDEVELOPERACCOUNT[keyof typeof EntityTypeDEVELOPERACCOUNT];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const EntityTypeDEVELOPERACCOUNT = {\n developerAccount: 'developerAccount',\n} as const;\n\nexport interface DeveloperAccount {\n id: string;\n object: EntityTypeDEVELOPERACCOUNT;\n createdAt: number;\n address: string;\n custodial: boolean;\n name?: string;\n transactionIntents?: EntityIdResponse[];\n}\n\nexport type TransactionAbstractionType = typeof TransactionAbstractionType[keyof typeof TransactionAbstractionType];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const TransactionAbstractionType = {\n accountAbstractionV6: 'accountAbstractionV6',\n accountAbstractionV8: 'accountAbstractionV8',\n accountAbstractionV9: 'accountAbstractionV9',\n zkSync: 'zkSync',\n standard: 'standard',\n} as const;\n\nexport type TransactionStatus = typeof TransactionStatus[keyof typeof TransactionStatus];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const TransactionStatus = {\n none: 'none',\n new: 'new',\n sent: 'sent',\n dropped: 'dropped',\n indexed: 'indexed',\n confirmed: 'confirmed',\n reverted: 'reverted',\n notfound: 'notfound',\n replaced: 'replaced',\n expired: 'expired',\n} as const;\n\n/**\n * A transition represents a change in the status of a transaction intent.\n */\nexport interface Transition {\n fromStatus: TransactionStatus;\n toStatus: TransactionStatus;\n at: number;\n}\n\nexport interface ZKSyncDetails {\n /** The transaction sender. */\n from: string;\n /** The transaction recipient or contract address. */\n to: string;\n /** A contract hashed method call with encoded args. */\n data?: string;\n /** Unique number identifying this transaction. */\n nonce: string;\n /** The gas limit for the transaction. */\n gas: string;\n /** Total fee per gas (in wei), inclusive of `maxPriorityFeePerGas`. Only applies to EIP-1559 Transactions. */\n maxFeePerGas: string;\n /** Max priority fee per gas (in wei). Only applies to EIP-1559 Transactions. */\n maxPriorityFeePerGas: string;\n /** Address of the paymaster account that will pay the fees. */\n paymaster?: string;\n /** Input data to the paymaster */\n paymasterInput?: string;\n /** Value in wei sent with this transaction. */\n value?: string;\n}\n\nexport interface UserOperationV6 {\n /** The data to pass to the `sender` during the main execution call. */\n callData: string;\n /** The amount of gas to allocate the main execution call */\n callGasLimit: string;\n /** Account init code. Only for new accounts. */\n initCode?: string;\n /** Maximum fee per gas. */\n maxFeePerGas: string;\n /** Maximum priority fee per gas. */\n maxPriorityFeePerGas: string;\n /** Anti-replay parameter. */\n nonce: string;\n /** Paymaster address with calldata. */\n paymasterAndData?: string;\n /** Extra gas to pay the bundler. */\n preVerificationGas: string;\n /** The account making the operation. */\n sender: string;\n /** Data passed into the account to verify authorization. */\n signature: string;\n /** The amount of gas to allocate for the verification step. */\n verificationGasLimit: string;\n}\n\nexport interface AccountAbstractionV6Details {\n userOperation: UserOperationV6;\n /** A User Operation hash. */\n userOperationHash: string;\n}\n\nexport interface UserOperationV8 {\n /** The data to pass to the `sender` during the main execution call. */\n callData: string;\n /** The amount of gas to allocate the main execution call */\n callGasLimit: string;\n /** Account init code. Only for new accounts. */\n factory?: string;\n /** Factory data for account creation. */\n factoryData?: string;\n /** Maximum fee per gas. */\n maxFeePerGas: string;\n /** Maximum priority fee per gas. */\n maxPriorityFeePerGas: string;\n /** Anti-replay parameter. */\n nonce: string;\n /** Paymaster address. */\n paymaster?: string;\n /** Paymaster verification gas limit. */\n paymasterVerificationGasLimit?: string;\n /** Paymaster post-operation gas limit. */\n paymasterPostOpGasLimit?: string;\n /** Paymaster data. */\n paymasterData?: string;\n /** Extra gas to pay the bundler. */\n preVerificationGas: string;\n /** The account making the operation. */\n sender: string;\n /** Data passed into the account to verify authorization. */\n signature: string;\n /** The amount of gas to allocate for the verification step. */\n verificationGasLimit: string;\n}\n\nexport interface AccountAbstractionV8Details {\n userOperation: UserOperationV8;\n /** A User Operation hash. */\n userOperationHash: string;\n}\n\n/**\n * V9 UserOperation extends V8 with paymasterSignature field.\npaymasterSignature enables parallelizable Paymaster signing -\ndata can be passed to the Paymaster after the UserOperation is signed by the wallet.\n */\nexport interface UserOperationV9 {\n /** The data to pass to the `sender` during the main execution call. */\n callData: string;\n /** The amount of gas to allocate the main execution call */\n callGasLimit: string;\n /** Account init code. Only for new accounts. */\n factory?: string;\n /** Factory data for account creation. */\n factoryData?: string;\n /** Maximum fee per gas. */\n maxFeePerGas: string;\n /** Maximum priority fee per gas. */\n maxPriorityFeePerGas: string;\n /** Anti-replay parameter. */\n nonce: string;\n /** Paymaster address. */\n paymaster?: string;\n /** Paymaster verification gas limit. */\n paymasterVerificationGasLimit?: string;\n /** Paymaster post-operation gas limit. */\n paymasterPostOpGasLimit?: string;\n /** Paymaster data. */\n paymasterData?: string;\n /** Extra gas to pay the bundler. */\n preVerificationGas: string;\n /** The account making the operation. */\n sender: string;\n /** Data passed into the account to verify authorization. */\n signature: string;\n /** The amount of gas to allocate for the verification step. */\n verificationGasLimit: string;\n /** Paymaster signature - enables parallelizable signing.\nThis field does not affect the UserOperation hash, allowing\nthe sender and paymaster to sign in parallel. */\n paymasterSignature?: string;\n}\n\n/**\n * V9 details - extends V8 with paymasterSignature for parallelizable signing\n */\nexport interface AccountAbstractionV9Details {\n userOperation: UserOperationV9;\n /** A User Operation hash. */\n userOperationHash: string;\n}\n\nexport interface StandardDetails {\n /** The transaction sender. */\n from: string;\n /** The transaction recipient or contract address. */\n to: string;\n /** A contract hashed method call with encoded args. */\n data?: string;\n /** Unique number identifying this transaction. */\n nonce: string;\n /** The gas limit for the transaction. */\n gas: string;\n /** Total fee per gas (in wei), inclusive of `maxPriorityFeePerGas`. Only applies to EIP-1559 Transactions. */\n maxFeePerGas: string;\n /** Max priority fee per gas (in wei). Only applies to EIP-1559 Transactions. */\n maxPriorityFeePerGas: string;\n /** Value in wei sent with this transaction. */\n value?: string;\n}\n\nexport interface TransactionResponseLog {\n blockNumber: number;\n blockHash: string;\n transactionIndex: number;\n removed: boolean;\n address: string;\n data: string;\n topics: string[];\n transactionHash: string;\n logIndex: number;\n orphaned?: boolean;\n}\n\nexport interface ResponseResponse {\n /** The unix timestamp in seconds when the transactionIntent was created. */\n createdAt: number;\n /** The block height (number) of the block including the transaction of this log. */\n blockNumber?: number;\n /** The transaction hash of the transaction of this log. */\n transactionHash?: string;\n /** The l1 gas used by the transaction of this log. */\n l1GasUsed?: string;\n /** The gas used by the transaction of this log. */\n gasUsed?: string;\n /** The gas fee by the transaction of this log. */\n gasFee?: string;\n /** The l1 gas fee by the transaction of this log. */\n l1GasFee?: string;\n /** The status of the transaction of this log. */\n status?: number;\n /** The logs of the transaction of this log. */\n logs?: TransactionResponseLog[];\n /** The address of the contract of this log. */\n to?: string;\n /** The error of the transaction of this log. */\n error?: unknown;\n}\n\nexport interface Interaction {\n /** The address of the recipient of native tokens. Use *only* to transfer native tokens. If you provide one of a `pla_...`, or `acc_...` it will be converted to the corresponding address. */\n to?: string;\n /** The value intended to be sent with the transaction. Should be a stringified number in WEI (i.e. factor 10^18).\n* */\n value?: string;\n /** The contract ID you want to interact with. Must have been added to Openfort first, starts with `con_`. */\n contract?: string;\n /** The function name of the contract. Accepts a a function signature as well (e.g. mint(address)). */\n functionName?: string;\n /** The function arguments of the contract, in string format. If you provide one of a `pla_...`, `con_...` or `acc_...` it will be converted to the corresponding address. */\n functionArgs?: unknown[];\n /** Data to append to the end of the calldata. Useful for [adding a \"domain\" tag](https://opensea.notion.site/opensea/Seaport-Order-Attributions-ec2d69bf455041a5baa490941aad307f) */\n dataSuffix?: string;\n /** The encoded calldata of the contract. */\n data?: string;\n}\n\nexport type NextActionType = typeof NextActionType[keyof typeof NextActionType];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const NextActionType = {\n sign_with_wallet: 'sign_with_wallet',\n} as const;\n\nexport interface NextActionPayload {\n /**\n * The userOperation.\n * @deprecated\n */\n userOp?: unknown;\n /**\n * The hashed userOperation.\n * @deprecated\n */\n userOpHash?: string;\n /**\n * The userOperation.\n * @deprecated\n */\n userOperation?: unknown;\n /**\n * The hashed userOperation.\n * @deprecated\n */\n userOperationHash?: string;\n /** chain-agnostic hash to sign. */\n signableHash?: string;\n}\n\nexport interface NextActionResponse {\n type: NextActionType;\n payload: NextActionPayload;\n}\n\nexport type EntityTypeTRANSACTIONINTENT = typeof EntityTypeTRANSACTIONINTENT[keyof typeof EntityTypeTRANSACTIONINTENT];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const EntityTypeTRANSACTIONINTENT = {\n transactionIntent: 'transactionIntent',\n} as const;\n\n/**\n * Specific transaction details based on its type\n */\nexport type TransactionIntentResponseDetails = ZKSyncDetails | AccountAbstractionV6Details | AccountAbstractionV8Details | AccountAbstractionV9Details | StandardDetails;\n\n/**\n * The policy ID (starts with pol_).\n */\nexport type TransactionIntentResponsePolicy = Policy | EntityIdResponse;\n\n/**\n * The player ID (starts with pla_).\n */\nexport type TransactionIntentResponsePlayer = Player | EntityIdResponse;\n\n/**\n * The account ID (starts with acc_).\n */\nexport type TransactionIntentResponseAccount = Account | EntityIdResponse | DeveloperAccount;\n\nexport interface TransactionIntentResponse {\n id: string;\n object: EntityTypeTRANSACTIONINTENT;\n createdAt: number;\n /** The unix timestamp in seconds when the transactionIntent was created. */\n updatedAt: number;\n /** The chain ID. */\n chainId: number;\n /** The transaction abstraction type */\n abstractionType: TransactionAbstractionType;\n /** Transition of statuses the transaction has gone through. */\n transitions?: Transition[];\n /** Specific transaction details based on its type */\n details?: TransactionIntentResponseDetails;\n /** @deprecated */\n userOperationHash?: string;\n /** @deprecated */\n userOperation?: unknown;\n response?: ResponseResponse;\n interactions?: Interaction[];\n nextAction?: NextActionResponse;\n /** The policy ID (starts with pol_). */\n policy?: TransactionIntentResponsePolicy;\n /** The player ID (starts with pla_). */\n player?: TransactionIntentResponsePlayer;\n /** The account ID (starts with acc_). */\n account: TransactionIntentResponseAccount;\n}\n\nexport interface TransactionIntentListResponse {\n object: ResponseTypeLIST;\n url: string;\n data: TransactionIntentResponse[];\n start: number;\n end: number;\n total: number;\n}\n\nexport type ErrorTypeINVALIDREQUESTERROR = typeof ErrorTypeINVALIDREQUESTERROR[keyof typeof ErrorTypeINVALIDREQUESTERROR];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const ErrorTypeINVALIDREQUESTERROR = {\n invalid_request_error: 'invalid_request_error',\n} as const;\n\nexport interface FieldErrors {[key: string]: {\n value?: unknown;\n message: string;\n}}\n\nexport interface InvalidRequestError {\n type: ErrorTypeINVALIDREQUESTERROR;\n message: string;\n details?: FieldErrors;\n}\n\nexport interface InvalidRequestErrorResponse {\n error: InvalidRequestError;\n}\n\n/**\n */\nexport type TransactionIntentResponseExpandable = typeof TransactionIntentResponseExpandable[keyof typeof TransactionIntentResponseExpandable];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const TransactionIntentResponseExpandable = {\n policy: 'policy',\n player: 'player',\n account: 'account',\n} as const;\n\nexport type PrismaSortOrder = typeof PrismaSortOrder[keyof typeof PrismaSortOrder];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const PrismaSortOrder = {\n asc: 'asc',\n desc: 'desc',\n} as const;\n\nexport interface TransactionIntentListQueries {\n /**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\n limit?: number;\n /**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\n skip?: number;\n /** Specifies the order in which to sort the results. */\n order?: PrismaSortOrder;\n /** Specifies the fields to expand in the response. */\n expand?: TransactionIntentResponseExpandable[];\n /** The chain ID. Must be a [supported chain](/development/chains). */\n chainId?: number;\n /** Filter by account ID or developer account (starts with acc_ or dac_ respectively). */\n account?: string[];\n /** Filter by player ID (starts with pla_). */\n player?: string[];\n /** Filter by successful (1) or failed (0) transaction intents. */\n status?: number;\n /** Filter by policy ID (starts with pol_). */\n policy?: string[];\n}\n\nexport interface CreateTransactionIntentRequest {\n /** The chain ID. Must be a [supported chain](/development/chains). */\n chainId: number;\n /** ID of the Player this TransactionIntent belongs to, if one exists (starts with `pla_`).\n\nIf you omit this parameter a new Player will be created. */\n player?: string;\n /** ID of the Account this TransactionIntent is executed with, if one exists (starts with `acc_` or `dac_`).\n\nWhen providing a Player and ChainID, you can omit this parameter. */\n account?: string;\n /** ID of the Policy that defines the gas sponsorship strategy (starts with `pol_`). If no Policy is provided, the own Account native token funds will be used to pay for gas. */\n policy?: string;\n /** Use this parameter to create a new Account for Player with the provided owner address.\n\nIf you omit this parameter and no Account exists for the Player, a custodial Account will be created. */\n externalOwnerAddress?: string;\n /** Set to `true` to indicate that the transactionIntent request should be resolved as soon as possible, after the transactionIntent is created and simulated and before it arrives on chain. */\n optimistic?: boolean;\n /** Signed authorization for delegated accounts. This signature is used to authorize the user operation for AccountAbstractionV8.\nThe signature should be in the format \"0x...\" and will be parsed to extract r, s, and yParity values. */\n signedAuthorization?: string;\n interactions: Interaction[];\n}\n\n/**\n * return value from estimateTransactionIntentCost\n */\nexport interface EstimateTransactionIntentGasResult {\n /** estimated TX gas cost */\n estimatedTXGas: string;\n /** estimated TX gas cost in the chain native token (WEI) */\n estimatedTXGasFee: string;\n /** estimated TX gas cost in USD */\n estimatedTXGasFeeUSD: string;\n /** when using a policy, the estimated TX gas cost in the ERC-20 token defined in the strategy (WEI) */\n estimatedTXGasFeeToken?: string;\n /** gas price used for the estimation */\n gasPrice: string;\n}\n\nexport interface SignatureRequest {\n /** signed userOperationHash by the owner or valid session key */\n signature: string;\n /** Set to `true` to indicate that the transactionIntent request should be resolved as soon as possible, after the transactionIntent is created and simulated and before it arrives on chain. */\n optimistic?: boolean;\n}\n\nexport type APITopic = typeof APITopic[keyof typeof APITopic];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const APITopic = {\n transaction_intentbroadcast: 'transaction_intent.broadcast',\n transaction_intentsuccessful: 'transaction_intent.successful',\n transaction_intentcancelled: 'transaction_intent.cancelled',\n transaction_intentfailed: 'transaction_intent.failed',\n balanceproject: 'balance.project',\n balancecontract: 'balance.contract',\n balancedev_account: 'balance.dev_account',\n test: 'test',\n} as const;\n\nexport type APITriggerType = typeof APITriggerType[keyof typeof APITriggerType];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const APITriggerType = {\n webhook: 'webhook',\n email: 'email',\n} as const;\n\nexport type EntityTypeTRIGGER = typeof EntityTypeTRIGGER[keyof typeof EntityTypeTRIGGER];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const EntityTypeTRIGGER = {\n trigger: 'trigger',\n} as const;\n\nexport interface TriggerResponse {\n id: string;\n object: EntityTypeTRIGGER;\n createdAt: number;\n target: string;\n type: APITriggerType;\n subscription: string;\n updatedAt?: number;\n}\n\nexport type EntityTypeSUBSCRIPTION = typeof EntityTypeSUBSCRIPTION[keyof typeof EntityTypeSUBSCRIPTION];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const EntityTypeSUBSCRIPTION = {\n subscription: 'subscription',\n} as const;\n\nexport interface SubscriptionResponse {\n id: string;\n object: EntityTypeSUBSCRIPTION;\n createdAt: number;\n topic: APITopic;\n triggers: TriggerResponse[];\n updatedAt?: number;\n}\n\nexport interface SubscriptionListResponse {\n object: ResponseTypeLIST;\n url: string;\n data: SubscriptionResponse[];\n start: number;\n end: number;\n total: number;\n}\n\nexport type Status = typeof Status[keyof typeof Status];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const Status = {\n success: 'success',\n failed: 'failed',\n} as const;\n\nexport type EntityTypeLOG = typeof EntityTypeLOG[keyof typeof EntityTypeLOG];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const EntityTypeLOG = {\n log: 'log',\n} as const;\n\nexport interface LogResponse {\n id: string;\n object: EntityTypeLOG;\n createdAt: number;\n topic: APITopic;\n status: Status;\n subscription: string;\n trigger: string;\n requestID: string;\n}\n\nexport interface BaseEntityListResponseLogResponse {\n object: ResponseTypeLIST;\n url: string;\n data: LogResponse[];\n start: number;\n end: number;\n total: number;\n}\n\nexport type SubscriptionLogsResponse = BaseEntityListResponseLogResponse;\n\nexport interface ListSubscriptionLogsRequest {\n /**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\n limit?: number;\n /**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\n skip?: number;\n /** Specifies the order in which to sort the results. */\n order?: PrismaSortOrder;\n /** Specifies the topic of the subscription logs */\n topic?: APITopic;\n /** Specifies the status of the subscription logs */\n status?: Status;\n /** Specifies the object ID of the object related to triggered notification */\n object?: string;\n /** Specifies the subscription ID */\n subscription?: string;\n /** Specifies the trigger ID */\n trigger?: string;\n /** Specifies the request ID */\n requestID?: string;\n}\n\nexport type GetSubscriptionResponse = SubscriptionResponse;\n\nexport type CreateSubscriptionResponse = SubscriptionResponse;\n\nexport interface CreateTriggerRequest {\n /** Specifies the target of the trigger */\n target: string;\n /** Specifies the type of the trigger */\n type: APITriggerType;\n /** Specifies the subscription ID */\n subscription?: string;\n}\n\nexport interface CreateSubscriptionRequest {\n /** Specifies the topic of the subscription */\n topic: APITopic;\n /** Specifies the triggers of the subscription */\n triggers: CreateTriggerRequest[];\n}\n\nexport interface SubscriptionDeleteResponse {\n id: string;\n object: EntityTypeSUBSCRIPTION;\n deleted: boolean;\n}\n\nexport interface BaseEntityListResponseTriggerResponse {\n object: ResponseTypeLIST;\n url: string;\n data: TriggerResponse[];\n start: number;\n end: number;\n total: number;\n}\n\nexport type TriggerListResponse = BaseEntityListResponseTriggerResponse;\n\nexport type GetTriggerResponse = TriggerResponse;\n\nexport type CreateTriggerResponse = TriggerResponse;\n\nexport interface TriggerDeleteResponse {\n id: string;\n object: EntityTypeTRIGGER;\n deleted: boolean;\n}\n\n/**\n * Specific transaction details based on its type\n */\nexport type TransactionIntentDetails = ZKSyncDetails | AccountAbstractionV6Details | AccountAbstractionV8Details | AccountAbstractionV9Details | StandardDetails;\n\nexport interface TransactionIntent {\n id: string;\n object: EntityTypeTRANSACTIONINTENT;\n createdAt: number;\n /** The unix timestamp in seconds when the transactionIntent was created. */\n updatedAt: number;\n /** The chain ID. */\n chainId: number;\n /** The transaction abstraction type */\n abstractionType: TransactionAbstractionType;\n /** Transition of statuses the transaction has gone through. */\n transitions?: Transition[];\n /** Specific transaction details based on its type */\n details?: TransactionIntentDetails;\n /** @deprecated */\n userOperationHash?: string;\n /** @deprecated */\n userOperation?: unknown;\n response?: ResponseResponse;\n interactions?: Interaction[];\n nextAction?: NextActionResponse;\n /** The policy ID (starts with pol_). */\n policy?: EntityIdResponse;\n /** The player ID (starts with pla_). */\n player?: EntityIdResponse;\n /** The account ID. */\n account: EntityIdResponse;\n}\n\nexport type DeveloperAccountResponseTransactionIntentsItem = TransactionIntent | EntityIdResponse;\n\nexport interface DeveloperAccountResponse {\n id: string;\n object: EntityTypeDEVELOPERACCOUNT;\n createdAt: number;\n address: string;\n custodial: boolean;\n name?: string;\n transactionIntents?: DeveloperAccountResponseTransactionIntentsItem[];\n}\n\nexport interface DeveloperAccountListResponse {\n object: ResponseTypeLIST;\n url: string;\n data: DeveloperAccountResponse[];\n start: number;\n end: number;\n total: number;\n}\n\n/**\n */\nexport type DeveloperAccountResponseExpandable = typeof DeveloperAccountResponseExpandable[keyof typeof DeveloperAccountResponseExpandable];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const DeveloperAccountResponseExpandable = {\n transactionIntents: 'transactionIntents',\n} as const;\n\nexport interface DeveloperAccountListQueries {\n /**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\n limit?: number;\n /**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\n skip?: number;\n /** Specifies the order in which to sort the results. */\n order?: PrismaSortOrder;\n /** Specifies the fields to expand in the response. */\n expand?: DeveloperAccountResponseExpandable[];\n /** Specifies whether to include deleted dev accounts. */\n deleted?: boolean;\n}\n\nexport interface CreateDeveloperAccountCreateRequest {\n /** The address of the wallet that has deposited funds in the paymaster. */\n address?: string;\n /** Signature to verify the account ownership. */\n signature?: string;\n /** The name of the account. */\n name?: string;\n}\n\nexport type EntityTypeSIGNATURE = typeof EntityTypeSIGNATURE[keyof typeof EntityTypeSIGNATURE];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const EntityTypeSIGNATURE = {\n signature: 'signature',\n} as const;\n\nexport interface SignPayloadResponse {\n object: EntityTypeSIGNATURE;\n account: string;\n address: string;\n hash: string;\n signature: string;\n}\n\nexport interface TypedDomainData {\n /** The chain ID. */\n chainId: number;\n /** The user readable name of signing domain, i.e. the name of the DApp or the protocol.. */\n name?: string;\n /** The current major version of the signing domain. Signatures from different versions are not compatible. */\n version?: string;\n /** The address of the contract that will verify the signature. The user-agent may do contract specific phishing prevention. */\n verifyingContract?: string;\n /** An disambiguating salt for the protocol. This can be used as a domain separator of last resort. */\n salt?: string;\n}\n\nexport interface TypedDataField {\n name: string;\n type: string;\n}\n\nexport type SignPayloadRequestTypes = {[key: string]: TypedDataField[]};\n\nexport type SignPayloadRequestValue = {[key: string]: unknown};\n\nexport interface SignPayloadRequest {\n /** Domain. Specific to the dApp. */\n domain: TypedDomainData;\n types: SignPayloadRequestTypes;\n primaryType: string;\n value: SignPayloadRequestValue;\n /** Hash to verify and that will be signed */\n hash?: string;\n}\n\nexport interface UpdateDeveloperAccountCreateRequest {\n /** The name of the account. */\n name?: string;\n}\n\nexport interface DeveloperAccountGetMessageResponse {\n message: string;\n address: string;\n}\n\nexport interface DeveloperAccountDeleteResponse {\n id: string;\n object: EntityTypeDEVELOPERACCOUNT;\n deleted: boolean;\n}\n\nexport type EntityTypeSESSION = typeof EntityTypeSESSION[keyof typeof EntityTypeSESSION];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const EntityTypeSESSION = {\n session: 'session',\n} as const;\n\nexport type SessionResponseTransactionIntentsItem = TransactionIntent | EntityIdResponse;\n\nexport interface SessionResponse {\n id: string;\n object: EntityTypeSESSION;\n createdAt: number;\n updatedAt: number;\n isActive: boolean;\n address: string;\n validAfter: string;\n validUntil: string;\n /** The account ID. */\n account: EntityIdResponse;\n whitelist: string[];\n limit: number;\n nextAction?: NextActionResponse;\n transactionIntents?: SessionResponseTransactionIntentsItem[];\n}\n\nexport interface SessionListResponse {\n object: ResponseTypeLIST;\n url: string;\n data: SessionResponse[];\n start: number;\n end: number;\n total: number;\n}\n\n/**\n * Contains list of the expandable fields for the session response\n */\nexport type SessionResponseExpandable = typeof SessionResponseExpandable[keyof typeof SessionResponseExpandable];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const SessionResponseExpandable = {\n transactionIntents: 'transactionIntents',\n} as const;\n\nexport interface SessionListQueries {\n /**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\n limit?: number;\n /**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\n skip?: number;\n /** Specifies the order in which to sort the results. */\n order?: PrismaSortOrder;\n /** The player ID (starts with pla_) */\n player: string;\n /** Specifies the fields to expand in the response. */\n expand?: SessionResponseExpandable[];\n}\n\nexport interface CreateSessionRequest {\n /** The address of the session key. */\n address: string;\n /** The chain ID. Must be a [supported chain](/development/chains). */\n chainId: number;\n /** If no account exists for a given player, create one with this address. */\n externalOwnerAddress?: string;\n /**\n * Maximum number of times the session key can be used.\n * @minimum 1\n */\n limit?: number;\n /** Set to `true` to indicate that the transactionIntent request should be resolved as soon as possible, after the transactionIntent is created and simulated and before it arrives on chain. */\n optimistic?: boolean;\n /** ID of the Policy that defines the gas sponsorship strategy (starts with `pol_`). If no Policy is provided, the own Account native token funds will be used to pay for gas. */\n policy?: string;\n /** The unix timestamp in seconds when the session key becomes valid. */\n validAfter: number;\n /** The unix timestamp in seconds when the session key expires. */\n validUntil: number;\n /** The list of whitelisted addresses (contracts the session key can interact with). */\n whitelist?: string[];\n /** The player ID (starts with pla_). */\n player?: string;\n /** ID of the Account this TransactionIntent is executed with, if one exists (starts with `acc_` or `dac_`).\n\nWhen providing a Player and ChainID, you can omit this parameter. */\n account?: string;\n}\n\nexport interface RevokeSessionRequest {\n /** The address of the session key to revoke. */\n address: string;\n /** ID of the Policy that defines the gas sponsorship strategy (starts with `pol_`). If no Policy is provided, the own Account native token funds will be used to pay for gas. */\n policy?: string;\n /** Whether the transactionIntent is optimistic (resolve before it arrives on chain) or not. */\n optimistic?: boolean;\n /** The chain ID. Must be a [supported chain](/development/chains). */\n chainId: number;\n /** The player ID (starts with pla_). */\n player?: string;\n /** ID of the Account this TransactionIntent is executed with, if one exists (starts with `acc_` or `dac_`).\n\nWhen providing a Player and ChainID, you can omit this parameter. */\n account?: string;\n}\n\nexport type PolicyRuleTypeCONTRACT = typeof PolicyRuleTypeCONTRACT[keyof typeof PolicyRuleTypeCONTRACT];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const PolicyRuleTypeCONTRACT = {\n contract_functions: 'contract_functions',\n} as const;\n\nexport type PolicyRuleType = typeof PolicyRuleType[keyof typeof PolicyRuleType];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const PolicyRuleType = {\n contract_functions: 'contract_functions',\n account_functions: 'account_functions',\n rate_limit: 'rate_limit',\n} as const;\n\nexport type EntityTypePOLICYRULE = typeof EntityTypePOLICYRULE[keyof typeof EntityTypePOLICYRULE];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const EntityTypePOLICYRULE = {\n policyRule: 'policyRule',\n} as const;\n\nexport interface AbiType {\n name?: string;\n type?: string;\n indexed?: boolean;\n internalType?: unknown;\n components?: AbiType[];\n}\n\n/**\n * From T, pick a set of properties whose keys are in the union K\n */\nexport interface PickJsonFragmentTypeExcludeKeyofJsonFragmentTypeComponents {\n name?: string;\n type?: string;\n indexed?: boolean;\n internalType?: unknown;\n}\n\n/**\n * From T, pick a set of properties whose keys are in the union K\n */\nexport interface PickJsonFragmentExcludeKeyofJsonFragmentInputsOrOutputs {\n name?: string;\n type?: string;\n anonymous?: boolean;\n payable?: boolean;\n constant?: boolean;\n stateMutability?: string;\n gas?: string;\n}\n\nexport interface Abi {\n name?: string;\n type?: string;\n anonymous?: boolean;\n payable?: boolean;\n constant?: boolean;\n stateMutability?: string;\n gas?: string;\n inputs?: AbiType[];\n outputs?: AbiType[];\n}\n\nexport type EntityTypeCONTRACT = typeof EntityTypeCONTRACT[keyof typeof EntityTypeCONTRACT];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const EntityTypeCONTRACT = {\n contract: 'contract',\n} as const;\n\nexport interface ContractResponse {\n id: string;\n object: EntityTypeCONTRACT;\n createdAt: number;\n /** @nullable */\n name: string | null;\n /** The chain ID. */\n chainId: number;\n address: string;\n deleted: boolean;\n abi: Abi[];\n publicVerification: boolean;\n}\n\n/**\n * From T, pick a set of properties whose keys are in the union K\n */\nexport interface PickContractResponseId {\n id: string;\n}\n\nexport type ContractPolicyRuleResponseContract = ContractResponse | PickContractResponseId;\n\nexport interface ContractPolicyRuleResponse {\n id: string;\n object: EntityTypePOLICYRULE;\n createdAt: number;\n type: PolicyRuleTypeCONTRACT;\n contract?: ContractPolicyRuleResponseContract;\n functionName?: string;\n wildcard: boolean;\n}\n\nexport type PolicyRuleTypeACCOUNT = typeof PolicyRuleTypeACCOUNT[keyof typeof PolicyRuleTypeACCOUNT];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const PolicyRuleTypeACCOUNT = {\n account_functions: 'account_functions',\n} as const;\n\nexport interface AccountPolicyRuleResponse {\n id: string;\n object: EntityTypePOLICYRULE;\n createdAt: number;\n type: PolicyRuleTypeACCOUNT;\n}\n\nexport type PolicyRateLimitGASPERTRANSACTION = typeof PolicyRateLimitGASPERTRANSACTION[keyof typeof PolicyRateLimitGASPERTRANSACTION];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const PolicyRateLimitGASPERTRANSACTION = {\n gas_per_transaction: 'gas_per_transaction',\n} as const;\n\nexport type PolicyRuleTypeRATELIMIT = typeof PolicyRuleTypeRATELIMIT[keyof typeof PolicyRuleTypeRATELIMIT];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const PolicyRuleTypeRATELIMIT = {\n rate_limit: 'rate_limit',\n} as const;\n\nexport type PolicyRateLimit = typeof PolicyRateLimit[keyof typeof PolicyRateLimit];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const PolicyRateLimit = {\n gas_per_transaction: 'gas_per_transaction',\n gas_per_interval: 'gas_per_interval',\n count_per_interval: 'count_per_interval',\n} as const;\n\nexport interface GasPerTransactionLimitPolicyRuleResponse {\n id: string;\n object: EntityTypePOLICYRULE;\n createdAt: number;\n type: PolicyRuleTypeRATELIMIT;\n functionName: PolicyRateLimitGASPERTRANSACTION;\n gasLimit: string;\n}\n\nexport type PolicyRateLimitGASPERINTERVAL = typeof PolicyRateLimitGASPERINTERVAL[keyof typeof PolicyRateLimitGASPERINTERVAL];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const PolicyRateLimitGASPERINTERVAL = {\n gas_per_interval: 'gas_per_interval',\n} as const;\n\nexport type TimeIntervalType = typeof TimeIntervalType[keyof typeof TimeIntervalType];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const TimeIntervalType = {\n minute: 'minute',\n hour: 'hour',\n day: 'day',\n week: 'week',\n month: 'month',\n} as const;\n\nexport interface GasPerIntervalLimitPolicyRuleResponse {\n id: string;\n object: EntityTypePOLICYRULE;\n createdAt: number;\n type: PolicyRuleTypeRATELIMIT;\n functionName: PolicyRateLimitGASPERINTERVAL;\n gasLimit: string;\n timeIntervalType: TimeIntervalType;\n timeIntervalValue: number;\n}\n\nexport type PolicyRateLimitCOUNTPERINTERVAL = typeof PolicyRateLimitCOUNTPERINTERVAL[keyof typeof PolicyRateLimitCOUNTPERINTERVAL];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const PolicyRateLimitCOUNTPERINTERVAL = {\n count_per_interval: 'count_per_interval',\n} as const;\n\nexport interface CountPerIntervalLimitPolicyRuleResponse {\n id: string;\n object: EntityTypePOLICYRULE;\n createdAt: number;\n type: PolicyRuleTypeRATELIMIT;\n functionName: PolicyRateLimitCOUNTPERINTERVAL;\n countLimit: number;\n timeIntervalType: TimeIntervalType;\n timeIntervalValue: number;\n}\n\nexport type PolicyRuleResponse = ContractPolicyRuleResponse | AccountPolicyRuleResponse | GasPerTransactionLimitPolicyRuleResponse | GasPerIntervalLimitPolicyRuleResponse | CountPerIntervalLimitPolicyRuleResponse;\n\nexport interface PolicyRuleListResponse {\n object: ResponseTypeLIST;\n url: string;\n data: PolicyRuleResponse[];\n start: number;\n end: number;\n total: number;\n}\n\n/**\n */\nexport type PolicyRuleListQueriesExpandItem = typeof PolicyRuleListQueriesExpandItem[keyof typeof PolicyRuleListQueriesExpandItem];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const PolicyRuleListQueriesExpandItem = {\n contract: 'contract',\n} as const;\n\nexport interface PolicyRuleListQueries {\n /**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\n limit?: number;\n /**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\n skip?: number;\n /** Specifies the order in which to sort the results. */\n order?: PrismaSortOrder;\n /** Specifies the fields to expand in the response. */\n expand?: PolicyRuleListQueriesExpandItem[];\n /** Specifies the unique policy ID (starts with pol_). */\n policy: string;\n}\n\nexport interface CreatePolicyRuleRequest {\n /** The type of rule to add. */\n type: PolicyRuleType;\n /** Name of the function in the contract to allow. If you want to allow all functions, use the wildcard 'All functions'. */\n functionName?: string;\n /** The contract ID you want to interact with. Must have been added to Openfort first, starts with `con_`. */\n contract?: string;\n /** When using `contract_functions` type, set this to `true` to allow all contracts. */\n wildcard?: boolean;\n /** Gas limit in WEI (i.e. factor 10^18). */\n gasLimit?: string;\n /** Number of times the function will be sponsored. */\n countLimit?: number;\n /** Time interval between sponsorships. */\n timeIntervalType?: TimeIntervalType;\n /** Time interval value. */\n timeIntervalValue?: number;\n /** The unique Policy ID to add the rule to (starts with pol_). */\n policy: string;\n}\n\nexport interface UpdatePolicyRuleRequest {\n /** The type of rule to add. */\n type: PolicyRuleType;\n /** Name of the function in the contract to allow. If you want to allow all functions, use the wildcard 'All functions'. */\n functionName?: string;\n /** The contract ID you want to interact with. Must have been added to Openfort first, starts with `con_`. */\n contract?: string;\n /** When using `contract_functions` type, set this to `true` to allow all contracts. */\n wildcard?: boolean;\n /** Gas limit in WEI (i.e. factor 10^18). */\n gasLimit?: string;\n /** Number of times the function will be sponsored. */\n countLimit?: number;\n /** Time interval between sponsorships. */\n timeIntervalType?: TimeIntervalType;\n /** Time interval value. */\n timeIntervalValue?: number;\n}\n\nexport interface PolicyRuleDeleteResponse {\n id: string;\n object: EntityTypePOLICYRULE;\n deleted: boolean;\n}\n\nexport type PolicyResponseTransactionIntentsItem = TransactionIntent | EntityIdResponse;\n\nexport type PolicyResponsePolicyRulesItem = PolicyRuleResponse | EntityIdResponse;\n\nexport interface PolicyResponse {\n id: string;\n object: EntityTypePOLICY;\n createdAt: number;\n /** @nullable */\n name: string | null;\n deleted: boolean;\n enabled: boolean;\n /** The chain ID. */\n chainId: number;\n paymaster?: EntityIdResponse;\n forwarderContract?: EntityIdResponse;\n strategy: PolicyStrategy;\n transactionIntents: PolicyResponseTransactionIntentsItem[];\n policyRules: PolicyResponsePolicyRulesItem[];\n}\n\nexport interface PolicyListResponse {\n object: ResponseTypeLIST;\n url: string;\n data: PolicyResponse[];\n start: number;\n end: number;\n total: number;\n}\n\n/**\n */\nexport type PolicyResponseExpandable = typeof PolicyResponseExpandable[keyof typeof PolicyResponseExpandable];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const PolicyResponseExpandable = {\n transactionIntents: 'transactionIntents',\n policyRules: 'policyRules',\n} as const;\n\nexport interface PolicyListQueries {\n /**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\n limit?: number;\n /**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\n skip?: number;\n /** Specifies the order in which to sort the results. */\n order?: PrismaSortOrder;\n /** Specifies the fields to expand in the response. */\n expand?: PolicyResponseExpandable[];\n /** Specifies the name of the policy. */\n name?: string;\n /** Specifies whether to include deleted policies. */\n deleted?: boolean;\n /** The chain ID of the policy. */\n chainId?: number;\n /** Specifies whether to include enabled policies. */\n enabled?: boolean;\n}\n\nexport interface PolicyStrategyRequest {\n /** The sponsor schema of the policy. */\n sponsorSchema: SponsorSchema;\n /** If the user pays in custom tokens, the contract ID (starts with con_) of the token contract. */\n tokenContract?: string;\n /** If the user pays in ERC20 tokens, this reflects either the exchange rate or the amount in WEI. */\n tokenContractAmount?: string;\n /** If the you want to use your own native tokens to pay for gas, specify the developer account ID (starts with dac_) */\n depositor?: string;\n}\n\nexport interface CreatePolicyRequest {\n /** Specifies the name of the policy. */\n name: string;\n /** The chain ID. Must be a [supported chain](/development/chains). */\n chainId: number;\n /** The sponsor schema of the policy. */\n strategy: PolicyStrategyRequest;\n /** The ID of the paymaster. */\n paymaster?: string;\n /** The ID of the forwarder contract. */\n forwarderContract?: string;\n}\n\nexport interface UpdatePolicyRequest {\n /** Specifies the name of the policy. */\n name?: string;\n /** The chain ID. Must be a [supported chain](/development/chains). */\n chainId?: number;\n /** The sponsor schema of the policy. */\n strategy?: PolicyStrategyRequest;\n /** The ID of the paymaster. */\n paymaster?: string;\n /** The ID of the forwarder contract. */\n forwarderContract?: string;\n /** Specifies whether to delete the policy. */\n deleted?: boolean;\n}\n\nexport interface PolicyDeleteResponse {\n id: string;\n object: EntityTypePOLICY;\n deleted: boolean;\n}\n\nexport interface MonthRange {\n start: number;\n end: number;\n}\n\nexport interface GasReportTransactionIntents {\n id: string;\n gasFee: string;\n gasPrice: string;\n gasUsed: string;\n gasFeeInUSD: string;\n}\n\nexport interface GasReport {\n period: MonthRange;\n averageTransactionFee: string;\n totalTransactionFeeInCustomTokens: string;\n totalTransactionFee: string;\n totalTransactionFeeInUSD: string;\n /** @deprecated */\n transactionIntents: GasReportTransactionIntents[];\n}\n\nexport interface GasReportListResponse {\n object: ResponseTypeLIST;\n url: string;\n data: GasReport[];\n start: number;\n end: number;\n total: number;\n}\n\nexport interface PolicyReportQueries {\n /**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\n limit?: number;\n /**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\n skip?: number;\n /** Specifies the order in which to sort the results. */\n order?: PrismaSortOrder;\n}\n\nexport interface GasReportTransactionIntentsListResponse {\n object: ResponseTypeLIST;\n url: string;\n data: GasReportTransactionIntents[];\n start: number;\n end: number;\n total: number;\n}\n\nexport interface PolicyReportTransactionIntentsQueries {\n /** The start date of the period in unix timestamp. */\n to: number;\n /** The end date of the period in unix timestamp. */\n from: number;\n}\n\nexport interface PolicyBalanceWithdrawResponse {\n policy: string;\n balance: string;\n contract: string;\n}\n\nexport interface WithdrawalPolicyRequest {\n /** ID of the Dev Account this TransactionIntent will send the specified amount of tokens to (starts with `dac_`). */\n account: string;\n /** Amount in WEI to withdraw (i.e. factor 10^18).. */\n amount: string;\n}\n\nexport type PlayerResponseTransactionIntentsItem = TransactionIntent | EntityIdResponse;\n\nexport type PlayerResponseAccountsItem = Account | EntityIdResponse;\n\nexport interface PlayerResponse {\n id: string;\n object: EntityTypePLAYER;\n createdAt: number;\n name: string;\n description?: string;\n metadata?: PlayerMetadata;\n transactionIntents?: PlayerResponseTransactionIntentsItem[];\n accounts?: PlayerResponseAccountsItem[];\n}\n\nexport interface PlayerListResponse {\n object: ResponseTypeLIST;\n url: string;\n data: PlayerResponse[];\n start: number;\n end: number;\n total: number;\n}\n\n/**\n */\nexport type PlayerResponseExpandable = typeof PlayerResponseExpandable[keyof typeof PlayerResponseExpandable];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const PlayerResponseExpandable = {\n transactionIntents: 'transactionIntents',\n accounts: 'accounts',\n} as const;\n\nexport interface PlayerListQueries {\n /**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\n limit?: number;\n /**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\n skip?: number;\n /** Specifies the order in which to sort the results. */\n order?: PrismaSortOrder;\n /** Specifies the fields to expand in the response. */\n expand?: PlayerResponseExpandable[];\n /** Filter by player name. */\n name?: string;\n}\n\nexport interface PlayerCreateRequest {\n /**\n * Specifies the player name.\n * @minLength 1\n * @maxLength 256\n */\n name?: string;\n /** Specifies the player description. */\n description?: string;\n /** Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format. Individual keys can be unset by posting an empty value to them. All keys can be unset by posting an empty value to metadata. */\n metadata?: PlayerMetadata;\n}\n\nexport interface PlayerUpdateRequest {\n /**\n * Specifies the player name.\n * @minLength 1\n * @maxLength 256\n */\n name?: string;\n /** Specifies the player description. */\n description?: string;\n /** Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format. Individual keys can be unset by posting an empty value to them. All keys can be unset by posting an empty value to metadata. */\n metadata?: PlayerMetadata;\n}\n\nexport interface PlayerDeleteResponse {\n id: string;\n object: EntityTypePLAYER;\n deleted: boolean;\n}\n\nexport interface PlayerTransferOwnershipRequest {\n /** ID of the Policy that defines the gas sponsorship strategy (starts with `pol_`). A policy must be provided. */\n policy: string;\n /** The chain ID. Must be a [supported chain](/development/chains). */\n chainId: number;\n /** The address of the new owner */\n newOwnerAddress: string;\n /** ID of the Player that has the Account you want to transfer ownership from (starts with `pla_`). */\n player?: string;\n}\n\nexport interface PlayerCancelTransferOwnershipRequest {\n /** ID of the Policy that defines the gas sponsorship strategy (starts with `pol_`). A policy must be provided. */\n policy: string;\n /** The chain ID. Must be a [supported chain](/development/chains). */\n chainId: number;\n}\n\nexport type EntityTypePAYMASTER = typeof EntityTypePAYMASTER[keyof typeof EntityTypePAYMASTER];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const EntityTypePAYMASTER = {\n paymaster: 'paymaster',\n} as const;\n\nexport type PaymasterResponseContext = { [key: string]: unknown };\n\nexport interface PaymasterResponse {\n id: string;\n object: EntityTypePAYMASTER;\n createdAt: number;\n address: string;\n url?: string;\n context?: PaymasterResponseContext;\n}\n\nexport type CreatePaymasterResponse = PaymasterResponse;\n\n/**\n * Specifies the context, that is, the arbitrary repositories that the specific paymaster may require\n */\nexport type CreatePaymasterRequestContext = { [key: string]: unknown };\n\nexport interface CreatePaymasterRequest {\n /** Specifies the address of the paymaster */\n address: string;\n /** Specifies the paymaster URL */\n url?: string;\n /** Specifies the context, that is, the arbitrary repositories that the specific paymaster may require */\n context?: CreatePaymasterRequestContext;\n /** Specifies the name of the paymaster */\n name?: string;\n}\n\nexport interface PagingQueries {\n /**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\n limit?: number;\n /**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\n skip?: number;\n /** Specifies the order in which to sort the results. */\n order?: PrismaSortOrder;\n}\n\nexport interface PaymasterDeleteResponse {\n id: string;\n object: EntityTypePAYMASTER;\n deleted: boolean;\n}\n\nexport type OnrampProvider = typeof OnrampProvider[keyof typeof OnrampProvider];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const OnrampProvider = {\n coinbase: 'coinbase',\n stripe: 'stripe',\n} as const;\n\n/**\n * Common fee structure for onramp operations\n */\nexport interface OnrampFee {\n type: string;\n amount: string;\n currency: string;\n}\n\nexport type OnrampSessionResponseQuote = {\n exchangeRate?: string;\n fees?: OnrampFee[];\n destinationNetwork?: string;\n destinationCurrency?: string;\n destinationAmount?: string;\n sourceCurrency?: string;\n sourceAmount?: string;\n};\n\n/**\n * Common unified response format for creating an onramp session.\nThis format is provider-agnostic.\n */\nexport interface OnrampSessionResponse {\n provider: OnrampProvider;\n sessionId?: string;\n clientSecret?: string;\n status?: string;\n onrampUrl: string;\n redirectUrl?: string;\n quote?: OnrampSessionResponseQuote;\n}\n\n/**\n * Common unified request format for creating an onramp session.\nThis format is provider-agnostic and will be adapted by each provider service.\n */\nexport interface OnrampSessionRequest {\n provider: OnrampProvider;\n destinationCurrency: string;\n destinationNetwork: string;\n destinationAddress: string;\n sourceAmount?: string;\n sourceCurrency?: string;\n redirectUrl?: string;\n country?: string;\n subdivision?: string;\n paymentMethod?: string;\n clientIp?: string;\n}\n\n/**\n * Common unified response format for getting an onramp quote.\nThis format is provider-agnostic.\n */\nexport interface OnrampQuoteResponse {\n provider: OnrampProvider;\n sourceAmount: string;\n sourceCurrency: string;\n destinationAmount: string;\n destinationCurrency: string;\n destinationNetwork: string;\n fees: OnrampFee[];\n exchangeRate: string;\n}\n\n/**\n * Response type for quote requests that can return either a single quote or multiple quotes.\n- Returns OnrampQuoteResponse when provider is specified\n- Returns OnrampQuoteResponse[] when provider is not specified\n */\nexport type OnrampQuotesResponse = OnrampQuoteResponse | OnrampQuoteResponse[];\n\n/**\n * Common unified request format for getting an onramp quote.\nThis format is provider-agnostic and will be adapted by each provider service.\nIf provider is specified, returns a single quote for that provider.\nIf provider is not specified, returns quotes from all available providers.\n */\nexport interface OnrampQuoteRequest {\n provider?: OnrampProvider;\n sourceCurrency: string;\n destinationCurrency: string;\n destinationNetwork: string;\n sourceAmount: string;\n paymentMethod?: string;\n country?: string;\n subdivision?: string;\n}\n\nexport interface Log {\n id: string;\n timestamp: string;\n event: string;\n request_body: unknown;\n status: number;\n response_time: number;\n response_data: unknown;\n}\n\nexport interface ProjectLogs {\n object: ResponseTypeLIST;\n url: string;\n data: Log[];\n start: number;\n end: number;\n total: number;\n}\n\nexport type EntityTypeFORWARDERCONTRACT = typeof EntityTypeFORWARDERCONTRACT[keyof typeof EntityTypeFORWARDERCONTRACT];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const EntityTypeFORWARDERCONTRACT = {\n forwarderContract: 'forwarderContract',\n} as const;\n\nexport interface ForwarderContractResponse {\n id: string;\n object: EntityTypeFORWARDERCONTRACT;\n createdAt: number;\n address: string;\n chainId: number;\n name?: string;\n}\n\nexport type CreateForwarderContractResponse = ForwarderContractResponse;\n\nexport interface CreateForwarderContractRequest {\n /** Specifies the address of the paymaster */\n address: string;\n /** The chain ID. Must be a [supported chain](/development/chains). */\n chainId: number;\n /** Specifies the name of the paymaster */\n name?: string;\n}\n\nexport interface ForwarderContractDeleteResponse {\n id: string;\n object: EntityTypeFORWARDERCONTRACT;\n deleted: boolean;\n}\n\nexport type TradeType = typeof TradeType[keyof typeof TradeType];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const TradeType = {\n EXACT_INPUT: 'EXACT_INPUT',\n EXACT_OUTPUT: 'EXACT_OUTPUT',\n} as const;\n\nexport interface CreateExchangeRequest {\n /** The chain ID. Must be a [supported chain](/development/chains). */\n chainId: number;\n /** The public address that will sign and submit the transaction. If you provide one of a `pla_...` or `acc_...` it will be converted to the corresponding address. */\n fromAddress: string;\n /** Token address or 'native' to sell */\n tokenInAddress: string;\n /** Token address or 'native' to buy */\n tokenOutAddress: string;\n /** Amount in the smallest unit of the token */\n amount: string;\n /** The type of trade, exact input or exact output */\n tradeType: TradeType;\n /** The percentage of slippage tolerance. Default = 0.1. Max = 50. Min = 0 */\n slippagePercent?: number;\n /** Maximum hops allowed in optimal route. Default is 2 */\n maxHops?: number;\n /** Latest time swap can execute. Default is 15 minutes */\n deadline?: number;\n /** ID of the Policy that defines the gas sponsorship strategy (starts with `pol_`). If no Policy is provided, the own Account native token funds will be used to pay for gas. */\n policy?: string;\n /** Set to `true` to indicate that the transactionIntent request should be resolved as soon as possible, after the transactionIntent is created and simulated and before it arrives on chain. */\n optimistic?: boolean;\n}\n\n/**\n * Type representing a token\n */\nexport interface Token {\n name?: string;\n symbol?: string;\n decimals: number;\n address: string;\n chainId: number;\n}\n\n/**\n * Interface representing a token amount\n */\nexport interface Amount {\n value: string;\n token: Token;\n}\n\n/**\n * Type representing the fees returned in the quote\n */\nexport interface Fee {\n amount: Amount;\n basisPoints: number;\n recipient: string;\n}\n\nexport interface QuoteExchangeResult {\n amount: Amount;\n amountWithMaxSlippage: Amount;\n slippage: number;\n fees: Fee[];\n estimatedTXGasFee: string;\n estimatedTXGasFeeUSD: string;\n estimatedTXGasFeeToken?: string;\n}\n\nexport type APITopicBALANCECONTRACT = typeof APITopicBALANCECONTRACT[keyof typeof APITopicBALANCECONTRACT];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const APITopicBALANCECONTRACT = {\n balancecontract: 'balance.contract',\n} as const;\n\nexport type EntityTypeEVENT = typeof EntityTypeEVENT[keyof typeof EntityTypeEVENT];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const EntityTypeEVENT = {\n event: 'event',\n} as const;\n\nexport interface ContractEventResponse {\n id: string;\n object: EntityTypeEVENT;\n createdAt: number;\n topic: APITopicBALANCECONTRACT;\n threshold: string;\n contract: EntityIdResponse;\n functionName: string;\n functionArgs: string[];\n}\n\nexport type APITopicBALANCEDEVACCOUNT = typeof APITopicBALANCEDEVACCOUNT[keyof typeof APITopicBALANCEDEVACCOUNT];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const APITopicBALANCEDEVACCOUNT = {\n balancedev_account: 'balance.dev_account',\n} as const;\n\nexport interface AccountEventResponse {\n id: string;\n object: EntityTypeEVENT;\n createdAt: number;\n topic: APITopicBALANCEDEVACCOUNT;\n threshold: string;\n developerAccount: EntityIdResponse;\n chainId: number;\n}\n\nexport type APITopicBALANCEPROJECT = typeof APITopicBALANCEPROJECT[keyof typeof APITopicBALANCEPROJECT];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const APITopicBALANCEPROJECT = {\n balanceproject: 'balance.project',\n} as const;\n\nexport interface BalanceEventResponse {\n id: string;\n object: EntityTypeEVENT;\n createdAt: number;\n topic: APITopicBALANCEPROJECT;\n threshold: string;\n}\n\nexport type APITopicTRANSACTIONSUCCESSFUL = typeof APITopicTRANSACTIONSUCCESSFUL[keyof typeof APITopicTRANSACTIONSUCCESSFUL];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const APITopicTRANSACTIONSUCCESSFUL = {\n transaction_intentsuccessful: 'transaction_intent.successful',\n} as const;\n\nexport interface TransactionConfirmedEventResponse {\n id: string;\n object: EntityTypeEVENT;\n createdAt: number;\n topic: APITopicTRANSACTIONSUCCESSFUL;\n numberOfBlocks: number;\n}\n\nexport type EventResponse = ContractEventResponse | AccountEventResponse | BalanceEventResponse | TransactionConfirmedEventResponse;\n\nexport interface EventListResponse {\n object: ResponseTypeLIST;\n url: string;\n data: EventResponse[];\n start: number;\n end: number;\n total: number;\n}\n\nexport interface EventListQueries {\n /**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\n limit?: number;\n /**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\n skip?: number;\n /** Specifies the order in which to sort the results. */\n order?: PrismaSortOrder;\n /** Specifies the name of the event */\n name?: string;\n /** Specifies if display deleted events */\n deleted?: boolean;\n}\n\nexport type GetEventResponse = EventResponse;\n\nexport type CreateEventResponse = EventResponse;\n\nexport interface CreateEventRequest {\n /** Specifies the name of the event */\n name: string;\n /** Specifies the type of the event (transaction_intent.successful, balance.project, balance.contract, balance.dev_account) */\n topic: APITopic;\n /** Specifies the contract id (if the event is a contract event) */\n contract?: string;\n /** Specifies the function arguments (if the event is a contract event) */\n functionArgs?: string[];\n /** Specifies the function name (if the event is a contract event) */\n functionName?: string;\n /** Specifies the developer account id (if the event is a developer account event) */\n developerAccount?: string;\n /** Specifies the chain id (if the event is a developer account event) */\n chainId?: number;\n /** Threshold for the event (if the event is a contract, dev account or project event) */\n threshold?: string;\n /** Specifies the number of confirmations required for the event to trigger */\n numberOfBlocks?: number;\n}\n\nexport interface EventDeleteResponse {\n id: string;\n object: EntityTypeEVENT;\n deleted: boolean;\n}\n\nexport interface EmbeddedResponse {\n share: string;\n accountType: string;\n address: string;\n chainId: number;\n deviceId?: string;\n}\n\nexport type EmbeddedNextActionResponseNextAction = typeof EmbeddedNextActionResponseNextAction[keyof typeof EmbeddedNextActionResponseNextAction];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const EmbeddedNextActionResponseNextAction = {\n RECOVER: 'RECOVER',\n REGISTER: 'REGISTER',\n} as const;\n\nexport interface EmbeddedNextActionResponse {\n nextAction: EmbeddedNextActionResponseNextAction;\n player: string;\n embedded?: EmbeddedResponse;\n}\n\nexport interface InitEmbeddedRequest {\n chainId: number;\n}\n\nexport interface EmbeddedV2Response {\n share?: string;\n accountType: string;\n implementationType?: string;\n implementationAddress?: string;\n factoryAddress?: string;\n salt?: string;\n address: string;\n ownerAddress: string;\n chainType: string;\n chainId?: number;\n device?: string;\n account: string;\n signer: string;\n}\n\nexport interface RegisterEmbeddedRequest {\n chainId: number;\n address: string;\n share: string;\n signerUuid?: string;\n}\n\nexport interface SwitchChainRequest {\n chainId: number;\n deviceId: string;\n}\n\nexport interface ExportedEmbeddedRequest {\n address: string;\n}\n\nexport type EntityTypeDEVICE = typeof EntityTypeDEVICE[keyof typeof EntityTypeDEVICE];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const EntityTypeDEVICE = {\n device: 'device',\n} as const;\n\nexport interface DeviceResponse {\n id: string;\n object: EntityTypeDEVICE;\n createdAt: number;\n account: string;\n share: string;\n isPrimary: boolean;\n}\n\nexport interface BaseEntityListResponseDeviceResponse {\n object: ResponseTypeLIST;\n url: string;\n data: DeviceResponse[];\n start: number;\n end: number;\n total: number;\n}\n\nexport type DeviceListResponse = BaseEntityListResponseDeviceResponse;\n\nexport interface DeviceListQueries {\n /**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\n limit?: number;\n /**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\n skip?: number;\n /** Specifies the order in which to sort the results. */\n order?: PrismaSortOrder;\n /** Specifies the unique account ID (starts with acc_) */\n account: string;\n}\n\nexport type GetDeviceResponse = DeviceResponse;\n\nexport type CreateDeviceResponse = DeviceResponse;\n\nexport interface CreateDeviceRequest {\n /** Specifies the unique account ID (starts with acc_) */\n account: string;\n /** Specifies the share repositories */\n share: string;\n}\n\nexport interface ContractListResponse {\n object: ResponseTypeLIST;\n url: string;\n data: ContractResponse[];\n start: number;\n end: number;\n total: number;\n}\n\nexport interface ContractListQueries {\n /**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\n limit?: number;\n /**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\n skip?: number;\n /** Specifies the order in which to sort the results. */\n order?: PrismaSortOrder;\n /** Specifies the name of the contract. */\n name?: string;\n /** Specifies whether to include deleted contracts. */\n deleted?: boolean;\n /** The chain ID of the contract. */\n chainId?: number;\n /** Specifies the address of the contract. */\n address?: string;\n}\n\nexport interface CreateContractRequest {\n /** Specifies the name of the contract (Only for display purposes). */\n name: string;\n /** Specifies the chain ID of the contract. Must be a [supported chain](/development/chains). */\n chainId: number;\n /** Specifies the address of the contract. */\n address: string;\n /** Specifies the ABI of the contract. */\n abi?: Abi[];\n /** Specifies whether to verify the contract publicly. */\n publicVerification?: boolean;\n}\n\nexport interface UpdateContractRequest {\n /** Specifies the name of the contract (Only for display purposes). */\n name?: string;\n /** Specifies the chain ID of the contract. Must be a [supported chain](/development/chains). */\n chainId?: number;\n /** Specifies whether to delete the contract. */\n deleted?: boolean;\n /** Specifies the address of the contract. */\n address?: string;\n /** Specifies the ABI of the contract. */\n abi?: Abi[];\n /** Specifies whether to verify the contract publicly. */\n publicVerification?: boolean;\n}\n\nexport type EntityTypeREADCONTRACT = typeof EntityTypeREADCONTRACT[keyof typeof EntityTypeREADCONTRACT];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const EntityTypeREADCONTRACT = {\n readContract: 'readContract',\n} as const;\n\nexport interface ContractReadResponse {\n id: string;\n object: EntityTypeREADCONTRACT;\n createdAt: number;\n functionName: string;\n result: unknown;\n}\n\nexport interface ContractReadQueries {\n /** The function name of the contract. */\n functionName: string;\n /** The function arguments of the contract, in string format. Accepts pla_, con_ and acc_ IDs. */\n functionArgs?: unknown[];\n}\n\nexport interface ContractDeleteResponse {\n id: string;\n object: EntityTypeCONTRACT;\n deleted: boolean;\n}\n\nexport type AccountResponseTransactionIntentsItem = TransactionIntent | EntityIdResponse;\n\nexport type AccountResponsePlayer = EntityIdResponse | Player;\n\nexport interface AccountResponse {\n id: string;\n object: EntityTypeACCOUNT;\n createdAt: number;\n address: string;\n ownerAddress: string;\n deployed: boolean;\n custodial: boolean;\n embeddedSigner: boolean;\n /** The chain ID. */\n chainId: number;\n accountType: string;\n pendingOwnerAddress?: string;\n transactionIntents?: AccountResponseTransactionIntentsItem[];\n player: AccountResponsePlayer;\n}\n\nexport interface AccountListResponse {\n object: ResponseTypeLIST;\n url: string;\n data: AccountResponse[];\n start: number;\n end: number;\n total: number;\n}\n\n/**\n */\nexport type AccountResponseExpandable = typeof AccountResponseExpandable[keyof typeof AccountResponseExpandable];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const AccountResponseExpandable = {\n player: 'player',\n transactionIntents: 'transactionIntents',\n} as const;\n\nexport interface AccountListQueries {\n /**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\n limit?: number;\n /**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\n skip?: number;\n /** Specifies the order in which to sort the results. */\n order?: PrismaSortOrder;\n /** The chain ID. Must be a [supported chain](/development/chains). */\n chainId?: number;\n /** Specifies the unique player ID (starts with pla_) */\n player?: string;\n /** Specifies the address of the account */\n address?: string;\n /** Specifies the fields to expand in the response. */\n expand?: AccountResponseExpandable[];\n}\n\nexport interface CreateAccountRequest {\n /** The chain ID. Must be a [supported chain](/development/chains). */\n chainId: number;\n /** Use this parameter to create a new Account for Player with the provided owner address. */\n externalOwnerAddress?: string;\n /** The type of smart account that will be created (e.g. UpgradeableV6, UpgradeableV5, ZKSyncUpgradeableV2). Defaults to UpgradeableV6. */\n accountType?: string;\n /** For account types that support social recovery, wether to enable Openfort as guardian or not. Defaults to false. */\n defaultGuardian?: boolean;\n /** ID of the player this account belongs to (starts with `pla_`). If none is provided, a new player will be created. */\n player?: string;\n}\n\nexport interface TransferOwnershipRequest {\n /** The address of the new owner */\n newOwnerAddress: string;\n /** ID of the Policy that defines the gas sponsorship strategy (starts with `pol_`). A policy must be provided. */\n policy: string;\n}\n\nexport interface CancelTransferOwnershipRequest {\n /** ID of the Policy that defines the gas sponsorship strategy (starts with `pol_`). A policy must be provided. */\n policy: string;\n}\n\nexport interface DeployRequest {\n /** The policy ID (starts with pol_) */\n policy: string;\n}\n\nexport interface StartRecoveryRequest {\n /** Address of the new owner */\n newOwnerAddress: string;\n /** The policy ID (starts with pol_) */\n policy: string;\n}\n\nexport interface CompleteRecoveryRequest {\n /** Address of the new owner */\n newOwnerAddress: string;\n /** Signatures by the guardians */\n signatures?: string[];\n /** The policy ID (starts with pol_) */\n policy: string;\n}\n\nexport type AuthProviderResponseV2 = typeof AuthProviderResponseV2[keyof typeof AuthProviderResponseV2];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const AuthProviderResponseV2 = {\n credential: 'credential',\n email: 'email',\n wallet: 'wallet',\n google: 'google',\n apple: 'apple',\n twitter: 'twitter',\n discord: 'discord',\n facebook: 'facebook',\n custom: 'custom',\n oidc: 'oidc',\n siwe: 'siwe',\n} as const;\n\nexport interface LinkedAccountResponseV2 {\n provider: AuthProviderResponseV2;\n createdAt: number;\n updatedAt: number;\n accountId?: string;\n chainType?: string;\n connectorType?: string;\n walletClientType?: string;\n}\n\nexport interface AuthUserResponse {\n id: string;\n createdAt: number;\n name: string;\n /** @nullable */\n email: string | null;\n emailVerified: boolean;\n /** @nullable */\n phoneNumber: string | null;\n phoneNumberVerified: boolean;\n isAnonymous?: boolean;\n linkedAccounts: LinkedAccountResponseV2[];\n}\n\nexport interface BaseEntityListResponseAuthUserResponse {\n object: ResponseTypeLIST;\n url: string;\n data: AuthUserResponse[];\n start: number;\n end: number;\n total: number;\n}\n\nexport type UserListResponse = BaseEntityListResponseAuthUserResponse;\n\nexport interface UserListQueries {\n /**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\n limit?: number;\n /**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\n skip?: number;\n /** Specifies the order in which to sort the results. */\n order?: PrismaSortOrder;\n /** Filter by user name. */\n name?: string;\n /** Filter by external user ID. */\n externalUserId?: string;\n}\n\nexport interface BaseDeleteEntityResponseEntityTypePLAYER {\n id: string;\n object: EntityTypePLAYER;\n deleted: boolean;\n}\n\nexport type UserDeleteResponse = BaseDeleteEntityResponseEntityTypePLAYER;\n\nexport interface SmartAccountData {\n implementationType: string;\n factoryAddress?: string;\n implementationAddress: string;\n salt?: string;\n deployedTx?: string;\n deployedAt?: number;\n active: boolean;\n}\n\nexport interface PasskeyEnv {\n name?: string;\n os?: string;\n osVersion?: string;\n device?: string;\n}\n\nexport interface RecoveryMethodDetails {\n passkeyId?: string;\n passkeyEnv?: PasskeyEnv;\n}\n\n/**\n * Indicates key custody: \"Developer\" for server-managed keys (WALLTEE), \"User\" for user-managed keys (DB).\n */\nexport type PregenerateAccountResponseCustody = typeof PregenerateAccountResponseCustody[keyof typeof PregenerateAccountResponseCustody];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const PregenerateAccountResponseCustody = {\n Developer: 'Developer',\n User: 'User',\n} as const;\n\nexport interface PregenerateAccountResponse {\n id: string;\n user: string;\n accountType: string;\n address: string;\n ownerAddress?: string;\n chainType: string;\n chainId?: number;\n createdAt: number;\n updatedAt: number;\n smartAccount?: SmartAccountData;\n recoveryMethod?: string;\n recoveryMethodDetails?: RecoveryMethodDetails;\n /** Indicates key custody: \"Developer\" for server-managed keys (WALLTEE), \"User\" for user-managed keys (DB). */\n custody: PregenerateAccountResponseCustody;\n /** The recovery share for the user's embedded signer.\nThis should be stored securely and provided to the user for account recovery. */\n recoveryShare: string;\n}\n\n/**\n * Enum of the supporting third party auth providers.\n */\nexport type ThirdPartyOAuthProvider = typeof ThirdPartyOAuthProvider[keyof typeof ThirdPartyOAuthProvider];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const ThirdPartyOAuthProvider = {\n accelbyte: 'accelbyte',\n firebase: 'firebase',\n lootlocker: 'lootlocker',\n playfab: 'playfab',\n supabase: 'supabase',\n custom: 'custom',\n oidc: 'oidc',\n 'better-auth': 'better-auth',\n} as const;\n\n/**\n * The type of account to pregenerate. \"Externally Owned Account\", \"Smart Account\" or \"Delegated Account\".\nDefaults to \"Smart Account\".\n */\nexport type PregenerateUserRequestV2AccountType = typeof PregenerateUserRequestV2AccountType[keyof typeof PregenerateUserRequestV2AccountType];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const PregenerateUserRequestV2AccountType = {\n Externally_Owned_Account: 'Externally Owned Account',\n Smart_Account: 'Smart Account',\n Delegated_Account: 'Delegated Account',\n} as const;\n\n/**\n * The chain type. \"EVM\" or \"SVM\". Defaults to \"EVM\".\n */\nexport type PregenerateUserRequestV2ChainType = typeof PregenerateUserRequestV2ChainType[keyof typeof PregenerateUserRequestV2ChainType];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const PregenerateUserRequestV2ChainType = {\n EVM: 'EVM',\n SVM: 'SVM',\n} as const;\n\nexport interface PregenerateUserRequestV2 {\n /** The email address of the user to pregenerate.\nRequired if thirdPartyUserId is not provided. */\n email?: string;\n /** The third-party user ID from an external auth provider (Firebase, Supabase, etc.).\nRequired if email is not provided. */\n thirdPartyUserId?: string;\n /** The third-party auth provider. Required when thirdPartyUserId is provided. */\n thirdPartyProvider?: ThirdPartyOAuthProvider;\n /** The type of account to pregenerate. \"Externally Owned Account\", \"Smart Account\" or \"Delegated Account\".\nDefaults to \"Smart Account\". */\n accountType?: PregenerateUserRequestV2AccountType;\n /** The chain type. \"EVM\" or \"SVM\". Defaults to \"EVM\". */\n chainType?: PregenerateUserRequestV2ChainType;\n /** The chain ID. Required for Smart Account and Delegated Account types.\nMust be a [supported chain](/development/chains). */\n chainId?: number;\n /** The implementation type for Smart Account or Delegated Account (e.g. Calibur, UpgradeableV6).\nRequired for Smart Account and Delegated Account types. */\n implementationType?: string;\n}\n\nexport interface RecoverV2Response {\n id: string;\n account: string;\n signerAddress: string;\n signer: string;\n share: string;\n isPrimary: boolean;\n createdAt: string;\n user: string;\n}\n\nexport interface RecoverV2EmbeddedRequest {\n account: string;\n}\n\nexport interface RegisterEmbeddedV2Request {\n account: string;\n share: string;\n}\n\n/**\n * The type of smart account that will be created. \"Externally Owned Account\", \"Smart Account\" or \"Delegated Account\".\n */\nexport type CreateEmbeddedRequestAccountType = typeof CreateEmbeddedRequestAccountType[keyof typeof CreateEmbeddedRequestAccountType];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const CreateEmbeddedRequestAccountType = {\n Externally_Owned_Account: 'Externally Owned Account',\n Smart_Account: 'Smart Account',\n Delegated_Account: 'Delegated Account',\n} as const;\n\n/**\n * The chain type. \"EVM\" or \"SVM\".\n */\nexport type CreateEmbeddedRequestChainType = typeof CreateEmbeddedRequestChainType[keyof typeof CreateEmbeddedRequestChainType];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const CreateEmbeddedRequestChainType = {\n EVM: 'EVM',\n SVM: 'SVM',\n} as const;\n\nexport interface CreateEmbeddedRequest {\n /** The type of smart account that will be created. \"Externally Owned Account\", \"Smart Account\" or \"Delegated Account\". */\n accountType: CreateEmbeddedRequestAccountType;\n /** The chain type. \"EVM\" or \"SVM\". */\n chainType: CreateEmbeddedRequestChainType;\n /** The wallet address. For EOA: the EOA address. For Smart Account: the owner address (EOA will be created with this address). For Delegated Account: the address for both EOA and Delegated Account. */\n address: string;\n /** The chain ID. Must be a [supported chain](/development/chains). Required for Smart Account and Delegated Account types. */\n chainId?: number;\n /** Specifies the share repositories. Required for creating embedded accounts. */\n share?: string;\n signerUuid?: string;\n /** The type of smart account that will be created (e.g. UpgradeableV6, UpgradeableV5, Calibur, Simple). Defaults to UpgradeableV6 in mainnets. Must support EIP-7702 for Delegated Accounts. */\n implementationType?: string;\n}\n\n/**\n * The type of object.\n */\nexport type BackendWalletResponseObject = typeof BackendWalletResponseObject[keyof typeof BackendWalletResponseObject];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const BackendWalletResponseObject = {\n backendWallet: 'backendWallet',\n} as const;\n\n/**\n * The chain type the wallet is associated with.\n */\nexport type BackendWalletResponseChainType = typeof BackendWalletResponseChainType[keyof typeof BackendWalletResponseChainType];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const BackendWalletResponseChainType = {\n EVM: 'EVM',\n SVM: 'SVM',\n} as const;\n\n/**\n * Key custody: always \"Developer\" for backend wallets (server-managed keys in TEE).\n */\nexport type BackendWalletResponseCustody = typeof BackendWalletResponseCustody[keyof typeof BackendWalletResponseCustody];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const BackendWalletResponseCustody = {\n Developer: 'Developer',\n} as const;\n\n/**\n * Backend wallet details response.\n */\nexport interface BackendWalletResponse {\n /**\n * The type of object.\n */\n object: BackendWalletResponseObject;\n /** The wallet ID (starts with `acc_`). */\n id: string;\n /** The wallet address. */\n address: string;\n /** The chain type the wallet is associated with. */\n chainType: BackendWalletResponseChainType;\n /** Optional name for the wallet. */\n name?: string;\n /**\n * Key custody: always \"Developer\" for backend wallets (server-managed keys in TEE).\n */\n custody: BackendWalletResponseCustody;\n /** Creation timestamp (Unix epoch seconds). */\n createdAt: number;\n /** Last updated timestamp (Unix epoch seconds). */\n updatedAt: number;\n}\n\n/**\n * The type of object.\n */\nexport type BackendWalletListResponseObject = typeof BackendWalletListResponseObject[keyof typeof BackendWalletListResponseObject];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const BackendWalletListResponseObject = {\n list: 'list',\n} as const;\n\n/**\n * List of backend wallets response.\n */\nexport interface BackendWalletListResponse {\n /**\n * The type of object.\n */\n object: BackendWalletListResponseObject;\n /** API endpoint URL. */\n url: string;\n /** List of backend wallets. */\n data: BackendWalletResponse[];\n /** Starting index. */\n start: number;\n /** Ending index. */\n end: number;\n /** Total number of wallets. */\n total: number;\n}\n\n/**\n * Filter by chain type.\n */\nexport type BackendWalletListQueriesChainType = typeof BackendWalletListQueriesChainType[keyof typeof BackendWalletListQueriesChainType];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const BackendWalletListQueriesChainType = {\n EVM: 'EVM',\n SVM: 'SVM',\n} as const;\n\n/**\n * Query parameters for listing backend wallets.\n */\nexport interface BackendWalletListQueries {\n /** Number of wallets to return (default: 10, max: 100). */\n limit?: number;\n /** Number of wallets to skip (for pagination). */\n skip?: number;\n /** Filter by chain type. */\n chainType?: BackendWalletListQueriesChainType;\n /** Filter by wallet address. */\n address?: string;\n /** Filter by wallet name. */\n name?: string;\n /** Filter by associated wallet ID (starts with `pla_`). */\n wallet?: string;\n}\n\n/**\n * The type of object.\n */\nexport type CreateBackendWalletResponseObject = typeof CreateBackendWalletResponseObject[keyof typeof CreateBackendWalletResponseObject];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const CreateBackendWalletResponseObject = {\n account: 'account',\n} as const;\n\n/**\n * The chain type the wallet is associated with.\n */\nexport type CreateBackendWalletResponseChainType = typeof CreateBackendWalletResponseChainType[keyof typeof CreateBackendWalletResponseChainType];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const CreateBackendWalletResponseChainType = {\n EVM: 'EVM',\n SVM: 'SVM',\n} as const;\n\n/**\n * Response from creating a new backend wallet account.\n */\nexport interface CreateBackendWalletResponse {\n /**\n * The type of object.\n */\n object: CreateBackendWalletResponseObject;\n /** The created account ID (starts with `acc_`). */\n id: string;\n /** The wallet address generated for this account. */\n address: string;\n /** The chain type the wallet is associated with. */\n chainType: CreateBackendWalletResponseChainType;\n /** Creation timestamp (Unix epoch seconds). */\n createdAt: number;\n}\n\n/**\n * The chain type for the new wallet.\n */\nexport type CreateBackendWalletRequestChainType = typeof CreateBackendWalletRequestChainType[keyof typeof CreateBackendWalletRequestChainType];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const CreateBackendWalletRequestChainType = {\n EVM: 'EVM',\n SVM: 'SVM',\n} as const;\n\n/**\n * Request to create a new backend wallet account.\n */\nexport interface CreateBackendWalletRequest {\n /** The chain type for the new wallet. */\n chainType: CreateBackendWalletRequestChainType;\n /** The wallet ID to associate with this wallet (starts with `pla_`). */\n wallet?: string;\n /** Optional name for the wallet. */\n name?: string;\n}\n\n/**\n * The type of object.\n */\nexport type DeleteBackendWalletResponseObject = typeof DeleteBackendWalletResponseObject[keyof typeof DeleteBackendWalletResponseObject];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const DeleteBackendWalletResponseObject = {\n backendWallet: 'backendWallet',\n} as const;\n\n/**\n * Response from deleting a backend wallet.\n */\nexport interface DeleteBackendWalletResponse {\n /**\n * The type of object.\n */\n object: DeleteBackendWalletResponseObject;\n /** The deleted wallet ID. */\n id: string;\n /** Whether the wallet was deleted. */\n deleted: boolean;\n}\n\n/**\n * The type of object.\n */\nexport type SignResponseObject = typeof SignResponseObject[keyof typeof SignResponseObject];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const SignResponseObject = {\n signature: 'signature',\n} as const;\n\n/**\n * Response from signing data via backend wallet.\n */\nexport interface SignResponse {\n /**\n * The type of object.\n */\n object: SignResponseObject;\n /** The account ID that signed the data (starts with `acc_`). */\n account: string;\n /** The signature bytes (hex-encoded). */\n signature: string;\n}\n\n/**\n * Request to sign data via backend wallet.\n */\nexport interface SignRequest {\n /** The data to sign (hex-encoded transaction data or message hash). */\n data: string;\n}\n\n/**\n * The type of object.\n */\nexport type ExportPrivateKeyResponseObject = typeof ExportPrivateKeyResponseObject[keyof typeof ExportPrivateKeyResponseObject];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const ExportPrivateKeyResponseObject = {\n exportedKey: 'exportedKey',\n} as const;\n\n/**\n * Response from exporting a private key with E2E encryption.\n */\nexport interface ExportPrivateKeyResponse {\n /**\n * The type of object.\n */\n object: ExportPrivateKeyResponseObject;\n /** The private key encrypted with RSA-OAEP SHA-256 using your ephemeral public key (base64-encoded).\nDecrypt using your ephemeral RSA private key. */\n encryptedPrivateKey: string;\n}\n\n/**\n * Request to export private key with E2E encryption.\n */\nexport interface ExportPrivateKeyRequest {\n /** Client's ephemeral RSA-4096 public key for end-to-end encryption (base64 SPKI DER format).\nThe backend wallet will encrypt the private key using RSA-OAEP SHA-256. */\n encryptionKey: string;\n}\n\n/**\n * The type of object.\n */\nexport type ImportPrivateKeyResponseObject = typeof ImportPrivateKeyResponseObject[keyof typeof ImportPrivateKeyResponseObject];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const ImportPrivateKeyResponseObject = {\n account: 'account',\n} as const;\n\n/**\n * The chain type the wallet is associated with.\n */\nexport type ImportPrivateKeyResponseChainType = typeof ImportPrivateKeyResponseChainType[keyof typeof ImportPrivateKeyResponseChainType];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const ImportPrivateKeyResponseChainType = {\n EVM: 'EVM',\n SVM: 'SVM',\n} as const;\n\n/**\n * Response from importing a private key with E2E encryption.\n */\nexport interface ImportPrivateKeyResponse {\n /**\n * The type of object.\n */\n object: ImportPrivateKeyResponseObject;\n /** The created account ID (starts with `acc_`). */\n id: string;\n /** The wallet address derived from the imported private key. */\n address: string;\n /** The chain type the wallet is associated with. */\n chainType?: ImportPrivateKeyResponseChainType;\n /** Creation timestamp (Unix epoch seconds). */\n createdAt: number;\n}\n\n/**\n * The chain type for the imported wallet.\n */\nexport type ImportPrivateKeyRequestChainType = typeof ImportPrivateKeyRequestChainType[keyof typeof ImportPrivateKeyRequestChainType];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const ImportPrivateKeyRequestChainType = {\n EVM: 'EVM',\n SVM: 'SVM',\n} as const;\n\n/**\n * Request to import private key with E2E encryption.\n */\nexport interface ImportPrivateKeyRequest {\n /** The private key encrypted with RSA-OAEP SHA-256 using the server's static import public key.\nObtain the server's import public key out-of-band (e.g., from SDK or documentation). */\n encryptedPrivateKey: string;\n /** The chain type for the imported wallet. */\n chainType?: ImportPrivateKeyRequestChainType;\n /** The wallet ID to associate with this wallet (starts with `pla_`). */\n wallet?: string;\n /** Optional name for the imported wallet. */\n name?: string;\n}\n\n/**\n * The type of object.\n */\nexport type RegisterWalletSecretResponseObject = typeof RegisterWalletSecretResponseObject[keyof typeof RegisterWalletSecretResponseObject];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const RegisterWalletSecretResponseObject = {\n walletSecret: 'walletSecret',\n} as const;\n\n/**\n * Response from registering a new wallet secret.\n */\nexport interface RegisterWalletSecretResponse {\n /**\n * The type of object.\n */\n object: RegisterWalletSecretResponseObject;\n /** The key ID for the registered secret. */\n keyId: string;\n /** Timestamp when the secret was registered (Unix epoch seconds). */\n registeredAt: number;\n}\n\n/**\n * Request to register a new wallet secret (authentication key).\n */\nexport interface RegisterWalletSecretRequest {\n /** ECDSA P-256 public key for wallet authentication (PEM or raw hex format).\nThis will be used to verify X-Wallet-Auth JWT signatures. */\n publicKey: string;\n /** Key identifier for the secret.\nUsed to identify this key in X-Wallet-Auth JWT headers. */\n keyId?: string;\n}\n\n/**\n * The type of object.\n */\nexport type RevokeWalletSecretResponseObject = typeof RevokeWalletSecretResponseObject[keyof typeof RevokeWalletSecretResponseObject];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const RevokeWalletSecretResponseObject = {\n walletSecretRevocation: 'walletSecretRevocation',\n} as const;\n\n/**\n * Response from revoking a wallet secret.\n */\nexport interface RevokeWalletSecretResponse {\n /**\n * The type of object.\n */\n object: RevokeWalletSecretResponseObject;\n /** The key ID of the revoked secret. */\n keyId: string;\n /** Whether the secret was successfully revoked. */\n revoked: boolean;\n /** Timestamp when the secret was revoked (Unix epoch seconds). */\n revokedAt: number;\n}\n\n/**\n * Request to revoke a wallet secret (authentication key).\n */\nexport interface RevokeWalletSecretRequest {\n /** Key identifier of the secret to revoke. */\n keyId: string;\n}\n\n/**\n * The type of object.\n */\nexport type RotateWalletSecretResponseObject = typeof RotateWalletSecretResponseObject[keyof typeof RotateWalletSecretResponseObject];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const RotateWalletSecretResponseObject = {\n walletSecretRotation: 'walletSecretRotation',\n} as const;\n\n/**\n * Response from rotating a wallet secret.\n */\nexport interface RotateWalletSecretResponse {\n /**\n * The type of object.\n */\n object: RotateWalletSecretResponseObject;\n /** Whether the rotation was successful. */\n success: boolean;\n /** Timestamp when the rotation occurred (Unix epoch seconds). */\n rotatedAt: number;\n}\n\n/**\n * Request to rotate wallet secret (authentication key).\n */\nexport interface RotateWalletSecretRequest {\n /** New ECDSA P-256 public key for wallet authentication.\nThis will replace the current wallet secret used for X-Wallet-Auth JWT signing. */\n newSecretPublicKey: string;\n /** Key identifier for the new secret.\nUsed to identify this key in X-Wallet-Auth JWT headers. */\n newKeyId?: string;\n}\n\n/**\n * Indicates key custody: \"Developer\" for server-managed keys (WALLTEE), \"User\" for user-managed keys (DB).\n */\nexport type AccountV2ResponseCustody = typeof AccountV2ResponseCustody[keyof typeof AccountV2ResponseCustody];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const AccountV2ResponseCustody = {\n Developer: 'Developer',\n User: 'User',\n} as const;\n\nexport interface AccountV2Response {\n id: string;\n user: string;\n accountType: string;\n address: string;\n ownerAddress?: string;\n chainType: string;\n chainId?: number;\n createdAt: number;\n updatedAt: number;\n smartAccount?: SmartAccountData;\n recoveryMethod?: string;\n recoveryMethodDetails?: RecoveryMethodDetails;\n /** Indicates key custody: \"Developer\" for server-managed keys (WALLTEE), \"User\" for user-managed keys (DB). */\n custody: AccountV2ResponseCustody;\n}\n\nexport interface BaseEntityListResponseAccountV2Response {\n object: ResponseTypeLIST;\n url: string;\n data: AccountV2Response[];\n start: number;\n end: number;\n total: number;\n}\n\nexport type AccountListV2Response = BaseEntityListResponseAccountV2Response;\n\n/**\n * The chain type. Must be either \"EVM\" or \"SVM\".\n */\nexport type AccountListQueriesV2ChainType = typeof AccountListQueriesV2ChainType[keyof typeof AccountListQueriesV2ChainType];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const AccountListQueriesV2ChainType = {\n EVM: 'EVM',\n SVM: 'SVM',\n} as const;\n\n/**\n * Specifies the type of account. Must be either \"Smart Account\" or \"Externally Owned Account\".\n */\nexport type AccountListQueriesV2AccountType = typeof AccountListQueriesV2AccountType[keyof typeof AccountListQueriesV2AccountType];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const AccountListQueriesV2AccountType = {\n Externally_Owned_Account: 'Externally Owned Account',\n Smart_Account: 'Smart Account',\n Delegated_Account: 'Delegated Account',\n} as const;\n\n/**\n * Specifies the key custody of the account. Must be either \"Developer\" or \"User\".\n */\nexport type AccountListQueriesV2Custody = typeof AccountListQueriesV2Custody[keyof typeof AccountListQueriesV2Custody];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const AccountListQueriesV2Custody = {\n Developer: 'Developer',\n User: 'User',\n} as const;\n\nexport interface AccountListQueriesV2 {\n /**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\n limit?: number;\n /**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\n skip?: number;\n /** Specifies the order in which to sort the results. */\n order?: PrismaSortOrder;\n /** The chain ID. Must be a [supported chain](/development/chains). */\n chainId?: number;\n /** Specifies the unique user ID (starts with pla_) */\n user?: string;\n /** The chain type. Must be either \"EVM\" or \"SVM\". */\n chainType?: AccountListQueriesV2ChainType;\n /** Specifies the type of account. Must be either \"Smart Account\" or \"Externally Owned Account\". */\n accountType?: AccountListQueriesV2AccountType;\n /** Specifies the key custody of the account. Must be either \"Developer\" or \"User\". */\n custody?: AccountListQueriesV2Custody;\n /** Specifies the account address */\n address?: string;\n}\n\nexport interface SignerIdResponse {\n id: string;\n}\n\nexport interface SwitchChainQueriesV2 {\n /** The account ID (starts with acc_) */\n account: string;\n /** The target chain ID. Must be a [supported chain](/development/chains). */\n chainId: number;\n}\n\n/**\n * The type of smart account that will be created. \"Externally Owned Account\", \"Smart Account\" or \"Delegated Account\".\n */\nexport type CreateAccountRequestV2AccountType = typeof CreateAccountRequestV2AccountType[keyof typeof CreateAccountRequestV2AccountType];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const CreateAccountRequestV2AccountType = {\n Externally_Owned_Account: 'Externally Owned Account',\n Smart_Account: 'Smart Account',\n Delegated_Account: 'Delegated Account',\n} as const;\n\n/**\n * The chain type. \"EVM\" or \"SVM\".\n */\nexport type CreateAccountRequestV2ChainType = typeof CreateAccountRequestV2ChainType[keyof typeof CreateAccountRequestV2ChainType];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const CreateAccountRequestV2ChainType = {\n EVM: 'EVM',\n SVM: 'SVM',\n} as const;\n\nexport interface CreateAccountRequestV2 {\n /** The type of smart account that will be created. \"Externally Owned Account\", \"Smart Account\" or \"Delegated Account\". */\n accountType: CreateAccountRequestV2AccountType;\n /** The chain type. \"EVM\" or \"SVM\". */\n chainType: CreateAccountRequestV2ChainType;\n address?: string;\n /** The type of smart account that will be created (e.g. UpgradeableV6, UpgradeableV5, Calibur). Defaults to UpgradeableV6 in mainnets. */\n implementationType?: string;\n /** The chain ID. Must be a [supported chain](/development/chains). */\n chainId?: number;\n /** ID of the user this account belongs to (starts with `pla_`). If none is provided, a new user will be created. */\n user: string;\n /** ID of the account (starts with `acc_`) to be linked with. Required for accountType \"Smart Account\". */\n account?: string;\n}\n\nexport interface DeleteAccountResponse {\n id: string;\n object: EntityTypeACCOUNT;\n deleted: boolean;\n}\n\nexport type UserProjectRole = typeof UserProjectRole[keyof typeof UserProjectRole];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const UserProjectRole = {\n OWNER: 'OWNER',\n ADMIN: 'ADMIN',\n MEMBER: 'MEMBER',\n} as const;\n\nexport type EntityTypeUSER = typeof EntityTypeUSER[keyof typeof EntityTypeUSER];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const EntityTypeUSER = {\n user: 'user',\n} as const;\n\nexport interface UserProjectResponse {\n id: string;\n object: EntityTypeUSER;\n createdAt: number;\n updatedAt: number;\n firstName: string;\n lastName: string;\n role: UserProjectRole;\n email: string;\n}\n\nexport interface UserProjectListResponse {\n object: ResponseTypeLIST;\n url: string;\n data: UserProjectResponse[];\n start: number;\n end: number;\n total: number;\n}\n\nexport type UserProjectRoleADMIN = typeof UserProjectRoleADMIN[keyof typeof UserProjectRoleADMIN];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const UserProjectRoleADMIN = {\n ADMIN: 'ADMIN',\n} as const;\n\nexport type UserProjectRoleMEMBER = typeof UserProjectRoleMEMBER[keyof typeof UserProjectRoleMEMBER];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const UserProjectRoleMEMBER = {\n MEMBER: 'MEMBER',\n} as const;\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const UserProjectCreateRequestRole = {...UserProjectRoleADMIN,...UserProjectRoleMEMBER,} as const\nexport interface UserProjectCreateRequest {\n /** The role of the user. */\n role?: typeof UserProjectCreateRequestRole[keyof typeof UserProjectCreateRequestRole] ;\n /** The email of the user to add. */\n email: string;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const UserProjectUpdateRequestRole = {...UserProjectRoleMEMBER,...UserProjectRoleADMIN,} as const\nexport interface UserProjectUpdateRequest {\n /** The role of the user. */\n role: typeof UserProjectUpdateRequestRole[keyof typeof UserProjectUpdateRequestRole] ;\n}\n\nexport interface UserProjectDeleteResponse {\n id: string;\n object: EntityTypeUSER;\n deleted: boolean;\n}\n\nexport interface ApiKeyResponse {\n id: number;\n createdAt: number;\n token: string;\n name: string;\n livemode: boolean;\n}\n\nexport interface WebhookResponse {\n /** @nullable */\n webhook: string | null;\n livemode: boolean;\n}\n\nexport type EntityTypePROJECT = typeof EntityTypePROJECT[keyof typeof EntityTypePROJECT];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const EntityTypePROJECT = {\n project: 'project',\n} as const;\n\nexport interface ChildProjectResponse {\n id: string;\n object: EntityTypePROJECT;\n createdAt: number;\n name: string;\n}\n\nexport interface ChildProjectListResponse {\n object: ResponseTypeLIST;\n url: string;\n data: ChildProjectResponse[];\n start: number;\n end: number;\n total: number;\n}\n\nexport interface ProjectResponse {\n id: string;\n object: EntityTypePROJECT;\n createdAt: number;\n updatedAt: number;\n name: string;\n apikeys?: ApiKeyResponse[];\n webhook?: WebhookResponse[];\n parentProject?: string;\n childProjects?: ChildProjectListResponse;\n isV2: boolean;\n}\n\nexport interface ProjectListResponse {\n object: ResponseTypeLIST;\n url: string;\n data: ProjectResponse[];\n start: number;\n end: number;\n total: number;\n}\n\nexport interface TransactionStat {\n timestamp: string;\n total: number;\n successful: number;\n gasUsed: string;\n}\n\nexport interface Stat {\n timestamp: string;\n total: number;\n}\n\nexport type DeviceStat = Stat;\n\nexport interface ProjectStatsResponse {\n transactionIntents: TransactionStat[];\n devices: Stat[];\n}\n\nexport type ProjectStatsRequestTimeFrame = typeof ProjectStatsRequestTimeFrame[keyof typeof ProjectStatsRequestTimeFrame];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const ProjectStatsRequestTimeFrame = {\n day: 'day',\n week: 'week',\n month: 'month',\n all: 'all',\n} as const;\n\nexport interface ProjectStatsRequest {\n timeFrame: ProjectStatsRequestTimeFrame;\n}\n\nexport type PlanChangeType = typeof PlanChangeType[keyof typeof PlanChangeType];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const PlanChangeType = {\n upgrade: 'upgrade',\n downgrade: 'downgrade',\n none: 'none',\n} as const;\n\nexport interface Plan {\n id: string;\n name: string;\n price: number;\n is_current: boolean;\n change_type: PlanChangeType;\n legacy?: boolean;\n}\n\nexport interface PlansResponse {\n plans: Plan[];\n}\n\nexport type BillingSubscriptionResponsePlan = {\n price: number;\n name: string;\n id: string;\n};\n\nexport interface BillingSubscriptionResponse {\n currentPeriodEnd?: string;\n currentPeriodStart?: string;\n canceledAt?: string;\n plan: BillingSubscriptionResponsePlan;\n}\n\nexport type PrivateKeyPolicy = typeof PrivateKeyPolicy[keyof typeof PrivateKeyPolicy];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const PrivateKeyPolicy = {\n INDIVIDUAL: 'INDIVIDUAL',\n PROJECT: 'PROJECT',\n} as const;\n\nexport interface CreateProjectRequest {\n /**\n * Name of the project.\n * @minLength 1\n * @maxLength 256\n */\n name: string;\n /** The private key policyfor the project. */\n pkPolicy?: PrivateKeyPolicy;\n}\n\nexport interface UpdateProjectRequest {\n /**\n * Name of the project.\n * @minLength 1\n * @maxLength 256\n */\n name: string;\n}\n\nexport interface AllowedOriginsResponse {\n allowedOrigins: string[];\n}\n\nexport interface AllowedOriginsRequest {\n allowedOrigins: string[];\n}\n\nexport type EntityTypeSMTPCONFIG = typeof EntityTypeSMTPCONFIG[keyof typeof EntityTypeSMTPCONFIG];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const EntityTypeSMTPCONFIG = {\n smtpConfig: 'smtpConfig',\n} as const;\n\nexport interface SMTPConfigResponse {\n user: string;\n pass: string;\n host: string;\n port: number;\n from: string;\n useSSL: boolean;\n object: EntityTypeSMTPCONFIG;\n}\n\nexport type CreateSMTPConfigResponse = SMTPConfigResponse;\n\nexport interface UpsertSMTPConfigRequest {\n /** Specifies the user name */\n user?: string;\n /** Specifies the password */\n pass?: string;\n /** Specifies the host */\n host?: string;\n /** Specifies the from */\n from?: string;\n /** Specifies the port */\n port?: number;\n /** Specifies the use SSL */\n useSSL?: boolean;\n}\n\nexport type GetSMTPConfigResponse = SMTPConfigResponse;\n\nexport interface DeleteSMTPConfigResponse {\n deleted: boolean;\n object: EntityTypeSMTPCONFIG;\n}\n\nexport type EmailTypeResponse = typeof EmailTypeResponse[keyof typeof EmailTypeResponse];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const EmailTypeResponse = {\n emailVerification: 'emailVerification',\n passwordReset: 'passwordReset',\n} as const;\n\nexport type EntityTypeEMAILSAMPLE = typeof EntityTypeEMAILSAMPLE[keyof typeof EntityTypeEMAILSAMPLE];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const EntityTypeEMAILSAMPLE = {\n emailSample: 'emailSample',\n} as const;\n\nexport interface EmailSampleResponse {\n id: string;\n object: EntityTypeEMAILSAMPLE;\n createdAt: number;\n name: string;\n subject: string;\n body: string;\n type: EmailTypeResponse;\n}\n\nexport type CreateEmailSampleResponse = EmailSampleResponse;\n\nexport type EmailTypeRequest = typeof EmailTypeRequest[keyof typeof EmailTypeRequest];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const EmailTypeRequest = {\n emailVerification: 'emailVerification',\n passwordReset: 'passwordReset',\n} as const;\n\nexport interface CreateEmailSampleRequest {\n /** Specifies the name */\n name: string;\n /** Specifies the subject */\n subject: string;\n /** Specifies the body */\n body: string;\n /** Specifies the type */\n type: EmailTypeRequest;\n}\n\nexport type GetEmailSampleResponse = EmailSampleResponse;\n\nexport interface BaseEntityListResponseEmailSampleResponse {\n object: ResponseTypeLIST;\n url: string;\n data: EmailSampleResponse[];\n start: number;\n end: number;\n total: number;\n}\n\nexport type EmailSampleListResponse = BaseEntityListResponseEmailSampleResponse;\n\nexport interface EmailSampleDeleteResponse {\n deleted: boolean;\n id: string;\n object: EntityTypeEMAILSAMPLE;\n}\n\nexport type UpdateEmailSampleResponse = EmailSampleResponse;\n\nexport interface UpdateEmailSampleRequest {\n /** Specifies the name */\n name?: string;\n /** Specifies the subject */\n subject?: string;\n /** Specifies the body */\n body?: string;\n /** Specifies the type */\n type?: EmailTypeRequest;\n}\n\nexport interface EcosystemMetadata {[key: string]: string | number}\n\nexport interface EcosystemConfigurationResponse {\n /** Subdomain of the ecosystem. */\n customDomain: string;\n /** Primary color of the ecosystem. */\n primaryColor: string;\n /** Primary color foreground of the ecosystem. */\n primaryColorForeground: string;\n /** Radius of the ecosystem. */\n radius: string;\n /** Logo URL of the ecosystem. */\n logoUrl: string;\n /** Whitelisted frontend domains of the ecosystem. */\n ecosystemWalletDomains: string[];\n /** Terms of service URL */\n termsOfServiceUrl?: string;\n /** Privacy policy URL */\n privacyPolicyUrl?: string;\n /** Favicon URL */\n faviconUrl?: string;\n /** Examples of the ecosystem. */\n dashboardExamples?: EcosystemMetadata[];\n /** SDKs of the ecosystem. */\n dashboardSDKs?: EcosystemMetadata[];\n /** Support email of the ecosystem. */\n supportEmail?: string;\n /** Documentation URL of the ecosystem. */\n documentationUrl?: string;\n}\n\nexport interface CreateEcosystemConfigurationRequest {\n /** Custom domain of the ecosystem. */\n customDomain: string;\n /** Primary color of the ecosystem. */\n primaryColor: string;\n /** Primary color foreground of the ecosystem. */\n primaryColorForeground: string;\n /** Radius of the ecosystem. */\n radius: string;\n /** Logo URL of the ecosystem. */\n logoUrl: string;\n /** URLs where the ecosystem wallet is hosted. */\n ecosystemWalletDomains?: string[];\n /** Terms of service URL */\n termsOfServiceUrl?: string;\n /** Privacy policy URL */\n privacyPolicyUrl?: string;\n /** Favicon URL */\n faviconUrl?: string;\n /** Examples of the ecosystem. */\n dashboardExamples?: EcosystemMetadata[];\n /** SDKs of the ecosystem. */\n dashboardSDKs?: EcosystemMetadata[];\n /** Support email of the ecosystem. */\n supportEmail?: string;\n /** Documentation URL of the ecosystem. */\n documentationUrl?: string;\n}\n\nexport interface MyEcosystemResponse {\n publishableKey: string;\n name: string;\n configuration?: EcosystemConfigurationResponse;\n}\n\nexport type ApiKeyType = typeof ApiKeyType[keyof typeof ApiKeyType];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const ApiKeyType = {\n pk: 'pk',\n sk: 'sk',\n pk_shield: 'pk_shield',\n sk_shield: 'sk_shield',\n} as const;\n\nexport interface CreateProjectApiKeyRequest {\n /** The type of the API key. */\n type: ApiKeyType;\n}\n\nexport interface UpdateProjectApiKeyRequest {\n /** The type of the API key. */\n type: ApiKeyType;\n /** The API key to update. */\n uuid: string;\n /** Whether key to use to sign webhooks. */\n use_for_webhooks?: boolean;\n}\n\nexport interface AuthorizedOriginsResponse {\n origins: string[];\n}\n\nexport interface UpdateAuthorizedOriginsRequest {\n origins: string[];\n}\n\nexport type AuthorizedNetworksResponseAuthorizedNetworksItem = {\n network: string;\n name: string;\n};\n\nexport interface AuthorizedNetworksResponse {\n authorizedNetworks: AuthorizedNetworksResponseAuthorizedNetworksItem[];\n}\n\nexport interface AuthorizedNetwork {\n name: string;\n network: string;\n}\n\nexport interface UpdateAuthorizedNetworksRequest {\n authorizedNetworks: AuthorizedNetwork[];\n}\n\nexport type AuthorizedAppsResponseAuthorizedAppsItem = {\n appUrlScheme?: string;\n appIdentifier: string;\n name: string;\n};\n\nexport interface AuthorizedAppsResponse {\n authorizedApps: AuthorizedAppsResponseAuthorizedAppsItem[];\n}\n\nexport interface AuthorizedApp {\n name: string;\n appIdentifier: string;\n appUrlScheme?: string;\n}\n\nexport interface UpdateAuthorizedAppsRequest {\n authorizedApps: AuthorizedApp[];\n}\n\nexport type AuthProviderResponse = typeof AuthProviderResponse[keyof typeof AuthProviderResponse];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const AuthProviderResponse = {\n email: 'email',\n wallet: 'wallet',\n google: 'google',\n apple: 'apple',\n twitter: 'twitter',\n discord: 'discord',\n epic_games: 'epic_games',\n facebook: 'facebook',\n accelbyte: 'accelbyte',\n firebase: 'firebase',\n lootlocker: 'lootlocker',\n playfab: 'playfab',\n supabase: 'supabase',\n custom: 'custom',\n oidc: 'oidc',\n} as const;\n\nexport interface LinkedAccountResponse {\n provider: AuthProviderResponse;\n email?: string;\n externalUserId?: string;\n connectorType?: string;\n walletClientType?: string;\n disabled: boolean;\n verified?: boolean;\n updatedAt?: number;\n address?: string;\n metadata?: PlayerMetadata;\n}\n\n/**\n * From T, pick a set of properties whose keys are in the union K\n */\nexport interface PickPlayerResponseId {\n id: string;\n}\n\nexport type AuthPlayerResponsePlayer = PlayerResponse | PickPlayerResponseId;\n\nexport interface AuthPlayerResponse {\n player?: AuthPlayerResponsePlayer;\n id: string;\n object: EntityTypePLAYER;\n createdAt: number;\n linkedAccounts: LinkedAccountResponse[];\n}\n\nexport interface AuthResponse {\n /** Player's identifier. */\n player: AuthPlayerResponse;\n /** JWT access token. */\n token: string;\n /** Refresh token. */\n refreshToken: string;\n}\n\nexport interface RefreshTokenRequest {\n /** Specifies the session refresh token. */\n refreshToken: string;\n /** Specifies whether to force refresh the session. */\n forceRefresh?: boolean;\n}\n\nexport interface LogoutRequest {\n /** Specifies the refresh token. */\n refreshToken: string;\n}\n\nexport interface SIWEInitResponse {\n /** The address of the player. */\n address: string;\n nonce: string;\n expiresAt: number;\n}\n\nexport interface SIWERequest {\n /** The address of the user. */\n address: string;\n}\n\nexport interface SIWEAuthenticateRequest {\n /** Signature of the EIP-712 message with the user's wallet. */\n signature: string;\n /** The EIP-712 message to sign. */\n message: string;\n /** The wallet client of the user */\n walletClientType: string;\n /** The connector type of the user */\n connectorType: string;\n}\n\nexport type Actions = typeof Actions[keyof typeof Actions];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const Actions = {\n verify_email: 'verify_email',\n} as const;\n\nexport interface ActionRequiredResponse {\n action: Actions;\n}\n\nexport interface SignupRequest {\n /** The email address of the player. */\n email: string;\n /** The password of the player. */\n password: string;\n /** The name of the player. */\n name?: string;\n /** The description of the player. */\n description?: string;\n}\n\nexport interface LoginRequest {\n /** The email address of the user. */\n email: string;\n /** The password of the user. */\n password: string;\n}\n\n/**\n * The code verifier.\n */\nexport type CodeChallengeMethod = typeof CodeChallengeMethod[keyof typeof CodeChallengeMethod];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const CodeChallengeMethod = {\n plain: 'plain',\n S256: 'S256',\n} as const;\n\nexport interface CodeChallenge {\n /** The code challenge. */\n codeChallenge: string;\n /** The code verifier. */\n method: CodeChallengeMethod;\n}\n\nexport interface RequestVerifyEmailRequest {\n /** The email address of the user. */\n email: string;\n /** The URL sent to the user by email to reset the password. At the end of the URL, we will add the token in the format `?token=token`. */\n redirectUrl: string;\n /** The Code Challenge if you want to use PKCE. */\n challenge?: CodeChallenge;\n}\n\nexport interface CodeChallengeVerify {\n /** The code verifier. */\n codeVerifier: string;\n}\n\nexport interface VerifyEmailRequest {\n /** The email address of the user. */\n email: string;\n /** Unique value to identify the request. Obtained from the email. */\n token: string;\n /** The Code Challenge to verify the PKCE if you used it in the request. */\n challenge?: CodeChallengeVerify;\n}\n\nexport interface RequestResetPasswordRequest {\n /** The email address of the user. */\n email: string;\n /** The URL sent to the user by email to reset the password. At the end of the URL, we will add the token in the format `?token=token`. */\n redirectUrl: string;\n /** The Code Challenge if you want to use PKCE. */\n challenge?: CodeChallenge;\n}\n\nexport interface ResetPasswordRequest {\n /** The email address of the user. */\n email: string;\n /** The new password of the user. */\n password: string;\n /** Unique value to identify the request. It's used to mitigate CSRF attacks. */\n state?: string;\n /** The Code Challenge to verify the PKCE if you used it in the request. */\n challenge?: CodeChallengeVerify;\n}\n\nexport interface UnlinkEmailRequest {\n /** The email address of the user. */\n email: string;\n}\n\nexport interface LoginOIDCRequest {\n /** The identity token of the user. */\n identityToken: string;\n}\n\nexport interface OAuthResponse {\n url: string;\n key: string;\n}\n\n/**\n * Enum of the supporting OAuth providers.\n */\nexport type OAuthProvider = typeof OAuthProvider[keyof typeof OAuthProvider];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const OAuthProvider = {\n google: 'google',\n twitter: 'twitter',\n facebook: 'facebook',\n discord: 'discord',\n epic_games: 'epic_games',\n line: 'line',\n apple: 'apple',\n} as const;\n\n/**\n * An object of query params\n */\nexport type OAuthInitRequestOptionsQueryParams = {[key: string]: string};\n\nexport type OAuthInitRequestOptions = {\n /** A URL to custom handle the provider callback */\n callbackTo?: string;\n /** An object of query params */\n queryParams?: OAuthInitRequestOptionsQueryParams;\n /** A URL to send the user to after they are confirmed. */\n redirectTo?: string;\n};\n\nexport interface OAuthInitRequest {\n options?: OAuthInitRequestOptions;\n /** Use Pooling for the OAuth flow\n\nThis option is for the flow that requires the user can't be redirected from the authorization page to the application.\nThe client should poll the server to check if the user has authorized the application. */\n usePooling?: boolean;\n /** One of the providers supported by Openfort */\n provider: OAuthProvider;\n}\n\nexport interface ThirdPartyLinkRequest {\n provider: ThirdPartyOAuthProvider;\n token: string;\n tokenType: string;\n}\n\nexport interface LoginWithIdTokenRequest {\n /** OAuth provider */\n provider: OAuthProvider;\n /** Token to be verified */\n token: string;\n}\n\n/**\n * Enum of the supporting OAuth providers.\n */\nexport type TokenType = typeof TokenType[keyof typeof TokenType];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const TokenType = {\n idToken: 'idToken',\n customToken: 'customToken',\n} as const;\n\nexport interface ThirdPartyOAuthRequest {\n /** OAuth provider */\n provider: ThirdPartyOAuthProvider;\n /** Token to be verified */\n token: string;\n tokenType?: TokenType;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const AuthenticateOAuthRequestProvider = {...OAuthProvider,...ThirdPartyOAuthProvider,} as const\nexport interface AuthenticateOAuthRequest {\n /** OAuth provider */\n provider: typeof AuthenticateOAuthRequestProvider[keyof typeof AuthenticateOAuthRequestProvider] ;\n /** Token to be verified */\n token: string;\n /** Type of the token. */\n tokenType: TokenType;\n /** Specifies the fields to expand in the response. */\n expand?: PlayerResponseExpandable[];\n}\n\n/**\n * The request to verify access token\n */\nexport interface UnlinkOAuthRequest {\n /** The provider type being linked */\n provider: OAuthProvider;\n}\n\nexport type BasicAuthProviderEMAIL = typeof BasicAuthProviderEMAIL[keyof typeof BasicAuthProviderEMAIL];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const BasicAuthProviderEMAIL = {\n email: 'email',\n} as const;\n\n/**\n * Enum of the supporting Basic Auth providers.\n */\nexport type BasicAuthProvider = typeof BasicAuthProvider[keyof typeof BasicAuthProvider];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const BasicAuthProvider = {\n email: 'email',\n wallet: 'wallet',\n guest: 'guest',\n web3: 'web3',\n phone: 'phone',\n} as const;\n\n/**\n * Enum of the supporting Auth providers.\n */\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const AuthProvider = {...OAuthProvider,...ThirdPartyOAuthProvider,...BasicAuthProvider,} as const\nexport type AuthProvider = typeof AuthProvider[keyof typeof AuthProvider] ;\n\n/**\n * Password requirements configuration\n */\nexport type EmailAuthConfigPasswordRequirements = {\n /** Require at least one special character (default: false) */\n requireSpecialChar?: boolean;\n /** Require at least one number (default: false) */\n requireNumber?: boolean;\n /** Require at least one lowercase letter (default: false) */\n requireLowercase?: boolean;\n /** Require at least one uppercase letter (default: false) */\n requireUppercase?: boolean;\n /** Minimum password length (default: 6) */\n minLength: number;\n};\n\n/**\n * Email auth configuration\n */\nexport interface EmailAuthConfig {\n /** Enable OAuth provider. */\n enabled: boolean;\n /** Auth provider type */\n provider: BasicAuthProviderEMAIL;\n /** Allow unverified emails: Users will be able to sign in with unverified emails */\n allowUnverified: boolean;\n /** Length of the OTP code (default: 6) */\n otpLength: number;\n /** Password requirements configuration */\n passwordRequirements: EmailAuthConfigPasswordRequirements;\n}\n\nexport type BasicAuthProviderGUEST = typeof BasicAuthProviderGUEST[keyof typeof BasicAuthProviderGUEST];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const BasicAuthProviderGUEST = {\n guest: 'guest',\n} as const;\n\nexport interface GuestAuthConfig {\n /** Enable OAuth provider. */\n enabled: boolean;\n /** Auth provider type */\n provider: BasicAuthProviderGUEST;\n}\n\nexport type BasicAuthProviderWEB3 = typeof BasicAuthProviderWEB3[keyof typeof BasicAuthProviderWEB3];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const BasicAuthProviderWEB3 = {\n web3: 'web3',\n} as const;\n\nexport interface Web3AuthConfig {\n /** Enable OAuth provider. */\n enabled: boolean;\n /** Auth provider type */\n provider: BasicAuthProviderWEB3;\n}\n\nexport type BasicAuthProviderPHONE = typeof BasicAuthProviderPHONE[keyof typeof BasicAuthProviderPHONE];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const BasicAuthProviderPHONE = {\n phone: 'phone',\n} as const;\n\nexport type SmsProviderTWILIO = typeof SmsProviderTWILIO[keyof typeof SmsProviderTWILIO];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const SmsProviderTWILIO = {\n twilio: 'twilio',\n} as const;\n\n/**\n * Twilio SMS provider configuration\n */\nexport interface TwilioSmsProviderConfig {\n provider: SmsProviderTWILIO;\n /** Twilio Account SID */\n accountSid: string;\n /** Twilio Auth Token */\n authToken: string;\n /** Twilio phone number (from) */\n phoneNumber: string;\n}\n\nexport type SmsProviderMESSAGEBIRD = typeof SmsProviderMESSAGEBIRD[keyof typeof SmsProviderMESSAGEBIRD];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const SmsProviderMESSAGEBIRD = {\n messagebird: 'messagebird',\n} as const;\n\n/**\n * MessageBird SMS provider configuration\n */\nexport interface MessageBirdSmsProviderConfig {\n provider: SmsProviderMESSAGEBIRD;\n /** MessageBird Access Key */\n accessKey: string;\n /** Sender name or number */\n originator: string;\n}\n\nexport type SmsProviderTXTLOCAL = typeof SmsProviderTXTLOCAL[keyof typeof SmsProviderTXTLOCAL];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const SmsProviderTXTLOCAL = {\n txtlocal: 'txtlocal',\n} as const;\n\n/**\n * TxtLocal SMS provider configuration\n */\nexport interface TxtLocalSmsProviderConfig {\n provider: SmsProviderTXTLOCAL;\n /** TxtLocal API Key */\n apiKey: string;\n /** Sender name */\n sender: string;\n}\n\nexport type SmsProviderVONAGE = typeof SmsProviderVONAGE[keyof typeof SmsProviderVONAGE];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const SmsProviderVONAGE = {\n vonage: 'vonage',\n} as const;\n\n/**\n * Vonage SMS provider configuration\n */\nexport interface VonageSmsProviderConfig {\n provider: SmsProviderVONAGE;\n /** Vonage API Key */\n apiKey: string;\n /** Vonage API Secret */\n apiSecret: string;\n /** Sender ID or phone number */\n from: string;\n}\n\nexport type SmsProviderSMSAPI = typeof SmsProviderSMSAPI[keyof typeof SmsProviderSMSAPI];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const SmsProviderSMSAPI = {\n sms_api: 'sms_api',\n} as const;\n\n/**\n * SMS API provider configuration\n */\nexport interface SmsApiProviderConfig {\n provider: SmsProviderSMSAPI;\n /** Sender name */\n from: string;\n /** SMSAPI OAuth token */\n token: string;\n}\n\n/**\n * SMS provider configuration\n */\nexport type PhoneAuthConfigSmsProviderConfig = TwilioSmsProviderConfig | MessageBirdSmsProviderConfig | TxtLocalSmsProviderConfig | VonageSmsProviderConfig | SmsApiProviderConfig;\n\n/**\n * Phone auth configuration\n */\nexport interface PhoneAuthConfig {\n /** Enable OAuth provider. */\n enabled: boolean;\n /** Auth provider type */\n provider: BasicAuthProviderPHONE;\n /** SMS provider configuration */\n smsProviderConfig: PhoneAuthConfigSmsProviderConfig;\n /** SMS message template. Use {{ .Code }} to format the OTP code (default: \"Your code is {{ .Code }}\") */\n smsTemplate: string;\n}\n\nexport type ThirdPartyOAuthProviderSUPABASE = typeof ThirdPartyOAuthProviderSUPABASE[keyof typeof ThirdPartyOAuthProviderSUPABASE];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const ThirdPartyOAuthProviderSUPABASE = {\n supabase: 'supabase',\n} as const;\n\n/**\n * Supabase oauth configuration\n */\nexport interface SupabaseAuthConfig {\n /** Enable OAuth provider. */\n enabled: boolean;\n /** OAuth provider type */\n provider: ThirdPartyOAuthProviderSUPABASE;\n /** The unique Supabase URL which is supplied when you create a new project in your project dashboard. */\n url: string;\n /** The unique Supabase Key which is supplied when you create a new project in your project dashboard. */\n key: string;\n}\n\nexport type ThirdPartyOAuthProviderOIDC = typeof ThirdPartyOAuthProviderOIDC[keyof typeof ThirdPartyOAuthProviderOIDC];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const ThirdPartyOAuthProviderOIDC = {\n oidc: 'oidc',\n} as const;\n\nexport interface OIDCAuthConfig {\n /** Enable OAuth provider. */\n enabled: boolean;\n /** OAuth provider type */\n provider: ThirdPartyOAuthProviderOIDC;\n /** PEM encoded public key to verify the JWT token */\n publicVerificationKey?: string;\n /** Audience of the JWT token */\n aud: string;\n /** JWKS URL to fetch the public key */\n jwksUrl?: string;\n}\n\nexport type ThirdPartyOAuthProviderACCELBYTE = typeof ThirdPartyOAuthProviderACCELBYTE[keyof typeof ThirdPartyOAuthProviderACCELBYTE];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const ThirdPartyOAuthProviderACCELBYTE = {\n accelbyte: 'accelbyte',\n} as const;\n\n/**\n * Accelbyte oauth configuration\n */\nexport interface AccelbyteOAuthConfig {\n /** Enable OAuth provider. */\n enabled: boolean;\n /** OAuth provider type */\n provider: ThirdPartyOAuthProviderACCELBYTE;\n /** Base URI of your accelbyte gaming service environment. E.g. https://mygame.dev.gamingservices.accelbyte.io/ */\n baseUrl: string;\n /** Client ID of your accelbyte gaming service environment. */\n clientId: string;\n /** Secret of your confidential IAM client. */\n clientSecret: string;\n}\n\nexport type OAuthProviderGOOGLE = typeof OAuthProviderGOOGLE[keyof typeof OAuthProviderGOOGLE];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const OAuthProviderGOOGLE = {\n google: 'google',\n} as const;\n\n/**\n * Google oauth configuration\n */\nexport interface GoogleOAuthConfig {\n /** Enable OAuth provider. */\n enabled: boolean;\n /** OAuth provider type */\n provider: OAuthProviderGOOGLE;\n /** Google API client ID. */\n clientId: string;\n /** Google API client secret. */\n clientSecret?: string;\n}\n\nexport type OAuthProviderTWITTER = typeof OAuthProviderTWITTER[keyof typeof OAuthProviderTWITTER];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const OAuthProviderTWITTER = {\n twitter: 'twitter',\n} as const;\n\n/**\n * Twitter oauth configuration\n */\nexport interface TwitterOAuthConfig {\n /** Enable OAuth provider. */\n enabled: boolean;\n /** OAuth provider type */\n provider: OAuthProviderTWITTER;\n /** Twitter API consumer key. */\n clientId: string;\n /** Twitter API consumer secret. */\n clientSecret: string;\n}\n\nexport type OAuthProviderFACEBOOK = typeof OAuthProviderFACEBOOK[keyof typeof OAuthProviderFACEBOOK];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const OAuthProviderFACEBOOK = {\n facebook: 'facebook',\n} as const;\n\nexport interface FacebookOAuthConfig {\n /** Enable OAuth provider. */\n enabled: boolean;\n /** OAuth provider type */\n provider: OAuthProviderFACEBOOK;\n /** Facebook API client ID. */\n clientId: string;\n /** Facebook API client secret. */\n clientSecret: string;\n}\n\nexport type OAuthProviderAPPLE = typeof OAuthProviderAPPLE[keyof typeof OAuthProviderAPPLE];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const OAuthProviderAPPLE = {\n apple: 'apple',\n} as const;\n\nexport interface AppleOAuthConfig {\n /** Enable OAuth provider. */\n enabled: boolean;\n /** OAuth provider type */\n provider: OAuthProviderAPPLE;\n /** Apple API client ID (Service ID). */\n clientId: string;\n /** Pre-generated client secret JWT */\n clientSecret?: string;\n}\n\nexport type OAuthProviderLINE = typeof OAuthProviderLINE[keyof typeof OAuthProviderLINE];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const OAuthProviderLINE = {\n line: 'line',\n} as const;\n\nexport interface LineOAuthConfig {\n /** Enable OAuth provider. */\n enabled: boolean;\n /** OAuth provider type */\n provider: OAuthProviderLINE;\n /** Line Channel ID. */\n channelId: string;\n /** Line Channel secret. */\n channelSecret: string;\n}\n\nexport type OAuthProviderDISCORD = typeof OAuthProviderDISCORD[keyof typeof OAuthProviderDISCORD];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const OAuthProviderDISCORD = {\n discord: 'discord',\n} as const;\n\nexport interface DiscordOAuthConfig {\n /** Enable OAuth provider. */\n enabled: boolean;\n /** OAuth provider type */\n provider: OAuthProviderDISCORD;\n /** Discord API client ID. */\n clientId: string;\n /** Discord API client secret. */\n clientSecret: string;\n}\n\nexport type OAuthProviderEPICGAMES = typeof OAuthProviderEPICGAMES[keyof typeof OAuthProviderEPICGAMES];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const OAuthProviderEPICGAMES = {\n epic_games: 'epic_games',\n} as const;\n\nexport interface EpicGamesOAuthConfig {\n /** Enable OAuth provider. */\n enabled: boolean;\n /** OAuth provider type */\n provider: OAuthProviderEPICGAMES;\n /** Epic Games API client ID. */\n clientId: string;\n /** Epic Games API client secret. */\n clientSecret: string;\n}\n\nexport type ThirdPartyOAuthProviderPLAYFAB = typeof ThirdPartyOAuthProviderPLAYFAB[keyof typeof ThirdPartyOAuthProviderPLAYFAB];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const ThirdPartyOAuthProviderPLAYFAB = {\n playfab: 'playfab',\n} as const;\n\n/**\n * PlayFab oauth configuration\n */\nexport interface PlayFabOAuthConfig {\n /** Enable OAuth provider. */\n enabled: boolean;\n /** OAuth provider type */\n provider: ThirdPartyOAuthProviderPLAYFAB;\n /** Title ID of your Play Fab gaming service environment. */\n titleId: string;\n}\n\nexport type ThirdPartyOAuthProviderFIREBASE = typeof ThirdPartyOAuthProviderFIREBASE[keyof typeof ThirdPartyOAuthProviderFIREBASE];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const ThirdPartyOAuthProviderFIREBASE = {\n firebase: 'firebase',\n} as const;\n\n/**\n * Firebase configuration\n */\nexport interface FirebaseOAuthConfig {\n /** Enable OAuth provider. */\n enabled: boolean;\n /** OAuth provider type */\n provider: ThirdPartyOAuthProviderFIREBASE;\n /** Project ID of your Firebase service environment. */\n projectId: string;\n}\n\nexport type ThirdPartyOAuthProviderCUSTOM = typeof ThirdPartyOAuthProviderCUSTOM[keyof typeof ThirdPartyOAuthProviderCUSTOM];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const ThirdPartyOAuthProviderCUSTOM = {\n custom: 'custom',\n} as const;\n\nexport interface CustomAuthConfig {\n /** Enable OAuth provider. */\n enabled: boolean;\n /** OAuth provider type */\n provider: ThirdPartyOAuthProviderCUSTOM;\n /** Headers to send with the request */\n headers?: string;\n /** URL to send the request to to verify the payload */\n authenticationUrl: string;\n}\n\nexport type ThirdPartyOAuthProviderLOOTLOCKER = typeof ThirdPartyOAuthProviderLOOTLOCKER[keyof typeof ThirdPartyOAuthProviderLOOTLOCKER];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const ThirdPartyOAuthProviderLOOTLOCKER = {\n lootlocker: 'lootlocker',\n} as const;\n\n/**\n * LootLocker oauth configuration\n */\nexport interface LootLockerOAuthConfig {\n /** Enable OAuth provider. */\n enabled: boolean;\n /** OAuth provider type */\n provider: ThirdPartyOAuthProviderLOOTLOCKER;\n}\n\nexport type ThirdPartyOAuthProviderBETTERAUTH = typeof ThirdPartyOAuthProviderBETTERAUTH[keyof typeof ThirdPartyOAuthProviderBETTERAUTH];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const ThirdPartyOAuthProviderBETTERAUTH = {\n 'better-auth': 'better-auth',\n} as const;\n\n/**\n * Better Auth configuration\n */\nexport interface BetterAuthConfig {\n /** Enable OAuth provider. */\n enabled: boolean;\n /** OAuth provider type */\n provider: ThirdPartyOAuthProviderBETTERAUTH;\n /** Base URL of the Better Auth instance. E.g. https://your-app.com/api/auth */\n baseUrl: string;\n}\n\nexport type AuthConfig = EmailAuthConfig | GuestAuthConfig | Web3AuthConfig | PhoneAuthConfig | SupabaseAuthConfig | OIDCAuthConfig | AccelbyteOAuthConfig | GoogleOAuthConfig | TwitterOAuthConfig | FacebookOAuthConfig | AppleOAuthConfig | LineOAuthConfig | DiscordOAuthConfig | EpicGamesOAuthConfig | PlayFabOAuthConfig | FirebaseOAuthConfig | CustomAuthConfig | LootLockerOAuthConfig | BetterAuthConfig;\n\n/**\n * Response for the OAuth config list method.\n */\nexport interface OAuthConfigListResponse {\n /** List of the OAuth providers configurations */\n data: AuthConfig[];\n}\n\nexport interface GrantOAuthResponse {\n authorizationCode?: string;\n accessToken?: string;\n refreshToken?: string;\n playerId?: string;\n}\n\nexport interface GrantCallbackRequest {\n code: string;\n state: string;\n}\n\n/**\n * OAuth provider specific configuration.\n */\nexport type OAuthConfigResponse = AuthConfig;\n\n/**\n * Request for the configuration endpoints for the OAuth providers\n */\nexport type OAuthConfigRequest = AuthConfig;\n\nexport type AuthMigrationStatus = typeof AuthMigrationStatus[keyof typeof AuthMigrationStatus];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const AuthMigrationStatus = {\n created: 'created',\n running: 'running',\n paused: 'paused',\n completed: 'completed',\n failed: 'failed',\n canceled: 'canceled',\n} as const;\n\n/**\n * Mapping strategy for the migration. This is used to transform the ids between the source and destination providers.\nFor the transformation, the order of the operations is:\n1. Trim the prefix and suffix from the destination id.\n2. Add the prefix and suffix to the destination id.\nWhen a user is authenticated in the destination provider, the id is transformed using the mapping strategy to find if exists in the source provider.\nIf the id is not found, the user is created in the destination provider.\nIf the id is found, the user in the destination provider is linked to the source provider.\n */\nexport interface MappingStrategy {\n /** Prefix to trim from the destination id. */\n trimPrefix?: string;\n /** Suffix to trim from the destination id. */\n trimSuffix?: string;\n /** Prefix to add to the destination id. */\n addPrefix?: string;\n /** Suffix to add to the destination id. */\n addSuffix?: string;\n}\n\n/**\n * Auth Migration Response.\n */\nexport interface AuthMigrationResponse {\n /** Unique identifier for the migration. */\n id: string;\n /** The source provider for the migration. */\n sourceProvider: AuthProvider;\n /** The destination provider for the migration. */\n destinationProvider: AuthProvider;\n /** The status of the migration. */\n status: AuthMigrationStatus;\n /** The created date of the migration. */\n createdAt: string;\n /** If the migration is finished, this will be the date it was finished. */\n finishedAt?: string;\n /** The mapping strategy used for the migration.\nIf not provided, the direct mapping will be used. */\n mappingStrategy?: MappingStrategy;\n}\n\n/**\n * Request for migrating authentication from one provider to another\n */\nexport interface CreateMigrationRequest {\n /** The mapping strategy used for the migration.\nIf not provided, the direct mapping will be used. */\n mappingStrategy?: MappingStrategy;\n /** Destination provider */\n destinationProvider: AuthProvider;\n /** Source provider */\n sourceProvider: AuthProvider;\n}\n\nexport interface AuthMigrationListResponse {\n object: ResponseTypeLIST;\n url: string;\n data: AuthMigrationResponse[];\n start: number;\n end: number;\n total: number;\n}\n\n/**\n * Request for listing Migrations\n */\nexport interface ListMigrationsRequest {\n /**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\n limit?: number;\n /**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\n skip?: number;\n /** Specifies the order in which to sort the results. */\n order?: PrismaSortOrder;\n /** Source provider */\n sourceProvider?: AuthProvider;\n /** Destination provider */\n destinationProvider?: AuthProvider;\n /** Status of the migration */\n status?: AuthMigrationStatus[];\n}\n\n/**\n * Request for update the status of a migration\n */\nexport interface UpdateMigrationRequest {\n /** The mapping strategy used for the migration.\nIf not provided, the direct mapping will be used. */\n mappingStrategy?: MappingStrategy;\n /** Status of the migration */\n status: AuthMigrationStatus;\n}\n\nexport type AuthenticationType = typeof AuthenticationType[keyof typeof AuthenticationType];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const AuthenticationType = {\n oauth: 'oauth',\n basic: 'basic',\n third_party: 'third_party',\n} as const;\n\nexport interface AuthProviderWithTypeResponse {\n type: AuthenticationType;\n provider: AuthProvider;\n}\n\nexport interface AuthProviderListResponse {\n data: AuthProviderWithTypeResponse[];\n}\n\nexport interface ListConfigRequest {\n enabled?: boolean;\n}\n\nexport type AuthPlayerResponseWithRecoverySharePlayer = PlayerResponse | PickPlayerResponseId;\n\nexport interface AuthPlayerResponseWithRecoveryShare {\n player?: AuthPlayerResponseWithRecoverySharePlayer;\n id: string;\n object: EntityTypePLAYER;\n createdAt: number;\n linkedAccounts: LinkedAccountResponse[];\n recoveryShare?: string;\n}\n\nexport interface CreateAuthPlayerRequest {\n /** The third party user id. */\n thirdPartyUserId: string;\n /** The third party provider. */\n thirdPartyProvider: ThirdPartyOAuthProvider;\n /** Pre generate embedded account. */\n preGenerateEmbeddedAccount: boolean;\n /** The chain ID. Must be a [supported chain](/development/chains). */\n chainId?: number;\n /** Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format. Individual keys can be unset by posting an empty value to them. All keys can be unset by posting an empty value to metadata. */\n metadata?: PlayerMetadata;\n}\n\nexport interface AuthPlayerListResponse {\n object: ResponseTypeLIST;\n url: string;\n data: AuthPlayerResponse[];\n start: number;\n end: number;\n total: number;\n}\n\nexport interface AuthPlayerListQueries {\n /**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\n limit?: number;\n /**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\n skip?: number;\n /** Specifies the order in which to sort the results. */\n order?: PrismaSortOrder;\n /** Specifies the email address of the user. */\n email?: string;\n /** Specifies the external user ID. */\n externalUserId?: string;\n}\n\nexport interface AuthSessionResponse {\n livemode: boolean;\n projectId: string;\n playerId: string;\n issuer: string;\n issuedAt: number;\n expiration: number;\n sessionId: string;\n}\n\nexport interface JwtKey {\n kty: string;\n x: string;\n y: string;\n crv: string;\n kid: string;\n use: string;\n alg: string;\n}\n\nexport interface JwtKeyResponse {\n keys: JwtKey[];\n}\n\nexport interface AuthenticatedPlayerResponse {\n /** Player's identifier. */\n player: AuthPlayerResponse;\n}\n\nexport interface AuthorizePlayerRequest {\n /** The authorization code received from the api to authorize the project to use the Ecosystem player. */\n authorizationCode: string;\n}\n\nexport type GetTransactionIntentsParams = {\n/**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\nlimit?: number;\n/**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\nskip?: number;\n/**\n * Specifies the order in which to sort the results.\n */\norder?: PrismaSortOrder;\n/**\n * Specifies the fields to expand in the response.\n */\nexpand?: TransactionIntentResponseExpandable[];\n/**\n * The chain ID. Must be a [supported chain](/development/chains).\n */\nchainId?: number;\n/**\n * Filter by account ID or developer account (starts with acc_ or dac_ respectively).\n */\naccount?: string[];\n/**\n * Filter by player ID (starts with pla_).\n */\nplayer?: string[];\n/**\n * Filter by successful (1) or failed (0) transaction intents.\n */\nstatus?: number;\n/**\n * Filter by policy ID (starts with pol_).\n */\npolicy?: string[];\n};\n\nexport type GetTransactionIntentParams = {\n/**\n * Specifies the expandable fields.\n */\nexpand?: TransactionIntentResponseExpandable[];\n};\n\nexport type ListSubscriptionLogsParams = {\n/**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\nlimit?: number;\n/**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\nskip?: number;\n/**\n * Specifies the order in which to sort the results.\n */\norder?: PrismaSortOrder;\n/**\n * Specifies the topic of the subscription logs\n */\ntopic?: APITopic;\n/**\n * Specifies the status of the subscription logs\n */\nstatus?: Status;\n/**\n * Specifies the object ID of the object related to triggered notification\n */\nobject?: string;\n/**\n * Specifies the subscription ID\n */\nsubscription?: string;\n/**\n * Specifies the trigger ID\n */\ntrigger?: string;\n/**\n * Specifies the request ID\n */\nrequestID?: string;\n};\n\nexport type TestTrigger200 = {\n sent: boolean;\n};\n\nexport type GetDeveloperAccountsParams = {\n/**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\nlimit?: number;\n/**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\nskip?: number;\n/**\n * Specifies the order in which to sort the results.\n */\norder?: PrismaSortOrder;\n/**\n * Specifies the fields to expand in the response.\n */\nexpand?: DeveloperAccountResponseExpandable[];\n/**\n * Specifies whether to include deleted dev accounts.\n */\ndeleted?: boolean;\n};\n\nexport type GetDeveloperAccountParams = {\nexpand?: DeveloperAccountResponseExpandable[];\n};\n\nexport type GetVerificationPayloadParams = {\n/**\n * Specifies the address\n */\naddress: string;\n};\n\nexport type GetPlayerSessionsParams = {\n/**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\nlimit?: number;\n/**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\nskip?: number;\n/**\n * Specifies the order in which to sort the results.\n */\norder?: PrismaSortOrder;\n/**\n * The player ID (starts with pla_)\n */\nplayer: string;\n/**\n * Specifies the fields to expand in the response.\n */\nexpand?: SessionResponseExpandable[];\n};\n\nexport type GetSessionParams = {\n/**\n * Specifies the fields to expand.\n */\nexpand?: SessionResponseExpandable[];\n};\n\nexport type GetPolicyRulesParams = {\n/**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\nlimit?: number;\n/**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\nskip?: number;\n/**\n * Specifies the order in which to sort the results.\n */\norder?: PrismaSortOrder;\n/**\n * Specifies the fields to expand in the response.\n */\nexpand?: GetPolicyRulesExpandItem[];\n/**\n * Specifies the unique policy ID (starts with pol_).\n */\npolicy: string;\n};\n\n/**\n */\nexport type GetPolicyRulesExpandItem = typeof GetPolicyRulesExpandItem[keyof typeof GetPolicyRulesExpandItem];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetPolicyRulesExpandItem = {\n contract: 'contract',\n} as const;\n\nexport type GetPoliciesParams = {\n/**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\nlimit?: number;\n/**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\nskip?: number;\n/**\n * Specifies the order in which to sort the results.\n */\norder?: PrismaSortOrder;\n/**\n * Specifies the fields to expand in the response.\n */\nexpand?: PolicyResponseExpandable[];\n/**\n * Specifies the name of the policy.\n */\nname?: string;\n/**\n * Specifies whether to include deleted policies.\n */\ndeleted?: boolean;\n/**\n * The chain ID of the policy.\n */\nchainId?: number;\n/**\n * Specifies whether to include enabled policies.\n */\nenabled?: boolean;\n};\n\nexport type GetPolicyParams = {\n/**\n * Specifies the fields to expand.\n */\nexpand?: PolicyResponseExpandable[];\n};\n\nexport type GetPolicyTotalGasUsageParams = {\n/**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\nlimit?: number;\n/**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\nskip?: number;\n/**\n * Specifies the order in which to sort the results.\n */\norder?: PrismaSortOrder;\n};\n\nexport type GetPolicyReportTransactionIntentsParams = {\n/**\n * The start date of the period in unix timestamp.\n */\nto: number;\n/**\n * The end date of the period in unix timestamp.\n */\nfrom: number;\n};\n\nexport type GetPlayersParams = {\n/**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\nlimit?: number;\n/**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\nskip?: number;\n/**\n * Specifies the order in which to sort the results.\n */\norder?: PrismaSortOrder;\n/**\n * Specifies the fields to expand in the response.\n */\nexpand?: PlayerResponseExpandable[];\n/**\n * Filter by player name.\n */\nname?: string;\n};\n\nexport type GetPlayerParams = {\n/**\n * Specifies the expandable fields.\n */\nexpand?: PlayerResponseExpandable[];\n};\n\nexport type ListPaymastersParams = {\n/**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\nlimit?: number;\n/**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\nskip?: number;\n/**\n * Specifies the order in which to sort the results.\n */\norder?: PrismaSortOrder;\n};\n\nexport type GetProjectLogsParams = {\n/**\n * .\n */\nmethod?: string[];\n/**\n * Specifies the unique project ID.\n */\nid?: string;\n};\n\nexport type ListForwarderContractsParams = {\n/**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\nlimit?: number;\n/**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\nskip?: number;\n/**\n * Specifies the order in which to sort the results.\n */\norder?: PrismaSortOrder;\n};\n\nexport type GetEventsParams = {\n/**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\nlimit?: number;\n/**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\nskip?: number;\n/**\n * Specifies the order in which to sort the results.\n */\norder?: PrismaSortOrder;\n/**\n * Specifies the name of the event\n */\nname?: string;\n/**\n * Specifies if display deleted events\n */\ndeleted?: boolean;\n};\n\nexport type GetContractsParams = {\n/**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\nlimit?: number;\n/**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\nskip?: number;\n/**\n * Specifies the order in which to sort the results.\n */\norder?: PrismaSortOrder;\n/**\n * Specifies the name of the contract.\n */\nname?: string;\n/**\n * Specifies whether to include deleted contracts.\n */\ndeleted?: boolean;\n/**\n * The chain ID of the contract.\n */\nchainId?: number;\n/**\n * Specifies the address of the contract.\n */\naddress?: string;\n};\n\nexport type ReadContractParams = {\n/**\n * The function name of the contract.\n */\nfunctionName: string;\n/**\n * The function arguments of the contract, in string format. Accepts pla_, con_ and acc_ IDs.\n */\nfunctionArgs?: unknown[];\n};\n\nexport type GetAccountsParams = {\n/**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\nlimit?: number;\n/**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\nskip?: number;\n/**\n * Specifies the order in which to sort the results.\n */\norder?: PrismaSortOrder;\n/**\n * The chain ID. Must be a [supported chain](/development/chains).\n */\nchainId?: number;\n/**\n * Specifies the unique player ID (starts with pla_)\n */\nplayer?: string;\n/**\n * Specifies the address of the account\n */\naddress?: string;\n/**\n * Specifies the fields to expand in the response.\n */\nexpand?: AccountResponseExpandable[];\n};\n\nexport type GetAccountParams = {\nexpand?: AccountResponseExpandable[];\n};\n\nexport type GetAuthUsersParams = {\n/**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\nlimit?: number;\n/**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\nskip?: number;\n/**\n * Specifies the order in which to sort the results.\n */\norder?: PrismaSortOrder;\n/**\n * Filter by user name.\n */\nname?: string;\n/**\n * Filter by external user ID.\n */\nexternalUserId?: string;\n};\n\nexport type ListBackendWalletsParams = {\n/**\n * Number of wallets to return (default: 10, max: 100).\n */\nlimit?: number;\n/**\n * Number of wallets to skip (for pagination).\n */\nskip?: number;\n/**\n * Filter by chain type.\n */\nchainType?: ListBackendWalletsChainType;\n/**\n * Filter by wallet address.\n */\naddress?: string;\n/**\n * Filter by wallet name.\n */\nname?: string;\n/**\n * Filter by associated wallet ID (starts with `pla_`).\n */\nwallet?: string;\n};\n\nexport type ListBackendWalletsChainType = typeof ListBackendWalletsChainType[keyof typeof ListBackendWalletsChainType];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const ListBackendWalletsChainType = {\n EVM: 'EVM',\n SVM: 'SVM',\n} as const;\n\nexport type GetAccountsV2Params = {\n/**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\nlimit?: number;\n/**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\nskip?: number;\n/**\n * Specifies the order in which to sort the results.\n */\norder?: PrismaSortOrder;\n/**\n * The chain ID. Must be a [supported chain](/development/chains).\n */\nchainId?: number;\n/**\n * Specifies the unique user ID (starts with pla_)\n */\nuser?: string;\n/**\n * The chain type. Must be either \"EVM\" or \"SVM\".\n */\nchainType?: GetAccountsV2ChainType;\n/**\n * Specifies the type of account. Must be either \"Smart Account\" or \"Externally Owned Account\".\n */\naccountType?: GetAccountsV2AccountType;\n/**\n * Specifies the key custody of the account. Must be either \"Developer\" or \"User\".\n */\ncustody?: GetAccountsV2Custody;\n/**\n * Specifies the account address\n */\naddress?: string;\n};\n\nexport type GetAccountsV2ChainType = typeof GetAccountsV2ChainType[keyof typeof GetAccountsV2ChainType];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetAccountsV2ChainType = {\n EVM: 'EVM',\n SVM: 'SVM',\n} as const;\n\nexport type GetAccountsV2AccountType = typeof GetAccountsV2AccountType[keyof typeof GetAccountsV2AccountType];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetAccountsV2AccountType = {\n Externally_Owned_Account: 'Externally Owned Account',\n Smart_Account: 'Smart Account',\n Delegated_Account: 'Delegated Account',\n} as const;\n\nexport type GetAccountsV2Custody = typeof GetAccountsV2Custody[keyof typeof GetAccountsV2Custody];\n\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const GetAccountsV2Custody = {\n Developer: 'Developer',\n User: 'User',\n} as const;\n\nexport type GetSignerIdByAddressParams = {\naddress: string;\n};\n\nexport type SignupEmailPassword201 = AuthResponse | ActionRequiredResponse;\n\nexport type LoginEmailPassword200 = AuthResponse | ActionRequiredResponse;\n\nexport type LinkEmail200 = AuthPlayerResponse | ActionRequiredResponse;\n\nexport type PoolOAuthParams = {\nkey: string;\n};\n\nexport type DeprecatedCallbackOAuthParams = {\n/**\n * Specifies the oauth code.\n */\ncode: string;\n/**\n * Specifies the oauth state.\n */\nstate: string;\n};\n\nexport type CallbackOAuthParams = {\n/**\n * Specifies the oauth code.\n */\ncode: string;\n/**\n * Specifies the oauth state.\n */\nstate: string;\n};\n\nexport type ListParams = {\nenabled?: boolean;\n};\n\nexport type GetAuthPlayersParams = {\n/**\n * Specifies the maximum number of records to return.\n * @minimum 1\n */\nlimit?: number;\n/**\n * Specifies the offset for the first records to return.\n * @minimum 0\n */\nskip?: number;\n/**\n * Specifies the order in which to sort the results.\n */\norder?: PrismaSortOrder;\n/**\n * Specifies the email address of the user.\n */\nemail?: string;\n/**\n * Specifies the external user ID.\n */\nexternalUserId?: string;\n};\n\nexport type VerifyAuthTokenParams = {\n/**\n * Specifies the auth token.\n */\ntoken: string;\n};\n\nexport type Authorize200 = AuthPlayerResponse | AuthenticatedPlayerResponse;\n\n","/**\n * Generated by orval v7.18.0 🍺\n * Do not edit manually.\n * Openfort API\n * Complete Openfort API references and guides can be found at: https://www.openfort.io/docs\n * OpenAPI spec version: 1.0.0\n */\nimport type {\n CreatePaymasterRequest,\n ListPaymastersParams,\n PaymasterDeleteResponse,\n PaymasterResponse\n} from '../openfortAPI.schemas';\n\nimport { openfortApiClient } from '../../openfortApiClient';\n\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n\n /**\n * Create a new paymaster.\n\nThis object represents the paymaster that will be used to pay the gas fees of the transactions.\n * @summary Create a new paymaster.\n */\nexport const createPaymaster = (\n createPaymasterRequest: CreatePaymasterRequest,\n options?: SecondParameter<typeof openfortApiClient<PaymasterResponse>>,) => {\n return openfortApiClient<PaymasterResponse>(\n {url: `/v1/paymasters`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: createPaymasterRequest\n },\n options);\n }\n /**\n * Returns a list of paymasters.\n\nThis object represents the paymasters that will be used to pay the gas fees for the transactions.\n\nBy default, a maximum of 10 paymasters are shown per page.\n * @summary List paymasters.\n */\nexport const listPaymasters = (\n params?: ListPaymastersParams,\n options?: SecondParameter<typeof openfortApiClient<PaymasterResponse[]>>,) => {\n return openfortApiClient<PaymasterResponse[]>(\n {url: `/v1/paymasters`, method: 'GET',\n params\n },\n options);\n }\n /**\n * Update a paymaster.\n\nThis object represents the paymaster that will be used to pay the gas fees of the transactions.\n * @summary Update a paymaster.\n */\nexport const updatePaymaster = (\n id: string,\n createPaymasterRequest: CreatePaymasterRequest,\n options?: SecondParameter<typeof openfortApiClient<PaymasterResponse>>,) => {\n return openfortApiClient<PaymasterResponse>(\n {url: `/v1/paymasters/${id}`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: createPaymasterRequest\n },\n options);\n }\n /**\n * Returns the paymaster with the given id.\n\nThis object represents the paymaster that will be used to pay the gas fees for the transactions.\n * @summary Get paymaster by id.\n */\nexport const getPaymaster = (\n id: string,\n options?: SecondParameter<typeof openfortApiClient<PaymasterResponse>>,) => {\n return openfortApiClient<PaymasterResponse>(\n {url: `/v1/paymasters/${id}`, method: 'GET'\n },\n options);\n }\n /**\n * Delete the paymaster with the given id.\n\nThis object represents the paymaster that will be used to pay the gas fees for the transactions.\n * @summary Delete paymaster by id.\n */\nexport const deletePaymaster = (\n id: string,\n options?: SecondParameter<typeof openfortApiClient<PaymasterDeleteResponse>>,) => {\n return openfortApiClient<PaymasterDeleteResponse>(\n {url: `/v1/paymasters/${id}`, method: 'DELETE'\n },\n options);\n }\n export type CreatePaymasterResult = NonNullable<Awaited<ReturnType<typeof createPaymaster>>>\nexport type ListPaymastersResult = NonNullable<Awaited<ReturnType<typeof listPaymasters>>>\nexport type UpdatePaymasterResult = NonNullable<Awaited<ReturnType<typeof updatePaymaster>>>\nexport type GetPaymasterResult = NonNullable<Awaited<ReturnType<typeof getPaymaster>>>\nexport type DeletePaymasterResult = NonNullable<Awaited<ReturnType<typeof deletePaymaster>>>\n","/**\n * Generated by orval v7.18.0 🍺\n * Do not edit manually.\n * Openfort API\n * Complete Openfort API references and guides can be found at: https://www.openfort.io/docs\n * OpenAPI spec version: 1.0.0\n */\nimport type {\n GetPlayerParams,\n GetPlayersParams,\n PlayerCancelTransferOwnershipRequest,\n PlayerCreateRequest,\n PlayerDeleteResponse,\n PlayerListResponse,\n PlayerResponse,\n PlayerTransferOwnershipRequest,\n PlayerUpdateRequest,\n TransactionIntentResponse\n} from '../openfortAPI.schemas';\n\nimport { openfortApiClient } from '../../openfortApiClient';\n\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n\n /**\n * By default, a maximum of 10 players are shown.\n\nReturns the latest 10 transaction intents that were created with each player.\n * @summary List players.\n */\nexport const getPlayers = (\n params?: GetPlayersParams,\n options?: SecondParameter<typeof openfortApiClient<PlayerListResponse>>,) => {\n return openfortApiClient<PlayerListResponse>(\n {url: `/v1/players`, method: 'GET',\n params\n },\n options);\n }\n /**\n * Creates a player.\n * @summary Create a player object.\n */\nexport const createPlayer = (\n playerCreateRequest: PlayerCreateRequest,\n options?: SecondParameter<typeof openfortApiClient<PlayerResponse>>,) => {\n return openfortApiClient<PlayerResponse>(\n {url: `/v1/players`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: playerCreateRequest\n },\n options);\n }\n /**\n * Retrieves the details of a player that has previously been created.\n\nReturns the latest 10 transaction intents that were created with this player.\n * @summary Retrieves the details of an existing player.\n */\nexport const getPlayer = (\n id: string,\n params?: GetPlayerParams,\n options?: SecondParameter<typeof openfortApiClient<PlayerResponse>>,) => {\n return openfortApiClient<PlayerResponse>(\n {url: `/v1/players/${id}`, method: 'GET',\n params\n },\n options);\n }\n /**\n * Updates the specified player by setting the values of the parameters passed.\n * @summary Updates a player object.\n */\nexport const updatePlayer = (\n id: string,\n playerUpdateRequest: PlayerUpdateRequest,\n options?: SecondParameter<typeof openfortApiClient<PlayerResponse>>,) => {\n return openfortApiClient<PlayerResponse>(\n {url: `/v1/players/${id}`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: playerUpdateRequest\n },\n options);\n }\n /**\n * It will delete all linked accounts the player is authenticated with.\nIf the player has a linked embedded signer, it will be deleted as well.\n * @summary Deletes a player object.\n */\nexport const deletePlayer = (\n id: string,\n options?: SecondParameter<typeof openfortApiClient<PlayerDeleteResponse>>,) => {\n return openfortApiClient<PlayerDeleteResponse>(\n {url: `/v1/players/${id}`, method: 'DELETE'\n },\n options);\n }\n /**\n * This endpoint allows you to perform a request to change the owner of an account.\nTo perform an update on the owner of an account, first you must provide a new owner address.\nOnce requested, the owner must accept to take ownership by calling `acceptOwnership()` in the smart contract account.\n * @summary Request transfer ownership of a player.\n */\nexport const requestTransferAccountOwnership = (\n id: string,\n playerTransferOwnershipRequest: PlayerTransferOwnershipRequest,\n options?: SecondParameter<typeof openfortApiClient<TransactionIntentResponse>>,) => {\n return openfortApiClient<TransactionIntentResponse>(\n {url: `/v1/players/${id}/request_transfer_ownership`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: playerTransferOwnershipRequest\n },\n options);\n }\n /**\n * This endpoint allows you to cancel a pending transfer of ownership.\n * @summary Cancel request to transfer ownership of a player.\n */\nexport const cancelTransferAccountOwnership = (\n id: string,\n playerCancelTransferOwnershipRequest: PlayerCancelTransferOwnershipRequest,\n options?: SecondParameter<typeof openfortApiClient<TransactionIntentResponse>>,) => {\n return openfortApiClient<TransactionIntentResponse>(\n {url: `/v1/players/${id}/cancel_transfer_ownership`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: playerCancelTransferOwnershipRequest\n },\n options);\n }\n export type GetPlayersResult = NonNullable<Awaited<ReturnType<typeof getPlayers>>>\nexport type CreatePlayerResult = NonNullable<Awaited<ReturnType<typeof createPlayer>>>\nexport type GetPlayerResult = NonNullable<Awaited<ReturnType<typeof getPlayer>>>\nexport type UpdatePlayerResult = NonNullable<Awaited<ReturnType<typeof updatePlayer>>>\nexport type DeletePlayerResult = NonNullable<Awaited<ReturnType<typeof deletePlayer>>>\nexport type RequestTransferAccountOwnershipResult = NonNullable<Awaited<ReturnType<typeof requestTransferAccountOwnership>>>\nexport type CancelTransferAccountOwnershipResult = NonNullable<Awaited<ReturnType<typeof cancelTransferAccountOwnership>>>\n","/**\n * Generated by orval v7.18.0 🍺\n * Do not edit manually.\n * Openfort API\n * Complete Openfort API references and guides can be found at: https://www.openfort.io/docs\n * OpenAPI spec version: 1.0.0\n */\nimport type {\n CreatePolicyRequest,\n GasReportListResponse,\n GasReportTransactionIntentsListResponse,\n GetPoliciesParams,\n GetPolicyParams,\n GetPolicyReportTransactionIntentsParams,\n GetPolicyTotalGasUsageParams,\n PolicyBalanceWithdrawResponse,\n PolicyDeleteResponse,\n PolicyListResponse,\n PolicyResponse,\n TransactionIntentResponse,\n UpdatePolicyRequest,\n WithdrawalPolicyRequest\n} from '../openfortAPI.schemas';\n\nimport { openfortApiClient } from '../../openfortApiClient';\n\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n\n /**\n * Returns a list of Policies.\n\nReturns the latest 10 transaction intents for each policy.\n * @summary List policies.\n */\nexport const getPolicies = (\n params?: GetPoliciesParams,\n options?: SecondParameter<typeof openfortApiClient<PolicyListResponse>>,) => {\n return openfortApiClient<PolicyListResponse>(\n {url: `/v1/policies`, method: 'GET',\n params\n },\n options);\n }\n /**\n * @summary Create a policy object.\n */\nexport const createPolicy = (\n createPolicyRequest: CreatePolicyRequest,\n options?: SecondParameter<typeof openfortApiClient<PolicyResponse>>,) => {\n return openfortApiClient<PolicyResponse>(\n {url: `/v1/policies`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: createPolicyRequest\n },\n options);\n }\n /**\n * Retrieves the details of a Policy that has previously been created.\n\nReturns the latest 10 transaction intents that used this policy.\n * @summary Get a policy object.\n */\nexport const getPolicy = (\n id: string,\n params?: GetPolicyParams,\n options?: SecondParameter<typeof openfortApiClient<PolicyResponse>>,) => {\n return openfortApiClient<PolicyResponse>(\n {url: `/v1/policies/${id}`, method: 'GET',\n params\n },\n options);\n }\n /**\n * @summary Update a policy object.\n */\nexport const updatePolicy = (\n id: string,\n updatePolicyRequest: UpdatePolicyRequest,\n options?: SecondParameter<typeof openfortApiClient<PolicyResponse>>,) => {\n return openfortApiClient<PolicyResponse>(\n {url: `/v1/policies/${id}`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: updatePolicyRequest\n },\n options);\n }\n /**\n * @summary Delete a policy object.\n */\nexport const deletePolicy = (\n id: string,\n options?: SecondParameter<typeof openfortApiClient<PolicyDeleteResponse>>,) => {\n return openfortApiClient<PolicyDeleteResponse>(\n {url: `/v1/policies/${id}`, method: 'DELETE'\n },\n options);\n }\n /**\n * @summary Disable a policy object.\n */\nexport const disablePolicy = (\n id: string,\n options?: SecondParameter<typeof openfortApiClient<PolicyResponse>>,) => {\n return openfortApiClient<PolicyResponse>(\n {url: `/v1/policies/${id}/disable`, method: 'PUT'\n },\n options);\n }\n /**\n * @summary Enable a policy object.\n */\nexport const enablePolicy = (\n id: string,\n options?: SecondParameter<typeof openfortApiClient<PolicyResponse>>,) => {\n return openfortApiClient<PolicyResponse>(\n {url: `/v1/policies/${id}/enable`, method: 'PUT'\n },\n options);\n }\n /**\n * @summary List all gas reports of a policy.\n */\nexport const getPolicyTotalGasUsage = (\n id: string,\n params?: GetPolicyTotalGasUsageParams,\n options?: SecondParameter<typeof openfortApiClient<GasReportListResponse>>,) => {\n return openfortApiClient<GasReportListResponse>(\n {url: `/v1/policies/${id}/reports`, method: 'GET',\n params\n },\n options);\n }\n /**\n * @summary List transaction intents of a policy report.\n */\nexport const getPolicyReportTransactionIntents = (\n id: string,\n params: GetPolicyReportTransactionIntentsParams,\n options?: SecondParameter<typeof openfortApiClient<GasReportTransactionIntentsListResponse>>,) => {\n return openfortApiClient<GasReportTransactionIntentsListResponse>(\n {url: `/v1/policies/${id}/reports/transaction_intents`, method: 'GET',\n params\n },\n options);\n }\n /**\n * Get the amount of ERC-20 tokens collected by policy.\n\nWhen using a policy that includes payment of gas in ERC-20 tokens, this endpoint returns the amount of tokens paid for gas.\nThis is specific to a policy that doesn't use your own deposited tokens in the paymaster.\n * @summary Get amount of tokens paid for gas policy.\n */\nexport const getPolicyBalance = (\n id: string,\n options?: SecondParameter<typeof openfortApiClient<PolicyBalanceWithdrawResponse>>,) => {\n return openfortApiClient<PolicyBalanceWithdrawResponse>(\n {url: `/v1/policies/${id}/withdraw`, method: 'GET'\n },\n options);\n }\n /**\n * Transfer ERC-20 tokens collected by policy.\n\nWhen using a policy that includes payment of gas in ERC-20 tokens, this endpoint returns the amount of tokens paid for gas.\nThis is specific to a policy that doesn't use your own deposited tokens in the paymaster.\n * @summary Withdraw tokens collected by policy.\n */\nexport const createPolicyWithdrawal = (\n id: string,\n withdrawalPolicyRequest: WithdrawalPolicyRequest,\n options?: SecondParameter<typeof openfortApiClient<TransactionIntentResponse>>,) => {\n return openfortApiClient<TransactionIntentResponse>(\n {url: `/v1/policies/${id}/withdraw`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: withdrawalPolicyRequest\n },\n options);\n }\n export type GetPoliciesResult = NonNullable<Awaited<ReturnType<typeof getPolicies>>>\nexport type CreatePolicyResult = NonNullable<Awaited<ReturnType<typeof createPolicy>>>\nexport type GetPolicyResult = NonNullable<Awaited<ReturnType<typeof getPolicy>>>\nexport type UpdatePolicyResult = NonNullable<Awaited<ReturnType<typeof updatePolicy>>>\nexport type DeletePolicyResult = NonNullable<Awaited<ReturnType<typeof deletePolicy>>>\nexport type DisablePolicyResult = NonNullable<Awaited<ReturnType<typeof disablePolicy>>>\nexport type EnablePolicyResult = NonNullable<Awaited<ReturnType<typeof enablePolicy>>>\nexport type GetPolicyTotalGasUsageResult = NonNullable<Awaited<ReturnType<typeof getPolicyTotalGasUsage>>>\nexport type GetPolicyReportTransactionIntentsResult = NonNullable<Awaited<ReturnType<typeof getPolicyReportTransactionIntents>>>\nexport type GetPolicyBalanceResult = NonNullable<Awaited<ReturnType<typeof getPolicyBalance>>>\nexport type CreatePolicyWithdrawalResult = NonNullable<Awaited<ReturnType<typeof createPolicyWithdrawal>>>\n","/**\n * Generated by orval v7.18.0 🍺\n * Do not edit manually.\n * Openfort API\n * Complete Openfort API references and guides can be found at: https://www.openfort.io/docs\n * OpenAPI spec version: 1.0.0\n */\nimport type {\n CreatePolicyRuleRequest,\n GetPolicyRulesParams,\n PolicyRuleDeleteResponse,\n PolicyRuleListResponse,\n PolicyRuleResponse,\n UpdatePolicyRuleRequest\n} from '../openfortAPI.schemas';\n\nimport { openfortApiClient } from '../../openfortApiClient';\n\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n\n /**\n * Returns a list of policy rules of a policy.\n\nThe policy rules are returned sorted by creation date, with the most recently created policy rules appearing first.\n\nBy default, a maximum of 10 policy rules are shown per page.\n * @summary List policy rules of a policy.\n */\nexport const getPolicyRules = (\n params: GetPolicyRulesParams,\n options?: SecondParameter<typeof openfortApiClient<PolicyRuleListResponse>>,) => {\n return openfortApiClient<PolicyRuleListResponse>(\n {url: `/v1/policy_rules`, method: 'GET',\n params\n },\n options);\n }\n /**\n * @summary Create a policy rule object.\n */\nexport const createPolicyRule = (\n createPolicyRuleRequest: CreatePolicyRuleRequest,\n options?: SecondParameter<typeof openfortApiClient<PolicyRuleResponse>>,) => {\n return openfortApiClient<PolicyRuleResponse>(\n {url: `/v1/policy_rules`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: createPolicyRuleRequest\n },\n options);\n }\n /**\n * @summary Update a policy rule object.\n */\nexport const updatePolicyRule = (\n id: string,\n updatePolicyRuleRequest: UpdatePolicyRuleRequest,\n options?: SecondParameter<typeof openfortApiClient<PolicyRuleResponse>>,) => {\n return openfortApiClient<PolicyRuleResponse>(\n {url: `/v1/policy_rules/${id}`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: updatePolicyRuleRequest\n },\n options);\n }\n /**\n * @summary Deletes a policy rule object.\n */\nexport const deletePolicyRule = (\n id: string,\n options?: SecondParameter<typeof openfortApiClient<PolicyRuleDeleteResponse>>,) => {\n return openfortApiClient<PolicyRuleDeleteResponse>(\n {url: `/v1/policy_rules/${id}`, method: 'DELETE'\n },\n options);\n }\n export type GetPolicyRulesResult = NonNullable<Awaited<ReturnType<typeof getPolicyRules>>>\nexport type CreatePolicyRuleResult = NonNullable<Awaited<ReturnType<typeof createPolicyRule>>>\nexport type UpdatePolicyRuleResult = NonNullable<Awaited<ReturnType<typeof updatePolicyRule>>>\nexport type DeletePolicyRuleResult = NonNullable<Awaited<ReturnType<typeof deletePolicyRule>>>\n","/**\n * Generated by orval v7.18.0 🍺\n * Do not edit manually.\n * Openfort API\n * Complete Openfort API references and guides can be found at: https://www.openfort.io/docs\n * OpenAPI spec version: 1.0.0\n */\nimport type {\n JsonRpcRequest,\n JsonRpcResponse\n} from '../openfortAPI.schemas';\n\nimport { openfortApiClient } from '../../openfortApiClient';\n\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n\n /**\n * Execute JSON-RPC 2.0 wallet methods\n\nThis endpoint handles wallet-namespace JSON-RPC 2.0 requests following the specification at https://www.jsonrpc.org/specification.\nIt supports EIP-7811 wallet methods that operate across multiple chains.\n\n**Supported methods:**\n- `wallet_getAssets`: Retrieve wallet assets across multiple chains with optional filtering\n\n**Authentication:**\nSupports multiple authentication methods including public key access tokens and third-party tokens\n * @summary Execute wallet JSON-RPC methods\n */\nexport const handleRpcRequest = (\n jsonRpcRequest: JsonRpcRequest,\n options?: SecondParameter<typeof openfortApiClient<JsonRpcResponse>>,) => {\n return openfortApiClient<JsonRpcResponse>(\n {url: `/rpc`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: jsonRpcRequest\n },\n options);\n }\n /**\n * Execute chain-specific JSON-RPC 2.0 methods (bundler & paymaster)\n\nThis endpoint handles chain-specific JSON-RPC 2.0 requests for ERC-4337 bundler operations and ERC-7677 paymaster operations.\nThe chainId is specified in the URL path following the standard pattern.\n\n**Supported namespaces:**\n- `eth_*`: ERC-4337 bundler methods (sendUserOperation, estimateUserOperationGas, getUserOperationReceipt, getUserOperationByHash, supportedEntryPoints)\n- `openfort_*`: Openfort bundler extensions (getUserOperationGasPrice, getUserOperationStatus)\n- `pm_*`: ERC-7677 paymaster methods (getPaymasterStubData, getPaymasterData)\n- `wallet_*`: EIP-7811 wallet methods (can also be called here with chainId context)\n * @summary Execute chain-specific bundler and paymaster JSON-RPC methods\n */\nexport const handleChainRpcRequest = (\n chainId: number,\n jsonRpcRequest: JsonRpcRequest,\n options?: SecondParameter<typeof openfortApiClient<JsonRpcResponse>>,) => {\n return openfortApiClient<JsonRpcResponse>(\n {url: `/rpc/${chainId}`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: jsonRpcRequest\n },\n options);\n }\n export type HandleRpcRequestResult = NonNullable<Awaited<ReturnType<typeof handleRpcRequest>>>\nexport type HandleChainRpcRequestResult = NonNullable<Awaited<ReturnType<typeof handleChainRpcRequest>>>\n","/**\n * Generated by orval v7.18.0 🍺\n * Do not edit manually.\n * Openfort API\n * Complete Openfort API references and guides can be found at: https://www.openfort.io/docs\n * OpenAPI spec version: 1.0.0\n */\nimport type {\n CreateSessionRequest,\n GetPlayerSessionsParams,\n GetSessionParams,\n RevokeSessionRequest,\n SessionListResponse,\n SessionResponse,\n SignatureRequest\n} from '../openfortAPI.schemas';\n\nimport { openfortApiClient } from '../../openfortApiClient';\n\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n\n /**\n * Returns a list of Sessions.\n\nReturns the latest 10 transaction intents for each session.\n * @summary List session keys of a player.\n */\nexport const getPlayerSessions = (\n params: GetPlayerSessionsParams,\n options?: SecondParameter<typeof openfortApiClient<SessionListResponse>>,) => {\n return openfortApiClient<SessionListResponse>(\n {url: `/v1/sessions`, method: 'GET',\n params\n },\n options);\n }\n /**\n * Creates a Session.\n * @summary Create a session key.\n */\nexport const createSession = (\n createSessionRequest: CreateSessionRequest,\n options?: SecondParameter<typeof openfortApiClient<SessionResponse>>,) => {\n return openfortApiClient<SessionResponse>(\n {url: `/v1/sessions`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: createSessionRequest\n },\n options);\n }\n /**\n * @summary Revoke the session session key.\n */\nexport const revokeSession = (\n revokeSessionRequest: RevokeSessionRequest,\n options?: SecondParameter<typeof openfortApiClient<SessionResponse>>,) => {\n return openfortApiClient<SessionResponse>(\n {url: `/v1/sessions/revoke`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: revokeSessionRequest\n },\n options);\n }\n /**\n * @summary Send signed userOperationHash to create session.\n */\nexport const signatureSession = (\n id: string,\n signatureRequest: SignatureRequest,\n options?: SecondParameter<typeof openfortApiClient<SessionResponse>>,) => {\n return openfortApiClient<SessionResponse>(\n {url: `/v1/sessions/${id}/signature`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: signatureRequest\n },\n options);\n }\n /**\n * Retrieves the details of a Session that has previously been created.\n\nReturns the latest 10 transaction intents that used this session.\n * @summary Returns a player session by session id\n */\nexport const getSession = (\n id: string,\n params?: GetSessionParams,\n options?: SecondParameter<typeof openfortApiClient<SessionResponse>>,) => {\n return openfortApiClient<SessionResponse>(\n {url: `/v1/sessions/${id}`, method: 'GET',\n params\n },\n options);\n }\n export type GetPlayerSessionsResult = NonNullable<Awaited<ReturnType<typeof getPlayerSessions>>>\nexport type CreateSessionResult = NonNullable<Awaited<ReturnType<typeof createSession>>>\nexport type RevokeSessionResult = NonNullable<Awaited<ReturnType<typeof revokeSession>>>\nexport type SignatureSessionResult = NonNullable<Awaited<ReturnType<typeof signatureSession>>>\nexport type GetSessionResult = NonNullable<Awaited<ReturnType<typeof getSession>>>\n","/**\n * Generated by orval v7.18.0 🍺\n * Do not edit manually.\n * Openfort API\n * Complete Openfort API references and guides can be found at: https://www.openfort.io/docs\n * OpenAPI spec version: 1.0.0\n */\nimport type {\n CreateDeveloperAccountCreateRequest,\n DeveloperAccountDeleteResponse,\n DeveloperAccountGetMessageResponse,\n DeveloperAccountListResponse,\n DeveloperAccountResponse,\n GetDeveloperAccountParams,\n GetDeveloperAccountsParams,\n GetVerificationPayloadParams,\n SignPayloadRequest,\n SignPayloadResponse,\n UpdateDeveloperAccountCreateRequest\n} from '../openfortAPI.schemas';\n\nimport { openfortApiClient } from '../../openfortApiClient';\n\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n\n /**\n * Retrieve the list of the developer accounts for the current project.\n\nReturns the latest 10 transaction intents that were created with each developer account.\n\nBy default, a maximum of 10 accounts are shown per page.\n * @summary List of developer accounts.\n */\nexport const getDeveloperAccounts = (\n params?: GetDeveloperAccountsParams,\n options?: SecondParameter<typeof openfortApiClient<DeveloperAccountListResponse>>,) => {\n return openfortApiClient<DeveloperAccountListResponse>(\n {url: `/v1/settings/developer_accounts`, method: 'GET',\n params\n },\n options);\n }\n /**\n * Create or add a developer account.\nTo add your own external account, add a signature and the address of the account. This verified account can then be used as a verified depositor\n * @summary Create a developer account.\n */\nexport const createDeveloperAccount = (\n createDeveloperAccountCreateRequest: CreateDeveloperAccountCreateRequest,\n options?: SecondParameter<typeof openfortApiClient<DeveloperAccountResponse>>,) => {\n return openfortApiClient<DeveloperAccountResponse>(\n {url: `/v1/settings/developer_accounts`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: createDeveloperAccountCreateRequest\n },\n options);\n }\n /**\n * Signs the typed repositories value with types repositories structure for domain using the [EIP-712](https://eips.ethereum.org/EIPS/eip-712) specification.\n * @summary Sign a given payload\n */\nexport const signPayloadDeveloperAccount = (\n id: string,\n signPayloadRequest: SignPayloadRequest,\n options?: SecondParameter<typeof openfortApiClient<SignPayloadResponse>>,) => {\n return openfortApiClient<SignPayloadResponse>(\n {url: `/v1/settings/developer_accounts/${id}/sign_payload`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: signPayloadRequest\n },\n options);\n }\n /**\n * Update a developer account.\n * @summary Update a developer account.\n */\nexport const updateDeveloperAccount = (\n id: string,\n updateDeveloperAccountCreateRequest: UpdateDeveloperAccountCreateRequest,\n options?: SecondParameter<typeof openfortApiClient<DeveloperAccountResponse>>,) => {\n return openfortApiClient<DeveloperAccountResponse>(\n {url: `/v1/settings/developer_accounts/${id}`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: updateDeveloperAccountCreateRequest\n },\n options);\n }\n /**\n * Retrieve a developer account.\n\nReturns the latest 10 transaction intents that were created with each developer account.\n * @summary Get existing developer account.\n */\nexport const getDeveloperAccount = (\n id: string,\n params?: GetDeveloperAccountParams,\n options?: SecondParameter<typeof openfortApiClient<DeveloperAccountResponse>>,) => {\n return openfortApiClient<DeveloperAccountResponse>(\n {url: `/v1/settings/developer_accounts/${id}`, method: 'GET',\n params\n },\n options);\n }\n /**\n * Delete a developer account from the current project.\n * @summary Delete a developer account.\n */\nexport const deleteDeveloperAccount = (\n id: string,\n options?: SecondParameter<typeof openfortApiClient<DeveloperAccountDeleteResponse>>,) => {\n return openfortApiClient<DeveloperAccountDeleteResponse>(\n {url: `/v1/settings/developer_accounts/${id}`, method: 'DELETE'\n },\n options);\n }\n /**\n * Generate message, which should be signed by the account your want to add as a developer account.\n * @summary Generate message to sign\n */\nexport const getVerificationPayload = (\n params: GetVerificationPayloadParams,\n options?: SecondParameter<typeof openfortApiClient<DeveloperAccountGetMessageResponse>>,) => {\n return openfortApiClient<DeveloperAccountGetMessageResponse>(\n {url: `/v1/settings/developer_accounts/message_to_sign`, method: 'GET',\n params\n },\n options);\n }\n export type GetDeveloperAccountsResult = NonNullable<Awaited<ReturnType<typeof getDeveloperAccounts>>>\nexport type CreateDeveloperAccountResult = NonNullable<Awaited<ReturnType<typeof createDeveloperAccount>>>\nexport type SignPayloadDeveloperAccountResult = NonNullable<Awaited<ReturnType<typeof signPayloadDeveloperAccount>>>\nexport type UpdateDeveloperAccountResult = NonNullable<Awaited<ReturnType<typeof updateDeveloperAccount>>>\nexport type GetDeveloperAccountResult = NonNullable<Awaited<ReturnType<typeof getDeveloperAccount>>>\nexport type DeleteDeveloperAccountResult = NonNullable<Awaited<ReturnType<typeof deleteDeveloperAccount>>>\nexport type GetVerificationPayloadResult = NonNullable<Awaited<ReturnType<typeof getVerificationPayload>>>\n","/**\n * Generated by orval v7.18.0 🍺\n * Do not edit manually.\n * Openfort API\n * Complete Openfort API references and guides can be found at: https://www.openfort.io/docs\n * OpenAPI spec version: 1.0.0\n */\nimport type {\n BaseEntityListResponseLogResponse,\n BaseEntityListResponseTriggerResponse,\n CreateSubscriptionRequest,\n CreateTriggerRequest,\n ListSubscriptionLogsParams,\n SubscriptionDeleteResponse,\n SubscriptionListResponse,\n SubscriptionResponse,\n TestTrigger200,\n TriggerDeleteResponse,\n TriggerResponse\n} from '../openfortAPI.schemas';\n\nimport { openfortApiClient } from '../../openfortApiClient';\n\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n\n /**\n * Returns a list of subscriptions for the given project.\n\nThis object represents the subscriptions where the project owner has subscribed to.\n\nSubscriptions are returned sorted by creation date, with the most recently created subscriptions appearing first.\n\nBy default, a maximum of 10 subscriptions are shown per page.\n * @summary List subscriptions of project.\n */\nexport const getSubscriptions = (\n \n options?: SecondParameter<typeof openfortApiClient<SubscriptionListResponse>>,) => {\n return openfortApiClient<SubscriptionListResponse>(\n {url: `/v1/subscriptions`, method: 'GET'\n },\n options);\n }\n /**\n * Creates a subscription for the given project.\n\nThis object represents the subscription where the project owner has subscribed to.\n * @summary Create subscription for project.\n */\nexport const createSubscription = (\n createSubscriptionRequest: CreateSubscriptionRequest,\n options?: SecondParameter<typeof openfortApiClient<SubscriptionResponse>>,) => {\n return openfortApiClient<SubscriptionResponse>(\n {url: `/v1/subscriptions`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: createSubscriptionRequest\n },\n options);\n }\n /**\n * Lists logs of the triggered subscriptions for the given project.\n\nThis object represents the logs of the triggered subscriptions where the project owner has subscribed to.\n * @summary List logs of triggered subscriptions.\n */\nexport const listSubscriptionLogs = (\n params?: ListSubscriptionLogsParams,\n options?: SecondParameter<typeof openfortApiClient<BaseEntityListResponseLogResponse>>,) => {\n return openfortApiClient<BaseEntityListResponseLogResponse>(\n {url: `/v1/subscriptions/logs`, method: 'GET',\n params\n },\n options);\n }\n /**\n * Returns a subscription for the given project.\n\nThis object represents the subscription where the project owner has subscribed to.\n * @summary Get subscription of project.\n */\nexport const getSubscription = (\n id: string,\n options?: SecondParameter<typeof openfortApiClient<SubscriptionResponse>>,) => {\n return openfortApiClient<SubscriptionResponse>(\n {url: `/v1/subscriptions/${id}`, method: 'GET'\n },\n options);\n }\n /**\n * Deletes a subscription for the given project.\n\nThis object represents the subscription where the project owner has subscribed to.\n * @summary Delete subscription of project.\n */\nexport const deleteSubscription = (\n id: string,\n options?: SecondParameter<typeof openfortApiClient<SubscriptionDeleteResponse>>,) => {\n return openfortApiClient<SubscriptionDeleteResponse>(\n {url: `/v1/subscriptions/${id}`, method: 'DELETE'\n },\n options);\n }\n /**\n * Returns a list of triggers for the given subscription.\n\nThis object represents the triggers where the subscription owner has subscribed to.\n\nTriggers are returned sorted by creation date, with the most recently created triggers appearing first.\n\nBy default, a maximum of 10 triggers are shown per page.\n * @summary List triggers of subscription.\n */\nexport const getTriggers = (\n id: string,\n options?: SecondParameter<typeof openfortApiClient<BaseEntityListResponseTriggerResponse>>,) => {\n return openfortApiClient<BaseEntityListResponseTriggerResponse>(\n {url: `/v1/subscriptions/${id}/triggers`, method: 'GET'\n },\n options);\n }\n /**\n * Creates a trigger for the given subscription.\n\nThis object represents the trigger where the subscription owner has subscribed to.\n * @summary Create trigger for subscription.\n */\nexport const createTrigger = (\n id: string,\n createTriggerRequest: CreateTriggerRequest,\n options?: SecondParameter<typeof openfortApiClient<TriggerResponse>>,) => {\n return openfortApiClient<TriggerResponse>(\n {url: `/v1/subscriptions/${id}/triggers`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: createTriggerRequest\n },\n options);\n }\n /**\n * Returns a trigger for the given id.\n\nThis object represents the trigger where the subscription owner has subscribed to.\n * @summary Get trigger by id.\n */\nexport const getTrigger = (\n id: string,\n triggerId: string,\n options?: SecondParameter<typeof openfortApiClient<TriggerResponse>>,) => {\n return openfortApiClient<TriggerResponse>(\n {url: `/v1/subscriptions/${id}/triggers/${triggerId}`, method: 'GET'\n },\n options);\n }\n /**\n * Deletes a trigger for the given subscription.\n\nThis object represents the trigger where the subscription owner has subscribed to.\n * @summary Delete trigger of subscription.\n */\nexport const deleteTrigger = (\n id: string,\n triggerId: string,\n options?: SecondParameter<typeof openfortApiClient<TriggerDeleteResponse>>,) => {\n return openfortApiClient<TriggerDeleteResponse>(\n {url: `/v1/subscriptions/${id}/triggers/${triggerId}`, method: 'DELETE'\n },\n options);\n }\n /**\n * Test a trigger\n\nReturns a trigger for the given id.\n * @summary Test trigger by id.\n */\nexport const testTrigger = (\n \n options?: SecondParameter<typeof openfortApiClient<TestTrigger200>>,) => {\n return openfortApiClient<TestTrigger200>(\n {url: `/v1/subscriptions/test`, method: 'POST'\n },\n options);\n }\n export type GetSubscriptionsResult = NonNullable<Awaited<ReturnType<typeof getSubscriptions>>>\nexport type CreateSubscriptionResult = NonNullable<Awaited<ReturnType<typeof createSubscription>>>\nexport type ListSubscriptionLogsResult = NonNullable<Awaited<ReturnType<typeof listSubscriptionLogs>>>\nexport type GetSubscriptionResult = NonNullable<Awaited<ReturnType<typeof getSubscription>>>\nexport type DeleteSubscriptionResult = NonNullable<Awaited<ReturnType<typeof deleteSubscription>>>\nexport type GetTriggersResult = NonNullable<Awaited<ReturnType<typeof getTriggers>>>\nexport type CreateTriggerResult = NonNullable<Awaited<ReturnType<typeof createTrigger>>>\nexport type GetTriggerResult = NonNullable<Awaited<ReturnType<typeof getTrigger>>>\nexport type DeleteTriggerResult = NonNullable<Awaited<ReturnType<typeof deleteTrigger>>>\nexport type TestTriggerResult = NonNullable<Awaited<ReturnType<typeof testTrigger>>>\n","/**\n * Generated by orval v7.18.0 🍺\n * Do not edit manually.\n * Openfort API\n * Complete Openfort API references and guides can be found at: https://www.openfort.io/docs\n * OpenAPI spec version: 1.0.0\n */\nimport type {\n CreateTransactionIntentRequest,\n EstimateTransactionIntentGasResult,\n GetTransactionIntentParams,\n GetTransactionIntentsParams,\n SignatureRequest,\n TransactionIntentListResponse,\n TransactionIntentResponse\n} from '../openfortAPI.schemas';\n\nimport { openfortApiClient } from '../../openfortApiClient';\n\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n\n /**\n * Returns a list of TransactionIntents.\n * @summary List transaction intents.\n */\nexport const getTransactionIntents = (\n params?: GetTransactionIntentsParams,\n options?: SecondParameter<typeof openfortApiClient<TransactionIntentListResponse>>,) => {\n return openfortApiClient<TransactionIntentListResponse>(\n {url: `/v1/transaction_intents`, method: 'GET',\n params\n },\n options);\n }\n /**\n * Creates a TransactionIntent.\n\nA pending TransactionIntent has the `response` attribute as undefined.\n\nAfter the TransactionIntent is created and broadcasted to the blockchain, `response` will be populated with the transaction hash and a status (1 success, 0 fail).\n\nWhen using a non-custodial account, a `nextAction` attribute is returned with the `userOperationHash` that must be signed by the owner of the account.\n * @summary Create a transaction intent object.\n */\nexport const createTransactionIntent = (\n createTransactionIntentRequest: CreateTransactionIntentRequest,\n options?: SecondParameter<typeof openfortApiClient<TransactionIntentResponse>>,) => {\n return openfortApiClient<TransactionIntentResponse>(\n {url: `/v1/transaction_intents`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: createTransactionIntentRequest\n },\n options);\n }\n /**\n * Retrieves the details of a TransactionIntent that has previously been created.\n * @summary Get a transaction intent object.\n */\nexport const getTransactionIntent = (\n id: string,\n params?: GetTransactionIntentParams,\n options?: SecondParameter<typeof openfortApiClient<TransactionIntentResponse>>,) => {\n return openfortApiClient<TransactionIntentResponse>(\n {url: `/v1/transaction_intents/${id}`, method: 'GET',\n params\n },\n options);\n }\n /**\n * Estimate the gas cost of broadcasting a TransactionIntent.\n\nThis is a simulation, it does not send the transaction on-chain.\n\nIf a Policy ID is used that includes payment of gas in ERC-20 tokens, an extra field `estimatedTXGasFeeToken` is returned with the estimated amount of tokens that will be used.\n * @summary Estimate gas cost of creating a transaction\n */\nexport const estimateTransactionIntentCost = (\n createTransactionIntentRequest: CreateTransactionIntentRequest,\n options?: SecondParameter<typeof openfortApiClient<EstimateTransactionIntentGasResult>>,) => {\n return openfortApiClient<EstimateTransactionIntentGasResult>(\n {url: `/v1/transaction_intents/estimate_gas_cost`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: createTransactionIntentRequest\n },\n options);\n }\n /**\n * Broadcasts a signed TransactionIntent to the blockchain.\n\nUse this endpoint to send the signed `signableHash`. Openfort will then put it on-chain.\n * @summary Send a signed transaction signableHash.\n */\nexport const signature = (\n id: string,\n signatureRequest: SignatureRequest,\n options?: SecondParameter<typeof openfortApiClient<TransactionIntentResponse>>,) => {\n return openfortApiClient<TransactionIntentResponse>(\n {url: `/v1/transaction_intents/${id}/signature`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: signatureRequest\n },\n options);\n }\n export type GetTransactionIntentsResult = NonNullable<Awaited<ReturnType<typeof getTransactionIntents>>>\nexport type CreateTransactionIntentResult = NonNullable<Awaited<ReturnType<typeof createTransactionIntent>>>\nexport type GetTransactionIntentResult = NonNullable<Awaited<ReturnType<typeof getTransactionIntent>>>\nexport type EstimateTransactionIntentCostResult = NonNullable<Awaited<ReturnType<typeof estimateTransactionIntentCost>>>\nexport type SignatureResult = NonNullable<Awaited<ReturnType<typeof signature>>>\n","/**\n * Generated by orval v7.18.0 🍺\n * Do not edit manually.\n * Openfort API\n * Complete Openfort API references and guides can be found at: https://www.openfort.io/docs\n * OpenAPI spec version: 1.0.0\n */\nimport type {\n AuthUserResponse,\n BaseDeleteEntityResponseEntityTypePLAYER,\n BaseEntityListResponseAuthUserResponse,\n GetAuthUsersParams,\n PregenerateAccountResponse,\n PregenerateUserRequestV2,\n ThirdPartyOAuthRequest\n} from '../openfortAPI.schemas';\n\nimport { openfortApiClient } from '../../openfortApiClient';\n\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n\n /**\n * Retrieves an authenticated users.\n\nUsers have linked accounts and are authenticated with a provider.\n * @summary List authenticated users.\n */\nexport const getAuthUsers = (\n params?: GetAuthUsersParams,\n options?: SecondParameter<typeof openfortApiClient<BaseEntityListResponseAuthUserResponse>>,) => {\n return openfortApiClient<BaseEntityListResponseAuthUserResponse>(\n {url: `/v2/users`, method: 'GET',\n params\n },\n options);\n }\n /**\n * Retrieves an authenticated user.\n\nUsers have linked accounts and are authenticated with a provider.\n * @summary Get authenticated user by id.\n */\nexport const getAuthUser = (\n id: string,\n options?: SecondParameter<typeof openfortApiClient<AuthUserResponse>>,) => {\n return openfortApiClient<AuthUserResponse>(\n {url: `/v2/users/${id}`, method: 'GET'\n },\n options);\n }\n /**\n * It will delete all linked accounts the user is authenticated with.\nIf the user has a linked embedded signer, it will be deleted as well.\n * @summary Delete user by id.\n */\nexport const deleteUser = (\n id: string,\n options?: SecondParameter<typeof openfortApiClient<BaseDeleteEntityResponseEntityTypePLAYER>>,) => {\n return openfortApiClient<BaseDeleteEntityResponseEntityTypePLAYER>(\n {url: `/v2/users/${id}`, method: 'DELETE'\n },\n options);\n }\n /**\n * Pre-generate a user with an embedded account before they authenticate.\nCreates a user record and an embedded account using the provided SSS key shares.\nWhen the user later authenticates (via email, OAuth, third-party auth, etc.)\nwith the same identifier, they will be linked to this pre-generated account.\n\nYou can pregenerate using either:\n- `email`: User will be linked when they authenticate with the same email\n- `thirdPartyUserId` + `thirdPartyProvider`: User will be linked when they authenticate via the same third-party provider\n * @summary Pre-generate a user with an embedded account.\n */\nexport const pregenerateUserV2 = (\n pregenerateUserRequestV2: PregenerateUserRequestV2,\n options?: SecondParameter<typeof openfortApiClient<PregenerateAccountResponse>>,) => {\n return openfortApiClient<PregenerateAccountResponse>(\n {url: `/v2/users/pregenerate`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: pregenerateUserRequestV2\n },\n options);\n }\n /**\n * @summary Get user information.\n */\nexport const meV2 = (\n \n options?: SecondParameter<typeof openfortApiClient<AuthUserResponse>>,) => {\n return openfortApiClient<AuthUserResponse>(\n {url: `/iam/v2/me`, method: 'GET'\n },\n options);\n }\n /**\n * @summary Verify oauth token of a third party auth provider.\n */\nexport const thirdPartyV2 = (\n thirdPartyOAuthRequest: ThirdPartyOAuthRequest,\n options?: SecondParameter<typeof openfortApiClient<AuthUserResponse>>,) => {\n return openfortApiClient<AuthUserResponse>(\n {url: `/iam/v2/user/third_party`, method: 'POST',\n headers: {'Content-Type': 'application/json', },\n data: thirdPartyOAuthRequest\n },\n options);\n }\n export type GetAuthUsersResult = NonNullable<Awaited<ReturnType<typeof getAuthUsers>>>\nexport type GetAuthUserResult = NonNullable<Awaited<ReturnType<typeof getAuthUser>>>\nexport type DeleteUserResult = NonNullable<Awaited<ReturnType<typeof deleteUser>>>\nexport type PregenerateUserV2Result = NonNullable<Awaited<ReturnType<typeof pregenerateUserV2>>>\nexport type MeV2Result = NonNullable<Awaited<ReturnType<typeof meV2>>>\nexport type ThirdPartyV2Result = NonNullable<Awaited<ReturnType<typeof thirdPartyV2>>>\n","import { createHmac } from 'node:crypto'\n\n// This function is used to sign a string with a secret key\nexport async function sign(secretKey: string, data: string): Promise<string> {\n const signingKey = secretKey\n .replace('sk_', '')\n .replace('test_', '')\n .replace(/-/g, '')\n return createHmac('sha256', signingKey).update(data, 'utf8').digest('hex')\n}\n","/**\n * Constants for the Openfort SDK.\n *\n * @module Constants\n */\n\n/**\n * Server's RSA-4096 public key for import encryption.\n *\n * This key is used to encrypt private keys before sending them to the server\n * for import. The server holds the corresponding private key in a KMS HSM\n * (non-extractable) to decrypt.\n *\n * Algorithm: RSA-OAEP with SHA-256\n * Key Size: 4096 bits (production) / 2048 bits (development)\n * Format: PEM-encoded SPKI public key\n */\nexport const IMPORT_ENCRYPTION_PUBLIC_KEY = `-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAleRdKA0Hk431RqG0HyJz\nVfeG328BwHhP3nmH8YSRP/elYmS4VLcyOCsgtDFHaNKFghvv9MrIrwaj5xJvttxO\nU6GXFvt+ZaEWyZAWAVw0Q3lk/5J4IWw4C/yAsRtwvr2RVFt2wlfBuB/kwEiLQ16b\nTEGRtyXy2P/zhz8pwtiz3DuRgknpFO3GLIXuWL8Ajwqv5m8ke4eVJBJHcwpyhR+v\nKEVtHptsyhjPn3LyHsHdm8lkhV9JDEQhkFhrYy9U5sjRojWJv7wADmmELWcKUbFV\nlc8isq/c+dFSqai0jBu+L/qMIyG5wG0eCOz1bHF3KSQZOfNF603ze/Uf0odr1q0J\nPZXjzzgCCeox2CpPtgldnFXhFlWhn9kp3qjHAuaNZrv3LqXca8Zjo5S/anUw0Tla\nj/ijB6GwRYZlOhDVe+jDrI9w24TwFWv/I3eTQ78gqfgxD/WTeA9a2gOuwr0hbSE1\nZg6ptwHTHMXce5CDfjPUMKSywcudMRCcbGBTcIAvvw5Wm+H5/P8fdEtXnPzUv3zk\nTltjkVKDi8+7ckhMkElxJgP4xshM9ssj+O8TBDkqrHVLAU+3CkUBvWZfwyZbLzp9\nAplp+RlvI11Ka2fef9hV9AQucXiMKHgSWQNCTo5JXHPFs8Zq+nj0mfycjwOQiNIJ\nFRdRZaYbcqwwEXsZ2R0/P00CAwEAAQ==\n-----END PUBLIC KEY-----`\n\n// `-----BEGIN PUBLIC KEY-----\n// MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApEhDh4E/WszNdUMl3m7f\n// MJro99ppHBud1EFnCRMXA2Ydhjt4PXnkOZuuo8aWjCd5ceJDJpIBve3KjeEw/SjY\n// L5eBXwpirZrTM+Hz6QHFcmtjH+x8lBYn860CgfnpLNFUcfZFJkDCWyOLx0Eb98nw\n// IfMmqGYB2UQ5wUJFwTw0fYVy8stzQgrSr4+CVI074F6kTpIeKt0ovB2ACOOkxIn9\n// w31kdzhKRyXTjiGueP1cCA8jD42HD0BHMyiFiYoFq97ME9RbvDazXZQn11jhZdGh\n// GYKfC847arHZBMsDaX8unVGa79cbRu1ho6aQfJyv0PtTrWxXbjPiooh6Lcb0XKKZ\n// aQIDAQAB\n// -----END PUBLIC KEY-----`\n","/**\n * Encryption utilities for key import/export operations.\n * Uses RSA-4096 OAEP SHA-256 for end-to-end encrypted key transfer.\n *\n * Import: SDK encrypts with server's static RSA public key\n * Export: SDK generates ephemeral RSA key pair, server encrypts with client's public key\n *\n * @module Utilities/Encryption\n */\n\nimport {\n constants,\n generateKeyPairSync,\n privateDecrypt,\n publicEncrypt,\n} from 'node:crypto'\nimport { UserInputValidationError } from '../errors'\n\n/**\n * RSA key pair for export decryption\n */\nexport interface RSAKeyPair {\n /** Base64-encoded SPKI DER public key (to send to server) */\n publicKey: string\n /** PEM-encoded private key (for decryption) */\n privateKeyPem: string\n}\n\n/**\n * Generates an ephemeral RSA-4096 key pair for export encryption.\n * The public key is sent to the server, and the private key is used\n * to decrypt the response.\n *\n * @returns RSA key pair with base64-encoded public key\n */\nexport const generateRSAKeyPair = (): RSAKeyPair => {\n const { publicKey, privateKey } = generateKeyPairSync('rsa', {\n modulusLength: 4096,\n publicKeyEncoding: {\n type: 'spki',\n format: 'der',\n },\n privateKeyEncoding: {\n type: 'pkcs1',\n format: 'pem',\n },\n })\n\n return {\n publicKey: (publicKey as Buffer).toString('base64'),\n privateKeyPem: privateKey as string,\n }\n}\n\n/**\n * Encrypts a private key for import using RSA-OAEP with SHA-256.\n * Uses the server's static RSA public key embedded in the SDK.\n *\n * @param privateKeyHex - Private key as hex string (with or without 0x prefix)\n * @param serverPublicKeyPem - Server's RSA public key in PEM format\n * @returns Encrypted data (base64-encoded)\n */\nexport const encryptForImport = (\n privateKeyHex: string,\n serverPublicKeyPem: string,\n): string => {\n const keyHex = privateKeyHex.startsWith('0x')\n ? privateKeyHex.slice(2)\n : privateKeyHex\n\n if (!/^[0-9a-fA-F]+$/.test(keyHex)) {\n throw new UserInputValidationError(\n 'Private key must be a valid hexadecimal string',\n )\n }\n\n const privateKeyBytes = Buffer.from(keyHex, 'hex')\n\n const encrypted = publicEncrypt(\n {\n key: serverPublicKeyPem,\n padding: constants.RSA_PKCS1_OAEP_PADDING,\n oaepHash: 'sha256',\n },\n privateKeyBytes,\n )\n\n return encrypted.toString('base64')\n}\n\n/**\n * Decrypts a private key received from the export endpoint.\n * Uses the ephemeral RSA private key generated for this request.\n *\n * @param encryptedPrivateKeyBase64 - Encrypted private key from server (base64)\n * @param privateKeyPem - Your RSA private key in PEM format\n * @returns Decrypted private key as hex string (without 0x prefix)\n */\nexport const decryptExportedPrivateKey = (\n encryptedPrivateKeyBase64: string,\n privateKeyPem: string,\n): string => {\n const encryptedData = Buffer.from(encryptedPrivateKeyBase64, 'base64')\n\n const decrypted = privateDecrypt(\n {\n key: privateKeyPem,\n padding: constants.RSA_PKCS1_OAEP_PADDING,\n oaepHash: 'sha256',\n },\n encryptedData,\n )\n\n return decrypted.toString('hex')\n}\n","/**\n * @module Wallets/EVM/Actions/SignHash\n * Sign a raw hash directly (no EIP-191 prefix)\n */\n\nimport { sign } from '../../../openapi-client'\nimport type { Hash, Hex } from '../types'\n\n/**\n * Options for signing a hash\n */\nexport interface SignHashOptions {\n /** Account ID for API calls */\n accountId: string\n /** Hash to sign (32-byte hex string) */\n hash: Hash\n}\n\n/**\n * Result of sign hash operation\n */\nexport interface SignHashResult {\n /** Signature as hex string */\n signature: Hex\n}\n\n/**\n * Signs a raw hash directly via the Openfort API.\n * Unlike signMessage, this does NOT apply EIP-191 prefix or any hashing.\n * The hash is signed as-is.\n *\n * @param options - Sign hash options\n * @returns The signature\n */\nexport async function signHash(\n options: SignHashOptions,\n): Promise<SignHashResult> {\n const { accountId, hash } = options\n\n // Sign the hash directly via v2 API (no EIP-191 prefix)\n const response = await sign(accountId, { data: hash })\n\n return {\n signature: response.signature as Hex,\n }\n}\n","/**\n * @module Wallets/EVM/Actions/SignMessage\n * Sign an EIP-191 personal message\n */\n\nimport { hashMessage, toHex } from 'viem'\nimport { UserInputValidationError } from '../../../errors'\nimport { sign } from '../../../openapi-client'\nimport type { Address, Hex, SignableMessage } from '../types'\n\n/**\n * Options for signing a message\n */\nexport interface SignMessageOptions {\n /** Account address */\n address: Address\n /** Account ID for API calls */\n accountId: string\n /** Message to sign */\n message: SignableMessage\n}\n\n/**\n * Result of sign message operation\n */\nexport interface SignMessageResult {\n /** Signature as hex string */\n signature: Hex\n}\n\n/**\n * Signs a message using EIP-191 personal sign.\n * The message is hashed with the EIP-191 prefix and signed via the Openfort API.\n *\n * @param options - Sign message options\n * @returns The signature\n */\nexport async function signMessage(\n options: SignMessageOptions,\n): Promise<SignMessageResult> {\n const { accountId, message } = options\n\n // Convert message to string if needed\n let messageStr: string\n if (typeof message === 'string') {\n messageStr = message\n } else if (message instanceof Uint8Array) {\n messageStr = toHex(message)\n } else if ('raw' in message) {\n messageStr =\n typeof message.raw === 'string' ? message.raw : toHex(message.raw)\n } else {\n throw new UserInputValidationError('Invalid message format')\n }\n\n // Hash the message using EIP-191 format: \"\\x19Ethereum Signed Message:\\n\" + len(message) + message\n const messageHash = hashMessage(messageStr)\n\n // Sign the hash directly via v2 API\n const response = await sign(accountId, { data: messageHash })\n\n return {\n signature: response.signature as Hex,\n }\n}\n","/**\n * @module Wallets/EVM/Actions/SignTransaction\n * Sign an EVM transaction\n */\n\nimport {\n keccak256,\n parseSignature,\n type Signature,\n serializeTransaction,\n} from 'viem'\nimport { sign as signApi } from '../../../openapi-client'\nimport type { Address, Hex, TransactionSerializable } from '../types'\n\n/**\n * Options for signing a transaction\n */\nexport interface SignTransactionOptions {\n /** Account address */\n address: Address\n /** Account ID for API calls */\n accountId: string\n /** Transaction to sign */\n transaction: TransactionSerializable\n}\n\n/**\n * Result of sign transaction operation\n */\nexport interface SignTransactionResult {\n /** Signed transaction as hex string (ready to broadcast) */\n signedTransaction: Hex\n /** Transaction hash */\n transactionHash: Hex\n}\n\n/**\n * Signs an EVM transaction via the Openfort API.\n * The transaction is serialized, signed, and returned as a fully signed\n * transaction ready to broadcast.\n *\n * @param options - Sign transaction options\n * @returns The signed transaction and hash\n */\nexport async function signTransaction(\n options: SignTransactionOptions,\n): Promise<SignTransactionResult> {\n const { accountId, transaction } = options\n\n // Serialize the unsigned transaction\n const serialized = serializeTransaction(transaction)\n\n // Sign the serialized transaction via API\n const response = await signApi(accountId, { data: serialized })\n\n // Parse signature into v, r, s components\n const signature = parseSignature(response.signature as Hex) as Signature\n\n // Re-serialize with signature to get fully signed transaction\n const signedTransaction = serializeTransaction(transaction, signature) as Hex\n\n // Hash the signed transaction to get the transaction hash\n const transactionHash = keccak256(signedTransaction)\n\n return {\n signedTransaction,\n transactionHash,\n }\n}\n","/**\n * @module Wallets/EVM/Actions/SignTypedData\n * Sign EIP-712 typed data\n */\n\nimport { hashTypedData } from 'viem'\nimport { sign } from '../../../openapi-client'\nimport type { Address, Hex, TypedData, TypedDataDefinition } from '../types'\n\n/**\n * Options for signing typed data\n */\nexport interface SignTypedDataOptions<\n T extends TypedData | Record<string, unknown> = TypedData,\n P extends keyof T | 'EIP712Domain' = keyof T,\n> {\n /** Account address */\n address: Address\n /** Account ID for API calls */\n accountId: string\n /** Typed data definition */\n typedData: TypedDataDefinition<T, P>\n}\n\n/**\n * Result of sign typed data operation\n */\nexport interface SignTypedDataResult {\n /** Signature as hex string */\n signature: Hex\n}\n\n/**\n * Signs EIP-712 typed data via the Openfort API.\n * The typed data is hashed according to EIP-712 and signed.\n *\n * @param options - Sign typed data options\n * @returns The signature\n */\nexport async function signTypedData<\n T extends TypedData | Record<string, unknown> = TypedData,\n P extends keyof T | 'EIP712Domain' = keyof T,\n>(options: SignTypedDataOptions<T, P>): Promise<SignTypedDataResult> {\n const { accountId, typedData } = options\n\n // Hash the typed data using EIP-712\n const hash = hashTypedData(typedData)\n\n // Sign the hash via v2 API\n const response = await sign(accountId, { data: hash })\n\n return {\n signature: response.signature as Hex,\n }\n}\n","/**\n * @module Wallets/EVM/Accounts/EvmAccount\n * Factory function for creating EVM account objects with bound action methods\n */\n\nimport { signHash as signHashAction } from '../actions/signHash'\nimport { signMessage as signMessageAction } from '../actions/signMessage'\nimport { signTransaction as signTransactionAction } from '../actions/signTransaction'\nimport { signTypedData as signTypedDataAction } from '../actions/signTypedData'\nimport type {\n Address,\n EvmAccount,\n Hash,\n Hex,\n SignableMessage,\n TransactionSerializable,\n TypedData,\n TypedDataDefinition,\n} from '../types'\n\n/**\n * Raw account data from API response\n */\nexport interface EvmAccountData {\n /** Account unique ID */\n id: string\n /** Account address */\n address: string\n}\n\n/**\n * Creates an EVM account object with bound action methods.\n *\n * @param data - Raw account data from API\n * @returns EVM account object with signing methods\n */\nexport function toEvmAccount(data: EvmAccountData): EvmAccount {\n const { id, address } = data\n\n const account: EvmAccount = {\n id,\n address: address as Address,\n custody: 'Developer',\n\n async sign(parameters: { hash: Hash }): Promise<Hex> {\n const result = await signHashAction({\n accountId: id,\n hash: parameters.hash,\n })\n return result.signature\n },\n\n async signMessage(parameters: { message: SignableMessage }): Promise<Hex> {\n const result = await signMessageAction({\n address: address as Address,\n accountId: id,\n message: parameters.message,\n })\n return result.signature\n },\n\n async signTransaction(transaction: TransactionSerializable): Promise<Hex> {\n const result = await signTransactionAction({\n address: address as Address,\n accountId: id,\n transaction,\n })\n return result.signedTransaction\n },\n\n async signTypedData<\n const T extends TypedData | Record<string, unknown>,\n P extends keyof T | 'EIP712Domain' = keyof T,\n >(parameters: TypedDataDefinition<T, P>): Promise<Hex> {\n const result = await signTypedDataAction({\n address: address as Address,\n accountId: id,\n typedData: parameters,\n })\n return result.signature\n },\n }\n\n return account\n}\n","/**\n * @module Wallets/EVM/EvmClient\n * Main client for EVM wallet operations\n */\n\nimport { IMPORT_ENCRYPTION_PUBLIC_KEY } from '../../constants'\nimport {\n AccountNotFoundError,\n EncryptionError,\n UserInputValidationError,\n} from '../../errors'\nimport {\n type BackendWalletResponse,\n createBackendWallet,\n exportPrivateKey,\n getBackendWallet,\n importPrivateKey,\n listBackendWallets,\n sign,\n} from '../../openapi-client'\nimport {\n decryptExportedPrivateKey,\n encryptForImport,\n generateRSAKeyPair,\n} from '../../utilities/encryption'\nimport type { ListAccountsResult } from '../types'\nimport { type EvmAccountData, toEvmAccount } from './accounts/evmAccount'\nimport type {\n CreateEvmAccountOptions,\n EvmAccount,\n ExportEvmAccountOptions,\n GetEvmAccountOptions,\n ImportEvmAccountOptions,\n ListEvmAccountsOptions,\n SignDataOptions,\n} from './types'\n\n/**\n * Converts a BackendWalletResponse to EvmAccountData\n */\nfunction toEvmAccountData(response: BackendWalletResponse): EvmAccountData {\n return {\n id: response.id,\n address: response.address,\n }\n}\n\n/**\n * Options for creating an EVM wallet client\n */\nexport interface EvmClientOptions {\n /** Optional custom API base URL */\n basePath?: string\n /** Optional wallet secret for X-Wallet-Auth header */\n walletSecret?: string\n}\n\n/**\n * Client for managing EVM wallets.\n * Provides methods for creating, retrieving, and managing server-side EVM accounts.\n */\nexport class EvmClient {\n static type = 'evmWallet'\n\n /**\n * Creates a new EVM wallet client.\n *\n * Note: The API client is configured globally via the main Openfort class.\n * This client just provides wallet-specific methods.\n *\n * @param _accessToken - Openfort API key (passed for backwards compatibility)\n * @param _options - Optional client configuration (for backwards compatibility)\n */\n // biome-ignore lint/complexity/noUselessConstructor: Constructor needed for backwards compatibility\n constructor(_accessToken?: string, _options?: string | EvmClientOptions) {\n // The API client is configured globally via openfortApiClient.configure()\n // No per-client configuration needed anymore\n }\n\n /**\n * Creates a new EVM backend wallet.\n *\n * @param options - Account creation options\n * @returns The created EVM account\n *\n * @example\n * ```typescript\n * // Create an EVM wallet\n * const account = await openfort.evm.createAccount();\n *\n * // Create with a specific wallet\n * const account = await openfort.evm.createAccount({\n * wallet: 'pla_...',\n * });\n * ```\n */\n public async createAccount(\n options: CreateEvmAccountOptions = {},\n ): Promise<EvmAccount> {\n const response = await createBackendWallet({\n chainType: 'EVM',\n wallet: options.wallet,\n })\n\n return toEvmAccount({\n id: response.id,\n address: response.address,\n })\n }\n\n /**\n * Retrieves an existing EVM account.\n *\n * @param options - Account retrieval options (id or address)\n * @returns The EVM account\n *\n * @example\n * ```typescript\n * const account = await openfort.evm.getAccount({\n * id: 'acc_...',\n * });\n *\n * // Or by address (requires listing and filtering)\n * const account = await openfort.evm.getAccount({\n * address: '0x...',\n * });\n * ```\n */\n public async getAccount(options: GetEvmAccountOptions): Promise<EvmAccount> {\n if (!options.id && !options.address) {\n throw new UserInputValidationError(\n 'Must provide either id or address to get account',\n )\n }\n\n // If we have an ID, fetch directly\n if (options.id) {\n const response = await getBackendWallet(options.id)\n return toEvmAccount(toEvmAccountData(response))\n }\n\n // For address lookup, use listBackendWallets with address filter\n if (options.address) {\n const wallets = await listBackendWallets({\n address: options.address,\n chainType: 'EVM',\n limit: 1,\n })\n\n if (wallets.data.length === 0) {\n throw new AccountNotFoundError()\n }\n\n return toEvmAccount(toEvmAccountData(wallets.data[0]))\n }\n\n throw new AccountNotFoundError()\n }\n\n /**\n * Lists all EVM backend wallets.\n *\n * @param options - List options (limit, skip, filters)\n * @returns List of EVM accounts\n *\n * @example\n * ```typescript\n * const { accounts } = await openfort.evm.listAccounts({\n * limit: 10,\n * });\n * ```\n */\n public async listAccounts(\n options: ListEvmAccountsOptions = {},\n ): Promise<ListAccountsResult<EvmAccount>> {\n const response = await listBackendWallets({\n limit: options.limit,\n skip: options.skip,\n chainType: 'EVM',\n })\n\n const accounts = response.data.map((wallet) =>\n toEvmAccount(toEvmAccountData(wallet)),\n )\n\n return {\n accounts,\n total: response.total,\n }\n }\n\n /**\n * Imports an EVM account using a private key.\n * The private key is encrypted using RSA-OAEP with SHA-256.\n *\n * @param options - Import options including the private key\n * @returns The imported EVM account\n *\n * @example\n * ```typescript\n * const account = await openfort.evm.importAccount({\n * privateKey: '0x...',\n * });\n * ```\n */\n public async importAccount(\n options: ImportEvmAccountOptions,\n ): Promise<EvmAccount> {\n // Validate private key format\n const privateKeyHex = options.privateKey.startsWith('0x')\n ? options.privateKey.slice(2)\n : options.privateKey\n\n if (!/^[0-9a-fA-F]{64}$/.test(privateKeyHex)) {\n throw new UserInputValidationError(\n 'Private key must be a valid 32-byte hexadecimal string (64 characters)',\n )\n }\n\n // Check if server public key is configured\n if (!IMPORT_ENCRYPTION_PUBLIC_KEY) {\n throw new EncryptionError(\n 'Import encryption public key is not configured. ' +\n 'Please contact Openfort to get the server public key.',\n )\n }\n\n try {\n // Encrypt the private key with the server's RSA public key\n const encryptedPrivateKey = encryptForImport(\n privateKeyHex,\n IMPORT_ENCRYPTION_PUBLIC_KEY,\n )\n\n // Call the import API\n const response = await importPrivateKey({\n encryptedPrivateKey,\n chainType: 'EVM',\n name: options.name,\n })\n\n return toEvmAccount({\n id: response.id,\n address: response.address,\n })\n } catch (error) {\n if (error instanceof UserInputValidationError) {\n throw error\n }\n throw new EncryptionError(\n `Failed to encrypt private key: ${error instanceof Error ? error.message : String(error)}`,\n )\n }\n }\n\n /**\n * Exports an EVM account's private key.\n * Uses RSA-OAEP with SHA-256 for E2E encryption.\n *\n * @param options - Export options with account ID\n * @returns The private key as a hex string (without 0x prefix)\n *\n * @example\n * ```typescript\n * const privateKey = await openfort.evm.exportAccount({\n * id: 'acc_...',\n * });\n * // Returns: 'a1b2c3d4...' (64-character hex string)\n * ```\n */\n public async exportAccount(\n options: ExportEvmAccountOptions,\n ): Promise<string> {\n // Generate ephemeral RSA key pair for decryption\n const { publicKey, privateKeyPem } = generateRSAKeyPair()\n\n // Call the export API with our ephemeral public key\n const response = await exportPrivateKey(options.id, {\n encryptionKey: publicKey,\n })\n\n // Decrypt the private key using our ephemeral private key\n const privateKey = decryptExportedPrivateKey(\n response.encryptedPrivateKey,\n privateKeyPem,\n )\n\n return privateKey\n }\n\n /**\n * Signs data (transaction or message hash) using the backend wallet.\n *\n * @param options - Sign options with account ID and data\n * @returns The signature as a hex string\n *\n * @example\n * ```typescript\n * const signature = await openfort.evm.signData({\n * id: 'acc_...',\n * data: '0x...', // hex-encoded transaction or message hash\n * });\n * ```\n */\n public async signData(options: SignDataOptions): Promise<string> {\n const response = await sign(options.id, {\n data: options.data,\n })\n\n return response.signature\n }\n}\n","/**\n * @module Wallets/Solana/SolanaClient\n * Main client for Solana wallet operations\n */\n\nimport bs58 from 'bs58'\nimport { IMPORT_ENCRYPTION_PUBLIC_KEY } from '../../constants'\nimport {\n AccountNotFoundError,\n EncryptionError,\n UserInputValidationError,\n} from '../../errors'\nimport {\n type BackendWalletResponse,\n createBackendWallet,\n exportPrivateKey,\n getBackendWallet,\n importPrivateKey,\n listBackendWallets,\n sign,\n} from '../../openapi-client'\nimport {\n decryptExportedPrivateKey,\n encryptForImport,\n generateRSAKeyPair,\n} from '../../utilities/encryption'\nimport type { ListAccountsResult } from '../types'\nimport {\n type SolanaAccountData,\n toSolanaAccount,\n} from './accounts/solanaAccount'\nimport type {\n CreateSolanaAccountOptions,\n ExportSolanaAccountOptions,\n GetSolanaAccountOptions,\n ImportSolanaAccountOptions,\n ListSolanaAccountsOptions,\n SolanaAccount,\n} from './types'\n\n/**\n * Converts a BackendWalletResponse to SolanaAccountData\n */\nfunction toSolanaAccountData(\n response: BackendWalletResponse,\n): SolanaAccountData {\n return {\n id: response.id,\n address: response.address,\n }\n}\n\n/**\n * Options for creating a Solana wallet client\n */\nexport interface SolanaClientOptions {\n /** Optional custom API base URL */\n basePath?: string\n /** Optional wallet secret for X-Wallet-Auth header */\n walletSecret?: string\n}\n\n/**\n * Client for managing Solana wallets.\n * Provides methods for creating, retrieving, and managing server-side Solana accounts.\n */\nexport class SolanaClient {\n static type = 'solanaWallet'\n\n /**\n * Creates a new Solana wallet client.\n *\n * Note: The API client is configured globally via the main Openfort class.\n * This client just provides wallet-specific methods.\n *\n * @param _accessToken - Openfort API key (passed for backwards compatibility)\n * @param _options - Optional client configuration (for backwards compatibility)\n */\n // biome-ignore lint/complexity/noUselessConstructor: Constructor needed for backwards compatibility\n constructor(_accessToken?: string, _options?: string | SolanaClientOptions) {\n // The API client is configured globally via openfortApiClient.configure()\n // No per-client configuration needed anymore\n }\n\n /**\n * Creates a new Solana backend wallet.\n *\n * @param options - Account creation options\n * @returns The created Solana account\n *\n * @example\n * ```typescript\n * // Create a Solana wallet\n * const account = await openfort.solana.createAccount();\n *\n * // Create with a specific wallet/player\n * const account = await openfort.solana.createAccount({\n * wallet: 'pla_...',\n * });\n * ```\n */\n public async createAccount(\n options: CreateSolanaAccountOptions = {},\n ): Promise<SolanaAccount> {\n const response = await createBackendWallet({\n chainType: 'SVM',\n wallet: options.wallet,\n })\n\n return toSolanaAccount({\n id: response.id,\n address: response.address,\n })\n }\n\n /**\n * Retrieves an existing Solana account.\n *\n * @param options - Account retrieval options (id or address)\n * @returns The Solana account\n *\n * @example\n * ```typescript\n * const account = await openfort.solana.getAccount({\n * id: 'acc_...',\n * });\n *\n * // Or by address (requires listing and filtering)\n * const account = await openfort.solana.getAccount({\n * address: 'So1ana...',\n * });\n * ```\n */\n public async getAccount(\n options: GetSolanaAccountOptions,\n ): Promise<SolanaAccount> {\n if (!options.id && !options.address) {\n throw new UserInputValidationError(\n 'Must provide either id or address to get account',\n )\n }\n\n // If we have an ID, fetch directly\n if (options.id) {\n const response = await getBackendWallet(options.id)\n return toSolanaAccount(toSolanaAccountData(response))\n }\n\n // For address lookup, use listBackendWallets with address filter\n if (options.address) {\n const wallets = await listBackendWallets({\n address: options.address,\n chainType: 'SVM',\n limit: 1,\n })\n\n if (wallets.data.length === 0) {\n throw new AccountNotFoundError()\n }\n\n return toSolanaAccount(toSolanaAccountData(wallets.data[0]))\n }\n\n throw new AccountNotFoundError()\n }\n\n /**\n * Lists all Solana backend wallets.\n *\n * @param options - List options (limit, skip, filters)\n * @returns List of Solana accounts\n *\n * @example\n * ```typescript\n * const { accounts } = await openfort.solana.listAccounts({\n * limit: 10,\n * });\n * ```\n */\n public async listAccounts(\n options: ListSolanaAccountsOptions = {},\n ): Promise<ListAccountsResult<SolanaAccount>> {\n const response = await listBackendWallets({\n limit: options.limit,\n skip: options.skip,\n chainType: 'SVM',\n })\n\n const accounts = response.data.map((wallet) =>\n toSolanaAccount(toSolanaAccountData(wallet)),\n )\n\n return {\n accounts,\n total: response.total,\n }\n }\n\n /**\n * Imports a Solana account using a private key.\n * The private key is encrypted using RSA-OAEP with SHA-256.\n *\n * @param options - Import options including the private key\n * @returns The imported Solana account\n *\n * @example\n * ```typescript\n * const account = await openfort.solana.importAccount({\n * privateKey: '5K...', // base58 or hex format\n * name: 'ImportedWallet',\n * });\n * ```\n */\n public async importAccount(\n options: ImportSolanaAccountOptions,\n ): Promise<SolanaAccount> {\n let privateKeyBytes: Uint8Array\n\n // Determine the format and convert to bytes\n if (options.privateKey.startsWith('0x')) {\n // Hex format with 0x prefix\n const hex = options.privateKey.slice(2)\n if (!/^[0-9a-fA-F]+$/.test(hex)) {\n throw new UserInputValidationError('Invalid hex string')\n }\n privateKeyBytes = Uint8Array.from(Buffer.from(hex, 'hex'))\n } else if (/^[0-9a-fA-F]+$/.test(options.privateKey)) {\n // Hex format without prefix\n privateKeyBytes = Uint8Array.from(Buffer.from(options.privateKey, 'hex'))\n } else {\n // Assume base58 format (standard Solana format)\n try {\n privateKeyBytes = bs58.decode(options.privateKey)\n } catch {\n throw new UserInputValidationError(\n 'Invalid private key format. Provide either a base58 string or hex string.',\n )\n }\n }\n\n // Solana private keys can be 32 bytes (seed) or 64 bytes (full keypair)\n // If 64 bytes, the first 32 are the private key, last 32 are the public key\n if (privateKeyBytes.length === 64) {\n privateKeyBytes = privateKeyBytes.slice(0, 32)\n } else if (privateKeyBytes.length !== 32) {\n throw new UserInputValidationError(\n 'Private key must be 32 bytes (seed) or 64 bytes (full keypair)',\n )\n }\n\n // Convert to hex for encryption\n const privateKeyHex = Buffer.from(privateKeyBytes).toString('hex')\n\n // Check if server public key is configured\n if (!IMPORT_ENCRYPTION_PUBLIC_KEY) {\n throw new EncryptionError(\n 'Import encryption public key is not configured. ' +\n 'Please contact Openfort to get the server public key.',\n )\n }\n\n try {\n // Encrypt the private key with the server's RSA public key\n const encryptedPrivateKey = encryptForImport(\n privateKeyHex,\n IMPORT_ENCRYPTION_PUBLIC_KEY,\n )\n\n // Call the import API\n const response = await importPrivateKey({\n encryptedPrivateKey,\n chainType: 'SVM',\n name: options.name,\n })\n\n return toSolanaAccount({\n id: response.id,\n address: response.address,\n })\n } catch (error) {\n if (error instanceof UserInputValidationError) {\n throw error\n }\n throw new EncryptionError(\n `Failed to encrypt private key: ${error instanceof Error ? error.message : String(error)}`,\n )\n }\n }\n\n /**\n * Exports a Solana account's private key.\n * Uses RSA-OAEP with SHA-256 for E2E encryption.\n *\n * @param options - Export options with account ID\n * @returns The private key as a base58 encoded string (standard Solana format)\n *\n * @example\n * ```typescript\n * const privateKey = await openfort.solana.exportAccount({\n * id: 'acc_...',\n * });\n * // Returns: '5Kd3...' (base58 encoded)\n * ```\n */\n public async exportAccount(\n options: ExportSolanaAccountOptions,\n ): Promise<string> {\n // Generate ephemeral RSA key pair for decryption\n const { publicKey, privateKeyPem } = generateRSAKeyPair()\n\n // Call the export API with our ephemeral public key\n const response = await exportPrivateKey(options.id, {\n encryptionKey: publicKey,\n })\n\n // Decrypt the private key using our ephemeral private key\n const privateKeyHex = decryptExportedPrivateKey(\n response.encryptedPrivateKey,\n privateKeyPem,\n )\n\n // Convert hex to base58 (standard Solana format)\n const privateKeyBytes = Buffer.from(privateKeyHex, 'hex')\n return bs58.encode(privateKeyBytes)\n }\n\n /**\n * Signs data using the backend wallet.\n *\n * @param accountId - The account ID\n * @param data - Data to sign (hex-encoded)\n * @returns The signature\n */\n public async signData(accountId: string, data: string): Promise<string> {\n const response = await sign(accountId, { data })\n return response.signature\n }\n}\n","/**\n * @module Wallets/Solana/Actions/SignMessage\n * Sign a Solana message\n */\n\nimport { sign } from '../../../openapi-client'\nimport type { SignMessageOptions } from '../types'\n\n/**\n * Result of sign message operation\n */\nexport interface SignMessageResult {\n /** Signature as base58 string */\n signature: string\n}\n\n/**\n * Signs a message via the Openfort API.\n * The message is UTF-8 encoded and signed.\n *\n * @param options - Sign message options\n * @returns The signature\n */\nexport async function signMessage(\n options: SignMessageOptions,\n): Promise<SignMessageResult> {\n const { accountId, message } = options\n\n // Encode message as hex for the API\n const messageBytes = Buffer.from(message, 'utf-8')\n const messageHex = `0x${messageBytes.toString('hex')}`\n\n // Sign via v2 API\n const response = await sign(accountId, { data: messageHex })\n\n return {\n signature: response.signature,\n }\n}\n","/**\n * @module Wallets/Solana/Actions/SignTransaction\n * Sign a Solana transaction\n */\n\nimport { sign as signApi } from '../../../openapi-client'\nimport type { SignTransactionOptions } from '../types'\n\n/**\n * Result of sign transaction operation\n */\nexport interface SignTransactionResult {\n /** Signed transaction as base64 string */\n signedTransaction: string\n}\n\n/**\n * Signs a Solana transaction via the Openfort API.\n * The transaction should be a base64-encoded serialized transaction.\n *\n * @param options - Sign transaction options\n * @returns The signed transaction\n *\n * @example\n * ```typescript\n * import { Transaction } from '@solana/web3.js';\n *\n * // Create your transaction\n * const transaction = new Transaction();\n * // ... add instructions ...\n *\n * // Serialize without requiring signatures\n * const serialized = transaction.serialize({\n * requireAllSignatures: false,\n * });\n *\n * // Base64 encode for the API\n * const base64Tx = Buffer.from(serialized).toString('base64');\n *\n * // Sign via Openfort\n * const { signedTransaction } = await signTransaction({\n * accountId: 'acc_...',\n * transaction: base64Tx,\n * });\n * ```\n */\nexport async function signTransaction(\n options: SignTransactionOptions,\n): Promise<SignTransactionResult> {\n const { accountId, transaction } = options\n\n // Convert base64 to hex for the API\n const txBytes = Buffer.from(transaction, 'base64')\n const txHex = `0x${txBytes.toString('hex')}`\n\n // Sign via v2 API\n const response = await signApi(accountId, { data: txHex })\n\n // The response signature is the signed transaction\n return {\n signedTransaction: response.signature,\n }\n}\n","/**\n * @module Wallets/Solana/Accounts/SolanaAccount\n * Factory function for creating Solana account objects with bound action methods\n */\n\nimport { signMessage as signMessageAction } from '../actions/signMessage'\nimport { signTransaction as signTransactionAction } from '../actions/signTransaction'\nimport type { SolanaAccount } from '../types'\n\n/**\n * Raw account data from API response\n */\nexport interface SolanaAccountData {\n /** Account unique ID */\n id: string\n /** Account address (base58 encoded) */\n address: string\n}\n\n/**\n * Creates a Solana account object with bound action methods.\n *\n * @param data - Raw account data from API\n * @returns Solana account object with signing methods\n */\nexport function toSolanaAccount(data: SolanaAccountData): SolanaAccount {\n const { id, address } = data\n\n const account: SolanaAccount = {\n id,\n address,\n custody: 'Developer',\n\n async signMessage(parameters: { message: string }): Promise<string> {\n const result = await signMessageAction({\n accountId: id,\n message: parameters.message,\n })\n return result.signature\n },\n\n async signTransaction(parameters: {\n transaction: string\n }): Promise<string> {\n const result = await signTransactionAction({\n accountId: id,\n transaction: parameters.transaction,\n })\n return result.signedTransaction\n },\n }\n\n return account\n}\n"],"mappings":"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","names":["sign","signature","signMessage","signTransaction","signMessage","signTransaction","ShieldAuthProvider","signature","sign"]}
|