@zkp2p/sdk 0.12.1 → 0.12.2-rc.1

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.
Files changed (36) hide show
  1. package/README.md +96 -24
  2. package/dist/build-metadata.json +22 -0
  3. package/dist/{chunk-GHQK65J2.mjs → chunk-3J4FPMPW.mjs} +2 -2
  4. package/dist/{chunk-GHQK65J2.mjs.map → chunk-3J4FPMPW.mjs.map} +1 -1
  5. package/dist/chunk-NCX4BO7G.mjs +12 -0
  6. package/dist/chunk-NCX4BO7G.mjs.map +1 -0
  7. package/dist/{chunk-DZQOCRT4.mjs → chunk-QVEW2DTE.mjs} +373 -373
  8. package/dist/{chunk-DZQOCRT4.mjs.map → chunk-QVEW2DTE.mjs.map} +1 -1
  9. package/dist/{chunk-FCOH36IX.mjs → chunk-YA67SM3A.mjs} +2 -2
  10. package/dist/{chunk-FCOH36IX.mjs.map → chunk-YA67SM3A.mjs.map} +1 -1
  11. package/dist/{chunk-ZFBH4HD7.mjs → chunk-ZB22BZLZ.mjs} +2 -2
  12. package/dist/{chunk-ZFBH4HD7.mjs.map → chunk-ZB22BZLZ.mjs.map} +1 -1
  13. package/dist/{currency-MARF3D2J.mjs → currency-XA62DCJH.mjs} +4 -4
  14. package/dist/{currency-MARF3D2J.mjs.map → currency-XA62DCJH.mjs.map} +1 -1
  15. package/dist/index.cjs +2263 -561
  16. package/dist/index.cjs.map +1 -1
  17. package/dist/index.d.mts +34 -9
  18. package/dist/index.d.ts +34 -9
  19. package/dist/index.mjs +1638 -105
  20. package/dist/index.mjs.map +1 -1
  21. package/dist/protocolViewerParsers-KB2FTOE6.mjs +5 -0
  22. package/dist/{protocolViewerParsers-WK2QPJH7.mjs.map → protocolViewerParsers-KB2FTOE6.mjs.map} +1 -1
  23. package/dist/react.cjs +41 -0
  24. package/dist/react.cjs.map +1 -1
  25. package/dist/react.d.mts +15 -3
  26. package/dist/react.d.ts +15 -3
  27. package/dist/react.mjs +44 -4
  28. package/dist/react.mjs.map +1 -1
  29. package/dist/{timeout-YLP3WHZF.mjs → timeout-7UJ6HZ4K.mjs} +4 -4
  30. package/dist/{timeout-YLP3WHZF.mjs.map → timeout-7UJ6HZ4K.mjs.map} +1 -1
  31. package/dist/{vaultUtils-Bc9KwywX.d.mts → vaultUtils-Dla_eG15.d.mts} +206 -43
  32. package/dist/{vaultUtils-Bc9KwywX.d.ts → vaultUtils-Dla_eG15.d.ts} +206 -43
  33. package/package.json +23 -22
  34. package/dist/chunk-J5LGTIGS.mjs +0 -9
  35. package/dist/chunk-J5LGTIGS.mjs.map +0 -1
  36. package/dist/protocolViewerParsers-WK2QPJH7.mjs +0 -5
@@ -241,5 +241,5 @@ var prepareSetDelegationTx = async (client, params, referrer) => {
241
241
  };
242
242
 
243
243
  export { IntentGuardianOperations, ZERO_ADDRESS, ZERO_RATE_MANAGER_ID, asErrorMessage, assertAtomicDelegationSwitchSupport, assertDelegationMethodSupport, classifyDelegationState, classifyIntentGuardianError, getDelegationRoute, isZeroRateManagerId, normalizeRateManagerId, normalizeRegistry, prepareClearDelegationTx, prepareSetDelegationTx };
