{"version":3,"sources":["../src/testing/mocks.ts"],"names":["store","Store"],"mappings":"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","file":"testing.cjs","sourcesContent":["// Copyright (c) Subzero Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { PublicKey } from \"@rialo/ts-cdk\";\nimport { Store } from \"@tanstack/store\";\nimport type {\n  IdentifierArray,\n  IdentifierString,\n  Wallet,\n  WalletAccount,\n  WalletIcon,\n} from \"@wallet-standard/base\";\nimport type {\n  StandardConnectFeature,\n  StandardDisconnectFeature,\n  StandardEventsFeature,\n} from \"@wallet-standard/features\";\nimport type { FrostConfig } from \"../config\";\nimport type { AccountEntity, FrostAppState, WalletEntity } from \"../types\";\n\n// =============================================================================\n// Mock Wallet Account\n// =============================================================================\n\nexport interface CreateMockAccountOptions {\n  address?: string;\n  publicKey?: Uint8Array;\n  chains?: IdentifierArray;\n  features?: IdentifierArray;\n  label?: string;\n}\n\nlet accountCounter = 0;\n\n/**\n * Creates a mock WalletAccount for testing.\n */\nexport function createMockAccount(options: CreateMockAccountOptions = {}): WalletAccount {\n  const id = ++accountCounter;\n  const address = options.address ?? `MockAddress${id}${\"X\".repeat(32)}`.slice(0, 44);\n  const publicKey = options.publicKey ?? new Uint8Array(32).fill(id);\n\n  return {\n    address,\n    publicKey,\n    chains: options.chains ?? [\"rialo:devnet\" as IdentifierString],\n    features: options.features ?? [],\n    label: options.label,\n    icon: undefined,\n  };\n}\n\n// =============================================================================\n// Mock Wallet\n// =============================================================================\n\nexport interface CreateMockWalletOptions {\n  name?: string;\n  icon?: string;\n  chains?: IdentifierString[];\n  accounts?: WalletAccount[];\n  /** Auto-approve connection requests */\n  autoApprove?: boolean;\n  /** Delay before resolving connect (ms) */\n  connectDelay?: number;\n  /** Simulate connection failure */\n  failConnect?: boolean | Error;\n  /** Simulate disconnect failure */\n  failDisconnect?: boolean | Error;\n  /** Include standard:events feature */\n  supportsEvents?: boolean;\n  /** Include rialo:signMessage feature */\n  supportsSignMessage?: boolean;\n  /** Include rialo:signTransaction feature */\n  supportsSignTransaction?: boolean;\n  /** Include rialo:signAndSendTransaction feature */\n  supportsSignAndSend?: boolean;\n}\n\nexport interface MockWallet extends Wallet {\n  /** Programmatically trigger account change event */\n  _emitAccountChange: (accounts: WalletAccount[]) => void;\n  /** Get connect call count */\n  _connectCallCount: number;\n  /** Get disconnect call count */\n  _disconnectCallCount: number;\n  /** Get sign message call count */\n  _signMessageCallCount: number;\n  /** Get sign transaction call count */\n  _signTransactionCallCount: number;\n  /** Last signed message */\n  _lastSignedMessage: Uint8Array | null;\n  /** Last signed transaction */\n  _lastSignedTransaction: Uint8Array | null;\n  /** Reset all counters and state */\n  _reset: () => void;\n}\n\nlet walletCounter = 0;\n\n/**\n * Creates a mock Wallet implementing wallet-standard interface.\n */\nexport function createMockWallet(options: CreateMockWalletOptions = {}): MockWallet {\n  const id = ++walletCounter;\n  const {\n    name = `MockWallet${id}`,\n    icon = \"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'/>\",\n    chains = [\"rialo:devnet\" as IdentifierString, \"rialo:testnet\" as IdentifierString],\n    accounts = [createMockAccount()],\n    autoApprove = true,\n    connectDelay = 0,\n    failConnect = false,\n    failDisconnect = false,\n    supportsEvents = true,\n    supportsSignMessage = true,\n    supportsSignTransaction = true,\n    supportsSignAndSend = true,\n  } = options;\n\n  // Event listeners for standard:events\n  type EventType = \"change\";\n  type ChangeEvent = { accounts?: readonly WalletAccount[] };\n  const eventListeners = new Map<EventType, Set<(event: ChangeEvent) => void>>();\n\n  // Internal state\n  let connectCallCount = 0;\n  let disconnectCallCount = 0;\n  let signMessageCallCount = 0;\n  let signTransactionCallCount = 0;\n  let lastSignedMessage: Uint8Array | null = null;\n  let lastSignedTransaction: Uint8Array | null = null;\n  let connectedAccounts: WalletAccount[] = [];\n\n  // Build features object\n  const features: Record<string, unknown> = {};\n\n  // standard:connect\n  const connectFeature: StandardConnectFeature[\"standard:connect\"] = {\n    version: \"1.0.0\" as const,\n    connect: async ({ silent }: { silent?: boolean } = {}) => {\n      connectCallCount++;\n\n      if (connectDelay > 0) {\n        await new Promise(resolve => setTimeout(resolve, connectDelay));\n      }\n\n      if (failConnect) {\n        throw failConnect instanceof Error ? failConnect : new Error(\"Connection rejected\");\n      }\n\n      if (!autoApprove && !silent) {\n        throw new Error(\"User rejected connection\");\n      }\n\n      connectedAccounts = [...accounts];\n      return { accounts: connectedAccounts };\n    },\n  };\n  features[\"standard:connect\"] = connectFeature;\n\n  // standard:disconnect\n  const disconnectFeature: StandardDisconnectFeature[\"standard:disconnect\"] = {\n    version: \"1.0.0\" as const,\n    disconnect: (): Promise<void> => {\n      disconnectCallCount++;\n\n      if (failDisconnect) {\n        throw failDisconnect instanceof Error ? failDisconnect : new Error(\"Disconnect failed\");\n      }\n\n      connectedAccounts = [];\n      return Promise.resolve();\n    },\n  };\n  features[\"standard:disconnect\"] = disconnectFeature;\n\n  // standard:events\n  if (supportsEvents) {\n    const eventsFeature: StandardEventsFeature[\"standard:events\"] = {\n      version: \"1.0.0\" as const,\n      on: <E extends EventType>(event: E, listener: (event: ChangeEvent) => void): (() => void) => {\n        if (!eventListeners.has(event)) {\n          eventListeners.set(event, new Set());\n        }\n        eventListeners.get(event)?.add(listener);\n\n        return () => {\n          eventListeners.get(event)?.delete(listener);\n        };\n      },\n    };\n    features[\"standard:events\"] = eventsFeature;\n  }\n\n  // rialo:signMessage\n  if (supportsSignMessage) {\n    features[\"rialo:signMessage\"] = {\n      version: \"1.0.0\",\n      signMessage: ({\n        message,\n      }: {\n        account: WalletAccount;\n        message: Uint8Array;\n      }): Promise<readonly { signature: Uint8Array; signedMessage: Uint8Array }[]> => {\n        signMessageCallCount++;\n        lastSignedMessage = message;\n\n        // Create a mock signature (64 bytes for Ed25519)\n        const signature = new Uint8Array(64);\n        signature.fill(0xab);\n\n        return Promise.resolve([\n          {\n            signature,\n            signedMessage: message,\n          },\n        ]);\n      },\n    };\n  }\n\n  // rialo:signTransaction\n  if (supportsSignTransaction) {\n    features[\"rialo:signTransaction\"] = {\n      version: \"1.0.0\",\n      signTransaction: ({\n        transaction,\n      }: {\n        account: WalletAccount;\n        transaction: Uint8Array;\n        chain: string;\n      }): Promise<readonly { signedTransaction: Uint8Array }[]> => {\n        signTransactionCallCount++;\n        lastSignedTransaction = transaction;\n\n        // Return the transaction with a mock signature prepended\n        const signedTransaction = new Uint8Array(transaction.length + 64);\n        signedTransaction.set(new Uint8Array(64).fill(0xcd), 0);\n        signedTransaction.set(transaction, 64);\n\n        return Promise.resolve([{ signedTransaction }]);\n      },\n    };\n  }\n\n  // rialo:signAndSendTransaction\n  if (supportsSignAndSend) {\n    features[\"rialo:signAndSendTransaction\"] = {\n      version: \"1.0.0\",\n      signAndSendTransaction: ({\n        transaction,\n      }: {\n        account: WalletAccount;\n        transaction: Uint8Array;\n        chain: string;\n      }): Promise<readonly { signature: Uint8Array }[]> => {\n        signTransactionCallCount++;\n        lastSignedTransaction = transaction;\n\n        // Return a mock signature\n        const signature = new Uint8Array(64);\n        signature.fill(0xef);\n\n        return Promise.resolve([{ signature }]);\n      },\n    };\n  }\n\n  const wallet: MockWallet = {\n    version: \"1.0.0\" as const,\n    name,\n    icon: icon as WalletIcon,\n    chains,\n    features,\n    accounts: connectedAccounts,\n\n    // Test helpers\n    _emitAccountChange: (newAccounts: WalletAccount[]) => {\n      connectedAccounts = newAccounts;\n      const listeners = eventListeners.get(\"change\");\n      if (listeners) {\n        for (const listener of listeners) {\n          listener({ accounts: newAccounts });\n        }\n      }\n    },\n\n    get _connectCallCount(): number {\n      return connectCallCount;\n    },\n\n    get _disconnectCallCount(): number {\n      return disconnectCallCount;\n    },\n\n    get _signMessageCallCount(): number {\n      return signMessageCallCount;\n    },\n\n    get _signTransactionCallCount(): number {\n      return signTransactionCallCount;\n    },\n\n    get _lastSignedMessage(): Uint8Array | null {\n      return lastSignedMessage;\n    },\n\n    get _lastSignedTransaction(): Uint8Array | null {\n      return lastSignedTransaction;\n    },\n\n    _reset: (): void => {\n      connectCallCount = 0;\n      disconnectCallCount = 0;\n      signMessageCallCount = 0;\n      signTransactionCallCount = 0;\n      lastSignedMessage = null;\n      lastSignedTransaction = null;\n      connectedAccounts = [];\n      eventListeners.clear();\n    },\n  };\n\n  return wallet;\n}\n\n// =============================================================================\n// Mock RPC Client\n// =============================================================================\n\nexport interface CreateMockClientOptions {\n  /** Default balance to return */\n  defaultBalance?: bigint;\n  /** Map of address -> balance */\n  balances?: Map<string, bigint>;\n  /** Simulate RPC errors */\n  failRequests?: boolean | Error;\n  /** Delay before resolving requests (ms) */\n  requestDelay?: number;\n  /** Mock transaction signatures to return */\n  transactionSignature?: string;\n}\n\n/** Result of a confirmed transaction (matches @rialo/ts-cdk ConfirmedTransaction) */\nexport interface MockConfirmedTransaction {\n  signature: string;\n  executed: boolean;\n  err?: string;\n}\n\n/**\n * Mock RialoClient interface for testing.\n * Only includes the methods commonly needed in tests.\n */\nexport interface MockRialoClient {\n  // Mocked RPC methods - matches real RialoClient signature\n  getBalance: (pubkey: PublicKey) => Promise<bigint>;\n  sendTransaction: (transaction: Uint8Array) => Promise<string>;\n  sendAndConfirmTransaction: (transaction: Uint8Array) => Promise<MockConfirmedTransaction>;\n  getTransaction: () => Promise<unknown>;\n  getLatestBlockhash: () => Promise<{ blockhash: string; lastValidBlockHeight: number }>;\n\n  // Test helpers\n  /** Set balance for an address (use address string as key) */\n  _setBalance: (address: string, balance: bigint) => void;\n  /** Get send transaction call count */\n  _sendTransactionCallCount: number;\n  /** Get sendAndConfirm call count */\n  _sendAndConfirmCallCount: number;\n  /** Last sent transaction */\n  _lastSentTransaction: Uint8Array | null;\n  /** Configure transaction to fail on-chain (executed: false) */\n  _setTransactionFails: (fails: boolean, err?: string) => void;\n  /** Reset all state */\n  _reset: () => void;\n}\n\n/**\n * Creates a mock RialoClient for testing.\n */\nexport function createMockClient(options: CreateMockClientOptions = {}): MockRialoClient {\n  const {\n    defaultBalance = 1_000_000_000n, // 1 RLO equivalent\n    balances = new Map(),\n    failRequests = false,\n    requestDelay = 0,\n    transactionSignature = \"MockTxSignature123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefgh\",\n  } = options;\n\n  let sendTransactionCallCount = 0;\n  let sendAndConfirmCallCount = 0;\n  let lastSentTransaction: Uint8Array | null = null;\n  let transactionFails = false;\n  let transactionError: string | undefined;\n\n  const maybeDelay = async (): Promise<void> => {\n    if (requestDelay > 0) {\n      await new Promise(resolve => setTimeout(resolve, requestDelay));\n    }\n  };\n\n  const maybeThrow = (): void => {\n    if (failRequests) {\n      throw failRequests instanceof Error ? failRequests : new Error(\"RPC request failed\");\n    }\n  };\n\n  const client: MockRialoClient = {\n    getBalance: async (pubkey: PublicKey): Promise<bigint> => {\n      await maybeDelay();\n      maybeThrow();\n      // Convert PublicKey to string for balance lookup\n      const address = pubkey.toString();\n      return balances.get(address) ?? defaultBalance;\n    },\n\n    sendTransaction: async (transaction: Uint8Array): Promise<string> => {\n      await maybeDelay();\n      maybeThrow();\n      sendTransactionCallCount++;\n      lastSentTransaction = transaction;\n      return transactionSignature;\n    },\n\n    sendAndConfirmTransaction: async (\n      transaction: Uint8Array\n    ): Promise<MockConfirmedTransaction> => {\n      await maybeDelay();\n      maybeThrow();\n      sendAndConfirmCallCount++;\n      lastSentTransaction = transaction;\n      return {\n        signature: transactionSignature,\n        executed: !transactionFails,\n        err: transactionFails ? transactionError : undefined,\n      };\n    },\n\n    // Add other common RPC methods as needed\n    getTransaction: async (): Promise<unknown> => {\n      await maybeDelay();\n      maybeThrow();\n      return { signature: transactionSignature, slot: 12345 };\n    },\n\n    getLatestBlockhash: async (): Promise<{ blockhash: string; lastValidBlockHeight: number }> => {\n      await maybeDelay();\n      maybeThrow();\n      return {\n        blockhash: \"MockBlockhash123456789ABCDEFGHIJKLMNOPQRSTUV\",\n        lastValidBlockHeight: 100000,\n      };\n    },\n\n    // Test helpers\n    _setBalance: (address: string, balance: bigint) => {\n      balances.set(address, balance);\n    },\n\n    get _sendTransactionCallCount(): number {\n      return sendTransactionCallCount;\n    },\n\n    get _sendAndConfirmCallCount(): number {\n      return sendAndConfirmCallCount;\n    },\n\n    get _lastSentTransaction(): Uint8Array | null {\n      return lastSentTransaction;\n    },\n\n    _setTransactionFails: (fails: boolean, err?: string) => {\n      transactionFails = fails;\n      transactionError = err;\n    },\n\n    _reset: () => {\n      sendTransactionCallCount = 0;\n      sendAndConfirmCallCount = 0;\n      lastSentTransaction = null;\n      transactionFails = false;\n      transactionError = undefined;\n      balances.clear();\n    },\n  } as MockRialoClient;\n\n  return client;\n}\n\n// =============================================================================\n// Mock Storage\n// =============================================================================\n\n/**\n * Creates an in-memory Storage implementation for testing.\n */\nexport function createMockStorage(): Storage {\n  const store = new Map<string, string>();\n\n  return {\n    get length(): number {\n      return store.size;\n    },\n\n    key(index: number): string | null {\n      const keys = Array.from(store.keys());\n      return keys[index] ?? null;\n    },\n\n    getItem(key: string): string | null {\n      return store.get(key) ?? null;\n    },\n\n    setItem(key: string, value: string): void {\n      store.set(key, value);\n    },\n\n    removeItem(key: string): void {\n      store.delete(key);\n    },\n\n    clear(): void {\n      store.clear();\n    },\n  };\n}\n\n// =============================================================================\n// Mock Config Factory\n// =============================================================================\n\nexport interface CreateMockConfigOptions {\n  /** Initial state overrides */\n  initialState?: Partial<FrostAppState>;\n  /** Mock client options */\n  clientOptions?: CreateMockClientOptions;\n  /** Mock storage (null to disable persistence) */\n  storage?: Storage | null;\n  /** Chain ID */\n  chainId?: string;\n  /** Auto-connect setting */\n  autoConnect?: boolean;\n}\n\n/**\n * Creates a mock FrostConfig for testing.\n *\n * @example\n * ```ts\n * const { config, mockClient } = createMockConfig({\n *   initialState: { status: \"connected\", walletName: \"TestWallet\" },\n * });\n *\n * // Use in tests\n * const result = await connect(config, { walletName: \"TestWallet\" });\n * expect(mockClient._connectCallCount).toBe(1);\n * ```\n */\nexport function createMockConfig(options: CreateMockConfigOptions = {}): {\n  config: FrostConfig;\n  mockClient: MockRialoClient;\n  mockStorage: Storage | null;\n} {\n  const chainId = options.chainId ?? \"rialo:devnet\";\n  const mockClient = createMockClient(options.clientOptions);\n  const mockStorage = options.storage === null ? null : (options.storage ?? createMockStorage());\n\n  const initialState: FrostAppState = {\n    status: \"disconnected\",\n    chainId,\n    walletName: null,\n    accountAddress: null,\n    connectedAt: null,\n    sessionExpiresAt: null,\n    lastUsedAt: Date.now(),\n    userDisconnected: false,\n    wallets: new Map(),\n    accounts: new Map(),\n    _walletRefs: new Map(),\n    ...options.initialState,\n  };\n\n  const store = new Store<FrostAppState>(initialState);\n\n  const config: FrostConfig = {\n    store,\n    // Cast to unknown first since MockRialoClient is a test-only partial implementation\n    client: mockClient as unknown as FrostConfig[\"client\"],\n    getChainId: () => store.state.chainId,\n    switchChain: () => {\n      // No-op for tests, or implement if needed\n    },\n    _registry: null,\n    _bridge: null,\n    _persistence: null,\n    options: {\n      clientConfig: {} as never,\n      autoConnect: options.autoConnect ?? false,\n      sessionTTL: 7 * 24 * 60 * 60 * 1000,\n      storageKey: \"rialo-frost-test\",\n      storage: mockStorage,\n    },\n    destroy: () => {\n      // Cleanup\n    },\n  };\n\n  return { config, mockClient, mockStorage };\n}\n\n// =============================================================================\n// Test Helpers\n// =============================================================================\n\n/**\n * Waits for a condition to be true.\n */\nexport async function waitFor(\n  condition: () => boolean | Promise<boolean>,\n  options: { timeout?: number; interval?: number } = {}\n): Promise<void> {\n  const { timeout = 5000, interval = 50 } = options;\n  const startTime = Date.now();\n\n  while (Date.now() - startTime < timeout) {\n    if (await condition()) {\n      return;\n    }\n    await new Promise(resolve => setTimeout(resolve, interval));\n  }\n\n  throw new Error(`waitFor timed out after ${timeout}ms`);\n}\n\n/**\n * Waits for state to match a condition.\n */\nexport async function waitForState(\n  config: FrostConfig,\n  predicate: (state: FrostAppState) => boolean,\n  options?: { timeout?: number; interval?: number }\n): Promise<FrostAppState> {\n  await waitFor(() => predicate(config.store.state), options);\n  return config.store.state;\n}\n\n/**\n * Creates a mock WalletEntity for store initialization.\n */\nexport function createMockWalletEntity(overrides: Partial<WalletEntity> = {}): WalletEntity {\n  return {\n    name: \"MockWallet\",\n    icon: \"data:image/svg+xml,<svg/>\",\n    chains: [\"rialo:devnet\" as IdentifierString],\n    features: [\n      \"standard:connect\",\n      \"standard:disconnect\",\n      \"rialo:signMessage\",\n      \"rialo:signTransaction\",\n    ],\n    installedVersion: \"1.0.0\",\n    priority: 0,\n    lastConnectedAt: undefined,\n    ...overrides,\n  };\n}\n\n/**\n * Creates a mock AccountEntity for store initialization.\n */\nexport function createMockAccountEntity(overrides: Partial<AccountEntity> = {}): AccountEntity {\n  return {\n    address: \"MockAddress123456789ABCDEFGHIJKLMNOPQRSTUV\",\n    publicKey: new Uint8Array(32).fill(1),\n    walletName: \"MockWallet\",\n    chains: [\"rialo:devnet\" as IdentifierString],\n    label: undefined,\n    _raw: undefined,\n    ...overrides,\n  };\n}\n"]}