@zkp2p/sdk 0.6.3 → 0.7.2

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/react/hooks/useCreateDeposit.ts","../src/react/hooks/useSignalIntent.ts","../src/takerTiers.ts","../src/react/hooks/useGetTakerTier.ts","../src/react/hooks/useFulfillIntent.ts","../src/react/hooks/useReleaseFundsToPayer.ts","../src/react/hooks/useSetAcceptingIntents.ts","../src/react/hooks/useSetIntentRange.ts","../src/react/hooks/useSetCurrencyMinRate.ts","../src/react/hooks/useAddFunds.ts","../src/react/hooks/useRemoveFunds.ts","../src/react/hooks/useWithdrawDeposit.ts","../src/react/hooks/useSetRetainOnEmpty.ts","../src/react/hooks/useSetDelegate.ts","../src/react/hooks/useRemoveDelegate.ts","../src/react/hooks/vaultUtils.ts","../src/react/hooks/useCreateVault.ts","../src/react/hooks/useVaultDelegation.ts","../src/react/hooks/useSetVaultFee.ts","../src/react/hooks/useSetVaultMinRate.ts","../src/react/hooks/useSetVaultConfig.ts","../src/react/hooks/useAddPaymentMethods.ts","../src/react/hooks/useSetPaymentMethodActive.ts","../src/react/hooks/useRemovePaymentMethod.ts","../src/react/hooks/useAddCurrencies.ts","../src/react/hooks/useDeactivateCurrency.ts","../src/react/hooks/useRemoveCurrency.ts","../src/react/hooks/usePruneExpiredIntents.ts"],"names":["useState","useCallback","useMemo","useEffect","formatUnits","error"],"mappings":"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","file":"react.cjs","sourcesContent":["import { useState, useCallback, useMemo } from 'react';\nimport type { Zkp2pClient } from '../../client/Zkp2pClient';\nimport type { Hash } from 'viem';\nimport type { PostDepositDetailsRequest } from '../../types';\n\nexport interface UseCreateDepositOptions {\n client: Zkp2pClient | null;\n onSuccess?: (result: { hash: Hash; depositDetails: PostDepositDetailsRequest[] }) => void;\n onError?: (error: Error) => void;\n}\n\nexport function useCreateDeposit({ client, onSuccess, onError }: UseCreateDepositOptions) {\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [txHash, setTxHash] = useState<Hash | null>(null);\n const [depositDetails, setDepositDetails] = useState<PostDepositDetailsRequest[] | null>(null);\n\n const createDeposit = useCallback(\n async (params: Parameters<Zkp2pClient['createDeposit']>[0]) => {\n if (!client) {\n const err = new Error('Zkp2pClient is not initialized');\n setError(err);\n onError?.(err);\n return null;\n }\n\n setIsLoading(true);\n setError(null);\n setTxHash(null);\n setDepositDetails(null);\n\n try {\n const result = await client.createDeposit(params);\n setTxHash(result.hash as Hash);\n setDepositDetails(result.depositDetails);\n onSuccess?.(result);\n return result as any;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(e);\n onError?.(e);\n return null;\n } finally {\n setIsLoading(false);\n }\n },\n [client, onSuccess, onError],\n );\n\n return useMemo(\n () => ({ createDeposit, isLoading, error, txHash, depositDetails }),\n [createDeposit, isLoading, error, txHash, depositDetails],\n );\n}\n","import { useState, useCallback, useMemo } from 'react';\nimport type { Zkp2pClient, SignalIntentMethodParams } from '../../client/Zkp2pClient';\nimport type { PreparedTransaction } from '../../types/prepared';\nimport type { Hash } from 'viem';\n\nexport interface UseSignalIntentOptions {\n client: Zkp2pClient | null;\n onSuccess?: (hash: Hash) => void;\n onError?: (error: Error) => void;\n}\n\n/**\n * React hook for signaling intent to use a deposit.\n *\n * Provides both execute and prepare functionality:\n * - `signalIntent(params)` - Execute transaction directly\n * - `prepareSignalIntent(params)` - Get prepared transaction for relayer submission\n *\n * @example\n * ```tsx\n * function SignalButton({ client, params }) {\n * const { signalIntent, prepareSignalIntent, isLoading, error, txHash, prepared } = useSignalIntent({ client });\n *\n * // Execute directly\n * const handleExecute = () => signalIntent(params);\n *\n * // Or prepare for relayer\n * const handlePrepare = async () => {\n * const tx = await prepareSignalIntent(params);\n * if (tx) await submitToRelayer(tx);\n * };\n *\n * return <button onClick={handleExecute} disabled={isLoading}>Signal Intent</button>;\n * }\n * ```\n */\nexport function useSignalIntent({ client, onSuccess, onError }: UseSignalIntentOptions) {\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [txHash, setTxHash] = useState<Hash | null>(null);\n const [prepared, setPrepared] = useState<PreparedTransaction | null>(null);\n\n const signalIntent = useCallback(\n async (params: SignalIntentMethodParams) => {\n if (!client) {\n const err = new Error('Zkp2pClient is not initialized');\n setError(err);\n onError?.(err);\n return null;\n }\n setIsLoading(true);\n setError(null);\n setTxHash(null);\n try {\n const hash = await client.signalIntent(params);\n setTxHash(hash);\n onSuccess?.(hash);\n return hash;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(e);\n onError?.(e);\n return null;\n } finally {\n setIsLoading(false);\n }\n },\n [client, onSuccess, onError]\n );\n\n const prepareSignalIntent = useCallback(\n async (params: SignalIntentMethodParams) => {\n if (!client) {\n const err = new Error('Zkp2pClient is not initialized');\n setError(err);\n onError?.(err);\n return null;\n }\n setIsLoading(true);\n setError(null);\n setPrepared(null);\n try {\n const result = await client.signalIntent.prepare(params);\n setPrepared(result);\n return result;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(e);\n onError?.(e);\n return null;\n } finally {\n setIsLoading(false);\n }\n },\n [client, onError]\n );\n\n return useMemo(\n () => ({ signalIntent, prepareSignalIntent, isLoading, error, txHash, prepared }),\n [signalIntent, prepareSignalIntent, isLoading, error, txHash, prepared]\n );\n}\n","import type { TakerTierLevel } from './types';\n\n/**\n * Canonical taker tier schedule — the single client-side source of truth for\n * per-intent caps and volume thresholds. Mirrors the curator's authoritative\n * tier engine (curator `src/common/services/tier/tierConstants.ts`), which is\n * what the backend actually enforces.\n *\n * The live qualification signal is **weighted all-maker volume**, not raw taker\n * fulfilled volume and no longer Peer-Pay-only. Curator keeps the response\n * field name `peerPayVolume` for compatibility, but PR #478 changed its\n * semantics to weighted maker volume.\n *\n * A user's *live* tier, cap, and progression always come from the taker-tier\n * API payload (`TakerTier.perIntentCapBaseUnits`, `minVolumeForTier`,\n * `volumeToNextTier`, `peerPayVolume`). Those values are DB-backed and\n * server-authoritative — they vary per environment (e.g. preprod runs\n * different thresholds than these). This static schedule is ONLY a\n * documented-default reference for displays that must show every tier at once\n * (the Fees & Tiers ladder) when no live payload is available; never gate or\n * compute a user's real cap from it.\n *\n * Volume bands track the live (pre-prod) tuned qualification thresholds, which\n * were re-anchored to the real maker distribution — PEER $1k, PLUS $10k,\n * PRO $50k, PLATINUM $100k. Caps ($100/$250/$1k/$2.5k/$5k) are unchanged.\n * Read the live per-user values from the API: curator can change qualification\n * inputs behind the compatibility fields without changing this reference table.\n *\n * Ordered highest tier → lowest (PLATINUM first) to match UI display order.\n * PEER_PRESIDENT is invite-only and excluded from the volume ladder.\n */\nexport interface TakerTierScheduleEntry {\n tier: TakerTierLevel;\n /** Per-intent order cap in whole USD (base, before platform risk multipliers). */\n perIntentCapUsd: number;\n /** Inclusive lower bound of weighted maker volume (USD) that qualifies for this tier. */\n minVolumeUsd: number;\n /** Inclusive upper bound of weighted maker volume (USD); `Infinity` for the top tier. */\n maxVolumeUsd: number;\n}\n\nexport const TAKER_TIER_SCHEDULE: readonly TakerTierScheduleEntry[] = [\n { tier: 'PLATINUM', perIntentCapUsd: 5000, minVolumeUsd: 100000, maxVolumeUsd: Infinity },\n { tier: 'PRO', perIntentCapUsd: 2500, minVolumeUsd: 50000, maxVolumeUsd: 99999 },\n { tier: 'PLUS', perIntentCapUsd: 1000, minVolumeUsd: 10000, maxVolumeUsd: 49999 },\n { tier: 'PEER', perIntentCapUsd: 250, minVolumeUsd: 1000, maxVolumeUsd: 9999 },\n { tier: 'PEASANT', perIntentCapUsd: 100, minVolumeUsd: 0, maxVolumeUsd: 999 },\n];\n\n/** Volume-based tier order, lowest → highest, for next-tier progression. */\nexport const TAKER_TIER_ORDER: readonly TakerTierLevel[] = [\n 'PEASANT',\n 'PEER',\n 'PLUS',\n 'PRO',\n 'PLATINUM',\n];\n\n/** Per-intent caps (whole USD) keyed by tier, derived from the schedule. */\nexport const TAKER_TIER_CAPS: Readonly<Record<string, number>> = Object.fromEntries(\n TAKER_TIER_SCHEDULE.map((entry) => [entry.tier, entry.perIntentCapUsd]),\n);\n\n/**\n * Default take-fee discount (in basis points) applied per tier, mirroring\n * curator `TIER_FEE_DISCOUNT_BPS`. The discount is subtracted from the base\n * service fee server-side at quote and sign time — it is NOT returned by the\n * tier endpoint. These are documented defaults for reference fee displays only;\n * the curator DB control-plane can override them, so prefer the fee shown on a\n * live quote when one is available.\n */\nexport const TAKER_TIER_FEE_DISCOUNT_BPS: Readonly<Record<TakerTierLevel, number>> = {\n PEASANT: 0,\n PEER: 5,\n PLUS: 10,\n PRO: 20,\n PLATINUM: 30,\n PEER_PRESIDENT: 30,\n};\n\n/** The default fee-discount (bps) for a tier, or 0 for unknown tiers. */\nexport function getTakerTierFeeDiscountBps(tier: string | undefined): number {\n if (!tier) return 0;\n return TAKER_TIER_FEE_DISCOUNT_BPS[tier as TakerTierLevel] ?? 0;\n}\n\n/** The next tier up from `currentTier`, or `null` at the top / for unknown tiers. */\nexport function getNextTakerTier(currentTier: string | undefined): TakerTierLevel | null {\n if (!currentTier) return null;\n const index = TAKER_TIER_ORDER.indexOf(currentTier as TakerTierLevel);\n if (index === -1 || index >= TAKER_TIER_ORDER.length - 1) return null;\n return TAKER_TIER_ORDER[index + 1];\n}\n","import { useState, useCallback, useMemo, useEffect } from 'react';\nimport { formatUnits } from 'viem';\nimport type { Zkp2pClient } from '../../client/Zkp2pClient';\nimport type { GetTakerTierRequest, TakerTier } from '../../types';\nimport { TAKER_TIER_CAPS, getNextTakerTier } from '../../takerTiers';\n\nexport interface UseGetTakerTierOptions {\n client: Zkp2pClient | null;\n owner?: string | null;\n chainId?: number | null;\n autoFetch?: boolean;\n onSuccess?: (tier: TakerTier) => void;\n onError?: (error: Error) => void;\n}\n\nexport function useGetTakerTier({\n client,\n owner,\n chainId,\n autoFetch = true,\n onSuccess,\n onError,\n}: UseGetTakerTierOptions) {\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [takerTier, setTakerTier] = useState<TakerTier | null>(null);\n\n const getTakerTier = useCallback(\n async (params?: GetTakerTierRequest) => {\n if (!client) {\n const err = new Error('Zkp2pClient is not initialized');\n setError(err);\n onError?.(err);\n return null;\n }\n\n const request = params ?? (owner && chainId ? { owner, chainId } : null);\n if (!request) {\n const err = new Error('Owner address and chainId are required');\n setError(err);\n onError?.(err);\n return null;\n }\n\n setIsLoading(true);\n setError(null);\n setTakerTier(null);\n\n try {\n const response = await client.getTakerTier(request);\n setTakerTier(response.responseObject);\n onSuccess?.(response.responseObject);\n return response;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(e);\n onError?.(e);\n return null;\n } finally {\n setIsLoading(false);\n }\n },\n [client, owner, chainId, onSuccess, onError],\n );\n\n useEffect(() => {\n if (!autoFetch || !owner || !chainId) return;\n void getTakerTier({ owner, chainId });\n }, [autoFetch, owner, chainId, getTakerTier]);\n\n return useMemo(\n () => ({ getTakerTier, takerTier, isLoading, error }),\n [getTakerTier, takerTier, isLoading, error],\n );\n}\n\n// The per-tier cap schedule lives in one place — `takerTiers.ts`\n// (`TAKER_TIER_CAPS`), mirroring the curator's authoritative tier engine. The\n// forward-looking \"next tier cap\" hint derives from it; a user's own live cap\n// comes from the API payload (`platformLimits`, falling back to legacy\n// perIntentCapBaseUnits / nextTierMaxOrderSizeDisplay).\nexport function getNextTierCap(currentTier: string | undefined): string | null {\n const nextTier = getNextTakerTier(currentTier);\n if (!nextTier) return null;\n const nextCap = TAKER_TIER_CAPS[nextTier];\n return nextCap != null ? `$${nextCap.toLocaleString()}` : null;\n}\n\nfunction formatCapFromBaseUnits(baseUnits: string | undefined): string {\n if (!baseUnits || baseUnits === '') return '$0';\n const value = Number(formatUnits(BigInt(baseUnits), 6));\n return `$${value.toLocaleString()}`;\n}\n\nfunction getCapForDisplay(tier: TakerTier): string | undefined {\n const platformLimits = tier.platformLimits ?? [];\n if (platformLimits.length === 0) {\n return tier.perIntentCapBaseUnits ?? tier.maxOrderSize;\n }\n\n const bestCap = platformLimits\n .filter((limit) => !limit.isLocked && limit.effectiveCap && limit.effectiveCap !== '0')\n .reduce<string | undefined>((current, limit) => {\n if (!current) return limit.effectiveCap;\n return BigInt(limit.effectiveCap) > BigInt(current) ? limit.effectiveCap : current;\n }, undefined);\n\n return bestCap ?? '0';\n}\n\nexport function getTierDisplayInfo(tier: TakerTier | undefined): {\n tierLabel: string;\n capDisplay: string;\n isNewUser: boolean;\n showScore: boolean;\n} {\n if (!tier) {\n return {\n tierLabel: 'Loading...',\n capDisplay: '...',\n isNewUser: false,\n showScore: false,\n };\n }\n\n const isNewUser = tier.source === 'fallback';\n const isZeroFulfills = tier.stats?.lifetimeFulfilledCount === 0;\n\n const tierLabels: Record<string, string> = {\n PEASANT: 'Peer Peasant',\n PEER: 'Peer',\n PLUS: 'Peer Plus',\n PRO: 'Peer Pro',\n PLATINUM: 'Peer Platinum',\n };\n\n const capDisplay = formatCapFromBaseUnits(getCapForDisplay(tier));\n\n return {\n tierLabel: tierLabels[tier.tier] || tier.tier,\n capDisplay,\n isNewUser: isNewUser || isZeroFulfills,\n showScore: !isNewUser && !!tier.stats && tier.stats.lockScoreDiluted !== '0',\n };\n}\n","import { useState, useCallback, useMemo } from 'react';\nimport type { Zkp2pClient, FulfillIntentMethodParams } from '../../client/Zkp2pClient';\nimport type { PreparedTransaction } from '../../types/prepared';\nimport type { Hash } from 'viem';\n\nexport interface UseFulfillIntentOptions {\n client: Zkp2pClient | null;\n onSuccess?: (txHash: Hash) => void;\n onError?: (error: Error) => void;\n}\n\n/**\n * React hook for fulfilling an intent with payment proof.\n *\n * Provides both execute and prepare functionality:\n * - `fulfillIntent(params)` - Execute transaction directly\n * - `prepareFulfillIntent(params)` - Get prepared transaction for relayer submission\n *\n * @example\n * ```tsx\n * function FulfillButton({ client, intentHash, proof }) {\n * const { fulfillIntent, prepareFulfillIntent, isLoading, error, txHash, prepared } = useFulfillIntent({ client });\n *\n * // Execute directly\n * const handleExecute = () => fulfillIntent({ intentHash, proof });\n *\n * // Or prepare for relayer\n * const handlePrepare = async () => {\n * const tx = await prepareFulfillIntent({ intentHash, proof });\n * if (tx) await submitToRelayer(tx);\n * };\n *\n * return <button onClick={handleExecute} disabled={isLoading}>Fulfill Intent</button>;\n * }\n * ```\n */\nexport function useFulfillIntent({ client, onSuccess, onError }: UseFulfillIntentOptions) {\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [txHash, setTxHash] = useState<Hash | null>(null);\n const [prepared, setPrepared] = useState<PreparedTransaction | null>(null);\n\n const fulfillIntent = useCallback(\n async (params: FulfillIntentMethodParams) => {\n if (!client) {\n const err = new Error('Zkp2pClient is not initialized');\n setError(err);\n onError?.(err);\n return null;\n }\n setIsLoading(true);\n setError(null);\n setTxHash(null);\n try {\n const hash = await client.fulfillIntent(params);\n setTxHash(hash);\n onSuccess?.(hash);\n return hash;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(e);\n onError?.(e);\n return null;\n } finally {\n setIsLoading(false);\n }\n },\n [client, onSuccess, onError]\n );\n\n const prepareFulfillIntent = useCallback(\n async (params: FulfillIntentMethodParams) => {\n if (!client) {\n const err = new Error('Zkp2pClient is not initialized');\n setError(err);\n onError?.(err);\n return null;\n }\n setIsLoading(true);\n setError(null);\n setPrepared(null);\n try {\n const result = await client.fulfillIntent.prepare(params);\n setPrepared(result);\n return result;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(e);\n onError?.(e);\n return null;\n } finally {\n setIsLoading(false);\n }\n },\n [client, onError]\n );\n\n return useMemo(\n () => ({ fulfillIntent, prepareFulfillIntent, isLoading, error, txHash, prepared }),\n [fulfillIntent, prepareFulfillIntent, isLoading, error, txHash, prepared]\n );\n}\n","import { useState, useCallback, useMemo } from 'react';\nimport type { Zkp2pClient } from '../../client/Zkp2pClient';\nimport type { Hash } from 'viem';\n\nexport interface UseReleaseFundsToPayerOptions {\n client: Zkp2pClient | null;\n onSuccess?: (hash: Hash) => void;\n onError?: (error: Error) => void;\n}\n\nexport function useReleaseFundsToPayer({ client, onSuccess, onError }: UseReleaseFundsToPayerOptions) {\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [txHash, setTxHash] = useState<Hash | null>(null);\n\n const releaseFundsToPayer = useCallback(\n async (params: Parameters<Zkp2pClient['releaseFundsToPayer']>[0]) => {\n if (!client) {\n const err = new Error('Zkp2pClient is not initialized');\n setError(err);\n onError?.(err);\n return null;\n }\n setIsLoading(true);\n setError(null);\n setTxHash(null);\n try {\n const hash = await client.releaseFundsToPayer(params);\n setTxHash(hash);\n onSuccess?.(hash);\n return hash;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(e);\n onError?.(e);\n return null;\n } finally {\n setIsLoading(false);\n }\n },\n [client, onSuccess, onError]\n );\n\n return useMemo(() => ({ releaseFundsToPayer, isLoading, error, txHash }), [releaseFundsToPayer, isLoading, error, txHash]);\n}\n\n","import { useState, useCallback, useMemo } from 'react';\nimport type { Zkp2pClient } from '../../client/Zkp2pClient';\nimport type { Hash } from 'viem';\n\nexport interface UseSetAcceptingIntentsOptions {\n client: Zkp2pClient | null;\n onSuccess?: (hash: Hash) => void;\n onError?: (error: Error) => void;\n}\n\nexport function useSetAcceptingIntents({ client, onSuccess, onError }: UseSetAcceptingIntentsOptions) {\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [txHash, setTxHash] = useState<Hash | null>(null);\n\n const setAcceptingIntents = useCallback(\n async (params: Parameters<Zkp2pClient['setAcceptingIntents']>[0]) => {\n if (!client) {\n const err = new Error('Zkp2pClient is not initialized');\n setError(err);\n onError?.(err);\n return null;\n }\n setIsLoading(true);\n setError(null);\n setTxHash(null);\n try {\n const hash = await client.setAcceptingIntents(params);\n setTxHash(hash);\n onSuccess?.(hash);\n return hash;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(e);\n onError?.(e);\n return null;\n } finally {\n setIsLoading(false);\n }\n },\n [client, onSuccess, onError]\n );\n\n return useMemo(() => ({ setAcceptingIntents, isLoading, error, txHash }), [setAcceptingIntents, isLoading, error, txHash]);\n}\n\n","import { useState, useCallback, useMemo } from 'react';\nimport type { Zkp2pClient } from '../../client/Zkp2pClient';\nimport type { Hash } from 'viem';\n\nexport interface UseSetIntentRangeOptions {\n client: Zkp2pClient | null;\n onSuccess?: (hash: Hash) => void;\n onError?: (error: Error) => void;\n}\n\nexport function useSetIntentRange({ client, onSuccess, onError }: UseSetIntentRangeOptions) {\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [txHash, setTxHash] = useState<Hash | null>(null);\n\n const setIntentRange = useCallback(\n async (params: Parameters<Zkp2pClient['setIntentRange']>[0]) => {\n if (!client) {\n const err = new Error('Zkp2pClient is not initialized');\n setError(err);\n onError?.(err);\n return null;\n }\n setIsLoading(true);\n setError(null);\n setTxHash(null);\n try {\n const hash = await client.setIntentRange(params);\n setTxHash(hash);\n onSuccess?.(hash);\n return hash;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(e);\n onError?.(e);\n return null;\n } finally {\n setIsLoading(false);\n }\n },\n [client, onSuccess, onError]\n );\n\n return useMemo(() => ({ setIntentRange, isLoading, error, txHash }), [setIntentRange, isLoading, error, txHash]);\n}\n\n","import { useState, useCallback, useMemo } from 'react';\nimport type { Zkp2pClient } from '../../client/Zkp2pClient';\nimport type { Hash } from 'viem';\n\nexport interface UseSetCurrencyMinRateOptions {\n client: Zkp2pClient | null;\n onSuccess?: (hash: Hash) => void;\n onError?: (error: Error) => void;\n}\n\nexport function useSetCurrencyMinRate({ client, onSuccess, onError }: UseSetCurrencyMinRateOptions) {\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [txHash, setTxHash] = useState<Hash | null>(null);\n\n const setCurrencyMinRate = useCallback(\n async (params: Parameters<Zkp2pClient['setCurrencyMinRate']>[0]) => {\n if (!client) {\n const err = new Error('Zkp2pClient is not initialized');\n setError(err);\n onError?.(err);\n return null;\n }\n setIsLoading(true);\n setError(null);\n setTxHash(null);\n try {\n const hash = await client.setCurrencyMinRate(params);\n setTxHash(hash);\n onSuccess?.(hash);\n return hash;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(e);\n onError?.(e);\n return null;\n } finally {\n setIsLoading(false);\n }\n },\n [client, onSuccess, onError]\n );\n\n return useMemo(() => ({ setCurrencyMinRate, isLoading, error, txHash }), [setCurrencyMinRate, isLoading, error, txHash]);\n}\n\n","import { useState, useCallback, useMemo } from 'react';\nimport type { Zkp2pClient } from '../../client/Zkp2pClient';\nimport type { Hash } from 'viem';\n\nexport interface UseAddFundsOptions {\n client: Zkp2pClient | null;\n onSuccess?: (hash: Hash) => void;\n onError?: (error: Error) => void;\n}\n\nexport function useAddFunds({ client, onSuccess, onError }: UseAddFundsOptions) {\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [txHash, setTxHash] = useState<Hash | null>(null);\n\n const addFunds = useCallback(\n async (params: Parameters<Zkp2pClient['addFunds']>[0]) => {\n if (!client) {\n const err = new Error('Zkp2pClient is not initialized');\n setError(err);\n onError?.(err);\n return null;\n }\n setIsLoading(true);\n setError(null);\n setTxHash(null);\n try {\n const hash = await client.addFunds(params);\n setTxHash(hash);\n onSuccess?.(hash);\n return hash;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(e);\n onError?.(e);\n return null;\n } finally {\n setIsLoading(false);\n }\n },\n [client, onSuccess, onError]\n );\n\n return useMemo(() => ({ addFunds, isLoading, error, txHash }), [addFunds, isLoading, error, txHash]);\n}\n\n","import { useState, useCallback, useMemo } from 'react';\nimport type { Zkp2pClient } from '../../client/Zkp2pClient';\nimport type { Hash } from 'viem';\n\nexport interface UseRemoveFundsOptions {\n client: Zkp2pClient | null;\n onSuccess?: (hash: Hash) => void;\n onError?: (error: Error) => void;\n}\n\nexport function useRemoveFunds({ client, onSuccess, onError }: UseRemoveFundsOptions) {\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [txHash, setTxHash] = useState<Hash | null>(null);\n\n const removeFunds = useCallback(\n async (params: Parameters<Zkp2pClient['removeFunds']>[0]) => {\n if (!client) {\n const err = new Error('Zkp2pClient is not initialized');\n setError(err);\n onError?.(err);\n return null;\n }\n setIsLoading(true);\n setError(null);\n setTxHash(null);\n try {\n const hash = await client.removeFunds(params);\n setTxHash(hash);\n onSuccess?.(hash);\n return hash;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(e);\n onError?.(e);\n return null;\n } finally {\n setIsLoading(false);\n }\n },\n [client, onSuccess, onError]\n );\n\n return useMemo(() => ({ removeFunds, isLoading, error, txHash }), [removeFunds, isLoading, error, txHash]);\n}\n\n","import { useState, useCallback, useMemo } from 'react';\nimport type { Zkp2pClient } from '../../client/Zkp2pClient';\nimport type { Hash } from 'viem';\n\nexport interface UseWithdrawDepositOptions {\n client: Zkp2pClient | null;\n onSuccess?: (hash: Hash) => void;\n onError?: (error: Error) => void;\n}\n\nexport function useWithdrawDeposit({ client, onSuccess, onError }: UseWithdrawDepositOptions) {\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [txHash, setTxHash] = useState<Hash | null>(null);\n\n const withdrawDeposit = useCallback(\n async (params: Parameters<Zkp2pClient['withdrawDeposit']>[0]) => {\n if (!client) {\n const err = new Error('Zkp2pClient is not initialized');\n setError(err);\n onError?.(err);\n return null;\n }\n setIsLoading(true);\n setError(null);\n setTxHash(null);\n try {\n const hash = await client.withdrawDeposit(params);\n setTxHash(hash);\n onSuccess?.(hash);\n return hash;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(e);\n onError?.(e);\n return null;\n } finally {\n setIsLoading(false);\n }\n },\n [client, onSuccess, onError]\n );\n\n return useMemo(() => ({ withdrawDeposit, isLoading, error, txHash }), [withdrawDeposit, isLoading, error, txHash]);\n}\n\n","import { useState, useCallback, useMemo } from 'react';\nimport type { Zkp2pClient } from '../../client/Zkp2pClient';\nimport type { Hash } from 'viem';\n\nexport interface UseSetRetainOnEmptyOptions {\n client: Zkp2pClient | null;\n onSuccess?: (hash: Hash) => void;\n onError?: (error: Error) => void;\n}\n\nexport function useSetRetainOnEmpty({ client, onSuccess, onError }: UseSetRetainOnEmptyOptions) {\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [txHash, setTxHash] = useState<Hash | null>(null);\n\n const setRetainOnEmpty = useCallback(\n async (params: Parameters<Zkp2pClient['setRetainOnEmpty']>[0]) => {\n if (!client) {\n const err = new Error('Zkp2pClient is not initialized');\n setError(err);\n onError?.(err);\n return null;\n }\n setIsLoading(true);\n setError(null);\n setTxHash(null);\n try {\n const hash = await client.setRetainOnEmpty(params);\n setTxHash(hash);\n onSuccess?.(hash);\n return hash;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(e);\n onError?.(e);\n return null;\n } finally {\n setIsLoading(false);\n }\n },\n [client, onSuccess, onError]\n );\n\n return useMemo(() => ({ setRetainOnEmpty, isLoading, error, txHash }), [setRetainOnEmpty, isLoading, error, txHash]);\n}\n\n","import { useState, useCallback, useMemo } from 'react';\nimport type { Zkp2pClient } from '../../client/Zkp2pClient';\nimport type { Hash } from 'viem';\n\nexport interface UseSetDelegateOptions {\n client: Zkp2pClient | null;\n onSuccess?: (hash: Hash) => void;\n onError?: (error: Error) => void;\n}\n\nexport function useSetDelegate({ client, onSuccess, onError }: UseSetDelegateOptions) {\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [txHash, setTxHash] = useState<Hash | null>(null);\n\n const setDelegate = useCallback(\n async (params: Parameters<Zkp2pClient['setDelegate']>[0]) => {\n if (!client) {\n const err = new Error('Zkp2pClient is not initialized');\n setError(err);\n onError?.(err);\n return null;\n }\n setIsLoading(true);\n setError(null);\n setTxHash(null);\n try {\n const hash = await client.setDelegate(params);\n setTxHash(hash);\n onSuccess?.(hash);\n return hash;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(e);\n onError?.(e);\n return null;\n } finally {\n setIsLoading(false);\n }\n },\n [client, onSuccess, onError]\n );\n\n return useMemo(() => ({ setDelegate, isLoading, error, txHash }), [setDelegate, isLoading, error, txHash]);\n}\n\n","import { useState, useCallback, useMemo } from 'react';\nimport type { Zkp2pClient } from '../../client/Zkp2pClient';\nimport type { Hash } from 'viem';\n\nexport interface UseRemoveDelegateOptions {\n client: Zkp2pClient | null;\n onSuccess?: (hash: Hash) => void;\n onError?: (error: Error) => void;\n}\n\nexport function useRemoveDelegate({ client, onSuccess, onError }: UseRemoveDelegateOptions) {\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [txHash, setTxHash] = useState<Hash | null>(null);\n\n const removeDelegate = useCallback(\n async (params: Parameters<Zkp2pClient['removeDelegate']>[0]) => {\n if (!client) {\n const err = new Error('Zkp2pClient is not initialized');\n setError(err);\n onError?.(err);\n return null;\n }\n setIsLoading(true);\n setError(null);\n setTxHash(null);\n try {\n const hash = await client.removeDelegate(params);\n setTxHash(hash);\n onSuccess?.(hash);\n return hash;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(e);\n onError?.(e);\n return null;\n } finally {\n setIsLoading(false);\n }\n },\n [client, onSuccess, onError]\n );\n\n return useMemo(() => ({ removeDelegate, isLoading, error, txHash }), [removeDelegate, isLoading, error, txHash]);\n}\n\n","import type { Address, Hex } from 'viem';\nimport type { PreparedTransaction } from '../../types/prepared';\n\n// ---------------------------------------------------------------------------\n// Constants\n// ---------------------------------------------------------------------------\n\nexport const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000' as const;\nexport const ZERO_RATE_MANAGER_ID =\n '0x0000000000000000000000000000000000000000000000000000000000000000' as const;\n\n// ---------------------------------------------------------------------------\n// Normalizers\n// ---------------------------------------------------------------------------\n\nexport const normalizeRateManagerId = (value?: string | null): string =>\n (value ?? ZERO_RATE_MANAGER_ID).toLowerCase();\n\nexport const normalizeRegistry = (value?: string | null): string =>\n (value ?? ZERO_ADDRESS).toLowerCase();\n\nexport const isZeroRateManagerId = (value?: string | null): boolean => {\n if (!value) return true;\n const normalized = value.toLowerCase();\n return normalized === ZERO_ADDRESS || normalized === ZERO_RATE_MANAGER_ID;\n};\n\n// ---------------------------------------------------------------------------\n// Error helper\n// ---------------------------------------------------------------------------\n\nexport const asErrorMessage = (error: unknown): string => {\n if (!error) return 'Unknown error';\n if (error instanceof Error) return error.message;\n if (typeof error === 'string') return error;\n\n const anyErr = error as Record<string, unknown>;\n if (typeof anyErr.shortMessage === 'string') return anyErr.shortMessage;\n if (typeof anyErr.details === 'string') return anyErr.details;\n if (typeof anyErr.message === 'string') return anyErr.message;\n\n try {\n return JSON.stringify(error);\n } catch {\n return String(error);\n }\n};\n\n// ---------------------------------------------------------------------------\n// Delegation state classification\n// ---------------------------------------------------------------------------\n\nexport type DelegationState = 'delegated_here' | 'delegated_elsewhere' | 'not_delegated';\n\n/**\n * Classify whether a deposit is delegated to the target vault, delegated\n * elsewhere, or not delegated at all.\n *\n * @param currentRateManagerId The deposit's current rateManagerId (from indexer)\n * @param currentRegistry The deposit's current rateManagerAddress / registry (from indexer)\n * @param targetRateManagerId The vault's rateManagerId we're comparing against\n * @param targetRegistry The vault's registry address we're comparing against\n */\nexport const classifyDelegationState = (\n currentRateManagerId: string | null | undefined,\n currentRegistry: string | null | undefined,\n targetRateManagerId: string,\n targetRegistry: string | null | undefined,\n): DelegationState => {\n if (isZeroRateManagerId(currentRateManagerId)) {\n return 'not_delegated';\n }\n\n const normalizedCurrent = normalizeRateManagerId(currentRateManagerId);\n const normalizedTarget = targetRateManagerId.toLowerCase();\n const normalizedCurrentRegistry = normalizeRegistry(currentRegistry);\n const normalizedTargetRegistry = targetRegistry ? targetRegistry.toLowerCase() : '';\n\n const idsMatch = normalizedCurrent === normalizedTarget;\n const registryMatches = normalizedTargetRegistry\n ? normalizedCurrentRegistry === normalizedTargetRegistry\n : true;\n\n if (idsMatch && registryMatches) {\n return 'delegated_here';\n }\n\n return 'delegated_elsewhere';\n};\n\nexport const assertAtomicDelegationSwitchSupport = (\n requiresSwitch: boolean,\n canBatch: boolean,\n): void => {\n if (!requiresSwitch || canBatch) return;\n throw new Error(\n 'Switching delegation targets requires smart-account batching. Clear the existing delegation first.',\n );\n};\n\n// ---------------------------------------------------------------------------\n// Contract routing\n// ---------------------------------------------------------------------------\n\nexport type DelegationRoute = 'v2';\n\nexport const getDelegationRoute = (_client: unknown, _escrow: Address): DelegationRoute => 'v2';\n\ntype DelegationMethodSupportClient = Partial<\n Record<'setRateManager' | 'clearRateManager', { prepare?: unknown }>\n>;\n\nexport const assertDelegationMethodSupport = (\n client: DelegationMethodSupportClient,\n _route: DelegationRoute,\n action: 'set' | 'clear',\n): void => {\n const method = action === 'set' ? 'setRateManager' : 'clearRateManager';\n if (client?.[method]?.prepare) return;\n throw new Error(`Delegation requires SDK ${method} support`);\n};\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport interface DelegationDepositTarget {\n compositeDepositId: string;\n escrow: Address;\n depositId: bigint;\n currentRateManagerId?: string | null;\n currentRateManagerRegistry?: string | null;\n}\n\nexport interface BatchResult {\n hashes: string[];\n failed: Array<{ compositeDepositId: string; error: string }>;\n}\n\n/**\n * Callback the consumer provides for sending a single prepared transaction.\n * Returns the transaction hash.\n */\nexport type SendTransactionFn = (tx: { to: Address; data: Hex; value?: bigint }) => Promise<string>;\n\n/**\n * Optional callback for batching multiple calls in a single user operation\n * (e.g. via a smart account). If not provided, transactions are sent\n * sequentially via sendTransaction.\n */\nexport type SendBatchFn = (\n txs: Array<{ to: Address; data: Hex; value?: bigint }>,\n) => Promise<string>;\n\n// ---------------------------------------------------------------------------\n// Prepare helpers (used internally by hooks)\n// ---------------------------------------------------------------------------\n\nexport const prepareClearDelegationTx = async (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n client: any,\n params: { escrow: Address; depositId: bigint },\n referrer?: string | string[],\n): Promise<PreparedTransaction> => {\n const route = getDelegationRoute(client, params.escrow);\n assertDelegationMethodSupport(client, route, 'clear');\n return client.clearRateManager.prepare({\n escrowAddress: params.escrow,\n depositId: params.depositId,\n ...(referrer ? { txOverrides: { referrer } } : {}),\n });\n};\n\nexport const prepareSetDelegationTx = async (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n client: any,\n params: {\n escrow: Address;\n depositId: bigint;\n registry: Address;\n rateManagerId: Hex;\n },\n referrer?: string | string[],\n): Promise<PreparedTransaction> => {\n const route = getDelegationRoute(client, params.escrow);\n assertDelegationMethodSupport(client, route, 'set');\n return client.setRateManager.prepare({\n escrowAddress: params.escrow,\n depositId: params.depositId,\n rateManagerAddress: params.registry,\n rateManagerId: params.rateManagerId,\n ...(referrer ? { txOverrides: { referrer } } : {}),\n });\n};\n","import { useState, useCallback, useMemo } from 'react';\nimport type { Address, Hash } from 'viem';\nimport type { Zkp2pClient } from '../../client/Zkp2pClient';\nimport type { PreparedTransaction } from '../../types/prepared';\nimport { asErrorMessage, ZERO_ADDRESS } from './vaultUtils';\nimport type { SendTransactionFn } from './vaultUtils';\n\n// ---------------------------------------------------------------------------\n// Options\n// ---------------------------------------------------------------------------\n\nexport interface UseCreateVaultOptions {\n client: Zkp2pClient | null;\n sendTransaction: SendTransactionFn;\n referrer?: string | string[];\n onSuccess?: (hash: Hash) => void;\n onError?: (error: Error) => void;\n}\n\n// ---------------------------------------------------------------------------\n// Params\n// ---------------------------------------------------------------------------\n\nexport interface CreateVaultParams {\n config: {\n manager: Address;\n feeRecipient: Address;\n maxFee: bigint;\n fee: bigint;\n depositHook?: Address;\n /** Minimum deposit liquidity required for delegation (USDC, 6 decimals). Default: 0 (no minimum). */\n minLiquidity?: bigint;\n name: string;\n uri: string;\n };\n}\n\n// ---------------------------------------------------------------------------\n// Hook\n// ---------------------------------------------------------------------------\n\nexport function useCreateVault({\n client,\n sendTransaction,\n referrer,\n onSuccess,\n onError,\n}: UseCreateVaultOptions) {\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const [txHash, setTxHash] = useState<Hash | null>(null);\n\n const createVault = useCallback(\n async (params: CreateVaultParams) => {\n if (!client) {\n const err = new Error('Zkp2pClient is not initialized');\n setError(asErrorMessage(err));\n onError?.(err);\n return null;\n }\n\n setIsLoading(true);\n setError(null);\n setTxHash(null);\n\n try {\n const prepared = await client.createRateManager.prepare({\n config: {\n ...params.config,\n depositHook: (params.config.depositHook ?? ZERO_ADDRESS) as Address,\n },\n ...(referrer ? { txOverrides: { referrer } } : {}),\n });\n\n const hash = await sendTransaction({\n to: prepared.to,\n data: prepared.data,\n value: prepared.value,\n });\n\n setTxHash(hash as Hash);\n setError(null);\n onSuccess?.(hash as Hash);\n return hash as Hash;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(asErrorMessage(e));\n onError?.(e);\n return null;\n } finally {\n setIsLoading(false);\n }\n },\n [client, sendTransaction, referrer, onSuccess, onError],\n );\n\n const prepareCreateVault = useCallback(\n async (params: CreateVaultParams): Promise<PreparedTransaction | null> => {\n if (!client) {\n const err = new Error('Zkp2pClient is not initialized');\n setError(asErrorMessage(err));\n onError?.(err);\n return null;\n }\n\n setIsLoading(true);\n setError(null);\n\n try {\n const prepared = await client.createRateManager.prepare({\n config: {\n ...params.config,\n depositHook: (params.config.depositHook ?? ZERO_ADDRESS) as Address,\n },\n ...(referrer ? { txOverrides: { referrer } } : {}),\n });\n return prepared;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(asErrorMessage(e));\n onError?.(e);\n return null;\n } finally {\n setIsLoading(false);\n }\n },\n [client, referrer, onError],\n );\n\n return useMemo(\n () => ({ createVault, prepareCreateVault, isLoading, error, txHash }),\n [createVault, prepareCreateVault, isLoading, error, txHash],\n );\n}\n","import { useState, useCallback, useMemo } from 'react';\nimport type { Address, Hex } from 'viem';\nimport type { Zkp2pClient } from '../../client/Zkp2pClient';\nimport {\n asErrorMessage,\n assertAtomicDelegationSwitchSupport,\n getDelegationRoute,\n assertDelegationMethodSupport,\n normalizeRateManagerId,\n normalizeRegistry,\n isZeroRateManagerId,\n prepareClearDelegationTx,\n prepareSetDelegationTx,\n} from './vaultUtils';\nimport type {\n SendTransactionFn,\n SendBatchFn,\n DelegationDepositTarget,\n BatchResult,\n} from './vaultUtils';\n\n// ---------------------------------------------------------------------------\n// Options\n// ---------------------------------------------------------------------------\n\nexport interface UseVaultDelegationOptions {\n client: Zkp2pClient | null;\n sendTransaction: SendTransactionFn;\n /** When provided, enables batching (e.g. smart account user-operations). */\n sendBatch?: SendBatchFn;\n referrer?: string | string[];\n onSuccess?: (hash: string) => void;\n onError?: (error: Error) => void;\n}\n\n// ---------------------------------------------------------------------------\n// Preflight simulation types\n// ---------------------------------------------------------------------------\n\ninterface PreflightParams {\n escrow: Address;\n depositId: bigint;\n registry: Address;\n rateManagerId: Hex;\n enabled: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Hook\n// ---------------------------------------------------------------------------\n\nexport function useVaultDelegation({\n client,\n sendTransaction,\n sendBatch,\n referrer,\n onSuccess,\n onError,\n}: UseVaultDelegationOptions) {\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n const clearLastError = useCallback(() => setError(null), []);\n\n // -----------------------------------------------------------------------\n // Preflight simulation\n // -----------------------------------------------------------------------\n\n const runHookPreflight = useCallback(\n async ({ escrow, depositId, registry, rateManagerId, enabled }: PreflightParams) => {\n if (!enabled || !client) return;\n\n try {\n const route = getDelegationRoute(client, escrow);\n assertDelegationMethodSupport(client, route, 'set');\n\n if (route === 'v2') {\n const abi = (client as any).escrowV2Abi || (client as any).escrowAbi;\n await client.publicClient.simulateContract({\n address: escrow,\n abi,\n functionName: 'setRateManager',\n args: [depositId, registry, rateManagerId],\n account: client.walletClient.account?.address,\n });\n } else if (client.rateManagerControllerAddress && client.rateManagerControllerAbi) {\n await client.publicClient.simulateContract({\n address: client.rateManagerControllerAddress,\n abi: client.rateManagerControllerAbi,\n functionName: 'setDepositRateManager',\n args: [escrow, depositId, registry, rateManagerId],\n account: client.walletClient.account?.address,\n });\n }\n } catch (simulateError) {\n const reason = asErrorMessage(simulateError);\n throw new Error(reason || 'Delegation failed — vault hook rejected this deposit');\n }\n },\n [client],\n );\n\n // -----------------------------------------------------------------------\n // Internal: send a single prepared tx\n // -----------------------------------------------------------------------\n\n const sendPrepared = useCallback(\n async (prepared: { to: Address; data: Hex; value: bigint }) => {\n const hash = await sendTransaction({\n to: prepared.to,\n data: prepared.data,\n value: prepared.value,\n });\n if (!hash) throw new Error('Transaction was not submitted');\n return hash;\n },\n [sendTransaction],\n );\n\n // -----------------------------------------------------------------------\n // Internal: clear without lifecycle callbacks (used by sequential switch)\n // -----------------------------------------------------------------------\n\n const sendClear = useCallback(\n async (params: { escrow: Address; depositId: bigint }) => {\n if (!client) throw new Error('Zkp2pClient is not initialized');\n const prepared = await prepareClearDelegationTx(client, params, referrer);\n return sendPrepared(prepared);\n },\n [client, referrer, sendPrepared],\n );\n\n // -----------------------------------------------------------------------\n // clearDelegation (single deposit)\n // -----------------------------------------------------------------------\n\n const clearDelegation = useCallback(\n async (params: { escrow: Address; depositId: bigint }) => {\n clearLastError();\n if (!client) throw new Error('Zkp2pClient is not initialized');\n\n setIsLoading(true);\n try {\n const prepared = await prepareClearDelegationTx(client, params, referrer);\n const hash = await sendPrepared(prepared);\n setError(null);\n onSuccess?.(hash);\n return hash;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(asErrorMessage(e));\n onError?.(e);\n throw e;\n } finally {\n setIsLoading(false);\n }\n },\n [clearLastError, client, referrer, sendPrepared, onSuccess, onError],\n );\n\n // -----------------------------------------------------------------------\n // delegateDeposit (single deposit)\n // -----------------------------------------------------------------------\n\n const delegateDeposit = useCallback(\n async (params: {\n escrow: Address;\n depositId: bigint;\n registry: Address;\n rateManagerId: Hex;\n currentRateManagerId?: string | null;\n currentRateManagerRegistry?: string | null;\n preflightHook?: boolean;\n }) => {\n clearLastError();\n if (!client) throw new Error('Zkp2pClient is not initialized');\n\n setIsLoading(true);\n try {\n await runHookPreflight({\n escrow: params.escrow,\n depositId: params.depositId,\n registry: params.registry,\n rateManagerId: params.rateManagerId,\n enabled: Boolean(params.preflightHook),\n });\n\n const normalizedCurrent = normalizeRateManagerId(params.currentRateManagerId);\n const normalizedNext = normalizeRateManagerId(params.rateManagerId);\n const normalizedCurrentRegistry = normalizeRegistry(params.currentRateManagerRegistry);\n const normalizedNextRegistry = normalizeRegistry(params.registry);\n const isSameTarget =\n normalizedCurrent === normalizedNext &&\n normalizedCurrentRegistry === normalizedNextRegistry;\n\n // Already delegated to this exact target -- skip to avoid on-chain revert\n if (!isZeroRateManagerId(normalizedCurrent) && isSameTarget) {\n setError(null);\n return '';\n }\n\n const requiresSwitch = !isZeroRateManagerId(normalizedCurrent) && !isSameTarget;\n assertAtomicDelegationSwitchSupport(requiresSwitch, Boolean(sendBatch));\n\n // Smart account batched switch: clear + set in one user-op\n if (requiresSwitch && sendBatch) {\n const clearTx = await prepareClearDelegationTx(\n client,\n { escrow: params.escrow, depositId: params.depositId },\n referrer,\n );\n const setTx = await prepareSetDelegationTx(\n client,\n {\n escrow: params.escrow,\n depositId: params.depositId,\n registry: params.registry,\n rateManagerId: params.rateManagerId,\n },\n referrer,\n );\n\n const batchHash = await sendBatch([\n { to: clearTx.to, data: clearTx.data, value: clearTx.value },\n { to: setTx.to, data: setTx.data, value: setTx.value },\n ]);\n\n if (!batchHash) throw new Error('Failed to submit batched delegation switch');\n\n setError(null);\n onSuccess?.(batchHash);\n return batchHash;\n }\n\n // Sequential fallback for non-switch paths only.\n\n const prepared = await prepareSetDelegationTx(\n client,\n {\n escrow: params.escrow,\n depositId: params.depositId,\n registry: params.registry,\n rateManagerId: params.rateManagerId,\n },\n referrer,\n );\n\n const hash = await sendPrepared(prepared);\n setError(null);\n onSuccess?.(hash);\n return hash;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(asErrorMessage(e));\n onError?.(e);\n throw e;\n } finally {\n setIsLoading(false);\n }\n },\n [\n clearLastError,\n client,\n referrer,\n runHookPreflight,\n sendBatch,\n sendClear,\n sendPrepared,\n onSuccess,\n onError,\n ],\n );\n\n // -----------------------------------------------------------------------\n // clearDelegations (multi-deposit)\n // -----------------------------------------------------------------------\n\n const clearDelegations = useCallback(\n async (params: { deposits: DelegationDepositTarget[] }): Promise<BatchResult> => {\n clearLastError();\n if (!client) throw new Error('Zkp2pClient is not initialized');\n\n const failed: BatchResult['failed'] = [];\n const hashes: string[] = [];\n\n if (!params.deposits.length) return { hashes, failed };\n\n setIsLoading(true);\n try {\n if (sendBatch) {\n const calls: Array<{ to: Address; data: Hex; value?: bigint }> = [];\n\n for (const deposit of params.deposits) {\n try {\n const clearTx = await prepareClearDelegationTx(\n client,\n { escrow: deposit.escrow, depositId: deposit.depositId },\n referrer,\n );\n calls.push({ to: clearTx.to, data: clearTx.data, value: clearTx.value });\n } catch (error) {\n failed.push({\n compositeDepositId: deposit.compositeDepositId,\n error: asErrorMessage(error),\n });\n }\n }\n\n if (calls.length) {\n const hash = await sendBatch(calls);\n if (hash) {\n hashes.push(hash);\n } else {\n failed.push({\n compositeDepositId: 'batch',\n error: 'Failed to submit smart account batch',\n });\n }\n }\n\n if (failed.length === 0) setError(null);\n return { hashes, failed };\n }\n\n // Sequential fallback\n for (const deposit of params.deposits) {\n try {\n const hash = await clearDelegation({\n escrow: deposit.escrow,\n depositId: deposit.depositId,\n });\n hashes.push(hash);\n } catch (error) {\n failed.push({\n compositeDepositId: deposit.compositeDepositId,\n error: asErrorMessage(error),\n });\n }\n }\n\n if (failed.length === 0) setError(null);\n return { hashes, failed };\n } finally {\n setIsLoading(false);\n }\n },\n [clearDelegation, clearLastError, client, referrer, sendBatch],\n );\n\n // -----------------------------------------------------------------------\n // delegateDeposits (multi-deposit)\n // -----------------------------------------------------------------------\n\n const delegateDeposits = useCallback(\n async (params: {\n registry: Address;\n rateManagerId: Hex;\n deposits: DelegationDepositTarget[];\n preflightHook?: boolean;\n }): Promise<BatchResult> => {\n clearLastError();\n if (!client) throw new Error('Zkp2pClient is not initialized');\n\n const failed: BatchResult['failed'] = [];\n const hashes: string[] = [];\n\n if (!params.deposits.length) return { hashes, failed };\n\n setIsLoading(true);\n try {\n if (sendBatch) {\n const calls: Array<{ to: Address; data: Hex; value?: bigint }> = [];\n\n for (const deposit of params.deposits) {\n try {\n await runHookPreflight({\n escrow: deposit.escrow,\n depositId: deposit.depositId,\n registry: params.registry,\n rateManagerId: params.rateManagerId,\n enabled: Boolean(params.preflightHook),\n });\n\n const normalizedCurrent = normalizeRateManagerId(deposit.currentRateManagerId);\n const normalizedNext = normalizeRateManagerId(params.rateManagerId);\n const normalizedCurrentRegistry = normalizeRegistry(\n deposit.currentRateManagerRegistry,\n );\n const normalizedNextRegistry = normalizeRegistry(params.registry);\n const isSameTarget =\n normalizedCurrent === normalizedNext &&\n normalizedCurrentRegistry === normalizedNextRegistry;\n\n // Already delegated to this exact target -- skip to avoid on-chain revert\n if (!isZeroRateManagerId(normalizedCurrent) && isSameTarget) {\n continue;\n }\n\n const requiresSwitch = !isZeroRateManagerId(normalizedCurrent) && !isSameTarget;\n\n if (requiresSwitch) {\n const clearTx = await prepareClearDelegationTx(\n client,\n { escrow: deposit.escrow, depositId: deposit.depositId },\n referrer,\n );\n calls.push({ to: clearTx.to, data: clearTx.data, value: clearTx.value });\n }\n\n const setTx = await prepareSetDelegationTx(\n client,\n {\n escrow: deposit.escrow,\n depositId: deposit.depositId,\n registry: params.registry,\n rateManagerId: params.rateManagerId,\n },\n referrer,\n );\n calls.push({ to: setTx.to, data: setTx.data, value: setTx.value });\n } catch (error) {\n failed.push({\n compositeDepositId: deposit.compositeDepositId,\n error: asErrorMessage(error),\n });\n }\n }\n\n if (calls.length) {\n const hash = await sendBatch(calls);\n if (hash) {\n hashes.push(hash);\n } else {\n failed.push({\n compositeDepositId: 'batch',\n error: 'Failed to submit smart account batch',\n });\n }\n }\n\n if (failed.length === 0) setError(null);\n return { hashes, failed };\n }\n\n // Sequential fallback\n for (const deposit of params.deposits) {\n try {\n const hash = await delegateDeposit({\n escrow: deposit.escrow,\n depositId: deposit.depositId,\n registry: params.registry,\n rateManagerId: params.rateManagerId,\n currentRateManagerId: deposit.currentRateManagerId,\n currentRateManagerRegistry: deposit.currentRateManagerRegistry,\n preflightHook: Boolean(params.preflightHook),\n });\n if (hash) hashes.push(hash);\n } catch (error) {\n failed.push({\n compositeDepositId: deposit.compositeDepositId,\n error: asErrorMessage(error),\n });\n }\n }\n\n if (failed.length === 0) setError(null);\n return { hashes, failed };\n } finally {\n setIsLoading(false);\n }\n },\n [clearLastError, client, delegateDeposit, referrer, runHookPreflight, sendBatch],\n );\n\n return useMemo(\n () => ({\n delegateDeposit,\n delegateDeposits,\n clearDelegation,\n clearDelegations,\n isLoading,\n error,\n }),\n [delegateDeposit, delegateDeposits, clearDelegation, clearDelegations, isLoading, error],\n );\n}\n","import { useState, useCallback, useMemo } from 'react';\nimport type { Hash } from 'viem';\nimport type { Zkp2pClient } from '../../client/Zkp2pClient';\nimport type { PreparedTransaction } from '../../types/prepared';\n\nexport interface UseSetVaultFeeOptions {\n client: Zkp2pClient | null;\n onSuccess?: (hash: Hash) => void;\n onError?: (error: Error) => void;\n}\n\nexport function useSetVaultFee({ client, onSuccess, onError }: UseSetVaultFeeOptions) {\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [txHash, setTxHash] = useState<Hash | null>(null);\n const [prepared, setPrepared] = useState<PreparedTransaction | null>(null);\n\n const setVaultFee = useCallback(\n async (params: Parameters<Zkp2pClient['setVaultFee']>[0]) => {\n if (!client) {\n const err = new Error('Zkp2pClient is not initialized');\n setError(err);\n onError?.(err);\n return null;\n }\n setIsLoading(true);\n setError(null);\n setTxHash(null);\n try {\n const hash = await client.setVaultFee(params);\n setTxHash(hash);\n onSuccess?.(hash);\n return hash;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(e);\n onError?.(e);\n return null;\n } finally {\n setIsLoading(false);\n }\n },\n [client, onError, onSuccess],\n );\n\n const prepareSetVaultFee = useCallback(\n async (params: Parameters<Zkp2pClient['setVaultFee']>[0]) => {\n if (!client) {\n const err = new Error('Zkp2pClient is not initialized');\n setError(err);\n onError?.(err);\n return null;\n }\n setIsLoading(true);\n setError(null);\n setPrepared(null);\n try {\n const tx = await client.setVaultFee.prepare(params);\n setPrepared(tx);\n return tx;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(e);\n onError?.(e);\n return null;\n } finally {\n setIsLoading(false);\n }\n },\n [client, onError],\n );\n\n return useMemo(\n () => ({\n setVaultFee,\n prepareSetVaultFee,\n isLoading,\n error,\n txHash,\n prepared,\n }),\n [setVaultFee, prepareSetVaultFee, isLoading, error, txHash, prepared],\n );\n}\n","import { useState, useCallback, useMemo } from 'react';\nimport type { Hash } from 'viem';\nimport type { Zkp2pClient } from '../../client/Zkp2pClient';\nimport type { PreparedTransaction } from '../../types/prepared';\n\nexport interface UseSetVaultMinRateOptions {\n client: Zkp2pClient | null;\n onSuccess?: (hash: Hash) => void;\n onError?: (error: Error) => void;\n}\n\nexport function useSetVaultMinRate({ client, onSuccess, onError }: UseSetVaultMinRateOptions) {\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [txHash, setTxHash] = useState<Hash | null>(null);\n const [prepared, setPrepared] = useState<PreparedTransaction | null>(null);\n\n const setVaultMinRate = useCallback(\n async (params: Parameters<Zkp2pClient['setVaultMinRate']>[0]) => {\n if (!client) {\n const err = new Error('Zkp2pClient is not initialized');\n setError(err);\n onError?.(err);\n return null;\n }\n setIsLoading(true);\n setError(null);\n setTxHash(null);\n try {\n const hash = await client.setVaultMinRate(params);\n setTxHash(hash);\n onSuccess?.(hash);\n return hash;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(e);\n onError?.(e);\n return null;\n } finally {\n setIsLoading(false);\n }\n },\n [client, onError, onSuccess],\n );\n\n const prepareSetVaultMinRate = useCallback(\n async (params: Parameters<Zkp2pClient['setVaultMinRate']>[0]) => {\n if (!client) {\n const err = new Error('Zkp2pClient is not initialized');\n setError(err);\n onError?.(err);\n return null;\n }\n setIsLoading(true);\n setError(null);\n setPrepared(null);\n try {\n const tx = await client.setVaultMinRate.prepare(params);\n setPrepared(tx);\n return tx;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(e);\n onError?.(e);\n return null;\n } finally {\n setIsLoading(false);\n }\n },\n [client, onError],\n );\n\n return useMemo(\n () => ({\n setVaultMinRate,\n prepareSetVaultMinRate,\n isLoading,\n error,\n txHash,\n prepared,\n }),\n [setVaultMinRate, prepareSetVaultMinRate, isLoading, error, txHash, prepared],\n );\n}\n","import { useState, useCallback, useMemo } from 'react';\nimport type { Hash } from 'viem';\nimport type { Zkp2pClient } from '../../client/Zkp2pClient';\nimport type { PreparedTransaction } from '../../types/prepared';\n\nexport interface UseSetVaultConfigOptions {\n client: Zkp2pClient | null;\n onSuccess?: (hash: Hash) => void;\n onError?: (error: Error) => void;\n}\n\nexport function useSetVaultConfig({ client, onSuccess, onError }: UseSetVaultConfigOptions) {\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [txHash, setTxHash] = useState<Hash | null>(null);\n const [prepared, setPrepared] = useState<PreparedTransaction | null>(null);\n\n const setVaultConfig = useCallback(\n async (params: Parameters<Zkp2pClient['setVaultConfig']>[0]) => {\n if (!client) {\n const err = new Error('Zkp2pClient is not initialized');\n setError(err);\n onError?.(err);\n return null;\n }\n setIsLoading(true);\n setError(null);\n setTxHash(null);\n try {\n const hash = await client.setVaultConfig(params);\n setTxHash(hash);\n onSuccess?.(hash);\n return hash;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(e);\n onError?.(e);\n return null;\n } finally {\n setIsLoading(false);\n }\n },\n [client, onError, onSuccess],\n );\n\n const prepareSetVaultConfig = useCallback(\n async (params: Parameters<Zkp2pClient['setVaultConfig']>[0]) => {\n if (!client) {\n const err = new Error('Zkp2pClient is not initialized');\n setError(err);\n onError?.(err);\n return null;\n }\n setIsLoading(true);\n setError(null);\n setPrepared(null);\n try {\n const tx = await client.setVaultConfig.prepare(params);\n setPrepared(tx);\n return tx;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(e);\n onError?.(e);\n return null;\n } finally {\n setIsLoading(false);\n }\n },\n [client, onError],\n );\n\n return useMemo(\n () => ({\n setVaultConfig,\n prepareSetVaultConfig,\n isLoading,\n error,\n txHash,\n prepared,\n }),\n [setVaultConfig, prepareSetVaultConfig, isLoading, error, txHash, prepared],\n );\n}\n","import { useState, useCallback, useMemo } from 'react';\nimport type { Zkp2pClient } from '../../client/Zkp2pClient';\nimport type { Hash } from 'viem';\n\nexport interface UseAddPaymentMethodsOptions {\n client: Zkp2pClient | null;\n onSuccess?: (hash: Hash) => void;\n onError?: (error: Error) => void;\n}\n\nexport function useAddPaymentMethods({ client, onSuccess, onError }: UseAddPaymentMethodsOptions) {\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [txHash, setTxHash] = useState<Hash | null>(null);\n\n const addPaymentMethods = useCallback(\n async (params: Parameters<Zkp2pClient['addPaymentMethods']>[0]) => {\n if (!client) {\n const err = new Error('Zkp2pClient is not initialized');\n setError(err);\n onError?.(err);\n return null;\n }\n setIsLoading(true);\n setError(null);\n setTxHash(null);\n try {\n const hash = await client.addPaymentMethods(params);\n setTxHash(hash);\n onSuccess?.(hash);\n return hash;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(e);\n onError?.(e);\n return null;\n } finally {\n setIsLoading(false);\n }\n },\n [client, onSuccess, onError]\n );\n\n return useMemo(() => ({ addPaymentMethods, isLoading, error, txHash }), [addPaymentMethods, isLoading, error, txHash]);\n}\n\n","import { useState, useCallback, useMemo } from 'react';\nimport type { Zkp2pClient } from '../../client/Zkp2pClient';\nimport type { Hash } from 'viem';\n\nexport interface UseSetPaymentMethodActiveOptions {\n client: Zkp2pClient | null;\n onSuccess?: (hash: Hash) => void;\n onError?: (error: Error) => void;\n}\n\nexport function useSetPaymentMethodActive({ client, onSuccess, onError }: UseSetPaymentMethodActiveOptions) {\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [txHash, setTxHash] = useState<Hash | null>(null);\n\n const setPaymentMethodActive = useCallback(\n async (params: Parameters<Zkp2pClient['setPaymentMethodActive']>[0]) => {\n if (!client) {\n const err = new Error('Zkp2pClient is not initialized');\n setError(err);\n onError?.(err);\n return null;\n }\n setIsLoading(true);\n setError(null);\n setTxHash(null);\n try {\n const hash = await client.setPaymentMethodActive(params);\n setTxHash(hash);\n onSuccess?.(hash);\n return hash;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(e);\n onError?.(e);\n return null;\n } finally {\n setIsLoading(false);\n }\n },\n [client, onSuccess, onError]\n );\n\n return useMemo(() => ({ setPaymentMethodActive, isLoading, error, txHash }), [setPaymentMethodActive, isLoading, error, txHash]);\n}\n\n","import { useState, useCallback, useMemo } from 'react';\nimport type { Zkp2pClient } from '../../client/Zkp2pClient';\nimport type { Hash } from 'viem';\n\nexport interface UseRemovePaymentMethodOptions {\n client: Zkp2pClient | null;\n onSuccess?: (hash: Hash) => void;\n onError?: (error: Error) => void;\n}\n\nexport function useRemovePaymentMethod({ client, onSuccess, onError }: UseRemovePaymentMethodOptions) {\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [txHash, setTxHash] = useState<Hash | null>(null);\n\n const removePaymentMethod = useCallback(\n async (params: Parameters<Zkp2pClient['removePaymentMethod']>[0]) => {\n if (!client) {\n const err = new Error('Zkp2pClient is not initialized');\n setError(err);\n onError?.(err);\n return null;\n }\n setIsLoading(true);\n setError(null);\n setTxHash(null);\n try {\n const hash = await client.removePaymentMethod(params);\n setTxHash(hash);\n onSuccess?.(hash);\n return hash;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(e);\n onError?.(e);\n return null;\n } finally {\n setIsLoading(false);\n }\n },\n [client, onSuccess, onError]\n );\n\n return useMemo(() => ({ removePaymentMethod, isLoading, error, txHash }), [removePaymentMethod, isLoading, error, txHash]);\n}\n\n","import { useState, useCallback, useMemo } from 'react';\nimport type { Zkp2pClient } from '../../client/Zkp2pClient';\nimport type { Hash } from 'viem';\n\nexport interface UseAddCurrenciesOptions {\n client: Zkp2pClient | null;\n onSuccess?: (hash: Hash) => void;\n onError?: (error: Error) => void;\n}\n\nexport function useAddCurrencies({ client, onSuccess, onError }: UseAddCurrenciesOptions) {\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [txHash, setTxHash] = useState<Hash | null>(null);\n\n const addCurrencies = useCallback(\n async (params: Parameters<Zkp2pClient['addCurrencies']>[0]) => {\n if (!client) {\n const err = new Error('Zkp2pClient is not initialized');\n setError(err);\n onError?.(err);\n return null;\n }\n setIsLoading(true);\n setError(null);\n setTxHash(null);\n try {\n const hash = await client.addCurrencies(params);\n setTxHash(hash);\n onSuccess?.(hash);\n return hash;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(e);\n onError?.(e);\n return null;\n } finally {\n setIsLoading(false);\n }\n },\n [client, onSuccess, onError]\n );\n\n return useMemo(() => ({ addCurrencies, isLoading, error, txHash }), [addCurrencies, isLoading, error, txHash]);\n}\n\n","import { useState, useCallback, useMemo } from 'react';\nimport type { Zkp2pClient } from '../../client/Zkp2pClient';\nimport type { Hash } from 'viem';\n\nexport interface UseDeactivateCurrencyOptions {\n client: Zkp2pClient | null;\n onSuccess?: (hash: Hash) => void;\n onError?: (error: Error) => void;\n}\n\nexport function useDeactivateCurrency({ client, onSuccess, onError }: UseDeactivateCurrencyOptions) {\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [txHash, setTxHash] = useState<Hash | null>(null);\n\n const deactivateCurrency = useCallback(\n async (params: Parameters<Zkp2pClient['deactivateCurrency']>[0]) => {\n if (!client) {\n const err = new Error('Zkp2pClient is not initialized');\n setError(err);\n onError?.(err);\n return null;\n }\n setIsLoading(true);\n setError(null);\n setTxHash(null);\n try {\n const hash = await client.deactivateCurrency(params);\n setTxHash(hash);\n onSuccess?.(hash);\n return hash;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(e);\n onError?.(e);\n return null;\n } finally {\n setIsLoading(false);\n }\n },\n [client, onSuccess, onError]\n );\n\n return useMemo(() => ({ deactivateCurrency, isLoading, error, txHash }), [deactivateCurrency, isLoading, error, txHash]);\n}\n\n","import { useState, useCallback, useMemo } from 'react';\nimport type { Zkp2pClient } from '../../client/Zkp2pClient';\nimport type { Hash } from 'viem';\n\nexport interface UseRemoveCurrencyOptions {\n client: Zkp2pClient | null;\n onSuccess?: (hash: Hash) => void;\n onError?: (error: Error) => void;\n}\n\nexport function useRemoveCurrency({ client, onSuccess, onError }: UseRemoveCurrencyOptions) {\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [txHash, setTxHash] = useState<Hash | null>(null);\n\n const removeCurrency = useCallback(\n async (params: Parameters<Zkp2pClient['removeCurrency']>[0]) => {\n if (!client) {\n const err = new Error('Zkp2pClient is not initialized');\n setError(err);\n onError?.(err);\n return null;\n }\n setIsLoading(true);\n setError(null);\n setTxHash(null);\n try {\n const hash = await client.removeCurrency(params);\n setTxHash(hash);\n onSuccess?.(hash);\n return hash;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(e);\n onError?.(e);\n return null;\n } finally {\n setIsLoading(false);\n }\n },\n [client, onSuccess, onError]\n );\n\n return useMemo(() => ({ removeCurrency, isLoading, error, txHash }), [removeCurrency, isLoading, error, txHash]);\n}\n\n","import { useState, useCallback, useMemo } from 'react';\nimport type { Zkp2pClient } from '../../client/Zkp2pClient';\nimport type { Hash } from 'viem';\n\nexport interface UsePruneExpiredIntentsOptions {\n client: Zkp2pClient | null;\n onSuccess?: (hash: Hash) => void;\n onError?: (error: Error) => void;\n}\n\nexport function usePruneExpiredIntents({ client, onSuccess, onError }: UsePruneExpiredIntentsOptions) {\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [txHash, setTxHash] = useState<Hash | null>(null);\n\n const pruneExpiredIntents = useCallback(\n async (params: Parameters<Zkp2pClient['pruneExpiredIntents']>[0]) => {\n if (!client) {\n const err = new Error('Zkp2pClient is not initialized');\n setError(err);\n onError?.(err);\n return null;\n }\n setIsLoading(true);\n setError(null);\n setTxHash(null);\n try {\n const hash = await client.pruneExpiredIntents(params);\n setTxHash(hash);\n onSuccess?.(hash);\n return hash;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(e);\n onError?.(e);\n return null;\n } finally {\n setIsLoading(false);\n }\n },\n [client, onSuccess, onError]\n );\n\n return useMemo(() => ({ pruneExpiredIntents, isLoading, error, txHash }), [pruneExpiredIntents, isLoading, error, txHash]);\n}\n\n"]}
1
+ {"version":3,"sources":["../src/react/hooks/useCreateDeposit.ts","../src/react/hooks/useSignalIntent.ts","../src/takerTiers.ts","../src/react/hooks/useGetTakerTier.ts","../src/react/hooks/useFulfillIntent.ts","../src/react/hooks/useReleaseFundsToPayer.ts","../src/react/hooks/useSetAcceptingIntents.ts","../src/react/hooks/useSetIntentRange.ts","../src/react/hooks/useSetCurrencyMinRate.ts","../src/react/hooks/useAddFunds.ts","../src/react/hooks/useRemoveFunds.ts","../src/react/hooks/useWithdrawDeposit.ts","../src/react/hooks/useSetRetainOnEmpty.ts","../src/react/hooks/useSetDelegate.ts","../src/react/hooks/useRemoveDelegate.ts","../src/react/hooks/vaultUtils.ts","../src/react/hooks/useCreateVault.ts","../src/react/hooks/useVaultDelegation.ts","../src/react/hooks/useSetVaultFee.ts","../src/react/hooks/useSetVaultMinRate.ts","../src/react/hooks/useSetVaultConfig.ts","../src/react/hooks/useAddPaymentMethods.ts","../src/react/hooks/useSetPaymentMethodActive.ts","../src/react/hooks/useRemovePaymentMethod.ts","../src/react/hooks/useAddCurrencies.ts","../src/react/hooks/useDeactivateCurrency.ts","../src/react/hooks/useRemoveCurrency.ts","../src/react/hooks/usePruneExpiredIntents.ts"],"names":["useState","useCallback","useMemo","useEffect","formatUnits","error"],"mappings":"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","file":"react.cjs","sourcesContent":["import { useState, useCallback, useMemo } from 'react';\nimport type { Zkp2pClient } from '../../client/Zkp2pClient';\nimport type { Hash } from 'viem';\nimport type { PostDepositDetailsRequest } from '../../types';\n\nexport interface UseCreateDepositOptions {\n client: Zkp2pClient | null;\n onSuccess?: (result: { hash: Hash; depositDetails: PostDepositDetailsRequest[] }) => void;\n onError?: (error: Error) => void;\n}\n\nexport function useCreateDeposit({ client, onSuccess, onError }: UseCreateDepositOptions) {\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [txHash, setTxHash] = useState<Hash | null>(null);\n const [depositDetails, setDepositDetails] = useState<PostDepositDetailsRequest[] | null>(null);\n\n const createDeposit = useCallback(\n async (params: Parameters<Zkp2pClient['createDeposit']>[0]) => {\n if (!client) {\n const err = new Error('Zkp2pClient is not initialized');\n setError(err);\n onError?.(err);\n return null;\n }\n\n setIsLoading(true);\n setError(null);\n setTxHash(null);\n setDepositDetails(null);\n\n try {\n const result = await client.createDeposit(params);\n setTxHash(result.hash as Hash);\n setDepositDetails(result.depositDetails);\n onSuccess?.(result);\n return result as any;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(e);\n onError?.(e);\n return null;\n } finally {\n setIsLoading(false);\n }\n },\n [client, onSuccess, onError],\n );\n\n return useMemo(\n () => ({ createDeposit, isLoading, error, txHash, depositDetails }),\n [createDeposit, isLoading, error, txHash, depositDetails],\n );\n}\n","import { useState, useCallback, useMemo } from 'react';\nimport type { Zkp2pClient, SignalIntentMethodParams } from '../../client/Zkp2pClient';\nimport type { PreparedTransaction } from '../../types/prepared';\nimport type { Hash } from 'viem';\n\nexport interface UseSignalIntentOptions {\n client: Zkp2pClient | null;\n onSuccess?: (hash: Hash) => void;\n onError?: (error: Error) => void;\n}\n\n/**\n * React hook for signaling intent to use a deposit.\n *\n * Provides both execute and prepare functionality:\n * - `signalIntent(params)` - Execute transaction directly\n * - `prepareSignalIntent(params)` - Get prepared transaction for relayer submission\n *\n * @example\n * ```tsx\n * function SignalButton({ client, params }) {\n * const { signalIntent, prepareSignalIntent, isLoading, error, txHash, prepared } = useSignalIntent({ client });\n *\n * // Execute directly\n * const handleExecute = () => signalIntent(params);\n *\n * // Or prepare for relayer\n * const handlePrepare = async () => {\n * const tx = await prepareSignalIntent(params);\n * if (tx) await submitToRelayer(tx);\n * };\n *\n * return <button onClick={handleExecute} disabled={isLoading}>Signal Intent</button>;\n * }\n * ```\n */\nexport function useSignalIntent({ client, onSuccess, onError }: UseSignalIntentOptions) {\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [txHash, setTxHash] = useState<Hash | null>(null);\n const [prepared, setPrepared] = useState<PreparedTransaction | null>(null);\n\n const signalIntent = useCallback(\n async (params: SignalIntentMethodParams) => {\n if (!client) {\n const err = new Error('Zkp2pClient is not initialized');\n setError(err);\n onError?.(err);\n return null;\n }\n setIsLoading(true);\n setError(null);\n setTxHash(null);\n try {\n const hash = await client.signalIntent(params);\n setTxHash(hash);\n onSuccess?.(hash);\n return hash;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(e);\n onError?.(e);\n return null;\n } finally {\n setIsLoading(false);\n }\n },\n [client, onSuccess, onError]\n );\n\n const prepareSignalIntent = useCallback(\n async (params: SignalIntentMethodParams) => {\n if (!client) {\n const err = new Error('Zkp2pClient is not initialized');\n setError(err);\n onError?.(err);\n return null;\n }\n setIsLoading(true);\n setError(null);\n setPrepared(null);\n try {\n const result = await client.signalIntent.prepare(params);\n setPrepared(result);\n return result;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(e);\n onError?.(e);\n return null;\n } finally {\n setIsLoading(false);\n }\n },\n [client, onError]\n );\n\n return useMemo(\n () => ({ signalIntent, prepareSignalIntent, isLoading, error, txHash, prepared }),\n [signalIntent, prepareSignalIntent, isLoading, error, txHash, prepared]\n );\n}\n","import type { TakerTierLevel } from './types';\n\n/**\n * Canonical taker tier schedule — the single client-side source of truth for\n * per-intent caps and volume thresholds. Mirrors the curator's authoritative\n * tier engine (curator `src/common/services/tier/tierConstants.ts`), which is\n * what the backend actually enforces.\n *\n * The live qualification signal is Peer Pay volume. Historical maker tiers\n * earned before July 1, 2026 UTC are preserved; after that cutoff, only Peer\n * Pay volume moves the tier. Curator keeps the response field name\n * `peerPayVolume` for compatibility.\n *\n * A user's *live* tier, cap, and progression always come from the taker-tier\n * API payload (`TakerTier.perIntentCapBaseUnits`, `minVolumeForTier`,\n * `volumeToNextTier`, `peerPayVolume`). Those values are DB-backed and\n * server-authoritative — they vary per environment (e.g. preprod runs\n * different thresholds than these). This static schedule is ONLY a\n * documented-default reference for displays that must show every tier at once\n * (the Fees & Tiers ladder) when no live payload is available; never gate or\n * compute a user's real cap from it.\n *\n * Volume bands track the live tuned qualification thresholds — PEER $1k,\n * PLUS $10k, PRO $50k, PLATINUM $100k. Caps ($100/$250/$1k/$2.5k/$5k) are unchanged.\n * Read the live per-user values from the API: curator can change qualification\n * inputs behind the compatibility fields without changing this reference table.\n *\n * Ordered highest tier → lowest (PLATINUM first) to match UI display order.\n * PEER_PRESIDENT is invite-only and excluded from the volume ladder.\n */\nexport interface TakerTierScheduleEntry {\n tier: TakerTierLevel;\n /** Per-intent order cap in whole USD (base, before platform risk multipliers). */\n perIntentCapUsd: number;\n /** Inclusive lower bound of Peer Pay volume (USD) that qualifies for this tier. */\n minVolumeUsd: number;\n /** Inclusive upper bound of Peer Pay volume (USD); `Infinity` for the top tier. */\n maxVolumeUsd: number;\n}\n\nexport const TAKER_TIER_SCHEDULE: readonly TakerTierScheduleEntry[] = [\n { tier: 'PLATINUM', perIntentCapUsd: 5000, minVolumeUsd: 100000, maxVolumeUsd: Infinity },\n { tier: 'PRO', perIntentCapUsd: 2500, minVolumeUsd: 50000, maxVolumeUsd: 99999 },\n { tier: 'PLUS', perIntentCapUsd: 1000, minVolumeUsd: 10000, maxVolumeUsd: 49999 },\n { tier: 'PEER', perIntentCapUsd: 250, minVolumeUsd: 1000, maxVolumeUsd: 9999 },\n { tier: 'PEASANT', perIntentCapUsd: 100, minVolumeUsd: 0, maxVolumeUsd: 999 },\n];\n\n/** Volume-based tier order, lowest → highest, for next-tier progression. */\nexport const TAKER_TIER_ORDER: readonly TakerTierLevel[] = [\n 'PEASANT',\n 'PEER',\n 'PLUS',\n 'PRO',\n 'PLATINUM',\n];\n\n/** Per-intent caps (whole USD) keyed by tier, derived from the schedule. */\nexport const TAKER_TIER_CAPS: Readonly<Record<string, number>> = Object.fromEntries(\n TAKER_TIER_SCHEDULE.map((entry) => [entry.tier, entry.perIntentCapUsd]),\n);\n\n/**\n * Default take-fee discount (in basis points) applied per tier, mirroring\n * curator `TIER_FEE_DISCOUNT_BPS`. The discount is subtracted from the base\n * service fee server-side at quote and sign time — it is NOT returned by the\n * tier endpoint. These are documented defaults for reference fee displays only;\n * the curator DB control-plane can override them, so prefer the fee shown on a\n * live quote when one is available.\n */\nexport const TAKER_TIER_FEE_DISCOUNT_BPS: Readonly<Record<TakerTierLevel, number>> = {\n PEASANT: 0,\n PEER: 5,\n PLUS: 10,\n PRO: 20,\n PLATINUM: 30,\n PEER_PRESIDENT: 30,\n};\n\n/** The default fee-discount (bps) for a tier, or 0 for unknown tiers. */\nexport function getTakerTierFeeDiscountBps(tier: string | undefined): number {\n if (!tier) return 0;\n return TAKER_TIER_FEE_DISCOUNT_BPS[tier as TakerTierLevel] ?? 0;\n}\n\n/** The next tier up from `currentTier`, or `null` at the top / for unknown tiers. */\nexport function getNextTakerTier(currentTier: string | undefined): TakerTierLevel | null {\n if (!currentTier) return null;\n const index = TAKER_TIER_ORDER.indexOf(currentTier as TakerTierLevel);\n if (index === -1 || index >= TAKER_TIER_ORDER.length - 1) return null;\n return TAKER_TIER_ORDER[index + 1];\n}\n","import { useState, useCallback, useMemo, useEffect } from 'react';\nimport { formatUnits } from 'viem';\nimport type { Zkp2pClient } from '../../client/Zkp2pClient';\nimport type { GetTakerTierRequest, TakerTier } from '../../types';\nimport { TAKER_TIER_CAPS, getNextTakerTier } from '../../takerTiers';\n\nexport interface UseGetTakerTierOptions {\n client: Zkp2pClient | null;\n owner?: string | null;\n chainId?: number | null;\n autoFetch?: boolean;\n onSuccess?: (tier: TakerTier) => void;\n onError?: (error: Error) => void;\n}\n\nexport function useGetTakerTier({\n client,\n owner,\n chainId,\n autoFetch = true,\n onSuccess,\n onError,\n}: UseGetTakerTierOptions) {\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [takerTier, setTakerTier] = useState<TakerTier | null>(null);\n\n const getTakerTier = useCallback(\n async (params?: GetTakerTierRequest) => {\n if (!client) {\n const err = new Error('Zkp2pClient is not initialized');\n setError(err);\n onError?.(err);\n return null;\n }\n\n const request = params ?? (owner && chainId ? { owner, chainId } : null);\n if (!request) {\n const err = new Error('Owner address and chainId are required');\n setError(err);\n onError?.(err);\n return null;\n }\n\n setIsLoading(true);\n setError(null);\n setTakerTier(null);\n\n try {\n const response = await client.getTakerTier(request);\n setTakerTier(response.responseObject);\n onSuccess?.(response.responseObject);\n return response;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(e);\n onError?.(e);\n return null;\n } finally {\n setIsLoading(false);\n }\n },\n [client, owner, chainId, onSuccess, onError],\n );\n\n useEffect(() => {\n if (!autoFetch || !owner || !chainId) return;\n void getTakerTier({ owner, chainId });\n }, [autoFetch, owner, chainId, getTakerTier]);\n\n return useMemo(\n () => ({ getTakerTier, takerTier, isLoading, error }),\n [getTakerTier, takerTier, isLoading, error],\n );\n}\n\n// The per-tier cap schedule lives in one place — `takerTiers.ts`\n// (`TAKER_TIER_CAPS`), mirroring the curator's authoritative tier engine. The\n// forward-looking \"next tier cap\" hint derives from it; a user's own live cap\n// comes from the API payload (`platformLimits`, falling back to legacy\n// perIntentCapBaseUnits / nextTierMaxOrderSizeDisplay).\nexport function getNextTierCap(currentTier: string | undefined): string | null {\n const nextTier = getNextTakerTier(currentTier);\n if (!nextTier) return null;\n const nextCap = TAKER_TIER_CAPS[nextTier];\n return nextCap != null ? `$${nextCap.toLocaleString()}` : null;\n}\n\nfunction formatCapFromBaseUnits(baseUnits: string | undefined): string {\n if (!baseUnits || baseUnits === '') return '$0';\n const value = Number(formatUnits(BigInt(baseUnits), 6));\n return `$${value.toLocaleString()}`;\n}\n\nfunction getCapForDisplay(tier: TakerTier): string | undefined {\n const platformLimits = tier.platformLimits ?? [];\n if (platformLimits.length === 0) {\n return tier.perIntentCapBaseUnits ?? tier.maxOrderSize;\n }\n\n const bestCap = platformLimits\n .filter((limit) => !limit.isLocked && limit.effectiveCap && limit.effectiveCap !== '0')\n .reduce<string | undefined>((current, limit) => {\n if (!current) return limit.effectiveCap;\n return BigInt(limit.effectiveCap) > BigInt(current) ? limit.effectiveCap : current;\n }, undefined);\n\n return bestCap ?? '0';\n}\n\nexport function getTierDisplayInfo(tier: TakerTier | undefined): {\n tierLabel: string;\n capDisplay: string;\n isNewUser: boolean;\n showScore: boolean;\n} {\n if (!tier) {\n return {\n tierLabel: 'Loading...',\n capDisplay: '...',\n isNewUser: false,\n showScore: false,\n };\n }\n\n const isNewUser = tier.source === 'fallback';\n const isZeroFulfills = tier.stats?.lifetimeFulfilledCount === 0;\n\n const tierLabels: Record<string, string> = {\n PEASANT: 'Peer Peasant',\n PEER: 'Peer',\n PLUS: 'Peer Plus',\n PRO: 'Peer Pro',\n PLATINUM: 'Peer Platinum',\n };\n\n const capDisplay = formatCapFromBaseUnits(getCapForDisplay(tier));\n\n return {\n tierLabel: tierLabels[tier.tier] || tier.tier,\n capDisplay,\n isNewUser: isNewUser || isZeroFulfills,\n showScore: !isNewUser && !!tier.stats && tier.stats.lockScoreDiluted !== '0',\n };\n}\n","import { useState, useCallback, useMemo } from 'react';\nimport type { Zkp2pClient, FulfillIntentMethodParams } from '../../client/Zkp2pClient';\nimport type { PreparedTransaction } from '../../types/prepared';\nimport type { Hash } from 'viem';\n\nexport interface UseFulfillIntentOptions {\n client: Zkp2pClient | null;\n onSuccess?: (txHash: Hash) => void;\n onError?: (error: Error) => void;\n}\n\n/**\n * React hook for fulfilling an intent with payment proof.\n *\n * Provides both execute and prepare functionality:\n * - `fulfillIntent(params)` - Execute transaction directly\n * - `prepareFulfillIntent(params)` - Get prepared transaction for relayer submission\n *\n * @example\n * ```tsx\n * function FulfillButton({ client, intentHash, proof }) {\n * const { fulfillIntent, prepareFulfillIntent, isLoading, error, txHash, prepared } = useFulfillIntent({ client });\n *\n * // Execute directly\n * const handleExecute = () => fulfillIntent({ intentHash, proof });\n *\n * // Or prepare for relayer\n * const handlePrepare = async () => {\n * const tx = await prepareFulfillIntent({ intentHash, proof });\n * if (tx) await submitToRelayer(tx);\n * };\n *\n * return <button onClick={handleExecute} disabled={isLoading}>Fulfill Intent</button>;\n * }\n * ```\n */\nexport function useFulfillIntent({ client, onSuccess, onError }: UseFulfillIntentOptions) {\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [txHash, setTxHash] = useState<Hash | null>(null);\n const [prepared, setPrepared] = useState<PreparedTransaction | null>(null);\n\n const fulfillIntent = useCallback(\n async (params: FulfillIntentMethodParams) => {\n if (!client) {\n const err = new Error('Zkp2pClient is not initialized');\n setError(err);\n onError?.(err);\n return null;\n }\n setIsLoading(true);\n setError(null);\n setTxHash(null);\n try {\n const hash = await client.fulfillIntent(params);\n setTxHash(hash);\n onSuccess?.(hash);\n return hash;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(e);\n onError?.(e);\n return null;\n } finally {\n setIsLoading(false);\n }\n },\n [client, onSuccess, onError]\n );\n\n const prepareFulfillIntent = useCallback(\n async (params: FulfillIntentMethodParams) => {\n if (!client) {\n const err = new Error('Zkp2pClient is not initialized');\n setError(err);\n onError?.(err);\n return null;\n }\n setIsLoading(true);\n setError(null);\n setPrepared(null);\n try {\n const result = await client.fulfillIntent.prepare(params);\n setPrepared(result);\n return result;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(e);\n onError?.(e);\n return null;\n } finally {\n setIsLoading(false);\n }\n },\n [client, onError]\n );\n\n return useMemo(\n () => ({ fulfillIntent, prepareFulfillIntent, isLoading, error, txHash, prepared }),\n [fulfillIntent, prepareFulfillIntent, isLoading, error, txHash, prepared]\n );\n}\n","import { useState, useCallback, useMemo } from 'react';\nimport type { Zkp2pClient } from '../../client/Zkp2pClient';\nimport type { Hash } from 'viem';\n\nexport interface UseReleaseFundsToPayerOptions {\n client: Zkp2pClient | null;\n onSuccess?: (hash: Hash) => void;\n onError?: (error: Error) => void;\n}\n\nexport function useReleaseFundsToPayer({ client, onSuccess, onError }: UseReleaseFundsToPayerOptions) {\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [txHash, setTxHash] = useState<Hash | null>(null);\n\n const releaseFundsToPayer = useCallback(\n async (params: Parameters<Zkp2pClient['releaseFundsToPayer']>[0]) => {\n if (!client) {\n const err = new Error('Zkp2pClient is not initialized');\n setError(err);\n onError?.(err);\n return null;\n }\n setIsLoading(true);\n setError(null);\n setTxHash(null);\n try {\n const hash = await client.releaseFundsToPayer(params);\n setTxHash(hash);\n onSuccess?.(hash);\n return hash;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(e);\n onError?.(e);\n return null;\n } finally {\n setIsLoading(false);\n }\n },\n [client, onSuccess, onError]\n );\n\n return useMemo(() => ({ releaseFundsToPayer, isLoading, error, txHash }), [releaseFundsToPayer, isLoading, error, txHash]);\n}\n\n","import { useState, useCallback, useMemo } from 'react';\nimport type { Zkp2pClient } from '../../client/Zkp2pClient';\nimport type { Hash } from 'viem';\n\nexport interface UseSetAcceptingIntentsOptions {\n client: Zkp2pClient | null;\n onSuccess?: (hash: Hash) => void;\n onError?: (error: Error) => void;\n}\n\nexport function useSetAcceptingIntents({ client, onSuccess, onError }: UseSetAcceptingIntentsOptions) {\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [txHash, setTxHash] = useState<Hash | null>(null);\n\n const setAcceptingIntents = useCallback(\n async (params: Parameters<Zkp2pClient['setAcceptingIntents']>[0]) => {\n if (!client) {\n const err = new Error('Zkp2pClient is not initialized');\n setError(err);\n onError?.(err);\n return null;\n }\n setIsLoading(true);\n setError(null);\n setTxHash(null);\n try {\n const hash = await client.setAcceptingIntents(params);\n setTxHash(hash);\n onSuccess?.(hash);\n return hash;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(e);\n onError?.(e);\n return null;\n } finally {\n setIsLoading(false);\n }\n },\n [client, onSuccess, onError]\n );\n\n return useMemo(() => ({ setAcceptingIntents, isLoading, error, txHash }), [setAcceptingIntents, isLoading, error, txHash]);\n}\n\n","import { useState, useCallback, useMemo } from 'react';\nimport type { Zkp2pClient } from '../../client/Zkp2pClient';\nimport type { Hash } from 'viem';\n\nexport interface UseSetIntentRangeOptions {\n client: Zkp2pClient | null;\n onSuccess?: (hash: Hash) => void;\n onError?: (error: Error) => void;\n}\n\nexport function useSetIntentRange({ client, onSuccess, onError }: UseSetIntentRangeOptions) {\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [txHash, setTxHash] = useState<Hash | null>(null);\n\n const setIntentRange = useCallback(\n async (params: Parameters<Zkp2pClient['setIntentRange']>[0]) => {\n if (!client) {\n const err = new Error('Zkp2pClient is not initialized');\n setError(err);\n onError?.(err);\n return null;\n }\n setIsLoading(true);\n setError(null);\n setTxHash(null);\n try {\n const hash = await client.setIntentRange(params);\n setTxHash(hash);\n onSuccess?.(hash);\n return hash;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(e);\n onError?.(e);\n return null;\n } finally {\n setIsLoading(false);\n }\n },\n [client, onSuccess, onError]\n );\n\n return useMemo(() => ({ setIntentRange, isLoading, error, txHash }), [setIntentRange, isLoading, error, txHash]);\n}\n\n","import { useState, useCallback, useMemo } from 'react';\nimport type { Zkp2pClient } from '../../client/Zkp2pClient';\nimport type { Hash } from 'viem';\n\nexport interface UseSetCurrencyMinRateOptions {\n client: Zkp2pClient | null;\n onSuccess?: (hash: Hash) => void;\n onError?: (error: Error) => void;\n}\n\nexport function useSetCurrencyMinRate({ client, onSuccess, onError }: UseSetCurrencyMinRateOptions) {\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [txHash, setTxHash] = useState<Hash | null>(null);\n\n const setCurrencyMinRate = useCallback(\n async (params: Parameters<Zkp2pClient['setCurrencyMinRate']>[0]) => {\n if (!client) {\n const err = new Error('Zkp2pClient is not initialized');\n setError(err);\n onError?.(err);\n return null;\n }\n setIsLoading(true);\n setError(null);\n setTxHash(null);\n try {\n const hash = await client.setCurrencyMinRate(params);\n setTxHash(hash);\n onSuccess?.(hash);\n return hash;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(e);\n onError?.(e);\n return null;\n } finally {\n setIsLoading(false);\n }\n },\n [client, onSuccess, onError]\n );\n\n return useMemo(() => ({ setCurrencyMinRate, isLoading, error, txHash }), [setCurrencyMinRate, isLoading, error, txHash]);\n}\n\n","import { useState, useCallback, useMemo } from 'react';\nimport type { Zkp2pClient } from '../../client/Zkp2pClient';\nimport type { Hash } from 'viem';\n\nexport interface UseAddFundsOptions {\n client: Zkp2pClient | null;\n onSuccess?: (hash: Hash) => void;\n onError?: (error: Error) => void;\n}\n\nexport function useAddFunds({ client, onSuccess, onError }: UseAddFundsOptions) {\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [txHash, setTxHash] = useState<Hash | null>(null);\n\n const addFunds = useCallback(\n async (params: Parameters<Zkp2pClient['addFunds']>[0]) => {\n if (!client) {\n const err = new Error('Zkp2pClient is not initialized');\n setError(err);\n onError?.(err);\n return null;\n }\n setIsLoading(true);\n setError(null);\n setTxHash(null);\n try {\n const hash = await client.addFunds(params);\n setTxHash(hash);\n onSuccess?.(hash);\n return hash;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(e);\n onError?.(e);\n return null;\n } finally {\n setIsLoading(false);\n }\n },\n [client, onSuccess, onError]\n );\n\n return useMemo(() => ({ addFunds, isLoading, error, txHash }), [addFunds, isLoading, error, txHash]);\n}\n\n","import { useState, useCallback, useMemo } from 'react';\nimport type { Zkp2pClient } from '../../client/Zkp2pClient';\nimport type { Hash } from 'viem';\n\nexport interface UseRemoveFundsOptions {\n client: Zkp2pClient | null;\n onSuccess?: (hash: Hash) => void;\n onError?: (error: Error) => void;\n}\n\nexport function useRemoveFunds({ client, onSuccess, onError }: UseRemoveFundsOptions) {\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [txHash, setTxHash] = useState<Hash | null>(null);\n\n const removeFunds = useCallback(\n async (params: Parameters<Zkp2pClient['removeFunds']>[0]) => {\n if (!client) {\n const err = new Error('Zkp2pClient is not initialized');\n setError(err);\n onError?.(err);\n return null;\n }\n setIsLoading(true);\n setError(null);\n setTxHash(null);\n try {\n const hash = await client.removeFunds(params);\n setTxHash(hash);\n onSuccess?.(hash);\n return hash;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(e);\n onError?.(e);\n return null;\n } finally {\n setIsLoading(false);\n }\n },\n [client, onSuccess, onError]\n );\n\n return useMemo(() => ({ removeFunds, isLoading, error, txHash }), [removeFunds, isLoading, error, txHash]);\n}\n\n","import { useState, useCallback, useMemo } from 'react';\nimport type { Zkp2pClient } from '../../client/Zkp2pClient';\nimport type { Hash } from 'viem';\n\nexport interface UseWithdrawDepositOptions {\n client: Zkp2pClient | null;\n onSuccess?: (hash: Hash) => void;\n onError?: (error: Error) => void;\n}\n\nexport function useWithdrawDeposit({ client, onSuccess, onError }: UseWithdrawDepositOptions) {\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [txHash, setTxHash] = useState<Hash | null>(null);\n\n const withdrawDeposit = useCallback(\n async (params: Parameters<Zkp2pClient['withdrawDeposit']>[0]) => {\n if (!client) {\n const err = new Error('Zkp2pClient is not initialized');\n setError(err);\n onError?.(err);\n return null;\n }\n setIsLoading(true);\n setError(null);\n setTxHash(null);\n try {\n const hash = await client.withdrawDeposit(params);\n setTxHash(hash);\n onSuccess?.(hash);\n return hash;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(e);\n onError?.(e);\n return null;\n } finally {\n setIsLoading(false);\n }\n },\n [client, onSuccess, onError]\n );\n\n return useMemo(() => ({ withdrawDeposit, isLoading, error, txHash }), [withdrawDeposit, isLoading, error, txHash]);\n}\n\n","import { useState, useCallback, useMemo } from 'react';\nimport type { Zkp2pClient } from '../../client/Zkp2pClient';\nimport type { Hash } from 'viem';\n\nexport interface UseSetRetainOnEmptyOptions {\n client: Zkp2pClient | null;\n onSuccess?: (hash: Hash) => void;\n onError?: (error: Error) => void;\n}\n\nexport function useSetRetainOnEmpty({ client, onSuccess, onError }: UseSetRetainOnEmptyOptions) {\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [txHash, setTxHash] = useState<Hash | null>(null);\n\n const setRetainOnEmpty = useCallback(\n async (params: Parameters<Zkp2pClient['setRetainOnEmpty']>[0]) => {\n if (!client) {\n const err = new Error('Zkp2pClient is not initialized');\n setError(err);\n onError?.(err);\n return null;\n }\n setIsLoading(true);\n setError(null);\n setTxHash(null);\n try {\n const hash = await client.setRetainOnEmpty(params);\n setTxHash(hash);\n onSuccess?.(hash);\n return hash;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(e);\n onError?.(e);\n return null;\n } finally {\n setIsLoading(false);\n }\n },\n [client, onSuccess, onError]\n );\n\n return useMemo(() => ({ setRetainOnEmpty, isLoading, error, txHash }), [setRetainOnEmpty, isLoading, error, txHash]);\n}\n\n","import { useState, useCallback, useMemo } from 'react';\nimport type { Zkp2pClient } from '../../client/Zkp2pClient';\nimport type { Hash } from 'viem';\n\nexport interface UseSetDelegateOptions {\n client: Zkp2pClient | null;\n onSuccess?: (hash: Hash) => void;\n onError?: (error: Error) => void;\n}\n\nexport function useSetDelegate({ client, onSuccess, onError }: UseSetDelegateOptions) {\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [txHash, setTxHash] = useState<Hash | null>(null);\n\n const setDelegate = useCallback(\n async (params: Parameters<Zkp2pClient['setDelegate']>[0]) => {\n if (!client) {\n const err = new Error('Zkp2pClient is not initialized');\n setError(err);\n onError?.(err);\n return null;\n }\n setIsLoading(true);\n setError(null);\n setTxHash(null);\n try {\n const hash = await client.setDelegate(params);\n setTxHash(hash);\n onSuccess?.(hash);\n return hash;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(e);\n onError?.(e);\n return null;\n } finally {\n setIsLoading(false);\n }\n },\n [client, onSuccess, onError]\n );\n\n return useMemo(() => ({ setDelegate, isLoading, error, txHash }), [setDelegate, isLoading, error, txHash]);\n}\n\n","import { useState, useCallback, useMemo } from 'react';\nimport type { Zkp2pClient } from '../../client/Zkp2pClient';\nimport type { Hash } from 'viem';\n\nexport interface UseRemoveDelegateOptions {\n client: Zkp2pClient | null;\n onSuccess?: (hash: Hash) => void;\n onError?: (error: Error) => void;\n}\n\nexport function useRemoveDelegate({ client, onSuccess, onError }: UseRemoveDelegateOptions) {\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [txHash, setTxHash] = useState<Hash | null>(null);\n\n const removeDelegate = useCallback(\n async (params: Parameters<Zkp2pClient['removeDelegate']>[0]) => {\n if (!client) {\n const err = new Error('Zkp2pClient is not initialized');\n setError(err);\n onError?.(err);\n return null;\n }\n setIsLoading(true);\n setError(null);\n setTxHash(null);\n try {\n const hash = await client.removeDelegate(params);\n setTxHash(hash);\n onSuccess?.(hash);\n return hash;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(e);\n onError?.(e);\n return null;\n } finally {\n setIsLoading(false);\n }\n },\n [client, onSuccess, onError]\n );\n\n return useMemo(() => ({ removeDelegate, isLoading, error, txHash }), [removeDelegate, isLoading, error, txHash]);\n}\n\n","import type { Address, Hex } from 'viem';\nimport type { PreparedTransaction } from '../../types/prepared';\n\n// ---------------------------------------------------------------------------\n// Constants\n// ---------------------------------------------------------------------------\n\nexport const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000' as const;\nexport const ZERO_RATE_MANAGER_ID =\n '0x0000000000000000000000000000000000000000000000000000000000000000' as const;\n\n// ---------------------------------------------------------------------------\n// Normalizers\n// ---------------------------------------------------------------------------\n\nexport const normalizeRateManagerId = (value?: string | null): string =>\n (value ?? ZERO_RATE_MANAGER_ID).toLowerCase();\n\nexport const normalizeRegistry = (value?: string | null): string =>\n (value ?? ZERO_ADDRESS).toLowerCase();\n\nexport const isZeroRateManagerId = (value?: string | null): boolean => {\n if (!value) return true;\n const normalized = value.toLowerCase();\n return normalized === ZERO_ADDRESS || normalized === ZERO_RATE_MANAGER_ID;\n};\n\n// ---------------------------------------------------------------------------\n// Error helper\n// ---------------------------------------------------------------------------\n\nexport const asErrorMessage = (error: unknown): string => {\n if (!error) return 'Unknown error';\n if (error instanceof Error) return error.message;\n if (typeof error === 'string') return error;\n\n const anyErr = error as Record<string, unknown>;\n if (typeof anyErr.shortMessage === 'string') return anyErr.shortMessage;\n if (typeof anyErr.details === 'string') return anyErr.details;\n if (typeof anyErr.message === 'string') return anyErr.message;\n\n try {\n return JSON.stringify(error);\n } catch {\n return String(error);\n }\n};\n\n// ---------------------------------------------------------------------------\n// Delegation state classification\n// ---------------------------------------------------------------------------\n\nexport type DelegationState = 'delegated_here' | 'delegated_elsewhere' | 'not_delegated';\n\n/**\n * Classify whether a deposit is delegated to the target vault, delegated\n * elsewhere, or not delegated at all.\n *\n * @param currentRateManagerId The deposit's current rateManagerId (from indexer)\n * @param currentRegistry The deposit's current rateManagerAddress / registry (from indexer)\n * @param targetRateManagerId The vault's rateManagerId we're comparing against\n * @param targetRegistry The vault's registry address we're comparing against\n */\nexport const classifyDelegationState = (\n currentRateManagerId: string | null | undefined,\n currentRegistry: string | null | undefined,\n targetRateManagerId: string,\n targetRegistry: string | null | undefined,\n): DelegationState => {\n if (isZeroRateManagerId(currentRateManagerId)) {\n return 'not_delegated';\n }\n\n const normalizedCurrent = normalizeRateManagerId(currentRateManagerId);\n const normalizedTarget = targetRateManagerId.toLowerCase();\n const normalizedCurrentRegistry = normalizeRegistry(currentRegistry);\n const normalizedTargetRegistry = targetRegistry ? targetRegistry.toLowerCase() : '';\n\n const idsMatch = normalizedCurrent === normalizedTarget;\n const registryMatches = normalizedTargetRegistry\n ? normalizedCurrentRegistry === normalizedTargetRegistry\n : true;\n\n if (idsMatch && registryMatches) {\n return 'delegated_here';\n }\n\n return 'delegated_elsewhere';\n};\n\nexport const assertAtomicDelegationSwitchSupport = (\n requiresSwitch: boolean,\n canBatch: boolean,\n): void => {\n if (!requiresSwitch || canBatch) return;\n throw new Error(\n 'Switching delegation targets requires smart-account batching. Clear the existing delegation first.',\n );\n};\n\n// ---------------------------------------------------------------------------\n// Contract routing\n// ---------------------------------------------------------------------------\n\nexport type DelegationRoute = 'v2';\n\nexport const getDelegationRoute = (_client: unknown, _escrow: Address): DelegationRoute => 'v2';\n\ntype DelegationMethodSupportClient = Partial<\n Record<'setRateManager' | 'clearRateManager', { prepare?: unknown }>\n>;\n\nexport const assertDelegationMethodSupport = (\n client: DelegationMethodSupportClient,\n _route: DelegationRoute,\n action: 'set' | 'clear',\n): void => {\n const method = action === 'set' ? 'setRateManager' : 'clearRateManager';\n if (client?.[method]?.prepare) return;\n throw new Error(`Delegation requires SDK ${method} support`);\n};\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport interface DelegationDepositTarget {\n compositeDepositId: string;\n escrow: Address;\n depositId: bigint;\n currentRateManagerId?: string | null;\n currentRateManagerRegistry?: string | null;\n}\n\nexport interface BatchResult {\n hashes: string[];\n failed: Array<{ compositeDepositId: string; error: string }>;\n}\n\n/**\n * Callback the consumer provides for sending a single prepared transaction.\n * Returns the transaction hash.\n */\nexport type SendTransactionFn = (tx: { to: Address; data: Hex; value?: bigint }) => Promise<string>;\n\n/**\n * Optional callback for batching multiple calls in a single user operation\n * (e.g. via a smart account). If not provided, transactions are sent\n * sequentially via sendTransaction.\n */\nexport type SendBatchFn = (\n txs: Array<{ to: Address; data: Hex; value?: bigint }>,\n) => Promise<string>;\n\n// ---------------------------------------------------------------------------\n// Prepare helpers (used internally by hooks)\n// ---------------------------------------------------------------------------\n\nexport const prepareClearDelegationTx = async (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n client: any,\n params: { escrow: Address; depositId: bigint },\n referrer?: string | string[],\n): Promise<PreparedTransaction> => {\n const route = getDelegationRoute(client, params.escrow);\n assertDelegationMethodSupport(client, route, 'clear');\n return client.clearRateManager.prepare({\n escrowAddress: params.escrow,\n depositId: params.depositId,\n ...(referrer ? { txOverrides: { referrer } } : {}),\n });\n};\n\nexport const prepareSetDelegationTx = async (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n client: any,\n params: {\n escrow: Address;\n depositId: bigint;\n registry: Address;\n rateManagerId: Hex;\n },\n referrer?: string | string[],\n): Promise<PreparedTransaction> => {\n const route = getDelegationRoute(client, params.escrow);\n assertDelegationMethodSupport(client, route, 'set');\n return client.setRateManager.prepare({\n escrowAddress: params.escrow,\n depositId: params.depositId,\n rateManagerAddress: params.registry,\n rateManagerId: params.rateManagerId,\n ...(referrer ? { txOverrides: { referrer } } : {}),\n });\n};\n","import { useState, useCallback, useMemo } from 'react';\nimport type { Address, Hash } from 'viem';\nimport type { Zkp2pClient } from '../../client/Zkp2pClient';\nimport type { PreparedTransaction } from '../../types/prepared';\nimport { asErrorMessage, ZERO_ADDRESS } from './vaultUtils';\nimport type { SendTransactionFn } from './vaultUtils';\n\n// ---------------------------------------------------------------------------\n// Options\n// ---------------------------------------------------------------------------\n\nexport interface UseCreateVaultOptions {\n client: Zkp2pClient | null;\n sendTransaction: SendTransactionFn;\n referrer?: string | string[];\n onSuccess?: (hash: Hash) => void;\n onError?: (error: Error) => void;\n}\n\n// ---------------------------------------------------------------------------\n// Params\n// ---------------------------------------------------------------------------\n\nexport interface CreateVaultParams {\n config: {\n manager: Address;\n feeRecipient: Address;\n maxFee: bigint;\n fee: bigint;\n depositHook?: Address;\n /** Minimum deposit liquidity required for delegation (USDC, 6 decimals). Default: 0 (no minimum). */\n minLiquidity?: bigint;\n name: string;\n uri: string;\n };\n}\n\n// ---------------------------------------------------------------------------\n// Hook\n// ---------------------------------------------------------------------------\n\nexport function useCreateVault({\n client,\n sendTransaction,\n referrer,\n onSuccess,\n onError,\n}: UseCreateVaultOptions) {\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const [txHash, setTxHash] = useState<Hash | null>(null);\n\n const createVault = useCallback(\n async (params: CreateVaultParams) => {\n if (!client) {\n const err = new Error('Zkp2pClient is not initialized');\n setError(asErrorMessage(err));\n onError?.(err);\n return null;\n }\n\n setIsLoading(true);\n setError(null);\n setTxHash(null);\n\n try {\n const prepared = await client.createRateManager.prepare({\n config: {\n ...params.config,\n depositHook: (params.config.depositHook ?? ZERO_ADDRESS) as Address,\n },\n ...(referrer ? { txOverrides: { referrer } } : {}),\n });\n\n const hash = await sendTransaction({\n to: prepared.to,\n data: prepared.data,\n value: prepared.value,\n });\n\n setTxHash(hash as Hash);\n setError(null);\n onSuccess?.(hash as Hash);\n return hash as Hash;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(asErrorMessage(e));\n onError?.(e);\n return null;\n } finally {\n setIsLoading(false);\n }\n },\n [client, sendTransaction, referrer, onSuccess, onError],\n );\n\n const prepareCreateVault = useCallback(\n async (params: CreateVaultParams): Promise<PreparedTransaction | null> => {\n if (!client) {\n const err = new Error('Zkp2pClient is not initialized');\n setError(asErrorMessage(err));\n onError?.(err);\n return null;\n }\n\n setIsLoading(true);\n setError(null);\n\n try {\n const prepared = await client.createRateManager.prepare({\n config: {\n ...params.config,\n depositHook: (params.config.depositHook ?? ZERO_ADDRESS) as Address,\n },\n ...(referrer ? { txOverrides: { referrer } } : {}),\n });\n return prepared;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(asErrorMessage(e));\n onError?.(e);\n return null;\n } finally {\n setIsLoading(false);\n }\n },\n [client, referrer, onError],\n );\n\n return useMemo(\n () => ({ createVault, prepareCreateVault, isLoading, error, txHash }),\n [createVault, prepareCreateVault, isLoading, error, txHash],\n );\n}\n","import { useState, useCallback, useMemo } from 'react';\nimport type { Address, Hex } from 'viem';\nimport type { Zkp2pClient } from '../../client/Zkp2pClient';\nimport {\n asErrorMessage,\n assertAtomicDelegationSwitchSupport,\n getDelegationRoute,\n assertDelegationMethodSupport,\n normalizeRateManagerId,\n normalizeRegistry,\n isZeroRateManagerId,\n prepareClearDelegationTx,\n prepareSetDelegationTx,\n} from './vaultUtils';\nimport type {\n SendTransactionFn,\n SendBatchFn,\n DelegationDepositTarget,\n BatchResult,\n} from './vaultUtils';\n\n// ---------------------------------------------------------------------------\n// Options\n// ---------------------------------------------------------------------------\n\nexport interface UseVaultDelegationOptions {\n client: Zkp2pClient | null;\n sendTransaction: SendTransactionFn;\n /** When provided, enables batching (e.g. smart account user-operations). */\n sendBatch?: SendBatchFn;\n referrer?: string | string[];\n onSuccess?: (hash: string) => void;\n onError?: (error: Error) => void;\n}\n\n// ---------------------------------------------------------------------------\n// Preflight simulation types\n// ---------------------------------------------------------------------------\n\ninterface PreflightParams {\n escrow: Address;\n depositId: bigint;\n registry: Address;\n rateManagerId: Hex;\n enabled: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Hook\n// ---------------------------------------------------------------------------\n\nexport function useVaultDelegation({\n client,\n sendTransaction,\n sendBatch,\n referrer,\n onSuccess,\n onError,\n}: UseVaultDelegationOptions) {\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n const clearLastError = useCallback(() => setError(null), []);\n\n // -----------------------------------------------------------------------\n // Preflight simulation\n // -----------------------------------------------------------------------\n\n const runHookPreflight = useCallback(\n async ({ escrow, depositId, registry, rateManagerId, enabled }: PreflightParams) => {\n if (!enabled || !client) return;\n\n try {\n const route = getDelegationRoute(client, escrow);\n assertDelegationMethodSupport(client, route, 'set');\n\n if (route === 'v2') {\n const abi = (client as any).escrowV2Abi || (client as any).escrowAbi;\n await client.publicClient.simulateContract({\n address: escrow,\n abi,\n functionName: 'setRateManager',\n args: [depositId, registry, rateManagerId],\n account: client.walletClient.account?.address,\n });\n } else if (client.rateManagerControllerAddress && client.rateManagerControllerAbi) {\n await client.publicClient.simulateContract({\n address: client.rateManagerControllerAddress,\n abi: client.rateManagerControllerAbi,\n functionName: 'setDepositRateManager',\n args: [escrow, depositId, registry, rateManagerId],\n account: client.walletClient.account?.address,\n });\n }\n } catch (simulateError) {\n const reason = asErrorMessage(simulateError);\n throw new Error(reason || 'Delegation failed — vault hook rejected this deposit');\n }\n },\n [client],\n );\n\n // -----------------------------------------------------------------------\n // Internal: send a single prepared tx\n // -----------------------------------------------------------------------\n\n const sendPrepared = useCallback(\n async (prepared: { to: Address; data: Hex; value: bigint }) => {\n const hash = await sendTransaction({\n to: prepared.to,\n data: prepared.data,\n value: prepared.value,\n });\n if (!hash) throw new Error('Transaction was not submitted');\n return hash;\n },\n [sendTransaction],\n );\n\n // -----------------------------------------------------------------------\n // Internal: clear without lifecycle callbacks (used by sequential switch)\n // -----------------------------------------------------------------------\n\n const sendClear = useCallback(\n async (params: { escrow: Address; depositId: bigint }) => {\n if (!client) throw new Error('Zkp2pClient is not initialized');\n const prepared = await prepareClearDelegationTx(client, params, referrer);\n return sendPrepared(prepared);\n },\n [client, referrer, sendPrepared],\n );\n\n // -----------------------------------------------------------------------\n // clearDelegation (single deposit)\n // -----------------------------------------------------------------------\n\n const clearDelegation = useCallback(\n async (params: { escrow: Address; depositId: bigint }) => {\n clearLastError();\n if (!client) throw new Error('Zkp2pClient is not initialized');\n\n setIsLoading(true);\n try {\n const prepared = await prepareClearDelegationTx(client, params, referrer);\n const hash = await sendPrepared(prepared);\n setError(null);\n onSuccess?.(hash);\n return hash;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(asErrorMessage(e));\n onError?.(e);\n throw e;\n } finally {\n setIsLoading(false);\n }\n },\n [clearLastError, client, referrer, sendPrepared, onSuccess, onError],\n );\n\n // -----------------------------------------------------------------------\n // delegateDeposit (single deposit)\n // -----------------------------------------------------------------------\n\n const delegateDeposit = useCallback(\n async (params: {\n escrow: Address;\n depositId: bigint;\n registry: Address;\n rateManagerId: Hex;\n currentRateManagerId?: string | null;\n currentRateManagerRegistry?: string | null;\n preflightHook?: boolean;\n }) => {\n clearLastError();\n if (!client) throw new Error('Zkp2pClient is not initialized');\n\n setIsLoading(true);\n try {\n await runHookPreflight({\n escrow: params.escrow,\n depositId: params.depositId,\n registry: params.registry,\n rateManagerId: params.rateManagerId,\n enabled: Boolean(params.preflightHook),\n });\n\n const normalizedCurrent = normalizeRateManagerId(params.currentRateManagerId);\n const normalizedNext = normalizeRateManagerId(params.rateManagerId);\n const normalizedCurrentRegistry = normalizeRegistry(params.currentRateManagerRegistry);\n const normalizedNextRegistry = normalizeRegistry(params.registry);\n const isSameTarget =\n normalizedCurrent === normalizedNext &&\n normalizedCurrentRegistry === normalizedNextRegistry;\n\n // Already delegated to this exact target -- skip to avoid on-chain revert\n if (!isZeroRateManagerId(normalizedCurrent) && isSameTarget) {\n setError(null);\n return '';\n }\n\n const requiresSwitch = !isZeroRateManagerId(normalizedCurrent) && !isSameTarget;\n assertAtomicDelegationSwitchSupport(requiresSwitch, Boolean(sendBatch));\n\n // Smart account batched switch: clear + set in one user-op\n if (requiresSwitch && sendBatch) {\n const clearTx = await prepareClearDelegationTx(\n client,\n { escrow: params.escrow, depositId: params.depositId },\n referrer,\n );\n const setTx = await prepareSetDelegationTx(\n client,\n {\n escrow: params.escrow,\n depositId: params.depositId,\n registry: params.registry,\n rateManagerId: params.rateManagerId,\n },\n referrer,\n );\n\n const batchHash = await sendBatch([\n { to: clearTx.to, data: clearTx.data, value: clearTx.value },\n { to: setTx.to, data: setTx.data, value: setTx.value },\n ]);\n\n if (!batchHash) throw new Error('Failed to submit batched delegation switch');\n\n setError(null);\n onSuccess?.(batchHash);\n return batchHash;\n }\n\n // Sequential fallback for non-switch paths only.\n\n const prepared = await prepareSetDelegationTx(\n client,\n {\n escrow: params.escrow,\n depositId: params.depositId,\n registry: params.registry,\n rateManagerId: params.rateManagerId,\n },\n referrer,\n );\n\n const hash = await sendPrepared(prepared);\n setError(null);\n onSuccess?.(hash);\n return hash;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(asErrorMessage(e));\n onError?.(e);\n throw e;\n } finally {\n setIsLoading(false);\n }\n },\n [\n clearLastError,\n client,\n referrer,\n runHookPreflight,\n sendBatch,\n sendClear,\n sendPrepared,\n onSuccess,\n onError,\n ],\n );\n\n // -----------------------------------------------------------------------\n // clearDelegations (multi-deposit)\n // -----------------------------------------------------------------------\n\n const clearDelegations = useCallback(\n async (params: { deposits: DelegationDepositTarget[] }): Promise<BatchResult> => {\n clearLastError();\n if (!client) throw new Error('Zkp2pClient is not initialized');\n\n const failed: BatchResult['failed'] = [];\n const hashes: string[] = [];\n\n if (!params.deposits.length) return { hashes, failed };\n\n setIsLoading(true);\n try {\n if (sendBatch) {\n const calls: Array<{ to: Address; data: Hex; value?: bigint }> = [];\n\n for (const deposit of params.deposits) {\n try {\n const clearTx = await prepareClearDelegationTx(\n client,\n { escrow: deposit.escrow, depositId: deposit.depositId },\n referrer,\n );\n calls.push({ to: clearTx.to, data: clearTx.data, value: clearTx.value });\n } catch (error) {\n failed.push({\n compositeDepositId: deposit.compositeDepositId,\n error: asErrorMessage(error),\n });\n }\n }\n\n if (calls.length) {\n const hash = await sendBatch(calls);\n if (hash) {\n hashes.push(hash);\n } else {\n failed.push({\n compositeDepositId: 'batch',\n error: 'Failed to submit smart account batch',\n });\n }\n }\n\n if (failed.length === 0) setError(null);\n return { hashes, failed };\n }\n\n // Sequential fallback\n for (const deposit of params.deposits) {\n try {\n const hash = await clearDelegation({\n escrow: deposit.escrow,\n depositId: deposit.depositId,\n });\n hashes.push(hash);\n } catch (error) {\n failed.push({\n compositeDepositId: deposit.compositeDepositId,\n error: asErrorMessage(error),\n });\n }\n }\n\n if (failed.length === 0) setError(null);\n return { hashes, failed };\n } finally {\n setIsLoading(false);\n }\n },\n [clearDelegation, clearLastError, client, referrer, sendBatch],\n );\n\n // -----------------------------------------------------------------------\n // delegateDeposits (multi-deposit)\n // -----------------------------------------------------------------------\n\n const delegateDeposits = useCallback(\n async (params: {\n registry: Address;\n rateManagerId: Hex;\n deposits: DelegationDepositTarget[];\n preflightHook?: boolean;\n }): Promise<BatchResult> => {\n clearLastError();\n if (!client) throw new Error('Zkp2pClient is not initialized');\n\n const failed: BatchResult['failed'] = [];\n const hashes: string[] = [];\n\n if (!params.deposits.length) return { hashes, failed };\n\n setIsLoading(true);\n try {\n if (sendBatch) {\n const calls: Array<{ to: Address; data: Hex; value?: bigint }> = [];\n\n for (const deposit of params.deposits) {\n try {\n await runHookPreflight({\n escrow: deposit.escrow,\n depositId: deposit.depositId,\n registry: params.registry,\n rateManagerId: params.rateManagerId,\n enabled: Boolean(params.preflightHook),\n });\n\n const normalizedCurrent = normalizeRateManagerId(deposit.currentRateManagerId);\n const normalizedNext = normalizeRateManagerId(params.rateManagerId);\n const normalizedCurrentRegistry = normalizeRegistry(\n deposit.currentRateManagerRegistry,\n );\n const normalizedNextRegistry = normalizeRegistry(params.registry);\n const isSameTarget =\n normalizedCurrent === normalizedNext &&\n normalizedCurrentRegistry === normalizedNextRegistry;\n\n // Already delegated to this exact target -- skip to avoid on-chain revert\n if (!isZeroRateManagerId(normalizedCurrent) && isSameTarget) {\n continue;\n }\n\n const requiresSwitch = !isZeroRateManagerId(normalizedCurrent) && !isSameTarget;\n\n if (requiresSwitch) {\n const clearTx = await prepareClearDelegationTx(\n client,\n { escrow: deposit.escrow, depositId: deposit.depositId },\n referrer,\n );\n calls.push({ to: clearTx.to, data: clearTx.data, value: clearTx.value });\n }\n\n const setTx = await prepareSetDelegationTx(\n client,\n {\n escrow: deposit.escrow,\n depositId: deposit.depositId,\n registry: params.registry,\n rateManagerId: params.rateManagerId,\n },\n referrer,\n );\n calls.push({ to: setTx.to, data: setTx.data, value: setTx.value });\n } catch (error) {\n failed.push({\n compositeDepositId: deposit.compositeDepositId,\n error: asErrorMessage(error),\n });\n }\n }\n\n if (calls.length) {\n const hash = await sendBatch(calls);\n if (hash) {\n hashes.push(hash);\n } else {\n failed.push({\n compositeDepositId: 'batch',\n error: 'Failed to submit smart account batch',\n });\n }\n }\n\n if (failed.length === 0) setError(null);\n return { hashes, failed };\n }\n\n // Sequential fallback\n for (const deposit of params.deposits) {\n try {\n const hash = await delegateDeposit({\n escrow: deposit.escrow,\n depositId: deposit.depositId,\n registry: params.registry,\n rateManagerId: params.rateManagerId,\n currentRateManagerId: deposit.currentRateManagerId,\n currentRateManagerRegistry: deposit.currentRateManagerRegistry,\n preflightHook: Boolean(params.preflightHook),\n });\n if (hash) hashes.push(hash);\n } catch (error) {\n failed.push({\n compositeDepositId: deposit.compositeDepositId,\n error: asErrorMessage(error),\n });\n }\n }\n\n if (failed.length === 0) setError(null);\n return { hashes, failed };\n } finally {\n setIsLoading(false);\n }\n },\n [clearLastError, client, delegateDeposit, referrer, runHookPreflight, sendBatch],\n );\n\n return useMemo(\n () => ({\n delegateDeposit,\n delegateDeposits,\n clearDelegation,\n clearDelegations,\n isLoading,\n error,\n }),\n [delegateDeposit, delegateDeposits, clearDelegation, clearDelegations, isLoading, error],\n );\n}\n","import { useState, useCallback, useMemo } from 'react';\nimport type { Hash } from 'viem';\nimport type { Zkp2pClient } from '../../client/Zkp2pClient';\nimport type { PreparedTransaction } from '../../types/prepared';\n\nexport interface UseSetVaultFeeOptions {\n client: Zkp2pClient | null;\n onSuccess?: (hash: Hash) => void;\n onError?: (error: Error) => void;\n}\n\nexport function useSetVaultFee({ client, onSuccess, onError }: UseSetVaultFeeOptions) {\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [txHash, setTxHash] = useState<Hash | null>(null);\n const [prepared, setPrepared] = useState<PreparedTransaction | null>(null);\n\n const setVaultFee = useCallback(\n async (params: Parameters<Zkp2pClient['setVaultFee']>[0]) => {\n if (!client) {\n const err = new Error('Zkp2pClient is not initialized');\n setError(err);\n onError?.(err);\n return null;\n }\n setIsLoading(true);\n setError(null);\n setTxHash(null);\n try {\n const hash = await client.setVaultFee(params);\n setTxHash(hash);\n onSuccess?.(hash);\n return hash;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(e);\n onError?.(e);\n return null;\n } finally {\n setIsLoading(false);\n }\n },\n [client, onError, onSuccess],\n );\n\n const prepareSetVaultFee = useCallback(\n async (params: Parameters<Zkp2pClient['setVaultFee']>[0]) => {\n if (!client) {\n const err = new Error('Zkp2pClient is not initialized');\n setError(err);\n onError?.(err);\n return null;\n }\n setIsLoading(true);\n setError(null);\n setPrepared(null);\n try {\n const tx = await client.setVaultFee.prepare(params);\n setPrepared(tx);\n return tx;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(e);\n onError?.(e);\n return null;\n } finally {\n setIsLoading(false);\n }\n },\n [client, onError],\n );\n\n return useMemo(\n () => ({\n setVaultFee,\n prepareSetVaultFee,\n isLoading,\n error,\n txHash,\n prepared,\n }),\n [setVaultFee, prepareSetVaultFee, isLoading, error, txHash, prepared],\n );\n}\n","import { useState, useCallback, useMemo } from 'react';\nimport type { Hash } from 'viem';\nimport type { Zkp2pClient } from '../../client/Zkp2pClient';\nimport type { PreparedTransaction } from '../../types/prepared';\n\nexport interface UseSetVaultMinRateOptions {\n client: Zkp2pClient | null;\n onSuccess?: (hash: Hash) => void;\n onError?: (error: Error) => void;\n}\n\nexport function useSetVaultMinRate({ client, onSuccess, onError }: UseSetVaultMinRateOptions) {\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [txHash, setTxHash] = useState<Hash | null>(null);\n const [prepared, setPrepared] = useState<PreparedTransaction | null>(null);\n\n const setVaultMinRate = useCallback(\n async (params: Parameters<Zkp2pClient['setVaultMinRate']>[0]) => {\n if (!client) {\n const err = new Error('Zkp2pClient is not initialized');\n setError(err);\n onError?.(err);\n return null;\n }\n setIsLoading(true);\n setError(null);\n setTxHash(null);\n try {\n const hash = await client.setVaultMinRate(params);\n setTxHash(hash);\n onSuccess?.(hash);\n return hash;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(e);\n onError?.(e);\n return null;\n } finally {\n setIsLoading(false);\n }\n },\n [client, onError, onSuccess],\n );\n\n const prepareSetVaultMinRate = useCallback(\n async (params: Parameters<Zkp2pClient['setVaultMinRate']>[0]) => {\n if (!client) {\n const err = new Error('Zkp2pClient is not initialized');\n setError(err);\n onError?.(err);\n return null;\n }\n setIsLoading(true);\n setError(null);\n setPrepared(null);\n try {\n const tx = await client.setVaultMinRate.prepare(params);\n setPrepared(tx);\n return tx;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(e);\n onError?.(e);\n return null;\n } finally {\n setIsLoading(false);\n }\n },\n [client, onError],\n );\n\n return useMemo(\n () => ({\n setVaultMinRate,\n prepareSetVaultMinRate,\n isLoading,\n error,\n txHash,\n prepared,\n }),\n [setVaultMinRate, prepareSetVaultMinRate, isLoading, error, txHash, prepared],\n );\n}\n","import { useState, useCallback, useMemo } from 'react';\nimport type { Hash } from 'viem';\nimport type { Zkp2pClient } from '../../client/Zkp2pClient';\nimport type { PreparedTransaction } from '../../types/prepared';\n\nexport interface UseSetVaultConfigOptions {\n client: Zkp2pClient | null;\n onSuccess?: (hash: Hash) => void;\n onError?: (error: Error) => void;\n}\n\nexport function useSetVaultConfig({ client, onSuccess, onError }: UseSetVaultConfigOptions) {\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [txHash, setTxHash] = useState<Hash | null>(null);\n const [prepared, setPrepared] = useState<PreparedTransaction | null>(null);\n\n const setVaultConfig = useCallback(\n async (params: Parameters<Zkp2pClient['setVaultConfig']>[0]) => {\n if (!client) {\n const err = new Error('Zkp2pClient is not initialized');\n setError(err);\n onError?.(err);\n return null;\n }\n setIsLoading(true);\n setError(null);\n setTxHash(null);\n try {\n const hash = await client.setVaultConfig(params);\n setTxHash(hash);\n onSuccess?.(hash);\n return hash;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(e);\n onError?.(e);\n return null;\n } finally {\n setIsLoading(false);\n }\n },\n [client, onError, onSuccess],\n );\n\n const prepareSetVaultConfig = useCallback(\n async (params: Parameters<Zkp2pClient['setVaultConfig']>[0]) => {\n if (!client) {\n const err = new Error('Zkp2pClient is not initialized');\n setError(err);\n onError?.(err);\n return null;\n }\n setIsLoading(true);\n setError(null);\n setPrepared(null);\n try {\n const tx = await client.setVaultConfig.prepare(params);\n setPrepared(tx);\n return tx;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(e);\n onError?.(e);\n return null;\n } finally {\n setIsLoading(false);\n }\n },\n [client, onError],\n );\n\n return useMemo(\n () => ({\n setVaultConfig,\n prepareSetVaultConfig,\n isLoading,\n error,\n txHash,\n prepared,\n }),\n [setVaultConfig, prepareSetVaultConfig, isLoading, error, txHash, prepared],\n );\n}\n","import { useState, useCallback, useMemo } from 'react';\nimport type { Zkp2pClient } from '../../client/Zkp2pClient';\nimport type { Hash } from 'viem';\n\nexport interface UseAddPaymentMethodsOptions {\n client: Zkp2pClient | null;\n onSuccess?: (hash: Hash) => void;\n onError?: (error: Error) => void;\n}\n\nexport function useAddPaymentMethods({ client, onSuccess, onError }: UseAddPaymentMethodsOptions) {\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [txHash, setTxHash] = useState<Hash | null>(null);\n\n const addPaymentMethods = useCallback(\n async (params: Parameters<Zkp2pClient['addPaymentMethods']>[0]) => {\n if (!client) {\n const err = new Error('Zkp2pClient is not initialized');\n setError(err);\n onError?.(err);\n return null;\n }\n setIsLoading(true);\n setError(null);\n setTxHash(null);\n try {\n const hash = await client.addPaymentMethods(params);\n setTxHash(hash);\n onSuccess?.(hash);\n return hash;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(e);\n onError?.(e);\n return null;\n } finally {\n setIsLoading(false);\n }\n },\n [client, onSuccess, onError]\n );\n\n return useMemo(() => ({ addPaymentMethods, isLoading, error, txHash }), [addPaymentMethods, isLoading, error, txHash]);\n}\n\n","import { useState, useCallback, useMemo } from 'react';\nimport type { Zkp2pClient } from '../../client/Zkp2pClient';\nimport type { Hash } from 'viem';\n\nexport interface UseSetPaymentMethodActiveOptions {\n client: Zkp2pClient | null;\n onSuccess?: (hash: Hash) => void;\n onError?: (error: Error) => void;\n}\n\nexport function useSetPaymentMethodActive({ client, onSuccess, onError }: UseSetPaymentMethodActiveOptions) {\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [txHash, setTxHash] = useState<Hash | null>(null);\n\n const setPaymentMethodActive = useCallback(\n async (params: Parameters<Zkp2pClient['setPaymentMethodActive']>[0]) => {\n if (!client) {\n const err = new Error('Zkp2pClient is not initialized');\n setError(err);\n onError?.(err);\n return null;\n }\n setIsLoading(true);\n setError(null);\n setTxHash(null);\n try {\n const hash = await client.setPaymentMethodActive(params);\n setTxHash(hash);\n onSuccess?.(hash);\n return hash;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(e);\n onError?.(e);\n return null;\n } finally {\n setIsLoading(false);\n }\n },\n [client, onSuccess, onError]\n );\n\n return useMemo(() => ({ setPaymentMethodActive, isLoading, error, txHash }), [setPaymentMethodActive, isLoading, error, txHash]);\n}\n\n","import { useState, useCallback, useMemo } from 'react';\nimport type { Zkp2pClient } from '../../client/Zkp2pClient';\nimport type { Hash } from 'viem';\n\nexport interface UseRemovePaymentMethodOptions {\n client: Zkp2pClient | null;\n onSuccess?: (hash: Hash) => void;\n onError?: (error: Error) => void;\n}\n\nexport function useRemovePaymentMethod({ client, onSuccess, onError }: UseRemovePaymentMethodOptions) {\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [txHash, setTxHash] = useState<Hash | null>(null);\n\n const removePaymentMethod = useCallback(\n async (params: Parameters<Zkp2pClient['removePaymentMethod']>[0]) => {\n if (!client) {\n const err = new Error('Zkp2pClient is not initialized');\n setError(err);\n onError?.(err);\n return null;\n }\n setIsLoading(true);\n setError(null);\n setTxHash(null);\n try {\n const hash = await client.removePaymentMethod(params);\n setTxHash(hash);\n onSuccess?.(hash);\n return hash;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(e);\n onError?.(e);\n return null;\n } finally {\n setIsLoading(false);\n }\n },\n [client, onSuccess, onError]\n );\n\n return useMemo(() => ({ removePaymentMethod, isLoading, error, txHash }), [removePaymentMethod, isLoading, error, txHash]);\n}\n\n","import { useState, useCallback, useMemo } from 'react';\nimport type { Zkp2pClient } from '../../client/Zkp2pClient';\nimport type { Hash } from 'viem';\n\nexport interface UseAddCurrenciesOptions {\n client: Zkp2pClient | null;\n onSuccess?: (hash: Hash) => void;\n onError?: (error: Error) => void;\n}\n\nexport function useAddCurrencies({ client, onSuccess, onError }: UseAddCurrenciesOptions) {\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [txHash, setTxHash] = useState<Hash | null>(null);\n\n const addCurrencies = useCallback(\n async (params: Parameters<Zkp2pClient['addCurrencies']>[0]) => {\n if (!client) {\n const err = new Error('Zkp2pClient is not initialized');\n setError(err);\n onError?.(err);\n return null;\n }\n setIsLoading(true);\n setError(null);\n setTxHash(null);\n try {\n const hash = await client.addCurrencies(params);\n setTxHash(hash);\n onSuccess?.(hash);\n return hash;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(e);\n onError?.(e);\n return null;\n } finally {\n setIsLoading(false);\n }\n },\n [client, onSuccess, onError]\n );\n\n return useMemo(() => ({ addCurrencies, isLoading, error, txHash }), [addCurrencies, isLoading, error, txHash]);\n}\n\n","import { useState, useCallback, useMemo } from 'react';\nimport type { Zkp2pClient } from '../../client/Zkp2pClient';\nimport type { Hash } from 'viem';\n\nexport interface UseDeactivateCurrencyOptions {\n client: Zkp2pClient | null;\n onSuccess?: (hash: Hash) => void;\n onError?: (error: Error) => void;\n}\n\nexport function useDeactivateCurrency({ client, onSuccess, onError }: UseDeactivateCurrencyOptions) {\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [txHash, setTxHash] = useState<Hash | null>(null);\n\n const deactivateCurrency = useCallback(\n async (params: Parameters<Zkp2pClient['deactivateCurrency']>[0]) => {\n if (!client) {\n const err = new Error('Zkp2pClient is not initialized');\n setError(err);\n onError?.(err);\n return null;\n }\n setIsLoading(true);\n setError(null);\n setTxHash(null);\n try {\n const hash = await client.deactivateCurrency(params);\n setTxHash(hash);\n onSuccess?.(hash);\n return hash;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(e);\n onError?.(e);\n return null;\n } finally {\n setIsLoading(false);\n }\n },\n [client, onSuccess, onError]\n );\n\n return useMemo(() => ({ deactivateCurrency, isLoading, error, txHash }), [deactivateCurrency, isLoading, error, txHash]);\n}\n\n","import { useState, useCallback, useMemo } from 'react';\nimport type { Zkp2pClient } from '../../client/Zkp2pClient';\nimport type { Hash } from 'viem';\n\nexport interface UseRemoveCurrencyOptions {\n client: Zkp2pClient | null;\n onSuccess?: (hash: Hash) => void;\n onError?: (error: Error) => void;\n}\n\nexport function useRemoveCurrency({ client, onSuccess, onError }: UseRemoveCurrencyOptions) {\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [txHash, setTxHash] = useState<Hash | null>(null);\n\n const removeCurrency = useCallback(\n async (params: Parameters<Zkp2pClient['removeCurrency']>[0]) => {\n if (!client) {\n const err = new Error('Zkp2pClient is not initialized');\n setError(err);\n onError?.(err);\n return null;\n }\n setIsLoading(true);\n setError(null);\n setTxHash(null);\n try {\n const hash = await client.removeCurrency(params);\n setTxHash(hash);\n onSuccess?.(hash);\n return hash;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(e);\n onError?.(e);\n return null;\n } finally {\n setIsLoading(false);\n }\n },\n [client, onSuccess, onError]\n );\n\n return useMemo(() => ({ removeCurrency, isLoading, error, txHash }), [removeCurrency, isLoading, error, txHash]);\n}\n\n","import { useState, useCallback, useMemo } from 'react';\nimport type { Zkp2pClient } from '../../client/Zkp2pClient';\nimport type { Hash } from 'viem';\n\nexport interface UsePruneExpiredIntentsOptions {\n client: Zkp2pClient | null;\n onSuccess?: (hash: Hash) => void;\n onError?: (error: Error) => void;\n}\n\nexport function usePruneExpiredIntents({ client, onSuccess, onError }: UsePruneExpiredIntentsOptions) {\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [txHash, setTxHash] = useState<Hash | null>(null);\n\n const pruneExpiredIntents = useCallback(\n async (params: Parameters<Zkp2pClient['pruneExpiredIntents']>[0]) => {\n if (!client) {\n const err = new Error('Zkp2pClient is not initialized');\n setError(err);\n onError?.(err);\n return null;\n }\n setIsLoading(true);\n setError(null);\n setTxHash(null);\n try {\n const hash = await client.pruneExpiredIntents(params);\n setTxHash(hash);\n onSuccess?.(hash);\n return hash;\n } catch (err) {\n const e = err instanceof Error ? err : new Error(String(err));\n setError(e);\n onError?.(e);\n return null;\n } finally {\n setIsLoading(false);\n }\n },\n [client, onSuccess, onError]\n );\n\n return useMemo(() => ({ pruneExpiredIntents, isLoading, error, txHash }), [pruneExpiredIntents, isLoading, error, txHash]);\n}\n\n"]}