244
- //# sourceMappingURL=chunk-FCOH36IX.mjs.map
245
- //# sourceMappingURL=chunk-FCOH36IX.mjs.map
244
+ //# sourceMappingURL=chunk-YA67SM3A.mjs.map
245
+ //# sourceMappingURL=chunk-YA67SM3A.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/client/IntentGuardianOperations.ts","../src/react/hooks/vaultUtils.ts"],"names":[],"mappings":"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","file":"chunk-FCOH36IX.mjs","sourcesContent":["import type { Abi } from 'abitype';\nimport type { Address, Hex, PublicClient } from 'viem';\n\nimport type { TxOverrides } from '../types';\n\nexport type IntentGuardianWriteFunction = 'extendIntent';\n\ntype GuardianWriteBase = {\n txOverrides?: TxOverrides;\n};\n\nexport type IntentGuardianWriteParams = {\n extendIntent: GuardianWriteBase & {\n escrow: Address;\n depositId: bigint;\n intentHash: Hex;\n /** Additional lifetime in seconds. */\n additionalTime: bigint;\n /**\n * Payer-confirmed ceiling on cost. The contract reverts with\n * ExtensionCostExceedsMax rather than overcharging, which is what makes a\n * governance fee change between quote and execution safe.\n */\n maxCost: bigint;\n };\n};\n\n/**\n * Live guardian policy. Read immediately before quoting or signing — the fee is\n * owner-governed and may change at any time, so a cached value is only ever a\n * display hint, never a commitment.\n */\nexport type IntentGuardianPolicy = {\n guardian: Address;\n /** Zero means governance has disabled extensions entirely. */\n extensionFeeBpsPerHour: bigint;\n extensionsEnabled: boolean;\n maxExtensionFeeBpsPerHour: bigint;\n /** Escrow-enforced ceiling on total intent lifetime, in seconds. */\n maxTotalIntentLifetime: bigint;\n owner: Address;\n pendingOwner: Address;\n};\n\n/**\n * A quote is a point-in-time read. It is not a reservation: governance can move\n * the fee before the transaction lands, which is why `maxCost` is required.\n */\nexport type IntentGuardianQuote = {\n intentAmount: bigint;\n additionalTime: bigint;\n extensionFeeBpsPerHour: bigint;\n cost: bigint;\n quotedAt: number;\n};\n\n/**\n * Classified guardian failure. The raw contract error name is preserved in\n * `code` so diagnostics stay precise while the UI can branch on the class.\n */\nexport type IntentGuardianErrorCode =\n | 'EXTENSIONS_DISABLED'\n | 'COST_EXCEEDS_MAX'\n | 'FEE_EXCEEDS_INTENT_AMOUNT'\n | 'INTENT_ALREADY_EXPIRED'\n | 'ESCROW_NOT_WHITELISTED'\n | 'ZERO_ADDRESS'\n | 'UNKNOWN';\n\nconst GUARDIAN_ERROR_CODES: Record<string, IntentGuardianErrorCode> = {\n ExtensionsDisabled: 'EXTENSIONS_DISABLED',\n ExtensionCostExceedsMax: 'COST_EXCEEDS_MAX',\n ExtensionFeeExceedsIntentAmount: 'FEE_EXCEEDS_INTENT_AMOUNT',\n IntentAlreadyExpired: 'INTENT_ALREADY_EXPIRED',\n EscrowNotWhitelisted: 'ESCROW_NOT_WHITELISTED',\n ZeroAddress: 'ZERO_ADDRESS',\n};\n\n/**\n * Map a thrown guardian error onto a stable code. Falls back to UNKNOWN rather\n * than guessing, so an unmapped revert is never silently presented as a known\n * condition.\n */\nexport function classifyIntentGuardianError(error: unknown): IntentGuardianErrorCode {\n const haystack =\n error instanceof Error\n ? `${error.name} ${error.message}`\n : typeof error === 'string'\n ? error\n : '';\n for (const [name, code] of Object.entries(GUARDIAN_ERROR_CODES)) {\n if (haystack.includes(name)) return code;\n }\n return 'UNKNOWN';\n}\n\ntype IntentGuardianOperationsConfig = {\n getPublicClient: () => PublicClient;\n getGuardianAddress: () => Address | undefined;\n getGuardianAbi: () => Abi | undefined;\n};\n\nconst ERC20_ALLOWANCE_ABI = [\n {\n type: 'function',\n name: 'allowance',\n stateMutability: 'view',\n inputs: [\n { name: 'owner', type: 'address' },\n { name: 'spender', type: 'address' },\n ],\n outputs: [{ name: '', type: 'uint256' }],\n },\n {\n type: 'function',\n name: 'balanceOf',\n stateMutability: 'view',\n inputs: [{ name: 'account', type: 'address' }],\n outputs: [{ name: '', type: 'uint256' }],\n },\n] as const satisfies Abi;\n\n/**\n * Client surface for the standalone prepaid IntentGuardian.\n *\n * Extension payment is prepaid and non-refundable, and it transfers to the\n * deposit owner rather than the protocol. Any account may pay to extend any\n * live intent — the payer does not have to be the taker.\n */\nexport class IntentGuardianOperations {\n constructor(private readonly config: IntentGuardianOperationsConfig) {}\n\n /** Throws where no guardian is deployed, so unsupported environments fail closed. */\n getContract(): { address: Address; abi: Abi } {\n const address = this.config.getGuardianAddress();\n const abi = this.config.getGuardianAbi();\n if (!address || !abi) {\n throw new Error('IntentGuardian not available for this chain/environment');\n }\n return { address, abi };\n }\n\n /** Non-throwing availability check, for gating UI affordances. */\n isAvailable(): boolean {\n try {\n this.getContract();\n return true;\n } catch {\n return false;\n }\n }\n\n private read<T>(\n functionName: string,\n args: readonly unknown[] = [],\n blockNumber?: bigint,\n ): Promise<T> {\n const { address, abi } = this.getContract();\n return this.config.getPublicClient().readContract({\n address,\n abi,\n functionName,\n args,\n ...(blockNumber !== undefined ? { blockNumber } : {}),\n }) as Promise<T>;\n }\n\n /** Live fee. Never cache this as durable policy — governance can change it. */\n async getExtensionFeeBpsPerHour(): Promise<bigint> {\n return this.read<bigint>('extensionFeeBpsPerHour');\n }\n\n async getOwner(): Promise<Address> {\n return this.read<Address>('owner');\n }\n\n async getPendingOwner(): Promise<Address> {\n return this.read<Address>('pendingOwner');\n }\n\n /** Full live policy in one batch, including whether extensions are enabled at all. */\n async getPolicy(): Promise<IntentGuardianPolicy> {\n const { address } = this.getContract();\n const blockNumber = await this.config.getPublicClient().getBlockNumber();\n const [\n extensionFeeBpsPerHour,\n maxExtensionFeeBpsPerHour,\n maxTotalIntentLifetime,\n owner,\n pendingOwner,\n ] = await Promise.all([\n this.read<bigint>('extensionFeeBpsPerHour', [], blockNumber),\n this.read<bigint>('MAX_EXTENSION_FEE_BPS_PER_HOUR', [], blockNumber),\n this.read<bigint>('MAX_TOTAL_INTENT_LIFETIME', [], blockNumber),\n this.read<Address>('owner', [], blockNumber),\n this.read<Address>('pendingOwner', [], blockNumber),\n ]);\n return {\n guardian: address,\n extensionFeeBpsPerHour,\n extensionsEnabled: extensionFeeBpsPerHour > 0n,\n maxExtensionFeeBpsPerHour,\n maxTotalIntentLifetime,\n owner,\n pendingOwner,\n };\n }\n\n /**\n * Authoritative on-chain quote against fresh state. Prefer this over the\n * package's local pricing helper immediately before signing; the helper is\n * for responsive display only.\n */\n async quoteExtensionCost(params: {\n intentAmount: bigint;\n additionalTime: bigint;\n }): Promise<IntentGuardianQuote> {\n const blockNumber = await this.config.getPublicClient().getBlockNumber();\n const [cost, extensionFeeBpsPerHour] = await Promise.all([\n this.read<bigint>(\n 'quoteExtensionCost',\n [params.intentAmount, params.additionalTime],\n blockNumber,\n ),\n this.read<bigint>('extensionFeeBpsPerHour', [], blockNumber),\n ]);\n return {\n intentAmount: params.intentAmount,\n additionalTime: params.additionalTime,\n extensionFeeBpsPerHour,\n cost,\n quotedAt: Date.now(),\n };\n }\n\n /**\n * Payer's current allowance to the guardian and balance for the deposit\n * token. The guardian transfers the token configured on the target deposit,\n * so callers must not substitute an environment-wide default token.\n */\n async getPayerFunding(params: {\n payer: Address;\n token: Address;\n }): Promise<{ allowance: bigint; balance: bigint }> {\n const { address } = this.getContract();\n const publicClient = this.config.getPublicClient();\n const [allowance, balance] = await Promise.all([\n publicClient.readContract({\n address: params.token,\n abi: ERC20_ALLOWANCE_ABI,\n functionName: 'allowance',\n args: [params.payer, address],\n }) as Promise<bigint>,\n publicClient.readContract({\n address: params.token,\n abi: ERC20_ALLOWANCE_ABI,\n functionName: 'balanceOf',\n args: [params.payer],\n }) as Promise<bigint>,\n ]);\n return { allowance, balance };\n }\n\n /**\n * Whether the payer can fund an extension at `cost`, and what is missing.\n * Callers should re-check against a fresh quote rather than a displayed one.\n */\n async checkPayerReadiness(params: {\n payer: Address;\n token: Address;\n cost: bigint;\n }): Promise<{ ready: boolean; needsApproval: boolean; insufficientBalance: boolean }> {\n const { allowance, balance } = await this.getPayerFunding({\n payer: params.payer,\n token: params.token,\n });\n const needsApproval = allowance < params.cost;\n const insufficientBalance = balance < params.cost;\n return {\n ready: !needsApproval && !insufficientBalance,\n needsApproval,\n insufficientBalance,\n };\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"]}
1
+ {"version":3,"sources":["../src/client/IntentGuardianOperations.ts","../src/react/hooks/vaultUtils.ts"],"names":[],"mappings":";AAqEA,IAAM,oBAAA,GAAgE;AAAA,EACpE,kBAAA,EAAoB,qBAAA;AAAA,EACpB,uBAAA,EAAyB,kBAAA;AAAA,EACzB,+BAAA,EAAiC,2BAAA;AAAA,EACjC,oBAAA,EAAsB,wBAAA;AAAA,EACtB,oBAAA,EAAsB,wBAAA;AAAA,EACtB,WAAA,EAAa;AACf,CAAA;AAOO,SAAS,4BAA4B,KAAA,EAAyC;AACnF,EAAA,MAAM,QAAA,GACJ,KAAA,YAAiB,KAAA,GACb,CAAA,EAAG,KAAA,CAAM,IAAI,CAAA,CAAA,EAAI,KAAA,CAAM,OAAO,CAAA,CAAA,GAC9B,OAAO,KAAA,KAAU,WACf,KAAA,GACA,EAAA;AACR,EAAA,KAAA,MAAW,CAAC,IAAA,EAAM,IAAI,KAAK,MAAA,CAAO,OAAA,CAAQ,oBAAoB,CAAA,EAAG;AAC/D,IAAA,IAAI,QAAA,CAAS,QAAA,CAAS,IAAI,CAAA,EAAG,OAAO,IAAA;AAAA,EACtC;AACA,EAAA,OAAO,SAAA;AACT;AAQA,IAAM,mBAAA,GAAsB;AAAA,EAC1B;AAAA,IACE,IAAA,EAAM,UAAA;AAAA,IACN,IAAA,EAAM,WAAA;AAAA,IACN,eAAA,EAAiB,MAAA;AAAA,IACjB,MAAA,EAAQ;AAAA,MACN,EAAE,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,SAAA,EAAU;AAAA,MACjC,EAAE,IAAA,EAAM,SAAA,EAAW,IAAA,EAAM,SAAA;AAAU,KACrC;AAAA,IACA,SAAS,CAAC,EAAE,MAAM,EAAA,EAAI,IAAA,EAAM,WAAW;AAAA,GACzC;AAAA,EACA;AAAA,IACE,IAAA,EAAM,UAAA;AAAA,IACN,IAAA,EAAM,WAAA;AAAA,IACN,eAAA,EAAiB,MAAA;AAAA,IACjB,QAAQ,CAAC,EAAE,MAAM,SAAA,EAAW,IAAA,EAAM,WAAW,CAAA;AAAA,IAC7C,SAAS,CAAC,EAAE,MAAM,EAAA,EAAI,IAAA,EAAM,WAAW;AAAA;AAE3C,CAAA;AASO,IAAM,2BAAN,MAA+B;AAAA,EACpC,YAA6B,MAAA,EAAwC;AAAxC,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAAA,EAAyC;AAAA;AAAA,EAGtE,WAAA,GAA8C;AAC5C,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,MAAA,CAAO,kBAAA,EAAmB;AAC/C,IAAA,MAAM,GAAA,GAAM,IAAA,CAAK,MAAA,CAAO,cAAA,EAAe;AACvC,IAAA,IAAI,CAAC,OAAA,IAAW,CAAC,GAAA,EAAK;AACpB,MAAA,MAAM,IAAI,MAAM,yDAAyD,CAAA;AAAA,IAC3E;AACA,IAAA,OAAO,EAAE,SAAS,GAAA,EAAI;AAAA,EACxB;AAAA;AAAA,EAGA,WAAA,GAAuB;AACrB,IAAA,IAAI;AACF,MAAA,IAAA,CAAK,WAAA,EAAY;AACjB,MAAA,OAAO,IAAA;AAAA,IACT,CAAA,CAAA,MAAQ;AACN,MAAA,OAAO,KAAA;AAAA,IACT;AAAA,EACF;AAAA,EAEQ,IAAA,CACN,YAAA,EACA,IAAA,GAA2B,IAC3B,WAAA,EACY;AACZ,IAAA,MAAM,EAAE,OAAA,EAAS,GAAA,EAAI,GAAI,KAAK,WAAA,EAAY;AAC1C,IAAA,OAAO,IAAA,CAAK,MAAA,CAAO,eAAA,EAAgB,CAAE,YAAA,CAAa;AAAA,MAChD,OAAA;AAAA,MACA,GAAA;AAAA,MACA,YAAA;AAAA,MACA,IAAA;AAAA,MACA,GAAI,WAAA,KAAgB,MAAA,GAAY,EAAE,WAAA,KAAgB;AAAC,KACpD,CAAA;AAAA,EACH;AAAA;AAAA,EAGA,MAAM,yBAAA,GAA6C;AACjD,IAAA,OAAO,IAAA,CAAK,KAAa,wBAAwB,CAAA;AAAA,EACnD;AAAA,EAEA,MAAM,QAAA,GAA6B;AACjC,IAAA,OAAO,IAAA,CAAK,KAAc,OAAO,CAAA;AAAA,EACnC;AAAA,EAEA,MAAM,eAAA,GAAoC;AACxC,IAAA,OAAO,IAAA,CAAK,KAAc,cAAc,CAAA;AAAA,EAC1C;AAAA;AAAA,EAGA,MAAM,SAAA,GAA2C;AAC/C,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,IAAA,CAAK,WAAA,EAAY;AACrC,IAAA,MAAM,cAAc,MAAM,IAAA,CAAK,MAAA,CAAO,eAAA,GAAkB,cAAA,EAAe;AACvE,IAAA,MAAM;AAAA,MACJ,sBAAA;AAAA,MACA,yBAAA;AAAA,MACA,sBAAA;AAAA,MACA,KAAA;AAAA,MACA;AAAA,KACF,GAAI,MAAM,OAAA,CAAQ,GAAA,CAAI;AAAA,MACpB,IAAA,CAAK,IAAA,CAAa,wBAAA,EAA0B,IAAI,WAAW,CAAA;AAAA,MAC3D,IAAA,CAAK,IAAA,CAAa,gCAAA,EAAkC,IAAI,WAAW,CAAA;AAAA,MACnE,IAAA,CAAK,IAAA,CAAa,2BAAA,EAA6B,IAAI,WAAW,CAAA;AAAA,MAC9D,IAAA,CAAK,IAAA,CAAc,OAAA,EAAS,IAAI,WAAW,CAAA;AAAA,MAC3C,IAAA,CAAK,IAAA,CAAc,cAAA,EAAgB,IAAI,WAAW;AAAA,KACnD,CAAA;AACD,IAAA,OAAO;AAAA,MACL,QAAA,EAAU,OAAA;AAAA,MACV,sBAAA;AAAA,MACA,mBAAmB,sBAAA,GAAyB,EAAA;AAAA,MAC5C,yBAAA;AAAA,MACA,sBAAA;AAAA,MACA,KAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,mBAAmB,MAAA,EAGQ;AAC/B,IAAA,MAAM,cAAc,MAAM,IAAA,CAAK,MAAA,CAAO,eAAA,GAAkB,cAAA,EAAe;AACvE,IAAA,MAAM,CAAC,IAAA,EAAM,sBAAsB,CAAA,GAAI,MAAM,QAAQ,GAAA,CAAI;AAAA,MACvD,IAAA,CAAK,IAAA;AAAA,QACH,oBAAA;AAAA,QACA,CAAC,MAAA,CAAO,YAAA,EAAc,MAAA,CAAO,cAAc,CAAA;AAAA,QAC3C;AAAA,OACF;AAAA,MACA,IAAA,CAAK,IAAA,CAAa,wBAAA,EAA0B,IAAI,WAAW;AAAA,KAC5D,CAAA;AACD,IAAA,OAAO;AAAA,MACL,cAAc,MAAA,CAAO,YAAA;AAAA,MACrB,gBAAgB,MAAA,CAAO,cAAA;AAAA,MACvB,sBAAA;AAAA,MACA,IAAA;AAAA,MACA,QAAA,EAAU,KAAK,GAAA;AAAI,KACrB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,gBAAgB,MAAA,EAG8B;AAClD,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,IAAA,CAAK,WAAA,EAAY;AACrC,IAAA,MAAM,YAAA,GAAe,IAAA,CAAK,MAAA,CAAO,eAAA,EAAgB;AACjD,IAAA,MAAM,CAAC,SAAA,EAAW,OAAO,CAAA,GAAI,MAAM,QAAQ,GAAA,CAAI;AAAA,MAC7C,aAAa,YAAA,CAAa;AAAA,QACxB,SAAS,MAAA,CAAO,KAAA;AAAA,QAChB,GAAA,EAAK,mBAAA;AAAA,QACL,YAAA,EAAc,WAAA;AAAA,QACd,IAAA,EAAM,CAAC,MAAA,CAAO,KAAA,EAAO,OAAO;AAAA,OAC7B,CAAA;AAAA,MACD,aAAa,YAAA,CAAa;AAAA,QACxB,SAAS,MAAA,CAAO,KAAA;AAAA,QAChB,GAAA,EAAK,mBAAA;AAAA,QACL,YAAA,EAAc,WAAA;AAAA,QACd,IAAA,EAAM,CAAC,MAAA,CAAO,KAAK;AAAA,OACpB;AAAA,KACF,CAAA;AACD,IAAA,OAAO,EAAE,WAAW,OAAA,EAAQ;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,oBAAoB,MAAA,EAI4D;AACpF,IAAA,MAAM,EAAE,SAAA,EAAW,OAAA,EAAQ,GAAI,MAAM,KAAK,eAAA,CAAgB;AAAA,MACxD,OAAO,MAAA,CAAO,KAAA;AAAA,MACd,OAAO,MAAA,CAAO;AAAA,KACf,CAAA;AACD,IAAA,MAAM,aAAA,GAAgB,YAAY,MAAA,CAAO,IAAA;AACzC,IAAA,MAAM,mBAAA,GAAsB,UAAU,MAAA,CAAO,IAAA;AAC7C,IAAA,OAAO;AAAA,MACL,KAAA,EAAO,CAAC,aAAA,IAAiB,CAAC,mBAAA;AAAA,MAC1B,aAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AACF;;;ACrRO,IAAM,YAAA,GAAe;AACrB,IAAM,oBAAA,GACX;AAMK,IAAM,sBAAA,GAAyB,CAAC,KAAA,KAAA,CACpC,KAAA,IAAS,sBAAsB,WAAA;AAE3B,IAAM,iBAAA,GAAoB,CAAC,KAAA,KAAA,CAC/B,KAAA,IAAS,cAAc,WAAA;AAEnB,IAAM,mBAAA,GAAsB,CAAC,KAAA,KAAmC;AACrE,EAAA,IAAI,CAAC,OAAO,OAAO,IAAA;AACnB,EAAA,MAAM,UAAA,GAAa,MAAM,WAAA,EAAY;AACrC,EAAA,OAAO,UAAA,KAAe,gBAAgB,UAAA,KAAe,oBAAA;AACvD;AAMO,IAAM,cAAA,GAAiB,CAAC,KAAA,KAA2B;AACxD,EAAA,IAAI,CAAC,OAAO,OAAO,eAAA;AACnB,EAAA,IAAI,KAAA,YAAiB,KAAA,EAAO,OAAO,KAAA,CAAM,OAAA;AACzC,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,EAAU,OAAO,KAAA;AAEtC,EAAA,MAAM,MAAA,GAAS,KAAA;AACf,EAAA,IAAI,OAAO,MAAA,CAAO,YAAA,KAAiB,QAAA,SAAiB,MAAA,CAAO,YAAA;AAC3D,EAAA,IAAI,OAAO,MAAA,CAAO,OAAA,KAAY,QAAA,SAAiB,MAAA,CAAO,OAAA;AACtD,EAAA,IAAI,OAAO,MAAA,CAAO,OAAA,KAAY,QAAA,SAAiB,MAAA,CAAO,OAAA;AAEtD,EAAA,IAAI;AACF,IAAA,OAAO,IAAA,CAAK,UAAU,KAAK,CAAA;AAAA,EAC7B,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,OAAO,KAAK,CAAA;AAAA,EACrB;AACF;AAiBO,IAAM,uBAAA,GAA0B,CACrC,oBAAA,EACA,eAAA,EACA,qBACA,cAAA,KACoB;AACpB,EAAA,IAAI,mBAAA,CAAoB,oBAAoB,CAAA,EAAG;AAC7C,IAAA,OAAO,eAAA;AAAA,EACT;AAEA,EAAA,MAAM,iBAAA,GAAoB,uBAAuB,oBAAoB,CAAA;AACrE,EAAA,MAAM,gBAAA,GAAmB,oBAAoB,WAAA,EAAY;AACzD,EAAA,MAAM,yBAAA,GAA4B,kBAAkB,eAAe,CAAA;AACnE,EAAA,MAAM,wBAAA,GAA2B,cAAA,GAAiB,cAAA,CAAe,WAAA,EAAY,GAAI,EAAA;AAEjF,EAAA,MAAM,WAAW,iBAAA,KAAsB,gBAAA;AACvC,EAAA,MAAM,eAAA,GAAkB,wBAAA,GACpB,yBAAA,KAA8B,wBAAA,GAC9B,IAAA;AAEJ,EAAA,IAAI,YAAY,eAAA,EAAiB;AAC/B,IAAA,OAAO,gBAAA;AAAA,EACT;AAEA,EAAA,OAAO,qBAAA;AACT;AAEO,IAAM,mCAAA,GAAsC,CACjD,cAAA,EACA,QAAA,KACS;AACT,EAAA,IAAI,CAAC,kBAAkB,QAAA,EAAU;AACjC,EAAA,MAAM,IAAI,KAAA;AAAA,IACR;AAAA,GACF;AACF;AAQO,IAAM,kBAAA,GAAqB,CAAC,OAAA,EAAkB,OAAA,KAAsC;AAMpF,IAAM,6BAAA,GAAgC,CAC3C,MAAA,EACA,MAAA,EACA,MAAA,KACS;AACT,EAAA,MAAM,MAAA,GAAS,MAAA,KAAW,KAAA,GAAQ,gBAAA,GAAmB,kBAAA;AACrD,EAAA,IAAI,MAAA,GAAS,MAAM,CAAA,EAAG,OAAA,EAAS;AAC/B,EAAA,MAAM,IAAI,KAAA,CAAM,CAAA,wBAAA,EAA2B,MAAM,CAAA,QAAA,CAAU,CAAA;AAC7D;AAsCO,IAAM,wBAAA,GAA2B,OAEtC,MAAA,EACA,MAAA,EACA,QAAA,KACiC;AACjC,EAAA,MAAM,KAAA,GAAQ,kBAAA,CAAmB,MAAA,EAAQ,MAAA,CAAO,MAAM,CAAA;AACtD,EAAA,6BAAA,CAA8B,MAAA,EAAQ,OAAO,OAAO,CAAA;AACpD,EAAA,OAAO,MAAA,CAAO,iBAAiB,OAAA,CAAQ;AAAA,IACrC,eAAe,MAAA,CAAO,MAAA;AAAA,IACtB,WAAW,MAAA,CAAO,SAAA;AAAA,IAClB,GAAI,WAAW,EAAE,WAAA,EAAa,EAAE,QAAA,EAAS,KAAM;AAAC,GACjD,CAAA;AACH;AAEO,IAAM,sBAAA,GAAyB,OAEpC,MAAA,EACA,MAAA,EAMA,QAAA,KACiC;AACjC,EAAA,MAAM,KAAA,GAAQ,kBAAA,CAAmB,MAAA,EAAQ,MAAA,CAAO,MAAM,CAAA;AACtD,EAAA,6BAAA,CAA8B,MAAA,EAAQ,OAAO,KAAK,CAAA;AAClD,EAAA,OAAO,MAAA,CAAO,eAAe,OAAA,CAAQ;AAAA,IACnC,eAAe,MAAA,CAAO,MAAA;AAAA,IACtB,WAAW,MAAA,CAAO,SAAA;AAAA,IAClB,oBAAoB,MAAA,CAAO,QAAA;AAAA,IAC3B,eAAe,MAAA,CAAO,aAAA;AAAA,IACtB,GAAI,WAAW,EAAE,WAAA,EAAa,EAAE,QAAA,EAAS,KAAM;AAAC,GACjD,CAAA;AACH","file":"chunk-YA67SM3A.mjs","sourcesContent":["import type { Abi } from 'abitype';\nimport type { Address, Hex, PublicClient } from 'viem';\n\nimport type { TxOverrides } from '../types';\n\nexport type IntentGuardianWriteFunction = 'extendIntent';\n\ntype GuardianWriteBase = {\n txOverrides?: TxOverrides;\n};\n\nexport type IntentGuardianWriteParams = {\n extendIntent: GuardianWriteBase & {\n escrow: Address;\n depositId: bigint;\n intentHash: Hex;\n /** Additional lifetime in seconds. */\n additionalTime: bigint;\n /**\n * Payer-confirmed ceiling on cost. The contract reverts with\n * ExtensionCostExceedsMax rather than overcharging, which is what makes a\n * governance fee change between quote and execution safe.\n */\n maxCost: bigint;\n };\n};\n\n/**\n * Live guardian policy. Read immediately before quoting or signing — the fee is\n * owner-governed and may change at any time, so a cached value is only ever a\n * display hint, never a commitment.\n */\nexport type IntentGuardianPolicy = {\n guardian: Address;\n /** Zero means governance has disabled extensions entirely. */\n extensionFeeBpsPerHour: bigint;\n extensionsEnabled: boolean;\n maxExtensionFeeBpsPerHour: bigint;\n /** Escrow-enforced ceiling on total intent lifetime, in seconds. */\n maxTotalIntentLifetime: bigint;\n owner: Address;\n pendingOwner: Address;\n};\n\n/**\n * A quote is a point-in-time read. It is not a reservation: governance can move\n * the fee before the transaction lands, which is why `maxCost` is required.\n */\nexport type IntentGuardianQuote = {\n intentAmount: bigint;\n additionalTime: bigint;\n extensionFeeBpsPerHour: bigint;\n cost: bigint;\n quotedAt: number;\n};\n\n/**\n * Classified guardian failure. The raw contract error name is preserved in\n * `code` so diagnostics stay precise while the UI can branch on the class.\n */\nexport type IntentGuardianErrorCode =\n | 'EXTENSIONS_DISABLED'\n | 'COST_EXCEEDS_MAX'\n | 'FEE_EXCEEDS_INTENT_AMOUNT'\n | 'INTENT_ALREADY_EXPIRED'\n | 'ESCROW_NOT_WHITELISTED'\n | 'ZERO_ADDRESS'\n | 'UNKNOWN';\n\nconst GUARDIAN_ERROR_CODES: Record<string, IntentGuardianErrorCode> = {\n ExtensionsDisabled: 'EXTENSIONS_DISABLED',\n ExtensionCostExceedsMax: 'COST_EXCEEDS_MAX',\n ExtensionFeeExceedsIntentAmount: 'FEE_EXCEEDS_INTENT_AMOUNT',\n IntentAlreadyExpired: 'INTENT_ALREADY_EXPIRED',\n EscrowNotWhitelisted: 'ESCROW_NOT_WHITELISTED',\n ZeroAddress: 'ZERO_ADDRESS',\n};\n\n/**\n * Map a thrown guardian error onto a stable code. Falls back to UNKNOWN rather\n * than guessing, so an unmapped revert is never silently presented as a known\n * condition.\n */\nexport function classifyIntentGuardianError(error: unknown): IntentGuardianErrorCode {\n const haystack =\n error instanceof Error\n ? `${error.name} ${error.message}`\n : typeof error === 'string'\n ? error\n : '';\n for (const [name, code] of Object.entries(GUARDIAN_ERROR_CODES)) {\n if (haystack.includes(name)) return code;\n }\n return 'UNKNOWN';\n}\n\ntype IntentGuardianOperationsConfig = {\n getPublicClient: () => PublicClient;\n getGuardianAddress: () => Address | undefined;\n getGuardianAbi: () => Abi | undefined;\n};\n\nconst ERC20_ALLOWANCE_ABI = [\n {\n type: 'function',\n name: 'allowance',\n stateMutability: 'view',\n inputs: [\n { name: 'owner', type: 'address' },\n { name: 'spender', type: 'address' },\n ],\n outputs: [{ name: '', type: 'uint256' }],\n },\n {\n type: 'function',\n name: 'balanceOf',\n stateMutability: 'view',\n inputs: [{ name: 'account', type: 'address' }],\n outputs: [{ name: '', type: 'uint256' }],\n },\n] as const satisfies Abi;\n\n/**\n * Client surface for the standalone prepaid IntentGuardian.\n *\n * Extension payment is prepaid and non-refundable, and it transfers to the\n * deposit owner rather than the protocol. Any account may pay to extend any\n * live intent — the payer does not have to be the taker.\n */\nexport class IntentGuardianOperations {\n constructor(private readonly config: IntentGuardianOperationsConfig) {}\n\n /** Throws where no guardian is deployed, so unsupported environments fail closed. */\n getContract(): { address: Address; abi: Abi } {\n const address = this.config.getGuardianAddress();\n const abi = this.config.getGuardianAbi();\n if (!address || !abi) {\n throw new Error('IntentGuardian not available for this chain/environment');\n }\n return { address, abi };\n }\n\n /** Non-throwing availability check, for gating UI affordances. */\n isAvailable(): boolean {\n try {\n this.getContract();\n return true;\n } catch {\n return false;\n }\n }\n\n private read<T>(\n functionName: string,\n args: readonly unknown[] = [],\n blockNumber?: bigint,\n ): Promise<T> {\n const { address, abi } = this.getContract();\n return this.config.getPublicClient().readContract({\n address,\n abi,\n functionName,\n args,\n ...(blockNumber !== undefined ? { blockNumber } : {}),\n }) as Promise<T>;\n }\n\n /** Live fee. Never cache this as durable policy — governance can change it. */\n async getExtensionFeeBpsPerHour(): Promise<bigint> {\n return this.read<bigint>('extensionFeeBpsPerHour');\n }\n\n async getOwner(): Promise<Address> {\n return this.read<Address>('owner');\n }\n\n async getPendingOwner(): Promise<Address> {\n return this.read<Address>('pendingOwner');\n }\n\n /** Full live policy in one batch, including whether extensions are enabled at all. */\n async getPolicy(): Promise<IntentGuardianPolicy> {\n const { address } = this.getContract();\n const blockNumber = await this.config.getPublicClient().getBlockNumber();\n const [\n extensionFeeBpsPerHour,\n maxExtensionFeeBpsPerHour,\n maxTotalIntentLifetime,\n owner,\n pendingOwner,\n ] = await Promise.all([\n this.read<bigint>('extensionFeeBpsPerHour', [], blockNumber),\n this.read<bigint>('MAX_EXTENSION_FEE_BPS_PER_HOUR', [], blockNumber),\n this.read<bigint>('MAX_TOTAL_INTENT_LIFETIME', [], blockNumber),\n this.read<Address>('owner', [], blockNumber),\n this.read<Address>('pendingOwner', [], blockNumber),\n ]);\n return {\n guardian: address,\n extensionFeeBpsPerHour,\n extensionsEnabled: extensionFeeBpsPerHour > 0n,\n maxExtensionFeeBpsPerHour,\n maxTotalIntentLifetime,\n owner,\n pendingOwner,\n };\n }\n\n /**\n * Authoritative on-chain quote against fresh state. Prefer this over the\n * package's local pricing helper immediately before signing; the helper is\n * for responsive display only.\n */\n async quoteExtensionCost(params: {\n intentAmount: bigint;\n additionalTime: bigint;\n }): Promise<IntentGuardianQuote> {\n const blockNumber = await this.config.getPublicClient().getBlockNumber();\n const [cost, extensionFeeBpsPerHour] = await Promise.all([\n this.read<bigint>(\n 'quoteExtensionCost',\n [params.intentAmount, params.additionalTime],\n blockNumber,\n ),\n this.read<bigint>('extensionFeeBpsPerHour', [], blockNumber),\n ]);\n return {\n intentAmount: params.intentAmount,\n additionalTime: params.additionalTime,\n extensionFeeBpsPerHour,\n cost,\n quotedAt: Date.now(),\n };\n }\n\n /**\n * Payer's current allowance to the guardian and balance for the deposit\n * token. The guardian transfers the token configured on the target deposit,\n * so callers must not substitute an environment-wide default token.\n */\n async getPayerFunding(params: {\n payer: Address;\n token: Address;\n }): Promise<{ allowance: bigint; balance: bigint }> {\n const { address } = this.getContract();\n const publicClient = this.config.getPublicClient();\n const [allowance, balance] = await Promise.all([\n publicClient.readContract({\n address: params.token,\n abi: ERC20_ALLOWANCE_ABI,\n functionName: 'allowance',\n args: [params.payer, address],\n }) as Promise<bigint>,\n publicClient.readContract({\n address: params.token,\n abi: ERC20_ALLOWANCE_ABI,\n functionName: 'balanceOf',\n args: [params.payer],\n }) as Promise<bigint>,\n ]);\n return { allowance, balance };\n }\n\n /**\n * Whether the payer can fund an extension at `cost`, and what is missing.\n * Callers should re-check against a fresh quote rather than a displayed one.\n */\n async checkPayerReadiness(params: {\n payer: Address;\n token: Address;\n cost: bigint;\n }): Promise<{ ready: boolean; needsApproval: boolean; insufficientBalance: boolean }> {\n const { allowance, balance } = await this.getPayerFunding({\n payer: params.payer,\n token: params.token,\n });\n const needsApproval = allowance < params.cost;\n const insufficientBalance = balance < params.cost;\n return {\n ready: !needsApproval && !insufficientBalance,\n needsApproval,\n insufficientBalance,\n };\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"]}
@@ -377,5 +377,5 @@ function isSupportedCurrencyHash(hash) {
377
377
  }
