{"version":3,"sources":["../../src/types.ts"],"sourcesContent":["/**\n * Asset transfer methods for the exact EVM scheme.\n * - eip3009: Uses transferWithAuthorization (USDC, etc.) - recommended for compatible tokens\n * - permit2: Uses Permit2 + x402Permit2Proxy - universal fallback for any ERC-20\n */\nexport type AssetTransferMethod = \"eip3009\" | \"permit2\";\n\n/**\n * EIP-3009 payload for tokens with native transferWithAuthorization support.\n */\nexport type ExactEIP3009Payload = {\n  signature?: `0x${string}`;\n  authorization: {\n    from: `0x${string}`;\n    to: `0x${string}`;\n    value: string;\n    validAfter: string;\n    validBefore: string;\n    nonce: `0x${string}`;\n  };\n};\n\n/**\n * Permit2 witness data structure.\n * Matches the Witness struct in x402Permit2Proxy contract.\n * Note: Upper time bound is enforced by Permit2's `deadline` field, not a witness field.\n */\nexport type Permit2Witness = {\n  to: `0x${string}`;\n  validAfter: string;\n};\n\n/**\n * Permit2 authorization parameters.\n * Used to reconstruct the signed message for verification.\n */\nexport type Permit2Authorization = {\n  permitted: {\n    token: `0x${string}`;\n    amount: string;\n  };\n  spender: `0x${string}`;\n  nonce: string;\n  deadline: string;\n  witness: Permit2Witness;\n};\n\n/**\n * Permit2 payload for tokens using the Permit2 + x402Permit2Proxy flow.\n */\nexport type ExactPermit2Payload = {\n  signature: `0x${string}`;\n  permit2Authorization: Permit2Authorization & {\n    from: `0x${string}`;\n  };\n};\n\nexport type ExactEvmPayloadV1 = ExactEIP3009Payload;\n\nexport type ExactEvmPayloadV2 = ExactEIP3009Payload | ExactPermit2Payload;\n\n/**\n * Type guard to check if a payload is a Permit2 payload.\n * Permit2 payloads have a `permit2Authorization` field.\n *\n * @param payload - The payload to check.\n * @returns True if the payload is a Permit2 payload, false otherwise.\n */\nexport function isPermit2Payload(payload: ExactEvmPayloadV2): payload is ExactPermit2Payload {\n  return \"permit2Authorization\" in payload;\n}\n\n/**\n * Type guard to check if a payload is an EIP-3009 payload.\n * EIP-3009 payloads have an `authorization` field.\n *\n * @param payload - The payload to check.\n * @returns True if the payload is an EIP-3009 payload, false otherwise.\n */\nexport function isEIP3009Payload(payload: ExactEvmPayloadV2): payload is ExactEIP3009Payload {\n  return \"authorization\" in payload;\n}\n\n/**\n * Upto Permit2 witness — includes `facilitator` field absent from exact witness.\n * Only the address matching `witness.facilitator` can call settle() on-chain.\n */\nexport type UptoPermit2Witness = {\n  to: `0x${string}`;\n  facilitator: `0x${string}`;\n  validAfter: string;\n};\n\nexport type UptoPermit2Authorization = {\n  permitted: {\n    token: `0x${string}`;\n    amount: string;\n  };\n  spender: `0x${string}`;\n  nonce: string;\n  deadline: string;\n  witness: UptoPermit2Witness;\n};\n\nexport type UptoPermit2Payload = {\n  signature: `0x${string}`;\n  permit2Authorization: UptoPermit2Authorization & {\n    from: `0x${string}`;\n  };\n};\n\n// Batch-settlement EVM scheme payload types\nexport type {\n  AuthorizerSigner,\n  ChannelConfig,\n  ChannelState,\n  BatchSettlementDepositPayload,\n  BatchSettlementVoucherPayload,\n  BatchSettlementRefundPayload,\n  BatchSettlementVoucherFields,\n  BatchSettlementErc3009Authorization,\n  BatchSettlementPermit2Authorization,\n  BatchSettlementDepositAuthorization,\n  BatchSettlementAssetTransferMethod,\n  BatchSettlementClaimPayload,\n  BatchSettlementEnrichedRefundPayload,\n  BatchSettlementVoucherClaim,\n  BatchSettlementPayload,\n  BatchSettlementSettlePayload,\n  BatchSettlementFacilitatorSettlePayload,\n  BatchSettlementPaymentRequirementsExtra,\n  BatchSettlementPaymentResponseExtra,\n} from \"./batch-settlement/types\";\nexport {\n  isBatchSettlementDepositPayload,\n  isBatchSettlementVoucherPayload,\n  isBatchSettlementRefundPayload,\n  isBatchSettlementClaimPayload,\n  isBatchSettlementSettlePayload,\n  isBatchSettlementEnrichedRefundPayload,\n} from \"./batch-settlement/types\";\n\n/**\n * Type guard to check if a payload is an upto Permit2 payload.\n * Validates structural presence of all required fields: signature, permit2Authorization\n * (with from, permitted, spender, nonce, deadline), and a witness containing facilitator.\n *\n * @param payload - The payload to check.\n * @returns True if the payload is an upto Permit2 payload, false otherwise.\n */\nexport function isUptoPermit2Payload(\n  payload: Record<string, unknown>,\n): payload is UptoPermit2Payload {\n  if (typeof payload.signature !== \"string\") return false;\n  if (!(\"permit2Authorization\" in payload)) return false;\n\n  const auth = payload.permit2Authorization;\n  if (typeof auth !== \"object\" || auth === null) return false;\n\n  const a = auth as Record<string, unknown>;\n  if (typeof a.from !== \"string\") return false;\n  if (typeof a.spender !== \"string\") return false;\n  if (typeof a.nonce !== \"string\") return false;\n  if (typeof a.deadline !== \"string\") return false;\n\n  const permitted = a.permitted;\n  if (typeof permitted !== \"object\" || permitted === null) return false;\n  const p = permitted as Record<string, unknown>;\n  if (typeof p.token !== \"string\") return false;\n  if (typeof p.amount !== \"string\") return false;\n\n  const witness = a.witness;\n  if (typeof witness !== \"object\" || witness === null) return false;\n  const w = witness as Record<string, unknown>;\n  return (\n    typeof w.facilitator === \"string\" &&\n    typeof w.to === \"string\" &&\n    typeof w.validAfter === \"string\"\n  );\n}\n"],"mappings":";AAoEO,SAAS,iBAAiB,SAA4D;AAC3F,SAAO,0BAA0B;AACnC;AASO,SAAS,iBAAiB,SAA4D;AAC3F,SAAO,mBAAmB;AAC5B;AAqEO,SAAS,qBACd,SAC+B;AAC/B,MAAI,OAAO,QAAQ,cAAc,SAAU,QAAO;AAClD,MAAI,EAAE,0BAA0B,SAAU,QAAO;AAEjD,QAAM,OAAO,QAAQ;AACrB,MAAI,OAAO,SAAS,YAAY,SAAS,KAAM,QAAO;AAEtD,QAAM,IAAI;AACV,MAAI,OAAO,EAAE,SAAS,SAAU,QAAO;AACvC,MAAI,OAAO,EAAE,YAAY,SAAU,QAAO;AAC1C,MAAI,OAAO,EAAE,UAAU,SAAU,QAAO;AACxC,MAAI,OAAO,EAAE,aAAa,SAAU,QAAO;AAE3C,QAAM,YAAY,EAAE;AACpB,MAAI,OAAO,cAAc,YAAY,cAAc,KAAM,QAAO;AAChE,QAAM,IAAI;AACV,MAAI,OAAO,EAAE,UAAU,SAAU,QAAO;AACxC,MAAI,OAAO,EAAE,WAAW,SAAU,QAAO;AAEzC,QAAM,UAAU,EAAE;AAClB,MAAI,OAAO,YAAY,YAAY,YAAY,KAAM,QAAO;AAC5D,QAAM,IAAI;AACV,SACE,OAAO,EAAE,gBAAgB,YACzB,OAAO,EAAE,OAAO,YAChB,OAAO,EAAE,eAAe;AAE5B;","names":[]}