@p2pdotme/sdk 1.0.5 → 1.1.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.
- package/README.md +103 -41
- package/dist/country.cjs +9 -2
- package/dist/country.cjs.map +1 -1
- package/dist/country.d.cts +35 -10
- package/dist/country.d.ts +35 -10
- package/dist/country.mjs +6 -2
- package/dist/country.mjs.map +1 -1
- package/dist/fraud-engine.cjs +52 -48
- package/dist/fraud-engine.cjs.map +1 -1
- package/dist/fraud-engine.mjs +46 -42
- package/dist/fraud-engine.mjs.map +1 -1
- package/dist/index.cjs +4 -14
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +41 -36
- package/dist/index.d.ts +41 -36
- package/dist/index.mjs +4 -12
- package/dist/index.mjs.map +1 -1
- package/dist/orders.cjs +5961 -0
- package/dist/orders.cjs.map +1 -0
- package/dist/orders.d.cts +620 -0
- package/dist/orders.d.ts +620 -0
- package/dist/orders.mjs +5911 -0
- package/dist/orders.mjs.map +1 -0
- package/dist/prices.cjs +1432 -0
- package/dist/prices.cjs.map +1 -0
- package/dist/prices.d.cts +109 -0
- package/dist/prices.d.ts +109 -0
- package/dist/prices.mjs +1404 -0
- package/dist/prices.mjs.map +1 -0
- package/dist/profile.cjs +899 -69
- package/dist/profile.cjs.map +1 -1
- package/dist/profile.d.cts +39 -27
- package/dist/profile.d.ts +39 -27
- package/dist/profile.mjs +892 -62
- package/dist/profile.mjs.map +1 -1
- package/dist/qr-parsers.cjs +88 -7
- package/dist/qr-parsers.cjs.map +1 -1
- package/dist/qr-parsers.d.cts +38 -16
- package/dist/qr-parsers.d.ts +38 -16
- package/dist/qr-parsers.mjs +88 -7
- package/dist/qr-parsers.mjs.map +1 -1
- package/dist/react.cjs +2955 -1105
- package/dist/react.cjs.map +1 -1
- package/dist/react.d.cts +384 -104
- package/dist/react.d.ts +384 -104
- package/dist/react.mjs +2841 -992
- package/dist/react.mjs.map +1 -1
- package/dist/zkkyc.cjs +405 -24
- package/dist/zkkyc.cjs.map +1 -1
- package/dist/zkkyc.d.cts +14 -9
- package/dist/zkkyc.d.ts +14 -9
- package/dist/zkkyc.mjs +405 -24
- package/dist/zkkyc.mjs.map +1 -1
- package/package.json +12 -12
- package/dist/order-routing.cjs +0 -888
- package/dist/order-routing.cjs.map +0 -1
- package/dist/order-routing.d.cts +0 -68
- package/dist/order-routing.d.ts +0 -68
- package/dist/order-routing.mjs +0 -860
- package/dist/order-routing.mjs.map +0 -1
- package/dist/payload.cjs +0 -3168
- package/dist/payload.cjs.map +0 -1
- package/dist/payload.d.cts +0 -147
- package/dist/payload.d.ts +0 -147
- package/dist/payload.mjs +0 -3124
- package/dist/payload.mjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/prices/index.ts","../src/contracts/abis/index.ts","../src/contracts/abis/order-flow-facet.ts","../src/contracts/abis/order-processor-facet.ts","../src/contracts/abis/p2p-config-facet.ts","../src/contracts/abis/reputation-manager.ts","../src/contracts/errors.ts","../src/contracts/order-flow/index.ts","../src/lib/subgraph.ts","../src/validation/errors.validation.ts","../src/validation/schemas.validation.ts","../src/country/currency.ts","../src/orders/internal/routing/validation.ts","../src/contracts/order-processor/index.ts","../src/contracts/p2p-config/index.ts","../src/prices/errors.ts","../src/prices/validation.ts","../src/contracts/reputation-manager/writes.ts","../src/zkkyc/validation.ts","../src/contracts/tx-limits/index.ts","../src/profile/validation.ts","../src/contracts/usdc/index.ts","../src/prices/client.ts"],"sourcesContent":["// ── Main entry point ────────────────────────────────────────────────────\n\nexport { createPrices, type Prices } from \"./client\";\n\n// ── Types ───────────────────────────────────────────────────────────────\n\nexport type {\n\tCurrencyScopedParams,\n\tPriceConfig,\n\tPricesConfig,\n\tReputationLimit,\n} from \"./types\";\n\n// ── Errors ──────────────────────────────────────────────────────────────\n\nexport { PricesError, type PricesErrorCode } from \"./errors\";\n","import { erc20Abi } from \"viem\";\nimport { orderFlowFacetAbi } from \"./order-flow-facet\";\nimport { orderProcessorFacetAbi } from \"./order-processor-facet\";\nimport { p2pConfigFacetAbi } from \"./p2p-config-facet\";\nimport { reputationManagerAbi } from \"./reputation-manager\";\n\nconst DIAMOND_ABI = [\n\t...orderFlowFacetAbi,\n\t...orderProcessorFacetAbi,\n\t...p2pConfigFacetAbi,\n] as const;\n\nexport const ABIS = {\n\tDIAMOND: DIAMOND_ABI,\n\tFACETS: {\n\t\tORDER_FLOW: orderFlowFacetAbi,\n\t\tORDER_PROCESSOR: orderProcessorFacetAbi,\n\t\tCONFIG: p2pConfigFacetAbi,\n\t},\n\tEXTERNAL: {\n\t\tUSDC: erc20Abi,\n\t\tREPUTATION_MANAGER: reputationManagerAbi,\n\t},\n} as const;\n","export const orderFlowFacetAbi = [\n\t{\n\t\tinputs: [\n\t\t\t{ internalType: \"uint256\", name: \"circleId\", type: \"uint256\" },\n\t\t\t{ internalType: \"uint256\", name: \"assignUpto\", type: \"uint256\" },\n\t\t\t{ internalType: \"bytes32\", name: \"currency\", type: \"bytes32\" },\n\t\t\t{ internalType: \"address\", name: \"user\", type: \"address\" },\n\t\t\t{ internalType: \"uint256\", name: \"usdtAmount\", type: \"uint256\" },\n\t\t\t{ internalType: \"uint256\", name: \"fiatAmount\", type: \"uint256\" },\n\t\t\t{ internalType: \"int256\", name: \"orderType\", type: \"int256\" },\n\t\t\t{ internalType: \"uint256\", name: \"preferredPCConfigId\", type: \"uint256\" },\n\t\t],\n\t\tname: \"getAssignableMerchantsFromCircle\",\n\t\toutputs: [{ internalType: \"address[]\", name: \"\", type: \"address[]\" }],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{ internalType: \"address\", name: \"_user\", type: \"address\" },\n\t\t\t{ internalType: \"bytes32\", name: \"_nativeCurrency\", type: \"bytes32\" },\n\t\t],\n\t\tname: \"userTxLimit\",\n\t\toutputs: [\n\t\t\t{ internalType: \"uint256\", name: \"\", type: \"uint256\" },\n\t\t\t{ internalType: \"uint256\", name: \"\", type: \"uint256\" },\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{ internalType: \"string\", name: \"_pubKey\", type: \"string\" },\n\t\t\t{ internalType: \"uint256\", name: \"_amount\", type: \"uint256\" },\n\t\t\t{ internalType: \"address\", name: \"_recipientAddr\", type: \"address\" },\n\t\t\t{ internalType: \"uint8\", name: \"_orderType\", type: \"uint8\" },\n\t\t\t{ internalType: \"string\", name: \"_userUpi\", type: \"string\" },\n\t\t\t{ internalType: \"string\", name: \"_userPubKey\", type: \"string\" },\n\t\t\t{ internalType: \"bytes32\", name: \"_currency\", type: \"bytes32\" },\n\t\t\t{ internalType: \"uint256\", name: \"preferredPaymentChannelConfigId\", type: \"uint256\" },\n\t\t\t{ internalType: \"uint256\", name: \"_circleId\", type: \"uint256\" },\n\t\t\t{ internalType: \"uint256\", name: \"_fiatAmountLimit\", type: \"uint256\" },\n\t\t],\n\t\tname: \"placeOrder\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [{ internalType: \"uint256\", name: \"_orderId\", type: \"uint256\" }],\n\t\tname: \"cancelOrder\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{ internalType: \"uint256\", name: \"_orderId\", type: \"uint256\" },\n\t\t\t{ internalType: \"string\", name: \"_userEncUpi\", type: \"string\" },\n\t\t\t{ internalType: \"uint256\", name: \"_updatedAmount\", type: \"uint256\" },\n\t\t],\n\t\tname: \"setSellOrderUpi\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\ttype: \"event\",\n\t\tname: \"OrderPlaced\",\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{ indexed: true, name: \"orderId\", type: \"uint256\" },\n\t\t\t{ indexed: true, name: \"user\", type: \"address\" },\n\t\t\t{ indexed: true, name: \"merchant\", type: \"address\" },\n\t\t\t{ indexed: false, name: \"amount\", type: \"uint256\" },\n\t\t\t{ indexed: false, name: \"orderType\", type: \"uint8\" },\n\t\t\t{ indexed: false, name: \"placedTimestamp\", type: \"uint256\" },\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tname: \"_order\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t\tcomponents: [\n\t\t\t\t\t{ name: \"amount\", type: \"uint256\" },\n\t\t\t\t\t{ name: \"fiatAmount\", type: \"uint256\" },\n\t\t\t\t\t{ name: \"placedTimestamp\", type: \"uint256\" },\n\t\t\t\t\t{ name: \"completedTimestamp\", type: \"uint256\" },\n\t\t\t\t\t{ name: \"userCompletedTimestamp\", type: \"uint256\" },\n\t\t\t\t\t{ name: \"acceptedMerchant\", type: \"address\" },\n\t\t\t\t\t{ name: \"user\", type: \"address\" },\n\t\t\t\t\t{ name: \"recipientAddr\", type: \"address\" },\n\t\t\t\t\t{ name: \"pubkey\", type: \"string\" },\n\t\t\t\t\t{ name: \"encUpi\", type: \"string\" },\n\t\t\t\t\t{ name: \"userCompleted\", type: \"bool\" },\n\t\t\t\t\t{ name: \"status\", type: \"uint8\" },\n\t\t\t\t\t{ name: \"orderType\", type: \"uint8\" },\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"disputeInfo\",\n\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{ name: \"raisedBy\", type: \"uint8\" },\n\t\t\t\t\t\t\t{ name: \"status\", type: \"uint8\" },\n\t\t\t\t\t\t\t{ name: \"redactTransId\", type: \"uint256\" },\n\t\t\t\t\t\t\t{ name: \"accountNumber\", type: \"uint256\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{ name: \"id\", type: \"uint256\" },\n\t\t\t\t\t{ name: \"userPubKey\", type: \"string\" },\n\t\t\t\t\t{ name: \"encMerchantUpi\", type: \"string\" },\n\t\t\t\t\t{ name: \"acceptedAccountNo\", type: \"uint256\" },\n\t\t\t\t\t{ name: \"assignedAccountNos\", type: \"uint256[]\" },\n\t\t\t\t\t{ name: \"currency\", type: \"bytes32\" },\n\t\t\t\t\t{ name: \"preferredPaymentChannelConfigId\", type: \"uint256\" },\n\t\t\t\t\t{ name: \"circleId\", type: \"uint256\" },\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\ttype: \"event\",\n\t\tname: \"OrderAccepted\",\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{ indexed: true, name: \"orderId\", type: \"uint256\" },\n\t\t\t{ indexed: true, name: \"merchant\", type: \"address\" },\n\t\t\t{ indexed: false, name: \"pubKey\", type: \"string\" },\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tname: \"_order\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t\tcomponents: [\n\t\t\t\t\t{ name: \"amount\", type: \"uint256\" },\n\t\t\t\t\t{ name: \"fiatAmount\", type: \"uint256\" },\n\t\t\t\t\t{ name: \"placedTimestamp\", type: \"uint256\" },\n\t\t\t\t\t{ name: \"completedTimestamp\", type: \"uint256\" },\n\t\t\t\t\t{ name: \"userCompletedTimestamp\", type: \"uint256\" },\n\t\t\t\t\t{ name: \"acceptedMerchant\", type: \"address\" },\n\t\t\t\t\t{ name: \"user\", type: \"address\" },\n\t\t\t\t\t{ name: \"recipientAddr\", type: \"address\" },\n\t\t\t\t\t{ name: \"pubkey\", type: \"string\" },\n\t\t\t\t\t{ name: \"encUpi\", type: \"string\" },\n\t\t\t\t\t{ name: \"userCompleted\", type: \"bool\" },\n\t\t\t\t\t{ name: \"status\", type: \"uint8\" },\n\t\t\t\t\t{ name: \"orderType\", type: \"uint8\" },\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"disputeInfo\",\n\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{ name: \"raisedBy\", type: \"uint8\" },\n\t\t\t\t\t\t\t{ name: \"status\", type: \"uint8\" },\n\t\t\t\t\t\t\t{ name: \"redactTransId\", type: \"uint256\" },\n\t\t\t\t\t\t\t{ name: \"accountNumber\", type: \"uint256\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{ name: \"id\", type: \"uint256\" },\n\t\t\t\t\t{ name: \"userPubKey\", type: \"string\" },\n\t\t\t\t\t{ name: \"encMerchantUpi\", type: \"string\" },\n\t\t\t\t\t{ name: \"acceptedAccountNo\", type: \"uint256\" },\n\t\t\t\t\t{ name: \"assignedAccountNos\", type: \"uint256[]\" },\n\t\t\t\t\t{ name: \"currency\", type: \"bytes32\" },\n\t\t\t\t\t{ name: \"preferredPaymentChannelConfigId\", type: \"uint256\" },\n\t\t\t\t\t{ name: \"circleId\", type: \"uint256\" },\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\ttype: \"event\",\n\t\tname: \"BuyOrderPaid\",\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{ indexed: true, name: \"orderId\", type: \"uint256\" },\n\t\t\t{ indexed: true, name: \"user\", type: \"address\" },\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tname: \"_order\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t\tcomponents: [\n\t\t\t\t\t{ name: \"amount\", type: \"uint256\" },\n\t\t\t\t\t{ name: \"fiatAmount\", type: \"uint256\" },\n\t\t\t\t\t{ name: \"placedTimestamp\", type: \"uint256\" },\n\t\t\t\t\t{ name: \"completedTimestamp\", type: \"uint256\" },\n\t\t\t\t\t{ name: \"userCompletedTimestamp\", type: \"uint256\" },\n\t\t\t\t\t{ name: \"acceptedMerchant\", type: \"address\" },\n\t\t\t\t\t{ name: \"user\", type: \"address\" },\n\t\t\t\t\t{ name: \"recipientAddr\", type: \"address\" },\n\t\t\t\t\t{ name: \"pubkey\", type: \"string\" },\n\t\t\t\t\t{ name: \"encUpi\", type: \"string\" },\n\t\t\t\t\t{ name: \"userCompleted\", type: \"bool\" },\n\t\t\t\t\t{ name: \"status\", type: \"uint8\" },\n\t\t\t\t\t{ name: \"orderType\", type: \"uint8\" },\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"disputeInfo\",\n\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{ name: \"raisedBy\", type: \"uint8\" },\n\t\t\t\t\t\t\t{ name: \"status\", type: \"uint8\" },\n\t\t\t\t\t\t\t{ name: \"redactTransId\", type: \"uint256\" },\n\t\t\t\t\t\t\t{ name: \"accountNumber\", type: \"uint256\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{ name: \"id\", type: \"uint256\" },\n\t\t\t\t\t{ name: \"userPubKey\", type: \"string\" },\n\t\t\t\t\t{ name: \"encMerchantUpi\", type: \"string\" },\n\t\t\t\t\t{ name: \"acceptedAccountNo\", type: \"uint256\" },\n\t\t\t\t\t{ name: \"assignedAccountNos\", type: \"uint256[]\" },\n\t\t\t\t\t{ name: \"currency\", type: \"bytes32\" },\n\t\t\t\t\t{ name: \"preferredPaymentChannelConfigId\", type: \"uint256\" },\n\t\t\t\t\t{ name: \"circleId\", type: \"uint256\" },\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\ttype: \"event\",\n\t\tname: \"OrderCompleted\",\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{ indexed: true, name: \"orderId\", type: \"uint256\" },\n\t\t\t{ indexed: true, name: \"user\", type: \"address\" },\n\t\t\t{ indexed: false, name: \"completedTimestamp\", type: \"uint256\" },\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tname: \"_order\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t\tcomponents: [\n\t\t\t\t\t{ name: \"amount\", type: \"uint256\" },\n\t\t\t\t\t{ name: \"fiatAmount\", type: \"uint256\" },\n\t\t\t\t\t{ name: \"placedTimestamp\", type: \"uint256\" },\n\t\t\t\t\t{ name: \"completedTimestamp\", type: \"uint256\" },\n\t\t\t\t\t{ name: \"userCompletedTimestamp\", type: \"uint256\" },\n\t\t\t\t\t{ name: \"acceptedMerchant\", type: \"address\" },\n\t\t\t\t\t{ name: \"user\", type: \"address\" },\n\t\t\t\t\t{ name: \"recipientAddr\", type: \"address\" },\n\t\t\t\t\t{ name: \"pubkey\", type: \"string\" },\n\t\t\t\t\t{ name: \"encUpi\", type: \"string\" },\n\t\t\t\t\t{ name: \"userCompleted\", type: \"bool\" },\n\t\t\t\t\t{ name: \"status\", type: \"uint8\" },\n\t\t\t\t\t{ name: \"orderType\", type: \"uint8\" },\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"disputeInfo\",\n\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{ name: \"raisedBy\", type: \"uint8\" },\n\t\t\t\t\t\t\t{ name: \"status\", type: \"uint8\" },\n\t\t\t\t\t\t\t{ name: \"redactTransId\", type: \"uint256\" },\n\t\t\t\t\t\t\t{ name: \"accountNumber\", type: \"uint256\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{ name: \"id\", type: \"uint256\" },\n\t\t\t\t\t{ name: \"userPubKey\", type: \"string\" },\n\t\t\t\t\t{ name: \"encMerchantUpi\", type: \"string\" },\n\t\t\t\t\t{ name: \"acceptedAccountNo\", type: \"uint256\" },\n\t\t\t\t\t{ name: \"assignedAccountNos\", type: \"uint256[]\" },\n\t\t\t\t\t{ name: \"currency\", type: \"bytes32\" },\n\t\t\t\t\t{ name: \"preferredPaymentChannelConfigId\", type: \"uint256\" },\n\t\t\t\t\t{ name: \"circleId\", type: \"uint256\" },\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\ttype: \"event\",\n\t\tname: \"CancelledOrders\",\n\t\tanonymous: false,\n\t\tinputs: [\n\t\t\t{ indexed: true, name: \"orderId\", type: \"uint256\" },\n\t\t\t{\n\t\t\t\tindexed: false,\n\t\t\t\tname: \"_order\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t\tcomponents: [\n\t\t\t\t\t{ name: \"amount\", type: \"uint256\" },\n\t\t\t\t\t{ name: \"fiatAmount\", type: \"uint256\" },\n\t\t\t\t\t{ name: \"placedTimestamp\", type: \"uint256\" },\n\t\t\t\t\t{ name: \"completedTimestamp\", type: \"uint256\" },\n\t\t\t\t\t{ name: \"userCompletedTimestamp\", type: \"uint256\" },\n\t\t\t\t\t{ name: \"acceptedMerchant\", type: \"address\" },\n\t\t\t\t\t{ name: \"user\", type: \"address\" },\n\t\t\t\t\t{ name: \"recipientAddr\", type: \"address\" },\n\t\t\t\t\t{ name: \"pubkey\", type: \"string\" },\n\t\t\t\t\t{ name: \"encUpi\", type: \"string\" },\n\t\t\t\t\t{ name: \"userCompleted\", type: \"bool\" },\n\t\t\t\t\t{ name: \"status\", type: \"uint8\" },\n\t\t\t\t\t{ name: \"orderType\", type: \"uint8\" },\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"disputeInfo\",\n\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{ name: \"raisedBy\", type: \"uint8\" },\n\t\t\t\t\t\t\t{ name: \"status\", type: \"uint8\" },\n\t\t\t\t\t\t\t{ name: \"redactTransId\", type: \"uint256\" },\n\t\t\t\t\t\t\t{ name: \"accountNumber\", type: \"uint256\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{ name: \"id\", type: \"uint256\" },\n\t\t\t\t\t{ name: \"userPubKey\", type: \"string\" },\n\t\t\t\t\t{ name: \"encMerchantUpi\", type: \"string\" },\n\t\t\t\t\t{ name: \"acceptedAccountNo\", type: \"uint256\" },\n\t\t\t\t\t{ name: \"assignedAccountNos\", type: \"uint256[]\" },\n\t\t\t\t\t{ name: \"currency\", type: \"bytes32\" },\n\t\t\t\t\t{ name: \"preferredPaymentChannelConfigId\", type: \"uint256\" },\n\t\t\t\t\t{ name: \"circleId\", type: \"uint256\" },\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t},\n] as const;\n","/**\n * Minimal ABI fragments for reads on OrderProcessor storage via the Diamond.\n * `getOrdersById`, `getAdditionalOrderDetails`, and the per-currency small-order\n * fee config getters (`getSmallOrderThreshold`, `getSmallOrderFixedFee`).\n */\nexport const orderProcessorFacetAbi = [\n\t{\n\t\ttype: \"function\",\n\t\tname: \"getOrdersById\",\n\t\tstateMutability: \"view\",\n\t\tinputs: [{ name: \"orderId\", type: \"uint256\" }],\n\t\toutputs: [\n\t\t\t{\n\t\t\t\ttype: \"tuple\",\n\t\t\t\tcomponents: [\n\t\t\t\t\t{ name: \"amount\", type: \"uint256\" },\n\t\t\t\t\t{ name: \"fiatAmount\", type: \"uint256\" },\n\t\t\t\t\t{ name: \"placedTimestamp\", type: \"uint256\" },\n\t\t\t\t\t{ name: \"completedTimestamp\", type: \"uint256\" },\n\t\t\t\t\t{ name: \"userCompletedTimestamp\", type: \"uint256\" },\n\t\t\t\t\t{ name: \"acceptedMerchant\", type: \"address\" },\n\t\t\t\t\t{ name: \"user\", type: \"address\" },\n\t\t\t\t\t{ name: \"recipientAddr\", type: \"address\" },\n\t\t\t\t\t{ name: \"pubkey\", type: \"string\" },\n\t\t\t\t\t{ name: \"encUpi\", type: \"string\" },\n\t\t\t\t\t{ name: \"userCompleted\", type: \"bool\" },\n\t\t\t\t\t{ name: \"status\", type: \"uint8\" },\n\t\t\t\t\t{ name: \"orderType\", type: \"uint8\" },\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"disputeInfo\",\n\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{ name: \"raisedBy\", type: \"uint8\" },\n\t\t\t\t\t\t\t{ name: \"status\", type: \"uint8\" },\n\t\t\t\t\t\t\t{ name: \"redactTransId\", type: \"uint256\" },\n\t\t\t\t\t\t\t{ name: \"accountNumber\", type: \"uint256\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{ name: \"id\", type: \"uint256\" },\n\t\t\t\t\t{ name: \"userPubKey\", type: \"string\" },\n\t\t\t\t\t{ name: \"encMerchantUpi\", type: \"string\" },\n\t\t\t\t\t{ name: \"acceptedAccountNo\", type: \"uint256\" },\n\t\t\t\t\t{ name: \"assignedAccountNos\", type: \"uint256[]\" },\n\t\t\t\t\t{ name: \"currency\", type: \"bytes32\" },\n\t\t\t\t\t{ name: \"preferredPaymentChannelConfigId\", type: \"uint256\" },\n\t\t\t\t\t{ name: \"circleId\", type: \"uint256\" },\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\ttype: \"function\",\n\t\tname: \"getAdditionalOrderDetails\",\n\t\tstateMutability: \"view\",\n\t\tinputs: [{ name: \"orderId\", type: \"uint256\" }],\n\t\toutputs: [\n\t\t\t{\n\t\t\t\ttype: \"tuple\",\n\t\t\t\tcomponents: [\n\t\t\t\t\t{ name: \"fixedFeePaid\", type: \"uint64\" },\n\t\t\t\t\t{ name: \"tipsPaid\", type: \"uint64\" },\n\t\t\t\t\t{ name: \"acceptedTimestamp\", type: \"uint128\" },\n\t\t\t\t\t{ name: \"paidTimestamp\", type: \"uint128\" },\n\t\t\t\t\t{ name: \"reserved2\", type: \"uint128\" },\n\t\t\t\t\t{ name: \"actualUsdtAmount\", type: \"uint256\" },\n\t\t\t\t\t{ name: \"actualFiatAmount\", type: \"uint256\" },\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\ttype: \"function\",\n\t\tname: \"getSmallOrderThreshold\",\n\t\tstateMutability: \"view\",\n\t\tinputs: [{ name: \"currency\", type: \"bytes32\" }],\n\t\toutputs: [{ name: \"\", type: \"uint256\" }],\n\t},\n\t{\n\t\ttype: \"function\",\n\t\tname: \"getSmallOrderFixedFee\",\n\t\tstateMutability: \"view\",\n\t\tinputs: [{ name: \"currency\", type: \"bytes32\" }],\n\t\toutputs: [{ name: \"\", type: \"uint256\" }],\n\t},\n\t{\n\t\ttype: \"function\",\n\t\tname: \"raiseDispute\",\n\t\tstateMutability: \"nonpayable\",\n\t\tinputs: [\n\t\t\t{ name: \"_orderId\", type: \"uint256\" },\n\t\t\t{ name: \"redactTransId\", type: \"uint256\" },\n\t\t],\n\t\toutputs: [],\n\t},\n\t{\n\t\ttype: \"function\",\n\t\tname: \"paidBuyOrder\",\n\t\tstateMutability: \"nonpayable\",\n\t\tinputs: [{ name: \"_orderId\", type: \"uint256\" }],\n\t\toutputs: [],\n\t},\n] as const;\n","export const p2pConfigFacetAbi = [\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"_currency\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t],\n\t\tname: \"getPriceConfig\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"buyPrice\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"sellPrice\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"int256\",\n\t\t\t\t\t\tname: \"buyPriceOffset\",\n\t\t\t\t\t\ttype: \"int256\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\tname: \"baseSpread\",\n\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct P2pConfigStorage.PriceConfig\",\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\tname: \"_nativeCurrency\",\n\t\t\t\ttype: \"bytes32\",\n\t\t\t},\n\t\t],\n\t\tname: \"getRpPerUsdtLimitRational\",\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"numerator\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"denominator\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n] as const;\n","export const reputationManagerAbi = [\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"string\",\n\t\t\t\tname: \"_socialName\",\n\t\t\t\ttype: \"string\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"string\",\n\t\t\t\t\t\t\t\tname: \"provider\",\n\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"string\",\n\t\t\t\t\t\t\t\tname: \"parameters\",\n\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"string\",\n\t\t\t\t\t\t\t\tname: \"context\",\n\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct IReclaimSDK.ClaimInfo\",\n\t\t\t\t\t\tname: \"claimInfo\",\n\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t\t\t\t\t\tname: \"identifier\",\n\t\t\t\t\t\t\t\t\t\ttype: \"bytes32\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tinternalType: \"address\",\n\t\t\t\t\t\t\t\t\t\tname: \"owner\",\n\t\t\t\t\t\t\t\t\t\ttype: \"address\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tinternalType: \"uint32\",\n\t\t\t\t\t\t\t\t\t\tname: \"timestampS\",\n\t\t\t\t\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tinternalType: \"uint32\",\n\t\t\t\t\t\t\t\t\t\tname: \"epoch\",\n\t\t\t\t\t\t\t\t\t\ttype: \"uint32\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tinternalType: \"struct IReclaimSDK.CompleteClaimData\",\n\t\t\t\t\t\t\t\tname: \"claim\",\n\t\t\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes[]\",\n\t\t\t\t\t\t\t\tname: \"signatures\",\n\t\t\t\t\t\t\t\ttype: \"bytes[]\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct IReclaimSDK.SignedClaim\",\n\t\t\t\t\t\tname: \"signedClaim\",\n\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct IReclaimSDK.Proof[]\",\n\t\t\t\tname: \"proofs\",\n\t\t\t\ttype: \"tuple[]\",\n\t\t\t},\n\t\t],\n\t\tname: \"socialVerify\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"nullifierSeed\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"nullifier\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"timestamp\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256\",\n\t\t\t\tname: \"signal\",\n\t\t\t\ttype: \"uint256\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256[4]\",\n\t\t\t\tname: \"revealArray\",\n\t\t\t\ttype: \"uint256[4]\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"uint256[8]\",\n\t\t\t\tname: \"groth16Proof\",\n\t\t\t\ttype: \"uint256[8]\",\n\t\t\t},\n\t\t],\n\t\tname: \"submitAnonAadharProof\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tcomponents: [\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t\tname: \"version\",\n\t\t\t\t\t\ttype: \"bytes32\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes32\",\n\t\t\t\t\t\t\t\tname: \"vkeyHash\",\n\t\t\t\t\t\t\t\ttype: \"bytes32\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\t\t\tname: \"proof\",\n\t\t\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bytes32[]\",\n\t\t\t\t\t\t\t\tname: \"publicInputs\",\n\t\t\t\t\t\t\t\ttype: \"bytes32[]\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct ProofVerificationData\",\n\t\t\t\t\t\tname: \"proofVerificationData\",\n\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternalType: \"bytes\",\n\t\t\t\t\t\tname: \"committedInputs\",\n\t\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"uint256\",\n\t\t\t\t\t\t\t\tname: \"validityPeriodInSeconds\",\n\t\t\t\t\t\t\t\ttype: \"uint256\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"string\",\n\t\t\t\t\t\t\t\tname: \"domain\",\n\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"string\",\n\t\t\t\t\t\t\t\tname: \"scope\",\n\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternalType: \"bool\",\n\t\t\t\t\t\t\t\tname: \"devMode\",\n\t\t\t\t\t\t\t\ttype: \"bool\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tinternalType: \"struct ServiceConfig\",\n\t\t\t\t\t\tname: \"serviceConfig\",\n\t\t\t\t\t\ttype: \"tuple\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tinternalType: \"struct ProofVerificationParams\",\n\t\t\t\tname: \"params\",\n\t\t\t\ttype: \"tuple\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tinternalType: \"bool\",\n\t\t\t\tname: \"isIDCard\",\n\t\t\t\ttype: \"bool\",\n\t\t\t},\n\t\t],\n\t\tname: \"zkPassportRegister\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n] as const;\n","/**\n * Centralized contract error definitions mirroring `contracts/libraries/Errors.sol`.\n * Maps Solidity custom error names and their 4-byte selectors to human-readable codes.\n */\n\nexport const contractErrors = {\n\t// Access control\n\tNotAdmin: \"NOT_ADMIN\",\n\tNotSuperAdmin: \"NOT_SUPER_ADMIN\",\n\tNotAuthorized: \"NOT_AUTHORIZED\",\n\tNotSelf: \"NOT_SELF\",\n\tNotWhitelisted: \"NOT_WHITELISTED\",\n\tNotCircleAdmin: \"NOT_CIRCLE_ADMIN\",\n\n\t// Circle / community management\n\tInvalidName: \"INVALID_NAME\",\n\tInvalidCommunityUrl: \"INVALID_COMMUNITY_URL\",\n\tInvalidAdminCommunityUrl: \"INVALID_ADMIN_COMMUNITY_URL\",\n\tAdminAlreadyHasCircle: \"ADMIN_ALREADY_HAS_CIRCLE\",\n\tCircleNameAlreadyTaken: \"CIRCLE_NAME_ALREADY_TAKEN\",\n\tP2PStakeConfigNotSet: \"P2P_STAKE_CONFIG_NOT_SET\",\n\tInsufficientP2PStake: \"INSUFFICIENT_P2P_STAKE\",\n\tP2PTokenNotSet: \"P2P_TOKEN_NOT_SET\",\n\tP2PUnstakeRequestPending: \"P2P_UNSTAKE_REQUEST_PENDING\",\n\tNoP2PUnstakeRequest: \"NO_P2P_UNSTAKE_REQUEST\",\n\tP2PUnstakeCooldownNotPassed: \"P2P_UNSTAKE_COOLDOWN_NOT_PASSED\",\n\tSlashAmountExceedsStake: \"SLASH_AMOUNT_EXCEEDS_STAKE\",\n\tCircleNotActive: \"CIRCLE_NOT_ACTIVE\",\n\tInvalidCircleId: \"INVALID_CIRCLE_ID\",\n\tCurrencyMismatch: \"CURRENCY_MISMATCH\",\n\tCircleFull: \"CIRCLE_FULL\",\n\tCircleIdMismatch: \"CIRCLE_ID_MISMATCH\",\n\tDuplicateAccountName: \"DUPLICATE_ACCOUNT_NAME\",\n\tEmptyName: \"EMPTY_NAME\",\n\tAccountBoundToAnotherCircle: \"ACCOUNT_BOUND_TO_ANOTHER_CIRCLE\",\n\tExitAmountExceededCircleBalance: \"EXIT_AMOUNT_EXCEEDED_CIRCLE_BALANCE\",\n\tUndelegationAmountTooHigh: \"UNDELEGATION_AMOUNT_TOO_HIGH\",\n\n\t// Exchange / order lifecycle\n\tExchangeNotOperational: \"EXCHANGE_NOT_OPERATIONAL\",\n\tOrderNotPlaced: \"ORDER_NOT_PLACED\",\n\tOrderNotPaid: \"ORDER_NOT_PAID\",\n\tOrderStatusInvalid: \"ORDER_STATUS_INVALID\",\n\tOrderExpired: \"ORDER_EXPIRED\",\n\tOrderAlreadyPaid: \"ORDER_ALREADY_PAID\",\n\tOrderAlreadyCompleted: \"ORDER_ALREADY_COMPLETED\",\n\tInvalidOrderType: \"INVALID_ORDER_TYPE\",\n\tOrderTypeIncorrect: \"ORDER_TYPE_INCORRECT\",\n\tOrderNotAccepted: \"ORDER_NOT_ACCEPTED\",\n\tOrderNotAssigned: \"ORDER_NOT_ASSIGNED\",\n\tOrderAmountExceedsLimit: \"ORDER_AMOUNT_EXCEEDS_LIMIT\",\n\tInvalidOrderAmount: \"INVALID_ORDER_AMOUNT\",\n\tInvalidOrderAmountToCoverFee: \"INVALID_ORDER_AMOUNT_TO_COVER_FEE\",\n\tInvalidOrderId: \"INVALID_ORDER_ID\",\n\tOrderTooEarlyForReassignment: \"ORDER_TOO_EARLY_FOR_REASSIGNMENT\",\n\tOrderTooLateForReassignment: \"ORDER_TOO_LATE_FOR_REASSIGNMENT\",\n\tReAssignmentNotRequired: \"REASSIGNMENT_NOT_REQUIRED\",\n\tTipAlreadyGiven: \"TIP_ALREADY_GIVEN\",\n\tCashbackTransferFailed: \"CASHBACK_TRANSFER_FAILED\",\n\n\t// Order limits\n\tDailyBuyOrderLimitExceeded: \"DAILY_BUY_ORDER_LIMIT_EXCEEDED\",\n\tMonthlyBuyOrderLimitExceeded: \"MONTHLY_BUY_ORDER_LIMIT_EXCEEDED\",\n\tSellOrderAmountLimitExceeded: \"SELL_ORDER_AMOUNT_LIMIT_EXCEEDED\",\n\tBuyOrderAmountExceedsLimit: \"BUY_ORDER_AMOUNT_EXCEEDS_LIMIT\",\n\tSellOrderAmountExceedsLimit: \"SELL_ORDER_AMOUNT_EXCEEDS_LIMIT\",\n\tBuyAmountExceedsUsdcLimit: \"BUY_AMOUNT_EXCEEDS_USDC_LIMIT\",\n\tSellAmountExceedsFiatLimit: \"SELL_AMOUNT_EXCEEDS_FIAT_LIMIT\",\n\tDailyVolumeLimitExceeded: \"DAILY_VOLUME_LIMIT_EXCEEDED\",\n\tMonthlyVolumeLimitExceeded: \"MONTHLY_VOLUME_LIMIT_EXCEEDED\",\n\tUserYearlyVolumeLimitExceeded: \"USER_YEARLY_VOLUME_LIMIT_EXCEEDED\",\n\n\t// Dispute\n\tDisputeTimeNotReached: \"DISPUTE_TIME_NOT_REACHED\",\n\tDisputeTimeExpired: \"DISPUTE_TIME_EXPIRED\",\n\tInvalidOrderStatusToRaiseDispute: \"INVALID_ORDER_STATUS_TO_RAISE_DISPUTE\",\n\tDisputeNotRaised: \"DISPUTE_NOT_RAISED\",\n\tCannotRaiseDisputeTwice: \"CANNOT_RAISE_DISPUTE_TWICE\",\n\tDisputeAlreadySettled: \"DISPUTE_ALREADY_SETTLED\",\n\tTransactionIdMismatch: \"TRANSACTION_ID_MISMATCH\",\n\tAccountNumberMismatch: \"ACCOUNT_NUMBER_MISMATCH\",\n\tNotPaidBuyOrder: \"NOT_PAID_BUY_ORDER\",\n\n\t// Payment channels\n\tPaymentChannelNotFound: \"PAYMENT_CHANNEL_NOT_FOUND\",\n\tPaymentChannelNotActive: \"PAYMENT_CHANNEL_NOT_ACTIVE\",\n\tPaymentChannelNotApproved: \"PAYMENT_CHANNEL_NOT_APPROVED\",\n\tPaymentChannelNotRejected: \"PAYMENT_CHANNEL_NOT_REJECTED\",\n\tInvalidPaymentChannelId: \"INVALID_PAYMENT_CHANNEL_ID\",\n\tDuplicatePaymentChannel: \"DUPLICATE_PAYMENT_CHANNEL\",\n\tOldPaymentChannelNotFound: \"OLD_PAYMENT_CHANNEL_NOT_FOUND\",\n\tNewPaymentChannelNotFound: \"NEW_PAYMENT_CHANNEL_NOT_FOUND\",\n\tSamePaymentChannel: \"SAME_PAYMENT_CHANNEL\",\n\tOldPaymentChannelShouldBeInactive: \"OLD_PAYMENT_CHANNEL_SHOULD_BE_INACTIVE\",\n\tNewPaymentChannelShouldBeActive: \"NEW_PAYMENT_CHANNEL_SHOULD_BE_ACTIVE\",\n\tOngoingOrderOnPaymentChannel: \"ONGOING_ORDER_ON_PAYMENT_CHANNEL\",\n\tUpiAlreadySent: \"UPI_ALREADY_SENT\",\n\tInvalidOrderUpi: \"INVALID_ORDER_UPI\",\n\tNoFiatLiquidity: \"NO_FIAT_LIQUIDITY\",\n\n\t// Merchant\n\tNotEnoughEligibleMerchants: \"NOT_ENOUGH_ELIGIBLE_MERCHANTS\",\n\tMerchantNotRegistered: \"MERCHANT_NOT_REGISTERED\",\n\tMerchantNotApproved: \"MERCHANT_NOT_APPROVED\",\n\tMerchantAlreadyRegistered: \"MERCHANT_ALREADY_REGISTERED\",\n\tMerchantAlreadyRejected: \"MERCHANT_ALREADY_REJECTED\",\n\tMerchantBlacklisted: \"MERCHANT_BLACKLISTED\",\n\tMerchantNotBlacklisted: \"MERCHANT_NOT_BLACKLISTED\",\n\tMerchantAlreadyBlacklisted: \"MERCHANT_ALREADY_BLACKLISTED\",\n\tMerchantHasOngoingOrders: \"MERCHANT_HAS_ONGOING_ORDERS\",\n\tMerchantNotFullfilledEligibilityThreshold: \"MERCHANT_NOT_FULLFILLED_ELIGIBILITY_THRESHOLD\",\n\tInvalidMerchant: \"INVALID_MERCHANT\",\n\n\t// Staking / unstaking\n\tStakeAmountTooLow: \"STAKE_AMOUNT_TOO_LOW\",\n\tAdditionalStakeNotAllowed: \"ADDITIONAL_STAKE_NOT_ALLOWED\",\n\tUnstakeRequestPending: \"UNSTAKE_REQUEST_PENDING\",\n\tUnstakeRequestNotPending: \"UNSTAKE_REQUEST_NOT_PENDING\",\n\tUnstakeAmountExceeded: \"UNSTAKE_AMOUNT_EXCEEDED\",\n\tZeroUnstakeAmount: \"ZERO_UNSTAKE_AMOUNT\",\n\tNoWithdrawableAmount: \"NO_WITHDRAWABLE_AMOUNT\",\n\tNoStake: \"NO_STAKE\",\n\tNoStakers: \"NO_STAKERS\",\n\tInsufficientStakedAmount: \"INSUFFICIENT_STAKED_AMOUNT\",\n\tCooldownNotPassed: \"COOLDOWN_NOT_PASSED\",\n\tClaimableRewardsNotAvailable: \"CLAIMABLE_REWARDS_NOT_AVAILABLE\",\n\n\t// Delegation\n\tExitWouldBreachDelegationInvariant: \"EXIT_WOULD_BREACH_DELEGATION_INVARIANT\",\n\tAggregateDelegationExceedsTotalStaked: \"AGGREGATE_DELEGATION_EXCEEDS_TOTAL_STAKED\",\n\tInsufficientMerchantRewards: \"INSUFFICIENT_MERCHANT_REWARDS\",\n\n\t// Migration\n\tInvalidMigrationStatus: \"INVALID_MIGRATION_STATUS\",\n\tMigrationRequestNotPending: \"MIGRATION_REQUEST_NOT_PENDING\",\n\tMigrationAlreadyRequested: \"MIGRATION_ALREADY_REQUESTED\",\n\n\t// Token / currency\n\tTokenAlreadyExists: \"TOKEN_ALREADY_EXISTS\",\n\tTokenNotFound: \"TOKEN_NOT_FOUND\",\n\tTokenEmpty: \"TOKEN_EMPTY\",\n\tCurrencyNotSupported: \"CURRENCY_NOT_SUPPORTED\",\n\tInvalidCurrency: \"INVALID_CURRENCY\",\n\n\t// USDC / transfer\n\tUsdtTransferFailed: \"USDC_TRANSFER_FAILED\",\n\tUsdtTransferFailedWithErrorMessage: \"USDC_TRANSFER_FAILED_WITH_ERROR_MESSAGE\",\n\tUsdtTransferFailedWithPanic: \"USDC_TRANSFER_FAILED_WITH_PANIC\",\n\tInsufficientAllowance: \"INSUFFICIENT_ALLOWANCE\",\n\n\t// ZK Passport\n\tZKPassportVerifierNotSet: \"ZK_PASSPORT_VERIFIER_NOT_SET\",\n\tZKPassportDomainEmpty: \"ZK_PASSPORT_DOMAIN_EMPTY\",\n\tZKPassportScopeEmpty: \"ZK_PASSPORT_SCOPE_EMPTY\",\n\tPassportAlreadyVerified: \"PASSPORT_ALREADY_VERIFIED\",\n\tZKPassportProofInvalid: \"ZK_PASSPORT_PROOF_INVALID\",\n\tZKPassportIdentifierAlreadyVerified: \"ZK_PASSPORT_IDENTIFIER_ALREADY_VERIFIED\",\n\tZKPassportInvalidScope: \"ZK_PASSPORT_INVALID_SCOPE\",\n\tZKPassportUnexpectedSender: \"ZK_PASSPORT_UNEXPECTED_SENDER\",\n\tZKPassportAgeBelowMinimum: \"ZK_PASSPORT_AGE_BELOW_MINIMUM\",\n\tZKPassportMinAgeTooHigh: \"ZK_PASSPORT_MIN_AGE_TOO_HIGH\",\n\n\t// Chainlink / oracle\n\tUnexpectedRequestId: \"UNEXPECTED_REQUEST_ID\",\n\tOnlyRouterCanFulfill: \"ONLY_ROUTER_CAN_FULFILL\",\n\tRequestFailed: \"REQUEST_FAILED\",\n\tSourceCodeMismatch: \"SOURCE_CODE_MISMATCH\",\n\tZeroMarketPrice: \"ZERO_MARKET_PRICE\",\n\tInvalidComputedPrices: \"INVALID_COMPUTED_PRICES\",\n\tNotPriceUpdaterForCurrency: \"NOT_PRICE_UPDATER_FOR_CURRENCY\",\n\tThresholdNotConfigured: \"THRESHOLD_NOT_CONFIGURED\",\n\tSlippageExceeded: \"SLIPPAGE_EXCEEDED\",\n\n\t// Reputation / verification\n\tUserHasNoReputation: \"USER_HAS_NO_REPUTATION\",\n\tZeroReputationPoints: \"ZERO_REPUTATION_POINTS\",\n\tNoReputation: \"NO_REPUTATION\",\n\tInsufficientRP: \"INSUFFICIENT_RP\",\n\tNullifierAlreadyVerified: \"NULLIFIER_ALREADY_VERIFIED\",\n\tVerificationFailed: \"VERIFICATION_FAILED\",\n\tInvalidSocialPlatform: \"INVALID_SOCIAL_PLATFORM\",\n\tSocialAlreadyVerified: \"SOCIAL_ALREADY_VERIFIED\",\n\tYearFieldNotInProof: \"YEAR_FIELD_NOT_IN_PROOF\",\n\tUserIdFieldNotInProof: \"USER_ID_FIELD_NOT_IN_PROOF\",\n\tUserIdAlreadyVerified: \"USER_ID_ALREADY_VERIFIED\",\n\tUsernameAlreadyVerified: \"USERNAME_ALREADY_VERIFIED\",\n\tUsernameNotInProof: \"USERNAME_NOT_IN_PROOF\",\n\tLinkedInOnlyRpUpdates: \"LINKEDIN_ONLY_RP_UPDATES\",\n\tFacebookOnlyRpUpdates: \"FACEBOOK_ONLY_RP_UPDATES\",\n\n\t// Voting / referral\n\tAlreadyReferred: \"ALREADY_REFERRED\",\n\tSelfReferralNotAllowed: \"SELF_REFERRAL_NOT_ALLOWED\",\n\tNotEligibleToRefer: \"NOT_ELIGIBLE_TO_REFER\",\n\tMerchantMonthlyReferralLimitReached: \"MERCHANT_MONTHLY_REFERRAL_LIMIT_REACHED\",\n\tNoRecommender: \"NO_RECOMMENDER\",\n\tRecommendationAlreadyClaimed: \"RECOMMENDATION_ALREADY_CLAIMED\",\n\tCannotVoteYourself: \"CANNOT_VOTE_YOURSELF\",\n\tVotesPerEpochExceeded: \"VOTES_PER_EPOCH_EXCEEDED\",\n\tAlreadyVoted: \"ALREADY_VOTED\",\n\tFunctionNotFound: \"FUNCTION_NOT_FOUND\",\n\n\t// Campaign\n\tCampaignNotActive: \"CAMPAIGN_NOT_ACTIVE\",\n\tInvalidManagerDetails: \"INVALID_MANAGER_DETAILS\",\n\tUnclaimedRewardsExist: \"UNCLAIMED_REWARDS_EXIST\",\n\tRewardAlreadyClaimed: \"REWARD_ALREADY_CLAIMED\",\n\tOnlyNewUsersAllowed: \"ONLY_NEW_USERS_ALLOWED\",\n\tManagerNotFound: \"MANAGER_NOT_FOUND\",\n\tManagerInactive: \"MANAGER_INACTIVE\",\n\tNoRewards: \"NO_REWARDS\",\n\tInvalidCampaignId: \"INVALID_CAMPAIGN_ID\",\n\tCannotClaimRevenueForCurrentMonth: \"CANNOT_CLAIM_REVENUE_FOR_CURRENT_MONTH\",\n\n\t// Referral reward config\n\tRewardPercentageTooHigh: \"REWARD_PERCENTAGE_TOO_HIGH\",\n\n\t// Signature / nonce\n\tNonceAlreadyUsed: \"NONCE_ALREADY_USED\",\n\tSignatureValidationFailed: \"SIGNATURE_VALIDATION_FAILED\",\n\n\t// Misc\n\tInvalidAddress: \"INVALID_ADDRESS\",\n\tInvalidBlockAmount: \"INVALID_BLOCK_AMOUNT\",\n\tInvalidAmount: \"INVALID_AMOUNT\",\n\tInvalidInput: \"INVALID_INPUT\",\n\tInvalidStatusTransition: \"INVALID_STATUS_TRANSITION\",\n\tArrayLengthMismatch: \"ARRAY_LENGTH_MISMATCH\",\n\tUserIsBlacklisted: \"USER_IS_BLACKLISTED\",\n\tZeroAddress: \"ZERO_ADDRESS\",\n\tReentrancyGuard: \"REENTRANCY_GUARD\",\n\tBatchTooLarge: \"BATCH_TOO_LARGE\",\n\tUnderflowSubtraction: \"UNDERFLOW_SUBTRACTION\",\n\tTargetLongerThanData: \"TARGET_LONGER_THAN_DATA\",\n} as const;\n\nexport type ContractErrorCode = (typeof contractErrors)[keyof typeof contractErrors];\n\n/** Maps 4-byte Solidity custom error selectors to their error codes. */\nexport const hexContractErrors: Record<string, ContractErrorCode> = {\n\t// Access control\n\t\"0x7bfa4b9f\": contractErrors.NotAdmin,\n\t\"0x16c726b1\": contractErrors.NotSuperAdmin,\n\t\"0xea8e4eb5\": contractErrors.NotAuthorized,\n\t\"0x29c3b7ee\": contractErrors.NotSelf,\n\t\"0x584a7938\": contractErrors.NotWhitelisted,\n\t\"0xa8143fbc\": contractErrors.NotCircleAdmin,\n\n\t// Circle / community management\n\t\"0x430f13b3\": contractErrors.InvalidName,\n\t\"0xe7cbf75a\": contractErrors.InvalidCommunityUrl,\n\t\"0x3762bfee\": contractErrors.InvalidAdminCommunityUrl,\n\t\"0x201c1ffc\": contractErrors.AdminAlreadyHasCircle,\n\t\"0x6540a51d\": contractErrors.CircleNameAlreadyTaken,\n\t\"0xcadc6786\": contractErrors.P2PStakeConfigNotSet,\n\t\"0x78317f44\": contractErrors.InsufficientP2PStake,\n\t\"0x18eda032\": contractErrors.P2PTokenNotSet,\n\t\"0xdab11ea6\": contractErrors.P2PUnstakeRequestPending,\n\t\"0xeb1ce40b\": contractErrors.NoP2PUnstakeRequest,\n\t\"0xbf2d0ba1\": contractErrors.P2PUnstakeCooldownNotPassed,\n\t\"0x06b663af\": contractErrors.SlashAmountExceedsStake,\n\t\"0xff9b022c\": contractErrors.CircleNotActive,\n\t\"0x3d90c0a6\": contractErrors.InvalidCircleId,\n\t\"0xfb42a67d\": contractErrors.CurrencyMismatch,\n\t\"0xf2775265\": contractErrors.CircleFull,\n\t\"0x784b6c3c\": contractErrors.CircleIdMismatch,\n\t\"0xee240e49\": contractErrors.DuplicateAccountName,\n\t\"0x2ef13105\": contractErrors.EmptyName,\n\t\"0x1b5433c8\": contractErrors.AccountBoundToAnotherCircle,\n\t\"0x549e2555\": contractErrors.ExitAmountExceededCircleBalance,\n\t\"0x865b21e1\": contractErrors.UndelegationAmountTooHigh,\n\n\t// Exchange / order lifecycle\n\t\"0x4bbac5de\": contractErrors.ExchangeNotOperational,\n\t\"0x58db8ed6\": contractErrors.OrderNotPlaced,\n\t\"0x1e3b9629\": contractErrors.OrderNotPaid,\n\t\"0x181b1b2e\": contractErrors.OrderStatusInvalid,\n\t\"0xc56873ba\": contractErrors.OrderExpired,\n\t\"0x7f61b868\": contractErrors.OrderAlreadyPaid,\n\t\"0x03683687\": contractErrors.OrderAlreadyCompleted,\n\t\"0x688c176f\": contractErrors.InvalidOrderType,\n\t\"0x2e757a60\": contractErrors.OrderTypeIncorrect,\n\t\"0x6b1b90b4\": contractErrors.OrderNotAccepted,\n\t\"0x1775c43e\": contractErrors.OrderNotAssigned,\n\t\"0xf42e41a1\": contractErrors.OrderAmountExceedsLimit,\n\t\"0x93845d68\": contractErrors.InvalidOrderAmount,\n\t\"0x138b9d5a\": contractErrors.InvalidOrderAmountToCoverFee,\n\t\"0x5d706033\": contractErrors.InvalidOrderId,\n\t\"0xbb776720\": contractErrors.OrderTooEarlyForReassignment,\n\t\"0x20d5910f\": contractErrors.OrderTooLateForReassignment,\n\t\"0xccd87bf0\": contractErrors.ReAssignmentNotRequired,\n\t\"0xb20277f8\": contractErrors.TipAlreadyGiven,\n\t\"0xdf9f707c\": contractErrors.CashbackTransferFailed,\n\n\t// Order limits\n\t\"0xe595a7bf\": contractErrors.DailyBuyOrderLimitExceeded,\n\t\"0x675dbc86\": contractErrors.MonthlyBuyOrderLimitExceeded,\n\t\"0x64301cb8\": contractErrors.SellOrderAmountLimitExceeded,\n\t\"0x91da284f\": contractErrors.BuyOrderAmountExceedsLimit,\n\t\"0xb407b9ec\": contractErrors.SellOrderAmountExceedsLimit,\n\t\"0x4b29cf0a\": contractErrors.BuyAmountExceedsUsdcLimit,\n\t\"0xbba2edf9\": contractErrors.SellAmountExceedsFiatLimit,\n\t\"0x7e2ee654\": contractErrors.DailyVolumeLimitExceeded,\n\t\"0x49de1789\": contractErrors.MonthlyVolumeLimitExceeded,\n\t\"0xb14a1ff3\": contractErrors.UserYearlyVolumeLimitExceeded,\n\n\t// Dispute\n\t\"0x07a2454f\": contractErrors.DisputeTimeNotReached,\n\t\"0xb28c3e29\": contractErrors.DisputeTimeExpired,\n\t\"0x2a829f07\": contractErrors.InvalidOrderStatusToRaiseDispute,\n\t\"0x88d039ce\": contractErrors.DisputeNotRaised,\n\t\"0x3764a75c\": contractErrors.CannotRaiseDisputeTwice,\n\t\"0x866e9f89\": contractErrors.DisputeAlreadySettled,\n\t\"0x6131d13d\": contractErrors.TransactionIdMismatch,\n\t\"0x8ec051b8\": contractErrors.AccountNumberMismatch,\n\t\"0xf8bfad32\": contractErrors.NotPaidBuyOrder,\n\n\t// Payment channels\n\t\"0x552ff5ec\": contractErrors.PaymentChannelNotFound,\n\t\"0xfccd93cf\": contractErrors.PaymentChannelNotActive,\n\t\"0x6764f4d6\": contractErrors.PaymentChannelNotApproved,\n\t\"0xab284291\": contractErrors.PaymentChannelNotRejected,\n\t\"0x99c8ef4d\": contractErrors.InvalidPaymentChannelId,\n\t\"0x0569ab3e\": contractErrors.DuplicatePaymentChannel,\n\t\"0xff4f83ca\": contractErrors.OldPaymentChannelNotFound,\n\t\"0xb1198199\": contractErrors.NewPaymentChannelNotFound,\n\t\"0xc905b99a\": contractErrors.SamePaymentChannel,\n\t\"0xcedb41f1\": contractErrors.OldPaymentChannelShouldBeInactive,\n\t\"0x487add97\": contractErrors.NewPaymentChannelShouldBeActive,\n\t\"0x6d4c3f9e\": contractErrors.OngoingOrderOnPaymentChannel,\n\t\"0xc1654697\": contractErrors.UpiAlreadySent,\n\t\"0xaa60ec26\": contractErrors.InvalidOrderUpi,\n\t\"0x81c2b982\": contractErrors.NoFiatLiquidity,\n\n\t// Merchant\n\t\"0x5d04ff4c\": contractErrors.NotEnoughEligibleMerchants,\n\t\"0xa6af7ebe\": contractErrors.MerchantNotRegistered,\n\t\"0x7290a612\": contractErrors.MerchantNotApproved,\n\t\"0xf4a1e014\": contractErrors.MerchantAlreadyRegistered,\n\t\"0x8713aaba\": contractErrors.MerchantAlreadyRejected,\n\t\"0x9ae55bc7\": contractErrors.MerchantBlacklisted,\n\t\"0x0ee0b659\": contractErrors.MerchantNotBlacklisted,\n\t\"0x5f765689\": contractErrors.MerchantAlreadyBlacklisted,\n\t\"0x9c54e5a8\": contractErrors.MerchantHasOngoingOrders,\n\t\"0x70d753bd\": contractErrors.MerchantNotFullfilledEligibilityThreshold,\n\t\"0xc0b6c919\": contractErrors.InvalidMerchant,\n\n\t// Staking / unstaking\n\t\"0x3fd2347e\": contractErrors.StakeAmountTooLow,\n\t\"0x703cde0a\": contractErrors.AdditionalStakeNotAllowed,\n\t\"0xa9de99ae\": contractErrors.UnstakeRequestPending,\n\t\"0x0b7c70f3\": contractErrors.UnstakeRequestNotPending,\n\t\"0xe665491f\": contractErrors.UnstakeAmountExceeded,\n\t\"0x2d3087f9\": contractErrors.ZeroUnstakeAmount,\n\t\"0x1b1d7861\": contractErrors.NoWithdrawableAmount,\n\t\"0xcacf989a\": contractErrors.NoStake,\n\t\"0x21311aa3\": contractErrors.NoStakers,\n\t\"0xd06ff88e\": contractErrors.InsufficientStakedAmount,\n\t\"0x9ab7872d\": contractErrors.CooldownNotPassed,\n\t\"0x73380d99\": contractErrors.ClaimableRewardsNotAvailable,\n\n\t// Delegation\n\t\"0xec4b3ce6\": contractErrors.ExitWouldBreachDelegationInvariant,\n\t\"0x8f90a426\": contractErrors.AggregateDelegationExceedsTotalStaked,\n\t\"0x2cc11576\": contractErrors.InsufficientMerchantRewards,\n\n\t// Migration\n\t\"0x92aa7d0f\": contractErrors.InvalidMigrationStatus,\n\t\"0x7ff47425\": contractErrors.MigrationRequestNotPending,\n\t\"0x88ddec46\": contractErrors.MigrationAlreadyRequested,\n\n\t// Token / currency\n\t\"0xc991cbb1\": contractErrors.TokenAlreadyExists,\n\t\"0xcbdb7b30\": contractErrors.TokenNotFound,\n\t\"0x9f11a53f\": contractErrors.TokenEmpty,\n\t\"0x02a6fdd2\": contractErrors.CurrencyNotSupported,\n\t\"0xf5993428\": contractErrors.InvalidCurrency,\n\n\t// USDC / transfer\n\t\"0x149f9fca\": contractErrors.UsdtTransferFailed,\n\t\"0x47bfece5\": contractErrors.UsdtTransferFailedWithErrorMessage,\n\t\"0x279bbc0c\": contractErrors.UsdtTransferFailedWithPanic,\n\t\"0xfb8f41b2\": contractErrors.InsufficientAllowance,\n\n\t// ZK Passport\n\t\"0xfd8d4a6d\": contractErrors.ZKPassportVerifierNotSet,\n\t\"0xb87078f9\": contractErrors.ZKPassportDomainEmpty,\n\t\"0x5eadc4c2\": contractErrors.ZKPassportScopeEmpty,\n\t\"0x7642fe15\": contractErrors.PassportAlreadyVerified,\n\t\"0x1fa24b35\": contractErrors.ZKPassportProofInvalid,\n\t\"0x36bdb7b6\": contractErrors.ZKPassportIdentifierAlreadyVerified,\n\t\"0xd13a7934\": contractErrors.ZKPassportInvalidScope,\n\t\"0x69f5bfe7\": contractErrors.ZKPassportUnexpectedSender,\n\t\"0x0464115c\": contractErrors.ZKPassportAgeBelowMinimum,\n\t\"0x48183836\": contractErrors.ZKPassportMinAgeTooHigh,\n\n\t// Chainlink / oracle\n\t\"0x7f73f237\": contractErrors.UnexpectedRequestId,\n\t\"0xab948796\": contractErrors.OnlyRouterCanFulfill,\n\t\"0x61982c98\": contractErrors.RequestFailed,\n\t\"0xab66be18\": contractErrors.SourceCodeMismatch,\n\t\"0xff2826ef\": contractErrors.ZeroMarketPrice,\n\t\"0xbb6c216c\": contractErrors.InvalidComputedPrices,\n\t\"0x3a8fbef4\": contractErrors.NotPriceUpdaterForCurrency,\n\t\"0x3e2c36f2\": contractErrors.ThresholdNotConfigured,\n\t\"0x71c4efed\": contractErrors.SlippageExceeded,\n\n\t// Reputation / verification\n\t\"0x071ea33c\": contractErrors.UserHasNoReputation,\n\t\"0xd2e1e6e0\": contractErrors.ZeroReputationPoints,\n\t\"0x3c0ca622\": contractErrors.NoReputation,\n\t\"0x412dd2b1\": contractErrors.InsufficientRP,\n\t\"0x0f165e7b\": contractErrors.NullifierAlreadyVerified,\n\t\"0x439cc0cd\": contractErrors.VerificationFailed,\n\t\"0x2366073b\": contractErrors.InvalidSocialPlatform,\n\t\"0x2f850b6b\": contractErrors.SocialAlreadyVerified,\n\t\"0x466f52a8\": contractErrors.YearFieldNotInProof,\n\t\"0x4d460588\": contractErrors.UserIdFieldNotInProof,\n\t\"0xa18ea4e8\": contractErrors.UserIdAlreadyVerified,\n\t\"0x69470b13\": contractErrors.UsernameAlreadyVerified,\n\t\"0x8390b2dd\": contractErrors.UsernameNotInProof,\n\t\"0xef053cf4\": contractErrors.LinkedInOnlyRpUpdates,\n\t\"0x355b0709\": contractErrors.FacebookOnlyRpUpdates,\n\n\t// Voting / referral\n\t\"0x7aabdfe3\": contractErrors.AlreadyReferred,\n\t\"0x83463f4a\": contractErrors.SelfReferralNotAllowed,\n\t\"0x69f6994a\": contractErrors.NotEligibleToRefer,\n\t\"0x1b19ad97\": contractErrors.MerchantMonthlyReferralLimitReached,\n\t\"0x944a2241\": contractErrors.NoRecommender,\n\t\"0x0ece93a6\": contractErrors.RecommendationAlreadyClaimed,\n\t\"0x74785d0f\": contractErrors.CannotVoteYourself,\n\t\"0xc26d5f75\": contractErrors.VotesPerEpochExceeded,\n\t\"0x7c9a1cf9\": contractErrors.AlreadyVoted,\n\t\"0x403e7fa6\": contractErrors.FunctionNotFound,\n\n\t// Campaign\n\t\"0x7a551e38\": contractErrors.CampaignNotActive,\n\t\"0x668ca75d\": contractErrors.InvalidManagerDetails,\n\t\"0x2f950361\": contractErrors.UnclaimedRewardsExist,\n\t\"0x626b7c00\": contractErrors.RewardAlreadyClaimed,\n\t\"0x902ade67\": contractErrors.OnlyNewUsersAllowed,\n\t\"0x22a5e34b\": contractErrors.ManagerNotFound,\n\t\"0xa1610e37\": contractErrors.ManagerInactive,\n\t\"0x3fb087f4\": contractErrors.NoRewards,\n\t\"0x3eedee0f\": contractErrors.InvalidCampaignId,\n\t\"0x302c5138\": contractErrors.CannotClaimRevenueForCurrentMonth,\n\n\t// Referral reward config\n\t\"0x074a6991\": contractErrors.RewardPercentageTooHigh,\n\n\t// Signature / nonce\n\t\"0x1fb09b80\": contractErrors.NonceAlreadyUsed,\n\t\"0x2fdec18b\": contractErrors.SignatureValidationFailed,\n\n\t// Misc\n\t\"0xe6c4247b\": contractErrors.InvalidAddress,\n\t\"0x3eb17c88\": contractErrors.InvalidBlockAmount,\n\t\"0x2c5211c6\": contractErrors.InvalidAmount,\n\t\"0xb4fa3fb3\": contractErrors.InvalidInput,\n\t\"0x1117a646\": contractErrors.InvalidStatusTransition,\n\t\"0xa24a13a6\": contractErrors.ArrayLengthMismatch,\n\t\"0xebb6f34b\": contractErrors.UserIsBlacklisted,\n\t\"0xd92e233d\": contractErrors.ZeroAddress,\n\t\"0x8beb9d16\": contractErrors.ReentrancyGuard,\n\t\"0xbb1cb70b\": contractErrors.BatchTooLarge,\n\t\"0xd97cf1ba\": contractErrors.UnderflowSubtraction,\n\t\"0xc9b16952\": contractErrors.TargetLongerThanData,\n};\n\n/**\n * Parses an unknown contract revert into a `ContractErrorCode` string.\n * Inspects hex selectors in `data`, `message`, and nested `cause` fields.\n * Returns `null` if no known error is matched.\n */\nexport function parseContractError(error: unknown): ContractErrorCode | null {\n\tif (!error) return null;\n\n\tif (typeof error === \"string\") {\n\t\tconst direct = hexContractErrors[error];\n\t\tif (direct) return direct;\n\n\t\tconst hexMatch = error.match(/0x[a-fA-F0-9]{8}/);\n\t\tif (hexMatch) return hexContractErrors[hexMatch[0]] ?? null;\n\n\t\treturn null;\n\t}\n\n\tif (typeof error === \"object\") {\n\t\tconst e = error as {\n\t\t\tdata?: string | { data?: string };\n\t\t\tmessage?: string;\n\t\t\tcause?: unknown;\n\t\t};\n\n\t\tif (e.data) {\n\t\t\tconst hexCode = typeof e.data === \"string\" ? e.data : e.data.data;\n\t\t\tif (hexCode) {\n\t\t\t\tconst match = hexContractErrors[hexCode];\n\t\t\t\tif (match) return match;\n\t\t\t}\n\t\t}\n\n\t\tif (typeof e.message === \"string\") {\n\t\t\tconst hexMatch = e.message.match(/0x[a-fA-F0-9]{8}/);\n\t\t\tif (hexMatch) {\n\t\t\t\tconst match = hexContractErrors[hexMatch[0]];\n\t\t\t\tif (match) return match;\n\t\t\t}\n\n\t\t\tconst jsonMatch = e.message.match(/\\{[\\s\\S]*\\}/);\n\t\t\tif (jsonMatch) {\n\t\t\t\ttry {\n\t\t\t\t\tconst parsed: unknown = JSON.parse(jsonMatch[0]);\n\t\t\t\t\tconst embedded = parseContractError(parsed);\n\t\t\t\t\tif (embedded) return embedded;\n\t\t\t\t} catch {\n\t\t\t\t\t// not valid JSON\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (e.cause) return parseContractError(e.cause);\n\t}\n\n\treturn null;\n}\n","import { ResultAsync } from \"neverthrow\";\nimport type { Address } from \"viem\";\nimport { noopLogger } from \"../../lib\";\nimport { OrderRoutingError } from \"../../orders/internal/routing/errors\";\nimport type { CheckCircleEligibilityParams, Logger } from \"../../orders/internal/routing/types\";\nimport { ZodCheckCircleEligibilityParamsSchema } from \"../../orders/internal/routing/validation\";\nimport type { PublicClientLike } from \"../../types\";\nimport { validate } from \"../../validation\";\nimport { ABIS } from \"../abis\";\n\n/** Checks on-chain eligibility for a given circle by reading assignable merchants. */\nexport function checkCircleEligibility(\n\tpublicClient: PublicClientLike,\n\tcontractAddress: Address,\n\tparams: CheckCircleEligibilityParams,\n\tlogger: Logger = noopLogger,\n): ResultAsync<boolean, OrderRoutingError> {\n\treturn validate(\n\t\tZodCheckCircleEligibilityParamsSchema,\n\t\tparams,\n\t\t(message, cause, d) =>\n\t\t\tnew OrderRoutingError(message, { code: \"VALIDATION_ERROR\", cause, context: { data: d } }),\n\t)\n\t\t.asyncAndThen((validated) => {\n\t\t\tlogger.debug(\"checking on-chain eligibility\", {\n\t\t\t\tcircleId: String(validated.circleId),\n\t\t\t\tcontractAddress,\n\t\t\t});\n\n\t\t\treturn ResultAsync.fromPromise(\n\t\t\t\tpublicClient.readContract({\n\t\t\t\t\taddress: contractAddress,\n\t\t\t\t\tabi: ABIS.FACETS.ORDER_FLOW,\n\t\t\t\t\tfunctionName: \"getAssignableMerchantsFromCircle\",\n\t\t\t\t\targs: [\n\t\t\t\t\t\tvalidated.circleId,\n\t\t\t\t\t\t1n,\n\t\t\t\t\t\tvalidated.currency,\n\t\t\t\t\t\tvalidated.user as Address,\n\t\t\t\t\t\tvalidated.usdtAmount,\n\t\t\t\t\t\tvalidated.fiatAmount,\n\t\t\t\t\t\tvalidated.orderType,\n\t\t\t\t\t\tvalidated.preferredPCConfigId,\n\t\t\t\t\t],\n\t\t\t\t}),\n\t\t\t\t(error) =>\n\t\t\t\t\tnew OrderRoutingError(\"Eligibility check failed\", {\n\t\t\t\t\t\tcode: \"CONTRACT_READ_ERROR\",\n\t\t\t\t\t\tcause: error,\n\t\t\t\t\t\tcontext: { circleId: String(params.circleId) },\n\t\t\t\t\t}),\n\t\t\t);\n\t\t})\n\t\t.map((merchants) => {\n\t\t\tconst arr = merchants as readonly Address[];\n\t\t\tconst eligible = arr.length >= 1;\n\t\t\tlogger.debug(\"eligibility check result\", {\n\t\t\t\tcircleId: String(params.circleId),\n\t\t\t\tassignableMerchants: arr.length,\n\t\t\t\teligible,\n\t\t\t});\n\t\t\treturn eligible;\n\t\t});\n}\n","import { ResultAsync } from \"neverthrow\";\nimport { SdkError } from \"../validation\";\nimport { sleep } from \"./sleep\";\n\nconst DEFAULT_TIMEOUT_MS = 10_000;\nconst MAX_RETRIES = 3;\nconst BACKOFF_MS = 500;\n\nexport type SubgraphErrorCode = \"HTTP_ERROR\" | \"GRAPHQL_ERROR\" | \"NO_DATA\" | \"TRANSPORT_ERROR\";\n\n/** Transport-level error from the shared subgraph client. Consumers remap to their own domain error. */\nexport class SubgraphError extends SdkError<SubgraphErrorCode> {\n\tconstructor(\n\t\tmessage: string,\n\t\toptions: {\n\t\t\tcode: SubgraphErrorCode;\n\t\t\tcause?: unknown;\n\t\t\tcontext?: Record<string, unknown>;\n\t\t},\n\t) {\n\t\tsuper(message, options);\n\t\tthis.name = \"SubgraphError\";\n\t}\n}\n\nexport interface SubgraphQueryParams {\n\treadonly query: string;\n\treadonly variables?: Record<string, unknown>;\n\treadonly timeoutMs?: number;\n}\n\nfunction isTransient(error: unknown): boolean {\n\tif (error instanceof SubgraphError) {\n\t\tif (error.code !== \"HTTP_ERROR\") return false;\n\t\tconst status = (error.context as { status?: number } | undefined)?.status;\n\t\treturn typeof status === \"number\" && status >= 500;\n\t}\n\tif (error instanceof DOMException && error.name === \"AbortError\") return true;\n\tif (error instanceof TypeError) return true;\n\treturn false;\n}\n\n/**\n * POSTs a GraphQL query to `url` with retry + timeout. Returns the `data` field on\n * success. All transport and GraphQL-level failures surface as `SubgraphError`.\n */\nexport function querySubgraph(\n\turl: string,\n\tparams: SubgraphQueryParams,\n): ResultAsync<unknown, SubgraphError> {\n\tconst timeoutMs = params.timeoutMs ?? DEFAULT_TIMEOUT_MS;\n\n\tconst fetchOnce = async () => {\n\t\tconst controller = new AbortController();\n\t\tconst timer = setTimeout(() => controller.abort(), timeoutMs);\n\n\t\ttry {\n\t\t\tconst response = await fetch(url, {\n\t\t\t\tmethod: \"POST\",\n\t\t\t\theaders: { \"Content-Type\": \"application/json\" },\n\t\t\t\tbody: JSON.stringify({\n\t\t\t\t\tquery: params.query,\n\t\t\t\t\tvariables: params.variables,\n\t\t\t\t}),\n\t\t\t\tsignal: controller.signal,\n\t\t\t});\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new SubgraphError(`Subgraph request failed (status: ${response.status})`, {\n\t\t\t\t\tcode: \"HTTP_ERROR\",\n\t\t\t\t\tcause: response,\n\t\t\t\t\tcontext: { status: response.status },\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst json = await response.json();\n\n\t\t\tif (json.errors?.length > 0) {\n\t\t\t\tthrow new SubgraphError(\"Subgraph returned GraphQL errors\", {\n\t\t\t\t\tcode: \"GRAPHQL_ERROR\",\n\t\t\t\t\tcause: json.errors,\n\t\t\t\t\tcontext: { errors: json.errors },\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (!json.data) {\n\t\t\t\tthrow new SubgraphError(\"Subgraph returned no data\", {\n\t\t\t\t\tcode: \"NO_DATA\",\n\t\t\t\t\tcause: \"Missing data field in GraphQL response\",\n\t\t\t\t\tcontext: { response: json },\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn json.data;\n\t\t} finally {\n\t\t\tclearTimeout(timer);\n\t\t}\n\t};\n\n\tconst fetchWithRetry = async () => {\n\t\tfor (let attempt = 0; attempt <= MAX_RETRIES; attempt++) {\n\t\t\ttry {\n\t\t\t\treturn await fetchOnce();\n\t\t\t} catch (error) {\n\t\t\t\tconst lastAttempt = attempt === MAX_RETRIES;\n\t\t\t\tif (lastAttempt || !isTransient(error)) throw error;\n\t\t\t\tawait sleep(BACKOFF_MS * (attempt + 1));\n\t\t\t}\n\t\t}\n\t\tthrow new SubgraphError(\"Subgraph query exhausted retries\", { code: \"TRANSPORT_ERROR\" });\n\t};\n\n\treturn ResultAsync.fromPromise(fetchWithRetry(), (error) =>\n\t\terror instanceof SubgraphError\n\t\t\t? error\n\t\t\t: new SubgraphError(\"Subgraph query failed\", {\n\t\t\t\t\tcode: \"TRANSPORT_ERROR\",\n\t\t\t\t\tcause: error,\n\t\t\t\t}),\n\t);\n}\n","export class SdkError<TCode extends string = string> extends Error {\n\treadonly code: TCode;\n\treadonly cause?: unknown;\n\treadonly context?: Record<string, unknown>;\n\n\tconstructor(\n\t\tmessage: string,\n\t\toptions: {\n\t\t\tcode: TCode;\n\t\t\tcause?: unknown;\n\t\t\tcontext?: Record<string, unknown>;\n\t\t},\n\t) {\n\t\tsuper(message);\n\t\tthis.name = \"SdkError\";\n\t\tthis.code = options.code;\n\t\tthis.cause = options.cause;\n\t\tthis.context = options.context;\n\t}\n}\n","import { err, ok, type Result } from \"neverthrow\";\nimport { isAddress } from \"viem\";\nimport { z } from \"zod\";\nimport { CURRENCY_CODES } from \"../country/currency\";\n\nexport const ZodAddressSchema = z\n\t.string()\n\t.refine((s) => isAddress(s), { message: \"Invalid Ethereum address\" });\n\nexport const ZodCurrencySchema = z.enum(CURRENCY_CODES);\n\nexport function validate<S extends z.ZodType, E>(\n\tschema: S,\n\tdata: unknown,\n\ttoError: (message: string, cause: unknown, data: unknown) => E,\n): Result<z.infer<S>, E> {\n\tconst result = schema.safeParse(data);\n\tif (result.success) {\n\t\treturn ok(result.data as z.infer<S>);\n\t}\n\treturn err(toError(z.prettifyError(result.error), result.error, data));\n}\n","/**\n * All supported currency symbols. Single source of truth for the SDK.\n *\n * Lives alongside the country metadata so that adding a currency is a\n * single-folder operation: drop a new file in `currencies/<code>.ts`, add it\n * to this map, and both `COUNTRY_OPTIONS` and `ZodCurrencySchema` pick it up.\n */\nexport const CURRENCY = {\n\tIDR: \"IDR\",\n\tINR: \"INR\",\n\tBRL: \"BRL\",\n\tARS: \"ARS\",\n\tMEX: \"MEX\",\n\tVEN: \"VEN\",\n\tEUR: \"EUR\",\n\tNGN: \"NGN\",\n\tUSD: \"USD\",\n\tCOP: \"COP\",\n} as const;\n\n/** Union of supported currency codes. */\nexport type CurrencyCode = (typeof CURRENCY)[keyof typeof CURRENCY];\n\n/**\n * Tuple form of the currency codes — used by `z.enum(...)` in the shared\n * validation layer. Narrow tuple type required by Zod.\n */\nexport const CURRENCY_CODES = Object.values(CURRENCY) as [CurrencyCode, ...CurrencyCode[]];\n","import { z } from \"zod\";\nimport { ZodAddressSchema } from \"../../../validation/schemas.validation\";\n\n// ── Circle schemas ──────────────────────────────────────────────────────\n\nexport const ZodCircleScoreStateSchema = z.object({\n\tactiveMerchantsCount: z.coerce.number(),\n});\n\nexport const ZodCircleMetricsForRoutingSchema = z.object({\n\tcircleScore: z.coerce.number(),\n\tcircleStatus: z.string(),\n\tscoreState: ZodCircleScoreStateSchema,\n});\n\nexport const ZodCircleForRoutingSchema = z.object({\n\tcircleId: z.string(),\n\tcurrency: z.string(),\n\tmetrics: ZodCircleMetricsForRoutingSchema,\n});\n\nexport const ZodCirclesForRoutingResponseSchema = z.object({\n\tcircles: z.array(ZodCircleForRoutingSchema),\n});\n\n// ── Eligibility check schema ────────────────────────────────────────────\n\nexport const ZodCheckCircleEligibilityParamsSchema = z.object({\n\tcircleId: z.bigint(),\n\tcurrency: z.string(),\n\tuser: ZodAddressSchema,\n\tusdtAmount: z.bigint(),\n\tfiatAmount: z.bigint(),\n\torderType: z.bigint(),\n\tpreferredPCConfigId: z.bigint(),\n});\n\n// ── Select circle schema ────────────────────────────────────────────────\n\nexport const ZodSelectCircleParamsSchema = z.object({\n\tcurrency: z.string().min(1),\n\tuser: ZodAddressSchema,\n\tusdtAmount: z.bigint(),\n\tfiatAmount: z.bigint(),\n\torderType: z.bigint(),\n\tpreferredPCConfigId: z.bigint(),\n});\n","import { ResultAsync } from \"neverthrow\";\nimport { type Address, type ContractFunctionReturnType, stringToHex } from \"viem\";\nimport type { PublicClientLike } from \"../../types\";\nimport { ABIS } from \"../abis\";\nimport type { orderProcessorFacetAbi } from \"../abis/order-processor-facet\";\n\n/** Return type of the contract `getOrdersById` function, derived from the ABI. */\nexport type RawContractOrder = ContractFunctionReturnType<\n\ttypeof orderProcessorFacetAbi,\n\t\"view\",\n\t\"getOrdersById\"\n>;\n\n/** Return type of the contract `getAdditionalOrderDetails` function, derived from the ABI. */\nexport type RawContractAdditionalDetails = ContractFunctionReturnType<\n\ttypeof orderProcessorFacetAbi,\n\t\"view\",\n\t\"getAdditionalOrderDetails\"\n>;\n\nexport interface RawOrderBundle {\n\torder: RawContractOrder;\n\tdetails: RawContractAdditionalDetails;\n}\n\n/**\n * Reads the core Order struct and AdditionalOrderDetails for `orderId` from the\n * Diamond. Uses viem `multicall` when available (1 RPC) and falls back to two\n * parallel `readContract` calls otherwise.\n */\nexport function readOrderMulticall(\n\tpublicClient: PublicClientLike,\n\tdiamondAddress: Address,\n\torderId: bigint,\n): ResultAsync<RawOrderBundle, Error> {\n\tconst calls = [\n\t\t{\n\t\t\taddress: diamondAddress,\n\t\t\tabi: ABIS.FACETS.ORDER_PROCESSOR,\n\t\t\tfunctionName: \"getOrdersById\",\n\t\t\targs: [orderId] as const,\n\t\t},\n\t\t{\n\t\t\taddress: diamondAddress,\n\t\t\tabi: ABIS.FACETS.ORDER_PROCESSOR,\n\t\t\tfunctionName: \"getAdditionalOrderDetails\",\n\t\t\targs: [orderId] as const,\n\t\t},\n\t];\n\n\tconst toError = (error: unknown) => new Error(\"Order contract read failed\", { cause: error });\n\n\tconst exec = async (): Promise<RawOrderBundle> => {\n\t\tif (publicClient.multicall) {\n\t\t\tconst [order, details] = (await publicClient.multicall({\n\t\t\t\tcontracts: calls,\n\t\t\t\tallowFailure: false,\n\t\t\t})) as [RawContractOrder, RawContractAdditionalDetails];\n\t\t\treturn { order, details };\n\t\t}\n\t\tconst [order, details] = (await Promise.all(\n\t\t\tcalls.map((c) => publicClient.readContract(c)),\n\t\t)) as [RawContractOrder, RawContractAdditionalDetails];\n\t\treturn { order, details };\n\t};\n\n\treturn ResultAsync.fromPromise(exec(), toError);\n}\n\nexport interface RawFeeConfig {\n\tsmallOrderThreshold: bigint;\n\tsmallOrderFixedFee: bigint;\n}\n\n/**\n * Reads the per-currency small-order threshold and fixed fee from the Diamond.\n * Uses viem `multicall` when available (1 RPC) and falls back to two parallel\n * `readContract` calls otherwise. Amounts are returned as 6-decimal bigints.\n */\nexport function readFeeConfigMulticall(\n\tpublicClient: PublicClientLike,\n\tdiamondAddress: Address,\n\tcurrency: string,\n): ResultAsync<RawFeeConfig, Error> {\n\tconst currencyHex = stringToHex(currency, { size: 32 });\n\tconst calls = [\n\t\t{\n\t\t\taddress: diamondAddress,\n\t\t\tabi: ABIS.FACETS.ORDER_PROCESSOR,\n\t\t\tfunctionName: \"getSmallOrderThreshold\",\n\t\t\targs: [currencyHex] as const,\n\t\t},\n\t\t{\n\t\t\taddress: diamondAddress,\n\t\t\tabi: ABIS.FACETS.ORDER_PROCESSOR,\n\t\t\tfunctionName: \"getSmallOrderFixedFee\",\n\t\t\targs: [currencyHex] as const,\n\t\t},\n\t];\n\n\tconst toError = (error: unknown) =>\n\t\tnew Error(\"Fee config contract read failed\", { cause: error });\n\n\tconst exec = async (): Promise<RawFeeConfig> => {\n\t\tif (publicClient.multicall) {\n\t\t\tconst [smallOrderThreshold, smallOrderFixedFee] = (await publicClient.multicall({\n\t\t\t\tcontracts: calls,\n\t\t\t\tallowFailure: false,\n\t\t\t})) as [bigint, bigint];\n\t\t\treturn { smallOrderThreshold, smallOrderFixedFee };\n\t\t}\n\t\tconst [smallOrderThreshold, smallOrderFixedFee] = (await Promise.all(\n\t\t\tcalls.map((c) => publicClient.readContract(c)),\n\t\t)) as [bigint, bigint];\n\t\treturn { smallOrderThreshold, smallOrderFixedFee };\n\t};\n\n\treturn ResultAsync.fromPromise(exec(), toError);\n}\n","import { ResultAsync } from \"neverthrow\";\nimport { type Address, stringToHex } from \"viem\";\nimport { PricesError } from \"../../prices/errors\";\nimport type { PriceConfig, ReputationLimit } from \"../../prices/types\";\nimport type { CurrencyScopedParams } from \"../../prices/validation\";\nimport { ZodCurrencyScopedParamsSchema } from \"../../prices/validation\";\nimport type { PublicClientLike } from \"../../types\";\nimport { validate } from \"../../validation\";\nimport { ABIS } from \"../abis\";\n\n/** Reads the price config (buy/sell prices) for a given currency. */\nexport function getPriceConfig(\n\tpublicClient: PublicClientLike,\n\tdiamondAddress: Address,\n\tparams: CurrencyScopedParams,\n): ResultAsync<PriceConfig, PricesError> {\n\treturn validate(\n\t\tZodCurrencyScopedParamsSchema,\n\t\tparams,\n\t\t(message, cause, data) =>\n\t\t\tnew PricesError(message, {\n\t\t\t\tcode: \"VALIDATION_ERROR\",\n\t\t\t\tcause,\n\t\t\t\tcontext: { params: data },\n\t\t\t}),\n\t).asyncAndThen((validated) =>\n\t\tResultAsync.fromPromise(\n\t\t\tpublicClient.readContract({\n\t\t\t\taddress: diamondAddress,\n\t\t\t\tabi: ABIS.FACETS.CONFIG,\n\t\t\t\tfunctionName: \"getPriceConfig\",\n\t\t\t\targs: [stringToHex(validated.currency, { size: 32 })],\n\t\t\t}) as Promise<PriceConfig>,\n\t\t\t(error) =>\n\t\t\t\tnew PricesError(\"Failed to read price config\", {\n\t\t\t\t\tcode: \"CONTRACT_READ_ERROR\",\n\t\t\t\t\tcause: error,\n\t\t\t\t\tcontext: { currency: validated.currency, diamondAddress },\n\t\t\t\t}),\n\t\t),\n\t);\n}\n\n/**\n * Reads the per-currency USDC transaction limit granted per Reputation Point (RP).\n * Default is 1 RP = 2 USDC everywhere except INR.\n */\nexport function getReputationPerUsdcLimit(\n\tpublicClient: PublicClientLike,\n\tdiamondAddress: Address,\n\tparams: CurrencyScopedParams,\n): ResultAsync<ReputationLimit, PricesError> {\n\treturn validate(\n\t\tZodCurrencyScopedParamsSchema,\n\t\tparams,\n\t\t(message, cause, data) =>\n\t\t\tnew PricesError(message, {\n\t\t\t\tcode: \"VALIDATION_ERROR\",\n\t\t\t\tcause,\n\t\t\t\tcontext: { params: data },\n\t\t\t}),\n\t).asyncAndThen((validated) =>\n\t\tResultAsync.fromPromise(\n\t\t\tpublicClient.readContract({\n\t\t\t\taddress: diamondAddress,\n\t\t\t\tabi: ABIS.DIAMOND,\n\t\t\t\tfunctionName: \"getRpPerUsdtLimitRational\",\n\t\t\t\targs: [stringToHex(validated.currency, { size: 32 })],\n\t\t\t}) as Promise<readonly [bigint, bigint]>,\n\t\t\t(error) =>\n\t\t\t\tnew PricesError(\"Failed to read reputation-per-USDC limit\", {\n\t\t\t\t\tcode: \"CONTRACT_READ_ERROR\",\n\t\t\t\t\tcause: error,\n\t\t\t\t\tcontext: { currency: validated.currency, diamondAddress },\n\t\t\t\t}),\n\t\t).map(([numerator, denominator]) => ({\n\t\t\tnumerator,\n\t\t\tdenominator,\n\t\t\tmultiplier: numerator > 0n ? Number(denominator) / Number(numerator) : 0,\n\t\t})),\n\t);\n}\n","import { SdkError } from \"../validation\";\n\nexport type PricesErrorCode = \"VALIDATION_ERROR\" | \"CONTRACT_READ_ERROR\";\n\nexport class PricesError extends SdkError<PricesErrorCode> {\n\tconstructor(\n\t\tmessage: string,\n\t\toptions: {\n\t\t\tcode: PricesErrorCode;\n\t\t\tcause?: unknown;\n\t\t\tcontext?: Record<string, unknown>;\n\t\t},\n\t) {\n\t\tsuper(message, options);\n\t\tthis.name = \"PricesError\";\n\t}\n}\n","import { z } from \"zod\";\nimport { ZodCurrencySchema } from \"../validation/schemas.validation\";\n\n/**\n * Shared param shape for every currency-scoped read in this module\n * (`getPriceConfig`, `getReputationPerUsdcLimit`). All methods take `{ currency }`.\n */\nexport const ZodCurrencyScopedParamsSchema = z.object({\n\tcurrency: ZodCurrencySchema,\n});\n\nexport type CurrencyScopedParams = z.infer<typeof ZodCurrencyScopedParamsSchema>;\n","import { Result } from \"neverthrow\";\nimport { type Address, encodeFunctionData } from \"viem\";\nimport { validate } from \"../../validation\";\nimport { ZkkycError } from \"../../zkkyc/errors\";\nimport type {\n\tAnonAadharProofParams,\n\tSocialVerifyParams,\n\tZkPassportRegisterParams,\n} from \"../../zkkyc/validation\";\nimport {\n\tZodAnonAadharProofParamsSchema,\n\tZodSocialVerifyParamsSchema,\n\tZodZkPassportRegisterParamsSchema,\n} from \"../../zkkyc/validation\";\nimport { ABIS } from \"../abis\";\n\n/** Prepares a social verification transaction. */\nexport function prepareSocialVerify(\n\treputationManagerAddress: Address,\n\tparams: SocialVerifyParams,\n): Result<{ to: Address; data: `0x${string}` }, ZkkycError> {\n\treturn validate(\n\t\tZodSocialVerifyParamsSchema,\n\t\tparams,\n\t\t(message, cause, data) =>\n\t\t\tnew ZkkycError(message, { code: \"VALIDATION_ERROR\", cause, context: { params: data } }),\n\t).andThen((validated) =>\n\t\tResult.fromThrowable(\n\t\t\t() => ({\n\t\t\t\tto: reputationManagerAddress,\n\t\t\t\tdata: encodeFunctionData({\n\t\t\t\t\tabi: ABIS.EXTERNAL.REPUTATION_MANAGER,\n\t\t\t\t\tfunctionName: \"socialVerify\",\n\t\t\t\t\targs: [\n\t\t\t\t\t\tvalidated._socialName,\n\t\t\t\t\t\tvalidated.proofs.map((proof) => ({\n\t\t\t\t\t\t\t...proof,\n\t\t\t\t\t\t\tsignedClaim: {\n\t\t\t\t\t\t\t\t...proof.signedClaim,\n\t\t\t\t\t\t\t\tclaim: {\n\t\t\t\t\t\t\t\t\t...proof.signedClaim.claim,\n\t\t\t\t\t\t\t\t\tidentifier: proof.signedClaim.claim.identifier as `0x${string}`,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tsignatures: proof.signedClaim.signatures as readonly `0x${string}`[],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t})),\n\t\t\t\t\t],\n\t\t\t\t}),\n\t\t\t}),\n\t\t\t(error) =>\n\t\t\t\tnew ZkkycError(\"Failed to encode socialVerify\", {\n\t\t\t\t\tcode: \"ENCODE_ERROR\",\n\t\t\t\t\tcause: error,\n\t\t\t\t}),\n\t\t)(),\n\t);\n}\n\n/** Prepares a submit anon Aadhaar proof transaction. */\nexport function prepareSubmitAnonAadharProof(\n\treputationManagerAddress: Address,\n\tparams: AnonAadharProofParams,\n): Result<{ to: Address; data: `0x${string}` }, ZkkycError> {\n\treturn validate(\n\t\tZodAnonAadharProofParamsSchema,\n\t\tparams,\n\t\t(message, cause, data) =>\n\t\t\tnew ZkkycError(message, { code: \"VALIDATION_ERROR\", cause, context: { params: data } }),\n\t).andThen((validated) =>\n\t\tResult.fromThrowable(\n\t\t\t() => ({\n\t\t\t\tto: reputationManagerAddress,\n\t\t\t\tdata: encodeFunctionData({\n\t\t\t\t\tabi: ABIS.EXTERNAL.REPUTATION_MANAGER,\n\t\t\t\t\tfunctionName: \"submitAnonAadharProof\",\n\t\t\t\t\targs: [\n\t\t\t\t\t\tvalidated.nullifierSeed,\n\t\t\t\t\t\tvalidated.nullifier,\n\t\t\t\t\t\tvalidated.timestamp,\n\t\t\t\t\t\tvalidated.signal,\n\t\t\t\t\t\tvalidated.revealArray,\n\t\t\t\t\t\tvalidated.packedGroth16Proof,\n\t\t\t\t\t],\n\t\t\t\t}),\n\t\t\t}),\n\t\t\t(error) =>\n\t\t\t\tnew ZkkycError(\"Failed to encode submitAnonAadharProof\", {\n\t\t\t\t\tcode: \"ENCODE_ERROR\",\n\t\t\t\t\tcause: error,\n\t\t\t\t}),\n\t\t)(),\n\t);\n}\n\n/** Prepares a zkPassport registration transaction. */\nexport function prepareZkPassportRegister(\n\treputationManagerAddress: Address,\n\tparams: ZkPassportRegisterParams,\n): Result<{ to: Address; data: `0x${string}` }, ZkkycError> {\n\treturn validate(\n\t\tZodZkPassportRegisterParamsSchema,\n\t\tparams,\n\t\t(message, cause, data) =>\n\t\t\tnew ZkkycError(message, { code: \"VALIDATION_ERROR\", cause, context: { params: data } }),\n\t).andThen((validated) =>\n\t\tResult.fromThrowable(\n\t\t\t() => {\n\t\t\t\tconst { proofVerificationData, serviceConfig, committedInputs, version } = validated.params;\n\n\t\t\t\tconst proofVerificationParams = {\n\t\t\t\t\tversion: version as `0x${string}`,\n\t\t\t\t\tproofVerificationData: {\n\t\t\t\t\t\tvkeyHash: proofVerificationData.vkeyHash as `0x${string}`,\n\t\t\t\t\t\tproof: proofVerificationData.proof as `0x${string}`,\n\t\t\t\t\t\tpublicInputs: proofVerificationData.publicInputs as `0x${string}`[],\n\t\t\t\t\t},\n\t\t\t\t\tcommittedInputs: committedInputs as `0x${string}`,\n\t\t\t\t\tserviceConfig: {\n\t\t\t\t\t\tvalidityPeriodInSeconds: BigInt(serviceConfig.validityPeriodInSeconds),\n\t\t\t\t\t\tdomain: serviceConfig.domain,\n\t\t\t\t\t\tscope: serviceConfig.scope,\n\t\t\t\t\t\tdevMode: serviceConfig.devMode,\n\t\t\t\t\t},\n\t\t\t\t};\n\n\t\t\t\treturn {\n\t\t\t\t\tto: reputationManagerAddress,\n\t\t\t\t\tdata: encodeFunctionData({\n\t\t\t\t\t\tabi: ABIS.EXTERNAL.REPUTATION_MANAGER,\n\t\t\t\t\t\tfunctionName: \"zkPassportRegister\",\n\t\t\t\t\t\targs: [proofVerificationParams, validated.isIDCard],\n\t\t\t\t\t}),\n\t\t\t\t};\n\t\t\t},\n\t\t\t(error) =>\n\t\t\t\tnew ZkkycError(\"Failed to encode zkPassportRegister\", {\n\t\t\t\t\tcode: \"ENCODE_ERROR\",\n\t\t\t\t\tcause: error,\n\t\t\t\t}),\n\t\t)(),\n\t);\n}\n","import { z } from \"zod\";\nimport { ZodAddressSchema } from \"../validation\";\n\n// ── Write param schemas ──────────────────────────────────────────────────────\n\nexport const ZodAnonAadharProofParamsSchema = z.object({\n\tnullifierSeed: z.bigint(),\n\tnullifier: z.bigint(),\n\ttimestamp: z.bigint(),\n\tsignal: z.bigint(),\n\trevealArray: z.tuple([z.bigint(), z.bigint(), z.bigint(), z.bigint()]),\n\tpackedGroth16Proof: z.tuple([\n\t\tz.bigint(),\n\t\tz.bigint(),\n\t\tz.bigint(),\n\t\tz.bigint(),\n\t\tz.bigint(),\n\t\tz.bigint(),\n\t\tz.bigint(),\n\t\tz.bigint(),\n\t]),\n});\n\nexport type AnonAadharProofParams = z.infer<typeof ZodAnonAadharProofParamsSchema>;\n\nexport const ZodSocialVerifyParamsSchema = z.object({\n\t_socialName: z.string(),\n\tproofs: z.array(\n\t\tz.object({\n\t\t\tclaimInfo: z.object({\n\t\t\t\tprovider: z.string(),\n\t\t\t\tparameters: z.string(),\n\t\t\t\tcontext: z.string(),\n\t\t\t}),\n\t\t\tsignedClaim: z.object({\n\t\t\t\tclaim: z.object({\n\t\t\t\t\tidentifier: z.string(),\n\t\t\t\t\towner: ZodAddressSchema,\n\t\t\t\t\ttimestampS: z.number(),\n\t\t\t\t\tepoch: z.number(),\n\t\t\t\t}),\n\t\t\t\tsignatures: z.array(z.string()),\n\t\t\t}),\n\t\t}),\n\t),\n});\n\nexport type SocialVerifyParams = z.infer<typeof ZodSocialVerifyParamsSchema>;\n\n// Schema matching SolidityVerifierParameters from @zkpassport/sdk (structural definition)\nexport const ZodSolidityVerifierParametersSchema = z.object({\n\tversion: z.string().refine((val) => val.startsWith(\"0x\"), {\n\t\tmessage: \"Version must be a hex string\",\n\t}),\n\tproofVerificationData: z.object({\n\t\tvkeyHash: z.string().refine((val) => /^0x[a-fA-F0-9]{64}$/.test(val), {\n\t\t\tmessage: \"Invalid bytes32 hex string\",\n\t\t}),\n\t\tproof: z.string().refine((val) => val.startsWith(\"0x\"), {\n\t\t\tmessage: \"Proof must be a hex string\",\n\t\t}),\n\t\tpublicInputs: z.array(\n\t\t\tz.string().refine((val) => /^0x[a-fA-F0-9]{64}$/.test(val), {\n\t\t\t\tmessage: \"Each public input must be a valid bytes32 hex string\",\n\t\t\t}),\n\t\t),\n\t}),\n\tcommittedInputs: z.string().refine((val) => val.startsWith(\"0x\"), {\n\t\tmessage: \"Committed inputs must be a hex string\",\n\t}),\n\tserviceConfig: z.object({\n\t\tvalidityPeriodInSeconds: z.number().int().nonnegative(),\n\t\tdomain: z.string(),\n\t\tscope: z.string(),\n\t\tdevMode: z.boolean(),\n\t}),\n});\n\nexport type SolidityVerifierParameters = z.infer<typeof ZodSolidityVerifierParametersSchema>;\n\nexport const ZodZkPassportRegisterParamsSchema = z.object({\n\tparams: ZodSolidityVerifierParametersSchema,\n\tisIDCard: z.boolean(),\n});\n\nexport type ZkPassportRegisterParams = z.infer<typeof ZodZkPassportRegisterParamsSchema>;\n","import { ResultAsync } from \"neverthrow\";\nimport { type Address, formatUnits, stringToHex } from \"viem\";\nimport { ProfileError } from \"../../profile/errors\";\nimport type { TxLimitsParams } from \"../../profile/validation\";\nimport { ZodTxLimitsParamsSchema } from \"../../profile/validation\";\nimport type { PublicClientLike } from \"../../types\";\nimport { validate } from \"../../validation\";\nimport { ABIS } from \"../abis\";\n\nexport interface TxLimits {\n\treadonly buyLimit: number;\n\treadonly sellLimit: number;\n}\n\n/** Reads the buy and sell transaction limits for a given address and currency. */\nexport function getTxLimits(\n\tpublicClient: PublicClientLike,\n\tdiamondAddress: Address,\n\tparams: TxLimitsParams,\n): ResultAsync<TxLimits, ProfileError> {\n\treturn validate(\n\t\tZodTxLimitsParamsSchema,\n\t\tparams,\n\t\t(message, cause, data) =>\n\t\t\tnew ProfileError(message, {\n\t\t\t\tcode: \"VALIDATION_ERROR\",\n\t\t\t\tcause,\n\t\t\t\tcontext: { params: data },\n\t\t\t}),\n\t).asyncAndThen((validated) =>\n\t\tResultAsync.fromPromise(\n\t\t\tpublicClient.readContract({\n\t\t\t\taddress: diamondAddress,\n\t\t\t\tabi: ABIS.FACETS.ORDER_FLOW,\n\t\t\t\tfunctionName: \"userTxLimit\",\n\t\t\t\targs: [validated.address, stringToHex(validated.currency, { size: 32 })],\n\t\t\t}) as Promise<readonly [bigint, bigint]>,\n\t\t\t(error) =>\n\t\t\t\tnew ProfileError(\"Failed to read tx limits\", {\n\t\t\t\t\tcode: \"CONTRACT_READ_ERROR\",\n\t\t\t\t\tcause: error,\n\t\t\t\t\tcontext: { address: validated.address, currency: validated.currency, diamondAddress },\n\t\t\t\t}),\n\t\t).map(([buyLimit, sellLimit]) => ({\n\t\t\tbuyLimit: Number(formatUnits(buyLimit, 6)),\n\t\t\tsellLimit: Number(formatUnits(sellLimit, 6)),\n\t\t})),\n\t);\n}\n","import { z } from \"zod\";\nimport { ZodAddressSchema, ZodCurrencySchema } from \"../validation/schemas.validation\";\n\nexport const ZodUsdcBalanceParamsSchema = z.object({\n\taddress: ZodAddressSchema,\n});\n\nexport type UsdcBalanceParams = z.infer<typeof ZodUsdcBalanceParamsSchema>;\n\nexport const ZodUsdcAllowanceParamsSchema = z.object({\n\towner: ZodAddressSchema,\n});\n\nexport type UsdcAllowanceParams = z.infer<typeof ZodUsdcAllowanceParamsSchema>;\n\nexport const ZodGetBalancesParamsSchema = z.object({\n\taddress: ZodAddressSchema,\n\tcurrency: ZodCurrencySchema,\n});\n\nexport type GetBalancesParams = z.infer<typeof ZodGetBalancesParamsSchema>;\n\nexport const ZodTxLimitsParamsSchema = z.object({\n\taddress: ZodAddressSchema,\n\tcurrency: ZodCurrencySchema,\n});\n\nexport type TxLimitsParams = z.infer<typeof ZodTxLimitsParamsSchema>;\n","import { ResultAsync } from \"neverthrow\";\nimport type { Address } from \"viem\";\nimport { erc20Abi } from \"viem\";\nimport { ProfileError } from \"../../profile/errors\";\nimport type { UsdcAllowanceParams, UsdcBalanceParams } from \"../../profile/validation\";\nimport { ZodUsdcAllowanceParamsSchema, ZodUsdcBalanceParamsSchema } from \"../../profile/validation\";\nimport type { PublicClientLike } from \"../../types\";\nimport { validate } from \"../../validation\";\nimport { ABIS } from \"../abis\";\n\n/** Reads the USDC balance for a given address. */\nexport function getUsdcBalance(\n\tpublicClient: PublicClientLike,\n\tusdcAddress: Address,\n\tparams: UsdcBalanceParams,\n): ResultAsync<bigint, ProfileError> {\n\treturn validate(\n\t\tZodUsdcBalanceParamsSchema,\n\t\tparams,\n\t\t(message, cause, data) =>\n\t\t\tnew ProfileError(message, {\n\t\t\t\tcode: \"VALIDATION_ERROR\",\n\t\t\t\tcause,\n\t\t\t\tcontext: { params: data },\n\t\t\t}),\n\t).asyncAndThen((validated) =>\n\t\tResultAsync.fromPromise(\n\t\t\tpublicClient.readContract({\n\t\t\t\taddress: usdcAddress,\n\t\t\t\tabi: ABIS.EXTERNAL.USDC,\n\t\t\t\tfunctionName: \"balanceOf\",\n\t\t\t\targs: [validated.address],\n\t\t\t}) as Promise<bigint>,\n\t\t\t(error) =>\n\t\t\t\tnew ProfileError(\"Failed to read USDC balance\", {\n\t\t\t\t\tcode: \"CONTRACT_READ_ERROR\",\n\t\t\t\t\tcause: error,\n\t\t\t\t\tcontext: { address: validated.address, usdcAddress },\n\t\t\t\t}),\n\t\t),\n\t);\n}\n\n/** Reads the USDC allowance `owner → diamond`. */\nexport function getUsdcAllowance(\n\tpublicClient: PublicClientLike,\n\tusdcAddress: Address,\n\tdiamondAddress: Address,\n\tparams: UsdcAllowanceParams,\n): ResultAsync<bigint, ProfileError> {\n\treturn validate(\n\t\tZodUsdcAllowanceParamsSchema,\n\t\tparams,\n\t\t(message, cause, data) =>\n\t\t\tnew ProfileError(message, {\n\t\t\t\tcode: \"VALIDATION_ERROR\",\n\t\t\t\tcause,\n\t\t\t\tcontext: { params: data },\n\t\t\t}),\n\t).asyncAndThen((validated) =>\n\t\tResultAsync.fromPromise(\n\t\t\tpublicClient.readContract({\n\t\t\t\taddress: usdcAddress,\n\t\t\t\tabi: erc20Abi,\n\t\t\t\tfunctionName: \"allowance\",\n\t\t\t\targs: [validated.owner, diamondAddress],\n\t\t\t}) as Promise<bigint>,\n\t\t\t(error) =>\n\t\t\t\tnew ProfileError(\"Failed to read USDC allowance\", {\n\t\t\t\t\tcode: \"CONTRACT_READ_ERROR\",\n\t\t\t\t\tcause: error,\n\t\t\t\t\tcontext: { owner: validated.owner, usdcAddress, diamondAddress },\n\t\t\t\t}),\n\t\t),\n\t);\n}\n","import type { ResultAsync } from \"neverthrow\";\nimport { getPriceConfig, getReputationPerUsdcLimit } from \"../contracts\";\nimport type { PricesError } from \"./errors\";\nimport type { CurrencyScopedParams, PriceConfig, PricesConfig, ReputationLimit } from \"./types\";\n\nexport interface Prices {\n\t/** Reads buy/sell price config for a given currency (raw bigint, 6 decimals). */\n\tgetPriceConfig(params: CurrencyScopedParams): ResultAsync<PriceConfig, PricesError>;\n\n\t/**\n\t * Reads the per-currency USDC transaction limit granted per Reputation Point\n\t * (RP). Default is 1 RP = 2 USDC everywhere except INR, which uses its own\n\t * on-chain multiplier.\n\t */\n\tgetReputationPerUsdcLimit(\n\t\tparams: CurrencyScopedParams,\n\t): ResultAsync<ReputationLimit, PricesError>;\n}\n\n/**\n * Creates a Prices SDK instance for reading per-currency protocol config:\n * buy/sell prices and the Reputation Points → USDC limit ratio. All reads\n * are currency-scoped — no user context needed.\n */\nexport function createPrices(config: PricesConfig): Prices {\n\tconst { publicClient, diamondAddress } = config;\n\n\treturn {\n\t\tgetPriceConfig: (params) => getPriceConfig(publicClient, diamondAddress, params),\n\t\tgetReputationPerUsdcLimit: (params) =>\n\t\t\tgetReputationPerUsdcLimit(publicClient, diamondAddress, params),\n\t};\n}\n"],"mappings":"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eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA;AAAA,EAG7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA;AAAA,EAG7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA;AAAA,EAG7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA;AAAA,EAG7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA;AAAA,EAG7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA;AAAA,EAG7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA;AAAA,EAG7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA;AAAA,EAG7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA;AAAA,EAG7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA;AAAA,EAG7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA;AAAA,EAG7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA;AAAA,EAG7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA,EAC7B,cAAc,eAAe;AAAA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","names":["import_neverthrow","import_neverthrow","import_viem","import_zod","import_neverthrow","import_viem","import_neverthrow","import_viem","import_zod","import_neverthrow","import_viem","import_zod","import_neverthrow","import_viem","import_zod","import_neverthrow","import_viem"]}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { ResultAsync } from 'neverthrow';
|
|
2
|
+
import { Address } from 'viem';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
|
|
5
|
+
declare class SdkError<TCode extends string = string> extends Error {
|
|
6
|
+
readonly code: TCode;
|
|
7
|
+
readonly cause?: unknown;
|
|
8
|
+
readonly context?: Record<string, unknown>;
|
|
9
|
+
constructor(message: string, options: {
|
|
10
|
+
code: TCode;
|
|
11
|
+
cause?: unknown;
|
|
12
|
+
context?: Record<string, unknown>;
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
type PricesErrorCode = "VALIDATION_ERROR" | "CONTRACT_READ_ERROR";
|
|
17
|
+
declare class PricesError extends SdkError<PricesErrorCode> {
|
|
18
|
+
constructor(message: string, options: {
|
|
19
|
+
code: PricesErrorCode;
|
|
20
|
+
cause?: unknown;
|
|
21
|
+
context?: Record<string, unknown>;
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Minimal viem PublicClient interface — consumers pass their own client.
|
|
27
|
+
* The SDK uses `readContract` for single reads and `multicall` where available
|
|
28
|
+
* to batch multiple reads into one RPC round-trip.
|
|
29
|
+
*/
|
|
30
|
+
interface PublicClientLike {
|
|
31
|
+
readContract(args: {
|
|
32
|
+
address: Address;
|
|
33
|
+
abi: readonly unknown[];
|
|
34
|
+
functionName: string;
|
|
35
|
+
args: readonly unknown[];
|
|
36
|
+
}): Promise<unknown>;
|
|
37
|
+
multicall?(args: {
|
|
38
|
+
contracts: readonly {
|
|
39
|
+
address: Address;
|
|
40
|
+
abi: readonly unknown[];
|
|
41
|
+
functionName: string;
|
|
42
|
+
args?: readonly unknown[];
|
|
43
|
+
}[];
|
|
44
|
+
allowFailure?: boolean;
|
|
45
|
+
}): Promise<readonly unknown[]>;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Shared param shape for every currency-scoped read in this module
|
|
50
|
+
* (`getPriceConfig`, `getReputationPerUsdcLimit`). All methods take `{ currency }`.
|
|
51
|
+
*/
|
|
52
|
+
declare const ZodCurrencyScopedParamsSchema: z.ZodObject<{
|
|
53
|
+
currency: z.ZodEnum<{
|
|
54
|
+
IDR: "IDR";
|
|
55
|
+
INR: "INR";
|
|
56
|
+
BRL: "BRL";
|
|
57
|
+
ARS: "ARS";
|
|
58
|
+
MEX: "MEX";
|
|
59
|
+
VEN: "VEN";
|
|
60
|
+
EUR: "EUR";
|
|
61
|
+
NGN: "NGN";
|
|
62
|
+
USD: "USD";
|
|
63
|
+
COP: "COP";
|
|
64
|
+
}>;
|
|
65
|
+
}, z.core.$strip>;
|
|
66
|
+
type CurrencyScopedParams = z.infer<typeof ZodCurrencyScopedParamsSchema>;
|
|
67
|
+
|
|
68
|
+
interface PricesConfig {
|
|
69
|
+
readonly publicClient: PublicClientLike;
|
|
70
|
+
readonly diamondAddress: Address;
|
|
71
|
+
}
|
|
72
|
+
interface PriceConfig {
|
|
73
|
+
readonly buyPrice: bigint;
|
|
74
|
+
readonly sellPrice: bigint;
|
|
75
|
+
readonly buyPriceOffset: bigint;
|
|
76
|
+
readonly baseSpread: bigint;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Per-currency USDC transaction limit granted per Reputation Point (RP).
|
|
80
|
+
* Default is 1 RP = 2 USDC everywhere except India (INR), which has its own
|
|
81
|
+
* multiplier set on-chain.
|
|
82
|
+
*
|
|
83
|
+
* multiplier = denominator / numerator // USDC per RP
|
|
84
|
+
*/
|
|
85
|
+
interface ReputationLimit {
|
|
86
|
+
readonly numerator: bigint;
|
|
87
|
+
readonly denominator: bigint;
|
|
88
|
+
/** USDC per Reputation Point, computed from the rational form. */
|
|
89
|
+
readonly multiplier: number;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
interface Prices {
|
|
93
|
+
/** Reads buy/sell price config for a given currency (raw bigint, 6 decimals). */
|
|
94
|
+
getPriceConfig(params: CurrencyScopedParams): ResultAsync<PriceConfig, PricesError>;
|
|
95
|
+
/**
|
|
96
|
+
* Reads the per-currency USDC transaction limit granted per Reputation Point
|
|
97
|
+
* (RP). Default is 1 RP = 2 USDC everywhere except INR, which uses its own
|
|
98
|
+
* on-chain multiplier.
|
|
99
|
+
*/
|
|
100
|
+
getReputationPerUsdcLimit(params: CurrencyScopedParams): ResultAsync<ReputationLimit, PricesError>;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Creates a Prices SDK instance for reading per-currency protocol config:
|
|
104
|
+
* buy/sell prices and the Reputation Points → USDC limit ratio. All reads
|
|
105
|
+
* are currency-scoped — no user context needed.
|
|
106
|
+
*/
|
|
107
|
+
declare function createPrices(config: PricesConfig): Prices;
|
|
108
|
+
|
|
109
|
+
export { type CurrencyScopedParams, type PriceConfig, type Prices, type PricesConfig, PricesError, type PricesErrorCode, type ReputationLimit, createPrices };
|
package/dist/prices.d.ts
ADDED
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { ResultAsync } from 'neverthrow';
|
|
2
|
+
import { Address } from 'viem';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
|
|
5
|
+
declare class SdkError<TCode extends string = string> extends Error {
|
|
6
|
+
readonly code: TCode;
|
|
7
|
+
readonly cause?: unknown;
|
|
8
|
+
readonly context?: Record<string, unknown>;
|
|
9
|
+
constructor(message: string, options: {
|
|
10
|
+
code: TCode;
|
|
11
|
+
cause?: unknown;
|
|
12
|
+
context?: Record<string, unknown>;
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
type PricesErrorCode = "VALIDATION_ERROR" | "CONTRACT_READ_ERROR";
|
|
17
|
+
declare class PricesError extends SdkError<PricesErrorCode> {
|
|
18
|
+
constructor(message: string, options: {
|
|
19
|
+
code: PricesErrorCode;
|
|
20
|
+
cause?: unknown;
|
|
21
|
+
context?: Record<string, unknown>;
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Minimal viem PublicClient interface — consumers pass their own client.
|
|
27
|
+
* The SDK uses `readContract` for single reads and `multicall` where available
|
|
28
|
+
* to batch multiple reads into one RPC round-trip.
|
|
29
|
+
*/
|
|
30
|
+
interface PublicClientLike {
|
|
31
|
+
readContract(args: {
|
|
32
|
+
address: Address;
|
|
33
|
+
abi: readonly unknown[];
|
|
34
|
+
functionName: string;
|
|
35
|
+
args: readonly unknown[];
|
|
36
|
+
}): Promise<unknown>;
|
|
37
|
+
multicall?(args: {
|
|
38
|
+
contracts: readonly {
|
|
39
|
+
address: Address;
|
|
40
|
+
abi: readonly unknown[];
|
|
41
|
+
functionName: string;
|
|
42
|
+
args?: readonly unknown[];
|
|
43
|
+
}[];
|
|
44
|
+
allowFailure?: boolean;
|
|
45
|
+
}): Promise<readonly unknown[]>;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Shared param shape for every currency-scoped read in this module
|
|
50
|
+
* (`getPriceConfig`, `getReputationPerUsdcLimit`). All methods take `{ currency }`.
|
|
51
|
+
*/
|
|
52
|
+
declare const ZodCurrencyScopedParamsSchema: z.ZodObject<{
|
|
53
|
+
currency: z.ZodEnum<{
|
|
54
|
+
IDR: "IDR";
|
|
55
|
+
INR: "INR";
|
|
56
|
+
BRL: "BRL";
|
|
57
|
+
ARS: "ARS";
|
|
58
|
+
MEX: "MEX";
|
|
59
|
+
VEN: "VEN";
|
|
60
|
+
EUR: "EUR";
|
|
61
|
+
NGN: "NGN";
|
|
62
|
+
USD: "USD";
|
|
63
|
+
COP: "COP";
|
|
64
|
+
}>;
|
|
65
|
+
}, z.core.$strip>;
|
|
66
|
+
type CurrencyScopedParams = z.infer<typeof ZodCurrencyScopedParamsSchema>;
|
|
67
|
+
|
|
68
|
+
interface PricesConfig {
|
|
69
|
+
readonly publicClient: PublicClientLike;
|
|
70
|
+
readonly diamondAddress: Address;
|
|
71
|
+
}
|
|
72
|
+
interface PriceConfig {
|
|
73
|
+
readonly buyPrice: bigint;
|
|
74
|
+
readonly sellPrice: bigint;
|
|
75
|
+
readonly buyPriceOffset: bigint;
|
|
76
|
+
readonly baseSpread: bigint;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Per-currency USDC transaction limit granted per Reputation Point (RP).
|
|
80
|
+
* Default is 1 RP = 2 USDC everywhere except India (INR), which has its own
|
|
81
|
+
* multiplier set on-chain.
|
|
82
|
+
*
|
|
83
|
+
* multiplier = denominator / numerator // USDC per RP
|
|
84
|
+
*/
|
|
85
|
+
interface ReputationLimit {
|
|
86
|
+
readonly numerator: bigint;
|
|
87
|
+
readonly denominator: bigint;
|
|
88
|
+
/** USDC per Reputation Point, computed from the rational form. */
|
|
89
|
+
readonly multiplier: number;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
interface Prices {
|
|
93
|
+
/** Reads buy/sell price config for a given currency (raw bigint, 6 decimals). */
|
|
94
|
+
getPriceConfig(params: CurrencyScopedParams): ResultAsync<PriceConfig, PricesError>;
|
|
95
|
+
/**
|
|
96
|
+
* Reads the per-currency USDC transaction limit granted per Reputation Point
|
|
97
|
+
* (RP). Default is 1 RP = 2 USDC everywhere except INR, which uses its own
|
|
98
|
+
* on-chain multiplier.
|
|
99
|
+
*/
|
|
100
|
+
getReputationPerUsdcLimit(params: CurrencyScopedParams): ResultAsync<ReputationLimit, PricesError>;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Creates a Prices SDK instance for reading per-currency protocol config:
|
|
104
|
+
* buy/sell prices and the Reputation Points → USDC limit ratio. All reads
|
|
105
|
+
* are currency-scoped — no user context needed.
|
|
106
|
+
*/
|
|
107
|
+
declare function createPrices(config: PricesConfig): Prices;
|
|
108
|
+
|
|
109
|
+
export { type CurrencyScopedParams, type PriceConfig, type Prices, type PricesConfig, PricesError, type PricesErrorCode, type ReputationLimit, createPrices };
|