@cashie/core-lib 1.0.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.
Files changed (68) hide show
  1. package/README.md +9 -0
  2. package/dist/abi/abi.d.ts +2620 -0
  3. package/dist/abi/index.d.ts +1 -0
  4. package/dist/backend/auth/index.d.ts +4 -0
  5. package/dist/backend/auth/jwt.types.d.ts +3 -0
  6. package/dist/backend/auth/ocap/ocap-build.d.ts +35 -0
  7. package/dist/backend/auth/ocap/ocap-types.d.ts +87 -0
  8. package/dist/backend/auth/siwe.types.d.ts +18 -0
  9. package/dist/backend/blockchain/index.d.ts +1 -0
  10. package/dist/backend/blockchain/types.d.ts +11 -0
  11. package/dist/backend/contracts/badge.types.d.ts +25 -0
  12. package/dist/backend/contracts/balance.types.d.ts +32 -0
  13. package/dist/backend/contracts/event.types.d.ts +34 -0
  14. package/dist/backend/contracts/index.d.ts +4 -0
  15. package/dist/backend/contracts/receipt.types.d.ts +55 -0
  16. package/dist/backend/index.d.ts +4 -0
  17. package/dist/backend/tx-tracking/index.d.ts +1 -0
  18. package/dist/backend/tx-tracking/types.d.ts +41 -0
  19. package/dist/client/index.d.ts +2 -0
  20. package/dist/client/payment-client.d.ts +30 -0
  21. package/dist/client/schemas.d.ts +55 -0
  22. package/dist/client/types.d.ts +163 -0
  23. package/dist/data/cashieDataUrl.d.ts +79 -0
  24. package/dist/data/encoder.d.ts +130 -0
  25. package/dist/data/index.d.ts +3 -0
  26. package/dist/data/types.d.ts +116 -0
  27. package/dist/erc-7715/common.types.d.ts +37 -0
  28. package/dist/erc-7715/index.d.ts +4 -0
  29. package/dist/erc-7715/permission/index.d.ts +2 -0
  30. package/dist/erc-7715/permission/schemas.d.ts +172 -0
  31. package/dist/erc-7715/permission/types.d.ts +27 -0
  32. package/dist/erc-7715/request/index.d.ts +2 -0
  33. package/dist/erc-7715/request/schemas.d.ts +260 -0
  34. package/dist/erc-7715/request/types.d.ts +47 -0
  35. package/dist/erc-7715/rules/index.d.ts +2 -0
  36. package/dist/erc-7715/rules/schemas.d.ts +76 -0
  37. package/dist/erc-7715/rules/types.d.ts +26 -0
  38. package/dist/identity/cashieIdentitySoulTypedData.d.ts +65 -0
  39. package/dist/identity/encoder.d.ts +24 -0
  40. package/dist/identity/index.d.ts +5 -0
  41. package/dist/identity/issuer/error/index.d.ts +1 -0
  42. package/dist/identity/issuer/error/plaidIdvErrors.d.ts +24 -0
  43. package/dist/identity/issuer/identity-issuer.d.ts +30 -0
  44. package/dist/identity/issuer/index.d.ts +3 -0
  45. package/dist/identity/issuer/types.d.ts +35 -0
  46. package/dist/identity/soul/index.d.ts +1 -0
  47. package/dist/identity/soul/soulManager.d.ts +63 -0
  48. package/dist/identity/types.d.ts +196 -0
  49. package/dist/index.cjs +2 -0
  50. package/dist/index.cjs.map +7 -0
  51. package/dist/index.d.ts +10 -0
  52. package/dist/index.mjs +2 -0
  53. package/dist/index.mjs.map +7 -0
  54. package/dist/intent/encoder.d.ts +22 -0
  55. package/dist/intent/index.d.ts +2 -0
  56. package/dist/intent/types.d.ts +88 -0
  57. package/dist/router/index.d.ts +1 -0
  58. package/dist/router/types.d.ts +12 -0
  59. package/dist/shared/either.d.ts +68 -0
  60. package/dist/shared/errorCode.d.ts +115 -0
  61. package/dist/shared/index.d.ts +3 -0
  62. package/dist/shared/types/eip-7702.types.d.ts +21 -0
  63. package/dist/shared/types/index.d.ts +3 -0
  64. package/dist/shared/types/payment-protocol.types.d.ts +17 -0
  65. package/dist/shared/types/rpc.types.d.ts +14 -0
  66. package/dist/utils/index.d.ts +1 -0
  67. package/dist/utils/utils.d.ts +17 -0
  68. package/package.json +67 -0
