@p2pdotme/sdk 1.2.1 → 1.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/zkkyc/index.ts","../src/contracts/reputation-manager/writes.ts","../src/validation/errors.validation.ts","../src/validation/schemas.validation.ts","../src/country/currency.ts","../src/zkkyc/errors.ts","../src/zkkyc/validation.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/p2p-stake-boost-facet.ts","../src/contracts/abis/reputation-manager.ts","../src/zkkyc/client.ts","../src/zkkyc/orchestrators/constants.ts","../src/zkkyc/orchestrators/reclaim.ts","../src/zkkyc/orchestrators/types.ts","../src/zkkyc/orchestrators/zk-passport.ts"],"sourcesContent":["export type { Zkkyc } from \"./client\";\nexport { createZkkyc } from \"./client\";\nexport type { ZkkycErrorCode } from \"./errors\";\nexport { ZkkycError } from \"./errors\";\nexport type { ZkkycConfig } from \"./types\";\nexport type {\n\tAnonAadharProofParams,\n\tSocialVerifyParams,\n\tZkPassportRegisterParams,\n} from \"./validation\";\n\n// ── Orchestrators ────────────────────────────────────────────────────────────\n\nexport {\n\tDEFAULT_RECLAIM_PROVIDER_IDS,\n\tRECLAIM_APP_LINKS,\n\tZK_PASSPORT_APP_LINKS,\n} from \"./orchestrators/constants\";\nexport { createReclaimFlow } from \"./orchestrators/reclaim\";\nexport type {\n\tReclaimFlowParams,\n\tReclaimProofResult,\n\tReclaimStatus,\n\tSocialPlatform,\n\tZkPassportFlowParams,\n\tZkPassportProofResult,\n\tZkPassportSession,\n\tZkPassportStatus,\n} from \"./orchestrators/types\";\nexport { SOCIAL_PLATFORM_NAMES } from \"./orchestrators/types\";\nexport { createZkPassportFlow } from \"./orchestrators/zk-passport\";\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","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 { SdkError } from \"../validation\";\n\nexport type ZkkycErrorCode =\n\t| \"VALIDATION_ERROR\"\n\t| \"CONTRACT_READ_ERROR\"\n\t| \"ENCODE_ERROR\"\n\t| \"RECLAIM_INIT_FAILED\"\n\t| \"RECLAIM_SESSION_NOT_FOUND\"\n\t| \"RECLAIM_PROOF_GENERATION_FAILED\"\n\t| \"RECLAIM_PROOF_INVALID\"\n\t| \"RECLAIM_POLLING_ABORTED\"\n\t| \"ZK_PASSPORT_INIT_FAILED\"\n\t| \"ZK_PASSPORT_REJECTED\"\n\t| \"ZK_PASSPORT_VERIFICATION_FAILED\"\n\t| \"ZK_PASSPORT_ABORTED\"\n\t| \"PEER_DEPENDENCY_MISSING\";\n\nexport class ZkkycError extends SdkError<ZkkycErrorCode> {\n\tconstructor(\n\t\tmessage: string,\n\t\toptions: {\n\t\t\tcode: ZkkycErrorCode;\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 = \"ZkkycError\";\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 { erc20Abi } from \"viem\";\nimport { orderFlowFacetAbi } from \"./order-flow-facet\";\nimport { orderProcessorFacetAbi } from \"./order-processor-facet\";\nimport { p2pConfigFacetAbi } from \"./p2p-config-facet\";\nimport { p2pStakeBoostFacetAbi } from \"./p2p-stake-boost-facet\";\nimport { reputationManagerAbi } from \"./reputation-manager\";\n\nconst DIAMOND_ABI = [\n\t...orderFlowFacetAbi,\n\t...orderProcessorFacetAbi,\n\t...p2pConfigFacetAbi,\n\t...p2pStakeBoostFacetAbi,\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\tSTAKE: p2pStakeBoostFacetAbi,\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 p2pStakeBoostFacetAbi = [\n {\n inputs: [{ internalType: \"uint256\", name: \"tokens\", type: \"uint256\" }],\n name: \"p2pBoostStake\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"tokens\", type: \"uint256\" }],\n name: \"p2pBoostTopUp\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"p2pBoostRequestUnstake\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"p2pBoostClaimUnstake\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"p2pBoostCancelUnstake\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"user\", type: \"address\" }],\n name: \"getUserStake\",\n outputs: [\n {\n components: [\n { internalType: \"uint128\", name: \"stakedAmount\", type: \"uint128\" },\n { internalType: \"uint64\", name: \"cooldownEnd\", type: \"uint64\" },\n { internalType: \"uint8\", name: \"status\", type: \"uint8\" },\n ],\n internalType: \"struct P2PStakeBoostStorage.UserStake\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"bytes32\", name: \"currency\", type: \"bytes32\" }],\n name: \"getStakeBoostConfig\",\n outputs: [\n {\n components: [\n {\n internalType: \"uint256\",\n name: \"tokensPerUsdNumerator\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"tokensPerUsdDenominator\",\n type: \"uint256\",\n },\n { internalType: \"uint256\", name: \"maxBoostUsd\", type: \"uint256\" },\n ],\n internalType: \"struct P2PStakeBoostStorage.BoostConfig\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"getStakeBoostGlobals\",\n outputs: [\n { internalType: \"address\", name: \"p2pToken\", type: \"address\" },\n { internalType: \"address\", name: \"fraudReserve\", type: \"address\" },\n { internalType: \"uint256\", name: \"maxStakeTokens\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"normalCooldown\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"blacklistCooldown\", type: \"uint256\" },\n { internalType: \"uint8\", name: \"tokenDecimals\", type: \"uint8\" },\n { internalType: \"uint256\", name: \"totalStaked\", type: \"uint256\" },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\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","import type { Result } from \"neverthrow\";\nimport type { Address } from \"viem\";\nimport {\n\tprepareSocialVerify,\n\tprepareSubmitAnonAadharProof,\n\tprepareZkPassportRegister,\n} from \"../contracts/reputation-manager/writes\";\nimport type { ZkkycError } from \"./errors\";\nimport type { ZkkycConfig } from \"./types\";\nimport type {\n\tAnonAadharProofParams,\n\tSocialVerifyParams,\n\tZkPassportRegisterParams,\n} from \"./validation\";\n\nexport interface Zkkyc {\n\tprepareSocialVerify(\n\t\tparams: SocialVerifyParams,\n\t): Result<{ to: Address; data: `0x${string}` }, ZkkycError>;\n\tprepareSubmitAnonAadharProof(\n\t\tparams: AnonAadharProofParams,\n\t): Result<{ to: Address; data: `0x${string}` }, ZkkycError>;\n\tprepareZkPassportRegister(\n\t\tparams: ZkPassportRegisterParams,\n\t): Result<{ to: Address; data: `0x${string}` }, ZkkycError>;\n}\n\n/**\n * Creates a Zkkyc client that binds a reputation manager address,\n * exposing write-preparation methods for social verify, Aadhaar, and ZK Passport.\n */\nexport function createZkkyc(config: ZkkycConfig): Zkkyc {\n\tconst { reputationManagerAddress } = config;\n\treturn {\n\t\tprepareSocialVerify: (params) => prepareSocialVerify(reputationManagerAddress, params),\n\t\tprepareSubmitAnonAadharProof: (params) =>\n\t\t\tprepareSubmitAnonAadharProof(reputationManagerAddress, params),\n\t\tprepareZkPassportRegister: (params) =>\n\t\t\tprepareZkPassportRegister(reputationManagerAddress, params),\n\t};\n}\n","import type { SocialPlatform } from \"./types\";\n\n/** Default Reclaim provider IDs for each social platform. */\nexport const DEFAULT_RECLAIM_PROVIDER_IDS: Record<SocialPlatform, string> = {\n\tlinkedin: \"6a86edbe-a0fe-420b-8db2-3155220cc949\",\n\tgithub: \"033f0c06-2eb3-48c8-894c-5599c3356d1c\",\n\tx: \"aad95818-f726-4a34-be97-8d1f47631b03\",\n\tinstagram: \"7e5b59a9-56c5-490c-a169-82a443f9b507\",\n\tfacebook: \"2701510b-c835-4820-84f0-d9e74569656b\",\n};\n\n/** ZK Passport app store links. */\nexport const ZK_PASSPORT_APP_LINKS = {\n\tIOS: \"https://apps.apple.com/us/app/zkpassport/id6477371975\",\n\tANDROID: \"https://play.google.com/store/apps/details?id=app.zkpassport.zkpassport\",\n} as const;\n\n/** Reclaim Protocol app store links. */\nexport const RECLAIM_APP_LINKS = {\n\tANDROID: \"https://play.google.com/store/apps/details?id=org.reclaimprotocol.app\",\n} as const;\n","import { ResultAsync } from \"neverthrow\";\nimport { ZkkycError } from \"../errors\";\nimport type { ReclaimFlowParams, ReclaimProofResult } from \"./types\";\nimport { SOCIAL_PLATFORM_NAMES } from \"./types\";\n\nconst RECLAIM_SESSION_API = \"https://api.reclaimprotocol.org/api/sdk/session\";\n\n/** Runs the Reclaim social verification flow and returns proof data for on-chain submission. */\nexport function createReclaimFlow(\n\tparams: ReclaimFlowParams,\n): ResultAsync<ReclaimProofResult, ZkkycError> {\n\treturn ResultAsync.fromPromise(\n\t\t(async () => {\n\t\t\t// biome-ignore lint/suspicious/noExplicitAny: optional peer dependency\n\t\t\tconst mod: any = await import(\"@reclaimprotocol/js-sdk\").catch(() => {\n\t\t\t\tthrow new ZkkycError(\n\t\t\t\t\t\"Missing peer dependency: @reclaimprotocol/js-sdk. Install it with: npm install @reclaimprotocol/js-sdk\",\n\t\t\t\t\t{ code: \"PEER_DEPENDENCY_MISSING\" },\n\t\t\t\t);\n\t\t\t});\n\t\t\tconst { ReclaimProofRequest, transformForOnchain } = mod;\n\n\t\t\tconst {\n\t\t\t\tappId,\n\t\t\t\tappSecret,\n\t\t\t\tproviderIds,\n\t\t\t\tplatform,\n\t\t\t\twalletAddress,\n\t\t\t\tredirectUrl,\n\t\t\t\tsessionId: existingSessionId,\n\t\t\t\tcontextDescription,\n\t\t\t\tonStatus,\n\t\t\t\tsignal,\n\t\t\t\tpollingIntervalMs = 5000,\n\t\t\t} = params;\n\n\t\t\tconst socialName = SOCIAL_PLATFORM_NAMES[platform];\n\t\t\tconst providerId = providerIds[platform];\n\n\t\t\tlet sessionId: string;\n\n\t\t\tif (existingSessionId) {\n\t\t\t\tsessionId = existingSessionId;\n\t\t\t} else {\n\t\t\t\tconst reclaimProofRequest = await ReclaimProofRequest.init(appId, appSecret, providerId, {\n\t\t\t\t\tlaunchOptions: { canUseDeferredDeepLinksFlow: true },\n\t\t\t\t});\n\n\t\t\t\tconst statusUrl = reclaimProofRequest.getStatusUrl();\n\t\t\t\tsessionId = statusUrl.split(\"/\").pop() || \"\";\n\n\t\t\t\tif (redirectUrl) {\n\t\t\t\t\tconst separator = redirectUrl.includes(\"?\") ? \"&\" : \"?\";\n\t\t\t\t\treclaimProofRequest.setRedirectUrl(\n\t\t\t\t\t\t`${redirectUrl}${separator}sessionId=${sessionId}&socialPlatform=${socialName}`,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treclaimProofRequest.addContext(\n\t\t\t\t\twalletAddress,\n\t\t\t\t\tcontextDescription ?? `Social verification for ${socialName}`,\n\t\t\t\t);\n\n\t\t\t\tconst requestUrl = await reclaimProofRequest.getRequestUrl();\n\n\t\t\t\tonStatus?.({ type: \"session_created\", sessionId, requestUrl });\n\n\t\t\t\tif (typeof window !== \"undefined\") {\n\t\t\t\t\treclaimProofRequest.triggerReclaimFlow();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tonStatus?.({ type: \"polling_started\", sessionId });\n\n\t\t\twhile (true) {\n\t\t\t\tif (signal?.aborted) {\n\t\t\t\t\tthrow new ZkkycError(\"Reclaim polling aborted\", {\n\t\t\t\t\t\tcode: \"RECLAIM_POLLING_ABORTED\",\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tconst response = await fetch(`${RECLAIM_SESSION_API}/${sessionId}`);\n\t\t\t\tconst data = await response.json();\n\n\t\t\t\tif (data?.session?.proofs?.length > 0) {\n\t\t\t\t\tconst proofs = data.session.proofs;\n\t\t\t\t\tonStatus?.({ type: \"proof_received\" });\n\n\t\t\t\t\tif (platform === \"github\" && proofs.length > 0) {\n\t\t\t\t\t\tconst first = proofs[0] as { publicData?: Record<string, unknown> };\n\t\t\t\t\t\tif (first?.publicData && Object.keys(first.publicData).length === 0) {\n\t\t\t\t\t\t\tthrow new ZkkycError(\"GitHub verification eligibility criteria not met\", {\n\t\t\t\t\t\t\t\tcode: \"RECLAIM_PROOF_INVALID\",\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tconst transformedProofs = proofs.map((proof: unknown) => transformForOnchain(proof));\n\n\t\t\t\t\tonStatus?.({ type: \"proof_transformed\" });\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\t_socialName: socialName,\n\t\t\t\t\t\tproofs: transformedProofs,\n\t\t\t\t\t\tsessionId,\n\t\t\t\t\t} as ReclaimProofResult;\n\t\t\t\t}\n\n\t\t\t\tif (data?.message?.includes(\"Session not found\")) {\n\t\t\t\t\tthrow new ZkkycError(\"Reclaim session not found\", {\n\t\t\t\t\t\tcode: \"RECLAIM_SESSION_NOT_FOUND\",\n\t\t\t\t\t\tcontext: { sessionId },\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (data?.session?.statusV2 === \"PROOF_GENERATION_FAILED\") {\n\t\t\t\t\tthrow new ZkkycError(\"Reclaim proof generation failed\", {\n\t\t\t\t\t\tcode: \"RECLAIM_PROOF_GENERATION_FAILED\",\n\t\t\t\t\t\tcontext: { sessionId },\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tawait new Promise((resolve) => setTimeout(resolve, pollingIntervalMs));\n\t\t\t}\n\t\t})(),\n\t\t(error) => {\n\t\t\tif (error instanceof ZkkycError) return error;\n\t\t\treturn new ZkkycError(\"Reclaim verification flow failed\", {\n\t\t\t\tcode: \"RECLAIM_INIT_FAILED\",\n\t\t\t\tcause: error,\n\t\t\t});\n\t\t},\n\t);\n}\n","import type { ResultAsync } from \"neverthrow\";\nimport type { Address } from \"viem\";\nimport type { ZkkycError } from \"../errors\";\nimport type { SolidityVerifierParameters } from \"../validation\";\n\n// ── Social Platform ──────────────────────────────────────────────────────────\n\nexport type SocialPlatform = \"linkedin\" | \"github\" | \"x\" | \"instagram\" | \"facebook\";\n\n/** Maps SocialPlatform to the capitalized name the contract expects for _socialName. */\nexport const SOCIAL_PLATFORM_NAMES: Record<SocialPlatform, string> = {\n\tlinkedin: \"LinkedIn\",\n\tgithub: \"GitHub\",\n\tx: \"X\",\n\tinstagram: \"Instagram\",\n\tfacebook: \"Facebook\",\n};\n\n// ── Reclaim (Social Verification) ────────────────────────────────────────────\n\n/**\n * Single-object params for `createReclaimFlow`. Merges the app-level config\n * (appId, appSecret, providerIds) with the per-call options (platform,\n * walletAddress, callbacks, …) into one argument.\n */\nexport interface ReclaimFlowParams {\n\t// ── App-level config ──────────────────────────────────────────────\n\treadonly appId: string;\n\treadonly appSecret: string;\n\treadonly providerIds: Record<SocialPlatform, string>;\n\n\t// ── Per-call options ──────────────────────────────────────────────\n\treadonly platform: SocialPlatform;\n\treadonly walletAddress: Address;\n\t/** Base URL for redirect after Reclaim flow. SDK appends ?sessionId={id}&socialPlatform={Name}. */\n\treadonly redirectUrl?: string;\n\t/** Resume polling for an existing session (redirect-back case). */\n\treadonly sessionId?: string;\n\t/** Description added to Reclaim context. */\n\treadonly contextDescription?: string;\n\t/** Called with status updates during the flow. */\n\treadonly onStatus?: (status: ReclaimStatus) => void;\n\t/** AbortSignal to cancel polling. */\n\treadonly signal?: AbortSignal;\n\t/** Polling interval in ms. Defaults to 5000. */\n\treadonly pollingIntervalMs?: number;\n}\n\nexport type ReclaimStatus =\n\t| { type: \"session_created\"; sessionId: string; requestUrl: string }\n\t| { type: \"polling_started\"; sessionId: string }\n\t| { type: \"proof_received\" }\n\t| { type: \"proof_transformed\" };\n\nexport interface ReclaimProofResult {\n\treadonly _socialName: string;\n\treadonly proofs: readonly {\n\t\tclaimInfo: { provider: string; parameters: string; context: string };\n\t\tsignedClaim: {\n\t\t\tclaim: { identifier: string; owner: string; timestampS: number; epoch: number };\n\t\t\tsignatures: string[];\n\t\t};\n\t}[];\n\treadonly sessionId: string;\n}\n\n// ── ZK Passport ──────────────────────────────────────────────────────────────\n\n/**\n * Single-object params for `createZkPassportFlow`. Merges app-level config\n * (domain, name, logo, purpose) with per-call options (walletAddress, onStatus).\n */\nexport interface ZkPassportFlowParams {\n\t// ── App-level config ──────────────────────────────────────────────\n\t/** Domain for ZKPassport initialization (e.g. \"app.yourproject.com\"). Required — no default is provided to avoid impersonating another app. */\n\treadonly domain: string;\n\t/** App name shown in ZKPassport UI. Defaults to \"ZKPassport\". */\n\treadonly name?: string;\n\t/** Logo URL shown in ZKPassport UI. */\n\treadonly logo?: string;\n\t/** Purpose text shown in ZKPassport UI. Defaults to \"Prove your personhood\". */\n\treadonly purpose?: string;\n\n\t// ── Per-call options ──────────────────────────────────────────────\n\treadonly walletAddress: Address;\n\t/** Called with status updates during the flow. */\n\treadonly onStatus?: (status: ZkPassportStatus) => void;\n}\n\nexport type ZkPassportStatus =\n\t| { type: \"request_created\"; url: string }\n\t| { type: \"request_received\" }\n\t| { type: \"generating_proof\" }\n\t| { type: \"proof_generated\" }\n\t| { type: \"result_received\" }\n\t| { type: \"rejected\" };\n\nexport interface ZkPassportProofResult {\n\treadonly params: SolidityVerifierParameters;\n\treadonly isIDCard: boolean;\n}\n\nexport interface ZkPassportSession {\n\t/** URL to display as QR code or open as deeplink. */\n\treadonly url: string;\n\t/** Resolves when the full flow completes (proof verified). */\n\treadonly result: ResultAsync<ZkPassportProofResult, ZkkycError>;\n\t/** Aborts the flow. The result promise will reject with ZK_PASSPORT_ABORTED. */\n\treadonly abort: () => void;\n}\n","import { ResultAsync } from \"neverthrow\";\nimport { ZkkycError } from \"../errors\";\nimport type { ZkPassportFlowParams, ZkPassportProofResult, ZkPassportSession } from \"./types\";\n\n/** Initializes a ZK Passport verification flow and returns a session. */\nexport function createZkPassportFlow(\n\tparams: ZkPassportFlowParams,\n): ResultAsync<ZkPassportSession, ZkkycError> {\n\treturn ResultAsync.fromPromise(\n\t\t(async () => {\n\t\t\t// biome-ignore lint/suspicious/noExplicitAny: optional peer dependency\n\t\t\tconst mod: any = await import(\"@zkpassport/sdk\").catch(() => {\n\t\t\t\tthrow new ZkkycError(\n\t\t\t\t\t\"Missing peer dependency: @zkpassport/sdk. Install it with: npm install @zkpassport/sdk\",\n\t\t\t\t\t{ code: \"PEER_DEPENDENCY_MISSING\" },\n\t\t\t\t);\n\t\t\t});\n\t\t\tconst { ZKPassport } = mod;\n\n\t\t\tconst zkPassport = new ZKPassport(params.domain);\n\n\t\t\tconst queryBuilder = await zkPassport.request({\n\t\t\t\tname: params.name ?? \"ZKPassport\",\n\t\t\t\tlogo: params.logo,\n\t\t\t\tpurpose: params.purpose ?? \"Prove your personhood\",\n\t\t\t\tscope: \"personhood\",\n\t\t\t\tmode: \"compressed-evm\",\n\t\t\t});\n\n\t\t\tconst {\n\t\t\t\turl,\n\t\t\t\tonRequestReceived,\n\t\t\t\tonGeneratingProof,\n\t\t\t\tonProofGenerated,\n\t\t\t\tonResult,\n\t\t\t\tonReject,\n\t\t\t\tonError,\n\t\t\t} = queryBuilder\n\t\t\t\t.gte(\"age\", 18)\n\t\t\t\t.disclose(\"document_type\")\n\t\t\t\t.disclose(\"nationality\")\n\t\t\t\t.bind(\"user_address\", params.walletAddress)\n\t\t\t\t.done();\n\n\t\t\tparams.onStatus?.({ type: \"request_created\", url });\n\n\t\t\tlet aborted = false;\n\n\t\t\tconst resultPromise = new Promise<ZkPassportProofResult>((resolve, reject) => {\n\t\t\t\tlet proof: unknown = null;\n\n\t\t\t\tonRequestReceived(() => {\n\t\t\t\t\tif (aborted) return;\n\t\t\t\t\tparams.onStatus?.({ type: \"request_received\" });\n\t\t\t\t});\n\n\t\t\t\tonGeneratingProof(() => {\n\t\t\t\t\tif (aborted) return;\n\t\t\t\t\tparams.onStatus?.({ type: \"generating_proof\" });\n\t\t\t\t});\n\n\t\t\t\tonProofGenerated(async (result: unknown) => {\n\t\t\t\t\tif (aborted) return;\n\t\t\t\t\tparams.onStatus?.({ type: \"proof_generated\" });\n\t\t\t\t\tproof = result;\n\t\t\t\t});\n\n\t\t\t\tonResult(\n\t\t\t\t\tasync ({\n\t\t\t\t\t\tresult,\n\t\t\t\t\t\tuniqueIdentifier,\n\t\t\t\t\t\tverified,\n\t\t\t\t\t}: {\n\t\t\t\t\t\tresult: Record<string, { disclose?: { result?: string } }>;\n\t\t\t\t\t\tuniqueIdentifier: string | null;\n\t\t\t\t\t\tverified: boolean;\n\t\t\t\t\t}) => {\n\t\t\t\t\t\tif (aborted) return;\n\t\t\t\t\t\tparams.onStatus?.({ type: \"result_received\" });\n\n\t\t\t\t\t\tif (!verified || !proof || !uniqueIdentifier) {\n\t\t\t\t\t\t\treject(\n\t\t\t\t\t\t\t\tnew ZkkycError(\"ZK Passport verification failed\", {\n\t\t\t\t\t\t\t\t\tcode: \"ZK_PASSPORT_VERIFICATION_FAILED\",\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst verifierParams = zkPassport.getSolidityVerifierParameters({\n\t\t\t\t\t\t\t\tproof,\n\t\t\t\t\t\t\t\tscope: \"personhood\",\n\t\t\t\t\t\t\t\tdevMode: false,\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tconst isIDCard = result.document_type?.disclose?.result !== \"passport\";\n\n\t\t\t\t\t\t\tresolve({ params: verifierParams, isIDCard });\n\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\treject(\n\t\t\t\t\t\t\t\tnew ZkkycError(\"Failed to extract ZK Passport verifier parameters\", {\n\t\t\t\t\t\t\t\t\tcode: \"ZK_PASSPORT_VERIFICATION_FAILED\",\n\t\t\t\t\t\t\t\t\tcause: error,\n\t\t\t\t\t\t\t\t}),\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\n\t\t\t\tonReject(() => {\n\t\t\t\t\tparams.onStatus?.({ type: \"rejected\" });\n\t\t\t\t\treject(\n\t\t\t\t\t\tnew ZkkycError(\"User rejected ZK Passport verification\", {\n\t\t\t\t\t\t\tcode: \"ZK_PASSPORT_REJECTED\",\n\t\t\t\t\t\t}),\n\t\t\t\t\t);\n\t\t\t\t});\n\n\t\t\t\tonError((error: unknown) => {\n\t\t\t\t\treject(\n\t\t\t\t\t\tnew ZkkycError(typeof error === \"string\" ? error : \"ZK Passport verification error\", {\n\t\t\t\t\t\t\tcode: \"ZK_PASSPORT_VERIFICATION_FAILED\",\n\t\t\t\t\t\t\tcause: error,\n\t\t\t\t\t\t}),\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tconst session: ZkPassportSession = {\n\t\t\t\turl,\n\t\t\t\tresult: ResultAsync.fromPromise(resultPromise, (error) => {\n\t\t\t\t\tif (error instanceof ZkkycError) return error;\n\t\t\t\t\treturn new ZkkycError(\"ZK Passport flow failed\", {\n\t\t\t\t\t\tcode: \"ZK_PASSPORT_VERIFICATION_FAILED\",\n\t\t\t\t\t\tcause: error,\n\t\t\t\t\t});\n\t\t\t\t}),\n\t\t\t\tabort: () => {\n\t\t\t\t\taborted = true;\n\t\t\t\t},\n\t\t\t};\n\n\t\t\treturn session;\n\t\t})(),\n\t\t(error) => {\n\t\t\tif (error instanceof ZkkycError) return error;\n\t\t\treturn new ZkkycError(\"Failed to initialize ZK Passport\", {\n\t\t\t\tcode: \"ZK_PASSPORT_INIT_FAILED\",\n\t\t\t\tcause: error,\n\t\t\t});\n\t\t},\n\t);\n}\n"],"mappings":"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","names":["import_neverthrow","import_viem","import_zod","import_viem","import_neverthrow","import_neverthrow"]}
1
+ {"version":3,"sources":["../src/zkkyc/index.ts","../src/contracts/reputation-manager/writes.ts","../src/validation/errors.validation.ts","../src/validation/schemas.validation.ts","../src/country/currency.ts","../src/zkkyc/errors.ts","../src/zkkyc/validation.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/p2p-stake-boost-facet.ts","../src/contracts/abis/reputation-manager.ts","../src/zkkyc/client.ts","../src/zkkyc/orchestrators/constants.ts","../src/zkkyc/orchestrators/reclaim.ts","../src/zkkyc/orchestrators/types.ts","../src/zkkyc/orchestrators/simple-kyc.ts","../src/zkkyc/orchestrators/zk-passport.ts"],"sourcesContent":["export type { Zkkyc } from \"./client\";\nexport { createZkkyc } from \"./client\";\nexport type { ZkkycErrorCode } from \"./errors\";\nexport { ZkkycError } from \"./errors\";\nexport type { ZkkycConfig } from \"./types\";\nexport type {\n\tAnonAadharProofParams,\n\tSimpleKycSubmitParams,\n\tSocialVerifyParams,\n\tZkPassportRegisterParams,\n} from \"./validation\";\n\n// ── Orchestrators ────────────────────────────────────────────────────────────\n\nexport {\n\tDEFAULT_RECLAIM_PROVIDER_IDS,\n\tRECLAIM_APP_LINKS,\n\tSIMPLE_KYC_DEFAULT_TENANT,\n\tZK_PASSPORT_APP_LINKS,\n} from \"./orchestrators/constants\";\nexport { createReclaimFlow } from \"./orchestrators/reclaim\";\nexport { createSimpleKycFlow, resumeSimpleKycFlow } from \"./orchestrators/simple-kyc\";\nexport type {\n\tReclaimFlowParams,\n\tReclaimProofResult,\n\tReclaimSession,\n\tReclaimStatus,\n\tSimpleKycAttestation,\n\tSimpleKycFlowParams,\n\tSimpleKycSession,\n\tSimpleKycStatus,\n\tSocialPlatform,\n\tZkPassportFlowParams,\n\tZkPassportProofResult,\n\tZkPassportSession,\n\tZkPassportStatus,\n} from \"./orchestrators/types\";\nexport { SOCIAL_PLATFORM_NAMES } from \"./orchestrators/types\";\nexport { createZkPassportFlow } from \"./orchestrators/zk-passport\";\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\tSimpleKycSubmitParams,\n\tSocialVerifyParams,\n\tZkPassportRegisterParams,\n} from \"../../zkkyc/validation\";\nimport {\n\tZodAnonAadharProofParamsSchema,\n\tZodSimpleKycSubmitParamsSchema,\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 simple-kyc EIP-712 attestation submission (awards KYC rp). */\nexport function prepareSubmitKycAttestation(\n\treputationManagerAddress: Address,\n\tparams: SimpleKycSubmitParams,\n): Result<{ to: Address; data: `0x${string}` }, ZkkycError> {\n\treturn validate(\n\t\tZodSimpleKycSubmitParamsSchema,\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: \"submitKycAttestation\",\n\t\t\t\t\targs: [\n\t\t\t\t\t\tvalidated.nullifier as `0x${string}`,\n\t\t\t\t\t\tvalidated.limit,\n\t\t\t\t\t\tvalidated.expiry,\n\t\t\t\t\t\tvalidated.signature as `0x${string}`,\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 submitKycAttestation\", {\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","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 { SdkError } from \"../validation\";\n\nexport type ZkkycErrorCode =\n\t| \"VALIDATION_ERROR\"\n\t| \"CONTRACT_READ_ERROR\"\n\t| \"ENCODE_ERROR\"\n\t| \"RECLAIM_INIT_FAILED\"\n\t| \"RECLAIM_SESSION_NOT_FOUND\"\n\t| \"RECLAIM_PROOF_GENERATION_FAILED\"\n\t| \"RECLAIM_PROOF_INVALID\"\n\t| \"RECLAIM_POLLING_ABORTED\"\n\t| \"ZK_PASSPORT_INIT_FAILED\"\n\t| \"ZK_PASSPORT_REJECTED\"\n\t| \"ZK_PASSPORT_VERIFICATION_FAILED\"\n\t| \"ZK_PASSPORT_ABORTED\"\n\t| \"SIMPLE_KYC_SESSION_FAILED\"\n\t| \"SIMPLE_KYC_REDEEM_FAILED\"\n\t| \"PEER_DEPENDENCY_MISSING\";\n\nexport class ZkkycError extends SdkError<ZkkycErrorCode> {\n\tconstructor(\n\t\tmessage: string,\n\t\toptions: {\n\t\t\tcode: ZkkycErrorCode;\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 = \"ZkkycError\";\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\n// ── simple-kyc EIP-712 attestation ───────────────────────────────────────────\n\nexport const ZodSimpleKycSubmitParamsSchema = z.object({\n\t/** Per-(tenant, identity) Sybil nullifier (bytes32 hex). */\n\tnullifier: z.string().refine((v) => /^0x[a-fA-F0-9]{64}$/.test(v), {\n\t\tmessage: \"nullifier must be a bytes32 hex string\",\n\t}),\n\t/** Remaining limit in micro-USDC (part of the signed struct). */\n\tlimit: z.bigint(),\n\t/** Attestation expiry (unix seconds). */\n\texpiry: z.bigint(),\n\t/** 65-byte secp256k1 signature (hex). */\n\tsignature: z.string().refine((v) => /^0x[a-fA-F0-9]+$/.test(v), {\n\t\tmessage: \"signature must be a hex string\",\n\t}),\n});\n\nexport type SimpleKycSubmitParams = z.infer<typeof ZodSimpleKycSubmitParamsSchema>;\n","import { erc20Abi } from \"viem\";\nimport { orderFlowFacetAbi } from \"./order-flow-facet\";\nimport { orderProcessorFacetAbi } from \"./order-processor-facet\";\nimport { p2pConfigFacetAbi } from \"./p2p-config-facet\";\nimport { p2pStakeBoostFacetAbi } from \"./p2p-stake-boost-facet\";\nimport { reputationManagerAbi } from \"./reputation-manager\";\n\nconst DIAMOND_ABI = [\n\t...orderFlowFacetAbi,\n\t...orderProcessorFacetAbi,\n\t...p2pConfigFacetAbi,\n\t...p2pStakeBoostFacetAbi,\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\tSTAKE: p2pStakeBoostFacetAbi,\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 p2pStakeBoostFacetAbi = [\n {\n inputs: [{ internalType: \"uint256\", name: \"tokens\", type: \"uint256\" }],\n name: \"p2pBoostStake\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"tokens\", type: \"uint256\" }],\n name: \"p2pBoostTopUp\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"p2pBoostRequestUnstake\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"p2pBoostClaimUnstake\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"p2pBoostCancelUnstake\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"user\", type: \"address\" }],\n name: \"getUserStake\",\n outputs: [\n {\n components: [\n { internalType: \"uint128\", name: \"stakedAmount\", type: \"uint128\" },\n { internalType: \"uint64\", name: \"cooldownEnd\", type: \"uint64\" },\n { internalType: \"uint8\", name: \"status\", type: \"uint8\" },\n ],\n internalType: \"struct P2PStakeBoostStorage.UserStake\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"bytes32\", name: \"currency\", type: \"bytes32\" }],\n name: \"getStakeBoostConfig\",\n outputs: [\n {\n components: [\n {\n internalType: \"uint256\",\n name: \"tokensPerUsdNumerator\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"tokensPerUsdDenominator\",\n type: \"uint256\",\n },\n { internalType: \"uint256\", name: \"maxBoostUsd\", type: \"uint256\" },\n ],\n internalType: \"struct P2PStakeBoostStorage.BoostConfig\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"getStakeBoostGlobals\",\n outputs: [\n { internalType: \"address\", name: \"p2pToken\", type: \"address\" },\n { internalType: \"address\", name: \"fraudReserve\", type: \"address\" },\n { internalType: \"uint256\", name: \"maxStakeTokens\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"normalCooldown\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"blacklistCooldown\", type: \"uint256\" },\n { internalType: \"uint8\", name: \"tokenDecimals\", type: \"uint8\" },\n { internalType: \"uint256\", name: \"totalStaked\", type: \"uint256\" },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\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\t{\n\t\tinputs: [\n\t\t\t{ internalType: \"bytes32\", name: \"nullifier\", type: \"bytes32\" },\n\t\t\t{ internalType: \"uint256\", name: \"limit\", type: \"uint256\" },\n\t\t\t{ internalType: \"uint256\", name: \"expiry\", type: \"uint256\" },\n\t\t\t{ internalType: \"bytes\", name: \"signature\", type: \"bytes\" },\n\t\t],\n\t\tname: \"submitKycAttestation\",\n\t\toutputs: [],\n\t\tstateMutability: \"nonpayable\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [],\n\t\tname: \"kycRp\",\n\t\toutputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n\t{\n\t\tinputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n\t\tname: \"kycVerified\",\n\t\toutputs: [{ internalType: \"bool\", name: \"\", type: \"bool\" }],\n\t\tstateMutability: \"view\",\n\t\ttype: \"function\",\n\t},\n] as const;\n","import type { Result } from \"neverthrow\";\nimport type { Address } from \"viem\";\nimport {\n\tprepareSocialVerify,\n\tprepareSubmitAnonAadharProof,\n\tprepareSubmitKycAttestation,\n\tprepareZkPassportRegister,\n} from \"../contracts/reputation-manager/writes\";\nimport type { ZkkycError } from \"./errors\";\nimport type { ZkkycConfig } from \"./types\";\nimport type {\n\tAnonAadharProofParams,\n\tSimpleKycSubmitParams,\n\tSocialVerifyParams,\n\tZkPassportRegisterParams,\n} from \"./validation\";\n\nexport interface Zkkyc {\n\tprepareSocialVerify(\n\t\tparams: SocialVerifyParams,\n\t): Result<{ to: Address; data: `0x${string}` }, ZkkycError>;\n\tprepareSubmitAnonAadharProof(\n\t\tparams: AnonAadharProofParams,\n\t): Result<{ to: Address; data: `0x${string}` }, ZkkycError>;\n\tprepareZkPassportRegister(\n\t\tparams: ZkPassportRegisterParams,\n\t): Result<{ to: Address; data: `0x${string}` }, ZkkycError>;\n\tprepareSubmitKycAttestation(\n\t\tparams: SimpleKycSubmitParams,\n\t): Result<{ to: Address; data: `0x${string}` }, ZkkycError>;\n}\n\n/**\n * Creates a Zkkyc client that binds a reputation manager address,\n * exposing write-preparation methods for social verify, Aadhaar, and ZK Passport.\n */\nexport function createZkkyc(config: ZkkycConfig): Zkkyc {\n\tconst { reputationManagerAddress } = config;\n\treturn {\n\t\tprepareSocialVerify: (params) => prepareSocialVerify(reputationManagerAddress, params),\n\t\tprepareSubmitAnonAadharProof: (params) =>\n\t\t\tprepareSubmitAnonAadharProof(reputationManagerAddress, params),\n\t\tprepareZkPassportRegister: (params) =>\n\t\t\tprepareZkPassportRegister(reputationManagerAddress, params),\n\t\tprepareSubmitKycAttestation: (params) =>\n\t\t\tprepareSubmitKycAttestation(reputationManagerAddress, params),\n\t};\n}\n","import type { SocialPlatform } from \"./types\";\n\n/** Default Reclaim provider IDs for each social platform. */\nexport const DEFAULT_RECLAIM_PROVIDER_IDS: Record<SocialPlatform, string> = {\n\tlinkedin: \"6a86edbe-a0fe-420b-8db2-3155220cc949\",\n\tgithub: \"033f0c06-2eb3-48c8-894c-5599c3356d1c\",\n\tx: \"aad95818-f726-4a34-be97-8d1f47631b03\",\n\tinstagram: \"7e5b59a9-56c5-490c-a169-82a443f9b507\",\n\tfacebook: \"2701510b-c835-4820-84f0-d9e74569656b\",\n\tbinance: \"7e40c007-f432-4d47-ac00-3e0762f8a7a0\",\n};\n\n/** ZK Passport app store links. */\nexport const ZK_PASSPORT_APP_LINKS = {\n\tIOS: \"https://apps.apple.com/us/app/zkpassport/id6477371975\",\n\tANDROID: \"https://play.google.com/store/apps/details?id=app.zkpassport.zkpassport\",\n} as const;\n\n/** Reclaim Protocol app store links. */\nexport const RECLAIM_APP_LINKS = {\n\tANDROID: \"https://play.google.com/store/apps/details?id=org.reclaimprotocol.app\",\n} as const;\n\n/** Default tenant slug for the P2P reputation contract on the simple-kyc service. */\nexport const SIMPLE_KYC_DEFAULT_TENANT = \"p2p-reputation\";\n","import { ResultAsync } from \"neverthrow\";\nimport { ZkkycError } from \"../errors\";\nimport type { ReclaimFlowParams, ReclaimProofResult, ReclaimSession } from \"./types\";\nimport { SOCIAL_PLATFORM_NAMES } from \"./types\";\n\nconst RECLAIM_SESSION_API = \"https://api.reclaimprotocol.org/api/sdk/session\";\n\n/**\n * Initializes a Reclaim social verification flow and returns a session. `init()`\n * runs eagerly here, so call this on page load; the returned session's `start()`\n * triggers the in-app flow and polls for the proof, so call that on user action.\n */\nexport function createReclaimFlow(\n\tparams: ReclaimFlowParams,\n): ResultAsync<ReclaimSession, ZkkycError> {\n\treturn ResultAsync.fromPromise(\n\t\t(async () => {\n\t\t\t// biome-ignore lint/suspicious/noExplicitAny: optional peer dependency\n\t\t\tconst mod: any = await import(\"@reclaimprotocol/js-sdk\").catch(() => {\n\t\t\t\tthrow new ZkkycError(\n\t\t\t\t\t\"Missing peer dependency: @reclaimprotocol/js-sdk. Install it with: npm install @reclaimprotocol/js-sdk\",\n\t\t\t\t\t{ code: \"PEER_DEPENDENCY_MISSING\" },\n\t\t\t\t);\n\t\t\t});\n\t\t\tconst { ReclaimProofRequest, transformForOnchain } = mod;\n\n\t\t\tconst {\n\t\t\t\tappId,\n\t\t\t\tappSecret,\n\t\t\t\tproviderIds,\n\t\t\t\tplatform,\n\t\t\t\twalletAddress,\n\t\t\t\tredirectUrl,\n\t\t\t\tsessionId: existingSessionId,\n\t\t\t\tcontextDescription,\n\t\t\t\tonStatus,\n\t\t\t\tsignal,\n\t\t\t\tpollingIntervalMs = 5000,\n\t\t\t} = params;\n\n\t\t\tconst socialName = SOCIAL_PLATFORM_NAMES[platform];\n\t\t\tconst providerId = providerIds[platform];\n\n\t\t\t// biome-ignore lint/suspicious/noExplicitAny: optional peer dependency\n\t\t\tlet reclaimProofRequest: any = null;\n\t\t\tlet sessionId: string;\n\t\t\tlet requestUrl = \"\";\n\n\t\t\tif (existingSessionId) {\n\t\t\t\tsessionId = existingSessionId;\n\t\t\t} else {\n\t\t\t\treclaimProofRequest = await ReclaimProofRequest.init(appId, appSecret, providerId, {\n\t\t\t\t\tlaunchOptions: {\n\t\t\t\t\t\tcanUseDeferredDeepLinksFlow: true,\n\t\t\t\t\t\tverificationMode: \"app\",\n\t\t\t\t\t},\n\t\t\t\t\tuseAppClip: true,\n\t\t\t\t\tlog: true,\n\t\t\t\t});\n\n\t\t\t\tconst statusUrl = reclaimProofRequest.getStatusUrl();\n\t\t\t\tsessionId = statusUrl.split(\"/\").pop() || \"\";\n\n\t\t\t\tif (redirectUrl) {\n\t\t\t\t\tconst separator = redirectUrl.includes(\"?\") ? \"&\" : \"?\";\n\t\t\t\t\treclaimProofRequest.setRedirectUrl(\n\t\t\t\t\t\t`${redirectUrl}${separator}sessionId=${sessionId}&socialPlatform=${socialName}`,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treclaimProofRequest.addContext(\n\t\t\t\t\twalletAddress,\n\t\t\t\t\tcontextDescription ?? `Social verification for ${socialName}`,\n\t\t\t\t);\n\n\t\t\t\trequestUrl = await reclaimProofRequest.getRequestUrl();\n\n\t\t\t\tonStatus?.({ type: \"session_created\", sessionId, requestUrl });\n\t\t\t}\n\n\t\t\tlet aborted = false;\n\n\t\t\tconst pollForProof = async (): Promise<ReclaimProofResult> => {\n\t\t\t\tif (reclaimProofRequest && typeof window !== \"undefined\") {\n\t\t\t\t\treclaimProofRequest.triggerReclaimFlow({ verificationMode: \"app\" });\n\t\t\t\t}\n\n\t\t\t\tonStatus?.({ type: \"polling_started\", sessionId });\n\n\t\t\t\twhile (true) {\n\t\t\t\t\tif (aborted || signal?.aborted) {\n\t\t\t\t\t\tthrow new ZkkycError(\"Reclaim polling aborted\", {\n\t\t\t\t\t\t\tcode: \"RECLAIM_POLLING_ABORTED\",\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tconst response = await fetch(`${RECLAIM_SESSION_API}/${sessionId}`);\n\t\t\t\t\tconst data = await response.json();\n\n\t\t\t\t\tif (data?.session?.proofs?.length > 0) {\n\t\t\t\t\t\tconst proofs = data.session.proofs;\n\t\t\t\t\t\tonStatus?.({ type: \"proof_received\" });\n\n\t\t\t\t\t\tif (platform === \"github\" && proofs.length > 0) {\n\t\t\t\t\t\t\tconst first = proofs[0] as { publicData?: Record<string, unknown> };\n\t\t\t\t\t\t\tif (first?.publicData && Object.keys(first.publicData).length === 0) {\n\t\t\t\t\t\t\t\tthrow new ZkkycError(\"GitHub verification eligibility criteria not met\", {\n\t\t\t\t\t\t\t\t\tcode: \"RECLAIM_PROOF_INVALID\",\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst transformedProofs = proofs.map((proof: unknown) => transformForOnchain(proof));\n\n\t\t\t\t\t\tonStatus?.({ type: \"proof_transformed\" });\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t_socialName: socialName,\n\t\t\t\t\t\t\tproofs: transformedProofs,\n\t\t\t\t\t\t\tsessionId,\n\t\t\t\t\t\t} as ReclaimProofResult;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (data?.message?.includes(\"Session not found\")) {\n\t\t\t\t\t\tthrow new ZkkycError(\"Reclaim session not found\", {\n\t\t\t\t\t\t\tcode: \"RECLAIM_SESSION_NOT_FOUND\",\n\t\t\t\t\t\t\tcontext: { sessionId },\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tif (data?.session?.statusV2 === \"PROOF_GENERATION_FAILED\") {\n\t\t\t\t\t\tthrow new ZkkycError(\"Reclaim proof generation failed\", {\n\t\t\t\t\t\t\tcode: \"RECLAIM_PROOF_GENERATION_FAILED\",\n\t\t\t\t\t\t\tcontext: { sessionId },\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tawait new Promise((resolve) => setTimeout(resolve, pollingIntervalMs));\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tconst session: ReclaimSession = {\n\t\t\t\tsessionId,\n\t\t\t\trequestUrl,\n\t\t\t\tstart: () =>\n\t\t\t\t\tResultAsync.fromPromise(pollForProof(), (error) => {\n\t\t\t\t\t\tif (error instanceof ZkkycError) return error;\n\t\t\t\t\t\treturn new ZkkycError(\"Reclaim verification flow failed\", {\n\t\t\t\t\t\t\tcode: \"RECLAIM_INIT_FAILED\",\n\t\t\t\t\t\t\tcause: error,\n\t\t\t\t\t\t});\n\t\t\t\t\t}),\n\t\t\t\tabort: () => {\n\t\t\t\t\taborted = true;\n\t\t\t\t},\n\t\t\t};\n\n\t\t\treturn session;\n\t\t})(),\n\t\t(error) => {\n\t\t\tif (error instanceof ZkkycError) return error;\n\t\t\treturn new ZkkycError(\"Reclaim verification flow failed\", {\n\t\t\t\tcode: \"RECLAIM_INIT_FAILED\",\n\t\t\t\tcause: error,\n\t\t\t});\n\t\t},\n\t);\n}\n","import type { ResultAsync } from \"neverthrow\";\nimport type { Address } from \"viem\";\nimport type { ZkkycError } from \"../errors\";\nimport type { SolidityVerifierParameters } from \"../validation\";\n\n// ── Social Platform ──────────────────────────────────────────────────────────\n\nexport type SocialPlatform = \"linkedin\" | \"github\" | \"x\" | \"instagram\" | \"facebook\" | \"binance\";\n\n/** Maps SocialPlatform to the capitalized name the contract expects for _socialName. */\nexport const SOCIAL_PLATFORM_NAMES: Record<SocialPlatform, string> = {\n\tlinkedin: \"LinkedIn\",\n\tgithub: \"GitHub\",\n\tx: \"X\",\n\tinstagram: \"Instagram\",\n\tfacebook: \"Facebook\",\n\tbinance: \"Binance\",\n};\n\n// ── Reclaim (Social Verification) ────────────────────────────────────────────\n\n/**\n * Single-object params for `createReclaimFlow`. Merges the app-level config\n * (appId, appSecret, providerIds) with the per-call options (platform,\n * walletAddress, callbacks, …) into one argument.\n */\nexport interface ReclaimFlowParams {\n\t// ── App-level config ──────────────────────────────────────────────\n\treadonly appId: string;\n\treadonly appSecret: string;\n\treadonly providerIds: Record<SocialPlatform, string>;\n\n\t// ── Per-call options ──────────────────────────────────────────────\n\treadonly platform: SocialPlatform;\n\treadonly walletAddress: Address;\n\t/** Base URL for redirect after Reclaim flow. SDK appends ?sessionId={id}&socialPlatform={Name}. */\n\treadonly redirectUrl?: string;\n\t/** Resume polling for an existing session (redirect-back case). */\n\treadonly sessionId?: string;\n\t/** Description added to Reclaim context. */\n\treadonly contextDescription?: string;\n\t/** Called with status updates during the flow. */\n\treadonly onStatus?: (status: ReclaimStatus) => void;\n\t/** AbortSignal to cancel polling. */\n\treadonly signal?: AbortSignal;\n\t/** Polling interval in ms. Defaults to 5000. */\n\treadonly pollingIntervalMs?: number;\n}\n\nexport type ReclaimStatus =\n\t| { type: \"session_created\"; sessionId: string; requestUrl: string }\n\t| { type: \"polling_started\"; sessionId: string }\n\t| { type: \"proof_received\" }\n\t| { type: \"proof_transformed\" };\n\nexport interface ReclaimProofResult {\n\treadonly _socialName: string;\n\treadonly proofs: readonly {\n\t\tclaimInfo: { provider: string; parameters: string; context: string };\n\t\tsignedClaim: {\n\t\t\tclaim: { identifier: string; owner: string; timestampS: number; epoch: number };\n\t\t\tsignatures: string[];\n\t\t};\n\t}[];\n\treadonly sessionId: string;\n}\n\nexport interface ReclaimSession {\n\t/** The Reclaim session id (empty until known when resuming). */\n\treadonly sessionId: string;\n\t/** URL to display as a QR code or open as a deep link. Empty when resuming an existing session. */\n\treadonly requestUrl: string;\n\t/** Triggers the in-app Reclaim flow (browser only) and polls until the proof is ready. Call on user action (e.g. button click). */\n\treadonly start: () => ResultAsync<ReclaimProofResult, ZkkycError>;\n\t/** Aborts an in-flight polling loop started by `start`. */\n\treadonly abort: () => void;\n}\n\n// ── ZK Passport ──────────────────────────────────────────────────────────────\n\n/**\n * Single-object params for `createZkPassportFlow`. Merges app-level config\n * (domain, name, logo, purpose) with per-call options (walletAddress, onStatus).\n */\nexport interface ZkPassportFlowParams {\n\t// ── App-level config ──────────────────────────────────────────────\n\t/** Domain for ZKPassport initialization (e.g. \"app.yourproject.com\"). Required — no default is provided to avoid impersonating another app. */\n\treadonly domain: string;\n\t/** App name shown in ZKPassport UI. Defaults to \"ZKPassport\". */\n\treadonly name?: string;\n\t/** Logo URL shown in ZKPassport UI. */\n\treadonly logo?: string;\n\t/** Purpose text shown in ZKPassport UI. Defaults to \"Prove your personhood\". */\n\treadonly purpose?: string;\n\n\t// ── Per-call options ──────────────────────────────────────────────\n\treadonly walletAddress: Address;\n\t/** Called with status updates during the flow. */\n\treadonly onStatus?: (status: ZkPassportStatus) => void;\n}\n\nexport type ZkPassportStatus =\n\t| { type: \"request_created\"; url: string }\n\t| { type: \"request_received\" }\n\t| { type: \"generating_proof\" }\n\t| { type: \"proof_generated\" }\n\t| { type: \"result_received\" }\n\t| { type: \"rejected\" };\n\nexport interface ZkPassportProofResult {\n\treadonly params: SolidityVerifierParameters;\n\treadonly isIDCard: boolean;\n}\n\nexport interface ZkPassportSession {\n\t/** URL to display as QR code or open as deeplink. */\n\treadonly url: string;\n\t/** Resolves when the full flow completes (proof verified). */\n\treadonly result: ResultAsync<ZkPassportProofResult, ZkkycError>;\n\t/** Aborts the flow. The result promise will reject with ZK_PASSPORT_ABORTED. */\n\treadonly abort: () => void;\n}\n\n// ── simple-kyc (hosted passport + liveness wizard) ────────────────────────────\n\n/**\n * Params for `createSimpleKycFlow`. The app opens the hosted simple-kyc wizard,\n * which runs onboard → passport → liveness → face match/dedup and, on approval,\n * redirects back to `redirectUrl` with `?code=<code>&state=<state>`. The app\n * then calls `resumeSimpleKycFlow` to redeem the code for the EIP-712 attestation.\n */\nexport interface SimpleKycFlowParams {\n\t/**\n\t * Base URL exposing the browser-facing `/v1/widget/public-sessions` and\n\t * `/v1/widget/attestation` endpoints — the `kyc-proxy` in a client-only setup\n\t * (e.g. http://localhost:8787). The proxy holds the X-API-Key and forwards to\n\t * simple-kyc's key-gated endpoints.\n\t */\n\treadonly baseUrl: string;\n\t/** The user's EVM wallet — bound into the attestation and credited on-chain. */\n\treadonly walletAddress: Address;\n\t/** Tenant slug (one per consuming contract), e.g. \"p2p-reputation\". */\n\treadonly tenant: string;\n\t/** Return URL — pass `${window.location.origin}<route>` so each app self-routes. */\n\treadonly redirectUrl: string;\n\t/**\n\t * ISO-2 country code (e.g. \"IN\"). Required — the embedded wizard skips the\n\t * country step, so the app must prebind it. Must be one of simple-kyc's\n\t * supported markets (IN, NG, BR, MX, CO, AR, VE, ID).\n\t */\n\treadonly country: string;\n\t/** Opaque state round-tripped back to the app (CSRF/nonce + page to restore). */\n\treadonly state?: string;\n\t/** Status callback. */\n\treadonly onStatus?: (status: SimpleKycStatus) => void;\n}\n\nexport type SimpleKycStatus =\n\t| { type: \"session_created\"; widgetUrl: string }\n\t| { type: \"redirecting\"; widgetUrl: string };\n\nexport interface SimpleKycSession {\n\t/** The hosted wizard URL to navigate to. */\n\treadonly widgetUrl: string;\n\t/** Convenience: navigate the browser to the wizard (no-op outside the browser). */\n\treadonly redirect: () => void;\n}\n\n/** The on-chain-ready attestation, shaped for `prepareSubmitKycAttestation`. */\nexport interface SimpleKycAttestation {\n\treadonly nullifier: `0x${string}`;\n\treadonly limit: bigint;\n\treadonly expiry: bigint;\n\treadonly signature: `0x${string}`;\n\t/** The opaque unique-human handle (no PII), for app-side bookkeeping. */\n\treadonly identityHash?: string;\n}\n","import { ResultAsync } from \"neverthrow\";\nimport { ZkkycError } from \"../errors\";\nimport type { SimpleKycAttestation, SimpleKycFlowParams, SimpleKycSession } from \"./types\";\n\n/**\n * Starts the hosted simple-kyc wizard flow. Creates a browser-initiable widget\n * session (no API key in the browser — `baseUrl` points at the kyc-proxy, which\n * injects the key and whose tenant allowlist validates the redirect_uri), then\n * returns the wizard URL to navigate to.\n *\n * The wizard runs passport → liveness → face match/dedup and, on approval,\n * redirects back to `redirectUrl` with `?code=<code>&state=<state>`. Call\n * `resumeSimpleKycFlow({ baseUrl, code })` on return to fetch the attestation.\n */\nexport function createSimpleKycFlow(\n\tparams: SimpleKycFlowParams,\n): ResultAsync<SimpleKycSession, ZkkycError> {\n\tconst { baseUrl, walletAddress, tenant, redirectUrl, country, state, onStatus } = params;\n\treturn ResultAsync.fromPromise(\n\t\t(async () => {\n\t\t\tconst res = await fetch(`${baseUrl}/v1/widget/public-sessions`, {\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\twallet_pubkey: walletAddress,\n\t\t\t\t\tredirect_uri: redirectUrl,\n\t\t\t\t\ttenant,\n\t\t\t\t\tcountry,\n\t\t\t\t\tstate,\n\t\t\t\t}),\n\t\t\t});\n\t\t\tif (!res.ok) {\n\t\t\t\tconst body = await res.text();\n\t\t\t\tthrow new ZkkycError(`simple-kyc session creation failed: ${res.status} ${body}`, {\n\t\t\t\t\tcode: \"SIMPLE_KYC_SESSION_FAILED\",\n\t\t\t\t\tcontext: { status: res.status },\n\t\t\t\t});\n\t\t\t}\n\t\t\tconst data = (await res.json()) as { widget_url: string };\n\t\t\tconst widgetUrl = data.widget_url;\n\t\t\tonStatus?.({ type: \"session_created\", widgetUrl });\n\t\t\treturn {\n\t\t\t\twidgetUrl,\n\t\t\t\tredirect: () => {\n\t\t\t\t\tif (typeof window !== \"undefined\") {\n\t\t\t\t\t\tonStatus?.({ type: \"redirecting\", widgetUrl });\n\t\t\t\t\t\twindow.location.href = widgetUrl;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t} satisfies SimpleKycSession;\n\t\t})(),\n\t\t(error) => {\n\t\t\tif (error instanceof ZkkycError) return error;\n\t\t\treturn new ZkkycError(\"simple-kyc flow failed to start\", {\n\t\t\t\tcode: \"SIMPLE_KYC_SESSION_FAILED\",\n\t\t\t\tcause: error,\n\t\t\t});\n\t\t},\n\t);\n}\n\n/**\n * Redeems the one-time `kyc_code` from the wizard's redirect for the EIP-712\n * attestation. The result feeds straight into `zkkyc.prepareSubmitKycAttestation`.\n * The endpoint returns only the (non-PII, self-verifying) attestation.\n */\nexport function resumeSimpleKycFlow(args: {\n\tbaseUrl: string;\n\tcode: string;\n}): ResultAsync<SimpleKycAttestation, ZkkycError> {\n\treturn ResultAsync.fromPromise(\n\t\t(async () => {\n\t\t\tconst res = await fetch(`${args.baseUrl}/v1/widget/attestation`, {\n\t\t\t\tmethod: \"POST\",\n\t\t\t\theaders: { \"Content-Type\": \"application/json\" },\n\t\t\t\tbody: JSON.stringify({ code: args.code }),\n\t\t\t});\n\t\t\tif (!res.ok) {\n\t\t\t\tconst body = await res.text();\n\t\t\t\tthrow new ZkkycError(`simple-kyc attestation redemption failed: ${res.status} ${body}`, {\n\t\t\t\t\tcode: \"SIMPLE_KYC_REDEEM_FAILED\",\n\t\t\t\t\tcontext: { status: res.status },\n\t\t\t\t});\n\t\t\t}\n\t\t\tconst d = (await res.json()) as {\n\t\t\t\tnullifier: string;\n\t\t\t\tlimit: string | number;\n\t\t\t\texpiry: string | number;\n\t\t\t\tsignature: string;\n\t\t\t\tidentity_hash?: string;\n\t\t\t};\n\t\t\treturn {\n\t\t\t\tnullifier: d.nullifier as `0x${string}`,\n\t\t\t\tlimit: BigInt(d.limit),\n\t\t\t\texpiry: BigInt(d.expiry),\n\t\t\t\tsignature: d.signature as `0x${string}`,\n\t\t\t\tidentityHash: d.identity_hash,\n\t\t\t} satisfies SimpleKycAttestation;\n\t\t})(),\n\t\t(error) => {\n\t\t\tif (error instanceof ZkkycError) return error;\n\t\t\treturn new ZkkycError(\"simple-kyc attestation redemption failed\", {\n\t\t\t\tcode: \"SIMPLE_KYC_REDEEM_FAILED\",\n\t\t\t\tcause: error,\n\t\t\t});\n\t\t},\n\t);\n}\n","import { ResultAsync } from \"neverthrow\";\nimport { ZkkycError } from \"../errors\";\nimport type { ZkPassportFlowParams, ZkPassportProofResult, ZkPassportSession } from \"./types\";\n\n/** Initializes a ZK Passport verification flow and returns a session. */\nexport function createZkPassportFlow(\n\tparams: ZkPassportFlowParams,\n): ResultAsync<ZkPassportSession, ZkkycError> {\n\treturn ResultAsync.fromPromise(\n\t\t(async () => {\n\t\t\t// biome-ignore lint/suspicious/noExplicitAny: optional peer dependency\n\t\t\tconst mod: any = await import(\"@zkpassport/sdk\").catch(() => {\n\t\t\t\tthrow new ZkkycError(\n\t\t\t\t\t\"Missing peer dependency: @zkpassport/sdk. Install it with: npm install @zkpassport/sdk\",\n\t\t\t\t\t{ code: \"PEER_DEPENDENCY_MISSING\" },\n\t\t\t\t);\n\t\t\t});\n\t\t\tconst { ZKPassport } = mod;\n\n\t\t\tconst zkPassport = new ZKPassport(params.domain);\n\n\t\t\tconst queryBuilder = await zkPassport.request({\n\t\t\t\tname: params.name ?? \"ZKPassport\",\n\t\t\t\tlogo: params.logo,\n\t\t\t\tpurpose: params.purpose ?? \"Prove your personhood\",\n\t\t\t\tscope: \"personhood\",\n\t\t\t\tmode: \"compressed-evm\",\n\t\t\t});\n\n\t\t\tconst {\n\t\t\t\turl,\n\t\t\t\tonRequestReceived,\n\t\t\t\tonGeneratingProof,\n\t\t\t\tonProofGenerated,\n\t\t\t\tonResult,\n\t\t\t\tonReject,\n\t\t\t\tonError,\n\t\t\t} = queryBuilder\n\t\t\t\t.gte(\"age\", 18)\n\t\t\t\t.disclose(\"document_type\")\n\t\t\t\t.disclose(\"nationality\")\n\t\t\t\t.bind(\"user_address\", params.walletAddress)\n\t\t\t\t.done();\n\n\t\t\tparams.onStatus?.({ type: \"request_created\", url });\n\n\t\t\tlet aborted = false;\n\n\t\t\tconst resultPromise = new Promise<ZkPassportProofResult>((resolve, reject) => {\n\t\t\t\tlet proof: unknown = null;\n\n\t\t\t\tonRequestReceived(() => {\n\t\t\t\t\tif (aborted) return;\n\t\t\t\t\tparams.onStatus?.({ type: \"request_received\" });\n\t\t\t\t});\n\n\t\t\t\tonGeneratingProof(() => {\n\t\t\t\t\tif (aborted) return;\n\t\t\t\t\tparams.onStatus?.({ type: \"generating_proof\" });\n\t\t\t\t});\n\n\t\t\t\tonProofGenerated(async (result: unknown) => {\n\t\t\t\t\tif (aborted) return;\n\t\t\t\t\tparams.onStatus?.({ type: \"proof_generated\" });\n\t\t\t\t\tproof = result;\n\t\t\t\t});\n\n\t\t\t\tonResult(\n\t\t\t\t\tasync ({\n\t\t\t\t\t\tresult,\n\t\t\t\t\t\tuniqueIdentifier,\n\t\t\t\t\t\tverified,\n\t\t\t\t\t}: {\n\t\t\t\t\t\tresult: Record<string, { disclose?: { result?: string } }>;\n\t\t\t\t\t\tuniqueIdentifier: string | null;\n\t\t\t\t\t\tverified: boolean;\n\t\t\t\t\t}) => {\n\t\t\t\t\t\tif (aborted) return;\n\t\t\t\t\t\tparams.onStatus?.({ type: \"result_received\" });\n\n\t\t\t\t\t\tif (!verified || !proof || !uniqueIdentifier) {\n\t\t\t\t\t\t\treject(\n\t\t\t\t\t\t\t\tnew ZkkycError(\"ZK Passport verification failed\", {\n\t\t\t\t\t\t\t\t\tcode: \"ZK_PASSPORT_VERIFICATION_FAILED\",\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst verifierParams = zkPassport.getSolidityVerifierParameters({\n\t\t\t\t\t\t\t\tproof,\n\t\t\t\t\t\t\t\tscope: \"personhood\",\n\t\t\t\t\t\t\t\tdevMode: false,\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tconst isIDCard = result.document_type?.disclose?.result !== \"passport\";\n\n\t\t\t\t\t\t\tresolve({ params: verifierParams, isIDCard });\n\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\treject(\n\t\t\t\t\t\t\t\tnew ZkkycError(\"Failed to extract ZK Passport verifier parameters\", {\n\t\t\t\t\t\t\t\t\tcode: \"ZK_PASSPORT_VERIFICATION_FAILED\",\n\t\t\t\t\t\t\t\t\tcause: error,\n\t\t\t\t\t\t\t\t}),\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\n\t\t\t\tonReject(() => {\n\t\t\t\t\tparams.onStatus?.({ type: \"rejected\" });\n\t\t\t\t\treject(\n\t\t\t\t\t\tnew ZkkycError(\"User rejected ZK Passport verification\", {\n\t\t\t\t\t\t\tcode: \"ZK_PASSPORT_REJECTED\",\n\t\t\t\t\t\t}),\n\t\t\t\t\t);\n\t\t\t\t});\n\n\t\t\t\tonError((error: unknown) => {\n\t\t\t\t\treject(\n\t\t\t\t\t\tnew ZkkycError(typeof error === \"string\" ? error : \"ZK Passport verification error\", {\n\t\t\t\t\t\t\tcode: \"ZK_PASSPORT_VERIFICATION_FAILED\",\n\t\t\t\t\t\t\tcause: error,\n\t\t\t\t\t\t}),\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tconst session: ZkPassportSession = {\n\t\t\t\turl,\n\t\t\t\tresult: ResultAsync.fromPromise(resultPromise, (error) => {\n\t\t\t\t\tif (error instanceof ZkkycError) return error;\n\t\t\t\t\treturn new ZkkycError(\"ZK Passport flow failed\", {\n\t\t\t\t\t\tcode: \"ZK_PASSPORT_VERIFICATION_FAILED\",\n\t\t\t\t\t\tcause: error,\n\t\t\t\t\t});\n\t\t\t\t}),\n\t\t\t\tabort: () => {\n\t\t\t\t\taborted = true;\n\t\t\t\t},\n\t\t\t};\n\n\t\t\treturn session;\n\t\t})(),\n\t\t(error) => {\n\t\t\tif (error instanceof ZkkycError) return error;\n\t\t\treturn new ZkkycError(\"Failed to initialize ZK Passport\", {\n\t\t\t\tcode: \"ZK_PASSPORT_INIT_FAILED\",\n\t\t\t\tcause: error,\n\t\t\t});\n\t\t},\n\t);\n}\n"],"mappings":"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","names":["import_neverthrow","import_viem","import_zod","import_viem","import_neverthrow","import_neverthrow","import_neverthrow"]}