@cashie/core-lib 1.0.0 → 1.2.0

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.
@@ -8,10 +8,14 @@ export type BadgeKind = 'receipt' | 'paymentRecord';
8
8
  export type BadgeMetadata = CashieReceiptBadgeMetadata | CashiePaymentRecordBadgeMetadata;
9
9
  export type BadgeChainParams = {
10
10
  chainHex: Hex;
11
+ badgeKind: BadgeKind;
11
12
  };
12
13
  export type GetBadgeOwnerOfParams = BadgeChainParams & {
13
14
  badgeId: Hex;
14
15
  };
16
+ export type GetBadgeUriParams = BadgeChainParams & {
17
+ badgeId: Hex;
18
+ };
15
19
  export type GetBadgeMetadataFormatParams = BadgeChainParams;
16
20
  export type TotalBadgesOfIdentityParams = BadgeChainParams & {
17
21
  account: Address;
@@ -2,3 +2,4 @@ export * from './balance.types.js';
2
2
  export * from './badge.types.js';
3
3
  export * from './event.types.js';
4
4
  export * from './receipt.types.js';
5
+ export * from './statement.types.js';
@@ -1,16 +1,10 @@
1
1
  import { Hash, Hex } from 'viem';
2
2
  import { CashieRouterV1PaymentEvent, CashieRouterV1DepositEvent, CashieRouterV1WithdrawEvent, CashieRouterV1RewardEvent } from './event.types.js';
3
- /**
4
- * @deprecated This type is deprecated and will be removed in the future. Use badge pagination methods instead to generate the account statement.
5
- */
6
3
  export type CashieReceiptBase = {
7
4
  transactionHash: Hash;
8
5
  blockNumber: Hex;
9
6
  chainId: Hex;
10
7
  };
11
- /**
12
- * @deprecated This type is deprecated and will be removed in the future. Use badge pagination methods instead to generate the account statement.
13
- */
14
8
  export type CashieTransactionReceipt = CashieReceiptBase & {
15
9
  args: CashieRouterV1PaymentEvent;
16
10
  stablecoinTokenDetail: {
@@ -18,9 +12,6 @@ export type CashieTransactionReceipt = CashieReceiptBase & {
18
12
  symbol: string;
19
13
  };
20
14
  };
21
- /**
22
- * @deprecated This type is deprecated and will be removed in the future. Use badge pagination methods instead to generate the account statement.
23
- */
24
15
  export type CashieRouterV1DepositReceipt = CashieReceiptBase & {
25
16
  args: CashieRouterV1DepositEvent;
26
17
  stablecoinTokenDetail: {
@@ -28,9 +19,6 @@ export type CashieRouterV1DepositReceipt = CashieReceiptBase & {
28
19
  symbol: string;
29
20
  };
30
21
  };
31
- /**
32
- * @deprecated This type is deprecated and will be removed in the future. Use badge pagination methods instead to generate the account statement.
33
- */
34
22
  export type CashieRouterV1WithdrawReceipt = CashieReceiptBase & {
35
23
  args: CashieRouterV1WithdrawEvent;
36
24
  stablecoinTokenDetail: {
@@ -38,18 +26,6 @@ export type CashieRouterV1WithdrawReceipt = CashieReceiptBase & {
38
26
  symbol: string;
39
27
  };
40
28
  };
41
- /**
42
- * @deprecated This type is deprecated and will be removed in the future. Use badge pagination methods instead to generate the account statement.
43
- */
44
29
  export type CashieRouterV1RewardReceipt = CashieReceiptBase & {
45
30
  args: CashieRouterV1RewardEvent;
46
31
  };
47
- /**
48
- * @deprecated This type is deprecated and will be removed in the future. Use badge pagination methods instead to generate the account statement.
49
- */
50
- export type CashieAccountStatement = {
51
- paymentReceipts: CashieTransactionReceipt[];
52
- depositReceipts: CashieRouterV1DepositReceipt[];
53
- withdrawReceipts: CashieRouterV1WithdrawReceipt[];
54
- rewardReceipts: CashieRouterV1RewardReceipt[];
55
- };
@@ -0,0 +1,6 @@
1
+ export declare const ACCOUNT_STATEMENT_RECEIPT_KINDS: readonly ["payments", "deposits", "withdrawals", "rewards"];
2
+ export type AccountStatementReceiptKind = (typeof ACCOUNT_STATEMENT_RECEIPT_KINDS)[number];
3
+ export type AccountStatementFilter = {
4
+ year: number;
5
+ month: number;
6
+ };
@@ -1,7 +1,7 @@
1
1
  import { z } from 'zod';
2
2
  import { BurnAuth } from '../identity/types.js';
3
3
  import type { PaymentIntentTrackingEntry } from '../backend/tx-tracking/types.js';
4
- import type { PaymentRpcMethodNames, PaymentRpcReturn } from './types.js';
4
+ import type { PaymentRpcMethodNames, PaymentRpcParams, PaymentRpcReturn } from './types.js';
5
5
  export declare const paymentRpcReturnSchemas: {
6
6
  discovery_supportedSouls: z.ZodObject<{
7
7
  identitySoulContract: z.ZodObject<{
@@ -40,6 +40,64 @@ export declare const paymentRpcReturnSchemas: {
40
40
  badge_badgeOfIdentityByIndex: z.ZodCustom<`0x${string}`, `0x${string}`>;
41
41
  badge_badgesOfIdentity: z.ZodArray<z.ZodCustom<`0x${string}`, `0x${string}`>>;
42
42
  };
43
+ export type BadgeRpcMethodNames = Extract<PaymentRpcMethodNames, `badge_${string}`>;
44
+ export declare const badgeRpcParamSchemas: {
45
+ badge_getOwnerOf: z.ZodTuple<[z.ZodObject<{
46
+ chainHex: z.ZodCustom<`0x${string}`, `0x${string}`>;
47
+ badgeId: z.ZodCustom<`0x${string}`, `0x${string}`>;
48
+ badgeKind: z.ZodEnum<{
49
+ receipt: "receipt";
50
+ paymentRecord: "paymentRecord";
51
+ }>;
52
+ }, z.core.$strip>], null>;
53
+ badge_getBadgeUri: z.ZodTuple<[z.ZodObject<{
54
+ chainHex: z.ZodCustom<`0x${string}`, `0x${string}`>;
55
+ badgeId: z.ZodCustom<`0x${string}`, `0x${string}`>;
56
+ badgeKind: z.ZodEnum<{
57
+ receipt: "receipt";
58
+ paymentRecord: "paymentRecord";
59
+ }>;
60
+ }, z.core.$strip>], null>;
61
+ badge_getMetadataFormat: z.ZodTuple<[z.ZodObject<{
62
+ chainHex: z.ZodCustom<`0x${string}`, `0x${string}`>;
63
+ badgeKind: z.ZodEnum<{
64
+ receipt: "receipt";
65
+ paymentRecord: "paymentRecord";
66
+ }>;
67
+ }, z.core.$strip>], null>;
68
+ badge_totalBadgesOfIdentity: z.ZodTuple<[z.ZodObject<{
69
+ chainHex: z.ZodCustom<`0x${string}`, `0x${string}`>;
70
+ account: z.ZodCustom<`0x${string}`, `0x${string}`>;
71
+ badgeKind: z.ZodEnum<{
72
+ receipt: "receipt";
73
+ paymentRecord: "paymentRecord";
74
+ }>;
75
+ }, z.core.$strip>], null>;
76
+ badge_badgeOfIdentityByIndex: z.ZodTuple<[z.ZodObject<{
77
+ chainHex: z.ZodCustom<`0x${string}`, `0x${string}`>;
78
+ account: z.ZodCustom<`0x${string}`, `0x${string}`>;
79
+ badgeKind: z.ZodEnum<{
80
+ receipt: "receipt";
81
+ paymentRecord: "paymentRecord";
82
+ }>;
83
+ index: z.ZodCustom<`0x${string}`, `0x${string}`>;
84
+ }, z.core.$strip>], null>;
85
+ badge_badgesOfIdentity: z.ZodTuple<[z.ZodObject<{
86
+ chainHex: z.ZodCustom<`0x${string}`, `0x${string}`>;
87
+ account: z.ZodCustom<`0x${string}`, `0x${string}`>;
88
+ badgeKind: z.ZodEnum<{
89
+ receipt: "receipt";
90
+ paymentRecord: "paymentRecord";
91
+ }>;
92
+ offset: z.ZodCustom<`0x${string}`, `0x${string}`>;
93
+ limit: z.ZodCustom<`0x${string}`, `0x${string}`>;
94
+ }, z.core.$strip>], null>;
95
+ };
96
+ export declare class PaymentRpcParamsValidationError extends Error {
97
+ readonly method: BadgeRpcMethodNames;
98
+ readonly zodError: z.ZodError;
99
+ constructor(method: BadgeRpcMethodNames, zodError: z.ZodError);
100
+ }
43
101
  export declare class PaymentRpcResponseValidationError extends Error {
44
102
  readonly method: PaymentRpcMethodNames;
45
103
  readonly zodError: z.ZodError;
@@ -53,3 +111,11 @@ export declare class PaymentRpcResponseValidationError extends Error {
53
111
  * @returns The parsed result according to the Zod schema
54
112
  */
55
113
  export declare function parsePaymentRpcReturn<T extends PaymentRpcMethodNames>(method: T, result: unknown): PaymentRpcReturn<T>;
114
+ /**
115
+ * Parses badge RPC params against the corresponding Zod schema.
116
+ *
117
+ * @param method - The badge RPC method name
118
+ * @param params - The params from the RPC call
119
+ * @returns The parsed params according to the Zod schema
120
+ */
121
+ export declare function parsePaymentRpcParams<T extends BadgeRpcMethodNames>(method: T, params: unknown): PaymentRpcParams<T>;
@@ -3,6 +3,7 @@ import { CashieRouterActions, PaymentIntent, RewardIntentDetails } from '../inte
3
3
  import { BurnAuth, IdentityMintSignPayloadWithSignature, IdentitySoulDiscovery } from '../identity/index.js';
4
4
  import type { InitCodeData } from '../erc-7715/request/types.js';
5
5
  import type { PaymentIntentTrackingEntry } from '../backend/tx-tracking/types.js';
6
+ import type { BadgeKind } from '../backend/contracts/badge.types.js';
6
7
  type PrepareRouterCallsParams = {
7
8
  recipient: Address;
8
9
  allowance: Hex;
@@ -16,7 +17,6 @@ type BadgeOwner = {
16
17
  nftAddress: Address;
17
18
  nftTokenId: Hex;
18
19
  };
19
- type BadgeKind = 'receipt' | 'paymentRecord';
20
20
  type PrePaymentSetup = {
21
21
  signedIdentityMintPayload: IdentityMintSignPayloadWithSignature;
22
22
  initCodeData: InitCodeData;
@@ -106,6 +106,7 @@ interface PaymentRpcMethodMapping {
106
106
  params: [{
107
107
  chainHex: Hex;
108
108
  badgeId: Hex;
109
+ badgeKind: BadgeKind;
109
110
  }];
110
111
  return: BadgeOwner;
111
112
  };
@@ -113,12 +114,14 @@ interface PaymentRpcMethodMapping {
113
114
  params: [{
114
115
  chainHex: Hex;
115
116
  badgeId: Hex;
117
+ badgeKind: BadgeKind;
116
118
  }];
117
119
  return: string | null;
118
120
  };
119
121
  badge_getMetadataFormat: {
120
122
  params: [{
121
123
  chainHex: Hex;
124
+ badgeKind: BadgeKind;
122
125
  }];
123
126
  return: string;
124
127
  };
package/dist/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";var ce=Object.defineProperty;var bt=Object.getOwnPropertyDescriptor;var xt=Object.getOwnPropertyNames;var At=Object.prototype.hasOwnProperty;var wt=(e,t)=>{for(var n in t)ce(e,n,{get:t[n],enumerable:!0})},St=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of xt(t))!At.call(e,a)&&a!==n&&ce(e,a,{get:()=>t[a],enumerable:!(r=bt(t,a))||r.enumerable});return e};var _t=e=>St(ce({},"__esModule",{value:!0}),e);var Ln={};wt(Ln,{BurnAuth:()=>h,CASHIE_ACCOUNT_TYPE_LABELS:()=>Hn,CASHIE_IDENTITY_SOUL_CONTRACT_ABI:()=>Sn,CASHIE_IDENTITY_SOUL_EIP712_NAME:()=>le,CASHIE_IDENTITY_SOUL_EIP712_VERSION:()=>Te,CASHIE_JSON_DATA_URI_BASE64_PREFIX:()=>U,CASHIE_PAYMENT_RECORD_BADGE_CONTRACT_ABI:()=>En,CASHIE_PAYMENT_RECORD_BADGE_METADATA_FORMAT:()=>F,CASHIE_RECEIPT_BADGE_CONTRACT_ABI:()=>_n,CASHIE_RECEIPT_BADGE_METADATA_FORMAT:()=>L,CASHIE_ROUTER_GUARD_CONTRACT_ABI:()=>wn,CASHIE_ROUTER_V1_CONTRACT_ABI:()=>An,CASHIE_SVG_DATA_URI_BASE64_PREFIX:()=>H,COMMON_ERROR_CODES:()=>Pt,CashieAccountType:()=>Rt,CashieRouterActions:()=>de,DEFAULT_MAX_AGE_MS:()=>On,EIP1193_ERROR_CODES:()=>It,EIP5792_ERROR_CODES:()=>gt,ERC7715ValidationError:()=>G,ERC7715_ERROR_CODES:()=>ft,Either:()=>E,FATAL_ERROR_CODES:()=>ht,IDENTITY_MINT_CONSENT_EIP712_TYPE_STRING:()=>Mt,IDENTITY_MINT_EIP712_TYPES:()=>he,IDENTITY_MINT_PAYLOAD_EIP712_TYPES:()=>fe,IDENTITY_MINT_PAYLOAD_EIP712_TYPE_STRING:()=>Et,IdentityIssuer:()=>Re,IdentityIssuerId:()=>z,IdentityType:()=>w,JSON_IDENTITY_TYPE_LABEL_TO_IDENTITY_TYPE:()=>Ve,OCAP_STATEMENT_PREFIX:()=>lt,OcapAudiences:()=>Tt,OcapValidationError:()=>v,PLAID_IDV_ERROR_MESSAGE:()=>Ye,PRIMARY_TYPE_IDENTITY_MINT_CONSENT:()=>ge,PRIMARY_TYPE_IDENTITY_MINT_PAYLOAD:()=>Ie,PROTOCOL_RPC_PROXY_PATH:()=>Un,PlaidIdvErrorCode:()=>Fe,ReceiptType:()=>te,RpcError:()=>Ne,SoulManager:()=>ve,addressSchema:()=>l,assertUrl:()=>k,basePaymentDetailsDataSchema:()=>re,baseScopeSchema:()=>S,billingPeriodSchema:()=>Ee,buildCashieIdentitySoulDomain:()=>Pe,buildIdentityCommitmentHash:()=>Ot,buildIdentityMintConsentTypedData:()=>He,buildIdentityMintProofTypedData:()=>Le,buildOcapId:()=>ue,burnAuthSchema:()=>J,bytes32HexSchema:()=>be,canonicalOcapPayload:()=>ct,cashieIdentitySoulIdentityTypeJsonSchema:()=>je,cashieIdentitySoulTokenMetadataJsonSchema:()=>ee,cashieIdentitySoulTokenMetadataSchema:()=>Gt,cashiePaymentRecordBadgeMetadataSchema:()=>Q,cashieReceiptBadgeMetadataSchema:()=>X,cashieReceiptBadgeSoulBoundToSchema:()=>xe,createPaymentRpcClient:()=>Oe,decodeCashieJsonDataUriToUtf8:()=>Qe,decodeCashieSvgDataUriToUtf8:()=>Y,encodePaymentIntent:()=>ut,encodePaymentRecordBadgeMintPayload:()=>Je,encodeReceiptBadgeMintPayload:()=>ze,erc20TokenPaymentPermissionSchema:()=>ie,expiryRuleSchema:()=>W,findTransactionHashForBadgeId:()=>Mn,generateSalt:()=>Ut,getErrorMessage:()=>kn,getPaymentIntentHash:()=>xn,getPaymentRecordBadgeMintPayloadHash:()=>We,getPermissionsInfoResultParamsSchema:()=>ot,getReceiptBadgeMintPayloadHash:()=>Ge,getSupportedExecutionPermissionsResultSchema:()=>pt,hashIdentityMintConsentTypedData:()=>vt,hashIdentityMintProofTypedData:()=>Dt,hex0xSchema:()=>A,hexSchema:()=>T,identityAccountFor:()=>Bt,identityMintRuleSchema:()=>Z,identityMintSignPayloadWithSignatureSchema:()=>N,identityTokenIdFor:()=>M,identityTypeSchema:()=>q,initCodeDataSchema:()=>C,isEither:()=>Nn,parseBasePaymentDetailsData:()=>en,parseBaseScopeSchema:()=>Lt,parseBillingPeriod:()=>Xt,parseCashieIdentitySoulTokenMetadata:()=>we,parseCashieJsonDataUriJson:()=>j,parseCashieMetadataDataUri:()=>Zt,parseCashiePaymentRecordBadgeMetadata:()=>tt,parseCashiePaymentRecordBadgeMetadataFromBadgeUri:()=>_e,parseCashieReceiptBadgeMetadata:()=>et,parseCashieReceiptBadgeMetadataFromBadgeUri:()=>Se,parseERC20TokenPaymentPermission:()=>nn,parseExpiryRule:()=>Yt,parseGetPermissionsInfoResultParams:()=>yn,parseGetSupportedExecutionPermissionsResult:()=>un,parseIdentityMintRule:()=>jt,parseInitCodeData:()=>rn,parsePaymentDetails:()=>tn,parsePaymentDetailsType:()=>Qt,parsePermission:()=>an,parsePermissionRequest:()=>sn,parsePermissionResponse:()=>dn,parsePermissionsRequest:()=>on,parsePermissionsResponse:()=>pn,parseRule:()=>Vt,parseWithSchema:()=>y,paymentDetailsSchema:()=>Me,paymentDetailsTypeSchema:()=>ae,paymentRecordBadgeIdFromMintPayload:()=>Ze,paymentRecordBadgeIdFromPaymentIntent:()=>Ae,paymentRecordBadgeMintPayloadFromPaymentIntent:()=>Ke,permissionRequestSchema:()=>oe,permissionResponseSchema:()=>Ce,permissionSchema:()=>se,permissionSchemas:()=>Kt,permissionsRequestSchema:()=>it,permissionsResponseSchema:()=>st,plaidIdvError:()=>Ht,prepareStatement:()=>vn,receiptBadgeIdFromMintPayload:()=>$e,receiptBadgeIdFromPaymentIntent:()=>ne,receiptBadgeMintPayloadFromPaymentIntent:()=>qe,recurringPaymentDetailsSchema:()=>rt,rewardItemSchema:()=>nt,ruleSchema:()=>K,ruleSchemas:()=>Ft,singlePaymentDetailsSchema:()=>at,supportedExecutionPermissionInfoSchema:()=>dt,validateAndBuildOcap:()=>Bn});module.exports=_t(Ln);var w={Individual:0,Business:1},h={IssuerOnly:0,OwnerOnly:1,Both:2,Neither:3},le="CashieIdentitySoul",Te="1",Ie="IdentityMintPayload",ge="IdentityMintConsent",Et="IdentityMintPayload(uint8 identityType,string domain,uint8 burnAuth,bytes identityCommitment,address to)",Mt="IdentityMintConsent(uint8 identityType,string domain,uint8 burnAuth,bytes identityCommitment,address to,bytes proof)",fe={IdentityMintPayload:[{name:"identityType",type:"uint8"},{name:"domain",type:"string"},{name:"burnAuth",type:"uint8"},{name:"identityCommitment",type:"bytes"},{name:"to",type:"address"}]},he={IdentityMintConsent:[{name:"identityType",type:"uint8"},{name:"domain",type:"string"},{name:"burnAuth",type:"uint8"},{name:"identityCommitment",type:"bytes"},{name:"to",type:"address"},{name:"proof",type:"bytes"}]};var b=require("viem"),Ct=(1n<<160n)-1n;function M(e){return(0,b.hexToBigInt)((0,b.getAddress)(e))}function Bt(e){let t=e&Ct;return(0,b.getAddress)((0,b.numberToHex)(t,{size:20}))}function Ot(e,t){let n=`0x${e}-${t}`;return(0,b.keccak256)(n)}var D=require("viem");function Pe(e,t){let n=(0,D.hexToBigInt)(e);return{name:le,version:Te,chainId:n,verifyingContract:t}}function He(e){return{domain:Pe(e.chainId,e.verifyingContract),types:he,primaryType:ge,message:e.message}}function Le(e){return{domain:Pe(e.chainId,e.verifyingContract),types:fe,primaryType:Ie,message:e.message}}function vt(e){let{domain:t,types:n,primaryType:r,message:a}=He(e);return(0,D.hashTypedData)({domain:t,types:n,primaryType:r,message:a})}function Dt(e){let{domain:t,types:n,primaryType:r,message:a}=Le(e);return(0,D.hashTypedData)({domain:t,types:n,primaryType:r,message:a})}var z=(n=>(n.PLAID="plaid-identity",n.BUSINESS="business-identity",n))(z||{});function kt(){let e=globalThis.crypto;if(!e?.getRandomValues)throw new Error("Web Crypto is not available (need Node.js 19+ or a modern browser).");return e}function Nt(e){return Array.from(e,t=>t.toString(16).padStart(2,"0")).join("")}function Ut(){let e=new Uint8Array(32);return kt().getRandomValues(e),`0x${Nt(e)}`}function k(e){if(!e)throw new Error("URL is required");if(!e.startsWith("https://")&&!e.startsWith("http://"))throw new Error("URL must start with https or http");return e.trim()}var Re=class{#e;constructor(t){t.idvProverUrl=k(t.idvProverUrl),this.#e=t}async postIdvProver(t,n){let r=this.#e.idvProverUrl,a=await fetch(`${r}/api/v1/idv/${t}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)});if(!a.ok){let s=await a.json().catch(()=>({}));throw new Error(s.error||s.error_message||`IDV request failed: ${a.statusText}`)}return a.json()}async generatePlaidIdentityProof(t){let{account:n}=t;return this.postIdvProver("generate-identity-proof",{account:n,identityIssuerId:"plaid-identity"})}async generateBusinessIdentityProof(t){let{account:n}=t;return this.postIdvProver("generate-identity-proof",{account:n,identityIssuerId:"business-identity",domain:t.domain})}async issueIdentityProof(t){if(!this.isSupportedIdentityIssuerId(t.identityIssuerId))throw new Error(`Unsupported identity issuer ID: ${t.identityIssuerId}`);switch(t.identityIssuerId){case"plaid-identity":return this.generatePlaidIdentityProof(t.params);case"business-identity":return this.generateBusinessIdentityProof(t.params)}}isSupportedIdentityIssuerId(t){return Object.values(z).includes(t)}};var Fe=(a=>(a.IDV_SESSION_SUCCESS="IDV_SESSION_SUCCESS",a.IDV_SESSION_PENDING_REVIEW="IDV_SESSION_PENDING_REVIEW",a.INVALID_IDV_SESSION="INVALID_IDV_SESSION",a.IDV_MAX_FAILED_VERIFICATION_THRESHOLD_REACHED="IDV_MAX_FAILED_VERIFICATION_THRESHOLD_REACHED",a))(Fe||{}),Ye={IDV_SESSION_SUCCESS:"IDV session has already been completed.",IDV_SESSION_PENDING_REVIEW:"IDV session is pending review. Please wait for review.",INVALID_IDV_SESSION:"idvSession is required and must be a string.",IDV_MAX_FAILED_VERIFICATION_THRESHOLD_REACHED:"Maximum failed verification threshold reached. Please contact support."},Ht=e=>({error_code:e,error_message:Ye[e]});var ye=require("viem");var p=require("zod");var m=require("zod");var P=require("zod"),$=require("viem"),l=P.z.custom(e=>typeof e=="string"&&(0,$.isAddress)(e),{message:"Expected valid Ethereum address"}),T=P.z.custom(e=>typeof e=="string"&&(0,$.isHex)(e),{message:"Expected valid hex string"}),S=P.z.object({type:P.z.string(),isAdjustmentAllowed:P.z.boolean(),justification:P.z.string(),data:P.z.record(P.z.string(),P.z.unknown())}).strict(),G=class extends Error{schemaName;zodError;constructor(t,n){let r=n.issues.map(a=>{let s=a.path.length>0?` at ${a.path.join(".")}`:"";return`${a.message}${s}`}).join("; ");super(`Invalid ERC-7715 "${t}": ${r}`),this.name="ERC7715ValidationError",this.schemaName=t,this.zodError=n}};function y(e,t,n){let r=t.safeParse(n);if(!r.success)throw new G(e,r.error);return r.data}function Lt(e){return y("BaseScopeSchema",S,e)}var q=m.z.union([m.z.literal(w.Individual),m.z.literal(w.Business)]),J=m.z.union([m.z.literal(h.IssuerOnly),m.z.literal(h.OwnerOnly),m.z.literal(h.Both),m.z.literal(h.Neither)]),N=m.z.object({identityType:q,domain:m.z.string(),burnAuth:J,identityCommitment:T,to:l,proof:T,signature:T}).strict(),W=S.omit({type:!0,data:!0}).extend({type:m.z.literal("expiry"),data:m.z.object({timestamp:m.z.number().int()}).strict()}).strict(),Z=S.omit({type:!0,data:!0}).extend({type:m.z.literal("identity-mint"),data:m.z.object({identityMintPayload:N}).strict()}).strict(),K=m.z.discriminatedUnion("type",[W,Z]),Ft={expiry:W,identityMint:Z};function Yt(e){return y("ExpiryRule",W,e)}function jt(e){return y("IdentityMintRule",Z,e)}function Vt(e){return y("Rule",K,e)}var U="data:application/json;base64,",H="data:image/svg+xml;base64,",L="Cashie-ReceiptBadge-v1",F="Cashie-PaymentRecordBadge-v1",je=p.z.enum(["Individual","Business"]),Ve={Individual:w.Individual,Business:w.Business},x=p.z.string().regex(/^\d+$/,"Expected decimal string"),A=p.z.string().regex(/^0x[0-9a-fA-F]+$/,"Expected non-empty 0x-prefixed hex"),be=A.refine(e=>e.length===66,{message:"Expected 32-byte hex string (0x + 64 hex chars)"}),xe=p.z.object({identityContract:A,tokenId:x}).strict(),X=p.z.object({name:p.z.string(),description:p.z.string(),image:p.z.string(),soulBoundTo:xe,receiptType:p.z.enum(["OneTime","Recurring"]),blockNumber:x,recipient:A,chainId:x,tokenAddress:A,allowance:x,salt:be}).strict(),zt=x.refine(e=>{let t=Number(e);return Number.isInteger(t)&&t>=h.IssuerOnly&&t<=h.Neither},{message:"burnAuth must be IERC5484 enum ordinal (0\u20133)"}).transform(e=>Number(e)),Q=p.z.object({name:p.z.string(),description:p.z.string(),image:p.z.string(),soulBoundTo:xe,blockNumber:x,payer:A,chainId:x,tokenAddress:A,allowance:x,receiptBadgeId:x,salt:be}).strict(),ee=p.z.object({name:p.z.string(),description:p.z.string(),image:p.z.string(),identityType:je.transform(e=>Ve[e]),domain:p.z.string(),burnAuth:zt,identityCommitment:A}).strict(),Gt=p.z.object({name:p.z.string(),description:p.z.string(),image:p.z.string(),identityType:q,domain:p.z.string(),burnAuth:J,identityCommitment:A}).strict();var u=require("viem");var te={OneTime:0,Recurring:1},$t=[{type:"address",name:"identityContract"},{type:"uint256",name:"tokenId"},{type:"uint8",name:"receiptType"},{type:"uint256",name:"blockNumber"},{type:"address",name:"recipient"},{type:"uint256",name:"chainId"},{type:"address",name:"tokenAddress"},{type:"uint256",name:"allowance"},{type:"bytes32",name:"salt"}];function ze(e){return(0,u.encodeAbiParameters)([...$t],[e.soulBoundTo.identityContract,e.soulBoundTo.tokenId,e.receiptType,e.blockNumber,e.recipient,e.chainId,e.tokenAddress,e.allowance,e.salt])}function Ge(e){return(0,u.keccak256)(ze(e))}function $e(e){return BigInt(Ge(e))}function qe(e,t,n,r){return{soulBoundTo:{identityContract:(0,u.getAddress)(e),tokenId:M(t.payer)},receiptType:r,blockNumber:n,recipient:(0,u.getAddress)(t.recipient),chainId:(0,u.hexToBigInt)(t.chainId),tokenAddress:(0,u.getAddress)(t.tokenAddress),allowance:(0,u.hexToBigInt)(t.allowance),salt:t.salt}}function ne(e,t,n,r){return $e(qe(e,t,n,r))}var qt=[{type:"address",name:"identityContract"},{type:"uint256",name:"tokenId"},{type:"uint256",name:"blockNumber"},{type:"address",name:"payer"},{type:"uint256",name:"chainId"},{type:"address",name:"tokenAddress"},{type:"uint256",name:"allowance"},{type:"uint256",name:"receiptBadgeId"},{type:"bytes32",name:"salt"}];function Je(e){return(0,u.encodeAbiParameters)([...qt],[e.soulBoundTo.identityContract,e.soulBoundTo.tokenId,e.blockNumber,e.payer,e.chainId,e.tokenAddress,e.allowance,e.receiptBadgeId,e.salt])}function We(e){return(0,u.keccak256)(Je(e))}function Ze(e){return BigInt(We(e))}function Ke(e,t,n,r){return{soulBoundTo:{identityContract:(0,u.getAddress)(e),tokenId:M(t.recipient)},blockNumber:n,payer:(0,u.getAddress)(t.payer),chainId:(0,u.hexToBigInt)(t.chainId),tokenAddress:(0,u.getAddress)(t.tokenAddress),allowance:(0,u.hexToBigInt)(t.allowance),receiptBadgeId:r,salt:t.salt}}function Ae(e,t,n,r){let a=ne(e,t,n,r);return Ze(Ke(e,t,n,a))}function Xe(e){let t=e.replace(/\s+/g,"");try{let n=atob(t),r=new Uint8Array(n.length);for(let a=0;a<n.length;a++)r[a]=n.charCodeAt(a);return new TextDecoder("utf8",{fatal:!0}).decode(r)}catch{throw new Error("Failed to Base64-decode Cashie data URI payload (invalid encoding)")}}function Qe(e){if(!e.startsWith(U))throw new Error(`Expected Cashie JSON data URI prefix "${U}"`);let t=e.slice(U.length);return Xe(t)}function Y(e){if(!e.startsWith(H))throw new Error(`Expected Cashie SVG data URI prefix "${H}"`);let t=e.slice(H.length);return Xe(t)}function j(e){let t=Qe(e);return JSON.parse(t)}function we(e){let t=j(e);return ee.parse(t)}function et(e){let t=j(e);return X.parse(t)}function Se(e,t){if(t!==L)throw new Error(`Expected ERC-5114 metadataFormat "${L}", received "${t}"`);return et(e)}function tt(e){let t=j(e);return Q.parse(t)}function _e(e,t){if(t!==F)throw new Error(`Expected ERC-5114 metadataFormat "${F}", received "${t}"`);return tt(e)}function Jt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Wt(e){if("identityType"in e)return{kind:"identitySoul",data:ee.parse(e)};if("receiptType"in e)return{kind:"receiptBadge",format:L,data:X.parse(e)};if("receiptBadgeId"in e)return{kind:"paymentRecordBadge",format:F,data:Q.parse(e)};throw new Error("Unrecognized Cashie metadata JSON (expected identityType, receiptType, or receiptBadgeId)")}function Zt(e){let t=j(e);if(!Jt(t))throw new Error("Unrecognized Cashie metadata JSON (expected identityType, receiptType, or receiptBadgeId)");return Wt(t)}var B=require("viem"),O=require("viem/chains");var d=require("zod"),pe=require("viem");var I=require("zod");var g=require("zod");var Ee=g.z.enum(["weekly","monthly","annually"]),ae=g.z.enum(["single","recurring"]),nt=g.z.object({recipient:l,rewardAmount:T,rewardTokenAddress:l}).strict(),re=g.z.object({allowance:T,tokenAddress:l,rewardItems:g.z.array(nt).optional()}).strict(),at=re.extend({type:g.z.literal(ae.enum.single)}).strict(),rt=re.extend({type:g.z.literal(ae.enum.recurring),startDate:g.z.number().int().optional(),billingPeriod:Ee}).strict(),Me=g.z.discriminatedUnion("type",[at,rt]),ie=S.omit({type:!0,data:!0}).extend({type:g.z.literal("erc20-token-payment"),data:g.z.object({recipient:l,paymentDetails:Me}).strict()}).strict(),se=g.z.discriminatedUnion("type",[ie]),Kt={"erc20-token-payment":ie};function Xt(e){return y("BillingPeriod",Ee,e)}function Qt(e){return y("PaymentDetailsType",ae,e)}function en(e){return y("BasePaymentDetailsData",re,e)}function tn(e){return y("PaymentDetails",Me,e)}function nn(e){return y("ERC20TokenPaymentPermission",ie,e)}function an(e){return y("Permission",se,e)}var C=I.z.object({factory:l,factoryData:T}).strict(),oe=I.z.object({chainId:T,from:l.optional(),to:l,permission:se,rules:I.z.array(K).optional()}).strict(),it=I.z.array(oe),Ce=oe.extend({from:l,context:T,dependencies:I.z.array(C),delegationManager:l}).strict(),st=I.z.array(Ce),ot=I.z.object({chainIds:I.z.array(T)}).strict(),dt=I.z.object({chainIds:I.z.array(T),ruleTypes:I.z.array(I.z.string())}).strict(),pt=I.z.object({"erc20-token-payment":dt}).strict();function rn(e){return y("InitCodeData",C,e)}function sn(e){return y("PermissionRequest",oe,e)}function on(e){return y("PermissionsRequest",it,e)}function dn(e){return y("PermissionResponse",Ce,e)}function pn(e){return y("PermissionsResponse",st,e)}function yn(e){return y("GetPermissionsInfoResultParams",ot,e)}function un(e){return y("GetSupportedExecutionPermissionsResult",pt,e)}var de=(s=>(s.PAYMENT_C2B="payment-c2b",s.PAYMENT_B2B="payment-b2b",s.PAYMENT_B2C="payment-b2c",s.DEPOSIT="deposit",s.WITHDRAW="withdraw",s))(de||{});var f=d.z.custom(e=>typeof e=="string"&&(0,pe.isAddress)(e),{message:"Expected valid Ethereum address"}),c=d.z.custom(e=>typeof e=="string"&&(0,pe.isHex)(e),{message:"Expected valid hex string"}),mn=d.z.custom(e=>typeof e=="number"&&Number.isInteger(e)&&e>=h.IssuerOnly&&e<=h.Neither,{message:"Expected BurnAuth enum value (0\u20133)"}),cn=d.z.object({to:f,data:c}),ln=d.z.object({nftAddress:f,nftTokenId:c}),Tn=d.z.object({identitySoulContract:d.z.object({address:f,badgeContracts:d.z.object({paymentRecordBadgeContract:f,receiptBadgeContract:f})})}),In=d.z.object({signedIdentityMintPayload:N,initCodeData:C}).strict(),gn=d.z.object({recipient:f,rewardAmount:c,rewardTokenAddress:f}).strict(),fn=d.z.object({rewardPayer:f,rewardItems:d.z.array(gn),rewardPermissionContext:c,rewardDelegationManager:f}).strict(),hn=d.z.object({action:d.z.enum(de),chainId:c,recipient:f,payer:f,identityMintPayloads:d.z.array(N),tokenAddress:f,allowance:c,rewardIntentDetails:fn.optional(),permissionContext:c,delegationManager:f,dependencies:d.z.array(C),salt:c}).strict().transform(e=>e),Pn=d.z.object({paymentIntent:hn,status:d.z.enum(["pending","confirmed","failed"]),txHash:c.nullable().optional(),blockNumber:c.nullable().optional()}).strict().transform(e=>e),Rn={discovery_supportedSouls:Tn,payment_getProtocolFeeBps:c,payment_calculateRewardAmount:c,payment_sendIntent:c,payment_getIntentStatuses:d.z.array(Pn),payment_prepareRouterCallsFromAction:d.z.array(cn),identity_getBurnAuth:mn,identity_getTokenURI:d.z.string().nullable(),payment_sendPrePaymentSetup:c,payment_getPrePaymentSetup:In.nullable(),badge_getOwnerOf:ln,badge_getBadgeUri:d.z.string().nullable(),badge_getMetadataFormat:d.z.string(),badge_totalBadgesOfIdentity:c,badge_badgeOfIdentityByIndex:c,badge_badgesOfIdentity:d.z.array(c)},Be=class extends Error{method;zodError;constructor(t,n){let r=n.issues.map(a=>{let s=a.path.length>0?` at ${a.path.join(".")}`:"";return`${a.message}${s}`}).join("; ");super(`Invalid RPC response for "${t}": ${r}`),this.name="PaymentRpcResponseValidationError",this.method=t,this.zodError=n}};function yt(e,t){let n=Rn[e].safeParse(t);if(!n.success)throw new Be(e,n.error);return n.data}var Oe=e=>{let t=()=>({"0xaa36a7":O.sepolia,"0x539":O.localhost,"0x7a69":O.anvil}),n=i=>{let R=(0,B.toHex)(i),V=t()[R];if(!V)throw new Error(`Chain ${R} is not supported`);return V},{url:r,chainId:a}=e,s=(0,B.createPublicClient)({chain:n(a),transport:(0,B.http)(k(r))}),o=async(i,R)=>{let V=await s.request({method:i,params:R});return yt(i,V)};return{getIdentitySoulDiscovery:i=>o("discovery_supportedSouls",i),getProtocolFeeBps:i=>o("payment_getProtocolFeeBps",i),calculateRewardAmount:i=>o("payment_calculateRewardAmount",i),sendIntent:i=>o("payment_sendIntent",i),getIntentStatuses:i=>o("payment_getIntentStatuses",i),prepareRouterCallsFromAction:i=>o("payment_prepareRouterCallsFromAction",i),getBurnAuth:i=>o("identity_getBurnAuth",i),getTokenURI:i=>o("identity_getTokenURI",i),sendPrePaymentSetup:i=>o("payment_sendPrePaymentSetup",i),getPrePaymentSetup:i=>o("payment_getPrePaymentSetup",i),getBadgeOwnerOf:i=>o("badge_getOwnerOf",i),getBadgeUri:i=>o("badge_getBadgeUri",i),getBadgeMetadataFormat:i=>o("badge_getMetadataFormat",i),getTotalBadgesOfIdentity:i=>o("badge_totalBadgesOfIdentity",i),getBadgeOfIdentityByIndex:i=>o("badge_badgeOfIdentityByIndex",i),getBadgesOfIdentity:i=>o("badge_badgesOfIdentity",i)}};var ve=class{#e;#r;#i;#s;#o;#n;#t;#d=new Map;#p=new Map;#y;constructor(t){let{identityIssuer:n,cashieRpcUrl:r,chainIdHex:a}=t;this.#y=n,this.#n=Oe({url:r,chainId:(0,ye.fromHex)(a,"number")}),this.#t=a}#a(){if(!this.isInitialized())throw new Error("Soul manager is not initialized")}isInitialized(){return this.#e!==void 0&&this.#r!==void 0&&this.#i!==void 0}async init(){let t=await this.#n.getIdentitySoulDiscovery([{chainHex:this.#t}]);if(!t)throw new Error("Failed to get supported souls");this.#e=t.identitySoulContract.address,this.#r=t.identitySoulContract.badgeContracts.paymentRecordBadgeContract,this.#i=t.identitySoulContract.badgeContracts.receiptBadgeContract;let[n,r]=await Promise.all([this.#n.getBadgeMetadataFormat([{chainHex:this.#t}]),this.#n.getBadgeMetadataFormat([{chainHex:this.#t}])]);if(!n||!r)throw new Error("Failed to get badge metadata formats");this.#s=n,this.#o=r}async prepareIdentityMintConsent(t){if(this.#a(),!this.#e)throw new Error("Identity soul contract is not initialized");let{account:n}=t.params;if(!n)throw new Error("Account is missing from the request");let r=await this.#y.issueIdentityProof(t),{identityType:a,domain:s,burnAuth:o,identityCommitment:i,proof:R}=r;return{chainId:this.#t,verifyingContract:this.#e,message:{to:n,identityType:a,domain:s,burnAuth:o,identityCommitment:i,proof:R}}}async getCashieIdentitySoulTokenMetadata(t){if(this.#a(),!this.#e)throw new Error("Identity soul contract is not initialized");if(!t)throw new Error("Account is not initialized");let n=M(t),r=(0,ye.toHex)(n),a=await this.#n.getTokenURI([{chainHex:this.#t,tokenId:r}]);if(!a)return;let s=we(a),o=Y(s.image);if(!o)throw new Error("Failed to decode image SVG for identity soul token metadata");return s.image=o,s}async getCashieReceiptBadgeMetadata(t){if(this.#a(),!this.#i)throw new Error("Receipt badge contract is not initialized");if(!this.#s)throw new Error("Receipt badge metadata format is not initialized");let n=this.#d.get(t);if(n)return n;let r=await this.#n.getBadgeUri([{chainHex:this.#t,badgeId:t}]);if(!r)return;let a=Se(r,this.#s),s=Y(a.image);if(!s)throw new Error("Failed to decode image SVG for receipt badge metadata");return a.image=s,this.#d.set(t,a),a}async getCashiePaymentRecordBadgeMetadata(t){if(this.#a(),!this.#r)throw new Error("Payment record badge contract is not initialized");if(!this.#o)throw new Error("Payment record badge metadata format is not initialized");let n=this.#p.get(t);if(n)return n;let r=await this.#n.getBadgeUri([{chainHex:this.#t,badgeId:t}]);if(!r)return;let a=_e(r,this.#o),s=Y(a.image);if(!s)throw new Error("Failed to decode image SVG for payment record badge metadata");return a.image=s,this.#p.set(t,a),a}};var _=require("viem"),bn=[{name:"action",type:"string"},{name:"chainId",type:"uint256"},{name:"recipient",type:"address"},{name:"payer",type:"address"},{name:"rewardIntentDetails",type:"tuple",components:[{name:"rewardPayer",type:"address"},{name:"rewardItems",type:"tuple[]",components:[{name:"recipient",type:"address"},{name:"rewardAmount",type:"uint256"},{name:"rewardTokenAddress",type:"address"}]},{name:"rewardDelegationManager",type:"address"}]},{name:"tokenAddress",type:"address"},{name:"allowance",type:"uint256"},{name:"delegationManager",type:"address"},{name:"salt",type:"bytes32"}];function ut(e){let t=e.rewardIntentDetails??{rewardPayer:_.zeroAddress,rewardItems:[],rewardDelegationManager:_.zeroAddress};return(0,_.encodeAbiParameters)(bn,[e.action,BigInt(e.chainId),e.recipient,e.payer,{rewardPayer:t.rewardPayer,rewardItems:t.rewardItems.map(n=>({recipient:n.recipient,rewardAmount:BigInt(n.rewardAmount),rewardTokenAddress:n.rewardTokenAddress})),rewardDelegationManager:t.rewardDelegationManager},e.tokenAddress,BigInt(e.allowance),e.delegationManager,e.salt])}function xn(e){return(0,_.keccak256)(ut(e))}var An=[{type:"constructor",inputs:[{name:"_initialOwner",type:"address",internalType:"address"},{name:"_treasuryFeeAddress",type:"address",internalType:"address"},{name:"_supportedPaymentTokens",type:"address[]",internalType:"address[]"},{name:"_protocolFeeBps",type:"uint256",internalType:"uint256"},{name:"_paymentProcessorFeeBps",type:"uint256",internalType:"uint256"},{name:"_rewardBps",type:"uint256",internalType:"uint256"},{name:"_protocolRewardToken",type:"address",internalType:"contract IERC20Metadata"},{name:"_stakingManager",type:"address",internalType:"contract IStakingManager"},{name:"_identitySoul",type:"address",internalType:"contract ICashieIdentitySoul"},{name:"_receiptBadge",type:"address",internalType:"contract ICashieReceiptBadge"},{name:"_paymentRecordBadge",type:"address",internalType:"contract ICashiePaymentRecordBadge"},{name:"_identityVerificationProvers",type:"address[]",internalType:"address[]"}],stateMutability:"nonpayable"},{type:"function",name:"acceptOwnership",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"addIdentityVerificationProver",inputs:[{name:"prover",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"adjustProtocolFeeBps",inputs:[{name:"_delta",type:"uint256",internalType:"uint256"},{name:"_increase",type:"bool",internalType:"bool"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"adjustRewardBps",inputs:[{name:"_delta",type:"uint256",internalType:"uint256"},{name:"_increase",type:"bool",internalType:"bool"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"calculateFee",inputs:[{name:"_amount",type:"uint256",internalType:"uint256"},{name:"_feeBps",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"pure"},{type:"function",name:"calculateReward",inputs:[{name:"_paymentTokenAmount",type:"uint256",internalType:"uint256"},{name:"_paymentTokenDecimals",type:"uint8",internalType:"uint8"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"deposit",inputs:[{name:"_recipient",type:"address",internalType:"address"},{name:"_tokenAddress",type:"address",internalType:"address"},{name:"_allowance",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"identitySoul",inputs:[],outputs:[{name:"",type:"address",internalType:"contract ICashieIdentitySoul"}],stateMutability:"view"},{type:"function",name:"identityTokenAddress",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"isIdentityVerificationProver",inputs:[{name:"prover",type:"address",internalType:"address"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isSupportedToken",inputs:[{name:"_tokenAddress",type:"address",internalType:"address"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isValidSignature",inputs:[{name:"hash",type:"bytes32",internalType:"bytes32"},{name:"signature",type:"bytes",internalType:"bytes"}],outputs:[{name:"magicValue",type:"bytes4",internalType:"bytes4"}],stateMutability:"view"},{type:"function",name:"issueIdentityToken",inputs:[{name:"payload",type:"tuple",internalType:"struct IdentityMintPayload",components:[{name:"identityType",type:"uint8",internalType:"enum IdentityType"},{name:"domain",type:"string",internalType:"string"},{name:"burnAuth",type:"uint8",internalType:"enum IERC5484.BurnAuth"},{name:"identityCommitment",type:"bytes",internalType:"bytes"},{name:"to",type:"address",internalType:"address"},{name:"proof",type:"bytes",internalType:"bytes"},{name:"signature",type:"bytes",internalType:"bytes"}]}],outputs:[{name:"tokenId",type:"uint256",internalType:"uint256"}],stateMutability:"nonpayable"},{type:"function",name:"owner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"payB2B",inputs:[{name:"_recipient",type:"address",internalType:"address"},{name:"_tokenAddress",type:"address",internalType:"address"},{name:"_allowance",type:"uint256",internalType:"uint256"},{name:"_feeBeneficiaryAddress",type:"address",internalType:"address"},{name:"_receiptBadgeRouterMintPayload",type:"tuple",internalType:"struct ReceiptBadgeRouterMintPayload",components:[{name:"salt",type:"bytes32",internalType:"bytes32"},{name:"receiptType",type:"uint8",internalType:"enum ReceiptType"}]}],outputs:[{name:"receiptBadgeId",type:"uint256",internalType:"uint256"},{name:"paymentRecordBadgeId",type:"uint256",internalType:"uint256"}],stateMutability:"nonpayable"},{type:"function",name:"payB2C",inputs:[{name:"_recipient",type:"address",internalType:"address"},{name:"_tokenAddress",type:"address",internalType:"address"},{name:"_allowance",type:"uint256",internalType:"uint256"},{name:"_feeBeneficiaryAddress",type:"address",internalType:"address"},{name:"_receiptBadgeRouterMintPayload",type:"tuple",internalType:"struct ReceiptBadgeRouterMintPayload",components:[{name:"salt",type:"bytes32",internalType:"bytes32"},{name:"receiptType",type:"uint8",internalType:"enum ReceiptType"}]}],outputs:[{name:"receiptBadgeId",type:"uint256",internalType:"uint256"},{name:"paymentRecordBadgeId",type:"uint256",internalType:"uint256"}],stateMutability:"nonpayable"},{type:"function",name:"payC2B",inputs:[{name:"_recipient",type:"address",internalType:"address"},{name:"_tokenAddress",type:"address",internalType:"address"},{name:"_allowance",type:"uint256",internalType:"uint256"},{name:"_feeBeneficiaryAddress",type:"address",internalType:"address"},{name:"_receiptBadgeRouterMintPayload",type:"tuple",internalType:"struct ReceiptBadgeRouterMintPayload",components:[{name:"salt",type:"bytes32",internalType:"bytes32"},{name:"receiptType",type:"uint8",internalType:"enum ReceiptType"}]}],outputs:[{name:"receiptBadgeId",type:"uint256",internalType:"uint256"},{name:"paymentRecordBadgeId",type:"uint256",internalType:"uint256"}],stateMutability:"nonpayable"},{type:"function",name:"paymentProcessorFeeBps",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"paymentRecordBadge",inputs:[],outputs:[{name:"",type:"address",internalType:"contract ICashiePaymentRecordBadge"}],stateMutability:"view"},{type:"function",name:"pendingOwner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"protocolFeeBps",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"receiptBadge",inputs:[],outputs:[{name:"",type:"address",internalType:"contract ICashieReceiptBadge"}],stateMutability:"view"},{type:"function",name:"receiptBadgeAddress",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"registerToken",inputs:[{name:"_tokenAddress",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"removeIdentityVerificationProver",inputs:[{name:"prover",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"renounceOwnership",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"reward",inputs:[{name:"_rewards",type:"tuple[]",internalType:"struct RewardItem[]",components:[{name:"recipient",type:"address",internalType:"address"},{name:"rewardAmount",type:"uint256",internalType:"uint256"},{name:"rewardTokenAddress",type:"address",internalType:"address"}]}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"rewardBps",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"rewardToken",inputs:[],outputs:[{name:"",type:"address",internalType:"contract IERC20Metadata"}],stateMutability:"view"},{type:"function",name:"rewardTokenAddress",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"supportedPaymentTokens",inputs:[{name:"",type:"address",internalType:"address"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"supportsInterface",inputs:[{name:"interfaceId",type:"bytes4",internalType:"bytes4"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"transferOwnership",inputs:[{name:"newOwner",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"treasuryFeeAddress",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"withdraw",inputs:[{name:"_recipient",type:"address",internalType:"address"},{name:"_tokenAddress",type:"address",internalType:"address"},{name:"_allowance",type:"uint256",internalType:"uint256"},{name:"_feeBeneficiaryAddress",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"event",name:"Deposited",inputs:[{name:"sender",type:"address",indexed:!0,internalType:"address"},{name:"recipient",type:"address",indexed:!0,internalType:"address"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"},{name:"tokenAddress",type:"address",indexed:!1,internalType:"address"}],anonymous:!1},{type:"event",name:"IdentityVerificationProverAdded",inputs:[{name:"prover",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"IdentityVerificationProverRemoved",inputs:[{name:"prover",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"IssueReward",inputs:[{name:"recipient",type:"address",indexed:!0,internalType:"address"},{name:"rewardAmount",type:"uint256",indexed:!1,internalType:"uint256"},{name:"rewardToken",type:"address",indexed:!1,internalType:"address"}],anonymous:!1},{type:"event",name:"OwnershipTransferStarted",inputs:[{name:"previousOwner",type:"address",indexed:!0,internalType:"address"},{name:"newOwner",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"OwnershipTransferred",inputs:[{name:"previousOwner",type:"address",indexed:!0,internalType:"address"},{name:"newOwner",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"Payment",inputs:[{name:"payer",type:"address",indexed:!0,internalType:"address"},{name:"receiver",type:"address",indexed:!0,internalType:"address"},{name:"feeBeneficiaryAddress",type:"address",indexed:!0,internalType:"address"},{name:"allowance",type:"uint256",indexed:!1,internalType:"uint256"},{name:"recipientAmount",type:"uint256",indexed:!1,internalType:"uint256"},{name:"protocolFee",type:"uint256",indexed:!1,internalType:"uint256"},{name:"protocolFeeBps",type:"uint256",indexed:!1,internalType:"uint256"},{name:"tokenAddress",type:"address",indexed:!1,internalType:"address"}],anonymous:!1},{type:"event",name:"ProtocolFeeBpsAdjusted",inputs:[{name:"oldFeeBps",type:"uint256",indexed:!1,internalType:"uint256"},{name:"newFeeBps",type:"uint256",indexed:!1,internalType:"uint256"},{name:"increased",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"RewardBpsAdjusted",inputs:[{name:"oldRewardBps",type:"uint256",indexed:!1,internalType:"uint256"},{name:"newRewardBps",type:"uint256",indexed:!1,internalType:"uint256"},{name:"increased",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"Withdrawn",inputs:[{name:"account",type:"address",indexed:!0,internalType:"address"},{name:"recipient",type:"address",indexed:!0,internalType:"address"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"},{name:"protocolFee",type:"uint256",indexed:!1,internalType:"uint256"},{name:"protocolFeeBps",type:"uint256",indexed:!1,internalType:"uint256"},{name:"tokenAddress",type:"address",indexed:!1,internalType:"address"}],anonymous:!1},{type:"error",name:"IdentityVerificationProverAlreadyRegistered",inputs:[{name:"prover",type:"address",internalType:"address"}]},{type:"error",name:"IdentityVerificationProverNotRegistered",inputs:[{name:"prover",type:"address",internalType:"address"}]},{type:"error",name:"InvalidIdentityVerificationProver",inputs:[]},{type:"error",name:"OwnableInvalidOwner",inputs:[{name:"owner",type:"address",internalType:"address"}]},{type:"error",name:"OwnableUnauthorizedAccount",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"PaymentAmountCannotBeZero",inputs:[]},{type:"error",name:"ProcessorNotEligible",inputs:[]},{type:"error",name:"SafeERC20FailedOperation",inputs:[{name:"token",type:"address",internalType:"address"}]},{type:"error",name:"TokenAllowanceNotApprovedForDeposit",inputs:[]},{type:"error",name:"TokenAllowanceNotApprovedForPayment",inputs:[]},{type:"error",name:"TokenAllowanceNotApprovedForReward",inputs:[{name:"token",type:"address",internalType:"address"},{name:"spender",type:"address",internalType:"address"},{name:"allowance",type:"uint256",internalType:"uint256"}]},{type:"error",name:"TokenAllowanceNotApprovedForWithdraw",inputs:[]},{type:"error",name:"TokenAlreadyRegistered",inputs:[]},{type:"error",name:"TokenNotSupported",inputs:[]}],wn=[{type:"function",name:"acceptOwnership",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"owner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"pendingOwner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"renounceOwnership",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"router",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"setRouter",inputs:[{name:"_newRouter",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"transferOwnership",inputs:[{name:"newOwner",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"event",name:"OwnershipTransferStarted",inputs:[{name:"previousOwner",type:"address",indexed:!0,internalType:"address"},{name:"newOwner",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"OwnershipTransferred",inputs:[{name:"previousOwner",type:"address",indexed:!0,internalType:"address"},{name:"newOwner",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"RouterSet",inputs:[{name:"router",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"error",name:"OwnableInvalidOwner",inputs:[{name:"owner",type:"address",internalType:"address"}]},{type:"error",name:"OwnableUnauthorizedAccount",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"RouterInvalidInterface",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"RouterNotSet",inputs:[]},{type:"error",name:"RouterUnauthorizedAccount",inputs:[{name:"account",type:"address",internalType:"address"}]}],Sn=[{type:"constructor",inputs:[{name:"_name",type:"string",internalType:"string"},{name:"_symbol",type:"string",internalType:"string"},{name:"_owner",type:"address",internalType:"address"}],stateMutability:"nonpayable"},{type:"function",name:"DOMAIN_VERSION",inputs:[],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"view"},{type:"function",name:"NAME",inputs:[],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"view"},{type:"function",name:"acceptOwnership",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"approve",inputs:[{name:"to",type:"address",internalType:"address"},{name:"tokenId",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"pure"},{type:"function",name:"balanceOf",inputs:[{name:"owner",type:"address",internalType:"address"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"burnAuth",inputs:[{name:"tokenId",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"uint8",internalType:"enum IERC5484.BurnAuth"}],stateMutability:"view"},{type:"function",name:"burnIdentity",inputs:[{name:"tokenId",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"eip712Domain",inputs:[],outputs:[{name:"fields",type:"bytes1",internalType:"bytes1"},{name:"name",type:"string",internalType:"string"},{name:"version",type:"string",internalType:"string"},{name:"chainId",type:"uint256",internalType:"uint256"},{name:"verifyingContract",type:"address",internalType:"address"},{name:"salt",type:"bytes32",internalType:"bytes32"},{name:"extensions",type:"uint256[]",internalType:"uint256[]"}],stateMutability:"view"},{type:"function",name:"getApproved",inputs:[{name:"tokenId",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"getDomainHash",inputs:[],outputs:[{name:"",type:"bytes32",internalType:"bytes32"}],stateMutability:"view"},{type:"function",name:"isApprovedForAll",inputs:[{name:"owner",type:"address",internalType:"address"},{name:"operator",type:"address",internalType:"address"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"mintIdentity",inputs:[{name:"payload",type:"tuple",internalType:"struct IdentityMintPayload",components:[{name:"identityType",type:"uint8",internalType:"enum IdentityType"},{name:"domain",type:"string",internalType:"string"},{name:"burnAuth",type:"uint8",internalType:"enum IERC5484.BurnAuth"},{name:"identityCommitment",type:"bytes",internalType:"bytes"},{name:"to",type:"address",internalType:"address"},{name:"proof",type:"bytes",internalType:"bytes"},{name:"signature",type:"bytes",internalType:"bytes"}]}],outputs:[{name:"tokenId",type:"uint256",internalType:"uint256"}],stateMutability:"nonpayable"},{type:"function",name:"name",inputs:[],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"view"},{type:"function",name:"owner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"ownerOf",inputs:[{name:"tokenId",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"pendingOwner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"renounceOwnership",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"router",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"safeTransferFrom",inputs:[{name:"from",type:"address",internalType:"address"},{name:"to",type:"address",internalType:"address"},{name:"tokenId",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"safeTransferFrom",inputs:[{name:"from",type:"address",internalType:"address"},{name:"to",type:"address",internalType:"address"},{name:"tokenId",type:"uint256",internalType:"uint256"},{name:"_data",type:"bytes",internalType:"bytes"}],outputs:[],stateMutability:"pure"},{type:"function",name:"setApprovalForAll",inputs:[{name:"operator",type:"address",internalType:"address"},{name:"approved",type:"bool",internalType:"bool"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setRouter",inputs:[{name:"_newRouter",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"supportsInterface",inputs:[{name:"interfaceId",type:"bytes4",internalType:"bytes4"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"symbol",inputs:[],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"view"},{type:"function",name:"tokenIdFor",inputs:[{name:"account",type:"address",internalType:"address"}],outputs:[{name:"tokenId",type:"uint256",internalType:"uint256"}],stateMutability:"pure"},{type:"function",name:"tokenURI",inputs:[{name:"tokenId",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"view"},{type:"function",name:"transferFrom",inputs:[{name:"from",type:"address",internalType:"address"},{name:"to",type:"address",internalType:"address"},{name:"tokenId",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"pure"},{type:"function",name:"transferOwnership",inputs:[{name:"newOwner",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"event",name:"Approval",inputs:[{name:"owner",type:"address",indexed:!0,internalType:"address"},{name:"approved",type:"address",indexed:!0,internalType:"address"},{name:"tokenId",type:"uint256",indexed:!0,internalType:"uint256"}],anonymous:!1},{type:"event",name:"ApprovalForAll",inputs:[{name:"owner",type:"address",indexed:!0,internalType:"address"},{name:"operator",type:"address",indexed:!0,internalType:"address"},{name:"approved",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"Burned",inputs:[{name:"from",type:"address",indexed:!0,internalType:"address"},{name:"tokenId",type:"uint256",indexed:!0,internalType:"uint256"},{name:"auth",type:"uint8",indexed:!1,internalType:"enum IERC5484.BurnAuth"}],anonymous:!1},{type:"event",name:"EIP712DomainChanged",inputs:[],anonymous:!1},{type:"event",name:"Issued",inputs:[{name:"from",type:"address",indexed:!0,internalType:"address"},{name:"to",type:"address",indexed:!0,internalType:"address"},{name:"tokenId",type:"uint256",indexed:!0,internalType:"uint256"},{name:"burnAuth",type:"uint8",indexed:!1,internalType:"enum IERC5484.BurnAuth"}],anonymous:!1},{type:"event",name:"OwnershipTransferStarted",inputs:[{name:"previousOwner",type:"address",indexed:!0,internalType:"address"},{name:"newOwner",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"OwnershipTransferred",inputs:[{name:"previousOwner",type:"address",indexed:!0,internalType:"address"},{name:"newOwner",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"RouterSet",inputs:[{name:"router",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"SetDomain",inputs:[{name:"domainHash",type:"bytes32",indexed:!0,internalType:"bytes32"},{name:"name",type:"string",indexed:!1,internalType:"string"},{name:"domainVersion",type:"string",indexed:!1,internalType:"string"},{name:"chainId",type:"uint256",indexed:!1,internalType:"uint256"},{name:"contractAddress",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"Transfer",inputs:[{name:"from",type:"address",indexed:!0,internalType:"address"},{name:"to",type:"address",indexed:!0,internalType:"address"},{name:"tokenId",type:"uint256",indexed:!0,internalType:"uint256"}],anonymous:!1},{type:"error",name:"BurnAuthNotSupported",inputs:[]},{type:"error",name:"ERC721IncorrectOwner",inputs:[{name:"sender",type:"address",internalType:"address"},{name:"tokenId",type:"uint256",internalType:"uint256"},{name:"owner",type:"address",internalType:"address"}]},{type:"error",name:"ERC721InsufficientApproval",inputs:[{name:"operator",type:"address",internalType:"address"},{name:"tokenId",type:"uint256",internalType:"uint256"}]},{type:"error",name:"ERC721InvalidApprover",inputs:[{name:"approver",type:"address",internalType:"address"}]},{type:"error",name:"ERC721InvalidOperator",inputs:[{name:"operator",type:"address",internalType:"address"}]},{type:"error",name:"ERC721InvalidOwner",inputs:[{name:"owner",type:"address",internalType:"address"}]},{type:"error",name:"ERC721InvalidReceiver",inputs:[{name:"receiver",type:"address",internalType:"address"}]},{type:"error",name:"ERC721InvalidSender",inputs:[{name:"sender",type:"address",internalType:"address"}]},{type:"error",name:"ERC721NonTransferable",inputs:[]},{type:"error",name:"ERC721NonexistentToken",inputs:[{name:"tokenId",type:"uint256",internalType:"uint256"}]},{type:"error",name:"InvalidBurnAuth",inputs:[{name:"tokenId",type:"uint256",internalType:"uint256"}]},{type:"error",name:"InvalidIdentityDomain",inputs:[]},{type:"error",name:"InvalidIdentityProof",inputs:[]},{type:"error",name:"InvalidIdentitySignature",inputs:[]},{type:"error",name:"InvalidShortString",inputs:[]},{type:"error",name:"OwnableInvalidOwner",inputs:[{name:"owner",type:"address",internalType:"address"}]},{type:"error",name:"OwnableUnauthorizedAccount",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"RouterInvalidInterface",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"RouterNotSet",inputs:[]},{type:"error",name:"RouterUnauthorizedAccount",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"RouterUnauthorizedBurn",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"StringTooLong",inputs:[{name:"str",type:"string",internalType:"string"}]}],_n=[{type:"constructor",inputs:[{name:"owner_",type:"address",internalType:"address"},{name:"identityContract_",type:"address",internalType:"address"}],stateMutability:"nonpayable"},{type:"function",name:"acceptOwnership",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"badgeOfIdentityByIndex",inputs:[{name:"identityTokenId",type:"uint256",internalType:"uint256"},{name:"index",type:"uint256",internalType:"uint256"}],outputs:[{name:"badgeId",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"badgeUri",inputs:[{name:"badgeId",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"view"},{type:"function",name:"badgesOfIdentity",inputs:[{name:"identityTokenId",type:"uint256",internalType:"uint256"},{name:"offset",type:"uint256",internalType:"uint256"},{name:"limit",type:"uint256",internalType:"uint256"}],outputs:[{name:"badgeIds",type:"uint256[]",internalType:"uint256[]"}],stateMutability:"view"},{type:"function",name:"collectionUri",inputs:[],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"pure"},{type:"function",name:"identityContract",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"metadataFormat",inputs:[],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"pure"},{type:"function",name:"mint",inputs:[{name:"payload",type:"tuple",internalType:"struct ReceiptBadgeMintPayload",components:[{name:"soulBoundTo",type:"tuple",internalType:"struct SoulBoundTo",components:[{name:"identityContract",type:"address",internalType:"address"},{name:"tokenId",type:"uint256",internalType:"uint256"}]},{name:"receiptType",type:"uint8",internalType:"enum ReceiptType"},{name:"blockNumber",type:"uint256",internalType:"uint256"},{name:"recipient",type:"address",internalType:"address"},{name:"chainId",type:"uint256",internalType:"uint256"},{name:"tokenAddress",type:"address",internalType:"address"},{name:"allowance",type:"uint256",internalType:"uint256"},{name:"salt",type:"bytes32",internalType:"bytes32"}]}],outputs:[{name:"badgeId",type:"uint256",internalType:"uint256"}],stateMutability:"nonpayable"},{type:"function",name:"owner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"ownerOf",inputs:[{name:"badgeId",type:"uint256",internalType:"uint256"}],outputs:[{name:"nftAddress",type:"address",internalType:"address"},{name:"nftTokenId",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"pendingOwner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"renounceOwnership",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"router",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"setRouter",inputs:[{name:"_newRouter",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"totalBadgesOfIdentity",inputs:[{name:"identityTokenId",type:"uint256",internalType:"uint256"}],outputs:[{name:"totalBadges",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"transferOwnership",inputs:[{name:"newOwner",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"event",name:"Mint",inputs:[{name:"badgeId",type:"uint256",indexed:!0,internalType:"uint256"},{name:"nftAddress",type:"address",indexed:!0,internalType:"address"},{name:"nftTokenId",type:"uint256",indexed:!0,internalType:"uint256"}],anonymous:!1},{type:"event",name:"OwnershipTransferStarted",inputs:[{name:"previousOwner",type:"address",indexed:!0,internalType:"address"},{name:"newOwner",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"OwnershipTransferred",inputs:[{name:"previousOwner",type:"address",indexed:!0,internalType:"address"},{name:"newOwner",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"RouterSet",inputs:[{name:"router",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"error",name:"BadgeNotMinted",inputs:[{name:"badgeId",type:"uint256",internalType:"uint256"}]},{type:"error",name:"BadgePageLimitExceeded",inputs:[{name:"limit",type:"uint256",internalType:"uint256"},{name:"maxLimit",type:"uint256",internalType:"uint256"}]},{type:"error",name:"IdentityContractMismatch",inputs:[{name:"expected",type:"address",internalType:"address"},{name:"actual",type:"address",internalType:"address"}]},{type:"error",name:"InvalidIdentityContract",inputs:[]},{type:"error",name:"OwnableInvalidOwner",inputs:[{name:"owner",type:"address",internalType:"address"}]},{type:"error",name:"OwnableUnauthorizedAccount",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"ReceiptBadgeMintPayloadAlreadyClaimed",inputs:[{name:"hash",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"RouterInvalidInterface",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"RouterNotSet",inputs:[]},{type:"error",name:"RouterUnauthorizedAccount",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"StringsInsufficientHexLength",inputs:[{name:"value",type:"uint256",internalType:"uint256"},{name:"length",type:"uint256",internalType:"uint256"}]}],En=[{type:"constructor",inputs:[{name:"owner_",type:"address",internalType:"address"},{name:"identityContract_",type:"address",internalType:"address"},{name:"receiptBadgeContract_",type:"address",internalType:"address"}],stateMutability:"nonpayable"},{type:"function",name:"acceptOwnership",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"badgeOfIdentityByIndex",inputs:[{name:"identityTokenId",type:"uint256",internalType:"uint256"},{name:"index",type:"uint256",internalType:"uint256"}],outputs:[{name:"badgeId",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"badgeUri",inputs:[{name:"badgeId",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"view"},{type:"function",name:"badgesOfIdentity",inputs:[{name:"identityTokenId",type:"uint256",internalType:"uint256"},{name:"offset",type:"uint256",internalType:"uint256"},{name:"limit",type:"uint256",internalType:"uint256"}],outputs:[{name:"badgeIds",type:"uint256[]",internalType:"uint256[]"}],stateMutability:"view"},{type:"function",name:"collectionUri",inputs:[],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"pure"},{type:"function",name:"identityContract",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"metadataFormat",inputs:[],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"pure"},{type:"function",name:"mint",inputs:[{name:"payload",type:"tuple",internalType:"struct PaymentRecordBadgeMintPayload",components:[{name:"soulBoundTo",type:"tuple",internalType:"struct SoulBoundTo",components:[{name:"identityContract",type:"address",internalType:"address"},{name:"tokenId",type:"uint256",internalType:"uint256"}]},{name:"blockNumber",type:"uint256",internalType:"uint256"},{name:"payer",type:"address",internalType:"address"},{name:"chainId",type:"uint256",internalType:"uint256"},{name:"tokenAddress",type:"address",internalType:"address"},{name:"allowance",type:"uint256",internalType:"uint256"},{name:"receiptBadgeId",type:"uint256",internalType:"uint256"},{name:"salt",type:"bytes32",internalType:"bytes32"}]}],outputs:[{name:"badgeId",type:"uint256",internalType:"uint256"}],stateMutability:"nonpayable"},{type:"function",name:"owner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"ownerOf",inputs:[{name:"badgeId",type:"uint256",internalType:"uint256"}],outputs:[{name:"nftAddress",type:"address",internalType:"address"},{name:"nftTokenId",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"pendingOwner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"receiptBadgeContract",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"renounceOwnership",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"router",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"setRouter",inputs:[{name:"_newRouter",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"totalBadgesOfIdentity",inputs:[{name:"identityTokenId",type:"uint256",internalType:"uint256"}],outputs:[{name:"totalBadges",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"transferOwnership",inputs:[{name:"newOwner",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"event",name:"Mint",inputs:[{name:"badgeId",type:"uint256",indexed:!0,internalType:"uint256"},{name:"nftAddress",type:"address",indexed:!0,internalType:"address"},{name:"nftTokenId",type:"uint256",indexed:!0,internalType:"uint256"}],anonymous:!1},{type:"event",name:"OwnershipTransferStarted",inputs:[{name:"previousOwner",type:"address",indexed:!0,internalType:"address"},{name:"newOwner",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"OwnershipTransferred",inputs:[{name:"previousOwner",type:"address",indexed:!0,internalType:"address"},{name:"newOwner",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"RouterSet",inputs:[{name:"router",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"error",name:"BadgeNotMinted",inputs:[{name:"badgeId",type:"uint256",internalType:"uint256"}]},{type:"error",name:"BadgePageLimitExceeded",inputs:[{name:"limit",type:"uint256",internalType:"uint256"},{name:"maxLimit",type:"uint256",internalType:"uint256"}]},{type:"error",name:"IdentityContractMismatch",inputs:[{name:"expected",type:"address",internalType:"address"},{name:"actual",type:"address",internalType:"address"}]},{type:"error",name:"InvalidIdentityContract",inputs:[]},{type:"error",name:"OwnableInvalidOwner",inputs:[{name:"owner",type:"address",internalType:"address"}]},{type:"error",name:"OwnableUnauthorizedAccount",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"PaymentRecordBadgeMintPayloadAlreadyClaimed",inputs:[{name:"hash",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"RouterInvalidInterface",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"RouterNotSet",inputs:[]},{type:"error",name:"RouterUnauthorizedAccount",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"StringsInsufficientHexLength",inputs:[{name:"value",type:"uint256",internalType:"uint256"},{name:"length",type:"uint256",internalType:"uint256"}]}];var De=require("viem");function Mn(e){let{badgeId:t,badgeKind:n,identityContract:r,paymentIntentTrackingEntries:a}=e;if(a.length===0)return null;let s=a.filter(o=>o.status==="confirmed");if(s.length===0)return null;for(let o of s)if(o.txHash&&o.blockNumber)switch(n){case"receipt":{if((0,De.toHex)(ne(r,o.paymentIntent,BigInt(o.blockNumber),te.OneTime))===t)return o.txHash;break}case"paymentRecord":{if((0,De.toHex)(Ae(r,o.paymentIntent,BigInt(o.blockNumber),te.OneTime))===t)return o.txHash;break}}return null}var mt=require("viem");function ke(e){if(e===null||typeof e!="object")return e;if(Array.isArray(e))return e.map(ke).sort((s,o)=>{let i=JSON.stringify(s),R=JSON.stringify(o);return i<R?-1:i>R?1:0});let t=e,n=Object.keys(t).sort(),r={};for(let a of n)r[a]=ke(t[a]);return r}function ct(e){return JSON.stringify(ke(e))}function ue(e){let t=ct(e),n=new TextEncoder().encode(t);return(0,mt.keccak256)(n)}var v=class extends Error{constructor(t){super(t),this.name="OcapValidationError"}};function Cn(e,t){if(e.type!=="api")throw new v(`Unsupported resource type: ${e.type}`);if(!t.includes(e.audience))throw new v(`Audience not allowed: ${e.audience}`);if(!e.data?.endpoint||!Array.isArray(e.data.methods))throw new v("Invalid api resource: missing endpoint or methods")}function Bn(e){let{resources:t,allowedAudiences:n}=e,r=Array.isArray(t.api)?t.api:[];for(let o of r)Cn(o,n);let a={resources:{api:r}},s=ue(a);return{ocap:a,ocapId:s}}var On=300*1e3,lt="Request OCAP";function vn(e,t){let n=ue({resources:t});return`${lt}:${e}:${n}`}var Tt=(r=>(r.ACCOUNT_SERVICE="account-service",r.PAYMENT_SERVICE="payment-service",r.IDV_SERVICE="idv-service",r))(Tt||{});var It=(s=>(s[s.USER_REJECTED_REQUEST=4001]="USER_REJECTED_REQUEST",s[s.UNAUTHORIZED_ACCESS_ACCOUNT=4100]="UNAUTHORIZED_ACCESS_ACCOUNT",s[s.UNSUPPORTED_METHOD=4200]="UNSUPPORTED_METHOD",s[s.DISCONNECTED=4900]="DISCONNECTED",s[s.CHAIN_DISCONNECTED=4901]="CHAIN_DISCONNECTED",s))(It||{}),gt=(i=>(i[i.UNSUPPORTED_NON_OPTIONAL_CAPABILITY=5700]="UNSUPPORTED_NON_OPTIONAL_CAPABILITY",i[i.UNSUPPORTED_CHAIN_ID=5710]="UNSUPPORTED_CHAIN_ID",i[i.DUPLICATE_BUNDLE_ID=5720]="DUPLICATE_BUNDLE_ID",i[i.UNKNOWN_BUNDLE_ID=5730]="UNKNOWN_BUNDLE_ID",i[i.BUNDLE_TOO_LARGE=5740]="BUNDLE_TOO_LARGE",i[i.ATOMIC_READY_WALLET_REJECTED_UPGRADE=5750]="ATOMIC_READY_WALLET_REJECTED_UPGRADE",i[i.ATOMICITY_NOT_SUPPORTED=5760]="ATOMICITY_NOT_SUPPORTED",i))(gt||{}),ft=(t=>(t[t.UNAUTHORIZED_ACCESS_RESTRICTED_METHOD=4101]="UNAUTHORIZED_ACCESS_RESTRICTED_METHOD",t))(ft||{}),ht=(n=>(n[n.INTERNAL_ERROR=-32001]="INTERNAL_ERROR",n[n.NO_SECURE_CONNECTION_ESTABLISHED=-32002]="NO_SECURE_CONNECTION_ESTABLISHED",n))(ht||{}),Pt=(t=>(t[t.INVALID_PARAMS=-32602]="INVALID_PARAMS",t))(Pt||{}),Dn={4001:{code:4001,message:"User rejected the request."},4100:{code:4100,message:"The requested method and/or account has not been authorized by the user."},4200:{code:4200,message:"The Provider does not support the requested method."},4900:{code:4900,message:"The Provider is disconnected from all chains."},4901:{code:4901,message:"The Provider is not connected to the requested chain."},4101:{code:4101,message:"The specified method is not authorized for the given origin."},5700:{code:5700,message:"This wallet does not support a capability that was not marked as optional."},5710:{code:5710,message:"This wallet does not support the specified chain id."},5720:{code:5720,message:"There is already a bundle submitted with this id."},5730:{code:5730,message:"This bundle id is unknown / has not been submitted."},5740:{code:5740,message:"The call bundle is too large for the wallet to process."},5750:{code:5750,message:"The wallet can support atomicity after an upgrade, but the user rejected the upgrade."},5760:{code:5760,message:"The wallet does not support atomic execution but the request requires it."},[-32001]:{code:-32001,message:"fatal: internal error"},[-32602]:{code:4002,message:"Invalid parameters."},[-32002]:{code:-32002,message:"No secure connection established."}},kn=e=>{let t=Dn[e];return t||{code:e,message:`Unknown error code: ${e}`}},Ne=class extends Error{code;data;constructor({message:t,code:n,data:r}){super(t),this.code=n,this.data=r}};var E=class{constructor(t){this.value=t}toString(){let t=JSON.stringify(this.value);return`${this.isLeft()?"Left":"Right"}: (${t})`}fold(t,n){return this.isLeft()?t(this.value):n(this.value)}foldAsync(t,n){return this.isLeft()?t(this.value):n(this.value)}static of(t){return new me(t)}static Left(t){return new Ue(t)}static Right(t){return new me(t)}},Ue=class extends E{constructor(t){super(t)}map(t){return this}flatMap(t){return this}getOrElse(t){return t}isLeft(){return!0}isRight(){return!1}},me=class extends E{constructor(t){super(t)}map(t){return E.of(t(this.value))}flatMap(t){return t(this.value)}getOrElse(t){return this.value}isLeft(){return!1}isRight(){return!0}},Nn=e=>e instanceof E;var Un="/api/public/protocol-rpc";var Rt=(n=>(n[n.INDIVIDUAL=0]="INDIVIDUAL",n[n.BUSINESS=1]="BUSINESS",n))(Rt||{}),Hn={1:"Business",0:"Individual"};
1
+ "use strict";var le=Object.defineProperty;var At=Object.getOwnPropertyDescriptor;var wt=Object.getOwnPropertyNames;var St=Object.prototype.hasOwnProperty;var _t=(e,t)=>{for(var n in t)le(e,n,{get:t[n],enumerable:!0})},Et=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of wt(t))!St.call(e,a)&&a!==n&&le(e,a,{get:()=>t[a],enumerable:!(r=At(t,a))||r.enumerable});return e};var Mt=e=>Et(le({},"__esModule",{value:!0}),e);var jn={};_t(jn,{ACCOUNT_STATEMENT_RECEIPT_KINDS:()=>Bn,BurnAuth:()=>h,CASHIE_ACCOUNT_TYPE_LABELS:()=>Yn,CASHIE_IDENTITY_SOUL_CONTRACT_ABI:()=>En,CASHIE_IDENTITY_SOUL_EIP712_NAME:()=>Te,CASHIE_IDENTITY_SOUL_EIP712_VERSION:()=>Ie,CASHIE_JSON_DATA_URI_BASE64_PREFIX:()=>U,CASHIE_PAYMENT_RECORD_BADGE_CONTRACT_ABI:()=>Cn,CASHIE_PAYMENT_RECORD_BADGE_METADATA_FORMAT:()=>F,CASHIE_RECEIPT_BADGE_CONTRACT_ABI:()=>Mn,CASHIE_RECEIPT_BADGE_METADATA_FORMAT:()=>L,CASHIE_ROUTER_GUARD_CONTRACT_ABI:()=>_n,CASHIE_ROUTER_V1_CONTRACT_ABI:()=>Sn,CASHIE_SVG_DATA_URI_BASE64_PREFIX:()=>H,COMMON_ERROR_CODES:()=>Rt,CashieAccountType:()=>xt,CashieRouterActions:()=>pe,DEFAULT_MAX_AGE_MS:()=>Nn,EIP1193_ERROR_CODES:()=>ft,EIP5792_ERROR_CODES:()=>ht,ERC7715ValidationError:()=>G,ERC7715_ERROR_CODES:()=>Pt,Either:()=>E,FATAL_ERROR_CODES:()=>bt,IDENTITY_MINT_CONSENT_EIP712_TYPE_STRING:()=>Bt,IDENTITY_MINT_EIP712_TYPES:()=>Pe,IDENTITY_MINT_PAYLOAD_EIP712_TYPES:()=>he,IDENTITY_MINT_PAYLOAD_EIP712_TYPE_STRING:()=>Ct,IdentityIssuer:()=>Re,IdentityIssuerId:()=>$,IdentityType:()=>w,JSON_IDENTITY_TYPE_LABEL_TO_IDENTITY_TYPE:()=>Ve,OCAP_STATEMENT_PREFIX:()=>It,OcapAudiences:()=>gt,OcapValidationError:()=>v,PLAID_IDV_ERROR_MESSAGE:()=>je,PRIMARY_TYPE_IDENTITY_MINT_CONSENT:()=>fe,PRIMARY_TYPE_IDENTITY_MINT_PAYLOAD:()=>ge,PROTOCOL_RPC_PROXY_PATH:()=>Fn,PlaidIdvErrorCode:()=>Ye,ReceiptType:()=>ne,RpcError:()=>Ue,SoulManager:()=>De,addressSchema:()=>T,assertUrl:()=>N,basePaymentDetailsDataSchema:()=>ie,baseScopeSchema:()=>S,billingPeriodSchema:()=>Me,buildCashieIdentitySoulDomain:()=>be,buildIdentityCommitmentHash:()=>Dt,buildIdentityMintConsentTypedData:()=>Le,buildIdentityMintProofTypedData:()=>Fe,buildOcapId:()=>me,burnAuthSchema:()=>W,bytes32HexSchema:()=>xe,canonicalOcapPayload:()=>Tt,cashieIdentitySoulIdentityTypeJsonSchema:()=>ze,cashieIdentitySoulTokenMetadataJsonSchema:()=>te,cashieIdentitySoulTokenMetadataSchema:()=>qt,cashiePaymentRecordBadgeMetadataSchema:()=>ee,cashieReceiptBadgeMetadataSchema:()=>Q,cashieReceiptBadgeSoulBoundToSchema:()=>Ae,createPaymentRpcClient:()=>ve,decodeCashieJsonDataUriToUtf8:()=>et,decodeCashieSvgDataUriToUtf8:()=>Y,encodePaymentIntent:()=>ct,encodePaymentRecordBadgeMintPayload:()=>We,encodeReceiptBadgeMintPayload:()=>$e,erc20TokenPaymentPermissionSchema:()=>se,expiryRuleSchema:()=>K,findTransactionHashForBadgeId:()=>On,generateSalt:()=>Lt,getErrorMessage:()=>Hn,getPaymentIntentHash:()=>wn,getPaymentRecordBadgeMintPayloadHash:()=>Ke,getPermissionsInfoResultParamsSchema:()=>dt,getReceiptBadgeMintPayloadHash:()=>Ge,getSupportedExecutionPermissionsResultSchema:()=>yt,hashIdentityMintConsentTypedData:()=>Nt,hashIdentityMintProofTypedData:()=>kt,hex0xSchema:()=>A,hexSchema:()=>I,identityAccountFor:()=>vt,identityMintRuleSchema:()=>Z,identityMintSignPayloadWithSignatureSchema:()=>k,identityTokenIdFor:()=>M,identityTypeSchema:()=>J,initCodeDataSchema:()=>C,isEither:()=>Ln,parseBasePaymentDetailsData:()=>nn,parseBaseScopeSchema:()=>Yt,parseBillingPeriod:()=>en,parseCashieIdentitySoulTokenMetadata:()=>Se,parseCashieJsonDataUriJson:()=>j,parseCashieMetadataDataUri:()=>Xt,parseCashiePaymentRecordBadgeMetadata:()=>nt,parseCashiePaymentRecordBadgeMetadataFromBadgeUri:()=>Ee,parseCashieReceiptBadgeMetadata:()=>tt,parseCashieReceiptBadgeMetadataFromBadgeUri:()=>_e,parseERC20TokenPaymentPermission:()=>rn,parseExpiryRule:()=>zt,parseGetPermissionsInfoResultParams:()=>mn,parseGetSupportedExecutionPermissionsResult:()=>cn,parseIdentityMintRule:()=>Vt,parseInitCodeData:()=>on,parsePaymentDetails:()=>an,parsePaymentDetailsType:()=>tn,parsePermission:()=>sn,parsePermissionRequest:()=>dn,parsePermissionResponse:()=>yn,parsePermissionsRequest:()=>pn,parsePermissionsResponse:()=>un,parseRule:()=>$t,parseWithSchema:()=>u,paymentDetailsSchema:()=>Ce,paymentDetailsTypeSchema:()=>re,paymentRecordBadgeIdFromMintPayload:()=>Ze,paymentRecordBadgeIdFromPaymentIntent:()=>we,paymentRecordBadgeMintPayloadFromPaymentIntent:()=>Xe,permissionRequestSchema:()=>de,permissionResponseSchema:()=>Be,permissionSchema:()=>oe,permissionSchemas:()=>Qt,permissionsRequestSchema:()=>st,permissionsResponseSchema:()=>ot,plaidIdvError:()=>Ft,prepareStatement:()=>kn,receiptBadgeIdFromMintPayload:()=>qe,receiptBadgeIdFromPaymentIntent:()=>ae,receiptBadgeMintPayloadFromPaymentIntent:()=>Je,recurringPaymentDetailsSchema:()=>it,rewardItemSchema:()=>at,ruleSchema:()=>X,ruleSchemas:()=>jt,singlePaymentDetailsSchema:()=>rt,supportedExecutionPermissionInfoSchema:()=>pt,validateAndBuildOcap:()=>Dn});module.exports=Mt(jn);var w={Individual:0,Business:1},h={IssuerOnly:0,OwnerOnly:1,Both:2,Neither:3},Te="CashieIdentitySoul",Ie="1",ge="IdentityMintPayload",fe="IdentityMintConsent",Ct="IdentityMintPayload(uint8 identityType,string domain,uint8 burnAuth,bytes identityCommitment,address to)",Bt="IdentityMintConsent(uint8 identityType,string domain,uint8 burnAuth,bytes identityCommitment,address to,bytes proof)",he={IdentityMintPayload:[{name:"identityType",type:"uint8"},{name:"domain",type:"string"},{name:"burnAuth",type:"uint8"},{name:"identityCommitment",type:"bytes"},{name:"to",type:"address"}]},Pe={IdentityMintConsent:[{name:"identityType",type:"uint8"},{name:"domain",type:"string"},{name:"burnAuth",type:"uint8"},{name:"identityCommitment",type:"bytes"},{name:"to",type:"address"},{name:"proof",type:"bytes"}]};var R=require("viem"),Ot=(1n<<160n)-1n;function M(e){return(0,R.hexToBigInt)((0,R.getAddress)(e))}function vt(e){let t=e&Ot;return(0,R.getAddress)((0,R.numberToHex)(t,{size:20}))}function Dt(e,t){let n=`0x${e}-${t}`;return(0,R.keccak256)(n)}var D=require("viem");function be(e,t){let n=(0,D.hexToBigInt)(e);return{name:Te,version:Ie,chainId:n,verifyingContract:t}}function Le(e){return{domain:be(e.chainId,e.verifyingContract),types:Pe,primaryType:fe,message:e.message}}function Fe(e){return{domain:be(e.chainId,e.verifyingContract),types:he,primaryType:ge,message:e.message}}function Nt(e){let{domain:t,types:n,primaryType:r,message:a}=Le(e);return(0,D.hashTypedData)({domain:t,types:n,primaryType:r,message:a})}function kt(e){let{domain:t,types:n,primaryType:r,message:a}=Fe(e);return(0,D.hashTypedData)({domain:t,types:n,primaryType:r,message:a})}var $=(n=>(n.PLAID="plaid-identity",n.BUSINESS="business-identity",n))($||{});function Ut(){let e=globalThis.crypto;if(!e?.getRandomValues)throw new Error("Web Crypto is not available (need Node.js 19+ or a modern browser).");return e}function Ht(e){return Array.from(e,t=>t.toString(16).padStart(2,"0")).join("")}function Lt(){let e=new Uint8Array(32);return Ut().getRandomValues(e),`0x${Ht(e)}`}function N(e){if(!e)throw new Error("URL is required");if(!e.startsWith("https://")&&!e.startsWith("http://"))throw new Error("URL must start with https or http");return e.trim()}var Re=class{#e;constructor(t){t.idvProverUrl=N(t.idvProverUrl),this.#e=t}async postIdvProver(t,n){let r=this.#e.idvProverUrl,a=await fetch(`${r}/api/v1/idv/${t}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)});if(!a.ok){let s=await a.json().catch(()=>({}));throw new Error(s.error||s.error_message||`IDV request failed: ${a.statusText}`)}return a.json()}async generatePlaidIdentityProof(t){let{account:n}=t;return this.postIdvProver("generate-identity-proof",{account:n,identityIssuerId:"plaid-identity"})}async generateBusinessIdentityProof(t){let{account:n}=t;return this.postIdvProver("generate-identity-proof",{account:n,identityIssuerId:"business-identity",domain:t.domain})}async issueIdentityProof(t){if(!this.isSupportedIdentityIssuerId(t.identityIssuerId))throw new Error(`Unsupported identity issuer ID: ${t.identityIssuerId}`);switch(t.identityIssuerId){case"plaid-identity":return this.generatePlaidIdentityProof(t.params);case"business-identity":return this.generateBusinessIdentityProof(t.params)}}isSupportedIdentityIssuerId(t){return Object.values($).includes(t)}};var Ye=(a=>(a.IDV_SESSION_SUCCESS="IDV_SESSION_SUCCESS",a.IDV_SESSION_PENDING_REVIEW="IDV_SESSION_PENDING_REVIEW",a.INVALID_IDV_SESSION="INVALID_IDV_SESSION",a.IDV_MAX_FAILED_VERIFICATION_THRESHOLD_REACHED="IDV_MAX_FAILED_VERIFICATION_THRESHOLD_REACHED",a))(Ye||{}),je={IDV_SESSION_SUCCESS:"IDV session has already been completed.",IDV_SESSION_PENDING_REVIEW:"IDV session is pending review. Please wait for review.",INVALID_IDV_SESSION:"idvSession is required and must be a string.",IDV_MAX_FAILED_VERIFICATION_THRESHOLD_REACHED:"Maximum failed verification threshold reached. Please contact support."},Ft=e=>({error_code:e,error_message:je[e]});var ue=require("viem");var y=require("zod");var c=require("zod");var P=require("zod"),q=require("viem"),T=P.z.custom(e=>typeof e=="string"&&(0,q.isAddress)(e),{message:"Expected valid Ethereum address"}),I=P.z.custom(e=>typeof e=="string"&&(0,q.isHex)(e),{message:"Expected valid hex string"}),S=P.z.object({type:P.z.string(),isAdjustmentAllowed:P.z.boolean(),justification:P.z.string(),data:P.z.record(P.z.string(),P.z.unknown())}).strict(),G=class extends Error{schemaName;zodError;constructor(t,n){let r=n.issues.map(a=>{let s=a.path.length>0?` at ${a.path.join(".")}`:"";return`${a.message}${s}`}).join("; ");super(`Invalid ERC-7715 "${t}": ${r}`),this.name="ERC7715ValidationError",this.schemaName=t,this.zodError=n}};function u(e,t,n){let r=t.safeParse(n);if(!r.success)throw new G(e,r.error);return r.data}function Yt(e){return u("BaseScopeSchema",S,e)}var J=c.z.union([c.z.literal(w.Individual),c.z.literal(w.Business)]),W=c.z.union([c.z.literal(h.IssuerOnly),c.z.literal(h.OwnerOnly),c.z.literal(h.Both),c.z.literal(h.Neither)]),k=c.z.object({identityType:J,domain:c.z.string(),burnAuth:W,identityCommitment:I,to:T,proof:I,signature:I}).strict(),K=S.omit({type:!0,data:!0}).extend({type:c.z.literal("expiry"),data:c.z.object({timestamp:c.z.number().int()}).strict()}).strict(),Z=S.omit({type:!0,data:!0}).extend({type:c.z.literal("identity-mint"),data:c.z.object({identityMintPayload:k}).strict()}).strict(),X=c.z.discriminatedUnion("type",[K,Z]),jt={expiry:K,identityMint:Z};function zt(e){return u("ExpiryRule",K,e)}function Vt(e){return u("IdentityMintRule",Z,e)}function $t(e){return u("Rule",X,e)}var U="data:application/json;base64,",H="data:image/svg+xml;base64,",L="Cashie-ReceiptBadge-v1",F="Cashie-PaymentRecordBadge-v1",ze=y.z.enum(["Individual","Business"]),Ve={Individual:w.Individual,Business:w.Business},x=y.z.string().regex(/^\d+$/,"Expected decimal string"),A=y.z.string().regex(/^0x[0-9a-fA-F]+$/,"Expected non-empty 0x-prefixed hex"),xe=A.refine(e=>e.length===66,{message:"Expected 32-byte hex string (0x + 64 hex chars)"}),Ae=y.z.object({identityContract:A,tokenId:x}).strict(),Q=y.z.object({name:y.z.string(),description:y.z.string(),image:y.z.string(),soulBoundTo:Ae,receiptType:y.z.enum(["OneTime","Recurring"]),blockNumber:x,recipient:A,chainId:x,tokenAddress:A,allowance:x,salt:xe}).strict(),Gt=x.refine(e=>{let t=Number(e);return Number.isInteger(t)&&t>=h.IssuerOnly&&t<=h.Neither},{message:"burnAuth must be IERC5484 enum ordinal (0\u20133)"}).transform(e=>Number(e)),ee=y.z.object({name:y.z.string(),description:y.z.string(),image:y.z.string(),soulBoundTo:Ae,blockNumber:x,payer:A,chainId:x,tokenAddress:A,allowance:x,receiptBadgeId:x,salt:xe}).strict(),te=y.z.object({name:y.z.string(),description:y.z.string(),image:y.z.string(),identityType:ze.transform(e=>Ve[e]),domain:y.z.string(),burnAuth:Gt,identityCommitment:A}).strict(),qt=y.z.object({name:y.z.string(),description:y.z.string(),image:y.z.string(),identityType:J,domain:y.z.string(),burnAuth:W,identityCommitment:A}).strict();var m=require("viem");var ne={OneTime:0,Recurring:1},Jt=[{type:"address",name:"identityContract"},{type:"uint256",name:"tokenId"},{type:"uint8",name:"receiptType"},{type:"uint256",name:"blockNumber"},{type:"address",name:"recipient"},{type:"uint256",name:"chainId"},{type:"address",name:"tokenAddress"},{type:"uint256",name:"allowance"},{type:"bytes32",name:"salt"}];function $e(e){return(0,m.encodeAbiParameters)([...Jt],[e.soulBoundTo.identityContract,e.soulBoundTo.tokenId,e.receiptType,e.blockNumber,e.recipient,e.chainId,e.tokenAddress,e.allowance,e.salt])}function Ge(e){return(0,m.keccak256)($e(e))}function qe(e){return BigInt(Ge(e))}function Je(e,t,n,r){return{soulBoundTo:{identityContract:(0,m.getAddress)(e),tokenId:M(t.payer)},receiptType:r,blockNumber:n,recipient:(0,m.getAddress)(t.recipient),chainId:(0,m.hexToBigInt)(t.chainId),tokenAddress:(0,m.getAddress)(t.tokenAddress),allowance:(0,m.hexToBigInt)(t.allowance),salt:t.salt}}function ae(e,t,n,r){return qe(Je(e,t,n,r))}var Wt=[{type:"address",name:"identityContract"},{type:"uint256",name:"tokenId"},{type:"uint256",name:"blockNumber"},{type:"address",name:"payer"},{type:"uint256",name:"chainId"},{type:"address",name:"tokenAddress"},{type:"uint256",name:"allowance"},{type:"uint256",name:"receiptBadgeId"},{type:"bytes32",name:"salt"}];function We(e){return(0,m.encodeAbiParameters)([...Wt],[e.soulBoundTo.identityContract,e.soulBoundTo.tokenId,e.blockNumber,e.payer,e.chainId,e.tokenAddress,e.allowance,e.receiptBadgeId,e.salt])}function Ke(e){return(0,m.keccak256)(We(e))}function Ze(e){return BigInt(Ke(e))}function Xe(e,t,n,r){return{soulBoundTo:{identityContract:(0,m.getAddress)(e),tokenId:M(t.recipient)},blockNumber:n,payer:(0,m.getAddress)(t.payer),chainId:(0,m.hexToBigInt)(t.chainId),tokenAddress:(0,m.getAddress)(t.tokenAddress),allowance:(0,m.hexToBigInt)(t.allowance),receiptBadgeId:r,salt:t.salt}}function we(e,t,n,r){let a=ae(e,t,n,r);return Ze(Xe(e,t,n,a))}function Qe(e){let t=e.replace(/\s+/g,"");try{let n=atob(t),r=new Uint8Array(n.length);for(let a=0;a<n.length;a++)r[a]=n.charCodeAt(a);return new TextDecoder("utf8",{fatal:!0}).decode(r)}catch{throw new Error("Failed to Base64-decode Cashie data URI payload (invalid encoding)")}}function et(e){if(!e.startsWith(U))throw new Error(`Expected Cashie JSON data URI prefix "${U}"`);let t=e.slice(U.length);return Qe(t)}function Y(e){if(!e.startsWith(H))throw new Error(`Expected Cashie SVG data URI prefix "${H}"`);let t=e.slice(H.length);return Qe(t)}function j(e){let t=et(e);return JSON.parse(t)}function Se(e){let t=j(e);return te.parse(t)}function tt(e){let t=j(e);return Q.parse(t)}function _e(e,t){if(t!==L)throw new Error(`Expected ERC-5114 metadataFormat "${L}", received "${t}"`);return tt(e)}function nt(e){let t=j(e);return ee.parse(t)}function Ee(e,t){if(t!==F)throw new Error(`Expected ERC-5114 metadataFormat "${F}", received "${t}"`);return nt(e)}function Kt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Zt(e){if("identityType"in e)return{kind:"identitySoul",data:te.parse(e)};if("receiptType"in e)return{kind:"receiptBadge",format:L,data:Q.parse(e)};if("receiptBadgeId"in e)return{kind:"paymentRecordBadge",format:F,data:ee.parse(e)};throw new Error("Unrecognized Cashie metadata JSON (expected identityType, receiptType, or receiptBadgeId)")}function Xt(e){let t=j(e);if(!Kt(t))throw new Error("Unrecognized Cashie metadata JSON (expected identityType, receiptType, or receiptBadgeId)");return Zt(t)}var B=require("viem"),O=require("viem/chains");var d=require("zod"),ye=require("viem");var g=require("zod");var f=require("zod");var Me=f.z.enum(["weekly","monthly","annually"]),re=f.z.enum(["single","recurring"]),at=f.z.object({recipient:T,rewardAmount:I,rewardTokenAddress:T}).strict(),ie=f.z.object({allowance:I,tokenAddress:T,rewardItems:f.z.array(at).optional()}).strict(),rt=ie.extend({type:f.z.literal(re.enum.single)}).strict(),it=ie.extend({type:f.z.literal(re.enum.recurring),startDate:f.z.number().int().optional(),billingPeriod:Me}).strict(),Ce=f.z.discriminatedUnion("type",[rt,it]),se=S.omit({type:!0,data:!0}).extend({type:f.z.literal("erc20-token-payment"),data:f.z.object({recipient:T,paymentDetails:Ce}).strict()}).strict(),oe=f.z.discriminatedUnion("type",[se]),Qt={"erc20-token-payment":se};function en(e){return u("BillingPeriod",Me,e)}function tn(e){return u("PaymentDetailsType",re,e)}function nn(e){return u("BasePaymentDetailsData",ie,e)}function an(e){return u("PaymentDetails",Ce,e)}function rn(e){return u("ERC20TokenPaymentPermission",se,e)}function sn(e){return u("Permission",oe,e)}var C=g.z.object({factory:T,factoryData:I}).strict(),de=g.z.object({chainId:I,from:T.optional(),to:T,permission:oe,rules:g.z.array(X).optional()}).strict(),st=g.z.array(de),Be=de.extend({from:T,context:I,dependencies:g.z.array(C),delegationManager:T}).strict(),ot=g.z.array(Be),dt=g.z.object({chainIds:g.z.array(I)}).strict(),pt=g.z.object({chainIds:g.z.array(I),ruleTypes:g.z.array(g.z.string())}).strict(),yt=g.z.object({"erc20-token-payment":pt}).strict();function on(e){return u("InitCodeData",C,e)}function dn(e){return u("PermissionRequest",de,e)}function pn(e){return u("PermissionsRequest",st,e)}function yn(e){return u("PermissionResponse",Be,e)}function un(e){return u("PermissionsResponse",ot,e)}function mn(e){return u("GetPermissionsInfoResultParams",dt,e)}function cn(e){return u("GetSupportedExecutionPermissionsResult",yt,e)}var pe=(s=>(s.PAYMENT_C2B="payment-c2b",s.PAYMENT_B2B="payment-b2b",s.PAYMENT_B2C="payment-b2c",s.DEPOSIT="deposit",s.WITHDRAW="withdraw",s))(pe||{});var l=d.z.custom(e=>typeof e=="string"&&(0,ye.isAddress)(e),{message:"Expected valid Ethereum address"}),p=d.z.custom(e=>typeof e=="string"&&(0,ye.isHex)(e),{message:"Expected valid hex string"}),ln=d.z.custom(e=>typeof e=="number"&&Number.isInteger(e)&&e>=h.IssuerOnly&&e<=h.Neither,{message:"Expected BurnAuth enum value (0\u20133)"}),Tn=d.z.object({to:l,data:p}),z=d.z.enum(["receipt","paymentRecord"]),In=d.z.object({nftAddress:l,nftTokenId:p}),gn=d.z.object({identitySoulContract:d.z.object({address:l,badgeContracts:d.z.object({paymentRecordBadgeContract:l,receiptBadgeContract:l})})}),fn=d.z.object({signedIdentityMintPayload:k,initCodeData:C}).strict(),hn=d.z.object({recipient:l,rewardAmount:p,rewardTokenAddress:l}).strict(),Pn=d.z.object({rewardPayer:l,rewardItems:d.z.array(hn),rewardPermissionContext:p,rewardDelegationManager:l}).strict(),bn=d.z.object({action:d.z.enum(pe),chainId:p,recipient:l,payer:l,identityMintPayloads:d.z.array(k),tokenAddress:l,allowance:p,rewardIntentDetails:Pn.optional(),permissionContext:p,delegationManager:l,dependencies:d.z.array(C),salt:p}).strict().transform(e=>e),Rn=d.z.object({paymentIntent:bn,status:d.z.enum(["pending","confirmed","failed"]),txHash:p.nullable().optional(),blockNumber:p.nullable().optional()}).strict().transform(e=>e),xn={discovery_supportedSouls:gn,payment_getProtocolFeeBps:p,payment_calculateRewardAmount:p,payment_sendIntent:p,payment_getIntentStatuses:d.z.array(Rn),payment_prepareRouterCallsFromAction:d.z.array(Tn),identity_getBurnAuth:ln,identity_getTokenURI:d.z.string().nullable(),payment_sendPrePaymentSetup:p,payment_getPrePaymentSetup:fn.nullable(),badge_getOwnerOf:In,badge_getBadgeUri:d.z.string().nullable(),badge_getMetadataFormat:d.z.string(),badge_totalBadgesOfIdentity:p,badge_badgeOfIdentityByIndex:p,badge_badgesOfIdentity:d.z.array(p)},ut=d.z.tuple([d.z.object({chainHex:p,badgeId:p,badgeKind:z})]),ka={badge_getOwnerOf:ut,badge_getBadgeUri:ut,badge_getMetadataFormat:d.z.tuple([d.z.object({chainHex:p,badgeKind:z})]),badge_totalBadgesOfIdentity:d.z.tuple([d.z.object({chainHex:p,account:l,badgeKind:z})]),badge_badgeOfIdentityByIndex:d.z.tuple([d.z.object({chainHex:p,account:l,badgeKind:z,index:p})]),badge_badgesOfIdentity:d.z.tuple([d.z.object({chainHex:p,account:l,badgeKind:z,offset:p,limit:p})])};var Oe=class extends Error{method;zodError;constructor(t,n){let r=n.issues.map(a=>{let s=a.path.length>0?` at ${a.path.join(".")}`:"";return`${a.message}${s}`}).join("; ");super(`Invalid RPC response for "${t}": ${r}`),this.name="PaymentRpcResponseValidationError",this.method=t,this.zodError=n}};function mt(e,t){let n=xn[e].safeParse(t);if(!n.success)throw new Oe(e,n.error);return n.data}var ve=e=>{let t=()=>({"0xaa36a7":O.sepolia,"0x539":O.localhost,"0x7a69":O.anvil}),n=i=>{let b=(0,B.toHex)(i),V=t()[b];if(!V)throw new Error(`Chain ${b} is not supported`);return V},{url:r,chainId:a}=e,s=(0,B.createPublicClient)({chain:n(a),transport:(0,B.http)(N(r))}),o=async(i,b)=>{let V=await s.request({method:i,params:b});return mt(i,V)};return{getIdentitySoulDiscovery:i=>o("discovery_supportedSouls",i),getProtocolFeeBps:i=>o("payment_getProtocolFeeBps",i),calculateRewardAmount:i=>o("payment_calculateRewardAmount",i),sendIntent:i=>o("payment_sendIntent",i),getIntentStatuses:i=>o("payment_getIntentStatuses",i),prepareRouterCallsFromAction:i=>o("payment_prepareRouterCallsFromAction",i),getBurnAuth:i=>o("identity_getBurnAuth",i),getTokenURI:i=>o("identity_getTokenURI",i),sendPrePaymentSetup:i=>o("payment_sendPrePaymentSetup",i),getPrePaymentSetup:i=>o("payment_getPrePaymentSetup",i),getBadgeOwnerOf:i=>o("badge_getOwnerOf",i),getBadgeUri:i=>o("badge_getBadgeUri",i),getBadgeMetadataFormat:i=>o("badge_getMetadataFormat",i),getTotalBadgesOfIdentity:i=>o("badge_totalBadgesOfIdentity",i),getBadgeOfIdentityByIndex:i=>o("badge_badgeOfIdentityByIndex",i),getBadgesOfIdentity:i=>o("badge_badgesOfIdentity",i)}};var De=class{#e;#r;#i;#s;#o;#n;#t;#d=new Map;#p=new Map;#y;constructor(t){let{identityIssuer:n,cashieRpcUrl:r,chainIdHex:a}=t;this.#y=n,this.#n=ve({url:r,chainId:(0,ue.fromHex)(a,"number")}),this.#t=a}#a(){if(!this.isInitialized())throw new Error("Soul manager is not initialized")}isInitialized(){return this.#e!==void 0&&this.#r!==void 0&&this.#i!==void 0}async init(){let t=await this.#n.getIdentitySoulDiscovery([{chainHex:this.#t}]);if(!t)throw new Error("Failed to get supported souls");this.#e=t.identitySoulContract.address,this.#r=t.identitySoulContract.badgeContracts.paymentRecordBadgeContract,this.#i=t.identitySoulContract.badgeContracts.receiptBadgeContract;let[n,r]=await Promise.all([this.#n.getBadgeMetadataFormat([{chainHex:this.#t,badgeKind:"receipt"}]),this.#n.getBadgeMetadataFormat([{chainHex:this.#t,badgeKind:"paymentRecord"}])]);if(!n||!r)throw new Error("Failed to get badge metadata formats");this.#s=n,this.#o=r}async prepareIdentityMintConsent(t){if(this.#a(),!this.#e)throw new Error("Identity soul contract is not initialized");let{account:n}=t.params;if(!n)throw new Error("Account is missing from the request");let r=await this.#y.issueIdentityProof(t),{identityType:a,domain:s,burnAuth:o,identityCommitment:i,proof:b}=r;return{chainId:this.#t,verifyingContract:this.#e,message:{to:n,identityType:a,domain:s,burnAuth:o,identityCommitment:i,proof:b}}}async getCashieIdentitySoulTokenMetadata(t){if(this.#a(),!this.#e)throw new Error("Identity soul contract is not initialized");if(!t)throw new Error("Account is not initialized");let n=M(t),r=(0,ue.toHex)(n),a=await this.#n.getTokenURI([{chainHex:this.#t,tokenId:r}]);if(!a)return;let s=Se(a),o=Y(s.image);if(!o)throw new Error("Failed to decode image SVG for identity soul token metadata");return s.image=o,s}async getCashieReceiptBadgeMetadata(t){if(this.#a(),!this.#i)throw new Error("Receipt badge contract is not initialized");if(!this.#s)throw new Error("Receipt badge metadata format is not initialized");let n=this.#d.get(t);if(n)return n;let r=await this.#n.getBadgeUri([{chainHex:this.#t,badgeId:t,badgeKind:"receipt"}]);if(!r)return;let a=_e(r,this.#s),s=Y(a.image);if(!s)throw new Error("Failed to decode image SVG for receipt badge metadata");return a.image=s,this.#d.set(t,a),a}async getCashiePaymentRecordBadgeMetadata(t){if(this.#a(),!this.#r)throw new Error("Payment record badge contract is not initialized");if(!this.#o)throw new Error("Payment record badge metadata format is not initialized");let n=this.#p.get(t);if(n)return n;let r=await this.#n.getBadgeUri([{chainHex:this.#t,badgeId:t,badgeKind:"paymentRecord"}]);if(!r)return;let a=Ee(r,this.#o),s=Y(a.image);if(!s)throw new Error("Failed to decode image SVG for payment record badge metadata");return a.image=s,this.#p.set(t,a),a}};var _=require("viem"),An=[{name:"action",type:"string"},{name:"chainId",type:"uint256"},{name:"recipient",type:"address"},{name:"payer",type:"address"},{name:"rewardIntentDetails",type:"tuple",components:[{name:"rewardPayer",type:"address"},{name:"rewardItems",type:"tuple[]",components:[{name:"recipient",type:"address"},{name:"rewardAmount",type:"uint256"},{name:"rewardTokenAddress",type:"address"}]},{name:"rewardDelegationManager",type:"address"}]},{name:"tokenAddress",type:"address"},{name:"allowance",type:"uint256"},{name:"delegationManager",type:"address"},{name:"salt",type:"bytes32"}];function ct(e){let t=e.rewardIntentDetails??{rewardPayer:_.zeroAddress,rewardItems:[],rewardDelegationManager:_.zeroAddress};return(0,_.encodeAbiParameters)(An,[e.action,BigInt(e.chainId),e.recipient,e.payer,{rewardPayer:t.rewardPayer,rewardItems:t.rewardItems.map(n=>({recipient:n.recipient,rewardAmount:BigInt(n.rewardAmount),rewardTokenAddress:n.rewardTokenAddress})),rewardDelegationManager:t.rewardDelegationManager},e.tokenAddress,BigInt(e.allowance),e.delegationManager,e.salt])}function wn(e){return(0,_.keccak256)(ct(e))}var Sn=[{type:"constructor",inputs:[{name:"_initialOwner",type:"address",internalType:"address"},{name:"_treasuryFeeAddress",type:"address",internalType:"address"},{name:"_supportedPaymentTokens",type:"address[]",internalType:"address[]"},{name:"_protocolFeeBps",type:"uint256",internalType:"uint256"},{name:"_paymentProcessorFeeBps",type:"uint256",internalType:"uint256"},{name:"_rewardBps",type:"uint256",internalType:"uint256"},{name:"_protocolRewardToken",type:"address",internalType:"contract IERC20Metadata"},{name:"_stakingManager",type:"address",internalType:"contract IStakingManager"},{name:"_identitySoul",type:"address",internalType:"contract ICashieIdentitySoul"},{name:"_receiptBadge",type:"address",internalType:"contract ICashieReceiptBadge"},{name:"_paymentRecordBadge",type:"address",internalType:"contract ICashiePaymentRecordBadge"},{name:"_identityVerificationProvers",type:"address[]",internalType:"address[]"}],stateMutability:"nonpayable"},{type:"function",name:"acceptOwnership",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"addIdentityVerificationProver",inputs:[{name:"prover",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"adjustProtocolFeeBps",inputs:[{name:"_delta",type:"uint256",internalType:"uint256"},{name:"_increase",type:"bool",internalType:"bool"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"adjustRewardBps",inputs:[{name:"_delta",type:"uint256",internalType:"uint256"},{name:"_increase",type:"bool",internalType:"bool"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"calculateFee",inputs:[{name:"_amount",type:"uint256",internalType:"uint256"},{name:"_feeBps",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"pure"},{type:"function",name:"calculateReward",inputs:[{name:"_paymentTokenAmount",type:"uint256",internalType:"uint256"},{name:"_paymentTokenDecimals",type:"uint8",internalType:"uint8"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"deposit",inputs:[{name:"_recipient",type:"address",internalType:"address"},{name:"_tokenAddress",type:"address",internalType:"address"},{name:"_allowance",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"identitySoul",inputs:[],outputs:[{name:"",type:"address",internalType:"contract ICashieIdentitySoul"}],stateMutability:"view"},{type:"function",name:"identityTokenAddress",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"isIdentityVerificationProver",inputs:[{name:"prover",type:"address",internalType:"address"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isSupportedToken",inputs:[{name:"_tokenAddress",type:"address",internalType:"address"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isValidSignature",inputs:[{name:"hash",type:"bytes32",internalType:"bytes32"},{name:"signature",type:"bytes",internalType:"bytes"}],outputs:[{name:"magicValue",type:"bytes4",internalType:"bytes4"}],stateMutability:"view"},{type:"function",name:"issueIdentityToken",inputs:[{name:"payload",type:"tuple",internalType:"struct IdentityMintPayload",components:[{name:"identityType",type:"uint8",internalType:"enum IdentityType"},{name:"domain",type:"string",internalType:"string"},{name:"burnAuth",type:"uint8",internalType:"enum IERC5484.BurnAuth"},{name:"identityCommitment",type:"bytes",internalType:"bytes"},{name:"to",type:"address",internalType:"address"},{name:"proof",type:"bytes",internalType:"bytes"},{name:"signature",type:"bytes",internalType:"bytes"}]}],outputs:[{name:"tokenId",type:"uint256",internalType:"uint256"}],stateMutability:"nonpayable"},{type:"function",name:"owner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"payB2B",inputs:[{name:"_recipient",type:"address",internalType:"address"},{name:"_tokenAddress",type:"address",internalType:"address"},{name:"_allowance",type:"uint256",internalType:"uint256"},{name:"_feeBeneficiaryAddress",type:"address",internalType:"address"},{name:"_receiptBadgeRouterMintPayload",type:"tuple",internalType:"struct ReceiptBadgeRouterMintPayload",components:[{name:"salt",type:"bytes32",internalType:"bytes32"},{name:"receiptType",type:"uint8",internalType:"enum ReceiptType"}]}],outputs:[{name:"receiptBadgeId",type:"uint256",internalType:"uint256"},{name:"paymentRecordBadgeId",type:"uint256",internalType:"uint256"}],stateMutability:"nonpayable"},{type:"function",name:"payB2C",inputs:[{name:"_recipient",type:"address",internalType:"address"},{name:"_tokenAddress",type:"address",internalType:"address"},{name:"_allowance",type:"uint256",internalType:"uint256"},{name:"_feeBeneficiaryAddress",type:"address",internalType:"address"},{name:"_receiptBadgeRouterMintPayload",type:"tuple",internalType:"struct ReceiptBadgeRouterMintPayload",components:[{name:"salt",type:"bytes32",internalType:"bytes32"},{name:"receiptType",type:"uint8",internalType:"enum ReceiptType"}]}],outputs:[{name:"receiptBadgeId",type:"uint256",internalType:"uint256"},{name:"paymentRecordBadgeId",type:"uint256",internalType:"uint256"}],stateMutability:"nonpayable"},{type:"function",name:"payC2B",inputs:[{name:"_recipient",type:"address",internalType:"address"},{name:"_tokenAddress",type:"address",internalType:"address"},{name:"_allowance",type:"uint256",internalType:"uint256"},{name:"_feeBeneficiaryAddress",type:"address",internalType:"address"},{name:"_receiptBadgeRouterMintPayload",type:"tuple",internalType:"struct ReceiptBadgeRouterMintPayload",components:[{name:"salt",type:"bytes32",internalType:"bytes32"},{name:"receiptType",type:"uint8",internalType:"enum ReceiptType"}]}],outputs:[{name:"receiptBadgeId",type:"uint256",internalType:"uint256"},{name:"paymentRecordBadgeId",type:"uint256",internalType:"uint256"}],stateMutability:"nonpayable"},{type:"function",name:"paymentProcessorFeeBps",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"paymentRecordBadge",inputs:[],outputs:[{name:"",type:"address",internalType:"contract ICashiePaymentRecordBadge"}],stateMutability:"view"},{type:"function",name:"pendingOwner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"protocolFeeBps",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"receiptBadge",inputs:[],outputs:[{name:"",type:"address",internalType:"contract ICashieReceiptBadge"}],stateMutability:"view"},{type:"function",name:"receiptBadgeAddress",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"registerToken",inputs:[{name:"_tokenAddress",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"removeIdentityVerificationProver",inputs:[{name:"prover",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"renounceOwnership",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"reward",inputs:[{name:"_rewards",type:"tuple[]",internalType:"struct RewardItem[]",components:[{name:"recipient",type:"address",internalType:"address"},{name:"rewardAmount",type:"uint256",internalType:"uint256"},{name:"rewardTokenAddress",type:"address",internalType:"address"}]}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"rewardBps",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"rewardToken",inputs:[],outputs:[{name:"",type:"address",internalType:"contract IERC20Metadata"}],stateMutability:"view"},{type:"function",name:"rewardTokenAddress",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"supportedPaymentTokens",inputs:[{name:"",type:"address",internalType:"address"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"supportsInterface",inputs:[{name:"interfaceId",type:"bytes4",internalType:"bytes4"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"transferOwnership",inputs:[{name:"newOwner",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"treasuryFeeAddress",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"withdraw",inputs:[{name:"_recipient",type:"address",internalType:"address"},{name:"_tokenAddress",type:"address",internalType:"address"},{name:"_allowance",type:"uint256",internalType:"uint256"},{name:"_feeBeneficiaryAddress",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"event",name:"Deposited",inputs:[{name:"sender",type:"address",indexed:!0,internalType:"address"},{name:"recipient",type:"address",indexed:!0,internalType:"address"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"},{name:"tokenAddress",type:"address",indexed:!1,internalType:"address"}],anonymous:!1},{type:"event",name:"IdentityVerificationProverAdded",inputs:[{name:"prover",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"IdentityVerificationProverRemoved",inputs:[{name:"prover",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"IssueReward",inputs:[{name:"recipient",type:"address",indexed:!0,internalType:"address"},{name:"rewardAmount",type:"uint256",indexed:!1,internalType:"uint256"},{name:"rewardToken",type:"address",indexed:!1,internalType:"address"}],anonymous:!1},{type:"event",name:"OwnershipTransferStarted",inputs:[{name:"previousOwner",type:"address",indexed:!0,internalType:"address"},{name:"newOwner",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"OwnershipTransferred",inputs:[{name:"previousOwner",type:"address",indexed:!0,internalType:"address"},{name:"newOwner",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"Payment",inputs:[{name:"payer",type:"address",indexed:!0,internalType:"address"},{name:"receiver",type:"address",indexed:!0,internalType:"address"},{name:"feeBeneficiaryAddress",type:"address",indexed:!0,internalType:"address"},{name:"allowance",type:"uint256",indexed:!1,internalType:"uint256"},{name:"recipientAmount",type:"uint256",indexed:!1,internalType:"uint256"},{name:"protocolFee",type:"uint256",indexed:!1,internalType:"uint256"},{name:"protocolFeeBps",type:"uint256",indexed:!1,internalType:"uint256"},{name:"tokenAddress",type:"address",indexed:!1,internalType:"address"}],anonymous:!1},{type:"event",name:"ProtocolFeeBpsAdjusted",inputs:[{name:"oldFeeBps",type:"uint256",indexed:!1,internalType:"uint256"},{name:"newFeeBps",type:"uint256",indexed:!1,internalType:"uint256"},{name:"increased",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"RewardBpsAdjusted",inputs:[{name:"oldRewardBps",type:"uint256",indexed:!1,internalType:"uint256"},{name:"newRewardBps",type:"uint256",indexed:!1,internalType:"uint256"},{name:"increased",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"Withdrawn",inputs:[{name:"account",type:"address",indexed:!0,internalType:"address"},{name:"recipient",type:"address",indexed:!0,internalType:"address"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"},{name:"protocolFee",type:"uint256",indexed:!1,internalType:"uint256"},{name:"protocolFeeBps",type:"uint256",indexed:!1,internalType:"uint256"},{name:"tokenAddress",type:"address",indexed:!1,internalType:"address"}],anonymous:!1},{type:"error",name:"IdentityVerificationProverAlreadyRegistered",inputs:[{name:"prover",type:"address",internalType:"address"}]},{type:"error",name:"IdentityVerificationProverNotRegistered",inputs:[{name:"prover",type:"address",internalType:"address"}]},{type:"error",name:"InvalidIdentityVerificationProver",inputs:[]},{type:"error",name:"OwnableInvalidOwner",inputs:[{name:"owner",type:"address",internalType:"address"}]},{type:"error",name:"OwnableUnauthorizedAccount",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"PaymentAmountCannotBeZero",inputs:[]},{type:"error",name:"ProcessorNotEligible",inputs:[]},{type:"error",name:"SafeERC20FailedOperation",inputs:[{name:"token",type:"address",internalType:"address"}]},{type:"error",name:"TokenAllowanceNotApprovedForDeposit",inputs:[]},{type:"error",name:"TokenAllowanceNotApprovedForPayment",inputs:[]},{type:"error",name:"TokenAllowanceNotApprovedForReward",inputs:[{name:"token",type:"address",internalType:"address"},{name:"spender",type:"address",internalType:"address"},{name:"allowance",type:"uint256",internalType:"uint256"}]},{type:"error",name:"TokenAllowanceNotApprovedForWithdraw",inputs:[]},{type:"error",name:"TokenAlreadyRegistered",inputs:[]},{type:"error",name:"TokenNotSupported",inputs:[]}],_n=[{type:"function",name:"acceptOwnership",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"owner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"pendingOwner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"renounceOwnership",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"router",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"setRouter",inputs:[{name:"_newRouter",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"transferOwnership",inputs:[{name:"newOwner",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"event",name:"OwnershipTransferStarted",inputs:[{name:"previousOwner",type:"address",indexed:!0,internalType:"address"},{name:"newOwner",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"OwnershipTransferred",inputs:[{name:"previousOwner",type:"address",indexed:!0,internalType:"address"},{name:"newOwner",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"RouterSet",inputs:[{name:"router",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"error",name:"OwnableInvalidOwner",inputs:[{name:"owner",type:"address",internalType:"address"}]},{type:"error",name:"OwnableUnauthorizedAccount",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"RouterInvalidInterface",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"RouterNotSet",inputs:[]},{type:"error",name:"RouterUnauthorizedAccount",inputs:[{name:"account",type:"address",internalType:"address"}]}],En=[{type:"constructor",inputs:[{name:"_name",type:"string",internalType:"string"},{name:"_symbol",type:"string",internalType:"string"},{name:"_owner",type:"address",internalType:"address"}],stateMutability:"nonpayable"},{type:"function",name:"DOMAIN_VERSION",inputs:[],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"view"},{type:"function",name:"NAME",inputs:[],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"view"},{type:"function",name:"acceptOwnership",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"approve",inputs:[{name:"to",type:"address",internalType:"address"},{name:"tokenId",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"pure"},{type:"function",name:"balanceOf",inputs:[{name:"owner",type:"address",internalType:"address"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"burnAuth",inputs:[{name:"tokenId",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"uint8",internalType:"enum IERC5484.BurnAuth"}],stateMutability:"view"},{type:"function",name:"burnIdentity",inputs:[{name:"tokenId",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"eip712Domain",inputs:[],outputs:[{name:"fields",type:"bytes1",internalType:"bytes1"},{name:"name",type:"string",internalType:"string"},{name:"version",type:"string",internalType:"string"},{name:"chainId",type:"uint256",internalType:"uint256"},{name:"verifyingContract",type:"address",internalType:"address"},{name:"salt",type:"bytes32",internalType:"bytes32"},{name:"extensions",type:"uint256[]",internalType:"uint256[]"}],stateMutability:"view"},{type:"function",name:"getApproved",inputs:[{name:"tokenId",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"getDomainHash",inputs:[],outputs:[{name:"",type:"bytes32",internalType:"bytes32"}],stateMutability:"view"},{type:"function",name:"isApprovedForAll",inputs:[{name:"owner",type:"address",internalType:"address"},{name:"operator",type:"address",internalType:"address"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"mintIdentity",inputs:[{name:"payload",type:"tuple",internalType:"struct IdentityMintPayload",components:[{name:"identityType",type:"uint8",internalType:"enum IdentityType"},{name:"domain",type:"string",internalType:"string"},{name:"burnAuth",type:"uint8",internalType:"enum IERC5484.BurnAuth"},{name:"identityCommitment",type:"bytes",internalType:"bytes"},{name:"to",type:"address",internalType:"address"},{name:"proof",type:"bytes",internalType:"bytes"},{name:"signature",type:"bytes",internalType:"bytes"}]}],outputs:[{name:"tokenId",type:"uint256",internalType:"uint256"}],stateMutability:"nonpayable"},{type:"function",name:"name",inputs:[],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"view"},{type:"function",name:"owner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"ownerOf",inputs:[{name:"tokenId",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"pendingOwner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"renounceOwnership",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"router",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"safeTransferFrom",inputs:[{name:"from",type:"address",internalType:"address"},{name:"to",type:"address",internalType:"address"},{name:"tokenId",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"safeTransferFrom",inputs:[{name:"from",type:"address",internalType:"address"},{name:"to",type:"address",internalType:"address"},{name:"tokenId",type:"uint256",internalType:"uint256"},{name:"_data",type:"bytes",internalType:"bytes"}],outputs:[],stateMutability:"pure"},{type:"function",name:"setApprovalForAll",inputs:[{name:"operator",type:"address",internalType:"address"},{name:"approved",type:"bool",internalType:"bool"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setRouter",inputs:[{name:"_newRouter",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"supportsInterface",inputs:[{name:"interfaceId",type:"bytes4",internalType:"bytes4"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"symbol",inputs:[],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"view"},{type:"function",name:"tokenIdFor",inputs:[{name:"account",type:"address",internalType:"address"}],outputs:[{name:"tokenId",type:"uint256",internalType:"uint256"}],stateMutability:"pure"},{type:"function",name:"tokenURI",inputs:[{name:"tokenId",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"view"},{type:"function",name:"transferFrom",inputs:[{name:"from",type:"address",internalType:"address"},{name:"to",type:"address",internalType:"address"},{name:"tokenId",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"pure"},{type:"function",name:"transferOwnership",inputs:[{name:"newOwner",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"event",name:"Approval",inputs:[{name:"owner",type:"address",indexed:!0,internalType:"address"},{name:"approved",type:"address",indexed:!0,internalType:"address"},{name:"tokenId",type:"uint256",indexed:!0,internalType:"uint256"}],anonymous:!1},{type:"event",name:"ApprovalForAll",inputs:[{name:"owner",type:"address",indexed:!0,internalType:"address"},{name:"operator",type:"address",indexed:!0,internalType:"address"},{name:"approved",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"Burned",inputs:[{name:"from",type:"address",indexed:!0,internalType:"address"},{name:"tokenId",type:"uint256",indexed:!0,internalType:"uint256"},{name:"auth",type:"uint8",indexed:!1,internalType:"enum IERC5484.BurnAuth"}],anonymous:!1},{type:"event",name:"EIP712DomainChanged",inputs:[],anonymous:!1},{type:"event",name:"Issued",inputs:[{name:"from",type:"address",indexed:!0,internalType:"address"},{name:"to",type:"address",indexed:!0,internalType:"address"},{name:"tokenId",type:"uint256",indexed:!0,internalType:"uint256"},{name:"burnAuth",type:"uint8",indexed:!1,internalType:"enum IERC5484.BurnAuth"}],anonymous:!1},{type:"event",name:"OwnershipTransferStarted",inputs:[{name:"previousOwner",type:"address",indexed:!0,internalType:"address"},{name:"newOwner",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"OwnershipTransferred",inputs:[{name:"previousOwner",type:"address",indexed:!0,internalType:"address"},{name:"newOwner",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"RouterSet",inputs:[{name:"router",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"SetDomain",inputs:[{name:"domainHash",type:"bytes32",indexed:!0,internalType:"bytes32"},{name:"name",type:"string",indexed:!1,internalType:"string"},{name:"domainVersion",type:"string",indexed:!1,internalType:"string"},{name:"chainId",type:"uint256",indexed:!1,internalType:"uint256"},{name:"contractAddress",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"Transfer",inputs:[{name:"from",type:"address",indexed:!0,internalType:"address"},{name:"to",type:"address",indexed:!0,internalType:"address"},{name:"tokenId",type:"uint256",indexed:!0,internalType:"uint256"}],anonymous:!1},{type:"error",name:"BurnAuthNotSupported",inputs:[]},{type:"error",name:"ERC721IncorrectOwner",inputs:[{name:"sender",type:"address",internalType:"address"},{name:"tokenId",type:"uint256",internalType:"uint256"},{name:"owner",type:"address",internalType:"address"}]},{type:"error",name:"ERC721InsufficientApproval",inputs:[{name:"operator",type:"address",internalType:"address"},{name:"tokenId",type:"uint256",internalType:"uint256"}]},{type:"error",name:"ERC721InvalidApprover",inputs:[{name:"approver",type:"address",internalType:"address"}]},{type:"error",name:"ERC721InvalidOperator",inputs:[{name:"operator",type:"address",internalType:"address"}]},{type:"error",name:"ERC721InvalidOwner",inputs:[{name:"owner",type:"address",internalType:"address"}]},{type:"error",name:"ERC721InvalidReceiver",inputs:[{name:"receiver",type:"address",internalType:"address"}]},{type:"error",name:"ERC721InvalidSender",inputs:[{name:"sender",type:"address",internalType:"address"}]},{type:"error",name:"ERC721NonTransferable",inputs:[]},{type:"error",name:"ERC721NonexistentToken",inputs:[{name:"tokenId",type:"uint256",internalType:"uint256"}]},{type:"error",name:"InvalidBurnAuth",inputs:[{name:"tokenId",type:"uint256",internalType:"uint256"}]},{type:"error",name:"InvalidIdentityDomain",inputs:[]},{type:"error",name:"InvalidIdentityProof",inputs:[]},{type:"error",name:"InvalidIdentitySignature",inputs:[]},{type:"error",name:"InvalidShortString",inputs:[]},{type:"error",name:"OwnableInvalidOwner",inputs:[{name:"owner",type:"address",internalType:"address"}]},{type:"error",name:"OwnableUnauthorizedAccount",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"RouterInvalidInterface",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"RouterNotSet",inputs:[]},{type:"error",name:"RouterUnauthorizedAccount",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"RouterUnauthorizedBurn",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"StringTooLong",inputs:[{name:"str",type:"string",internalType:"string"}]}],Mn=[{type:"constructor",inputs:[{name:"owner_",type:"address",internalType:"address"},{name:"identityContract_",type:"address",internalType:"address"}],stateMutability:"nonpayable"},{type:"function",name:"acceptOwnership",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"badgeOfIdentityByIndex",inputs:[{name:"identityTokenId",type:"uint256",internalType:"uint256"},{name:"index",type:"uint256",internalType:"uint256"}],outputs:[{name:"badgeId",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"badgeUri",inputs:[{name:"badgeId",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"view"},{type:"function",name:"badgesOfIdentity",inputs:[{name:"identityTokenId",type:"uint256",internalType:"uint256"},{name:"offset",type:"uint256",internalType:"uint256"},{name:"limit",type:"uint256",internalType:"uint256"}],outputs:[{name:"badgeIds",type:"uint256[]",internalType:"uint256[]"}],stateMutability:"view"},{type:"function",name:"collectionUri",inputs:[],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"pure"},{type:"function",name:"identityContract",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"metadataFormat",inputs:[],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"pure"},{type:"function",name:"mint",inputs:[{name:"payload",type:"tuple",internalType:"struct ReceiptBadgeMintPayload",components:[{name:"soulBoundTo",type:"tuple",internalType:"struct SoulBoundTo",components:[{name:"identityContract",type:"address",internalType:"address"},{name:"tokenId",type:"uint256",internalType:"uint256"}]},{name:"receiptType",type:"uint8",internalType:"enum ReceiptType"},{name:"blockNumber",type:"uint256",internalType:"uint256"},{name:"recipient",type:"address",internalType:"address"},{name:"chainId",type:"uint256",internalType:"uint256"},{name:"tokenAddress",type:"address",internalType:"address"},{name:"allowance",type:"uint256",internalType:"uint256"},{name:"salt",type:"bytes32",internalType:"bytes32"}]}],outputs:[{name:"badgeId",type:"uint256",internalType:"uint256"}],stateMutability:"nonpayable"},{type:"function",name:"owner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"ownerOf",inputs:[{name:"badgeId",type:"uint256",internalType:"uint256"}],outputs:[{name:"nftAddress",type:"address",internalType:"address"},{name:"nftTokenId",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"pendingOwner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"renounceOwnership",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"router",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"setRouter",inputs:[{name:"_newRouter",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"totalBadgesOfIdentity",inputs:[{name:"identityTokenId",type:"uint256",internalType:"uint256"}],outputs:[{name:"totalBadges",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"transferOwnership",inputs:[{name:"newOwner",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"event",name:"Mint",inputs:[{name:"badgeId",type:"uint256",indexed:!0,internalType:"uint256"},{name:"nftAddress",type:"address",indexed:!0,internalType:"address"},{name:"nftTokenId",type:"uint256",indexed:!0,internalType:"uint256"}],anonymous:!1},{type:"event",name:"OwnershipTransferStarted",inputs:[{name:"previousOwner",type:"address",indexed:!0,internalType:"address"},{name:"newOwner",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"OwnershipTransferred",inputs:[{name:"previousOwner",type:"address",indexed:!0,internalType:"address"},{name:"newOwner",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"RouterSet",inputs:[{name:"router",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"error",name:"BadgeNotMinted",inputs:[{name:"badgeId",type:"uint256",internalType:"uint256"}]},{type:"error",name:"BadgePageLimitExceeded",inputs:[{name:"limit",type:"uint256",internalType:"uint256"},{name:"maxLimit",type:"uint256",internalType:"uint256"}]},{type:"error",name:"IdentityContractMismatch",inputs:[{name:"expected",type:"address",internalType:"address"},{name:"actual",type:"address",internalType:"address"}]},{type:"error",name:"InvalidIdentityContract",inputs:[]},{type:"error",name:"OwnableInvalidOwner",inputs:[{name:"owner",type:"address",internalType:"address"}]},{type:"error",name:"OwnableUnauthorizedAccount",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"ReceiptBadgeMintPayloadAlreadyClaimed",inputs:[{name:"hash",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"RouterInvalidInterface",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"RouterNotSet",inputs:[]},{type:"error",name:"RouterUnauthorizedAccount",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"StringsInsufficientHexLength",inputs:[{name:"value",type:"uint256",internalType:"uint256"},{name:"length",type:"uint256",internalType:"uint256"}]}],Cn=[{type:"constructor",inputs:[{name:"owner_",type:"address",internalType:"address"},{name:"identityContract_",type:"address",internalType:"address"},{name:"receiptBadgeContract_",type:"address",internalType:"address"}],stateMutability:"nonpayable"},{type:"function",name:"acceptOwnership",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"badgeOfIdentityByIndex",inputs:[{name:"identityTokenId",type:"uint256",internalType:"uint256"},{name:"index",type:"uint256",internalType:"uint256"}],outputs:[{name:"badgeId",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"badgeUri",inputs:[{name:"badgeId",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"view"},{type:"function",name:"badgesOfIdentity",inputs:[{name:"identityTokenId",type:"uint256",internalType:"uint256"},{name:"offset",type:"uint256",internalType:"uint256"},{name:"limit",type:"uint256",internalType:"uint256"}],outputs:[{name:"badgeIds",type:"uint256[]",internalType:"uint256[]"}],stateMutability:"view"},{type:"function",name:"collectionUri",inputs:[],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"pure"},{type:"function",name:"identityContract",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"metadataFormat",inputs:[],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"pure"},{type:"function",name:"mint",inputs:[{name:"payload",type:"tuple",internalType:"struct PaymentRecordBadgeMintPayload",components:[{name:"soulBoundTo",type:"tuple",internalType:"struct SoulBoundTo",components:[{name:"identityContract",type:"address",internalType:"address"},{name:"tokenId",type:"uint256",internalType:"uint256"}]},{name:"blockNumber",type:"uint256",internalType:"uint256"},{name:"payer",type:"address",internalType:"address"},{name:"chainId",type:"uint256",internalType:"uint256"},{name:"tokenAddress",type:"address",internalType:"address"},{name:"allowance",type:"uint256",internalType:"uint256"},{name:"receiptBadgeId",type:"uint256",internalType:"uint256"},{name:"salt",type:"bytes32",internalType:"bytes32"}]}],outputs:[{name:"badgeId",type:"uint256",internalType:"uint256"}],stateMutability:"nonpayable"},{type:"function",name:"owner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"ownerOf",inputs:[{name:"badgeId",type:"uint256",internalType:"uint256"}],outputs:[{name:"nftAddress",type:"address",internalType:"address"},{name:"nftTokenId",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"pendingOwner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"receiptBadgeContract",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"renounceOwnership",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"router",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"setRouter",inputs:[{name:"_newRouter",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"totalBadgesOfIdentity",inputs:[{name:"identityTokenId",type:"uint256",internalType:"uint256"}],outputs:[{name:"totalBadges",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"transferOwnership",inputs:[{name:"newOwner",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"event",name:"Mint",inputs:[{name:"badgeId",type:"uint256",indexed:!0,internalType:"uint256"},{name:"nftAddress",type:"address",indexed:!0,internalType:"address"},{name:"nftTokenId",type:"uint256",indexed:!0,internalType:"uint256"}],anonymous:!1},{type:"event",name:"OwnershipTransferStarted",inputs:[{name:"previousOwner",type:"address",indexed:!0,internalType:"address"},{name:"newOwner",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"OwnershipTransferred",inputs:[{name:"previousOwner",type:"address",indexed:!0,internalType:"address"},{name:"newOwner",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"RouterSet",inputs:[{name:"router",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"error",name:"BadgeNotMinted",inputs:[{name:"badgeId",type:"uint256",internalType:"uint256"}]},{type:"error",name:"BadgePageLimitExceeded",inputs:[{name:"limit",type:"uint256",internalType:"uint256"},{name:"maxLimit",type:"uint256",internalType:"uint256"}]},{type:"error",name:"IdentityContractMismatch",inputs:[{name:"expected",type:"address",internalType:"address"},{name:"actual",type:"address",internalType:"address"}]},{type:"error",name:"InvalidIdentityContract",inputs:[]},{type:"error",name:"OwnableInvalidOwner",inputs:[{name:"owner",type:"address",internalType:"address"}]},{type:"error",name:"OwnableUnauthorizedAccount",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"PaymentRecordBadgeMintPayloadAlreadyClaimed",inputs:[{name:"hash",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"RouterInvalidInterface",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"RouterNotSet",inputs:[]},{type:"error",name:"RouterUnauthorizedAccount",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"StringsInsufficientHexLength",inputs:[{name:"value",type:"uint256",internalType:"uint256"},{name:"length",type:"uint256",internalType:"uint256"}]}];var Bn=["payments","deposits","withdrawals","rewards"];var Ne=require("viem");function On(e){let{badgeId:t,badgeKind:n,identityContract:r,paymentIntentTrackingEntries:a}=e;if(a.length===0)return null;let s=a.filter(o=>o.status==="confirmed");if(s.length===0)return null;for(let o of s)if(o.txHash&&o.blockNumber)switch(n){case"receipt":{if((0,Ne.toHex)(ae(r,o.paymentIntent,BigInt(o.blockNumber),ne.OneTime))===t)return o.txHash;break}case"paymentRecord":{if((0,Ne.toHex)(we(r,o.paymentIntent,BigInt(o.blockNumber),ne.OneTime))===t)return o.txHash;break}}return null}var lt=require("viem");function ke(e){if(e===null||typeof e!="object")return e;if(Array.isArray(e))return e.map(ke).sort((s,o)=>{let i=JSON.stringify(s),b=JSON.stringify(o);return i<b?-1:i>b?1:0});let t=e,n=Object.keys(t).sort(),r={};for(let a of n)r[a]=ke(t[a]);return r}function Tt(e){return JSON.stringify(ke(e))}function me(e){let t=Tt(e),n=new TextEncoder().encode(t);return(0,lt.keccak256)(n)}var v=class extends Error{constructor(t){super(t),this.name="OcapValidationError"}};function vn(e,t){if(e.type!=="api")throw new v(`Unsupported resource type: ${e.type}`);if(!t.includes(e.audience))throw new v(`Audience not allowed: ${e.audience}`);if(!e.data?.endpoint||!Array.isArray(e.data.methods))throw new v("Invalid api resource: missing endpoint or methods")}function Dn(e){let{resources:t,allowedAudiences:n}=e,r=Array.isArray(t.api)?t.api:[];for(let o of r)vn(o,n);let a={resources:{api:r}},s=me(a);return{ocap:a,ocapId:s}}var Nn=300*1e3,It="Request OCAP";function kn(e,t){let n=me({resources:t});return`${It}:${e}:${n}`}var gt=(r=>(r.ACCOUNT_SERVICE="account-service",r.PAYMENT_SERVICE="payment-service",r.IDV_SERVICE="idv-service",r))(gt||{});var ft=(s=>(s[s.USER_REJECTED_REQUEST=4001]="USER_REJECTED_REQUEST",s[s.UNAUTHORIZED_ACCESS_ACCOUNT=4100]="UNAUTHORIZED_ACCESS_ACCOUNT",s[s.UNSUPPORTED_METHOD=4200]="UNSUPPORTED_METHOD",s[s.DISCONNECTED=4900]="DISCONNECTED",s[s.CHAIN_DISCONNECTED=4901]="CHAIN_DISCONNECTED",s))(ft||{}),ht=(i=>(i[i.UNSUPPORTED_NON_OPTIONAL_CAPABILITY=5700]="UNSUPPORTED_NON_OPTIONAL_CAPABILITY",i[i.UNSUPPORTED_CHAIN_ID=5710]="UNSUPPORTED_CHAIN_ID",i[i.DUPLICATE_BUNDLE_ID=5720]="DUPLICATE_BUNDLE_ID",i[i.UNKNOWN_BUNDLE_ID=5730]="UNKNOWN_BUNDLE_ID",i[i.BUNDLE_TOO_LARGE=5740]="BUNDLE_TOO_LARGE",i[i.ATOMIC_READY_WALLET_REJECTED_UPGRADE=5750]="ATOMIC_READY_WALLET_REJECTED_UPGRADE",i[i.ATOMICITY_NOT_SUPPORTED=5760]="ATOMICITY_NOT_SUPPORTED",i))(ht||{}),Pt=(t=>(t[t.UNAUTHORIZED_ACCESS_RESTRICTED_METHOD=4101]="UNAUTHORIZED_ACCESS_RESTRICTED_METHOD",t))(Pt||{}),bt=(n=>(n[n.INTERNAL_ERROR=-32001]="INTERNAL_ERROR",n[n.NO_SECURE_CONNECTION_ESTABLISHED=-32002]="NO_SECURE_CONNECTION_ESTABLISHED",n))(bt||{}),Rt=(t=>(t[t.INVALID_PARAMS=-32602]="INVALID_PARAMS",t))(Rt||{}),Un={4001:{code:4001,message:"User rejected the request."},4100:{code:4100,message:"The requested method and/or account has not been authorized by the user."},4200:{code:4200,message:"The Provider does not support the requested method."},4900:{code:4900,message:"The Provider is disconnected from all chains."},4901:{code:4901,message:"The Provider is not connected to the requested chain."},4101:{code:4101,message:"The specified method is not authorized for the given origin."},5700:{code:5700,message:"This wallet does not support a capability that was not marked as optional."},5710:{code:5710,message:"This wallet does not support the specified chain id."},5720:{code:5720,message:"There is already a bundle submitted with this id."},5730:{code:5730,message:"This bundle id is unknown / has not been submitted."},5740:{code:5740,message:"The call bundle is too large for the wallet to process."},5750:{code:5750,message:"The wallet can support atomicity after an upgrade, but the user rejected the upgrade."},5760:{code:5760,message:"The wallet does not support atomic execution but the request requires it."},[-32001]:{code:-32001,message:"fatal: internal error"},[-32602]:{code:4002,message:"Invalid parameters."},[-32002]:{code:-32002,message:"No secure connection established."}},Hn=e=>{let t=Un[e];return t||{code:e,message:`Unknown error code: ${e}`}},Ue=class extends Error{code;data;constructor({message:t,code:n,data:r}){super(t),this.code=n,this.data=r}};var E=class{constructor(t){this.value=t}toString(){let t=JSON.stringify(this.value);return`${this.isLeft()?"Left":"Right"}: (${t})`}fold(t,n){return this.isLeft()?t(this.value):n(this.value)}foldAsync(t,n){return this.isLeft()?t(this.value):n(this.value)}static of(t){return new ce(t)}static Left(t){return new He(t)}static Right(t){return new ce(t)}},He=class extends E{constructor(t){super(t)}map(t){return this}flatMap(t){return this}getOrElse(t){return t}isLeft(){return!0}isRight(){return!1}},ce=class extends E{constructor(t){super(t)}map(t){return E.of(t(this.value))}flatMap(t){return t(this.value)}getOrElse(t){return this.value}isLeft(){return!1}isRight(){return!0}},Ln=e=>e instanceof E;var Fn="/api/public/protocol-rpc";var xt=(n=>(n[n.INDIVIDUAL=0]="INDIVIDUAL",n[n.BUSINESS=1]="BUSINESS",n))(xt||{}),Yn={1:"Business",0:"Individual"};
2
2
  //# sourceMappingURL=index.cjs.map