@zkp2p/sdk 0.0.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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/contracts.ts","../src/utils/protocolViewerParsers.ts"],"names":[],"mappings":"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","file":"chunk-O7DHVBCL.mjs","sourcesContent":["/**\n * Contract resolution utilities for the SDK.\n *\n * Provides access to deployed contract addresses and ABIs for different\n * networks (Base, Base Sepolia) and environments (production, staging).\n *\n * @module contracts\n */\n\nimport type { Abi } from 'abitype';\n\n// Typed imports from @zkp2p/contracts-v2 (module declarations provided in src/@types)\n// Use *Raw suffix for imports that need runtime normalization (addresses, constants)\nimport baseAddressesRaw from '@zkp2p/contracts-v2/addresses/base';\nimport baseSepoliaAddressesRaw from '@zkp2p/contracts-v2/addresses/baseSepolia';\nimport baseStagingAddressesRaw from '@zkp2p/contracts-v2/addresses/baseStaging';\n\nimport EscrowBase from '@zkp2p/contracts-v2/abis/base/Escrow.json';\nimport OrchestratorBase from '@zkp2p/contracts-v2/abis/base/Orchestrator.json';\nimport ProtocolViewerBase from '@zkp2p/contracts-v2/abis/base/ProtocolViewer.json';\nimport UnifiedPaymentVerifierBase from '@zkp2p/contracts-v2/abis/base/UnifiedPaymentVerifier.json';\n\nimport EscrowBaseSepolia from '@zkp2p/contracts-v2/abis/baseSepolia/Escrow.json';\nimport OrchestratorBaseSepolia from '@zkp2p/contracts-v2/abis/baseSepolia/Orchestrator.json';\nimport ProtocolViewerBaseSepolia from '@zkp2p/contracts-v2/abis/baseSepolia/ProtocolViewer.json';\nimport UnifiedPaymentVerifierBaseSepolia from '@zkp2p/contracts-v2/abis/baseSepolia/UnifiedPaymentVerifier.json';\n\nimport EscrowBaseStaging from '@zkp2p/contracts-v2/abis/baseStaging/Escrow.json';\nimport OrchestratorBaseStaging from '@zkp2p/contracts-v2/abis/baseStaging/Orchestrator.json';\nimport UnifiedPaymentVerifierBaseStaging from '@zkp2p/contracts-v2/abis/baseStaging/UnifiedPaymentVerifier.json';\nimport ProtocolViewerBaseStaging from '@zkp2p/contracts-v2/abis/baseStaging/ProtocolViewer.json';\n\nimport baseConstantsRaw from '@zkp2p/contracts-v2/constants/base';\nimport baseStagingConstantsRaw from '@zkp2p/contracts-v2/constants/baseStaging';\n// Payment methods catalogs (JSON). Import statically so ESM bundlers include the data.\n// These modules are present in @zkp2p/contracts-v2; tsconfig sets resolveJsonModule: true\nimport basePaymentMethodsRaw from '@zkp2p/contracts-v2/paymentMethods/base.json';\nimport baseSepoliaPaymentMethodsRaw from '@zkp2p/contracts-v2/paymentMethods/baseSepolia.json';\nimport baseStagingPaymentMethodsRaw from '@zkp2p/contracts-v2/paymentMethods/baseStaging.json';\n\n// ---------------------------------------------------------------------------\n// Runtime normalization helpers for ESM/CJS interoperability\n// ---------------------------------------------------------------------------\n// In certain runtimes (tsx, Node ESM), deep imports from @zkp2p/contracts-v2\n// resolve as { default: [Getter] } or { default: { contracts: {...} } } instead\n// of the expected shape. These helpers unwrap the actual data regardless of shape.\n\n/**\n * Normalize address module shape. Handles:\n * - { contracts: {...} } (direct)\n * - { default: { contracts: {...} } } (wrapped)\n * - { default: [Getter] } (lazy)\n */\nfunction unwrapAddresses(mod: unknown): { name?: string; chainId?: number; contracts?: Record<string, `0x${string}`> } {\n if (!mod) return {} as ReturnType<typeof unwrapAddresses>;\n const m = mod as Record<string, unknown>;\n // Direct shape\n if (m.contracts) return m as ReturnType<typeof unwrapAddresses>;\n // Wrapped shape\n if ((m.default as Record<string, unknown>)?.contracts) return m.default as ReturnType<typeof unwrapAddresses>;\n // Lazy getter shape\n try {\n const d = typeof m.default === 'function' ? (m.default as () => unknown)() : m.default;\n if ((d as Record<string, unknown>)?.contracts) return d as ReturnType<typeof unwrapAddresses>;\n } catch {\n // ignore\n }\n return m as ReturnType<typeof unwrapAddresses>;\n}\n\n/**\n * Normalize payment methods module shape. Handles:\n * - { methods: {...} } (direct)\n * - { default: { methods: {...} } } (wrapped)\n * - { default: [Getter] } (lazy)\n */\nfunction unwrapMethods(mod: unknown): { methods?: Record<string, { paymentMethodHash: `0x${string}`; currencies?: `0x${string}`[] }> } {\n if (!mod) return {} as ReturnType<typeof unwrapMethods>;\n const m = mod as Record<string, unknown>;\n if (m.methods) return m as ReturnType<typeof unwrapMethods>;\n if ((m.default as Record<string, unknown>)?.methods) return m.default as ReturnType<typeof unwrapMethods>;\n try {\n const d = typeof m.default === 'function' ? (m.default as () => unknown)() : m.default;\n if ((d as Record<string, unknown>)?.methods) return d as ReturnType<typeof unwrapMethods>;\n } catch {\n // ignore\n }\n return m as ReturnType<typeof unwrapMethods>;\n}\n\n/**\n * Normalize constants module shape (for USDC address, etc.)\n */\nfunction unwrapConstants(mod: unknown): Record<string, unknown> {\n if (!mod) return {};\n const m = mod as Record<string, unknown>;\n if (m.USDC) return m;\n if ((m.default as Record<string, unknown>)?.USDC) return m.default as Record<string, unknown>;\n try {\n const d = typeof m.default === 'function' ? (m.default as () => unknown)() : m.default;\n if ((d as Record<string, unknown>)?.USDC) return d as Record<string, unknown>;\n } catch {\n // ignore\n }\n return m;\n}\n\n// Apply runtime normalization to all imports\nconst baseAddresses = unwrapAddresses(baseAddressesRaw);\nconst baseSepoliaAddresses = unwrapAddresses(baseSepoliaAddressesRaw);\nconst baseStagingAddresses = unwrapAddresses(baseStagingAddressesRaw);\nconst basePaymentMethods = unwrapMethods(basePaymentMethodsRaw);\nconst baseSepoliaPaymentMethods = unwrapMethods(baseSepoliaPaymentMethodsRaw);\nconst baseStagingPaymentMethods = unwrapMethods(baseStagingPaymentMethodsRaw);\nconst baseConstants = unwrapConstants(baseConstantsRaw);\nconst baseStagingConstants = unwrapConstants(baseStagingConstantsRaw);\n\n/**\n * Contract addresses for a specific deployment.\n */\nexport type V2ContractAddresses = {\n /** Escrow contract (holds deposits and manages intents) */\n escrow: `0x${string}`;\n /** Orchestrator contract (handles intent signaling and fulfillment) */\n orchestrator?: `0x${string}`;\n /** UnifiedPaymentVerifier contract (verifies payment proofs) */\n unifiedPaymentVerifier?: `0x${string}`;\n /** ProtocolViewer contract (batch read operations) */\n protocolViewer?: `0x${string}`;\n /** USDC token address */\n usdc?: `0x${string}`;\n};\n\n/**\n * Contract ABIs for a specific deployment.\n */\nexport type V2ContractAbis = {\n escrow: Abi;\n orchestrator?: Abi;\n unifiedPaymentVerifier?: Abi;\n protocolViewer?: Abi;\n};\n\n/**\n * Runtime environment: 'production' for mainnet, 'staging' for testnet/dev.\n */\nexport type RuntimeEnv = 'production' | 'staging';\n\n/**\n * Converts a chain ID to its network key.\n * @internal\n */\nexport function networkKeyFromChainId(chainId: number): 'base' | 'base_sepolia' {\n if (chainId === 84532) return 'base_sepolia';\n return 'base';\n}\n\n/**\n * Retrieves deployed contract addresses and ABIs for a given chain and environment.\n *\n * @param chainId - The chain ID (8453 for Base, 84532 for Base Sepolia)\n * @param env - Runtime environment ('production' or 'staging')\n * @returns Object containing addresses and ABIs\n *\n * @example\n * ```typescript\n * import { getContracts } from '@zkp2p/client-sdk';\n *\n * const { addresses, abis } = getContracts(8453, 'production');\n * console.log(addresses.escrow); // \"0x...\"\n * console.log(addresses.usdc); // \"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913\"\n * ```\n */\nexport function getContracts(chainId: number, env: RuntimeEnv = 'production'): { addresses: V2ContractAddresses; abis: V2ContractAbis } {\n const key = networkKeyFromChainId(chainId);\n\n const addressesByKey: Record<'base' | 'base_sepolia', V2ContractAddresses> = {\n base: {\n escrow: (baseAddresses.contracts?.Escrow ?? '') as `0x${string}`,\n orchestrator: (baseAddresses.contracts?.Orchestrator ?? '') as `0x${string}`,\n unifiedPaymentVerifier: (baseAddresses.contracts?.UnifiedPaymentVerifier ?? '') as `0x${string}`,\n protocolViewer: (baseAddresses.contracts?.ProtocolViewer ?? '') as `0x${string}`,\n usdc: (baseConstants as any).USDC,\n },\n base_sepolia: {\n escrow: (baseSepoliaAddresses.contracts?.Escrow ?? '') as `0x${string}`,\n orchestrator: (baseSepoliaAddresses.contracts?.Orchestrator ?? '') as `0x${string}`,\n unifiedPaymentVerifier: (baseSepoliaAddresses.contracts?.UnifiedPaymentVerifier ?? '') as `0x${string}`,\n protocolViewer: (baseSepoliaAddresses.contracts?.ProtocolViewer ?? '') as `0x${string}`,\n // Prefer mock USDC when available on testnet\n usdc: (baseSepoliaAddresses.contracts as any)?.USDCMock as `0x${string}` | undefined,\n },\n };\n\n const abisByKey: Record<'base' | 'base_sepolia', V2ContractAbis> = {\n base: {\n escrow: EscrowBase as unknown as Abi,\n orchestrator: OrchestratorBase as unknown as Abi,\n unifiedPaymentVerifier: UnifiedPaymentVerifierBase as unknown as Abi,\n protocolViewer: ProtocolViewerBase as unknown as Abi,\n },\n base_sepolia: {\n escrow: EscrowBaseSepolia as unknown as Abi,\n orchestrator: OrchestratorBaseSepolia as unknown as Abi,\n unifiedPaymentVerifier: UnifiedPaymentVerifierBaseSepolia as unknown as Abi,\n protocolViewer: ProtocolViewerBaseSepolia as unknown as Abi,\n },\n };\n\n // Staging overrides (custom addresses/abis)\n if (env === 'staging') {\n return {\n addresses: {\n escrow: (baseStagingAddresses.contracts?.Escrow ?? '') as `0x${string}`,\n orchestrator: (baseStagingAddresses.contracts?.Orchestrator ?? '') as `0x${string}`,\n unifiedPaymentVerifier: (baseStagingAddresses.contracts?.UnifiedPaymentVerifier ?? '') as `0x${string}`,\n protocolViewer: (baseStagingAddresses.contracts?.ProtocolViewer ?? '') as `0x${string}`,\n usdc: (baseStagingConstants as any).USDC,\n },\n abis: {\n escrow: EscrowBaseStaging as unknown as Abi,\n orchestrator: OrchestratorBaseStaging as unknown as Abi,\n unifiedPaymentVerifier: UnifiedPaymentVerifierBaseStaging as unknown as Abi,\n protocolViewer: ProtocolViewerBaseStaging as unknown as Abi,\n },\n };\n }\n\n return { addresses: addressesByKey[key], abis: abisByKey[key] };\n}\n\n/**\n * Catalog of payment methods with their hashes and supported currencies.\n */\nexport type PaymentMethodCatalog = Record<string, { paymentMethodHash: `0x${string}`; currencies?: `0x${string}`[] }>;\n\n/**\n * Retrieves the payment methods catalog for a given chain and environment.\n *\n * The catalog maps payment platform names (e.g., 'wise', 'revolut') to their\n * on-chain hashes and supported currency hashes.\n *\n * @param chainId - The chain ID\n * @param env - Runtime environment\n * @returns Payment method catalog keyed by platform name\n *\n * @example\n * ```typescript\n * import { getPaymentMethodsCatalog } from '@zkp2p/client-sdk';\n *\n * const catalog = getPaymentMethodsCatalog(8453, 'production');\n * console.log(Object.keys(catalog)); // ['wise', 'venmo', 'revolut', ...]\n * console.log(catalog.wise.paymentMethodHash); // \"0x...\"\n * console.log(catalog.wise.currencies); // [\"0x...\", \"0x...\"] (currency hashes)\n * ```\n */\nexport function getPaymentMethodsCatalog(chainId: number, env: RuntimeEnv = 'production'): PaymentMethodCatalog {\n const isBaseSepolia = networkKeyFromChainId(chainId) === 'base_sepolia';\n const src = env === 'staging'\n ? (baseStagingPaymentMethods as any)\n : (isBaseSepolia ? (baseSepoliaPaymentMethods as any) : (basePaymentMethods as any));\n const methods = (src?.methods ?? src?.default?.methods ?? {}) as PaymentMethodCatalog;\n return methods;\n}\n\n/**\n * Returns the gating service address for a given chain and environment.\n *\n * The gating service signs intent parameters before they can be submitted\n * on-chain, providing an additional validation layer.\n *\n * @param chainId - The chain ID\n * @param env - Runtime environment\n * @returns Gating service signer address\n */\nexport function getGatingServiceAddress(chainId: number, env: RuntimeEnv = 'production'): `0x${string}` {\n // Base Staging & Production share the same gating service in current deployments\n if (env === 'staging') {\n return '0x396D31055Db28C0C6f36e8b36f18FE7227248a97' as `0x${string}`;\n }\n // Testnets / Base Sepolia often use a dev signer (Hardhat 0)\n if (networkKeyFromChainId(chainId) === 'base_sepolia') {\n return '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266' as `0x${string}`;\n }\n // Base mainnet (production)\n return '0x396D31055Db28C0C6f36e8b36f18FE7227248a97' as `0x${string}`;\n}\n","function toBigInt(v: any): bigint {\n if (typeof v === 'bigint') return v;\n if (typeof v === 'number') return BigInt(v);\n if (typeof v === 'string') return BigInt(v);\n if (v && typeof v.toString === 'function') return BigInt(v.toString());\n throw new Error('Unsupported numeric type for bigint conversion');\n}\n\nexport type PV_Deposit = {\n depositor: string;\n delegate: string;\n token: string;\n amount: bigint;\n intentAmountRange: { min: bigint; max: bigint };\n acceptingIntents: boolean;\n remainingDeposits: bigint;\n outstandingIntentAmount: bigint;\n makerProtocolFee: bigint;\n reservedMakerFees: bigint;\n accruedMakerFees: bigint;\n accruedReferrerFees: bigint;\n intentGuardian: string;\n referrer: string;\n referrerFee: bigint;\n};\n\nexport type PV_Currency = { code: string; minConversionRate: bigint };\nexport type PV_PaymentMethodData = {\n paymentMethod: string; // bytes32\n verificationData: {\n intentGatingService: string;\n payeeDetails: string; // bytes32\n data: string; // bytes\n };\n currencies: PV_Currency[];\n};\n\nexport type PV_DepositView = {\n depositId: bigint;\n deposit: PV_Deposit;\n availableLiquidity: bigint;\n paymentMethods: PV_PaymentMethodData[];\n intentHashes: string[];\n};\n\nexport type PV_Intent = {\n owner: string;\n to: string;\n escrow: string;\n depositId: bigint;\n amount: bigint;\n timestamp: bigint;\n paymentMethod: string; // bytes32\n fiatCurrency: string; // bytes32\n conversionRate: bigint;\n referrer: string;\n referrerFee: bigint;\n postIntentHook: string;\n data: string;\n};\n\nexport type PV_IntentView = {\n intentHash: string;\n intent: PV_Intent;\n deposit: Omit<PV_DepositView, 'intentHashes'>;\n};\n\nexport function parseDepositView(raw: any): PV_DepositView {\n return {\n depositId: toBigInt(raw.depositId),\n deposit: {\n depositor: raw.deposit.depositor,\n delegate: raw.deposit.delegate,\n token: raw.deposit.token,\n amount: toBigInt(raw.deposit.amount),\n intentAmountRange: {\n min: toBigInt(raw.deposit.intentAmountRange.min),\n max: toBigInt(raw.deposit.intentAmountRange.max),\n },\n acceptingIntents: raw.deposit.acceptingIntents,\n remainingDeposits: toBigInt(raw.deposit.remainingDeposits),\n outstandingIntentAmount: toBigInt(raw.deposit.outstandingIntentAmount),\n makerProtocolFee: toBigInt(raw.deposit.makerProtocolFee ?? 0),\n reservedMakerFees: toBigInt(raw.deposit.reservedMakerFees ?? 0),\n accruedMakerFees: toBigInt(raw.deposit.accruedMakerFees ?? 0),\n accruedReferrerFees: toBigInt(raw.deposit.accruedReferrerFees ?? 0),\n intentGuardian: raw.deposit.intentGuardian,\n referrer: raw.deposit.referrer,\n referrerFee: toBigInt(raw.deposit.referrerFee ?? 0),\n },\n availableLiquidity: toBigInt(raw.availableLiquidity),\n paymentMethods: (raw.paymentMethods || []).map((pm: any) => ({\n paymentMethod: pm.paymentMethod,\n verificationData: {\n intentGatingService: pm.verificationData.intentGatingService,\n payeeDetails: pm.verificationData.payeeDetails,\n data: pm.verificationData.data,\n },\n currencies: (pm.currencies || []).map((c: any) => ({\n code: c.code,\n minConversionRate: toBigInt(c.minConversionRate),\n })),\n })),\n intentHashes: raw.intentHashes || [],\n };\n}\n\nexport function parseIntentView(raw: any): PV_IntentView {\n const parsedDeposit = parseDepositView(raw.deposit);\n const deposit: Omit<PV_DepositView, 'intentHashes'> = {\n depositId: parsedDeposit.depositId,\n deposit: parsedDeposit.deposit,\n availableLiquidity: parsedDeposit.availableLiquidity,\n paymentMethods: parsedDeposit.paymentMethods,\n };\n return {\n intentHash: raw.intentHash,\n intent: {\n owner: raw.intent.owner,\n to: raw.intent.to,\n escrow: raw.intent.escrow,\n depositId: toBigInt(raw.intent.depositId),\n amount: toBigInt(raw.intent.amount),\n timestamp: toBigInt(raw.intent.timestamp),\n paymentMethod: raw.intent.paymentMethod,\n fiatCurrency: raw.intent.fiatCurrency,\n conversionRate: toBigInt(raw.intent.conversionRate),\n referrer: raw.intent.referrer,\n referrerFee: toBigInt(raw.intent.referrerFee ?? 0),\n postIntentHook: raw.intent.postIntentHook,\n data: raw.intent.data,\n },\n deposit,\n };\n}\n\n// Enrichment helpers for dashboards/explorers\nimport { getPaymentMethodsCatalog, type RuntimeEnv } from '../contracts';\nimport { resolvePaymentMethodNameFromHash } from './paymentResolution';\nimport { getCurrencyInfoFromHash } from './currency';\n\nexport function enrichPvDepositView(view: PV_DepositView, chainId: number, env: RuntimeEnv = 'production') {\n const catalog = getPaymentMethodsCatalog(chainId, env);\n return {\n ...view,\n paymentMethods: view.paymentMethods.map((pm) => ({\n ...pm,\n processorName: resolvePaymentMethodNameFromHash(pm.paymentMethod, catalog),\n currencies: pm.currencies.map((c) => ({\n ...c,\n currencyInfo: getCurrencyInfoFromHash(c.code),\n })),\n })),\n };\n}\n\nexport function enrichPvIntentView(view: PV_IntentView, chainId: number, env: RuntimeEnv = 'production') {\n const catalog = getPaymentMethodsCatalog(chainId, env);\n return {\n ...view,\n intent: {\n ...view.intent,\n processorName: resolvePaymentMethodNameFromHash(view.intent.paymentMethod, catalog),\n currencyInfo: getCurrencyInfoFromHash(view.intent.fiatCurrency),\n },\n deposit: enrichPvDepositView(view.deposit as any, chainId, env),\n } as any;\n}\n"]}
@@ -0,0 +1,131 @@
1
+ import { keccak256, stringToHex } from 'viem';
2
+
3
+ // src/utils/keccak.ts
4
+ var currencyKeccak256 = (inputString) => {
5
+ return keccak256(stringToHex(inputString));
6
+ };
7
+
8
+ // src/utils/currency.ts
9
+ var Currency = {
10
+ AED: "AED",
11
+ ARS: "ARS",
12
+ AUD: "AUD",
13
+ CAD: "CAD",
14
+ CHF: "CHF",
15
+ CNY: "CNY",
16
+ CZK: "CZK",
17
+ DKK: "DKK",
18
+ EUR: "EUR",
19
+ GBP: "GBP",
20
+ HKD: "HKD",
21
+ HUF: "HUF",
22
+ IDR: "IDR",
23
+ ILS: "ILS",
24
+ INR: "INR",
25
+ JPY: "JPY",
26
+ KES: "KES",
27
+ MXN: "MXN",
28
+ MYR: "MYR",
29
+ NOK: "NOK",
30
+ NZD: "NZD",
31
+ PHP: "PHP",
32
+ PLN: "PLN",
33
+ RON: "RON",
34
+ SAR: "SAR",
35
+ SEK: "SEK",
36
+ SGD: "SGD",
37
+ THB: "THB",
38
+ TRY: "TRY",
39
+ UGX: "UGX",
40
+ USD: "USD",
41
+ VND: "VND",
42
+ ZAR: "ZAR"
43
+ };
44
+ var currencyInfo = {
45
+ AED: { currency: "AED", currencyCode: "AED", currencyName: "United Arab Emirates Dirham", currencyCodeHash: currencyKeccak256("AED"), currencySymbol: "\u062F.\u0625", countryCode: "ae" },
46
+ ARS: { currency: "ARS", currencyCode: "ARS", currencyName: "Argentine Peso", currencyCodeHash: currencyKeccak256("ARS"), currencySymbol: "$", countryCode: "ar" },
47
+ AUD: { currency: "AUD", currencyCode: "AUD", currencyName: "Australian Dollar", currencyCodeHash: currencyKeccak256("AUD"), currencySymbol: "A$", countryCode: "au" },
48
+ CAD: { currency: "CAD", currencyCode: "CAD", currencyName: "Canadian Dollar", currencyCodeHash: currencyKeccak256("CAD"), currencySymbol: "C$", countryCode: "ca" },
49
+ CHF: { currency: "CHF", currencyCode: "CHF", currencyName: "Swiss Franc", currencyCodeHash: currencyKeccak256("CHF"), currencySymbol: "Fr", countryCode: "ch" },
50
+ CNY: { currency: "CNY", currencyCode: "CNY", currencyName: "Chinese Yuan", currencyCodeHash: currencyKeccak256("CNY"), currencySymbol: "\xA5", countryCode: "cn" },
51
+ CZK: { currency: "CZK", currencyCode: "CZK", currencyName: "Czech Koruna", currencyCodeHash: currencyKeccak256("CZK"), currencySymbol: "K\u010D", countryCode: "cz" },
52
+ DKK: { currency: "DKK", currencyCode: "DKK", currencyName: "Danish Krone", currencyCodeHash: currencyKeccak256("DKK"), currencySymbol: "kr", countryCode: "dk" },
53
+ EUR: { currency: "EUR", currencyCode: "EUR", currencyName: "Euro", currencyCodeHash: currencyKeccak256("EUR"), currencySymbol: "\u20AC", countryCode: "eu" },
54
+ GBP: { currency: "GBP", currencyCode: "GBP", currencyName: "British Pound", currencyCodeHash: currencyKeccak256("GBP"), currencySymbol: "\xA3", countryCode: "gb" },
55
+ HKD: { currency: "HKD", currencyCode: "HKD", currencyName: "Hong Kong Dollar", currencyCodeHash: currencyKeccak256("HKD"), currencySymbol: "HK$", countryCode: "hk" },
56
+ HUF: { currency: "HUF", currencyCode: "HUF", currencyName: "Hungarian Forint", currencyCodeHash: currencyKeccak256("HUF"), currencySymbol: "Ft", countryCode: "hu" },
57
+ IDR: { currency: "IDR", currencyCode: "IDR", currencyName: "Indonesian Rupiah", currencyCodeHash: currencyKeccak256("IDR"), currencySymbol: "Rp", countryCode: "id" },
58
+ ILS: { currency: "ILS", currencyCode: "ILS", currencyName: "Israeli New Shekel", currencyCodeHash: currencyKeccak256("ILS"), currencySymbol: "\u20AA", countryCode: "il" },
59
+ INR: { currency: "INR", currencyCode: "INR", currencyName: "Indian Rupee", currencyCodeHash: currencyKeccak256("INR"), currencySymbol: "\u20B9", countryCode: "in" },
60
+ JPY: { currency: "JPY", currencyCode: "JPY", currencyName: "Japanese Yen", currencyCodeHash: currencyKeccak256("JPY"), currencySymbol: "\xA5", countryCode: "jp" },
61
+ KES: { currency: "KES", currencyCode: "KES", currencyName: "Kenyan Shilling", currencyCodeHash: currencyKeccak256("KES"), currencySymbol: "KSh", countryCode: "ke" },
62
+ MXN: { currency: "MXN", currencyCode: "MXN", currencyName: "Mexican Peso", currencyCodeHash: currencyKeccak256("MXN"), currencySymbol: "$", countryCode: "mx" },
63
+ MYR: { currency: "MYR", currencyCode: "MYR", currencyName: "Malaysian Ringgit", currencyCodeHash: currencyKeccak256("MYR"), currencySymbol: "RM", countryCode: "my" },
64
+ NOK: { currency: "NOK", currencyCode: "NOK", currencyName: "Norwegian Krone", currencyCodeHash: currencyKeccak256("NOK"), currencySymbol: "kr", countryCode: "no" },
65
+ NZD: { currency: "NZD", currencyCode: "NZD", currencyName: "New Zealand Dollar", currencyCodeHash: currencyKeccak256("NZD"), currencySymbol: "NZ$", countryCode: "nz" },
66
+ PHP: { currency: "PHP", currencyCode: "PHP", currencyName: "Philippine Peso", currencyCodeHash: currencyKeccak256("PHP"), currencySymbol: "\u20B1", countryCode: "ph" },
67
+ PLN: { currency: "PLN", currencyCode: "PLN", currencyName: "Polish Z\u0142oty", currencyCodeHash: currencyKeccak256("PLN"), currencySymbol: "z\u0142", countryCode: "pl" },
68
+ RON: { currency: "RON", currencyCode: "RON", currencyName: "Romanian Leu", currencyCodeHash: currencyKeccak256("RON"), currencySymbol: "lei", countryCode: "ro" },
69
+ SAR: { currency: "SAR", currencyCode: "SAR", currencyName: "Saudi Riyal", currencyCodeHash: currencyKeccak256("SAR"), currencySymbol: "\uFDFC", countryCode: "sa" },
70
+ SEK: { currency: "SEK", currencyCode: "SEK", currencyName: "Swedish Krona", currencyCodeHash: currencyKeccak256("SEK"), currencySymbol: "kr", countryCode: "se" },
71
+ SGD: { currency: "SGD", currencyCode: "SGD", currencyName: "Singapore Dollar", currencyCodeHash: currencyKeccak256("SGD"), currencySymbol: "S$", countryCode: "sg" },
72
+ THB: { currency: "THB", currencyCode: "THB", currencyName: "Thai Baht", currencyCodeHash: currencyKeccak256("THB"), currencySymbol: "\u0E3F", countryCode: "th" },
73
+ TRY: { currency: "TRY", currencyCode: "TRY", currencyName: "Turkish Lira", currencyCodeHash: currencyKeccak256("TRY"), currencySymbol: "\u20BA", countryCode: "tr" },
74
+ UGX: { currency: "UGX", currencyCode: "UGX", currencyName: "Ugandan Shilling", currencyCodeHash: currencyKeccak256("UGX"), currencySymbol: "USh", countryCode: "ug" },
75
+ USD: { currency: "USD", currencyCode: "USD", currencyName: "United States Dollar", currencyCodeHash: currencyKeccak256("USD"), currencySymbol: "$", countryCode: "us" },
76
+ VND: { currency: "VND", currencyCode: "VND", currencyName: "Vietnamese Dong", currencyCodeHash: currencyKeccak256("VND"), currencySymbol: "\u20AB", countryCode: "vn" },
77
+ ZAR: { currency: "ZAR", currencyCode: "ZAR", currencyName: "South African Rand", currencyCodeHash: currencyKeccak256("ZAR"), currencySymbol: "R", countryCode: "za" }
78
+ };
79
+ function mapConversionRatesToOnchain(groups, expectedGroups) {
80
+ if (!Array.isArray(groups) || !Array.isArray(groups[0])) {
81
+ throw new Error("conversionRates must be a nested array per processor");
82
+ }
83
+ if (typeof expectedGroups === "number" && groups.length !== expectedGroups) {
84
+ throw new Error(`conversionRates length (${groups.length}) must match processorNames length (${expectedGroups})`);
85
+ }
86
+ return groups.map((group) => group.map((r) => {
87
+ const info = currencyInfo[r.currency];
88
+ if (!info?.currencyCodeHash) throw new Error("Invalid currency");
89
+ return { code: info.currencyCodeHash, conversionRate: BigInt(r.conversionRate) };
90
+ }));
91
+ }
92
+ function mapConversionRatesToOnchainMinRate(groups, expectedGroups) {
93
+ if (!Array.isArray(groups) || !Array.isArray(groups[0])) {
94
+ throw new Error("conversionRates must be a nested array per payment method");
95
+ }
96
+ if (typeof expectedGroups === "number" && groups.length !== expectedGroups) {
97
+ throw new Error(`conversionRates length (${groups.length}) must match processorNames length (${expectedGroups})`);
98
+ }
99
+ return groups.map(
100
+ (group) => group.map((r) => {
101
+ const info = currencyInfo[r.currency];
102
+ const hash = info?.currencyCodeHash;
103
+ if (!hash) throw new Error(`Invalid currency: ${r.currency}`);
104
+ return { code: hash, minConversionRate: BigInt(r.conversionRate) };
105
+ })
106
+ );
107
+ }
108
+ function getCurrencyInfoFromHash(hash) {
109
+ if (!hash) return void 0;
110
+ const h = hash.toLowerCase();
111
+ for (const key of Object.keys(currencyInfo)) {
112
+ const info = currencyInfo[key];
113
+ if (info?.currencyCodeHash?.toLowerCase() === h) return info;
114
+ }
115
+ return void 0;
116
+ }
117
+ function getCurrencyInfoFromCountryCode(code) {
118
+ if (!code) return void 0;
119
+ const upper = code.toUpperCase();
120
+ return currencyInfo[upper];
121
+ }
122
+ function getCurrencyCodeFromHash(hash) {
123
+ return getCurrencyInfoFromHash(hash)?.currencyCode;
124
+ }
125
+ function isSupportedCurrencyHash(hash) {
126
+ return Boolean(getCurrencyInfoFromHash(hash));
127
+ }
128
+
129
+ export { Currency, currencyInfo, currencyKeccak256, getCurrencyCodeFromHash, getCurrencyInfoFromCountryCode, getCurrencyInfoFromHash, isSupportedCurrencyHash, mapConversionRatesToOnchain, mapConversionRatesToOnchainMinRate };
130
+ //# sourceMappingURL=chunk-PBBMWRNE.mjs.map
131
+ //# sourceMappingURL=chunk-PBBMWRNE.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/keccak.ts","../src/utils/currency.ts"],"names":["_keccak256"],"mappings":"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","file":"chunk-PBBMWRNE.mjs","sourcesContent":["import { keccak256 as _keccak256, sha256 as _sha256, encodePacked, stringToHex } from 'viem';\n\nexport const keccak256 = (inputString: string): string => {\n // Equivalent to solidityKeccak256(['string'], [inputString])\n return _keccak256(encodePacked(['string'], [inputString]));\n};\n\nexport const currencyKeccak256 = (inputString: string): string => {\n // Raw keccak of UTF-8 bytes\n return _keccak256(stringToHex(inputString));\n};\n\nexport const sha256 = (inputString: string): string => {\n // Equivalent to soliditySha256(['string'], [inputString])\n return _sha256(encodePacked(['string'], [inputString]));\n};\n","import { currencyKeccak256 } from './keccak';\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/client-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 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/client-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: { currency: 'AED', currencyCode: 'AED', currencyName: 'United Arab Emirates Dirham', currencyCodeHash: currencyKeccak256('AED'), currencySymbol: 'د.إ', countryCode: 'ae' },\n ARS: { currency: 'ARS', currencyCode: 'ARS', currencyName: 'Argentine Peso', currencyCodeHash: currencyKeccak256('ARS'), currencySymbol: '$', countryCode: 'ar' },\n AUD: { currency: 'AUD', currencyCode: 'AUD', currencyName: 'Australian Dollar', currencyCodeHash: currencyKeccak256('AUD'), currencySymbol: 'A$', countryCode: 'au' },\n CAD: { currency: 'CAD', currencyCode: 'CAD', currencyName: 'Canadian Dollar', currencyCodeHash: currencyKeccak256('CAD'), currencySymbol: 'C$', countryCode: 'ca' },\n CHF: { currency: 'CHF', currencyCode: 'CHF', currencyName: 'Swiss Franc', currencyCodeHash: currencyKeccak256('CHF'), currencySymbol: 'Fr', countryCode: 'ch' },\n CNY: { currency: 'CNY', currencyCode: 'CNY', currencyName: 'Chinese Yuan', currencyCodeHash: currencyKeccak256('CNY'), currencySymbol: '¥', countryCode: 'cn' },\n CZK: { currency: 'CZK', currencyCode: 'CZK', currencyName: 'Czech Koruna', currencyCodeHash: currencyKeccak256('CZK'), currencySymbol: 'Kč', countryCode: 'cz' },\n DKK: { currency: 'DKK', currencyCode: 'DKK', currencyName: 'Danish Krone', currencyCodeHash: currencyKeccak256('DKK'), currencySymbol: 'kr', countryCode: 'dk' },\n EUR: { currency: 'EUR', currencyCode: 'EUR', currencyName: 'Euro', currencyCodeHash: currencyKeccak256('EUR'), currencySymbol: '€', countryCode: 'eu' },\n GBP: { currency: 'GBP', currencyCode: 'GBP', currencyName: 'British Pound', currencyCodeHash: currencyKeccak256('GBP'), currencySymbol: '£', countryCode: 'gb' },\n HKD: { currency: 'HKD', currencyCode: 'HKD', currencyName: 'Hong Kong Dollar', currencyCodeHash: currencyKeccak256('HKD'), currencySymbol: 'HK$', countryCode: 'hk' },\n HUF: { currency: 'HUF', currencyCode: 'HUF', currencyName: 'Hungarian Forint', currencyCodeHash: currencyKeccak256('HUF'), currencySymbol: 'Ft', countryCode: 'hu' },\n IDR: { currency: 'IDR', currencyCode: 'IDR', currencyName: 'Indonesian Rupiah', currencyCodeHash: currencyKeccak256('IDR'), currencySymbol: 'Rp', countryCode: 'id' },\n ILS: { currency: 'ILS', currencyCode: 'ILS', currencyName: 'Israeli New Shekel', currencyCodeHash: currencyKeccak256('ILS'), currencySymbol: '₪', countryCode: 'il' },\n INR: { currency: 'INR', currencyCode: 'INR', currencyName: 'Indian Rupee', currencyCodeHash: currencyKeccak256('INR'), currencySymbol: '₹', countryCode: 'in' },\n JPY: { currency: 'JPY', currencyCode: 'JPY', currencyName: 'Japanese Yen', currencyCodeHash: currencyKeccak256('JPY'), currencySymbol: '¥', countryCode: 'jp' },\n KES: { currency: 'KES', currencyCode: 'KES', currencyName: 'Kenyan Shilling', currencyCodeHash: currencyKeccak256('KES'), currencySymbol: 'KSh', countryCode: 'ke' },\n MXN: { currency: 'MXN', currencyCode: 'MXN', currencyName: 'Mexican Peso', currencyCodeHash: currencyKeccak256('MXN'), currencySymbol: '$', countryCode: 'mx' },\n MYR: { currency: 'MYR', currencyCode: 'MYR', currencyName: 'Malaysian Ringgit', currencyCodeHash: currencyKeccak256('MYR'), currencySymbol: 'RM', countryCode: 'my' },\n NOK: { currency: 'NOK', currencyCode: 'NOK', currencyName: 'Norwegian Krone', currencyCodeHash: currencyKeccak256('NOK'), currencySymbol: 'kr', countryCode: 'no' },\n NZD: { currency: 'NZD', currencyCode: 'NZD', currencyName: 'New Zealand Dollar', currencyCodeHash: currencyKeccak256('NZD'), currencySymbol: 'NZ$', countryCode: 'nz' },\n PHP: { currency: 'PHP', currencyCode: 'PHP', currencyName: 'Philippine Peso', currencyCodeHash: currencyKeccak256('PHP'), currencySymbol: '₱', countryCode: 'ph' },\n PLN: { currency: 'PLN', currencyCode: 'PLN', currencyName: 'Polish Złoty', currencyCodeHash: currencyKeccak256('PLN'), currencySymbol: 'zł', countryCode: 'pl' },\n RON: { currency: 'RON', currencyCode: 'RON', currencyName: 'Romanian Leu', currencyCodeHash: currencyKeccak256('RON'), currencySymbol: 'lei', countryCode: 'ro' },\n SAR: { currency: 'SAR', currencyCode: 'SAR', currencyName: 'Saudi Riyal', currencyCodeHash: currencyKeccak256('SAR'), currencySymbol: '﷼', countryCode: 'sa' },\n SEK: { currency: 'SEK', currencyCode: 'SEK', currencyName: 'Swedish Krona', currencyCodeHash: currencyKeccak256('SEK'), currencySymbol: 'kr', countryCode: 'se' },\n SGD: { currency: 'SGD', currencyCode: 'SGD', currencyName: 'Singapore Dollar', currencyCodeHash: currencyKeccak256('SGD'), currencySymbol: 'S$', countryCode: 'sg' },\n THB: { currency: 'THB', currencyCode: 'THB', currencyName: 'Thai Baht', currencyCodeHash: currencyKeccak256('THB'), currencySymbol: '฿', countryCode: 'th' },\n TRY: { currency: 'TRY', currencyCode: 'TRY', currencyName: 'Turkish Lira', currencyCodeHash: currencyKeccak256('TRY'), currencySymbol: '₺', countryCode: 'tr' },\n UGX: { currency: 'UGX', currencyCode: 'UGX', currencyName: 'Ugandan Shilling', currencyCodeHash: currencyKeccak256('UGX'), currencySymbol: 'USh', countryCode: 'ug' },\n USD: { currency: 'USD', currencyCode: 'USD', currencyName: 'United States Dollar', currencyCodeHash: currencyKeccak256('USD'), currencySymbol: '$', countryCode: 'us' },\n VND: { currency: 'VND', currencyCode: 'VND', currencyName: 'Vietnamese Dong', currencyCodeHash: currencyKeccak256('VND'), currencySymbol: '₫', countryCode: 'vn' },\n ZAR: { currency: 'ZAR', currencyCode: 'ZAR', currencyName: 'South African Rand', currencyCodeHash: currencyKeccak256('ZAR'), currencySymbol: 'R', countryCode: 'za' },\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(`conversionRates length (${groups.length}) must match processorNames length (${expectedGroups})`);\n }\n return groups.map((group) => group.map((r) => {\n const info = currencyInfo[r.currency as CurrencyType];\n if (!info?.currencyCodeHash) throw new Error('Invalid currency');\n return { code: info.currencyCodeHash as `0x${string}`, conversionRate: BigInt(r.conversionRate) };\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(`conversionRates length (${groups.length}) must match processorNames length (${expectedGroups})`);\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"]}
@@ -0,0 +1,4 @@
1
+ export { DEFAULT_BASE_API_URL, DEFAULT_WITNESS_URL, DEPLOYED_ADDRESSES, PAYMENT_PLATFORMS, PLATFORM_ATTESTATION_CONFIG, PLATFORM_METADATA, SUPPORTED_CHAIN_IDS, TOKEN_METADATA, resolvePlatformAttestationConfig } from './chunk-JLEW4EOG.mjs';
2
+ export { Currency, currencyInfo } from './chunk-PBBMWRNE.mjs';
3
+ //# sourceMappingURL=constants-DMJE2ALO.mjs.map
4
+ //# sourceMappingURL=constants-DMJE2ALO.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"constants-DMJE2ALO.mjs"}
@@ -0,0 +1,3 @@
1
+ export { Currency, currencyInfo, getCurrencyCodeFromHash, getCurrencyInfoFromCountryCode, getCurrencyInfoFromHash, isSupportedCurrencyHash, mapConversionRatesToOnchain, mapConversionRatesToOnchainMinRate } from './chunk-PBBMWRNE.mjs';
2
+ //# sourceMappingURL=currency-ULYH5HL2.mjs.map
3
+ //# sourceMappingURL=currency-ULYH5HL2.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"currency-ULYH5HL2.mjs"}