@cashie/core-lib 1.0.0 → 1.1.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.
- package/dist/backend/contracts/index.d.ts +1 -0
- package/dist/backend/contracts/receipt.types.d.ts +0 -24
- package/dist/backend/contracts/statement.types.d.ts +6 -0
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +4 -4
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +4 -4
- package/package.json +1 -1
|
@@ -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
|
+
};
|
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 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 Fn={};wt(Fn,{ACCOUNT_STATEMENT_RECEIPT_KINDS:()=>Mn,BurnAuth:()=>h,CASHIE_ACCOUNT_TYPE_LABELS:()=>Ln,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:()=>vn,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:()=>Hn,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:()=>Cn,generateSalt:()=>Ut,getErrorMessage:()=>Nn,getPaymentIntentHash:()=>xn,getPaymentRecordBadgeMintPayloadHash:()=>We,getPermissionsInfoResultParamsSchema:()=>ot,getReceiptBadgeMintPayloadHash:()=>Ge,getSupportedExecutionPermissionsResultSchema:()=>pt,hashIdentityMintConsentTypedData:()=>vt,hashIdentityMintProofTypedData:()=>Dt,hex0xSchema:()=>A,hexSchema:()=>T,identityAccountFor:()=>Bt,identityMintRuleSchema:()=>K,identityMintSignPayloadWithSignatureSchema:()=>N,identityTokenIdFor:()=>M,identityTypeSchema:()=>q,initCodeDataSchema:()=>C,isEither:()=>Un,parseBasePaymentDetailsData:()=>en,parseBaseScopeSchema:()=>Lt,parseBillingPeriod:()=>Xt,parseCashieIdentitySoulTokenMetadata:()=>we,parseCashieJsonDataUriJson:()=>j,parseCashieMetadataDataUri:()=>Kt,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:()=>Ke,paymentRecordBadgeIdFromPaymentIntent:()=>Ae,paymentRecordBadgeMintPayloadFromPaymentIntent:()=>Ze,permissionRequestSchema:()=>oe,permissionResponseSchema:()=>Ce,permissionSchema:()=>se,permissionSchemas:()=>Zt,permissionsRequestSchema:()=>it,permissionsResponseSchema:()=>st,plaidIdvError:()=>Ht,prepareStatement:()=>Dn,receiptBadgeIdFromMintPayload:()=>$e,receiptBadgeIdFromPaymentIntent:()=>ne,receiptBadgeMintPayloadFromPaymentIntent:()=>qe,recurringPaymentDetailsSchema:()=>rt,rewardItemSchema:()=>nt,ruleSchema:()=>Z,ruleSchemas:()=>Ft,singlePaymentDetailsSchema:()=>at,supportedExecutionPermissionInfoSchema:()=>dt,validateAndBuildOcap:()=>On});module.exports=_t(Fn);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(),K=S.omit({type:!0,data:!0}).extend({type:m.z.literal("identity-mint"),data:m.z.object({identityMintPayload:N}).strict()}).strict(),Z=m.z.discriminatedUnion("type",[W,K]),Ft={expiry:W,identityMint:K};function Yt(e){return y("ExpiryRule",W,e)}function jt(e){return y("IdentityMintRule",K,e)}function Vt(e){return y("Rule",Z,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 Ke(e){return BigInt(We(e))}function Ze(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 Ke(Ze(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 Kt(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]),Zt={"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(Z).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 Mn=["payments","deposits","withdrawals","rewards"];var De=require("viem");function Cn(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 Bn(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 On(e){let{resources:t,allowedAudiences:n}=e,r=Array.isArray(t.api)?t.api:[];for(let o of r)Bn(o,n);let a={resources:{api:r}},s=ue(a);return{ocap:a,ocapId:s}}var vn=300*1e3,lt="Request OCAP";function Dn(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||{}),kn={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."}},Nn=e=>{let t=kn[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}},Un=e=>e instanceof E;var Hn="/api/public/protocol-rpc";var Rt=(n=>(n[n.INDIVIDUAL=0]="INDIVIDUAL",n[n.BUSINESS=1]="BUSINESS",n))(Rt||{}),Ln={1:"Business",0:"Individual"};
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|