378
378
 
379
379
  export { Currency, currencyInfo, currencyKeccak256, getCurrencyCodeFromHash, getCurrencyInfoFromCountryCode, getCurrencyInfoFromHash, isSupportedCurrencyHash, mapConversionRatesToOnchain, mapConversionRatesToOnchainMinRate };
380
- //# sourceMappingURL=chunk-ZFBH4HD7.mjs.map
381
- //# sourceMappingURL=chunk-ZFBH4HD7.mjs.map
380
+ //# sourceMappingURL=chunk-ZB22BZLZ.mjs.map
381
+ //# sourceMappingURL=chunk-ZB22BZLZ.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/utils/currencyKeccak256.ts","../src/utils/currency.ts"],"names":["viemKeccak256"],"mappings":";;;AAEO,IAAM,iBAAA,GAAoB,CAAC,WAAA,KAAgC;AAChE,EAAA,MAAM,KAAA,GAAQ,IAAI,WAAA,EAAY,CAAE,OAAO,WAAW,CAAA;AAClD,EAAA,OAAOA,UAAc,KAAK,CAAA;AAC5B;;;ACYO,IAAM,QAAA,GAAW;AAAA,EACtB,GAAA,EAAK,KAAA;AAAA,EACL,GAAA,EAAK,KAAA;AAAA,EACL,GAAA,EAAK,KAAA;AAAA,EACL,GAAA,EAAK,KAAA;AAAA,EACL,GAAA,EAAK,KAAA;AAAA,EACL,GAAA,EAAK,KAAA;AAAA,EACL,GAAA,EAAK,KAAA;AAAA,EACL,GAAA,EAAK,KAAA;AAAA,EACL,GAAA,EAAK,KAAA;AAAA,EACL,GAAA,EAAK,KAAA;AAAA,EACL,GAAA,EAAK,KAAA;AAAA,EACL,GAAA,EAAK,KAAA;AAAA,EACL,GAAA,EAAK,KAAA;AAAA,EACL,GAAA,EAAK,KAAA;AAAA,EACL,GAAA,EAAK,KAAA;AAAA,EACL,GAAA,EAAK,KAAA;AAAA,EACL,GAAA,EAAK,KAAA;AAAA,EACL,GAAA,EAAK,KAAA;AAAA,EACL,GAAA,EAAK,KAAA;AAAA,EACL,GAAA,EAAK,KAAA;AAAA,EACL,GAAA,EAAK,KAAA;AAAA,EACL,GAAA,EAAK,KAAA;AAAA,EACL,GAAA,EAAK,KAAA;AAAA,EACL,GAAA,EAAK,KAAA;AAAA,EACL,GAAA,EAAK,KAAA;AAAA,EACL,GAAA,EAAK,KAAA;AAAA,EACL,GAAA,EAAK,KAAA;AAAA,EACL,GAAA,EAAK,KAAA;AAAA,EACL,GAAA,EAAK,KAAA;AAAA,EACL,GAAA,EAAK,KAAA;AAAA,EACL,GAAA,EAAK,KAAA;AAAA,EACL,GAAA,EAAK,KAAA;AAAA,EACL,GAAA,EAAK,KAAA;AAAA,EACL,GAAA,EAAK;AACP;AAmCO,IAAM,YAAA,GAAmD;AAAA,EAC9D,GAAA,EAAK;AAAA,IACH,QAAA,EAAU,KAAA;AAAA,IACV,YAAA,EAAc,KAAA;AAAA,IACd,YAAA,EAAc,6BAAA;AAAA,IACd,gBAAA,EAAkB,kBAAkB,KAAK,CAAA;AAAA,IACzC,cAAA,EAAgB,eAAA;AAAA,IAChB,WAAA,EAAa;AAAA,GACf;AAAA,EACA,GAAA,EAAK;AAAA,IACH,QAAA,EAAU,KAAA;AAAA,IACV,YAAA,EAAc,KAAA;AAAA,IACd,YAAA,EAAc,gBAAA;AAAA,IACd,gBAAA,EAAkB,kBAAkB,KAAK,CAAA;AAAA,IACzC,cAAA,EAAgB,GAAA;AAAA,IAChB,WAAA,EAAa;AAAA,GACf;AAAA,EACA,GAAA,EAAK;AAAA,IACH,QAAA,EAAU,KAAA;AAAA,IACV,YAAA,EAAc,KAAA;AAAA,IACd,YAAA,EAAc,mBAAA;AAAA,IACd,gBAAA,EAAkB,kBAAkB,KAAK,CAAA;AAAA,IACzC,cAAA,EAAgB,IAAA;AAAA,IAChB,WAAA,EAAa;AAAA,GACf;AAAA,EACA,GAAA,EAAK;AAAA,IACH,QAAA,EAAU,KAAA;AAAA,IACV,YAAA,EAAc,KAAA;AAAA,IACd,YAAA,EAAc,gBAAA;AAAA,IACd,gBAAA,EAAkB,kBAAkB,KAAK,CAAA;AAAA,IACzC,cAAA,EAAgB,IAAA;AAAA,IAChB,WAAA,EAAa;AAAA,GACf;AAAA,EACA,GAAA,EAAK;AAAA,IACH,QAAA,EAAU,KAAA;AAAA,IACV,YAAA,EAAc,KAAA;AAAA,IACd,YAAA,EAAc,iBAAA;AAAA,IACd,gBAAA,EAAkB,kBAAkB,KAAK,CAAA;AAAA,IACzC,cAAA,EAAgB,IAAA;AAAA,IAChB,WAAA,EAAa;AAAA,GACf;AAAA,EACA,GAAA,EAAK;AAAA,IACH,QAAA,EAAU,KAAA;AAAA,IACV,YAAA,EAAc,KAAA;AAAA,IACd,YAAA,EAAc,aAAA;AAAA,IACd,gBAAA,EAAkB,kBAAkB,KAAK,CAAA;AAAA,IACzC,cAAA,EAAgB,IAAA;AAAA,IAChB,WAAA,EAAa;AAAA,GACf;AAAA,EACA,GAAA,EAAK;AAAA,IACH,QAAA,EAAU,KAAA;AAAA,IACV,YAAA,EAAc,KAAA;AAAA,IACd,YAAA,EAAc,cAAA;AAAA,IACd,gBAAA,EAAkB,kBAAkB,KAAK,CAAA;AAAA,IACzC,cAAA,EAAgB,MAAA;AAAA,IAChB,WAAA,EAAa;AAAA,GACf;AAAA,EACA,GAAA,EAAK;AAAA,IACH,QAAA,EAAU,KAAA;AAAA,IACV,YAAA,EAAc,KAAA;AAAA,IACd,YAAA,EAAc,cAAA;AAAA,IACd,gBAAA,EAAkB,kBAAkB,KAAK,CAAA;AAAA,IACzC,cAAA,EAAgB,SAAA;AAAA,IAChB,WAAA,EAAa;AAAA,GACf;AAAA,EACA,GAAA,EAAK;AAAA,IACH,QAAA,EAAU,KAAA;AAAA,IACV,YAAA,EAAc,KAAA;AAAA,IACd,YAAA,EAAc,cAAA;AAAA,IACd,gBAAA,EAAkB,kBAAkB,KAAK,CAAA;AAAA,IACzC,cAAA,EAAgB,IAAA;AAAA,IAChB,WAAA,EAAa;AAAA,GACf;AAAA,EACA,GAAA,EAAK;AAAA,IACH,QAAA,EAAU,KAAA;AAAA,IACV,YAAA,EAAc,KAAA;AAAA,IACd,YAAA,EAAc,MAAA;AAAA,IACd,gBAAA,EAAkB,kBAAkB,KAAK,CAAA;AAAA,IACzC,cAAA,EAAgB,QAAA;AAAA,IAChB,WAAA,EAAa;AAAA,GACf;AAAA,EACA,GAAA,EAAK;AAAA,IACH,QAAA,EAAU,KAAA;AAAA,IACV,YAAA,EAAc,KAAA;AAAA,IACd,YAAA,EAAc,eAAA;AAAA,IACd,gBAAA,EAAkB,kBAAkB,KAAK,CAAA;AAAA,IACzC,cAAA,EAAgB,MAAA;AAAA,IAChB,WAAA,EAAa;AAAA,GACf;AAAA,EACA,GAAA,EAAK;AAAA,IACH,QAAA,EAAU,KAAA;AAAA,IACV,YAAA,EAAc,KAAA;AAAA,IACd,YAAA,EAAc,kBAAA;AAAA,IACd,gBAAA,EAAkB,kBAAkB,KAAK,CAAA;AAAA,IACzC,cAAA,EAAgB,KAAA;AAAA,IAChB,WAAA,EAAa;AAAA,GACf;AAAA,EACA,GAAA,EAAK;AAAA,IACH,QAAA,EAAU,KAAA;AAAA,IACV,YAAA,EAAc,KAAA;AAAA,IACd,YAAA,EAAc,kBAAA;AAAA,IACd,gBAAA,EAAkB,kBAAkB,KAAK,CAAA;AAAA,IACzC,cAAA,EAAgB,IAAA;AAAA,IAChB,WAAA,EAAa;AAAA,GACf;AAAA,EACA,GAAA,EAAK;AAAA,IACH,QAAA,EAAU,KAAA;AAAA,IACV,YAAA,EAAc,KAAA;AAAA,IACd,YAAA,EAAc,mBAAA;AAAA,IACd,gBAAA,EAAkB,kBAAkB,KAAK,CAAA;AAAA,IACzC,cAAA,EAAgB,IAAA;AAAA,IAChB,WAAA,EAAa;AAAA,GACf;AAAA,EACA,GAAA,EAAK;AAAA,IACH,QAAA,EAAU,KAAA;AAAA,IACV,YAAA,EAAc,KAAA;AAAA,IACd,YAAA,EAAc,oBAAA;AAAA,IACd,gBAAA,EAAkB,kBAAkB,KAAK,CAAA;AAAA,IACzC,cAAA,EAAgB,QAAA;AAAA,IAChB,WAAA,EAAa;AAAA,GACf;AAAA,EACA,GAAA,EAAK;AAAA,IACH,QAAA,EAAU,KAAA;AAAA,IACV,YAAA,EAAc,KAAA;AAAA,IACd,YAAA,EAAc,cAAA;AAAA,IACd,gBAAA,EAAkB,kBAAkB,KAAK,CAAA;AAAA,IACzC,cAAA,EAAgB,QAAA;AAAA,IAChB,WAAA,EAAa;AAAA,GACf;AAAA,EACA,GAAA,EAAK;AAAA,IACH,QAAA,EAAU,KAAA;AAAA,IACV,YAAA,EAAc,KAAA;AAAA,IACd,YAAA,EAAc,cAAA;AAAA,IACd,gBAAA,EAAkB,kBAAkB,KAAK,CAAA;AAAA,IACzC,cAAA,EAAgB,MAAA;AAAA,IAChB,WAAA,EAAa;AAAA,GACf;AAAA,EACA,GAAA,EAAK;AAAA,IACH,QAAA,EAAU,KAAA;AAAA,IACV,YAAA,EAAc,KAAA;AAAA,IACd,YAAA,EAAc,iBAAA;AAAA,IACd,gBAAA,EAAkB,kBAAkB,KAAK,CAAA;AAAA,IACzC,cAAA,EAAgB,KAAA;AAAA,IAChB,WAAA,EAAa;AAAA,GACf;AAAA,EACA,GAAA,EAAK;AAAA,IACH,QAAA,EAAU,KAAA;AAAA,IACV,YAAA,EAAc,KAAA;AAAA,IACd,YAAA,EAAc,cAAA;AAAA,IACd,gBAAA,EAAkB,kBAAkB,KAAK,CAAA;AAAA,IACzC,cAAA,EAAgB,GAAA;AAAA,IAChB,WAAA,EAAa;AAAA,GACf;AAAA,EACA,GAAA,EAAK;AAAA,IACH,QAAA,EAAU,KAAA;AAAA,IACV,YAAA,EAAc,KAAA;AAAA,IACd,YAAA,EAAc,mBAAA;AAAA,IACd,gBAAA,EAAkB,kBAAkB,KAAK,CAAA;AAAA,IACzC,cAAA,EAAgB,IAAA;AAAA,IAChB,WAAA,EAAa;AAAA,GACf;AAAA,EACA,GAAA,EAAK;AAAA,IACH,QAAA,EAAU,KAAA;AAAA,IACV,YAAA,EAAc,KAAA;AAAA,IACd,YAAA,EAAc,iBAAA;AAAA,IACd,gBAAA,EAAkB,kBAAkB,KAAK,CAAA;AAAA,IACzC,cAAA,EAAgB,IAAA;AAAA,IAChB,WAAA,EAAa;AAAA,GACf;AAAA,EACA,GAAA,EAAK;AAAA,IACH,QAAA,EAAU,KAAA;AAAA,IACV,YAAA,EAAc,KAAA;AAAA,IACd,YAAA,EAAc,oBAAA;AAAA,IACd,gBAAA,EAAkB,kBAAkB,KAAK,CAAA;AAAA,IACzC,cAAA,EAAgB,KAAA;AAAA,IAChB,WAAA,EAAa;AAAA,GACf;AAAA,EACA,GAAA,EAAK;AAAA,IACH,QAAA,EAAU,KAAA;AAAA,IACV,YAAA,EAAc,KAAA;AAAA,IACd,YAAA,EAAc,iBAAA;AAAA,IACd,gBAAA,EAAkB,kBAAkB,KAAK,CAAA;AAAA,IACzC,cAAA,EAAgB,QAAA;AAAA,IAChB,WAAA,EAAa;AAAA,GACf;AAAA,EACA,GAAA,EAAK;AAAA,IACH,QAAA,EAAU,KAAA;AAAA,IACV,YAAA,EAAc,KAAA;AAAA,IACd,YAAA,EAAc,mBAAA;AAAA,IACd,gBAAA,EAAkB,kBAAkB,KAAK,CAAA;AAAA,IACzC,cAAA,EAAgB,SAAA;AAAA,IAChB,WAAA,EAAa;AAAA,GACf;AAAA,EACA,GAAA,EAAK;AAAA,IACH,QAAA,EAAU,KAAA;AAAA,IACV,YAAA,EAAc,KAAA;AAAA,IACd,YAAA,EAAc,cAAA;AAAA,IACd,gBAAA,EAAkB,kBAAkB,KAAK,CAAA;AAAA,IACzC,cAAA,EAAgB,KAAA;AAAA,IAChB,WAAA,EAAa;AAAA,GACf;AAAA,EACA,GAAA,EAAK;AAAA,IACH,QAAA,EAAU,KAAA;AAAA,IACV,YAAA,EAAc,KAAA;AAAA,IACd,YAAA,EAAc,aAAA;AAAA,IACd,gBAAA,EAAkB,kBAAkB,KAAK,CAAA;AAAA,IACzC,cAAA,EAAgB,QAAA;AAAA,IAChB,WAAA,EAAa;AAAA,GACf;AAAA,EACA,GAAA,EAAK;AAAA,IACH,QAAA,EAAU,KAAA;AAAA,IACV,YAAA,EAAc,KAAA;AAAA,IACd,YAAA,EAAc,eAAA;AAAA,IACd,gBAAA,EAAkB,kBAAkB,KAAK,CAAA;AAAA,IACzC,cAAA,EAAgB,IAAA;AAAA,IAChB,WAAA,EAAa;AAAA,GACf;AAAA,EACA,GAAA,EAAK;AAAA,IACH,QAAA,EAAU,KAAA;AAAA,IACV,YAAA,EAAc,KAAA;AAAA,IACd,YAAA,EAAc,kBAAA;AAAA,IACd,gBAAA,EAAkB,kBAAkB,KAAK,CAAA;AAAA,IACzC,cAAA,EAAgB,IAAA;AAAA,IAChB,WAAA,EAAa;AAAA,GACf;AAAA,EACA,GAAA,EAAK;AAAA,IACH,QAAA,EAAU,KAAA;AAAA,IACV,YAAA,EAAc,KAAA;AAAA,IACd,YAAA,EAAc,WAAA;AAAA,IACd,gBAAA,EAAkB,kBAAkB,KAAK,CAAA;AAAA,IACzC,cAAA,EAAgB,QAAA;AAAA,IAChB,WAAA,EAAa;AAAA,GACf;AAAA,EACA,GAAA,EAAK;AAAA,IACH,QAAA,EAAU,KAAA;AAAA,IACV,YAAA,EAAc,KAAA;AAAA,IACd,YAAA,EAAc,cAAA;AAAA,IACd,gBAAA,EAAkB,kBAAkB,KAAK,CAAA;AAAA,IACzC,cAAA,EAAgB,QAAA;AAAA,IAChB,WAAA,EAAa;AAAA,GACf;AAAA,EACA,GAAA,EAAK;AAAA,IACH,QAAA,EAAU,KAAA;AAAA,IACV,YAAA,EAAc,KAAA;AAAA,IACd,YAAA,EAAc,kBAAA;AAAA,IACd,gBAAA,EAAkB,kBAAkB,KAAK,CAAA;AAAA,IACzC,cAAA,EAAgB,KAAA;AAAA,IAChB,WAAA,EAAa;AAAA,GACf;AAAA,EACA,GAAA,EAAK;AAAA,IACH,QAAA,EAAU,KAAA;AAAA,IACV,YAAA,EAAc,KAAA;AAAA,IACd,YAAA,EAAc,sBAAA;AAAA,IACd,gBAAA,EAAkB,kBAAkB,KAAK,CAAA;AAAA,IACzC,cAAA,EAAgB,GAAA;AAAA,IAChB,WAAA,EAAa;AAAA,GACf;AAAA,EACA,GAAA,EAAK;AAAA,IACH,QAAA,EAAU,KAAA;AAAA,IACV,YAAA,EAAc,KAAA;AAAA,IACd,YAAA,EAAc,iBAAA;AAAA,IACd,gBAAA,EAAkB,kBAAkB,KAAK,CAAA;AAAA,IACzC,cAAA,EAAgB,QAAA;AAAA,IAChB,WAAA,EAAa;AAAA,GACf;AAAA,EACA,GAAA,EAAK;AAAA,IACH,QAAA,EAAU,KAAA;AAAA,IACV,YAAA,EAAc,KAAA;AAAA,IACd,YAAA,EAAc,oBAAA;AAAA,IACd,gBAAA,EAAkB,kBAAkB,KAAK,CAAA;AAAA,IACzC,cAAA,EAAgB,GAAA;AAAA,IAChB,WAAA,EAAa;AAAA;AAEjB;AAsBO,SAAS,2BAAA,CACd,QACA,cAAA,EACqB;AACrB,EAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,MAAM,CAAA,IAAK,CAAC,KAAA,CAAM,OAAA,CAAQ,MAAA,CAAO,CAAC,CAAC,CAAA,EAAG;AACvD,IAAA,MAAM,IAAI,MAAM,sDAAsD,CAAA;AAAA,EACxE;AACA,EAAA,IAAI,OAAO,cAAA,KAAmB,QAAA,IAAY,MAAA,CAAO,WAAW,cAAA,EAAgB;AAC1E,IAAA,MAAM,IAAI,KAAA;AAAA,MACR,CAAA,wBAAA,EAA2B,MAAA,CAAO,MAAM,CAAA,oCAAA,EAAuC,cAAc,CAAA,CAAA;AAAA,KAC/F;AAAA,EACF;AACA,EAAA,OAAO,MAAA,CAAO,GAAA;AAAA,IAAI,CAAC,KAAA,KACjB,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,KAAM;AACf,MAAA,MAAM,IAAA,GAAO,YAAA,CAAa,CAAA,CAAE,QAAwB,CAAA;AACpD,MAAA,IAAI,CAAC,IAAA,EAAM,gBAAA,EAAkB,MAAM,IAAI,MAAM,kBAAkB,CAAA;AAC/D,MAAA,OAAO;AAAA,QACL,MAAM,IAAA,CAAK,gBAAA;AAAA,QACX,cAAA,EAAgB,MAAA,CAAO,CAAA,CAAE,cAAc;AAAA,OACzC;AAAA,IACF,CAAC;AAAA,GACH;AACF;AAeO,SAAS,kCAAA,CACd,QACA,cAAA,EAC4B;AAC5B,EAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,MAAM,CAAA,IAAK,CAAC,KAAA,CAAM,OAAA,CAAQ,MAAA,CAAO,CAAC,CAAC,CAAA,EAAG;AACvD,IAAA,MAAM,IAAI,MAAM,2DAA2D,CAAA;AAAA,EAC7E;AACA,EAAA,IAAI,OAAO,cAAA,KAAmB,QAAA,IAAY,MAAA,CAAO,WAAW,cAAA,EAAgB;AAC1E,IAAA,MAAM,IAAI,KAAA;AAAA,MACR,CAAA,wBAAA,EAA2B,MAAA,CAAO,MAAM,CAAA,oCAAA,EAAuC,cAAc,CAAA,CAAA;AAAA,KAC/F;AAAA,EACF;AACA,EAAA,OAAO,MAAA,CAAO,GAAA;AAAA,IAAI,CAAC,KAAA,KACjB,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,KAAM;AACf,MAAA,MAAM,IAAA,GAAO,YAAA,CAAa,CAAA,CAAE,QAAwB,CAAA;AACpD,MAAA,MAAM,OAAO,IAAA,EAAM,gBAAA;AACnB,MAAA,IAAI,CAAC,MAAM,MAAM,IAAI,MAAM,CAAA,kBAAA,EAAqB,CAAA,CAAE,QAAQ,CAAA,CAAE,CAAA;AAC5D,MAAA,OAAO,EAAE,IAAA,EAAM,IAAA,EAAM,mBAAmB,MAAA,CAAO,CAAA,CAAE,cAAc,CAAA,EAAE;AAAA,IACnE,CAAC;AAAA,GACH;AACF;AAgBO,SAAS,wBAAwB,IAAA,EAAwC;AAC9E,EAAA,IAAI,CAAC,MAAM,OAAO,MAAA;AAClB,EAAA,MAAM,CAAA,GAAI,KAAK,WAAA,EAAY;AAC3B,EAAA,KAAA,MAAW,GAAA,IAAO,MAAA,CAAO,IAAA,CAAK,YAAY,CAAA,EAAuC;AAC/E,IAAA,MAAM,IAAA,GAAO,aAAa,GAAG,CAAA;AAC7B,IAAA,IAAI,IAAA,EAAM,gBAAA,EAAkB,WAAA,EAAY,KAAM,GAAG,OAAO,IAAA;AAAA,EAC1D;AACA,EAAA,OAAO,MAAA;AACT;AAQO,SAAS,+BAA+B,IAAA,EAAwC;AACrF,EAAA,IAAI,CAAC,MAAM,OAAO,MAAA;AAClB,EAAA,MAAM,KAAA,GAAQ,KAAK,WAAA,EAAY;AAC/B,EAAA,OAAO,aAAa,KAAK,CAAA;AAC3B;AAcO,SAAS,wBAAwB,IAAA,EAAkC;AACxE,EAAA,OAAO,uBAAA,CAAwB,IAAI,CAAA,EAAG,YAAA;AACxC;AAQO,SAAS,wBAAwB,IAAA,EAAuB;AAC7D,EAAA,OAAO,OAAA,CAAQ,uBAAA,CAAwB,IAAI,CAAC,CAAA;AAC9C","file":"chunk-ZFBH4HD7.mjs","sourcesContent":["import { keccak256 as viemKeccak256 } from 'viem';\n\nexport const currencyKeccak256 = (inputString: string): string => {\n const bytes = new TextEncoder().encode(inputString);\n return viemKeccak256(bytes);\n};\n","import { currencyKeccak256 } from './currencyKeccak256';\n\n/**\n * Supported fiat currency codes.\n *\n * Use these constants when specifying currencies in conversion rates:\n *\n * @example\n * ```typescript\n * import { Currency } from '@zkp2p/sdk';\n *\n * const rates = [\n * { currency: Currency.USD, conversionRate: '1020000000000000000' },\n * { currency: Currency.EUR, conversionRate: '1100000000000000000' },\n * ];\n * ```\n */\nexport const Currency = {\n AED: 'AED',\n ARS: 'ARS',\n AUD: 'AUD',\n BRL: 'BRL',\n CAD: 'CAD',\n CHF: 'CHF',\n CNY: 'CNY',\n CZK: 'CZK',\n DKK: 'DKK',\n EUR: 'EUR',\n GBP: 'GBP',\n HKD: 'HKD',\n HUF: 'HUF',\n IDR: 'IDR',\n ILS: 'ILS',\n INR: 'INR',\n JPY: 'JPY',\n KES: 'KES',\n MXN: 'MXN',\n MYR: 'MYR',\n NOK: 'NOK',\n NZD: 'NZD',\n PHP: 'PHP',\n PLN: 'PLN',\n RON: 'RON',\n SAR: 'SAR',\n SEK: 'SEK',\n SGD: 'SGD',\n THB: 'THB',\n TRY: 'TRY',\n UGX: 'UGX',\n USD: 'USD',\n VND: 'VND',\n ZAR: 'ZAR',\n} as const;\n\n/**\n * Union type of all supported currency codes.\n */\nexport type CurrencyType = (typeof Currency)[keyof typeof Currency];\n\n/**\n * Complete currency information including name, symbol, and hash.\n */\nexport type CurrencyData = {\n currency: CurrencyType;\n currencyCode: string;\n currencyName: string;\n currencySymbol: string;\n currencyCodeHash: string;\n countryCode: string;\n};\n\n/**\n * Lookup table containing metadata for all supported currencies.\n *\n * Includes currency name, symbol, keccak256 hash (for on-chain use),\n * and ISO country code for flag display.\n *\n * @example\n * ```typescript\n * import { currencyInfo, Currency } from '@zkp2p/sdk';\n *\n * const usd = currencyInfo[Currency.USD];\n * console.log(usd.currencyName); // \"United States Dollar\"\n * console.log(usd.currencySymbol); // \"$\"\n * console.log(usd.currencyCodeHash); // \"0x...\"\n * ```\n */\nexport const currencyInfo: Record<CurrencyType, CurrencyData> = {\n AED: {\n currency: 'AED',\n currencyCode: 'AED',\n currencyName: 'United Arab Emirates Dirham',\n currencyCodeHash: currencyKeccak256('AED'),\n currencySymbol: 'د.إ',\n countryCode: 'ae',\n },\n ARS: {\n currency: 'ARS',\n currencyCode: 'ARS',\n currencyName: 'Argentine Peso',\n currencyCodeHash: currencyKeccak256('ARS'),\n currencySymbol: '$',\n countryCode: 'ar',\n },\n AUD: {\n currency: 'AUD',\n currencyCode: 'AUD',\n currencyName: 'Australian Dollar',\n currencyCodeHash: currencyKeccak256('AUD'),\n currencySymbol: 'A$',\n countryCode: 'au',\n },\n BRL: {\n currency: 'BRL',\n currencyCode: 'BRL',\n currencyName: 'Brazilian Real',\n currencyCodeHash: currencyKeccak256('BRL'),\n currencySymbol: 'R$',\n countryCode: 'br',\n },\n CAD: {\n currency: 'CAD',\n currencyCode: 'CAD',\n currencyName: 'Canadian Dollar',\n currencyCodeHash: currencyKeccak256('CAD'),\n currencySymbol: 'C$',\n countryCode: 'ca',\n },\n CHF: {\n currency: 'CHF',\n currencyCode: 'CHF',\n currencyName: 'Swiss Franc',\n currencyCodeHash: currencyKeccak256('CHF'),\n currencySymbol: 'Fr',\n countryCode: 'ch',\n },\n CNY: {\n currency: 'CNY',\n currencyCode: 'CNY',\n currencyName: 'Chinese Yuan',\n currencyCodeHash: currencyKeccak256('CNY'),\n currencySymbol: '¥',\n countryCode: 'cn',\n },\n CZK: {\n currency: 'CZK',\n currencyCode: 'CZK',\n currencyName: 'Czech Koruna',\n currencyCodeHash: currencyKeccak256('CZK'),\n currencySymbol: 'Kč',\n countryCode: 'cz',\n },\n DKK: {\n currency: 'DKK',\n currencyCode: 'DKK',\n currencyName: 'Danish Krone',\n currencyCodeHash: currencyKeccak256('DKK'),\n currencySymbol: 'kr',\n countryCode: 'dk',\n },\n EUR: {\n currency: 'EUR',\n currencyCode: 'EUR',\n currencyName: 'Euro',\n currencyCodeHash: currencyKeccak256('EUR'),\n currencySymbol: '€',\n countryCode: 'eu',\n },\n GBP: {\n currency: 'GBP',\n currencyCode: 'GBP',\n currencyName: 'British Pound',\n currencyCodeHash: currencyKeccak256('GBP'),\n currencySymbol: '£',\n countryCode: 'gb',\n },\n HKD: {\n currency: 'HKD',\n currencyCode: 'HKD',\n currencyName: 'Hong Kong Dollar',\n currencyCodeHash: currencyKeccak256('HKD'),\n currencySymbol: 'HK$',\n countryCode: 'hk',\n },\n HUF: {\n currency: 'HUF',\n currencyCode: 'HUF',\n currencyName: 'Hungarian Forint',\n currencyCodeHash: currencyKeccak256('HUF'),\n currencySymbol: 'Ft',\n countryCode: 'hu',\n },\n IDR: {\n currency: 'IDR',\n currencyCode: 'IDR',\n currencyName: 'Indonesian Rupiah',\n currencyCodeHash: currencyKeccak256('IDR'),\n currencySymbol: 'Rp',\n countryCode: 'id',\n },\n ILS: {\n currency: 'ILS',\n currencyCode: 'ILS',\n currencyName: 'Israeli New Shekel',\n currencyCodeHash: currencyKeccak256('ILS'),\n currencySymbol: '₪',\n countryCode: 'il',\n },\n INR: {\n currency: 'INR',\n currencyCode: 'INR',\n currencyName: 'Indian Rupee',\n currencyCodeHash: currencyKeccak256('INR'),\n currencySymbol: '₹',\n countryCode: 'in',\n },\n JPY: {\n currency: 'JPY',\n currencyCode: 'JPY',\n currencyName: 'Japanese Yen',\n currencyCodeHash: currencyKeccak256('JPY'),\n currencySymbol: '¥',\n countryCode: 'jp',\n },\n KES: {\n currency: 'KES',\n currencyCode: 'KES',\n currencyName: 'Kenyan Shilling',\n currencyCodeHash: currencyKeccak256('KES'),\n currencySymbol: 'KSh',\n countryCode: 'ke',\n },\n MXN: {\n currency: 'MXN',\n currencyCode: 'MXN',\n currencyName: 'Mexican Peso',\n currencyCodeHash: currencyKeccak256('MXN'),\n currencySymbol: '$',\n countryCode: 'mx',\n },\n MYR: {\n currency: 'MYR',\n currencyCode: 'MYR',\n currencyName: 'Malaysian Ringgit',\n currencyCodeHash: currencyKeccak256('MYR'),\n currencySymbol: 'RM',\n countryCode: 'my',\n },\n NOK: {\n currency: 'NOK',\n currencyCode: 'NOK',\n currencyName: 'Norwegian Krone',\n currencyCodeHash: currencyKeccak256('NOK'),\n currencySymbol: 'kr',\n countryCode: 'no',\n },\n NZD: {\n currency: 'NZD',\n currencyCode: 'NZD',\n currencyName: 'New Zealand Dollar',\n currencyCodeHash: currencyKeccak256('NZD'),\n currencySymbol: 'NZ$',\n countryCode: 'nz',\n },\n PHP: {\n currency: 'PHP',\n currencyCode: 'PHP',\n currencyName: 'Philippine Peso',\n currencyCodeHash: currencyKeccak256('PHP'),\n currencySymbol: '₱',\n countryCode: 'ph',\n },\n PLN: {\n currency: 'PLN',\n currencyCode: 'PLN',\n currencyName: 'Polish Złoty',\n currencyCodeHash: currencyKeccak256('PLN'),\n currencySymbol: 'zł',\n countryCode: 'pl',\n },\n RON: {\n currency: 'RON',\n currencyCode: 'RON',\n currencyName: 'Romanian Leu',\n currencyCodeHash: currencyKeccak256('RON'),\n currencySymbol: 'lei',\n countryCode: 'ro',\n },\n SAR: {\n currency: 'SAR',\n currencyCode: 'SAR',\n currencyName: 'Saudi Riyal',\n currencyCodeHash: currencyKeccak256('SAR'),\n currencySymbol: '﷼',\n countryCode: 'sa',\n },\n SEK: {\n currency: 'SEK',\n currencyCode: 'SEK',\n currencyName: 'Swedish Krona',\n currencyCodeHash: currencyKeccak256('SEK'),\n currencySymbol: 'kr',\n countryCode: 'se',\n },\n SGD: {\n currency: 'SGD',\n currencyCode: 'SGD',\n currencyName: 'Singapore Dollar',\n currencyCodeHash: currencyKeccak256('SGD'),\n currencySymbol: 'S$',\n countryCode: 'sg',\n },\n THB: {\n currency: 'THB',\n currencyCode: 'THB',\n currencyName: 'Thai Baht',\n currencyCodeHash: currencyKeccak256('THB'),\n currencySymbol: '฿',\n countryCode: 'th',\n },\n TRY: {\n currency: 'TRY',\n currencyCode: 'TRY',\n currencyName: 'Turkish Lira',\n currencyCodeHash: currencyKeccak256('TRY'),\n currencySymbol: '₺',\n countryCode: 'tr',\n },\n UGX: {\n currency: 'UGX',\n currencyCode: 'UGX',\n currencyName: 'Ugandan Shilling',\n currencyCodeHash: currencyKeccak256('UGX'),\n currencySymbol: 'USh',\n countryCode: 'ug',\n },\n USD: {\n currency: 'USD',\n currencyCode: 'USD',\n currencyName: 'United States Dollar',\n currencyCodeHash: currencyKeccak256('USD'),\n currencySymbol: '$',\n countryCode: 'us',\n },\n VND: {\n currency: 'VND',\n currencyCode: 'VND',\n currencyName: 'Vietnamese Dong',\n currencyCodeHash: currencyKeccak256('VND'),\n currencySymbol: '₫',\n countryCode: 'vn',\n },\n ZAR: {\n currency: 'ZAR',\n currencyCode: 'ZAR',\n currencyName: 'South African Rand',\n currencyCodeHash: currencyKeccak256('ZAR'),\n currencySymbol: 'R',\n countryCode: 'za',\n },\n} as unknown as Record<CurrencyType, CurrencyData>;\n\n/**\n * UI-friendly currency rate structure used in SDK methods.\n */\nexport type UICurrencyRate = { currency: CurrencyType; conversionRate: string };\n\n/**\n * On-chain currency structure with bytes32 code and bigint rate.\n */\nexport type OnchainCurrency = { code: `0x${string}`; conversionRate: bigint };\n\n/**\n * Maps UI currency rates to on-chain format.\n *\n * @param groups - Nested array of currency rates per payment method\n * @param expectedGroups - Expected number of groups (for validation)\n * @returns On-chain formatted currency arrays\n * @throws Error if groups structure is invalid or lengths don't match\n *\n * @internal Used by createDeposit internally\n */\nexport function mapConversionRatesToOnchain(\n groups: UICurrencyRate[][],\n expectedGroups?: number,\n): OnchainCurrency[][] {\n if (!Array.isArray(groups) || !Array.isArray(groups[0])) {\n throw new Error('conversionRates must be a nested array per processor');\n }\n if (typeof expectedGroups === 'number' && groups.length !== expectedGroups) {\n throw new Error(\n `conversionRates length (${groups.length}) must match processorNames length (${expectedGroups})`,\n );\n }\n return groups.map((group) =>\n group.map((r) => {\n const info = currencyInfo[r.currency as CurrencyType];\n if (!info?.currencyCodeHash) throw new Error('Invalid currency');\n return {\n code: info.currencyCodeHash as `0x${string}`,\n conversionRate: BigInt(r.conversionRate),\n };\n }),\n );\n}\n\n/**\n * On-chain currency structure with minimum conversion rate (V3 escrow format).\n */\nexport type OnchainCurrencyMinRate = { code: `0x${string}`; minConversionRate: bigint };\n\n/**\n * Maps UI currency rates to on-chain V3 escrow format with minConversionRate.\n *\n * @param groups - Nested array of currency rates per payment method\n * @param expectedGroups - Expected number of groups (for validation)\n * @returns On-chain formatted currency arrays for V3 escrow\n * @throws Error if groups structure is invalid or lengths don't match\n */\nexport function mapConversionRatesToOnchainMinRate(\n groups: UICurrencyRate[][],\n expectedGroups?: number,\n): OnchainCurrencyMinRate[][] {\n if (!Array.isArray(groups) || !Array.isArray(groups[0])) {\n throw new Error('conversionRates must be a nested array per payment method');\n }\n if (typeof expectedGroups === 'number' && groups.length !== expectedGroups) {\n throw new Error(\n `conversionRates length (${groups.length}) must match processorNames length (${expectedGroups})`,\n );\n }\n return groups.map((group) =>\n group.map((r) => {\n const info = currencyInfo[r.currency as CurrencyType];\n const hash = info?.currencyCodeHash as `0x${string}` | undefined;\n if (!hash) throw new Error(`Invalid currency: ${r.currency}`);\n return { code: hash, minConversionRate: BigInt(r.conversionRate) };\n }),\n );\n}\n\n/**\n * Looks up currency info by its keccak256 hash.\n *\n * @param hash - The currency code hash (0x-prefixed)\n * @returns Currency data if found, undefined otherwise\n *\n * @example\n * ```typescript\n * const info = getCurrencyInfoFromHash('0x...');\n * if (info) {\n * console.log(info.currencyCode); // \"USD\"\n * }\n * ```\n */\nexport function getCurrencyInfoFromHash(hash: string): CurrencyData | undefined {\n if (!hash) return undefined;\n const h = hash.toLowerCase();\n for (const key of Object.keys(currencyInfo) as Array<keyof typeof currencyInfo>) {\n const info = currencyInfo[key];\n if (info?.currencyCodeHash?.toLowerCase() === h) return info;\n }\n return undefined;\n}\n\n/**\n * Looks up currency info by ISO country code.\n *\n * @param code - The ISO country code (e.g., 'US', 'GB')\n * @returns Currency data if found, undefined otherwise\n */\nexport function getCurrencyInfoFromCountryCode(code: string): CurrencyData | undefined {\n if (!code) return undefined;\n const upper = code.toUpperCase() as CurrencyType;\n return currencyInfo[upper];\n}\n\n/**\n * Converts a currency hash to its ISO currency code.\n *\n * @param hash - The currency code hash (0x-prefixed)\n * @returns Currency code string (e.g., 'USD') or undefined if not found\n *\n * @example\n * ```typescript\n * const code = getCurrencyCodeFromHash('0x...');\n * console.log(code); // \"USD\"\n * ```\n */\nexport function getCurrencyCodeFromHash(hash: string): string | undefined {\n return getCurrencyInfoFromHash(hash)?.currencyCode;\n}\n\n/**\n * Checks if a currency hash is recognized by the SDK.\n *\n * @param hash - The currency code hash to check\n * @returns true if the hash corresponds to a supported currency\n */\nexport function isSupportedCurrencyHash(hash: string): boolean {\n return Boolean(getCurrencyInfoFromHash(hash));\n}\n"]}
1
+ {"version":3,"sources":["../src/utils/currencyKeccak256.ts","../src/utils/currency.ts"],"names":["viemKeccak256"],"mappings":"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","file":"chunk-ZB22BZLZ.mjs","sourcesContent":["import { keccak256 as viemKeccak256 } from 'viem';\n\nexport const currencyKeccak256 = (inputString: string): string => {\n const bytes = new TextEncoder().encode(inputString);\n return viemKeccak256(bytes);\n};\n","import { currencyKeccak256 } from './currencyKeccak256';\n\n/**\n * Supported fiat currency codes.\n *\n * Use these constants when specifying currencies in conversion rates:\n *\n * @example\n * ```typescript\n * import { Currency } from '@zkp2p/sdk';\n *\n * const rates = [\n * { currency: Currency.USD, conversionRate: '1020000000000000000' },\n * { currency: Currency.EUR, conversionRate: '1100000000000000000' },\n * ];\n * ```\n */\nexport const Currency = {\n AED: 'AED',\n ARS: 'ARS',\n AUD: 'AUD',\n BRL: 'BRL',\n CAD: 'CAD',\n CHF: 'CHF',\n CNY: 'CNY',\n CZK: 'CZK',\n DKK: 'DKK',\n EUR: 'EUR',\n GBP: 'GBP',\n HKD: 'HKD',\n HUF: 'HUF',\n IDR: 'IDR',\n ILS: 'ILS',\n INR: 'INR',\n JPY: 'JPY',\n KES: 'KES',\n MXN: 'MXN',\n MYR: 'MYR',\n NOK: 'NOK',\n NZD: 'NZD',\n PHP: 'PHP',\n PLN: 'PLN',\n RON: 'RON',\n SAR: 'SAR',\n SEK: 'SEK',\n SGD: 'SGD',\n THB: 'THB',\n TRY: 'TRY',\n UGX: 'UGX',\n USD: 'USD',\n VND: 'VND',\n ZAR: 'ZAR',\n} as const;\n\n/**\n * Union type of all supported currency codes.\n */\nexport type CurrencyType = (typeof Currency)[keyof typeof Currency];\n\n/**\n * Complete currency information including name, symbol, and hash.\n */\nexport type CurrencyData = {\n currency: CurrencyType;\n currencyCode: string;\n currencyName: string;\n currencySymbol: string;\n currencyCodeHash: string;\n countryCode: string;\n};\n\n/**\n * Lookup table containing metadata for all supported currencies.\n *\n * Includes currency name, symbol, keccak256 hash (for on-chain use),\n * and ISO country code for flag display.\n *\n * @example\n * ```typescript\n * import { currencyInfo, Currency } from '@zkp2p/sdk';\n *\n * const usd = currencyInfo[Currency.USD];\n * console.log(usd.currencyName); // \"United States Dollar\"\n * console.log(usd.currencySymbol); // \"$\"\n * console.log(usd.currencyCodeHash); // \"0x...\"\n * ```\n */\nexport const currencyInfo: Record<CurrencyType, CurrencyData> = {\n AED: {\n currency: 'AED',\n currencyCode: 'AED',\n currencyName: 'United Arab Emirates Dirham',\n currencyCodeHash: currencyKeccak256('AED'),\n currencySymbol: 'د.إ',\n countryCode: 'ae',\n },\n ARS: {\n currency: 'ARS',\n currencyCode: 'ARS',\n currencyName: 'Argentine Peso',\n currencyCodeHash: currencyKeccak256('ARS'),\n currencySymbol: '$',\n countryCode: 'ar',\n },\n AUD: {\n currency: 'AUD',\n currencyCode: 'AUD',\n currencyName: 'Australian Dollar',\n currencyCodeHash: currencyKeccak256('AUD'),\n currencySymbol: 'A$',\n countryCode: 'au',\n },\n BRL: {\n currency: 'BRL',\n currencyCode: 'BRL',\n currencyName: 'Brazilian Real',\n currencyCodeHash: currencyKeccak256('BRL'),\n currencySymbol: 'R$',\n countryCode: 'br',\n },\n CAD: {\n currency: 'CAD',\n currencyCode: 'CAD',\n currencyName: 'Canadian Dollar',\n currencyCodeHash: currencyKeccak256('CAD'),\n currencySymbol: 'C$',\n countryCode: 'ca',\n },\n CHF: {\n currency: 'CHF',\n currencyCode: 'CHF',\n currencyName: 'Swiss Franc',\n currencyCodeHash: currencyKeccak256('CHF'),\n currencySymbol: 'Fr',\n countryCode: 'ch',\n },\n CNY: {\n currency: 'CNY',\n currencyCode: 'CNY',\n currencyName: 'Chinese Yuan',\n currencyCodeHash: currencyKeccak256('CNY'),\n currencySymbol: '¥',\n countryCode: 'cn',\n },\n CZK: {\n currency: 'CZK',\n currencyCode: 'CZK',\n currencyName: 'Czech Koruna',\n currencyCodeHash: currencyKeccak256('CZK'),\n currencySymbol: 'Kč',\n countryCode: 'cz',\n },\n DKK: {\n currency: 'DKK',\n currencyCode: 'DKK',\n currencyName: 'Danish Krone',\n currencyCodeHash: currencyKeccak256('DKK'),\n currencySymbol: 'kr',\n countryCode: 'dk',\n },\n EUR: {\n currency: 'EUR',\n currencyCode: 'EUR',\n currencyName: 'Euro',\n currencyCodeHash: currencyKeccak256('EUR'),\n currencySymbol: '€',\n countryCode: 'eu',\n },\n GBP: {\n currency: 'GBP',\n currencyCode: 'GBP',\n currencyName: 'British Pound',\n currencyCodeHash: currencyKeccak256('GBP'),\n currencySymbol: '£',\n countryCode: 'gb',\n },\n HKD: {\n currency: 'HKD',\n currencyCode: 'HKD',\n currencyName: 'Hong Kong Dollar',\n currencyCodeHash: currencyKeccak256('HKD'),\n currencySymbol: 'HK$',\n countryCode: 'hk',\n },\n HUF: {\n currency: 'HUF',\n currencyCode: 'HUF',\n currencyName: 'Hungarian Forint',\n currencyCodeHash: currencyKeccak256('HUF'),\n currencySymbol: 'Ft',\n countryCode: 'hu',\n },\n IDR: {\n currency: 'IDR',\n currencyCode: 'IDR',\n currencyName: 'Indonesian Rupiah',\n currencyCodeHash: currencyKeccak256('IDR'),\n currencySymbol: 'Rp',\n countryCode: 'id',\n },\n ILS: {\n currency: 'ILS',\n currencyCode: 'ILS',\n currencyName: 'Israeli New Shekel',\n currencyCodeHash: currencyKeccak256('ILS'),\n currencySymbol: '₪',\n countryCode: 'il',\n },\n INR: {\n currency: 'INR',\n currencyCode: 'INR',\n currencyName: 'Indian Rupee',\n currencyCodeHash: currencyKeccak256('INR'),\n currencySymbol: '₹',\n countryCode: 'in',\n },\n JPY: {\n currency: 'JPY',\n currencyCode: 'JPY',\n currencyName: 'Japanese Yen',\n currencyCodeHash: currencyKeccak256('JPY'),\n currencySymbol: '¥',\n countryCode: 'jp',\n },\n KES: {\n currency: 'KES',\n currencyCode: 'KES',\n currencyName: 'Kenyan Shilling',\n currencyCodeHash: currencyKeccak256('KES'),\n currencySymbol: 'KSh',\n countryCode: 'ke',\n },\n MXN: {\n currency: 'MXN',\n currencyCode: 'MXN',\n currencyName: 'Mexican Peso',\n currencyCodeHash: currencyKeccak256('MXN'),\n currencySymbol: '$',\n countryCode: 'mx',\n },\n MYR: {\n currency: 'MYR',\n currencyCode: 'MYR',\n currencyName: 'Malaysian Ringgit',\n currencyCodeHash: currencyKeccak256('MYR'),\n currencySymbol: 'RM',\n countryCode: 'my',\n },\n NOK: {\n currency: 'NOK',\n currencyCode: 'NOK',\n currencyName: 'Norwegian Krone',\n currencyCodeHash: currencyKeccak256('NOK'),\n currencySymbol: 'kr',\n countryCode: 'no',\n },\n NZD: {\n currency: 'NZD',\n currencyCode: 'NZD',\n currencyName: 'New Zealand Dollar',\n currencyCodeHash: currencyKeccak256('NZD'),\n currencySymbol: 'NZ$',\n countryCode: 'nz',\n },\n PHP: {\n currency: 'PHP',\n currencyCode: 'PHP',\n currencyName: 'Philippine Peso',\n currencyCodeHash: currencyKeccak256('PHP'),\n currencySymbol: '₱',\n countryCode: 'ph',\n },\n PLN: {\n currency: 'PLN',\n currencyCode: 'PLN',\n currencyName: 'Polish Złoty',\n currencyCodeHash: currencyKeccak256('PLN'),\n currencySymbol: 'zł',\n countryCode: 'pl',\n },\n RON: {\n currency: 'RON',\n currencyCode: 'RON',\n currencyName: 'Romanian Leu',\n currencyCodeHash: currencyKeccak256('RON'),\n currencySymbol: 'lei',\n countryCode: 'ro',\n },\n SAR: {\n currency: 'SAR',\n currencyCode: 'SAR',\n currencyName: 'Saudi Riyal',\n currencyCodeHash: currencyKeccak256('SAR'),\n currencySymbol: '﷼',\n countryCode: 'sa',\n },\n SEK: {\n currency: 'SEK',\n currencyCode: 'SEK',\n currencyName: 'Swedish Krona',\n currencyCodeHash: currencyKeccak256('SEK'),\n currencySymbol: 'kr',\n countryCode: 'se',\n },\n SGD: {\n currency: 'SGD',\n currencyCode: 'SGD',\n currencyName: 'Singapore Dollar',\n currencyCodeHash: currencyKeccak256('SGD'),\n currencySymbol: 'S$',\n countryCode: 'sg',\n },\n THB: {\n currency: 'THB',\n currencyCode: 'THB',\n currencyName: 'Thai Baht',\n currencyCodeHash: currencyKeccak256('THB'),\n currencySymbol: '฿',\n countryCode: 'th',\n },\n TRY: {\n currency: 'TRY',\n currencyCode: 'TRY',\n currencyName: 'Turkish Lira',\n currencyCodeHash: currencyKeccak256('TRY'),\n currencySymbol: '₺',\n countryCode: 'tr',\n },\n UGX: {\n currency: 'UGX',\n currencyCode: 'UGX',\n currencyName: 'Ugandan Shilling',\n currencyCodeHash: currencyKeccak256('UGX'),\n currencySymbol: 'USh',\n countryCode: 'ug',\n },\n USD: {\n currency: 'USD',\n currencyCode: 'USD',\n currencyName: 'United States Dollar',\n currencyCodeHash: currencyKeccak256('USD'),\n currencySymbol: '$',\n countryCode: 'us',\n },\n VND: {\n currency: 'VND',\n currencyCode: 'VND',\n currencyName: 'Vietnamese Dong',\n currencyCodeHash: currencyKeccak256('VND'),\n currencySymbol: '₫',\n countryCode: 'vn',\n },\n ZAR: {\n currency: 'ZAR',\n currencyCode: 'ZAR',\n currencyName: 'South African Rand',\n currencyCodeHash: currencyKeccak256('ZAR'),\n currencySymbol: 'R',\n countryCode: 'za',\n },\n} as unknown as Record<CurrencyType, CurrencyData>;\n\n/**\n * UI-friendly currency rate structure used in SDK methods.\n */\nexport type UICurrencyRate = { currency: CurrencyType; conversionRate: string };\n\n/**\n * On-chain currency structure with bytes32 code and bigint rate.\n */\nexport type OnchainCurrency = { code: `0x${string}`; conversionRate: bigint };\n\n/**\n * Maps UI currency rates to on-chain format.\n *\n * @param groups - Nested array of currency rates per payment method\n * @param expectedGroups - Expected number of groups (for validation)\n * @returns On-chain formatted currency arrays\n * @throws Error if groups structure is invalid or lengths don't match\n *\n * @internal Used by createDeposit internally\n */\nexport function mapConversionRatesToOnchain(\n groups: UICurrencyRate[][],\n expectedGroups?: number,\n): OnchainCurrency[][] {\n if (!Array.isArray(groups) || !Array.isArray(groups[0])) {\n throw new Error('conversionRates must be a nested array per processor');\n }\n if (typeof expectedGroups === 'number' && groups.length !== expectedGroups) {\n throw new Error(\n `conversionRates length (${groups.length}) must match processorNames length (${expectedGroups})`,\n );\n }\n return groups.map((group) =>\n group.map((r) => {\n const info = currencyInfo[r.currency as CurrencyType];\n if (!info?.currencyCodeHash) throw new Error('Invalid currency');\n return {\n code: info.currencyCodeHash as `0x${string}`,\n conversionRate: BigInt(r.conversionRate),\n };\n }),\n );\n}\n\n/**\n * On-chain currency structure with minimum conversion rate (V3 escrow format).\n */\nexport type OnchainCurrencyMinRate = { code: `0x${string}`; minConversionRate: bigint };\n\n/**\n * Maps UI currency rates to on-chain V3 escrow format with minConversionRate.\n *\n * @param groups - Nested array of currency rates per payment method\n * @param expectedGroups - Expected number of groups (for validation)\n * @returns On-chain formatted currency arrays for V3 escrow\n * @throws Error if groups structure is invalid or lengths don't match\n */\nexport function mapConversionRatesToOnchainMinRate(\n groups: UICurrencyRate[][],\n expectedGroups?: number,\n): OnchainCurrencyMinRate[][] {\n if (!Array.isArray(groups) || !Array.isArray(groups[0])) {\n throw new Error('conversionRates must be a nested array per payment method');\n }\n if (typeof expectedGroups === 'number' && groups.length !== expectedGroups) {\n throw new Error(\n `conversionRates length (${groups.length}) must match processorNames length (${expectedGroups})`,\n );\n }\n return groups.map((group) =>\n group.map((r) => {\n const info = currencyInfo[r.currency as CurrencyType];\n const hash = info?.currencyCodeHash as `0x${string}` | undefined;\n if (!hash) throw new Error(`Invalid currency: ${r.currency}`);\n return { code: hash, minConversionRate: BigInt(r.conversionRate) };\n }),\n );\n}\n\n/**\n * Looks up currency info by its keccak256 hash.\n *\n * @param hash - The currency code hash (0x-prefixed)\n * @returns Currency data if found, undefined otherwise\n *\n * @example\n * ```typescript\n * const info = getCurrencyInfoFromHash('0x...');\n * if (info) {\n * console.log(info.currencyCode); // \"USD\"\n * }\n * ```\n */\nexport function getCurrencyInfoFromHash(hash: string): CurrencyData | undefined {\n if (!hash) return undefined;\n const h = hash.toLowerCase();\n for (const key of Object.keys(currencyInfo) as Array<keyof typeof currencyInfo>) {\n const info = currencyInfo[key];\n if (info?.currencyCodeHash?.toLowerCase() === h) return info;\n }\n return undefined;\n}\n\n/**\n * Looks up currency info by ISO country code.\n *\n * @param code - The ISO country code (e.g., 'US', 'GB')\n * @returns Currency data if found, undefined otherwise\n */\nexport function getCurrencyInfoFromCountryCode(code: string): CurrencyData | undefined {\n if (!code) return undefined;\n const upper = code.toUpperCase() as CurrencyType;\n return currencyInfo[upper];\n}\n\n/**\n * Converts a currency hash to its ISO currency code.\n *\n * @param hash - The currency code hash (0x-prefixed)\n * @returns Currency code string (e.g., 'USD') or undefined if not found\n *\n * @example\n * ```typescript\n * const code = getCurrencyCodeFromHash('0x...');\n * console.log(code); // \"USD\"\n * ```\n */\nexport function getCurrencyCodeFromHash(hash: string): string | undefined {\n return getCurrencyInfoFromHash(hash)?.currencyCode;\n}\n\n/**\n * Checks if a currency hash is recognized by the SDK.\n *\n * @param hash - The currency code hash to check\n * @returns true if the hash corresponds to a supported currency\n */\nexport function isSupportedCurrencyHash(hash: string): boolean {\n return Boolean(getCurrencyInfoFromHash(hash));\n}\n"]}
@@ -1,4 +1,4 @@
1
- export { Currency, currencyInfo, getCurrencyCodeFromHash, getCurrencyInfoFromCountryCode, getCurrencyInfoFromHash, isSupportedCurrencyHash, mapConversionRatesToOnchain, mapConversionRatesToOnchainMinRate } from './chunk-ZFBH4HD7.mjs';
2
- import './chunk-J5LGTIGS.mjs';
3
- //# sourceMappingURL=currency-MARF3D2J.mjs.map
4
- //# sourceMappingURL=currency-MARF3D2J.mjs.map
1
+ export { Currency, currencyInfo, getCurrencyCodeFromHash, getCurrencyInfoFromCountryCode, getCurrencyInfoFromHash, isSupportedCurrencyHash, mapConversionRatesToOnchain, mapConversionRatesToOnchainMinRate } from './chunk-ZB22BZLZ.mjs';
2
+ import './chunk-NCX4BO7G.mjs';
3
+ //# sourceMappingURL=currency-XA62DCJH.mjs.map
4
+ //# sourceMappingURL=currency-XA62DCJH.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"currency-MARF3D2J.mjs"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"currency-XA62DCJH.mjs"}