@@ -0,0 +1,63 @@
1
+ import { type Address, type Hex } from 'viem';
2
+ import { IdentityIssuer, IssueIdentityProofRequest } from '../issuer/index.js';
3
+ import { CashieIdentitySoulTokenMetadata, CashieReceiptBadgeMetadata, CashiePaymentRecordBadgeMetadata } from '../../data/index.js';
4
+ import { IdentityMintConsentArgs } from '../../identity/cashieIdentitySoulTypedData.js';
5
+ interface ISoulManagerConstructorArgs {
6
+ identityIssuer: IdentityIssuer;
7
+ cashieRpcUrl: string;
8
+ chainIdHex: Hex;
9
+ }
10
+ export interface ISoulManager {
11
+ /**
12
+ * Check if the soul token manager is initialized
13
+ *
14
+ * @returns True if the soul token manager is initialized, false otherwise
15
+ */
16
+ isInitialized(): boolean;
17
+ /**
18
+ * Initialize the soul manager
19
+ */
20
+ init(): Promise<void>;
21
+ /**
22
+ * Prepare identity mint consent: issuer proof plus typed-data args for the recipient to sign.
23
+ *
24
+ * @param request - The identity proof request
25
+ * @returns Consent args (`message` for recipient signing + issuer `proof`)
26
+ */
27
+ prepareIdentityMintConsent(request: IssueIdentityProofRequest): Promise<IdentityMintConsentArgs>;
28
+ /**
29
+ * Get the identity soul token metadata
30
+ *
31
+ * @param account - The account address
32
+ * @returns The identity soul token metadata
33
+ */
34
+ getCashieIdentitySoulTokenMetadata(account: Address): Promise<CashieIdentitySoulTokenMetadata | undefined>;
35
+ /**
36
+ * Get the receipt badge metadata
37
+ *
38
+ * @param badgeId - The badge id
39
+ * @returns The receipt badge metadata
40
+ */
41
+ getCashieReceiptBadgeMetadata(badgeId: Hex): Promise<CashieReceiptBadgeMetadata | undefined>;
42
+ /**
43
+ * Get the payment record badge metadata
44
+ *
45
+ * @param badgeId - The badge id
46
+ * @returns The payment record badge metadata
47
+ */
48
+ getCashiePaymentRecordBadgeMetadata(badgeId: Hex): Promise<CashiePaymentRecordBadgeMetadata | undefined>;
49
+ }
50
+ /**
51
+ * Soul manager class is responsible for managing the (ERC-5484) identity soul tokens and (ERC-5114) receipt and payment record badges
52
+ */
53
+ export declare class SoulManager implements ISoulManager {
54
+ #private;
55
+ constructor(args: ISoulManagerConstructorArgs);
56
+ isInitialized(): boolean;
57
+ init(): Promise<void>;
58
+ prepareIdentityMintConsent(request: IssueIdentityProofRequest): Promise<IdentityMintConsentArgs>;
59
+ getCashieIdentitySoulTokenMetadata(account: Address): Promise<CashieIdentitySoulTokenMetadata | undefined>;
60
+ getCashieReceiptBadgeMetadata(badgeId: Hex): Promise<CashieReceiptBadgeMetadata | undefined>;
61
+ getCashiePaymentRecordBadgeMetadata(badgeId: Hex): Promise<CashiePaymentRecordBadgeMetadata | undefined>;
62
+ }
63
+ export {};
@@ -0,0 +1,196 @@
1
+ import type { Address, Hex } from 'viem';
2
+ /**
3
+ * Mirrors the onchain `IdentityType` enum.
4
+ */
5
+ export declare const IdentityType: {
6
+ /**
7
+ * Identity soul issued to an individual
8
+ */
9
+ readonly Individual: 0;
10
+ /**
11
+ * Identity soul issued to a business
12
+ */
13
+ readonly Business: 1;
14
+ };
15
+ export type IdentityType = (typeof IdentityType)[keyof typeof IdentityType];
16
+ /**
17
+ * Mirrors `IERC5484.BurnAuth` onchain enum.
18
+ */
19
+ export declare const BurnAuth: {
20
+ /**
21
+ * Only the issuer can burn the identity token
22
+ */
23
+ readonly IssuerOnly: 0;
24
+ /**
25
+ * Only the owner can burn the identity token
26
+ */
27
+ readonly OwnerOnly: 1;
28
+ /**
29
+ * Both the issuer and the owner can burn the identity token
30
+ */
31
+ readonly Both: 2;
32
+ /**
33
+ * Neither the issuer nor the owner can burn the identity token
34
+ */
35
+ readonly Neither: 3;
36
+ };
37
+ export type BurnAuth = (typeof BurnAuth)[keyof typeof BurnAuth];
38
+ /** Must match `CashieIdentitySoul.NAME` */
39
+ export declare const CASHIE_IDENTITY_SOUL_EIP712_NAME: "CashieIdentitySoul";
40
+ /** Must match `CashieIdentitySoul.DOMAIN_VERSION` */
41
+ export declare const CASHIE_IDENTITY_SOUL_EIP712_VERSION: "1";
42
+ /**
43
+ * Issuer / Identity Verification Prover primary type (`IDENTITY_MINT_PAYLOAD_TYPEHASH`).
44
+ */
45
+ export declare const PRIMARY_TYPE_IDENTITY_MINT_PAYLOAD: "IdentityMintPayload";
46
+ /**
47
+ * Recipient consent primary type (`IDENTITY_MINT_CONSENT_TYPEHASH`).
48
+ */
49
+ export declare const PRIMARY_TYPE_IDENTITY_MINT_CONSENT: "IdentityMintConsent";
50
+ /**
51
+ * Exact EIP-712 struct type string hashed into `IDENTITY_MINT_PAYLOAD_TYPEHASH`
52
+ * (issuer proof; excludes `proof` and `signature`).
53
+ */
54
+ export declare const IDENTITY_MINT_PAYLOAD_EIP712_TYPE_STRING: "IdentityMintPayload(uint8 identityType,string domain,uint8 burnAuth,bytes identityCommitment,address to)";
55
+ /**
56
+ * Exact EIP-712 struct type string hashed into `IDENTITY_MINT_CONSENT_TYPEHASH`
57
+ * (recipient consent; includes `proof`, excludes `signature`).
58
+ */
59
+ export declare const IDENTITY_MINT_CONSENT_EIP712_TYPE_STRING: "IdentityMintConsent(uint8 identityType,string domain,uint8 burnAuth,bytes identityCommitment,address to,bytes proof)";
60
+ /**
61
+ * EIP-712 type definitions for issuer / Identity Verification Prover proof signing.
62
+ */
63
+ export declare const IDENTITY_MINT_PAYLOAD_EIP712_TYPES: {
64
+ readonly IdentityMintPayload: readonly [{
65
+ readonly name: "identityType";
66
+ readonly type: "uint8";
67
+ }, {
68
+ readonly name: "domain";
69
+ readonly type: "string";
70
+ }, {
71
+ readonly name: "burnAuth";
72
+ readonly type: "uint8";
73
+ }, {
74
+ readonly name: "identityCommitment";
75
+ readonly type: "bytes";
76
+ }, {
77
+ readonly name: "to";
78
+ readonly type: "address";
79
+ }];
80
+ };
81
+ /**
82
+ * EIP-712 type definitions for recipient mint consent (binds issuer `proof`).
83
+ * Field names and order must match {@link IDENTITY_MINT_CONSENT_EIP712_TYPE_STRING}
84
+ * and `IdentitySoulEncoderLib.hashIdentityMintConsent` in `packages/contracts`.
85
+ */
86
+ export declare const IDENTITY_MINT_EIP712_TYPES: {
87
+ readonly IdentityMintConsent: readonly [{
88
+ readonly name: "identityType";
89
+ readonly type: "uint8";
90
+ }, {
91
+ readonly name: "domain";
92
+ readonly type: "string";
93
+ }, {
94
+ readonly name: "burnAuth";
95
+ readonly type: "uint8";
96
+ }, {
97
+ readonly name: "identityCommitment";
98
+ readonly type: "bytes";
99
+ }, {
100
+ readonly name: "to";
101
+ readonly type: "address";
102
+ }, {
103
+ readonly name: "proof";
104
+ readonly type: "bytes";
105
+ }];
106
+ };
107
+ /**
108
+ * The commitment is a hex string of the commitment bytes.
109
+ * <provider>-<account>
110
+ */
111
+ export type CashieIdentityCommitment = `0x${string}-${string}`;
112
+ /**
113
+ * Payload fields the recipient signs as `IdentityMintConsent` (excludes `signature`).
114
+ * Includes issuer `proof` so consent is bound to the verification proof.
115
+ */
116
+ export type IdentityMintSignPayload = {
117
+ /**
118
+ * The on-chain identity type (`Individual` or `Business`).
119
+ */
120
+ identityType: IdentityType;
121
+ /**
122
+ * Site hostname without scheme (e.g. `merchant.example.com`).
123
+ * Empty for `Individual`; non-empty for `Business`.
124
+ */
125
+ domain: string;
126
+ /**
127
+ * The burn authorization of the identity token(ie. who can burn the identity token)
128
+ */
129
+ burnAuth: BurnAuth;
130
+ /**
131
+ * Hash over provider id and account, such as `<provider>-<account>`
132
+ */
133
+ identityCommitment: Hex;
134
+ /**
135
+ * The address of the recipient of the identity mint
136
+ */
137
+ to: Address;
138
+ /**
139
+ * Issuer EIP-1271 proof (ECDSA from an Identity Verification Prover).
140
+ */
141
+ proof: Hex;
142
+ };
143
+ /**
144
+ * Fields the Identity Verification Prover signs as `IdentityMintPayload` (excludes `proof` / `signature`).
145
+ */
146
+ export type IdentityMintProofSignPayload = Omit<IdentityMintSignPayload, 'proof'>;
147
+ /**
148
+ * The identity mint sign payload with recipient consent signature.
149
+ */
150
+ export type IdentityMintSignPayloadWithSignature = IdentityMintSignPayload & {
151
+ /**
152
+ * Recipient EIP-1271 consent signature over `IdentityMintConsent` (includes `proof`).
153
+ */
154
+ signature: Hex;
155
+ };
156
+ /**
157
+ * EIP-712 domain for `CashieIdentitySoul` (`EIP712(NAME, DOMAIN_VERSION)`).
158
+ */
159
+ export type CashieIdentitySoulEip712Domain = {
160
+ name: typeof CASHIE_IDENTITY_SOUL_EIP712_NAME;
161
+ version: typeof CASHIE_IDENTITY_SOUL_EIP712_VERSION;
162
+ chainId: bigint;
163
+ verifyingContract: Address;
164
+ };
165
+ /**
166
+ * Typed-data parameters returned by `buildIdentityMintConsentTypedData`
167
+ * for `walletClient.signTypedData` / `wallet_signTypedData_v4` (recipient consent).
168
+ */
169
+ export type IdentityMintConsentTypedData = {
170
+ domain: CashieIdentitySoulEip712Domain;
171
+ types: typeof IDENTITY_MINT_EIP712_TYPES;
172
+ primaryType: typeof PRIMARY_TYPE_IDENTITY_MINT_CONSENT;
173
+ message: IdentityMintSignPayload;
174
+ };
175
+ /**
176
+ * Typed-data parameters returned by `buildIdentityMintProofTypedData`
177
+ * for Identity Verification Prover signing (`IdentityMintPayload`).
178
+ */
179
+ export type IdentityMintProofTypedData = {
180
+ domain: CashieIdentitySoulEip712Domain;
181
+ types: typeof IDENTITY_MINT_PAYLOAD_EIP712_TYPES;
182
+ primaryType: typeof PRIMARY_TYPE_IDENTITY_MINT_PAYLOAD;
183
+ message: IdentityMintProofSignPayload;
184
+ };
185
+ /**
186
+ * The identity soul discovery object.
187
+ */
188
+ export type IdentitySoulDiscovery = {
189
+ identitySoulContract: {
190
+ address: Address;
191
+ badgeContracts: {
192
+ paymentRecordBadgeContract: Address;
193
+ receiptBadgeContract: Address;
194
+ };
195
+ };
196
+ };
package/dist/index.cjs ADDED
@@ -0,0 +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"};
2
+ //# sourceMappingURL=index.cjs.map