@provex/react 1.11.0 → 2.0.0

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/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/hooks/useAllowance.ts","../src/hooks/useCancelIntent.ts","../src/hooks/useReleaseFundsToPayer.ts","../src/hooks/useV3Escrow.ts","../src/hooks/useTransactionWithIndexer.ts"],"names":["useState","useMemo","encodeFunctionData","escrowAbi","getEscrowVersion","getLatestContract","supportsOrchestrator","useCallback","v3EscrowAbi"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * @fileoverview Hook for ERC20 token allowance checking and approval.\n *\n * Handles the common pattern of checking if a spender (escrow contract)\n * has sufficient allowance to transfer tokens, and prompting for approval\n * if needed.\n *\n * @remarks\n * Approval is required before createDeposit or addFunds can transfer\n * tokens to the escrow contract.\n *\n * Reads use the `publicClient` registered on `ProvexProvider` (auto-built\n * from `config.chain` if not supplied). Writes require a `wallet` on the\n * same provider.\n */\n\nimport { useMemo, useState } from \"react\"\nimport { encodeFunctionData, erc20Abi, maxUint256, type Hex } from \"viem\"\nimport { useContractRead } from \"../lib/contractRead\"\nimport { useOptionalProvexPublicClient, useOptionalProvexWallet } from \"../ProvexProvider\"\nimport { getTransactionGasInputs } from \"../lib/block\"\nimport type { TokenInfo } from \"@provex/utils/tokens\"\n\n/**\n * Phase of the approval transaction lifecycle.\n */\ntype ApprovalPhase = 'idle' | 'submitting' | 'confirming'\n\nexport const useAllowance = ({\n token,\n spender,\n account,\n balance,\n defaultAllowance = 'max',\n onSuccess,\n onError,\n onSettled,\n}: {\n token: TokenInfo\n spender: Hex\n /** The account address to check/write allowance for. If undefined, hook returns null allowance and writeApproval is a no-op. */\n account: Hex | undefined\n balance?: bigint\n defaultAllowance?: 'max' | 'balance'\n onSuccess?: (...args: unknown[]) => void\n onError?: (...args: unknown[]) => void\n onSettled?: (...args: unknown[]) => void\n}) => {\n const targetAllowance = useMemo(() => {\n if (defaultAllowance === 'balance' && balance) {\n return balance\n }\n return maxUint256\n }, [defaultAllowance, balance])\n\n const publicClient = useOptionalProvexPublicClient(token.chainId)\n const wallet = useOptionalProvexWallet()\n\n const { data, isLoading, error, refetch } = useContractRead<bigint>({\n address: token.address as Hex,\n abi: erc20Abi,\n functionName: 'allowance',\n args: account && spender ? [account, spender] : undefined,\n chainId: token.chainId,\n query: {\n enabled: !!account && !!spender && !!token.address,\n },\n })\n\n const [approvalPhase, setApprovalPhase] = useState<ApprovalPhase>('idle')\n const isWritingApproval = approvalPhase !== 'idle'\n const approvalLoadingText = approvalPhase === 'confirming' ? 'Confirming...' : `Approve ${token.symbol}`\n\n return {\n allowance: data ?? null,\n isLoading,\n isWritingApproval,\n /** Loading text for the approval button */\n approvalLoadingText,\n error,\n writeApproval: async () => {\n if (!account || !spender || !token.address || !publicClient || !wallet) {\n return\n }\n setApprovalPhase('submitting')\n try {\n const gasInputs = await getTransactionGasInputs(token.chainId)\n const callData = encodeFunctionData({\n abi: erc20Abi,\n functionName: 'approve',\n args: [spender, targetAllowance],\n })\n const hash = await wallet.sendTransaction({\n to: token.address as Hex,\n data: callData,\n value: 0n,\n chainId: token.chainId,\n maxFeePerGas: gasInputs.maxFeePerGas,\n maxPriorityFeePerGas: gasInputs.maxPriorityFeePerGas,\n })\n\n setApprovalPhase('confirming')\n await publicClient.waitForTransactionReceipt({ hash })\n await refetch()\n onSuccess?.(hash)\n } catch (err) {\n onError?.(err as Error)\n } finally {\n setApprovalPhase('idle')\n onSettled?.()\n }\n },\n }\n}\n","/**\n * @fileoverview Hook for canceling an active intent.\n *\n * v3 / v4 (orchestrator generations): delegate to ProveXClient.cancelIntent,\n * which targets the Orchestrator where cancelIntent lives.\n * v2 (legacy monolith): fall back to a direct viem transaction via\n * WalletAdapter, because on v2 cancelIntent lives on the Escrow itself.\n */\n\nimport { useState, useMemo, useCallback } from 'react'\nimport { encodeFunctionData, type Hex } from 'viem'\nimport { V2EscrowAbi as escrowAbi } from '@provex/abis'\nimport { getLatestContract, getEscrowVersion, supportsOrchestrator, type Version } from '@provex/utils/contracts'\nimport type { ChainId } from '@provex/utils/chain'\nimport { getTransactionGasInputs } from '../lib/block'\nimport { checkTransactionIndexed } from '../lib/updates'\nimport { useOptionalProvex, useOptionalProvexPublicClient, useOptionalProvexWallet } from '../ProvexProvider'\nimport { getUserFriendlyErrorMessage, isUserRejectionError } from '../lib/errors'\nimport { createProveXClient } from '../client/ProveXClient'\nimport { ProveXError, type WriteHookParams } from '../client/types'\n\n/** Status values for the cancel intent operation. */\nexport type CancelIntentStatus =\n | 'idle'\n | 'prompt_wallet_confirm'\n | 'writing_tx'\n | 'success'\n | 'error'\n\n/**\n * Hook to cancel an intent with automatic v2/v3 version detection.\n *\n * V3 delegates to ProveXClient. V2 falls back to a direct WalletAdapter\n * call. Both paths source the wallet + public client from ProvexProvider.\n */\nexport const useCancelIntent = ({\n onSuccess,\n onMutate,\n onError,\n onSettled,\n chainId,\n escrowAddress: providedEscrowAddress,\n version: explicitVersion,\n}: {\n onSuccess?: () => void\n onMutate?: () => void\n onError?: (error: Error) => void\n onSettled?: () => void\n chainId?: ChainId | null | undefined\n escrowAddress?: Hex | null | undefined\n version?: Version\n}) => {\n const provex = useOptionalProvex()\n const wallet = useOptionalProvexWallet()\n const publicClient = useOptionalProvexPublicClient(chainId ?? undefined)\n const [status, setStatus] = useState<CancelIntentStatus>('idle')\n const [errorMessage, setErrorMessage] = useState<string | null>(null)\n const isLoading = useMemo(() => status === 'prompt_wallet_confirm' || status === 'writing_tx', [status])\n\n const version = useMemo(() => {\n if (explicitVersion) return explicitVersion\n if (providedEscrowAddress) {\n const detected = getEscrowVersion(providedEscrowAddress)\n if (detected) return detected\n }\n return 'v3' as Version\n }, [explicitVersion, providedEscrowAddress])\n\n const escrowAddress = useMemo(() => {\n if (providedEscrowAddress) return providedEscrowAddress\n if (!chainId) return null\n return getLatestContract(chainId, 'escrow', version)\n }, [providedEscrowAddress, chainId, version])\n\n // Orchestrator client (memoized) — built for v3 and every newer generation.\n const client = useMemo(() => {\n if (!provex || !chainId || !supportsOrchestrator(version)) return null\n return createProveXClient({\n chain: provex.config.chain,\n apiUrl: provex.config.apiUrl,\n wallet,\n indexer: provex.indexer,\n escrowAddress: escrowAddress ?? undefined,\n })\n }, [provex, chainId, version, wallet, escrowAddress])\n\n const cancelIntent = useCallback(async (intentHash: Hex, hooks?: WriteHookParams) => {\n if (!intentHash || !chainId) return\n\n setStatus('prompt_wallet_confirm')\n setErrorMessage(null)\n onMutate?.()\n\n try {\n if (supportsOrchestrator(version) && client) {\n // v3 / v4: delegate to ProveXClient (targets the Orchestrator)\n await client.cancelIntent({ intentHash, ...hooks })\n } else {\n // v2: direct wallet call via WalletAdapter (cancelIntent on the Escrow)\n if (!escrowAddress) throw new Error('Missing escrow address')\n if (!wallet) throw new Error('No wallet configured on ProvexProvider')\n const gasInputs = await getTransactionGasInputs(chainId)\n const data = encodeFunctionData({\n abi: escrowAbi,\n functionName: 'cancelIntent',\n args: [intentHash],\n })\n const request = {\n to: escrowAddress,\n data,\n value: 0n,\n chainId,\n maxFeePerGas: gasInputs.maxFeePerGas,\n maxPriorityFeePerGas: gasInputs.maxPriorityFeePerGas,\n }\n const ctx = { chainId, request }\n hooks?.onAwaitingSignature?.(ctx)\n const hash = await wallet.sendTransaction(request)\n hooks?.onTransactionHash?.({ ...ctx, hash })\n if (publicClient) await publicClient.waitForTransactionReceipt({ hash })\n if (provex?.indexer) {\n await checkTransactionIndexed({ queryTransaction: provex.indexer.getTransactionByHash, hash })\n }\n }\n\n setStatus('success')\n onSuccess?.()\n } catch (error) {\n // V3 path's client fires onFailed internally with full TxContext;\n // V2 path errors before request construction can't synthesize one.\n // The outer wrapper deliberately doesn't double-fire.\n const isRejection = (error instanceof ProveXError && error.isRejection) || isUserRejectionError(error)\n if (isRejection) {\n setStatus('idle')\n } else {\n setStatus('error')\n setErrorMessage(getUserFriendlyErrorMessage(error))\n }\n onError?.(error as Error)\n } finally {\n onSettled?.()\n }\n }, [chainId, escrowAddress, version, client, publicClient, wallet, provex, onSuccess, onMutate, onError, onSettled])\n\n return {\n cancelIntent,\n status,\n isLoading,\n version,\n errorMessage,\n }\n}\n","/**\n * @fileoverview Hook for releasing funds back to payer.\n *\n * v3 / v4 (orchestrator generations): delegate to\n * ProveXClient.releaseFundsToPayer, which targets the Orchestrator.\n * v2 (legacy monolith): fall back to a direct viem transaction via\n * WalletAdapter, because on v2 releaseFundsToPayer lives on the Escrow.\n */\n\nimport { useState, useMemo, useCallback } from 'react'\nimport { encodeFunctionData, type Hex } from 'viem'\nimport { V2EscrowAbi as escrowAbi } from '@provex/abis'\nimport { getLatestContract, getEscrowVersion, supportsOrchestrator, type Version } from '@provex/utils/contracts'\nimport type { ChainId } from '@provex/utils/chain'\nimport { getTransactionGasInputs } from '../lib/block'\nimport { checkTransactionIndexed } from '../lib/updates'\nimport { useOptionalProvex, useOptionalProvexPublicClient, useOptionalProvexWallet } from '../ProvexProvider'\nimport { isUserRejectionError } from '../lib/errors'\nimport { createProveXClient } from '../client/ProveXClient'\nimport { ProveXError, type WriteHookParams } from '../client/types'\n\n/** Status values for the release funds operation. */\nexport type ReleaseFundsStatus =\n | 'idle'\n | 'prompt_wallet_confirm'\n | 'writing_tx'\n | 'success'\n | 'error'\n\n/**\n * Hook to release funds back to payer with automatic v2/v3 version detection.\n *\n * V3 delegates to ProveXClient. V2 falls back to a direct WalletAdapter\n * call. Both paths source the wallet + public client from ProvexProvider.\n */\nexport const useReleaseFundsToPayer = ({\n onSuccess,\n onSettled,\n chainId,\n escrowAddress: providedEscrowAddress,\n version: explicitVersion,\n}: {\n onSuccess?: () => void\n onSettled?: () => void\n chainId?: ChainId | null | undefined\n escrowAddress?: Hex | null | undefined\n version?: Version\n}) => {\n const provex = useOptionalProvex()\n const wallet = useOptionalProvexWallet()\n const publicClient = useOptionalProvexPublicClient(chainId ?? undefined)\n const [status, setStatus] = useState<ReleaseFundsStatus>('idle')\n const [errorMessage, setErrorMessage] = useState<string | null>(null)\n const isLoading = useMemo(\n () => status === 'prompt_wallet_confirm' || status === 'writing_tx',\n [status]\n )\n\n const version = useMemo(() => {\n if (explicitVersion) return explicitVersion\n if (providedEscrowAddress) {\n const detected = getEscrowVersion(providedEscrowAddress)\n if (detected) return detected\n }\n return 'v3' as Version\n }, [explicitVersion, providedEscrowAddress])\n\n const escrowAddress = useMemo(() => {\n if (providedEscrowAddress) return providedEscrowAddress\n if (!chainId) return null\n return getLatestContract(chainId, 'escrow', version)\n }, [providedEscrowAddress, chainId, version])\n\n // Orchestrator client — built for v3 and every newer generation.\n const client = useMemo(() => {\n if (!provex || !chainId || !supportsOrchestrator(version)) return null\n return createProveXClient({\n chain: provex.config.chain,\n apiUrl: provex.config.apiUrl,\n wallet,\n indexer: provex.indexer,\n escrowAddress: escrowAddress ?? undefined,\n })\n }, [provex, chainId, version, wallet, escrowAddress])\n\n const releaseFundsToPayer = useCallback(async (intentHash: Hex, hooks?: WriteHookParams) => {\n if (!intentHash || !chainId) return\n\n setStatus('prompt_wallet_confirm')\n setErrorMessage(null)\n\n try {\n if (supportsOrchestrator(version) && client) {\n // v3 / v4: delegate to ProveXClient (targets the Orchestrator)\n await client.releaseFundsToPayer({ intentHash, ...hooks })\n } else {\n // v2: direct wallet call via WalletAdapter (function on the Escrow)\n if (!escrowAddress) throw new Error('Missing escrow address')\n if (!wallet) throw new Error('No wallet configured on ProvexProvider')\n const gasInputs = await getTransactionGasInputs(chainId)\n const data = encodeFunctionData({\n abi: escrowAbi,\n functionName: 'releaseFundsToPayer',\n args: [intentHash],\n })\n const request = {\n to: escrowAddress,\n data,\n value: 0n,\n chainId,\n maxFeePerGas: gasInputs.maxFeePerGas,\n maxPriorityFeePerGas: gasInputs.maxPriorityFeePerGas,\n }\n const ctx = { chainId, request }\n hooks?.onAwaitingSignature?.(ctx)\n const hash = await wallet.sendTransaction(request)\n hooks?.onTransactionHash?.({ ...ctx, hash })\n if (publicClient) await publicClient.waitForTransactionReceipt({ hash })\n if (provex?.indexer) {\n await checkTransactionIndexed({ queryTransaction: provex.indexer.getTransactionByHash, hash })\n }\n }\n\n setStatus('success')\n onSuccess?.()\n } catch (error) {\n // V3 path's client already fires onFailed with full TxContext from\n // inside the SDK; no need to double-fire here. V2 path errors that\n // surface before request construction (gasInputs/encoding/connection)\n // also can't synthesize a meaningful request, so the outer onFailed\n // call is intentionally dropped — the per-call hook is best-effort\n // for the SDK-managed window, not the entire wrapper.\n const isRejection = (error instanceof ProveXError && error.isRejection) || isUserRejectionError(error)\n if (isRejection) {\n setStatus('idle')\n setErrorMessage(null)\n } else {\n setStatus('error')\n setErrorMessage(error instanceof Error ? error.message : 'Transaction failed')\n }\n } finally {\n onSettled?.()\n }\n }, [chainId, escrowAddress, version, client, publicClient, wallet, provex, onSuccess, onSettled])\n\n return {\n releaseFundsToPayer,\n status,\n isLoading,\n errorMessage,\n version,\n }\n}\n","/**\n * @fileoverview React hook for V3 Escrow contract interactions.\n *\n * Thin state wrapper around ProveXClient — manages status, error,\n * and loading state for each escrow write operation.\n *\n * Reads (orchestrator address, deposit counter) use the viem public\n * client from ProvexProvider for automatic cache invalidation.\n */\n\nimport { useState, useMemo, useCallback } from 'react'\nimport type { Hex } from 'viem'\nimport { useContractRead } from '../lib/contractRead'\nimport { V3EscrowAbi as v3EscrowAbi } from '@provex/abis'\nimport { useOrchestratorAddress } from './useOrchestratorAddress'\nimport { getLatestContract, getLatestConfiguredVersion } from '@provex/utils/contracts'\nimport type { ChainId } from '@provex/utils/chain'\nimport { useOptionalProvex, useOptionalProvexWallet } from '../ProvexProvider'\nimport { createProveXClient } from '../client/ProveXClient'\nimport { ProveXError, type TransactionResult, type WriteHookParams } from '../client/types'\nimport type { CreateDepositRawParams } from '../client/types'\n\n/**\n * Status values for escrow write operations.\n */\nexport type V3EscrowStatus =\n | 'idle'\n | 'prompt_wallet_confirm'\n | 'writing_tx'\n | 'confirming'\n | 'syncing'\n | 'success'\n | 'error'\n\n/** @deprecated Use `CreateDepositRawParams` from `@provex/react/client/types`. */\nexport type CreateDepositParams = CreateDepositRawParams\n\n/**\n * Hook for interacting with v3 Escrow contract.\n *\n * All write methods delegate to ProveXClient. Reads use the\n * ProvexProvider's public client with tanstack-query caching.\n */\nexport const useV3Escrow = ({\n chainId,\n escrowAddress,\n onSlowSync,\n onTransactionConfirmed,\n onError,\n}: {\n chainId?: ChainId | null\n escrowAddress?: Hex | null\n /** Called when indexer sync is taking longer than expected. */\n onSlowSync?: () => void\n /** Called after the transaction is confirmed on-chain. */\n onTransactionConfirmed?: (params: { hash: Hex; chainId: ChainId; action: string }) => void\n /** Called when a write method fails (contract revert, gas issues, etc). Not called on user rejection. */\n onError?: (error: Error) => void\n}) => {\n const provex = useOptionalProvex()\n const wallet = useOptionalProvexWallet()\n const [status, setStatus] = useState<V3EscrowStatus>('idle')\n const [error, setError] = useState<string | null>(null)\n const [txHash, setTxHash] = useState<Hex | null>(null)\n\n const escrow = useMemo(() => {\n if (escrowAddress) return escrowAddress\n if (!chainId) return null\n // Only reached when the caller named no deposit — a new-deposit write.\n // Those belong on the generation the chain currently runs, not a pinned v3.\n return getLatestContract(chainId, 'escrow', getLatestConfiguredVersion(chainId))\n }, [chainId, escrowAddress])\n\n const isLoading = useMemo(\n () =>\n status === 'prompt_wallet_confirm' ||\n status === 'writing_tx' ||\n status === 'confirming' ||\n status === 'syncing',\n [status]\n )\n\n // Memoized client — recreated when wallet or config changes\n const client = useMemo(() => {\n if (!provex || !chainId) return null\n return createProveXClient({\n chain: provex.config.chain,\n apiUrl: provex.config.apiUrl,\n wallet,\n indexer: provex.indexer,\n escrowAddress: escrow ?? undefined,\n onTransactionHash: (hash) => {\n setTxHash(hash)\n setStatus('confirming')\n },\n onSlowSync: () => {\n setStatus('syncing')\n onSlowSync?.()\n },\n })\n }, [provex, chainId, wallet, escrow, onSlowSync])\n\n // ─── Reads (viem via ProvexProvider) ──────────────────────────────────────\n\n const { data: orchestratorAddress, refetch: refetchOrchestrator } = useOrchestratorAddress({\n escrowAddress: escrow ?? undefined,\n chainId: chainId ?? 0,\n })\n\n const { data: depositCounter, refetch: refetchDepositCounter } = useContractRead<bigint>({\n address: escrow ?? undefined,\n abi: v3EscrowAbi,\n functionName: 'depositCounter',\n chainId: chainId ?? undefined,\n query: { enabled: !!escrow },\n })\n\n // ─── Generic write executor ───────────────────────────────────────────────\n\n const executeClientMethod = useCallback(async <T extends TransactionResult>(\n method: () => Promise<T>,\n action: string,\n ): Promise<Hex | null> => {\n if (!client || !chainId) {\n const msg = 'Client or chain not configured'\n setError(msg)\n onError?.(new Error(msg))\n return null\n }\n\n try {\n setStatus('prompt_wallet_confirm')\n setError(null)\n setTxHash(null)\n\n const result = await method()\n\n setStatus('success')\n onTransactionConfirmed?.({ hash: result.hash, chainId, action })\n return result.hash\n } catch (err) {\n // ProveXClient fires onFailed internally with full TxContext (chainId,\n // request, error). The outer wrapper here used to double-fire with\n // just an Error — drop it so consumers receive one well-formed event.\n if (err instanceof ProveXError && err.isRejection) {\n setStatus('idle')\n setError(null)\n return null\n }\n const errorObj = err instanceof Error ? err : new Error(String(err))\n setStatus('error')\n setError(errorObj.message)\n onError?.(errorObj)\n return null\n }\n }, [client, chainId, onTransactionConfirmed, onError])\n\n // ─── Write methods ────────────────────────────────────────────────────────\n\n const createDeposit = useCallback(\n (params: CreateDepositRawParams, hooks?: WriteHookParams) =>\n executeClientMethod(() => client!.createDepositRaw({ ...params, ...hooks }), 'Deposit created'),\n [client, executeClientMethod]\n )\n\n const addFunds = useCallback(\n (depositId: bigint, amount: bigint, hooks?: WriteHookParams) =>\n executeClientMethod(() => client!.addFunds({ depositId, amount, ...hooks }), 'Funds added'),\n [client, executeClientMethod]\n )\n\n const removeFunds = useCallback(\n (depositId: bigint, amount: bigint, hooks?: WriteHookParams) =>\n executeClientMethod(() => client!.removeFunds({ depositId, amount, ...hooks }), 'Funds removed'),\n [client, executeClientMethod]\n )\n\n const withdrawDeposit = useCallback(\n (depositId: bigint, hooks?: WriteHookParams) =>\n executeClientMethod(() => client!.withdrawDeposit({ depositId, ...hooks }), 'Deposit withdrawn'),\n [client, executeClientMethod]\n )\n\n const pruneExpiredIntents = useCallback(\n (depositId: bigint, hooks?: WriteHookParams) =>\n executeClientMethod(() => client!.pruneExpiredIntents({ depositId, ...hooks }), 'Expired intents pruned'),\n [client, executeClientMethod]\n )\n\n const setAcceptingIntents = useCallback(\n (depositId: bigint, accepting: boolean, hooks?: WriteHookParams) =>\n executeClientMethod(() => client!.setAcceptingIntents({ depositId, accepting, ...hooks }), 'Deposit updated'),\n [client, executeClientMethod]\n )\n\n const setRetainOnEmpty = useCallback(\n (depositId: bigint, retain: boolean, hooks?: WriteHookParams) =>\n executeClientMethod(() => client!.setRetainOnEmpty({ depositId, retain, ...hooks }), 'Deposit updated'),\n [client, executeClientMethod]\n )\n\n const setIntentRange = useCallback(\n (depositId: bigint, intentAmountRange: { min: bigint; max: bigint }, hooks?: WriteHookParams) =>\n executeClientMethod(() => client!.setIntentRange({ depositId, ...intentAmountRange, ...hooks }), 'Amount range updated'),\n [client, executeClientMethod]\n )\n\n const setPaymentMethodActive = useCallback(\n (depositId: bigint, paymentMethod: Hex, active: boolean, hooks?: WriteHookParams) =>\n executeClientMethod(() => client!.setPaymentMethodActive({ depositId, paymentMethod, active, ...hooks }), 'Platform updated'),\n [client, executeClientMethod]\n )\n\n const setCurrencyMinRate = useCallback(\n (params: { depositId: bigint; paymentMethod: Hex; currency: Hex; newMinConversionRate: bigint }, hooks?: WriteHookParams) =>\n executeClientMethod(() => client!.setCurrencyMinRate({\n depositId: params.depositId,\n paymentMethod: params.paymentMethod,\n currency: params.currency,\n rate: params.newMinConversionRate,\n ...hooks,\n }), 'Conversion rate updated'),\n [client, executeClientMethod]\n )\n\n const addCurrencies = useCallback(\n (params: { depositId: bigint; paymentMethod: Hex; currencies: Array<{ code: Hex; minConversionRate: bigint }> }, hooks?: WriteHookParams) =>\n executeClientMethod(() => client!.addCurrencies({ ...params, ...hooks }), 'Currencies added'),\n [client, executeClientMethod]\n )\n\n const deactivateCurrency = useCallback(\n (params: { depositId: bigint; paymentMethod: Hex; currencyCode: Hex }, hooks?: WriteHookParams) =>\n executeClientMethod(() => client!.deactivateCurrency({ ...params, ...hooks }), 'Currency deactivated'),\n [client, executeClientMethod]\n )\n\n const addPaymentMethods = useCallback(\n (params: {\n depositId: bigint\n paymentMethods: Hex[]\n paymentMethodData: Array<{ intentGatingService: Hex; payeeDetails: Hex; data: Hex }>\n currencies: Array<Array<{ code: Hex; minConversionRate: bigint }>>\n }, hooks?: WriteHookParams) =>\n executeClientMethod(() => client!.addPaymentMethods({ ...params, ...hooks }), 'Payment method added'),\n [client, executeClientMethod]\n )\n\n // ─── Read methods (delegate to client) ────────────────────────────────────\n\n const getDeposit = useCallback(\n async (depositId: bigint) => {\n if (!client) return null\n try { return await client.getDeposit(depositId) }\n catch { return null }\n },\n [client]\n )\n\n const getAccountDeposits = useCallback(\n async (account: Hex) => {\n if (!client) return []\n try { return await client.getAccountDeposits(account) }\n catch { return [] }\n },\n [client]\n )\n\n const reset = useCallback(() => {\n setStatus('idle')\n setError(null)\n setTxHash(null)\n }, [])\n\n return {\n status,\n error,\n isLoading,\n escrow,\n orchestratorAddress,\n depositCounter,\n txHash,\n createDeposit,\n addFunds,\n removeFunds,\n withdrawDeposit,\n pruneExpiredIntents,\n setAcceptingIntents,\n setRetainOnEmpty,\n setIntentRange,\n setPaymentMethodActive,\n setCurrencyMinRate,\n addCurrencies,\n deactivateCurrency,\n addPaymentMethods,\n getDeposit,\n getAccountDeposits,\n reset,\n refetchOrchestrator,\n refetchDepositCounter,\n }\n}\n","/**\n * @fileoverview Hook for tracking transactions through indexer sync.\n *\n * Manages the full transaction lifecycle: submission → confirmation → indexer sync.\n * Provides phase tracking and optional toast notifications for slow indexer syncs.\n *\n * @remarks\n * The indexer typically lags behind the blockchain by a few seconds.\n * This hook waits for the indexer to catch up before reporting success,\n * ensuring the UI shows consistent state after transactions.\n *\n * Requires a `ProvexProvider` ancestor (a public client is auto-built\n * from `config.chain` if one is not supplied).\n */\n\nimport { useState, useCallback } from 'react'\nimport type { Hex } from 'viem'\nimport type { ChainId } from '@provex/utils/chain'\nimport { orderId } from '@provex/utils/ids'\nimport { getLatestContract } from '@provex/utils/contracts'\nimport { checkTransactionIndexed, checkMutation, type IndexerAdapter } from '../lib/updates'\nimport { getUserFriendlyErrorMessage } from '../lib/errors'\nimport { useOptionalProvex, useOptionalProvexPublicClient } from '../ProvexProvider'\n\n/**\n * Phase of the transaction lifecycle.\n */\nexport type TransactionPhase = 'idle' | 'submitting' | 'confirming' | 'syncing' | 'complete' | 'error'\n\nexport interface UseTransactionWithIndexerOptions {\n /** Called when transaction is fully indexed */\n onSuccess?: () => void\n /** Called on any error */\n onError?: (error: Error) => void\n /** Called when indexer sync is taking longer than expected. */\n onSlowSync?: () => void\n /** Called after the transaction is confirmed on-chain. */\n onTransactionConfirmed?: (params: { hash: Hex; chainId: ChainId; action: string }) => void\n /** Called when a transaction-level error message is available. */\n onTransactionError?: (message: string) => void\n /** Indexer adapter. Falls back to ProvexProvider context, then skips sync. */\n indexer?: IndexerAdapter\n}\n\nexport interface TransactionSyncOptions {\n /** The transaction hash to track */\n hash: Hex\n /** Chain ID for the transaction */\n chainId: ChainId\n /** Action description (e.g., \"Deposit created\") */\n action: string\n}\n\nexport interface MutationSyncOptions {\n /** The transaction hash */\n hash: Hex\n /** Deposit local ID for mutation tracking */\n depositId: bigint\n /** Chain ID for the deposit */\n chainId: ChainId\n /** Target status to wait for */\n status: string\n /** Action description */\n action: string\n}\n\n/**\n * Hook for handling the three-phase transaction flow:\n * 1. Transaction submission (handled by caller)\n * 2. Transaction confirmation (waiting for mining)\n * 3. Indexer sync (waiting for indexer to process)\n */\nexport const useTransactionWithIndexer = (options: UseTransactionWithIndexerOptions = {}) => {\n const { onSuccess, onError, onSlowSync, onTransactionConfirmed, onTransactionError, indexer: indexerParam } = options\n const provex = useOptionalProvex()\n const indexer = indexerParam ?? provex?.indexer\n\n const [phase, setPhase] = useState<TransactionPhase>('idle')\n const publicClient = useOptionalProvexPublicClient()\n\n const waitForTransaction = useCallback(async ({\n hash,\n chainId,\n action,\n }: TransactionSyncOptions) => {\n try {\n setPhase('confirming')\n await publicClient?.waitForTransactionReceipt({ hash })\n\n if (indexer) {\n setPhase('syncing')\n await checkTransactionIndexed({\n queryTransaction: indexer.getTransactionByHash,\n hash,\n onSlowSync,\n })\n }\n\n setPhase('complete')\n onTransactionConfirmed?.({ hash, chainId, action })\n onSuccess?.()\n } catch (e) {\n setPhase('error')\n const error = e instanceof Error ? e : new Error(String(e))\n onTransactionError?.(getUserFriendlyErrorMessage(error))\n onError?.(error)\n throw e\n }\n }, [publicClient, indexer, onSuccess, onError, onSlowSync, onTransactionConfirmed, onTransactionError])\n\n const waitForMutation = useCallback(async ({\n hash,\n depositId,\n chainId,\n status,\n action,\n }: MutationSyncOptions) => {\n try {\n setPhase('confirming')\n await publicClient?.waitForTransactionReceipt({ hash })\n\n if (indexer) {\n setPhase('syncing')\n\n const escrow = getLatestContract(chainId, 'escrow')!\n const depositIdHex = orderId.deposit.serialize({\n escrow,\n depositId,\n chainId,\n })\n\n await checkMutation({\n queryDeposit: indexer.getDepositById,\n depositIdHex,\n status,\n onSlowSync,\n })\n }\n\n setPhase('complete')\n onTransactionConfirmed?.({ hash, chainId, action })\n onSuccess?.()\n } catch (e) {\n setPhase('error')\n const error = e instanceof Error ? e : new Error(String(e))\n onTransactionError?.(getUserFriendlyErrorMessage(error))\n onError?.(error)\n throw e\n }\n }, [publicClient, indexer, onSuccess, onError, onSlowSync, onTransactionConfirmed, onTransactionError])\n\n const reset = useCallback(() => {\n setPhase('idle')\n }, [])\n\n const isLoading = phase === 'submitting' || phase === 'confirming' || phase === 'syncing'\n\n const loadingText = phase === 'syncing'\n ? 'Syncing...'\n : phase === 'confirming'\n ? 'Confirming...'\n : undefined\n\n return {\n phase,\n isLoading,\n loadingText,\n waitForTransaction,\n waitForMutation,\n reset,\n setPhase,\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/hooks/useReputation.ts","../src/hooks/useAllowance.ts","../src/hooks/useCancelIntent.ts","../src/hooks/useReleaseFundsToPayer.ts","../src/hooks/useV3Escrow.ts","../src/hooks/useTransactionWithIndexer.ts"],"names":["useState","useMemo","encodeFunctionData","escrowAbi","getEscrowVersion","getLatestContract","supportsOrchestrator","useCallback","v3EscrowAbi"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * @fileoverview Deprecated alias for the reputation hook.\n *\n * `useReputation` was the first reputation hook in `@provex/react`. The\n * maker+taker model in {@link useUserReputation} replaced it. This file keeps\n * the old export names working so the change stays non-breaking in 1.x.\n *\n * @deprecated Import `useUserReputation` and `getTierDisplayInfo` from\n * `@provex/react` instead.\n */\n\nimport type { Hex } from 'viem'\nimport type { ChainId } from '@provex/utils/chain'\nimport type { UserReputation } from '@provex/utils/reputation'\nimport { useUserReputation, getTierDisplayInfo } from './useUserReputation'\n\nexport { getTierDisplayInfo }\n\n/**\n * Fetch and compute a wallet's reputation tier through the\n * `ProvexProvider` indexer adapter.\n *\n * Reputation is PulseChain-only now, so `chainId` no longer changes the data\n * source. It stays on the signature for compatibility.\n *\n * @deprecated Use {@link useUserReputation}. It adds maker volume, VIP\n * status, `filteringTier` and an explicit kill switch.\n */\nexport function useReputation({\n address,\n chainId,\n}: {\n address: Hex | undefined\n chainId: ChainId\n}): {\n reputation: UserReputation\n isLoading: boolean\n error: Error | null\n refetch: () => void\n} {\n const { reputation, isLoading, error, refetch } = useUserReputation({ address, chainId })\n return { reputation, isLoading, error, refetch }\n}\n","/**\n * @fileoverview Hook for ERC20 token allowance checking and approval.\n *\n * Handles the common pattern of checking if a spender (escrow contract)\n * has sufficient allowance to transfer tokens, and prompting for approval\n * if needed.\n *\n * @remarks\n * Approval is required before createDeposit or addFunds can transfer\n * tokens to the escrow contract.\n *\n * Reads use the `publicClient` registered on `ProvexProvider` (auto-built\n * from `config.chain` if not supplied). Writes require a `wallet` on the\n * same provider.\n */\n\nimport { useMemo, useState } from \"react\"\nimport { encodeFunctionData, erc20Abi, maxUint256, type Hex } from \"viem\"\nimport { useContractRead } from \"../lib/contractRead\"\nimport { useOptionalProvexPublicClient, useOptionalProvexWallet } from \"../ProvexProvider\"\nimport { getTransactionGasInputs } from \"../lib/block\"\nimport type { TokenInfo } from \"@provex/utils/tokens\"\n\n/**\n * Phase of the approval transaction lifecycle.\n */\ntype ApprovalPhase = 'idle' | 'submitting' | 'confirming'\n\nexport const useAllowance = ({\n token,\n spender,\n account,\n balance,\n defaultAllowance = 'max',\n onSuccess,\n onError,\n onSettled,\n}: {\n token: TokenInfo\n spender: Hex\n /** The account address to check/write allowance for. If undefined, hook returns null allowance and writeApproval is a no-op. */\n account: Hex | undefined\n balance?: bigint\n defaultAllowance?: 'max' | 'balance'\n onSuccess?: (...args: unknown[]) => void\n onError?: (...args: unknown[]) => void\n onSettled?: (...args: unknown[]) => void\n}) => {\n const targetAllowance = useMemo(() => {\n if (defaultAllowance === 'balance' && balance) {\n return balance\n }\n return maxUint256\n }, [defaultAllowance, balance])\n\n const publicClient = useOptionalProvexPublicClient(token.chainId)\n const wallet = useOptionalProvexWallet()\n\n const { data, isLoading, error, refetch } = useContractRead<bigint>({\n address: token.address as Hex,\n abi: erc20Abi,\n functionName: 'allowance',\n args: account && spender ? [account, spender] : undefined,\n chainId: token.chainId,\n query: {\n enabled: !!account && !!spender && !!token.address,\n },\n })\n\n const [approvalPhase, setApprovalPhase] = useState<ApprovalPhase>('idle')\n const isWritingApproval = approvalPhase !== 'idle'\n const approvalLoadingText = approvalPhase === 'confirming' ? 'Confirming...' : `Approve ${token.symbol}`\n\n return {\n allowance: data ?? null,\n isLoading,\n isWritingApproval,\n /** Loading text for the approval button */\n approvalLoadingText,\n error,\n writeApproval: async () => {\n if (!account || !spender || !token.address || !publicClient || !wallet) {\n return\n }\n setApprovalPhase('submitting')\n try {\n const gasInputs = await getTransactionGasInputs(token.chainId)\n const callData = encodeFunctionData({\n abi: erc20Abi,\n functionName: 'approve',\n args: [spender, targetAllowance],\n })\n const hash = await wallet.sendTransaction({\n to: token.address as Hex,\n data: callData,\n value: 0n,\n chainId: token.chainId,\n maxFeePerGas: gasInputs.maxFeePerGas,\n maxPriorityFeePerGas: gasInputs.maxPriorityFeePerGas,\n })\n\n setApprovalPhase('confirming')\n await publicClient.waitForTransactionReceipt({ hash })\n await refetch()\n onSuccess?.(hash)\n } catch (err) {\n onError?.(err as Error)\n } finally {\n setApprovalPhase('idle')\n onSettled?.()\n }\n },\n }\n}\n","/**\n * @fileoverview Hook for canceling an active intent.\n *\n * v3 / v4 (orchestrator generations): delegate to ProveXClient.cancelIntent,\n * which targets the Orchestrator where cancelIntent lives.\n * v2 (legacy monolith): fall back to a direct viem transaction via\n * WalletAdapter, because on v2 cancelIntent lives on the Escrow itself.\n */\n\nimport { useState, useMemo, useCallback } from 'react'\nimport { encodeFunctionData, type Hex } from 'viem'\nimport { V2EscrowAbi as escrowAbi } from '@provex/abis'\nimport { getLatestContract, getEscrowVersion, supportsOrchestrator, type Version } from '@provex/utils/contracts'\nimport type { ChainId } from '@provex/utils/chain'\nimport { getTransactionGasInputs } from '../lib/block'\nimport { checkTransactionIndexed } from '../lib/updates'\nimport { useOptionalProvex, useOptionalProvexPublicClient, useOptionalProvexWallet } from '../ProvexProvider'\nimport { getUserFriendlyErrorMessage, isUserRejectionError } from '../lib/errors'\nimport { createProveXClient } from '../client/ProveXClient'\nimport { ProveXError, type WriteHookParams } from '../client/types'\n\n/** Status values for the cancel intent operation. */\nexport type CancelIntentStatus =\n | 'idle'\n | 'prompt_wallet_confirm'\n | 'writing_tx'\n | 'success'\n | 'error'\n\n/**\n * Hook to cancel an intent with automatic v2/v3 version detection.\n *\n * V3 delegates to ProveXClient. V2 falls back to a direct WalletAdapter\n * call. Both paths source the wallet + public client from ProvexProvider.\n */\nexport const useCancelIntent = ({\n onSuccess,\n onMutate,\n onError,\n onSettled,\n chainId,\n escrowAddress: providedEscrowAddress,\n version: explicitVersion,\n}: {\n onSuccess?: () => void\n onMutate?: () => void\n onError?: (error: Error) => void\n onSettled?: () => void\n chainId?: ChainId | null | undefined\n escrowAddress?: Hex | null | undefined\n version?: Version\n}) => {\n const provex = useOptionalProvex()\n const wallet = useOptionalProvexWallet()\n const publicClient = useOptionalProvexPublicClient(chainId ?? undefined)\n const [status, setStatus] = useState<CancelIntentStatus>('idle')\n const [errorMessage, setErrorMessage] = useState<string | null>(null)\n const isLoading = useMemo(() => status === 'prompt_wallet_confirm' || status === 'writing_tx', [status])\n\n const version = useMemo(() => {\n if (explicitVersion) return explicitVersion\n if (providedEscrowAddress) {\n const detected = getEscrowVersion(providedEscrowAddress)\n if (detected) return detected\n }\n return 'v3' as Version\n }, [explicitVersion, providedEscrowAddress])\n\n const escrowAddress = useMemo(() => {\n if (providedEscrowAddress) return providedEscrowAddress\n if (!chainId) return null\n return getLatestContract(chainId, 'escrow', version)\n }, [providedEscrowAddress, chainId, version])\n\n // Orchestrator client (memoized) — built for v3 and every newer generation.\n const client = useMemo(() => {\n if (!provex || !chainId || !supportsOrchestrator(version)) return null\n return createProveXClient({\n chain: provex.config.chain,\n apiUrl: provex.config.apiUrl,\n wallet,\n indexer: provex.indexer,\n escrowAddress: escrowAddress ?? undefined,\n })\n }, [provex, chainId, version, wallet, escrowAddress])\n\n const cancelIntent = useCallback(async (intentHash: Hex, hooks?: WriteHookParams) => {\n if (!intentHash || !chainId) return\n\n setStatus('prompt_wallet_confirm')\n setErrorMessage(null)\n onMutate?.()\n\n try {\n if (supportsOrchestrator(version) && client) {\n // v3 / v4: delegate to ProveXClient (targets the Orchestrator)\n await client.cancelIntent({ intentHash, ...hooks })\n } else {\n // v2: direct wallet call via WalletAdapter (cancelIntent on the Escrow)\n if (!escrowAddress) throw new Error('Missing escrow address')\n if (!wallet) throw new Error('No wallet configured on ProvexProvider')\n const gasInputs = await getTransactionGasInputs(chainId)\n const data = encodeFunctionData({\n abi: escrowAbi,\n functionName: 'cancelIntent',\n args: [intentHash],\n })\n const request = {\n to: escrowAddress,\n data,\n value: 0n,\n chainId,\n maxFeePerGas: gasInputs.maxFeePerGas,\n maxPriorityFeePerGas: gasInputs.maxPriorityFeePerGas,\n }\n const ctx = { chainId, request }\n hooks?.onAwaitingSignature?.(ctx)\n const hash = await wallet.sendTransaction(request)\n hooks?.onTransactionHash?.({ ...ctx, hash })\n if (publicClient) await publicClient.waitForTransactionReceipt({ hash })\n if (provex?.indexer) {\n await checkTransactionIndexed({ queryTransaction: provex.indexer.getTransactionByHash, hash })\n }\n }\n\n setStatus('success')\n onSuccess?.()\n } catch (error) {\n // V3 path's client fires onFailed internally with full TxContext;\n // V2 path errors before request construction can't synthesize one.\n // The outer wrapper deliberately doesn't double-fire.\n const isRejection = (error instanceof ProveXError && error.isRejection) || isUserRejectionError(error)\n if (isRejection) {\n setStatus('idle')\n } else {\n setStatus('error')\n setErrorMessage(getUserFriendlyErrorMessage(error))\n }\n onError?.(error as Error)\n } finally {\n onSettled?.()\n }\n }, [chainId, escrowAddress, version, client, publicClient, wallet, provex, onSuccess, onMutate, onError, onSettled])\n\n return {\n cancelIntent,\n status,\n isLoading,\n version,\n errorMessage,\n }\n}\n","/**\n * @fileoverview Hook for releasing funds back to payer.\n *\n * v3 / v4 (orchestrator generations): delegate to\n * ProveXClient.releaseFundsToPayer, which targets the Orchestrator.\n * v2 (legacy monolith): fall back to a direct viem transaction via\n * WalletAdapter, because on v2 releaseFundsToPayer lives on the Escrow.\n */\n\nimport { useState, useMemo, useCallback } from 'react'\nimport { encodeFunctionData, type Hex } from 'viem'\nimport { V2EscrowAbi as escrowAbi } from '@provex/abis'\nimport { getLatestContract, getEscrowVersion, supportsOrchestrator, type Version } from '@provex/utils/contracts'\nimport type { ChainId } from '@provex/utils/chain'\nimport { getTransactionGasInputs } from '../lib/block'\nimport { checkTransactionIndexed } from '../lib/updates'\nimport { useOptionalProvex, useOptionalProvexPublicClient, useOptionalProvexWallet } from '../ProvexProvider'\nimport { isUserRejectionError } from '../lib/errors'\nimport { createProveXClient } from '../client/ProveXClient'\nimport { ProveXError, type WriteHookParams } from '../client/types'\n\n/** Status values for the release funds operation. */\nexport type ReleaseFundsStatus =\n | 'idle'\n | 'prompt_wallet_confirm'\n | 'writing_tx'\n | 'success'\n | 'error'\n\n/**\n * Hook to release funds back to payer with automatic v2/v3 version detection.\n *\n * V3 delegates to ProveXClient. V2 falls back to a direct WalletAdapter\n * call. Both paths source the wallet + public client from ProvexProvider.\n */\nexport const useReleaseFundsToPayer = ({\n onSuccess,\n onSettled,\n chainId,\n escrowAddress: providedEscrowAddress,\n version: explicitVersion,\n}: {\n onSuccess?: () => void\n onSettled?: () => void\n chainId?: ChainId | null | undefined\n escrowAddress?: Hex | null | undefined\n version?: Version\n}) => {\n const provex = useOptionalProvex()\n const wallet = useOptionalProvexWallet()\n const publicClient = useOptionalProvexPublicClient(chainId ?? undefined)\n const [status, setStatus] = useState<ReleaseFundsStatus>('idle')\n const [errorMessage, setErrorMessage] = useState<string | null>(null)\n const isLoading = useMemo(\n () => status === 'prompt_wallet_confirm' || status === 'writing_tx',\n [status]\n )\n\n const version = useMemo(() => {\n if (explicitVersion) return explicitVersion\n if (providedEscrowAddress) {\n const detected = getEscrowVersion(providedEscrowAddress)\n if (detected) return detected\n }\n return 'v3' as Version\n }, [explicitVersion, providedEscrowAddress])\n\n const escrowAddress = useMemo(() => {\n if (providedEscrowAddress) return providedEscrowAddress\n if (!chainId) return null\n return getLatestContract(chainId, 'escrow', version)\n }, [providedEscrowAddress, chainId, version])\n\n // Orchestrator client — built for v3 and every newer generation.\n const client = useMemo(() => {\n if (!provex || !chainId || !supportsOrchestrator(version)) return null\n return createProveXClient({\n chain: provex.config.chain,\n apiUrl: provex.config.apiUrl,\n wallet,\n indexer: provex.indexer,\n escrowAddress: escrowAddress ?? undefined,\n })\n }, [provex, chainId, version, wallet, escrowAddress])\n\n const releaseFundsToPayer = useCallback(async (intentHash: Hex, hooks?: WriteHookParams) => {\n if (!intentHash || !chainId) return\n\n setStatus('prompt_wallet_confirm')\n setErrorMessage(null)\n\n try {\n if (supportsOrchestrator(version) && client) {\n // v3 / v4: delegate to ProveXClient (targets the Orchestrator)\n await client.releaseFundsToPayer({ intentHash, ...hooks })\n } else {\n // v2: direct wallet call via WalletAdapter (function on the Escrow)\n if (!escrowAddress) throw new Error('Missing escrow address')\n if (!wallet) throw new Error('No wallet configured on ProvexProvider')\n const gasInputs = await getTransactionGasInputs(chainId)\n const data = encodeFunctionData({\n abi: escrowAbi,\n functionName: 'releaseFundsToPayer',\n args: [intentHash],\n })\n const request = {\n to: escrowAddress,\n data,\n value: 0n,\n chainId,\n maxFeePerGas: gasInputs.maxFeePerGas,\n maxPriorityFeePerGas: gasInputs.maxPriorityFeePerGas,\n }\n const ctx = { chainId, request }\n hooks?.onAwaitingSignature?.(ctx)\n const hash = await wallet.sendTransaction(request)\n hooks?.onTransactionHash?.({ ...ctx, hash })\n if (publicClient) await publicClient.waitForTransactionReceipt({ hash })\n if (provex?.indexer) {\n await checkTransactionIndexed({ queryTransaction: provex.indexer.getTransactionByHash, hash })\n }\n }\n\n setStatus('success')\n onSuccess?.()\n } catch (error) {\n // V3 path's client already fires onFailed with full TxContext from\n // inside the SDK; no need to double-fire here. V2 path errors that\n // surface before request construction (gasInputs/encoding/connection)\n // also can't synthesize a meaningful request, so the outer onFailed\n // call is intentionally dropped — the per-call hook is best-effort\n // for the SDK-managed window, not the entire wrapper.\n const isRejection = (error instanceof ProveXError && error.isRejection) || isUserRejectionError(error)\n if (isRejection) {\n setStatus('idle')\n setErrorMessage(null)\n } else {\n setStatus('error')\n setErrorMessage(error instanceof Error ? error.message : 'Transaction failed')\n }\n } finally {\n onSettled?.()\n }\n }, [chainId, escrowAddress, version, client, publicClient, wallet, provex, onSuccess, onSettled])\n\n return {\n releaseFundsToPayer,\n status,\n isLoading,\n errorMessage,\n version,\n }\n}\n","/**\n * @fileoverview React hook for V3 Escrow contract interactions.\n *\n * Thin state wrapper around ProveXClient — manages status, error,\n * and loading state for each escrow write operation.\n *\n * Reads (orchestrator address, deposit counter) use the viem public\n * client from ProvexProvider for automatic cache invalidation.\n */\n\nimport { useState, useMemo, useCallback } from 'react'\nimport type { Hex } from 'viem'\nimport { useContractRead } from '../lib/contractRead'\nimport { V3EscrowAbi as v3EscrowAbi } from '@provex/abis'\nimport { useOrchestratorAddress } from './useOrchestratorAddress'\nimport { getLatestContract, getLatestConfiguredVersion } from '@provex/utils/contracts'\nimport type { ChainId } from '@provex/utils/chain'\nimport { useOptionalProvex, useOptionalProvexWallet } from '../ProvexProvider'\nimport { createProveXClient } from '../client/ProveXClient'\nimport { ProveXError, type TransactionResult, type WriteHookParams } from '../client/types'\nimport type { CreateDepositRawParams } from '../client/types'\n\n/**\n * Status values for escrow write operations.\n */\nexport type V3EscrowStatus =\n | 'idle'\n | 'prompt_wallet_confirm'\n | 'writing_tx'\n | 'confirming'\n | 'syncing'\n | 'success'\n | 'error'\n\n/** @deprecated Use `CreateDepositRawParams` from `@provex/react/client/types`. */\nexport type CreateDepositParams = CreateDepositRawParams\n\n/**\n * Hook for interacting with v3 Escrow contract.\n *\n * All write methods delegate to ProveXClient. Reads use the\n * ProvexProvider's public client with tanstack-query caching.\n */\nexport const useV3Escrow = ({\n chainId,\n escrowAddress,\n onSlowSync,\n onTransactionConfirmed,\n onError,\n}: {\n chainId?: ChainId | null\n escrowAddress?: Hex | null\n /** Called when indexer sync is taking longer than expected. */\n onSlowSync?: () => void\n /** Called after the transaction is confirmed on-chain. */\n onTransactionConfirmed?: (params: { hash: Hex; chainId: ChainId; action: string }) => void\n /** Called when a write method fails (contract revert, gas issues, etc). Not called on user rejection. */\n onError?: (error: Error) => void\n}) => {\n const provex = useOptionalProvex()\n const wallet = useOptionalProvexWallet()\n const [status, setStatus] = useState<V3EscrowStatus>('idle')\n const [error, setError] = useState<string | null>(null)\n const [txHash, setTxHash] = useState<Hex | null>(null)\n\n const escrow = useMemo(() => {\n if (escrowAddress) return escrowAddress\n if (!chainId) return null\n // Only reached when the caller named no deposit — a new-deposit write.\n // Those belong on the generation the chain currently runs, not a pinned v3.\n return getLatestContract(chainId, 'escrow', getLatestConfiguredVersion(chainId))\n }, [chainId, escrowAddress])\n\n const isLoading = useMemo(\n () =>\n status === 'prompt_wallet_confirm' ||\n status === 'writing_tx' ||\n status === 'confirming' ||\n status === 'syncing',\n [status]\n )\n\n // Memoized client — recreated when wallet or config changes\n const client = useMemo(() => {\n if (!provex || !chainId) return null\n return createProveXClient({\n chain: provex.config.chain,\n apiUrl: provex.config.apiUrl,\n wallet,\n indexer: provex.indexer,\n escrowAddress: escrow ?? undefined,\n onTransactionHash: (hash) => {\n setTxHash(hash)\n setStatus('confirming')\n },\n onSlowSync: () => {\n setStatus('syncing')\n onSlowSync?.()\n },\n })\n }, [provex, chainId, wallet, escrow, onSlowSync])\n\n // ─── Reads (viem via ProvexProvider) ──────────────────────────────────────\n\n const { data: orchestratorAddress, refetch: refetchOrchestrator } = useOrchestratorAddress({\n escrowAddress: escrow ?? undefined,\n chainId: chainId ?? 0,\n })\n\n const { data: depositCounter, refetch: refetchDepositCounter } = useContractRead<bigint>({\n address: escrow ?? undefined,\n abi: v3EscrowAbi,\n functionName: 'depositCounter',\n chainId: chainId ?? undefined,\n query: { enabled: !!escrow },\n })\n\n // ─── Generic write executor ───────────────────────────────────────────────\n\n const executeClientMethod = useCallback(async <T extends TransactionResult>(\n method: () => Promise<T>,\n action: string,\n ): Promise<Hex | null> => {\n if (!client || !chainId) {\n const msg = 'Client or chain not configured'\n setError(msg)\n onError?.(new Error(msg))\n return null\n }\n\n try {\n setStatus('prompt_wallet_confirm')\n setError(null)\n setTxHash(null)\n\n const result = await method()\n\n setStatus('success')\n onTransactionConfirmed?.({ hash: result.hash, chainId, action })\n return result.hash\n } catch (err) {\n // ProveXClient fires onFailed internally with full TxContext (chainId,\n // request, error). The outer wrapper here used to double-fire with\n // just an Error — drop it so consumers receive one well-formed event.\n if (err instanceof ProveXError && err.isRejection) {\n setStatus('idle')\n setError(null)\n return null\n }\n const errorObj = err instanceof Error ? err : new Error(String(err))\n setStatus('error')\n setError(errorObj.message)\n onError?.(errorObj)\n return null\n }\n }, [client, chainId, onTransactionConfirmed, onError])\n\n // ─── Write methods ────────────────────────────────────────────────────────\n\n const createDeposit = useCallback(\n (params: CreateDepositRawParams, hooks?: WriteHookParams) =>\n executeClientMethod(() => client!.createDepositRaw({ ...params, ...hooks }), 'Deposit created'),\n [client, executeClientMethod]\n )\n\n const addFunds = useCallback(\n (depositId: bigint, amount: bigint, hooks?: WriteHookParams) =>\n executeClientMethod(() => client!.addFunds({ depositId, amount, ...hooks }), 'Funds added'),\n [client, executeClientMethod]\n )\n\n const removeFunds = useCallback(\n (depositId: bigint, amount: bigint, hooks?: WriteHookParams) =>\n executeClientMethod(() => client!.removeFunds({ depositId, amount, ...hooks }), 'Funds removed'),\n [client, executeClientMethod]\n )\n\n const withdrawDeposit = useCallback(\n (depositId: bigint, hooks?: WriteHookParams) =>\n executeClientMethod(() => client!.withdrawDeposit({ depositId, ...hooks }), 'Deposit withdrawn'),\n [client, executeClientMethod]\n )\n\n const pruneExpiredIntents = useCallback(\n (depositId: bigint, hooks?: WriteHookParams) =>\n executeClientMethod(() => client!.pruneExpiredIntents({ depositId, ...hooks }), 'Expired intents pruned'),\n [client, executeClientMethod]\n )\n\n const setAcceptingIntents = useCallback(\n (depositId: bigint, accepting: boolean, hooks?: WriteHookParams) =>\n executeClientMethod(() => client!.setAcceptingIntents({ depositId, accepting, ...hooks }), 'Deposit updated'),\n [client, executeClientMethod]\n )\n\n const setRetainOnEmpty = useCallback(\n (depositId: bigint, retain: boolean, hooks?: WriteHookParams) =>\n executeClientMethod(() => client!.setRetainOnEmpty({ depositId, retain, ...hooks }), 'Deposit updated'),\n [client, executeClientMethod]\n )\n\n const setIntentRange = useCallback(\n (depositId: bigint, intentAmountRange: { min: bigint; max: bigint }, hooks?: WriteHookParams) =>\n executeClientMethod(() => client!.setIntentRange({ depositId, ...intentAmountRange, ...hooks }), 'Amount range updated'),\n [client, executeClientMethod]\n )\n\n const setPaymentMethodActive = useCallback(\n (depositId: bigint, paymentMethod: Hex, active: boolean, hooks?: WriteHookParams) =>\n executeClientMethod(() => client!.setPaymentMethodActive({ depositId, paymentMethod, active, ...hooks }), 'Platform updated'),\n [client, executeClientMethod]\n )\n\n const setCurrencyMinRate = useCallback(\n (params: { depositId: bigint; paymentMethod: Hex; currency: Hex; newMinConversionRate: bigint }, hooks?: WriteHookParams) =>\n executeClientMethod(() => client!.setCurrencyMinRate({\n depositId: params.depositId,\n paymentMethod: params.paymentMethod,\n currency: params.currency,\n rate: params.newMinConversionRate,\n ...hooks,\n }), 'Conversion rate updated'),\n [client, executeClientMethod]\n )\n\n const addCurrencies = useCallback(\n (params: { depositId: bigint; paymentMethod: Hex; currencies: Array<{ code: Hex; minConversionRate: bigint }> }, hooks?: WriteHookParams) =>\n executeClientMethod(() => client!.addCurrencies({ ...params, ...hooks }), 'Currencies added'),\n [client, executeClientMethod]\n )\n\n const deactivateCurrency = useCallback(\n (params: { depositId: bigint; paymentMethod: Hex; currencyCode: Hex }, hooks?: WriteHookParams) =>\n executeClientMethod(() => client!.deactivateCurrency({ ...params, ...hooks }), 'Currency deactivated'),\n [client, executeClientMethod]\n )\n\n const addPaymentMethods = useCallback(\n (params: {\n depositId: bigint\n paymentMethods: Hex[]\n paymentMethodData: Array<{ intentGatingService: Hex; payeeDetails: Hex; data: Hex }>\n currencies: Array<Array<{ code: Hex; minConversionRate: bigint }>>\n }, hooks?: WriteHookParams) =>\n executeClientMethod(() => client!.addPaymentMethods({ ...params, ...hooks }), 'Payment method added'),\n [client, executeClientMethod]\n )\n\n // ─── Read methods (delegate to client) ────────────────────────────────────\n\n const getDeposit = useCallback(\n async (depositId: bigint) => {\n if (!client) return null\n try { return await client.getDeposit(depositId) }\n catch { return null }\n },\n [client]\n )\n\n const getAccountDeposits = useCallback(\n async (account: Hex) => {\n if (!client) return []\n try { return await client.getAccountDeposits(account) }\n catch { return [] }\n },\n [client]\n )\n\n const reset = useCallback(() => {\n setStatus('idle')\n setError(null)\n setTxHash(null)\n }, [])\n\n return {\n status,\n error,\n isLoading,\n escrow,\n orchestratorAddress,\n depositCounter,\n txHash,\n createDeposit,\n addFunds,\n removeFunds,\n withdrawDeposit,\n pruneExpiredIntents,\n setAcceptingIntents,\n setRetainOnEmpty,\n setIntentRange,\n setPaymentMethodActive,\n setCurrencyMinRate,\n addCurrencies,\n deactivateCurrency,\n addPaymentMethods,\n getDeposit,\n getAccountDeposits,\n reset,\n refetchOrchestrator,\n refetchDepositCounter,\n }\n}\n","/**\n * @fileoverview Hook for tracking transactions through indexer sync.\n *\n * Manages the full transaction lifecycle: submission → confirmation → indexer sync.\n * Provides phase tracking and optional toast notifications for slow indexer syncs.\n *\n * @remarks\n * The indexer typically lags behind the blockchain by a few seconds.\n * This hook waits for the indexer to catch up before reporting success,\n * ensuring the UI shows consistent state after transactions.\n *\n * Requires a `ProvexProvider` ancestor (a public client is auto-built\n * from `config.chain` if one is not supplied).\n */\n\nimport { useState, useCallback } from 'react'\nimport type { Hex } from 'viem'\nimport type { ChainId } from '@provex/utils/chain'\nimport { orderId } from '@provex/utils/ids'\nimport { getLatestContract } from '@provex/utils/contracts'\nimport { checkTransactionIndexed, checkMutation, type IndexerAdapter } from '../lib/updates'\nimport { getUserFriendlyErrorMessage } from '../lib/errors'\nimport { useOptionalProvex, useOptionalProvexPublicClient } from '../ProvexProvider'\n\n/**\n * Phase of the transaction lifecycle.\n */\nexport type TransactionPhase = 'idle' | 'submitting' | 'confirming' | 'syncing' | 'complete' | 'error'\n\nexport interface UseTransactionWithIndexerOptions {\n /** Called when transaction is fully indexed */\n onSuccess?: () => void\n /** Called on any error */\n onError?: (error: Error) => void\n /** Called when indexer sync is taking longer than expected. */\n onSlowSync?: () => void\n /** Called after the transaction is confirmed on-chain. */\n onTransactionConfirmed?: (params: { hash: Hex; chainId: ChainId; action: string }) => void\n /** Called when a transaction-level error message is available. */\n onTransactionError?: (message: string) => void\n /** Indexer adapter. Falls back to ProvexProvider context, then skips sync. */\n indexer?: IndexerAdapter\n}\n\nexport interface TransactionSyncOptions {\n /** The transaction hash to track */\n hash: Hex\n /** Chain ID for the transaction */\n chainId: ChainId\n /** Action description (e.g., \"Deposit created\") */\n action: string\n}\n\nexport interface MutationSyncOptions {\n /** The transaction hash */\n hash: Hex\n /** Deposit local ID for mutation tracking */\n depositId: bigint\n /** Chain ID for the deposit */\n chainId: ChainId\n /** Target status to wait for */\n status: string\n /** Action description */\n action: string\n}\n\n/**\n * Hook for handling the three-phase transaction flow:\n * 1. Transaction submission (handled by caller)\n * 2. Transaction confirmation (waiting for mining)\n * 3. Indexer sync (waiting for indexer to process)\n */\nexport const useTransactionWithIndexer = (options: UseTransactionWithIndexerOptions = {}) => {\n const { onSuccess, onError, onSlowSync, onTransactionConfirmed, onTransactionError, indexer: indexerParam } = options\n const provex = useOptionalProvex()\n const indexer = indexerParam ?? provex?.indexer\n\n const [phase, setPhase] = useState<TransactionPhase>('idle')\n const publicClient = useOptionalProvexPublicClient()\n\n const waitForTransaction = useCallback(async ({\n hash,\n chainId,\n action,\n }: TransactionSyncOptions) => {\n try {\n setPhase('confirming')\n await publicClient?.waitForTransactionReceipt({ hash })\n\n if (indexer) {\n setPhase('syncing')\n await checkTransactionIndexed({\n queryTransaction: indexer.getTransactionByHash,\n hash,\n onSlowSync,\n })\n }\n\n setPhase('complete')\n onTransactionConfirmed?.({ hash, chainId, action })\n onSuccess?.()\n } catch (e) {\n setPhase('error')\n const error = e instanceof Error ? e : new Error(String(e))\n onTransactionError?.(getUserFriendlyErrorMessage(error))\n onError?.(error)\n throw e\n }\n }, [publicClient, indexer, onSuccess, onError, onSlowSync, onTransactionConfirmed, onTransactionError])\n\n const waitForMutation = useCallback(async ({\n hash,\n depositId,\n chainId,\n status,\n action,\n }: MutationSyncOptions) => {\n try {\n setPhase('confirming')\n await publicClient?.waitForTransactionReceipt({ hash })\n\n if (indexer) {\n setPhase('syncing')\n\n const escrow = getLatestContract(chainId, 'escrow')!\n const depositIdHex = orderId.deposit.serialize({\n escrow,\n depositId,\n chainId,\n })\n\n await checkMutation({\n queryDeposit: indexer.getDepositById,\n depositIdHex,\n status,\n onSlowSync,\n })\n }\n\n setPhase('complete')\n onTransactionConfirmed?.({ hash, chainId, action })\n onSuccess?.()\n } catch (e) {\n setPhase('error')\n const error = e instanceof Error ? e : new Error(String(e))\n onTransactionError?.(getUserFriendlyErrorMessage(error))\n onError?.(error)\n throw e\n }\n }, [publicClient, indexer, onSuccess, onError, onSlowSync, onTransactionConfirmed, onTransactionError])\n\n const reset = useCallback(() => {\n setPhase('idle')\n }, [])\n\n const isLoading = phase === 'submitting' || phase === 'confirming' || phase === 'syncing'\n\n const loadingText = phase === 'syncing'\n ? 'Syncing...'\n : phase === 'confirming'\n ? 'Confirming...'\n : undefined\n\n return {\n phase,\n isLoading,\n loadingText,\n waitForTransaction,\n waitForMutation,\n reset,\n setPhase,\n }\n}\n"]}
@@ -0,0 +1,53 @@
1
+ 'use strict';
2
+
3
+ // src/lib/manualClock.ts
4
+ var createManualClock = (startMs = 0) => {
5
+ let currentMs = startMs;
6
+ let nextId = 1;
7
+ const timers = /* @__PURE__ */ new Map();
8
+ const toHandle = (id) => id;
9
+ const cancel = (handle) => {
10
+ timers.delete(handle);
11
+ };
12
+ const schedule = (callback, delayMs, repeatMs) => {
13
+ const id = nextId++;
14
+ timers.set(id, { id, dueAt: currentMs + Math.max(0, delayMs), callback, repeatMs });
15
+ return toHandle(id);
16
+ };
17
+ const flush = () => new Promise((resolve) => globalThis.setTimeout(resolve, 0));
18
+ const earliestDueBy = (limitMs) => {
19
+ let earliest;
20
+ for (const timer of timers.values()) {
21
+ if (timer.dueAt > limitMs) continue;
22
+ const isEarlier = !earliest || timer.dueAt < earliest.dueAt || timer.dueAt === earliest.dueAt && timer.id < earliest.id;
23
+ if (isEarlier) earliest = timer;
24
+ }
25
+ return earliest;
26
+ };
27
+ const advance = async (ms) => {
28
+ const targetMs = currentMs + ms;
29
+ for (let due = earliestDueBy(targetMs); due; due = earliestDueBy(targetMs)) {
30
+ currentMs = Math.max(currentMs, due.dueAt);
31
+ if (due.repeatMs === null) timers.delete(due.id);
32
+ else due.dueAt = currentMs + Math.max(1, due.repeatMs);
33
+ due.callback();
34
+ await flush();
35
+ }
36
+ currentMs = targetMs;
37
+ await flush();
38
+ };
39
+ return {
40
+ now: () => currentMs,
41
+ setTimeout: (callback, delayMs) => schedule(callback, delayMs, null),
42
+ clearTimeout: cancel,
43
+ setInterval: (callback, intervalMs) => schedule(callback, intervalMs, intervalMs),
44
+ clearInterval: cancel,
45
+ advance,
46
+ flush,
47
+ pendingTimerCount: () => timers.size
48
+ };
49
+ };
50
+
51
+ exports.createManualClock = createManualClock;
52
+ //# sourceMappingURL=testing.cjs.map
53
+ //# sourceMappingURL=testing.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/manualClock.ts"],"names":[],"mappings":";;;AAqCO,IAAM,iBAAA,GAAoB,CAAC,OAAA,GAAU,CAAA,KAAmB;AAC7D,EAAA,IAAI,SAAA,GAAY,OAAA;AAChB,EAAA,IAAI,MAAA,GAAS,CAAA;AACb,EAAA,MAAM,MAAA,uBAAa,GAAA,EAA4B;AAG/C,EAAA,MAAM,QAAA,GAAW,CAAC,EAAA,KAA4B,EAAA;AAC9C,EAAA,MAAM,MAAA,GAAS,CAAC,MAAA,KAA8B;AAC5C,IAAA,MAAA,CAAO,OAAO,MAA2B,CAAA;AAAA,EAC3C,CAAA;AAEA,EAAA,MAAM,QAAA,GAAW,CAAC,QAAA,EAAsB,OAAA,EAAiB,QAAA,KAAyC;AAChG,IAAA,MAAM,EAAA,GAAK,MAAA,EAAA;AACX,IAAA,MAAA,CAAO,GAAA,CAAI,EAAA,EAAI,EAAE,EAAA,EAAI,KAAA,EAAO,SAAA,GAAY,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,OAAO,CAAA,EAAG,QAAA,EAAU,UAAU,CAAA;AAClF,IAAA,OAAO,SAAS,EAAE,CAAA;AAAA,EACpB,CAAA;AAEA,EAAA,MAAM,KAAA,GAAQ,MAAqB,IAAI,OAAA,CAAQ,CAAC,YAAY,UAAA,CAAW,UAAA,CAAW,OAAA,EAAS,CAAC,CAAC,CAAA;AAE7F,EAAA,MAAM,aAAA,GAAgB,CAAC,OAAA,KAAgD;AACrE,IAAA,IAAI,QAAA;AACJ,IAAA,KAAA,MAAW,KAAA,IAAS,MAAA,CAAO,MAAA,EAAO,EAAG;AACnC,MAAA,IAAI,KAAA,CAAM,QAAQ,OAAA,EAAS;AAC3B,MAAA,MAAM,SAAA,GACJ,CAAC,QAAA,IAAY,KAAA,CAAM,KAAA,GAAQ,QAAA,CAAS,KAAA,IAAU,KAAA,CAAM,KAAA,KAAU,QAAA,CAAS,KAAA,IAAS,KAAA,CAAM,KAAK,QAAA,CAAS,EAAA;AACtG,MAAA,IAAI,WAAW,QAAA,GAAW,KAAA;AAAA,IAC5B;AACA,IAAA,OAAO,QAAA;AAAA,EACT,CAAA;AAEA,EAAA,MAAM,OAAA,GAAU,OAAO,EAAA,KAA8B;AACnD,IAAA,MAAM,WAAW,SAAA,GAAY,EAAA;AAC7B,IAAA,KAAA,IAAS,GAAA,GAAM,cAAc,QAAQ,CAAA,EAAG,KAAK,GAAA,GAAM,aAAA,CAAc,QAAQ,CAAA,EAAG;AAC1E,MAAA,SAAA,GAAY,IAAA,CAAK,GAAA,CAAI,SAAA,EAAW,GAAA,CAAI,KAAK,CAAA;AACzC,MAAA,IAAI,IAAI,QAAA,KAAa,IAAA,EAAM,MAAA,CAAO,MAAA,CAAO,IAAI,EAAE,CAAA;AAAA,eACtC,KAAA,GAAQ,SAAA,GAAY,KAAK,GAAA,CAAI,CAAA,EAAG,IAAI,QAAQ,CAAA;AACrD,MAAA,GAAA,CAAI,QAAA,EAAS;AACb,MAAA,MAAM,KAAA,EAAM;AAAA,IACd;AACA,IAAA,SAAA,GAAY,QAAA;AACZ,IAAA,MAAM,KAAA,EAAM;AAAA,EACd,CAAA;AAEA,EAAA,OAAO;AAAA,IACL,KAAK,MAAM,SAAA;AAAA,IACX,YAAY,CAAC,QAAA,EAAU,YAAY,QAAA,CAAS,QAAA,EAAU,SAAS,IAAI,CAAA;AAAA,IACnE,YAAA,EAAc,MAAA;AAAA,IACd,aAAa,CAAC,QAAA,EAAU,eAAe,QAAA,CAAS,QAAA,EAAU,YAAY,UAAU,CAAA;AAAA,IAChF,aAAA,EAAe,MAAA;AAAA,IACf,OAAA;AAAA,IACA,KAAA;AAAA,IACA,iBAAA,EAAmB,MAAM,MAAA,CAAO;AAAA,GAClC;AACF","file":"testing.cjs","sourcesContent":["/**\n * @fileoverview Deterministic `Clock` for tests.\n *\n * Time moves only when the test calls `advance`. Timers fire in due-time\n * order, and ties fire in creation order. After each timer fires, `advance`\n * yields to the real event loop so promise continuations run before the\n * next timer. This lets a test drive an async polling loop step by step.\n */\n\nimport type { Clock, TimerHandle } from './clock'\n\n/** A `Clock` whose time the test controls. */\nexport interface ManualClock extends Clock {\n /**\n * Move time forward by `ms`, firing every timer that falls due on the way.\n * Resolves after the promise continuations of the last timer have run.\n */\n advance(ms: number): Promise<void>\n /** Let pending promise continuations run without moving time. */\n flush(): Promise<void>\n /** Number of timers that have not fired and have not been cleared. */\n pendingTimerCount(): number\n}\n\ninterface ScheduledTimer {\n readonly id: number\n dueAt: number\n readonly callback: () => void\n /** Repeat period for an interval; `null` for a one-shot timeout. */\n readonly repeatMs: number | null\n}\n\n/**\n * Create a manual clock.\n *\n * @param startMs - The value `now()` returns before any `advance`. Default 0.\n */\nexport const createManualClock = (startMs = 0): ManualClock => {\n let currentMs = startMs\n let nextId = 1\n const timers = new Map<number, ScheduledTimer>()\n\n // Timer handles are plain numbers here; callers treat them as opaque.\n const toHandle = (id: number): TimerHandle => id as unknown as TimerHandle\n const cancel = (handle: TimerHandle): void => {\n timers.delete(handle as unknown as number)\n }\n\n const schedule = (callback: () => void, delayMs: number, repeatMs: number | null): TimerHandle => {\n const id = nextId++\n timers.set(id, { id, dueAt: currentMs + Math.max(0, delayMs), callback, repeatMs })\n return toHandle(id)\n }\n\n const flush = (): Promise<void> => new Promise((resolve) => globalThis.setTimeout(resolve, 0))\n\n const earliestDueBy = (limitMs: number): ScheduledTimer | undefined => {\n let earliest: ScheduledTimer | undefined\n for (const timer of timers.values()) {\n if (timer.dueAt > limitMs) continue\n const isEarlier =\n !earliest || timer.dueAt < earliest.dueAt || (timer.dueAt === earliest.dueAt && timer.id < earliest.id)\n if (isEarlier) earliest = timer\n }\n return earliest\n }\n\n const advance = async (ms: number): Promise<void> => {\n const targetMs = currentMs + ms\n for (let due = earliestDueBy(targetMs); due; due = earliestDueBy(targetMs)) {\n currentMs = Math.max(currentMs, due.dueAt)\n if (due.repeatMs === null) timers.delete(due.id)\n else due.dueAt = currentMs + Math.max(1, due.repeatMs)\n due.callback()\n await flush()\n }\n currentMs = targetMs\n await flush()\n }\n\n return {\n now: () => currentMs,\n setTimeout: (callback, delayMs) => schedule(callback, delayMs, null),\n clearTimeout: cancel,\n setInterval: (callback, intervalMs) => schedule(callback, intervalMs, intervalMs),\n clearInterval: cancel,\n advance,\n flush,\n pendingTimerCount: () => timers.size,\n }\n}\n"]}
@@ -0,0 +1,31 @@
1
+ import { C as Clock } from './clock-BDtn-Itb.cjs';
2
+
3
+ /**
4
+ * @fileoverview Deterministic `Clock` for tests.
5
+ *
6
+ * Time moves only when the test calls `advance`. Timers fire in due-time
7
+ * order, and ties fire in creation order. After each timer fires, `advance`
8
+ * yields to the real event loop so promise continuations run before the
9
+ * next timer. This lets a test drive an async polling loop step by step.
10
+ */
11
+
12
+ /** A `Clock` whose time the test controls. */
13
+ interface ManualClock extends Clock {
14
+ /**
15
+ * Move time forward by `ms`, firing every timer that falls due on the way.
16
+ * Resolves after the promise continuations of the last timer have run.
17
+ */
18
+ advance(ms: number): Promise<void>;
19
+ /** Let pending promise continuations run without moving time. */
20
+ flush(): Promise<void>;
21
+ /** Number of timers that have not fired and have not been cleared. */
22
+ pendingTimerCount(): number;
23
+ }
24
+ /**
25
+ * Create a manual clock.
26
+ *
27
+ * @param startMs - The value `now()` returns before any `advance`. Default 0.
28
+ */
29
+ declare const createManualClock: (startMs?: number) => ManualClock;
30
+
31
+ export { type ManualClock, createManualClock };
@@ -0,0 +1,31 @@
1
+ import { C as Clock } from './clock-BDtn-Itb.js';
2
+
3
+ /**
4
+ * @fileoverview Deterministic `Clock` for tests.
5
+ *
6
+ * Time moves only when the test calls `advance`. Timers fire in due-time
7
+ * order, and ties fire in creation order. After each timer fires, `advance`
8
+ * yields to the real event loop so promise continuations run before the
9
+ * next timer. This lets a test drive an async polling loop step by step.
10
+ */
11
+
12
+ /** A `Clock` whose time the test controls. */
13
+ interface ManualClock extends Clock {
14
+ /**
15
+ * Move time forward by `ms`, firing every timer that falls due on the way.
16
+ * Resolves after the promise continuations of the last timer have run.
17
+ */
18
+ advance(ms: number): Promise<void>;
19
+ /** Let pending promise continuations run without moving time. */
20
+ flush(): Promise<void>;
21
+ /** Number of timers that have not fired and have not been cleared. */
22
+ pendingTimerCount(): number;
23
+ }
24
+ /**
25
+ * Create a manual clock.
26
+ *
27
+ * @param startMs - The value `now()` returns before any `advance`. Default 0.
28
+ */
29
+ declare const createManualClock: (startMs?: number) => ManualClock;
30
+
31
+ export { type ManualClock, createManualClock };
@@ -0,0 +1,51 @@
1
+ // src/lib/manualClock.ts
2
+ var createManualClock = (startMs = 0) => {
3
+ let currentMs = startMs;
4
+ let nextId = 1;
5
+ const timers = /* @__PURE__ */ new Map();
6
+ const toHandle = (id) => id;
7
+ const cancel = (handle) => {
8
+ timers.delete(handle);
9
+ };
10
+ const schedule = (callback, delayMs, repeatMs) => {
11
+ const id = nextId++;
12
+ timers.set(id, { id, dueAt: currentMs + Math.max(0, delayMs), callback, repeatMs });
13
+ return toHandle(id);
14
+ };
15
+ const flush = () => new Promise((resolve) => globalThis.setTimeout(resolve, 0));
16
+ const earliestDueBy = (limitMs) => {
17
+ let earliest;
18
+ for (const timer of timers.values()) {
19
+ if (timer.dueAt > limitMs) continue;
20
+ const isEarlier = !earliest || timer.dueAt < earliest.dueAt || timer.dueAt === earliest.dueAt && timer.id < earliest.id;
21
+ if (isEarlier) earliest = timer;
22
+ }
23
+ return earliest;
24
+ };
25
+ const advance = async (ms) => {
26
+ const targetMs = currentMs + ms;
27
+ for (let due = earliestDueBy(targetMs); due; due = earliestDueBy(targetMs)) {
28
+ currentMs = Math.max(currentMs, due.dueAt);
29
+ if (due.repeatMs === null) timers.delete(due.id);
30
+ else due.dueAt = currentMs + Math.max(1, due.repeatMs);
31
+ due.callback();
32
+ await flush();
33
+ }
34
+ currentMs = targetMs;
35
+ await flush();
36
+ };
37
+ return {
38
+ now: () => currentMs,
39
+ setTimeout: (callback, delayMs) => schedule(callback, delayMs, null),
40
+ clearTimeout: cancel,
41
+ setInterval: (callback, intervalMs) => schedule(callback, intervalMs, intervalMs),
42
+ clearInterval: cancel,
43
+ advance,
44
+ flush,
45
+ pendingTimerCount: () => timers.size
46
+ };
47
+ };
48
+
49
+ export { createManualClock };
50
+ //# sourceMappingURL=testing.js.map
51
+ //# sourceMappingURL=testing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/manualClock.ts"],"names":[],"mappings":";AAqCO,IAAM,iBAAA,GAAoB,CAAC,OAAA,GAAU,CAAA,KAAmB;AAC7D,EAAA,IAAI,SAAA,GAAY,OAAA;AAChB,EAAA,IAAI,MAAA,GAAS,CAAA;AACb,EAAA,MAAM,MAAA,uBAAa,GAAA,EAA4B;AAG/C,EAAA,MAAM,QAAA,GAAW,CAAC,EAAA,KAA4B,EAAA;AAC9C,EAAA,MAAM,MAAA,GAAS,CAAC,MAAA,KAA8B;AAC5C,IAAA,MAAA,CAAO,OAAO,MAA2B,CAAA;AAAA,EAC3C,CAAA;AAEA,EAAA,MAAM,QAAA,GAAW,CAAC,QAAA,EAAsB,OAAA,EAAiB,QAAA,KAAyC;AAChG,IAAA,MAAM,EAAA,GAAK,MAAA,EAAA;AACX,IAAA,MAAA,CAAO,GAAA,CAAI,EAAA,EAAI,EAAE,EAAA,EAAI,KAAA,EAAO,SAAA,GAAY,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,OAAO,CAAA,EAAG,QAAA,EAAU,UAAU,CAAA;AAClF,IAAA,OAAO,SAAS,EAAE,CAAA;AAAA,EACpB,CAAA;AAEA,EAAA,MAAM,KAAA,GAAQ,MAAqB,IAAI,OAAA,CAAQ,CAAC,YAAY,UAAA,CAAW,UAAA,CAAW,OAAA,EAAS,CAAC,CAAC,CAAA;AAE7F,EAAA,MAAM,aAAA,GAAgB,CAAC,OAAA,KAAgD;AACrE,IAAA,IAAI,QAAA;AACJ,IAAA,KAAA,MAAW,KAAA,IAAS,MAAA,CAAO,MAAA,EAAO,EAAG;AACnC,MAAA,IAAI,KAAA,CAAM,QAAQ,OAAA,EAAS;AAC3B,MAAA,MAAM,SAAA,GACJ,CAAC,QAAA,IAAY,KAAA,CAAM,KAAA,GAAQ,QAAA,CAAS,KAAA,IAAU,KAAA,CAAM,KAAA,KAAU,QAAA,CAAS,KAAA,IAAS,KAAA,CAAM,KAAK,QAAA,CAAS,EAAA;AACtG,MAAA,IAAI,WAAW,QAAA,GAAW,KAAA;AAAA,IAC5B;AACA,IAAA,OAAO,QAAA;AAAA,EACT,CAAA;AAEA,EAAA,MAAM,OAAA,GAAU,OAAO,EAAA,KAA8B;AACnD,IAAA,MAAM,WAAW,SAAA,GAAY,EAAA;AAC7B,IAAA,KAAA,IAAS,GAAA,GAAM,cAAc,QAAQ,CAAA,EAAG,KAAK,GAAA,GAAM,aAAA,CAAc,QAAQ,CAAA,EAAG;AAC1E,MAAA,SAAA,GAAY,IAAA,CAAK,GAAA,CAAI,SAAA,EAAW,GAAA,CAAI,KAAK,CAAA;AACzC,MAAA,IAAI,IAAI,QAAA,KAAa,IAAA,EAAM,MAAA,CAAO,MAAA,CAAO,IAAI,EAAE,CAAA;AAAA,eACtC,KAAA,GAAQ,SAAA,GAAY,KAAK,GAAA,CAAI,CAAA,EAAG,IAAI,QAAQ,CAAA;AACrD,MAAA,GAAA,CAAI,QAAA,EAAS;AACb,MAAA,MAAM,KAAA,EAAM;AAAA,IACd;AACA,IAAA,SAAA,GAAY,QAAA;AACZ,IAAA,MAAM,KAAA,EAAM;AAAA,EACd,CAAA;AAEA,EAAA,OAAO;AAAA,IACL,KAAK,MAAM,SAAA;AAAA,IACX,YAAY,CAAC,QAAA,EAAU,YAAY,QAAA,CAAS,QAAA,EAAU,SAAS,IAAI,CAAA;AAAA,IACnE,YAAA,EAAc,MAAA;AAAA,IACd,aAAa,CAAC,QAAA,EAAU,eAAe,QAAA,CAAS,QAAA,EAAU,YAAY,UAAU,CAAA;AAAA,IAChF,aAAA,EAAe,MAAA;AAAA,IACf,OAAA;AAAA,IACA,KAAA;AAAA,IACA,iBAAA,EAAmB,MAAM,MAAA,CAAO;AAAA,GAClC;AACF","file":"testing.js","sourcesContent":["/**\n * @fileoverview Deterministic `Clock` for tests.\n *\n * Time moves only when the test calls `advance`. Timers fire in due-time\n * order, and ties fire in creation order. After each timer fires, `advance`\n * yields to the real event loop so promise continuations run before the\n * next timer. This lets a test drive an async polling loop step by step.\n */\n\nimport type { Clock, TimerHandle } from './clock'\n\n/** A `Clock` whose time the test controls. */\nexport interface ManualClock extends Clock {\n /**\n * Move time forward by `ms`, firing every timer that falls due on the way.\n * Resolves after the promise continuations of the last timer have run.\n */\n advance(ms: number): Promise<void>\n /** Let pending promise continuations run without moving time. */\n flush(): Promise<void>\n /** Number of timers that have not fired and have not been cleared. */\n pendingTimerCount(): number\n}\n\ninterface ScheduledTimer {\n readonly id: number\n dueAt: number\n readonly callback: () => void\n /** Repeat period for an interval; `null` for a one-shot timeout. */\n readonly repeatMs: number | null\n}\n\n/**\n * Create a manual clock.\n *\n * @param startMs - The value `now()` returns before any `advance`. Default 0.\n */\nexport const createManualClock = (startMs = 0): ManualClock => {\n let currentMs = startMs\n let nextId = 1\n const timers = new Map<number, ScheduledTimer>()\n\n // Timer handles are plain numbers here; callers treat them as opaque.\n const toHandle = (id: number): TimerHandle => id as unknown as TimerHandle\n const cancel = (handle: TimerHandle): void => {\n timers.delete(handle as unknown as number)\n }\n\n const schedule = (callback: () => void, delayMs: number, repeatMs: number | null): TimerHandle => {\n const id = nextId++\n timers.set(id, { id, dueAt: currentMs + Math.max(0, delayMs), callback, repeatMs })\n return toHandle(id)\n }\n\n const flush = (): Promise<void> => new Promise((resolve) => globalThis.setTimeout(resolve, 0))\n\n const earliestDueBy = (limitMs: number): ScheduledTimer | undefined => {\n let earliest: ScheduledTimer | undefined\n for (const timer of timers.values()) {\n if (timer.dueAt > limitMs) continue\n const isEarlier =\n !earliest || timer.dueAt < earliest.dueAt || (timer.dueAt === earliest.dueAt && timer.id < earliest.id)\n if (isEarlier) earliest = timer\n }\n return earliest\n }\n\n const advance = async (ms: number): Promise<void> => {\n const targetMs = currentMs + ms\n for (let due = earliestDueBy(targetMs); due; due = earliestDueBy(targetMs)) {\n currentMs = Math.max(currentMs, due.dueAt)\n if (due.repeatMs === null) timers.delete(due.id)\n else due.dueAt = currentMs + Math.max(1, due.repeatMs)\n due.callback()\n await flush()\n }\n currentMs = targetMs\n await flush()\n }\n\n return {\n now: () => currentMs,\n setTimeout: (callback, delayMs) => schedule(callback, delayMs, null),\n clearTimeout: cancel,\n setInterval: (callback, intervalMs) => schedule(callback, intervalMs, intervalMs),\n clearInterval: cancel,\n advance,\n flush,\n pendingTimerCount: () => timers.size,\n }\n}\n"]}