@cashie/core-lib 1.4.0 → 1.5.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/index.mjs CHANGED
@@ -1,2 +1,2 @@
1
- var P={Individual:0,Business:1},f={IssuerOnly:0,OwnerOnly:1,Both:2,Neither:3},xe="CashieIdentitySoul",Re="1",Pe="IdentityMintPayload",Me="IdentityMintConsent",Cn="IdentityMintPayload(uint8 identityType,string domain,uint8 burnAuth,bytes identityCommitment,address to)",Sn="IdentityMintConsent(uint8 identityType,string domain,uint8 burnAuth,bytes identityCommitment,address to,bytes proof)",Ee={IdentityMintPayload:[{name:"identityType",type:"uint8"},{name:"domain",type:"string"},{name:"burnAuth",type:"uint8"},{name:"identityCommitment",type:"bytes"},{name:"to",type:"address"}]},_e={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"}]};import{getAddress as we,hexToBigInt as Je,keccak256 as Ke,numberToHex as Ze}from"viem";var Xe=(1n<<160n)-1n;function S(e){return Je(we(e))}function vn(e){let t=e&Xe;return we(Ze(t,{size:20}))}function Nn(e,t){let n=`0x${e}-${t}`;return Ke(n)}import{hashTypedData as Ce,hexToBigInt as Qe}from"viem";function Se(e,t){let n=Qe(e);return{name:xe,version:Re,chainId:n,verifyingContract:t}}function et(e){return{domain:Se(e.chainId,e.verifyingContract),types:_e,primaryType:Me,message:e.message}}function tt(e){return{domain:Se(e.chainId,e.verifyingContract),types:Ee,primaryType:Pe,message:e.message}}function Hn(e){let{domain:t,types:n,primaryType:i,message:a}=et(e);return Ce({domain:t,types:n,primaryType:i,message:a})}function Fn(e){let{domain:t,types:n,primaryType:i,message:a}=tt(e);return Ce({domain:t,types:n,primaryType:i,message:a})}var J=(n=>(n.PLAID="plaid-identity",n.BUSINESS="business-identity",n))(J||{});function nt(){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 at(e){return Array.from(e,t=>t.toString(16).padStart(2,"0")).join("")}function Yn(){let e=new Uint8Array(32);return nt().getRandomValues(e),`0x${at(e)}`}function F(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 Be=class{#n;constructor(t){t.idvProverUrl=F(t.idvProverUrl),this.#n=t}async postIdvProver(t,n){let i=this.#n.idvProverUrl,a=await fetch(`${i}/api/v1/idv/${t}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)});if(!a.ok){let o=await a.json().catch(()=>({}));throw new Error(o.error||o.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(J).includes(t)}};var rt=(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))(rt||{}),it={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."},Zn=e=>({error_code:e,error_message:it[e]});import{fromHex as nn,toHex as fe}from"viem";import{z as p}from"zod";import{z as c}from"zod";import{z as A}from"zod";import{isAddress as st,isHex as ot}from"viem";var T=A.custom(e=>typeof e=="string"&&st(e),{message:"Expected valid Ethereum address"}),l=A.custom(e=>typeof e=="string"&&ot(e),{message:"Expected valid hex string"}),M=A.object({type:A.string(),isAdjustmentAllowed:A.boolean(),justification:A.string(),data:A.record(A.string(),A.unknown())}).strict(),K=class extends Error{schemaName;zodError;constructor(t,n){let i=n.issues.map(a=>{let o=a.path.length>0?` at ${a.path.join(".")}`:"";return`${a.message}${o}`}).join("; ");super(`Invalid ERC-7715 "${t}": ${i}`),this.name="ERC7715ValidationError",this.schemaName=t,this.zodError=n}};function m(e,t,n){let i=t.safeParse(n);if(!i.success)throw new K(e,i.error);return i.data}function oa(e){return m("BaseScopeSchema",M,e)}var Z=c.union([c.literal(P.Individual),c.literal(P.Business)]),X=c.union([c.literal(f.IssuerOnly),c.literal(f.OwnerOnly),c.literal(f.Both),c.literal(f.Neither)]),dt=l.refine(e=>e.length===66,{message:"Expected 32-byte hex string (0x + 64 hex chars)"}),L=c.object({identityType:Z,domain:c.string(),burnAuth:X,identityCommitment:l,to:T,proof:l,signature:l,salt:dt}).strict(),Q=M.omit({type:!0,data:!0}).extend({type:c.literal("expiry"),data:c.object({timestamp:c.number().int()}).strict()}).strict(),ee=M.omit({type:!0,data:!0}).extend({type:c.literal("identity-mint"),data:c.object({identityMintPayload:L}).strict()}).strict(),te=c.discriminatedUnion("type",[Q,ee]),ma={expiry:Q,identityMint:ee};function ca(e){return m("ExpiryRule",Q,e)}function la(e){return m("IdentityMintRule",ee,e)}function Ta(e){return m("Rule",te,e)}var j="data:application/json;base64,",Y="data:image/svg+xml;base64,",V="Cashie-ReceiptBadge-v1",z="Cashie-PaymentRecordBadge-v1",$="Cashie-MembershipBadge-v1",pt=p.enum(["Individual","Business"]),yt={Individual:P.Individual,Business:P.Business},b=p.string().regex(/^\d+$/,"Expected decimal string"),x=p.string().regex(/^0x[0-9a-fA-F]+$/,"Expected non-empty 0x-prefixed hex"),ne=x.refine(e=>e.length===66,{message:"Expected 32-byte hex string (0x + 64 hex chars)"}),ae=p.object({identityContract:x,tokenId:b}).strict(),re=p.object({name:p.string(),description:p.string(),image:p.string(),soulBoundTo:ae,receiptType:p.enum(["OneTime","Recurring"]),blockNumber:b,recipient:x,chainId:b,tokenAddress:x,allowance:b,salt:ne}).strict(),ut=b.refine(e=>{let t=Number(e);return Number.isInteger(t)&&t>=f.IssuerOnly&&t<=f.Neither},{message:"burnAuth must be IERC5484 enum ordinal (0\u20133)"}).transform(e=>Number(e)),ie=p.object({name:p.string(),description:p.string(),image:p.string(),soulBoundTo:ae,blockNumber:b,payer:x,chainId:b,tokenAddress:x,allowance:b,receiptBadgeId:b,salt:ne}).strict(),se=p.object({name:p.string(),description:p.string(),image:p.string(),soulBoundTo:ae,blockNumber:b,chainId:b,recipient:x,isMembershipActive:p.enum(["true","false"]),salt:ne}).strict(),oe=p.object({name:p.string(),description:p.string(),image:p.string(),identityType:pt.transform(e=>yt[e]),domain:p.string(),burnAuth:ut,identityCommitment:x}).strict(),ha=p.object({name:p.string(),description:p.string(),image:p.string(),identityType:Z,domain:p.string(),burnAuth:X,identityCommitment:x}).strict();import{encodeAbiParameters as de,getAddress as E,hexToBigInt as G,keccak256 as pe}from"viem";var ye={OneTime:0,Recurring:1},mt=[{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 ct(e){return de([...mt],[e.soulBoundTo.identityContract,e.soulBoundTo.tokenId,e.receiptType,e.blockNumber,e.recipient,e.chainId,e.tokenAddress,e.allowance,e.salt])}function lt(e){return pe(ct(e))}function Tt(e){return BigInt(lt(e))}function It(e,t,n,i){let{payer:a,recipient:o,tokenAddress:d,allowance:r}=t.data;return{soulBoundTo:{identityContract:E(e),tokenId:S(a)},receiptType:i,blockNumber:n,recipient:E(o),chainId:G(t.chainId),tokenAddress:E(d),allowance:G(r),salt:t.salt}}function ue(e,t,n,i){return Tt(It(e,t,n,i))}var gt=[{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 ft(e){return de([...gt],[e.soulBoundTo.identityContract,e.soulBoundTo.tokenId,e.blockNumber,e.payer,e.chainId,e.tokenAddress,e.allowance,e.receiptBadgeId,e.salt])}function bt(e){return pe(ft(e))}function ht(e){return BigInt(bt(e))}function At(e,t,n,i){let{payer:a,recipient:o,tokenAddress:d,allowance:r}=t.data;return{soulBoundTo:{identityContract:E(e),tokenId:S(o)},blockNumber:n,payer:E(a),chainId:G(t.chainId),tokenAddress:E(d),allowance:G(r),receiptBadgeId:i,salt:t.salt}}function Oe(e,t,n,i){let a=ue(e,t,n,i);return ht(At(e,t,n,a))}var xt=[{type:"address",name:"identityContract"},{type:"uint256",name:"tokenId"},{type:"uint256",name:"blockNumber"},{type:"uint256",name:"chainId"},{type:"address",name:"recipient"},{type:"bytes32",name:"salt"}];function Rt(e){return de([...xt],[e.soulBoundTo.identityContract,e.soulBoundTo.tokenId,e.blockNumber,e.chainId,e.recipient,e.salt])}function Pt(e){return pe(Rt(e))}function Pa(e){return BigInt(Pt(e))}function ve(e){let t=e.replace(/\s+/g,"");try{let n=atob(t),i=new Uint8Array(n.length);for(let a=0;a<n.length;a++)i[a]=n.charCodeAt(a);return new TextDecoder("utf8",{fatal:!0}).decode(i)}catch{throw new Error("Failed to Base64-decode Cashie data URI payload (invalid encoding)")}}function Mt(e){if(!e.startsWith(j))throw new Error(`Expected Cashie JSON data URI prefix "${j}"`);let t=e.slice(j.length);return ve(t)}function B(e){if(!e.startsWith(Y))throw new Error(`Expected Cashie SVG data URI prefix "${Y}"`);let t=e.slice(Y.length);return ve(t)}function O(e){let t=Mt(e);return JSON.parse(t)}function Ne(e){let t=O(e);return oe.parse(t)}function Et(e){let t=O(e);return re.parse(t)}function De(e,t){if(t!==V)throw new Error(`Expected ERC-5114 metadataFormat "${V}", received "${t}"`);return Et(e)}function _t(e){let t=O(e);return ie.parse(t)}function ke(e,t){if(t!==z)throw new Error(`Expected ERC-5114 metadataFormat "${z}", received "${t}"`);return _t(e)}function wt(e){let t=O(e);return se.parse(t)}function Ue(e,t){if(t!==$)throw new Error(`Expected ERC-5114 metadataFormat "${$}", received "${t}"`);return wt(e)}function Ct(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function St(e){if("identityType"in e)return{kind:"identitySoul",data:oe.parse(e)};if("receiptType"in e)return{kind:"receiptBadge",format:V,data:re.parse(e)};if("receiptBadgeId"in e)return{kind:"paymentRecordBadge",format:z,data:ie.parse(e)};if("isMembershipActive"in e)return{kind:"membershipBadge",format:$,data:se.parse(e)};throw new Error("Unrecognized Cashie metadata JSON (expected identityType, receiptType, receiptBadgeId, or isMembershipActive)")}function _a(e){let t=O(e);if(!Ct(t))throw new Error("Unrecognized Cashie metadata JSON (expected identityType, receiptType, receiptBadgeId, or isMembershipActive)");return St(t)}import{createPublicClient as Kt,http as Zt,toHex as Xt}from"viem";import{sepolia as Qt,localhost as en,anvil as tn}from"viem/chains";import{z as s}from"zod";import{isAddress as Ft,isHex as Lt}from"viem";import{z as I}from"zod";import{z as g}from"zod";var He=g.enum(["weekly","monthly","annually"]),me=g.enum(["single","recurring"]),Bt=g.object({recipient:T,rewardAmount:l,rewardTokenAddress:T}).strict(),ce=g.object({allowance:l,tokenAddress:T,rewardItems:g.array(Bt).optional()}).strict(),Ot=ce.extend({type:g.literal(me.enum.single)}).strict(),vt=ce.extend({type:g.literal(me.enum.recurring),startDate:g.number().int().optional(),billingPeriod:He}).strict(),Fe=g.discriminatedUnion("type",[Ot,vt]),le=M.omit({type:!0,data:!0}).extend({type:g.literal("erc20-token-payment"),data:g.object({recipient:T,paymentDetails:Fe}).strict()}).strict(),Te=g.discriminatedUnion("type",[le]),Da={"erc20-token-payment":le};function ka(e){return m("BillingPeriod",He,e)}function Ua(e){return m("PaymentDetailsType",me,e)}function Ha(e){return m("BasePaymentDetailsData",ce,e)}function Fa(e){return m("PaymentDetails",Fe,e)}function La(e){return m("ERC20TokenPaymentPermission",le,e)}function ja(e){return m("Permission",Te,e)}var v=I.object({factory:T,factoryData:l}).strict(),Ie=I.object({chainId:l,from:T.optional(),to:T,permission:Te,rules:I.array(te).optional()}).strict(),Nt=I.array(Ie),Le=Ie.extend({from:T,context:l,dependencies:I.array(v),delegationManager:T}).strict(),Dt=I.array(Le),kt=I.object({chainIds:I.array(l)}).strict(),Ut=I.object({chainIds:I.array(l),ruleTypes:I.array(I.string())}).strict(),Ht=I.object({"erc20-token-payment":Ut}).strict();function Wa(e){return m("InitCodeData",v,e)}function qa(e){return m("PermissionRequest",Ie,e)}function Ja(e){return m("PermissionsRequest",Nt,e)}function Ka(e){return m("PermissionResponse",Le,e)}function Za(e){return m("PermissionsResponse",Dt,e)}function Xa(e){return m("GetPermissionsInfoResultParams",kt,e)}function Qa(e){return m("GetSupportedExecutionPermissionsResult",Ht,e)}var _=(o=>(o.PAYMENT_C2B="payment-c2b",o.PAYMENT_B2B="payment-b2b",o.PAYMENT_B2C="payment-b2c",o.DEPOSIT="deposit",o.WITHDRAW="withdraw",o))(_||{}),W=(a=>(a.DEACTIVATE_ACCOUNT="deactivate-account",a.REACTIVATE_ACCOUNT="reactivate-account",a.RECOVER_ACCOUNT="recover-account",a.FREEZE_ACCOUNT="freeze-account",a))(W||{}),tr={..._,...W};var u=s.custom(e=>typeof e=="string"&&Ft(e),{message:"Expected valid Ethereum address"}),y=s.custom(e=>typeof e=="string"&&Lt(e),{message:"Expected valid hex string"}),jt=s.custom(e=>typeof e=="number"&&Number.isInteger(e)&&e>=f.IssuerOnly&&e<=f.Neither,{message:"Expected BurnAuth enum value (0\u20133)"}),Yt=s.object({to:u,data:y}),D=s.enum(["receipt","paymentRecord","membership"]),Vt=s.object({nftAddress:u,nftTokenId:y}),zt=s.object({identitySoulContract:s.object({address:u,badgeContracts:s.object({paymentRecordBadgeContract:u,receiptBadgeContract:u,membershipBadgeContract:u})})}),$t=s.object({signedIdentityMintPayload:L,initCodeData:v}).strict(),Gt=s.object({recipient:u,rewardAmount:y,rewardTokenAddress:u}).strict(),Wt=s.object({rewardPayer:u,rewardItems:s.array(Gt),rewardPermissionContext:y,rewardDelegationManager:u}).strict(),N=s.object({recipient:u,payer:u,identityMintPayloads:s.array(L),tokenAddress:u,allowance:y,rewardData:Wt.optional(),dependencies:s.array(v)}).strict(),R={chainId:y,salt:y,permissionContext:y,delegationManager:u},qt=s.discriminatedUnion("action",[s.object({action:s.literal("payment-c2b"),...R,data:N}).strict(),s.object({action:s.literal("payment-b2b"),...R,data:N}).strict(),s.object({action:s.literal("payment-b2c"),...R,data:N}).strict(),s.object({action:s.literal("deposit"),...R,data:N}).strict(),s.object({action:s.literal("withdraw"),...R,data:N}).strict(),s.object({action:s.literal("deactivate-account"),...R,data:s.object({accountAddress:u,permissionContexts:s.array(y)}).strict()}).strict(),s.object({action:s.literal("recover-account"),...R,data:s.object({accountAddress:u}).strict()}).strict(),s.object({action:s.literal("freeze-account"),...R,data:s.object({accountAddress:u,timestamp:s.number().int()}).strict()}).strict(),s.object({action:s.literal("reactivate-account"),...R,data:s.object({accountAddress:u}).strict()}).strict()]).transform(e=>e),je=s.object({intent:qt,status:s.enum(["pending","confirmed","failed"]),txHash:y.nullable().optional(),blockNumber:y.nullable().optional()}).strict().transform(e=>e),Jt={payment_getProtocolFeeBps:y,payment_calculateRewardAmount:y,payment_prepareRouterCallsFromAction:s.array(Yt),payment_sendPrePaymentSetup:y,payment_getPrePaymentSetup:$t.nullable(),cashie_sendIntent:y,cashie_getIntentStatus:je.nullable(),cashie_getIntentStatuses:s.array(je),discovery_supportedSouls:zt,identity_getBurnAuth:jt,identity_getTokenURI:s.string().nullable(),badge_getOwnerOf:Vt,badge_getBadgeUri:s.string().nullable(),badge_getMetadataFormat:s.string(),badge_totalBadgesOfIdentity:y,badge_badgeOfIdentityByIndex:y,badge_badgesOfIdentity:s.array(y)},Ye=s.tuple([s.object({chainHex:y,badgeId:y,badgeKind:D})]),pr={badge_getOwnerOf:Ye,badge_getBadgeUri:Ye,badge_getMetadataFormat:s.tuple([s.object({chainHex:y,badgeKind:D})]),badge_totalBadgesOfIdentity:s.tuple([s.object({chainHex:y,account:u,badgeKind:D})]),badge_badgeOfIdentityByIndex:s.tuple([s.object({chainHex:y,account:u,badgeKind:D,index:y})]),badge_badgesOfIdentity:s.tuple([s.object({chainHex:y,account:u,badgeKind:D,offset:y,limit:y})])};var ge=class extends Error{method;zodError;constructor(t,n){let i=n.issues.map(a=>{let o=a.path.length>0?` at ${a.path.join(".")}`:"";return`${a.message}${o}`}).join("; ");super(`Invalid RPC response for "${t}": ${i}`),this.name="PaymentRpcResponseValidationError",this.method=t,this.zodError=n}};function Ve(e,t){let n=Jt[e].safeParse(t);if(!n.success)throw new ge(e,n.error);return n.data}var ze=e=>{let t=()=>({"0xaa36a7":Qt,"0x539":en,"0x7a69":tn}),n=r=>{let h=Xt(r),H=t()[h];if(!H)throw new Error(`Chain ${h} is not supported`);return H},{url:i,chainId:a}=e,o=Kt({chain:n(a),transport:Zt(F(i))}),d=async(r,h)=>{let H=await o.request({method:r,params:h});return Ve(r,H)};return{getIdentitySoulDiscovery:r=>d("discovery_supportedSouls",r),getProtocolFeeBps:r=>d("payment_getProtocolFeeBps",r),calculateRewardAmount:r=>d("payment_calculateRewardAmount",r),sendIntent:r=>d("cashie_sendIntent",r),getIntentStatus:r=>d("cashie_getIntentStatus",r),getIntentStatuses:r=>d("cashie_getIntentStatuses",r),prepareRouterCallsFromAction:r=>d("payment_prepareRouterCallsFromAction",r),getBurnAuth:r=>d("identity_getBurnAuth",r),getTokenURI:r=>d("identity_getTokenURI",r),sendPrePaymentSetup:r=>d("payment_sendPrePaymentSetup",r),getPrePaymentSetup:r=>d("payment_getPrePaymentSetup",r),getBadgeOwnerOf:r=>d("badge_getOwnerOf",r),getBadgeUri:r=>d("badge_getBadgeUri",r),getBadgeMetadataFormat:r=>d("badge_getMetadataFormat",r),getTotalBadgesOfIdentity:r=>d("badge_totalBadgesOfIdentity",r),getBadgeOfIdentityByIndex:r=>d("badge_badgeOfIdentityByIndex",r),getBadgesOfIdentity:r=>d("badge_badgesOfIdentity",r)}};var $e=class{#n;#r;#i;#s;#o;#d;#p;#t;#e;#y=new Map;#u=new Map;#m;constructor(t){let{identityIssuer:n,cashieRpcUrl:i,chainIdHex:a}=t;this.#m=n,this.#t=ze({url:i,chainId:nn(a,"number")}),this.#e=a}#a(){if(!this.isInitialized())throw new Error("Soul manager is not initialized")}isInitialized(){return this.#n!==void 0&&this.#r!==void 0&&this.#i!==void 0&&this.#s!==void 0}async init(){let t=await this.#t.getIdentitySoulDiscovery([{chainHex:this.#e}]);if(!t)throw new Error("Failed to get supported souls");this.#n=t.identitySoulContract.address,this.#r=t.identitySoulContract.badgeContracts.paymentRecordBadgeContract,this.#i=t.identitySoulContract.badgeContracts.receiptBadgeContract,this.#s=t.identitySoulContract.badgeContracts.membershipBadgeContract;let[n,i,a]=await Promise.all([this.#t.getBadgeMetadataFormat([{chainHex:this.#e,badgeKind:"receipt"}]),this.#t.getBadgeMetadataFormat([{chainHex:this.#e,badgeKind:"paymentRecord"}]),this.#t.getBadgeMetadataFormat([{chainHex:this.#e,badgeKind:"membership"}])]);if(!n||!i||!a)throw new Error("Failed to get badge metadata formats");this.#o=n,this.#d=i,this.#p=a}async prepareIdentityMintConsent(t){if(this.#a(),!this.#n)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 i=await this.#m.issueIdentityProof(t),{identityType:a,domain:o,burnAuth:d,identityCommitment:r,proof:h}=i;return{chainId:this.#e,verifyingContract:this.#n,message:{to:n,identityType:a,domain:o,burnAuth:d,identityCommitment:r,proof:h}}}async getCashieIdentitySoulTokenMetadata(t){if(this.#a(),!this.#n)throw new Error("Identity soul contract is not initialized");if(!t)throw new Error("Account is not initialized");let n=S(t),i=fe(n),a=await this.#t.getTokenURI([{chainHex:this.#e,tokenId:i}]);if(!a)return;let o=Ne(a),d=B(o.image);if(!d)throw new Error("Failed to decode image SVG for identity soul token metadata");return o.image=d,o}async getCashieReceiptBadgeMetadata(t){if(this.#a(),!this.#i)throw new Error("Receipt badge contract is not initialized");if(!this.#o)throw new Error("Receipt badge metadata format is not initialized");let n=this.#y.get(t);if(n)return n;let i=await this.#t.getBadgeUri([{chainHex:this.#e,badgeId:t,badgeKind:"receipt"}]);if(!i)return;let a=De(i,this.#o),o=B(a.image);if(!o)throw new Error("Failed to decode image SVG for receipt badge metadata");return a.image=o,this.#y.set(t,a),a}async getCashiePaymentRecordBadgeMetadata(t){if(this.#a(),!this.#r)throw new Error("Payment record badge contract is not initialized");if(!this.#d)throw new Error("Payment record badge metadata format is not initialized");let n=this.#u.get(t);if(n)return n;let i=await this.#t.getBadgeUri([{chainHex:this.#e,badgeId:t,badgeKind:"paymentRecord"}]);if(!i)return;let a=ke(i,this.#d),o=B(a.image);if(!o)throw new Error("Failed to decode image SVG for payment record badge metadata");return a.image=o,this.#u.set(t,a),a}async#c(t){if(this.#a(),!this.#s)throw new Error("Membership badge contract is not initialized");let n=await this.#t.getBadgesOfIdentity([{chainHex:this.#e,account:t,badgeKind:"membership",offset:fe(0),limit:fe(1)}]);if(n.length!==0){if(n.length>1)throw new Error("Multiple membership badges minted for account");return n[0]}}async getCashieMembershipBadgeMetadata(t){if(this.#a(),!this.#p)throw new Error("Membership badge metadata format is not initialized");let n=await this.#c(t);if(!n)return;let i=await this.#t.getBadgeUri([{chainHex:this.#e,badgeId:n,badgeKind:"membership"}]);if(!i)return;let a=Ue(i,this.#p),o=B(a.image);if(!o)throw new Error("Failed to decode image SVG for membership badge metadata");return a.image=o,a}};import{concat as an,encodeAbiParameters as w,keccak256 as k,zeroAddress as Ge}from"viem";var rn=[{name:"action",type:"string"},{name:"recipient",type:"address"},{name:"payer",type:"address"},{name:"rewardData",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"}],sn=[{name:"action",type:"string"},{name:"accountAddress",type:"address"},{name:"permissionContextsHash",type:"bytes32"}],on=[{name:"action",type:"string"},{name:"accountAddress",type:"address"}],dn=[{name:"action",type:"string"},{name:"accountAddress",type:"address"},{name:"timestamp",type:"uint256"}],pn=[{name:"action",type:"string"},{name:"accountAddress",type:"address"}],yn=[{name:"action",type:"string"},{name:"chainId",type:"uint256"},{name:"dataHash",type:"bytes32"},{name:"delegationManager",type:"address"},{name:"salt",type:"bytes32"}];function un(e){if(e.length===0)return k("0x");let t=an([...e].map(n=>k(n).toLowerCase()).sort());return k(t)}function mn(e){let t=e.data,n=t.rewardData??{rewardPayer:Ge,rewardItems:[],rewardDelegationManager:Ge};return w(rn,[e.action,t.recipient,t.payer,{rewardPayer:n.rewardPayer,rewardItems:n.rewardItems.map(i=>({recipient:i.recipient,rewardAmount:BigInt(i.rewardAmount),rewardTokenAddress:i.rewardTokenAddress})),rewardDelegationManager:n.rewardDelegationManager},t.tokenAddress,BigInt(t.allowance)])}function cn(e){switch(e.action){case"payment-c2b":case"payment-b2b":case"payment-b2c":case"deposit":case"withdraw":return mn(e);case"deactivate-account":{let t=e.data;return w(sn,[e.action,t.accountAddress,un(t.permissionContexts)])}case"recover-account":{let t=e.data;return w(on,[e.action,t.accountAddress])}case"freeze-account":{let t=e.data;return w(dn,[e.action,t.accountAddress,BigInt(t.timestamp)])}case"reactivate-account":{let t=e.data;return w(pn,[e.action,t.accountAddress])}default:throw new Error(`Unsupported intent action: ${String(e.action)}`)}}function ln(e){return k(cn(e))}function Tn(e){return w(yn,[e.action,BigInt(e.chainId),ln(e),e.delegationManager,e.salt])}function Yr(e){return k(Tn(e))}var oi=[{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:"_membershipBadge",type:"address",internalType:"contract ICashieMembershipBadge"},{name:"_identityVerificationProvers",type:"address[]",internalType:"address[]"},{name:"_delegationManager",type:"address",internalType:"contract IDelegationManager"}],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:"deactivateAccount",inputs:[{name:"accountAddress",type:"address",internalType:"address"},{name:"permissionContexts",type:"bytes[]",internalType:"bytes[]"},{name:"redeemDelegations",type:"tuple[]",internalType:"struct Delegation[]",components:[{name:"delegate",type:"address",internalType:"address"},{name:"delegator",type:"address",internalType:"address"},{name:"authority",type:"bytes32",internalType:"bytes32"},{name:"caveats",type:"tuple[]",internalType:"struct Caveat[]",components:[{name:"enforcer",type:"address",internalType:"address"},{name:"terms",type:"bytes",internalType:"bytes"},{name:"args",type:"bytes",internalType:"bytes"}]},{name:"salt",type:"uint256",internalType:"uint256"},{name:"signature",type:"bytes",internalType:"bytes"}]},{name:"beneficiaryAddress",type:"address",internalType:"address"},{name:"salt",type:"bytes32",internalType:"bytes32"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"deactivationContextCount",inputs:[{name:"salt",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"deactivationDelegationHash",inputs:[{name:"salt",type:"bytes32",internalType:"bytes32"},{name:"contextIndex",type:"uint256",internalType:"uint256"}],outputs:[{name:"delegationHash",type:"bytes32",internalType:"bytes32"}],stateMutability:"view"},{type:"function",name:"deactivationSaltUsed",inputs:[{name:"salt",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"used",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"delegationActionIncentiveToken",inputs:[],outputs:[{name:"",type:"address",internalType:"contract IERC20Metadata"}],stateMutability:"view"},{type:"function",name:"delegationManager",inputs:[],outputs:[{name:"",type:"address",internalType:"contract IDelegationManager"}],stateMutability:"view"},{type:"function",name:"delegationRewardClaimed",inputs:[{name:"delegationHash",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"claimed",type:"bool",internalType:"bool"}],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"},{name:"salt",type:"bytes32",internalType:"bytes32"}]}],outputs:[{name:"tokenId",type:"uint256",internalType:"uint256"}],stateMutability:"nonpayable"},{type:"function",name:"membershipBadge",inputs:[],outputs:[{name:"",type:"address",internalType:"contract ICashieMembershipBadge"}],stateMutability:"view"},{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:"beneficiaryAddress",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:"beneficiaryAddress",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:"beneficiaryAddress",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:"reactivateAccount",inputs:[{name:"accountAddress",type:"address",internalType:"address"},{name:"beneficiaryAddress",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{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:"beneficiaryAddress",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"event",name:"AccountDeactivated",inputs:[{name:"account",type:"address",indexed:!0,internalType:"address"},{name:"salt",type:"bytes32",indexed:!0,internalType:"bytes32"},{name:"delegationHashes",type:"bytes32[]",indexed:!1,internalType:"bytes32[]"},{name:"disabledCount",type:"uint256",indexed:!1,internalType:"uint256"},{name:"rewardAmount",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{type:"event",name:"AccountReactivated",inputs:[{name:"account",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{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:"beneficiaryAddress",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:"DeactivationSaltAlreadyUsed",inputs:[{name:"salt",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"DelegationAccountMismatch",inputs:[{name:"account",type:"address",internalType:"address"},{name:"delegator",type:"address",internalType:"address"}]},{type:"error",name:"DelegationActionIncentiveTokenNotConfigured",inputs:[]},{type:"error",name:"DelegationRewardAlreadyClaimed",inputs:[{name:"delegationHash",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"EmptyDelegationChain",inputs:[]},{type:"error",name:"EmptyPermissionContexts",inputs:[]},{type:"error",name:"EmptyRedeemDelegations",inputs:[]},{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:"InvalidDelegationManager",inputs:[]},{type:"error",name:"InvalidIdentityVerificationProver",inputs:[]},{type:"error",name:"MembershipBadgeNotActive",inputs:[]},{type:"error",name:"NotAccountOwner",inputs:[{name:"account",type:"address",internalType:"address"},{name:"caller",type:"address",internalType:"address"}]},{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:[]}],di=[{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"}]}],pi=[{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"},{name:"salt",type:"bytes32",internalType:"bytes32"}]}],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:"IdentityAlreadyMinted",inputs:[{name:"tokenId",type:"uint256",internalType:"uint256"},{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"}]},{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"}]}],yi=[{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"}]}],ui=[{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"}]}],mi=[{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:"disableByBadgeId",inputs:[{name:"badgeId",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"disableByIdentityTokenId",inputs:[{name:"identityTokenId",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"enableByBadgeId",inputs:[{name:"badgeId",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"enableByIdentityTokenId",inputs:[{name:"identityTokenId",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"identityContract",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"isMembershipActive",inputs:[{name:"identityTokenId",type:"uint256",internalType:"uint256"}],outputs:[{name:"active",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"membershipState",inputs:[{name:"identityTokenId",type:"uint256",internalType:"uint256"}],outputs:[{name:"exists",type:"bool",internalType:"bool"},{name:"active",type:"bool",internalType:"bool"}],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 MembershipBadgeMintPayload",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:"chainId",type:"uint256",internalType:"uint256"},{name:"recipient",type:"address",internalType:"address"},{name:"membershipBadgeDetails",type:"tuple",internalType:"struct MembershipBadgeDetails",components:[{name:"isMembershipActive",type:"bool",internalType:"bool"}]},{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:"Disable",inputs:[{name:"badgeId",type:"uint256",indexed:!0,internalType:"uint256"}],anonymous:!1},{type:"event",name:"Enable",inputs:[{name:"badgeId",type:"uint256",indexed:!0,internalType:"uint256"}],anonymous:!1},{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:"MembershipBadgeAlreadyDisabled",inputs:[{name:"badgeId",type:"uint256",internalType:"uint256"}]},{type:"error",name:"MembershipBadgeAlreadyEnabled",inputs:[{name:"badgeId",type:"uint256",internalType:"uint256"}]},{type:"error",name:"MembershipBadgeAlreadyMinted",inputs:[{name:"badgeId",type:"uint256",internalType:"uint256"}]},{type:"error",name:"MembershipBadgeMintPayloadAlreadyClaimed",inputs:[{name:"hash",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"MembershipBadgeNotMinted",inputs:[{name:"identityTokenId",type:"uint256",internalType:"uint256"}]},{type:"error",name:"MembershipPayloadNotSetActive",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:"StringsInsufficientHexLength",inputs:[{name:"value",type:"uint256",internalType:"uint256"},{name:"length",type:"uint256",internalType:"uint256"}]}];var xi=["payments","deposits","withdrawals","rewards"];import{toHex as We}from"viem";function In(e){return Object.values(_).includes(e)}function ki(e){return In(e.intent.action)}function Ui(e){let{badgeId:t,badgeKind:n,identityContract:i,paymentIntentTrackingEntries:a}=e;if(a.length===0)return null;let o=a.filter(d=>d.status==="confirmed");if(o.length===0)return null;for(let d of o)if(d.txHash&&d.blockNumber)switch(n){case"receipt":{if(We(ue(i,d.intent,BigInt(d.blockNumber),ye.OneTime))===t)return d.txHash;break}case"paymentRecord":{if(We(Oe(i,d.intent,BigInt(d.blockNumber),ye.OneTime))===t)return d.txHash;break}}return null}import{keccak256 as gn}from"viem";function be(e){if(e===null||typeof e!="object")return e;if(Array.isArray(e))return e.map(be).sort((o,d)=>{let r=JSON.stringify(o),h=JSON.stringify(d);return r<h?-1:r>h?1:0});let t=e,n=Object.keys(t).sort(),i={};for(let a of n)i[a]=be(t[a]);return i}function fn(e){return JSON.stringify(be(e))}function he(e){let t=fn(e),n=new TextEncoder().encode(t);return gn(n)}var U=class extends Error{constructor(t){super(t),this.name="OcapValidationError"}};function bn(e,t){if(e.type!=="api")throw new U(`Unsupported resource type: ${e.type}`);if(!t.includes(e.audience))throw new U(`Audience not allowed: ${e.audience}`);if(!e.data?.endpoint||!Array.isArray(e.data.methods))throw new U("Invalid api resource: missing endpoint or methods")}function Yi(e){let{resources:t,allowedAudiences:n}=e,i=Array.isArray(t.api)?t.api:[];for(let d of i)bn(d,n);let a={resources:{api:i}},o=he(a);return{ocap:a,ocapId:o}}var $i=300*1e3,hn="Request OCAP";function Gi(e,t){let n=he({resources:t});return`${hn}:${e}:${n}`}var An=(i=>(i.ACCOUNT_SERVICE="account-service",i.PAYMENT_SERVICE="payment-service",i.IDV_SERVICE="idv-service",i))(An||{});var xn=(o=>(o[o.USER_REJECTED_REQUEST=4001]="USER_REJECTED_REQUEST",o[o.UNAUTHORIZED_ACCESS_ACCOUNT=4100]="UNAUTHORIZED_ACCESS_ACCOUNT",o[o.UNSUPPORTED_METHOD=4200]="UNSUPPORTED_METHOD",o[o.DISCONNECTED=4900]="DISCONNECTED",o[o.CHAIN_DISCONNECTED=4901]="CHAIN_DISCONNECTED",o))(xn||{}),Rn=(r=>(r[r.UNSUPPORTED_NON_OPTIONAL_CAPABILITY=5700]="UNSUPPORTED_NON_OPTIONAL_CAPABILITY",r[r.UNSUPPORTED_CHAIN_ID=5710]="UNSUPPORTED_CHAIN_ID",r[r.DUPLICATE_BUNDLE_ID=5720]="DUPLICATE_BUNDLE_ID",r[r.UNKNOWN_BUNDLE_ID=5730]="UNKNOWN_BUNDLE_ID",r[r.BUNDLE_TOO_LARGE=5740]="BUNDLE_TOO_LARGE",r[r.ATOMIC_READY_WALLET_REJECTED_UPGRADE=5750]="ATOMIC_READY_WALLET_REJECTED_UPGRADE",r[r.ATOMICITY_NOT_SUPPORTED=5760]="ATOMICITY_NOT_SUPPORTED",r))(Rn||{}),Pn=(t=>(t[t.UNAUTHORIZED_ACCESS_RESTRICTED_METHOD=4101]="UNAUTHORIZED_ACCESS_RESTRICTED_METHOD",t))(Pn||{}),Mn=(n=>(n[n.INTERNAL_ERROR=-32001]="INTERNAL_ERROR",n[n.NO_SECURE_CONNECTION_ESTABLISHED=-32002]="NO_SECURE_CONNECTION_ESTABLISHED",n))(Mn||{}),En=(t=>(t[t.INVALID_PARAMS=-32602]="INVALID_PARAMS",t))(En||{}),_n={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."}},ss=e=>{let t=_n[e];return t||{code:e,message:`Unknown error code: ${e}`}},qe=class extends Error{code;data;constructor({message:t,code:n,data:i}){super(t),this.code=n,this.data=i}};var C=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 q(t)}static Left(t){return new Ae(t)}static Right(t){return new q(t)}},Ae=class extends C{constructor(t){super(t)}map(t){return this}flatMap(t){return this}getOrElse(t){return t}isLeft(){return!0}isRight(){return!1}},q=class extends C{constructor(t){super(t)}map(t){return C.of(t(this.value))}flatMap(t){return t(this.value)}getOrElse(t){return this.value}isLeft(){return!1}isRight(){return!0}},ds=e=>e instanceof C;var ys="/api/public/protocol-rpc";var wn=(n=>(n[n.INDIVIDUAL=0]="INDIVIDUAL",n[n.BUSINESS=1]="BUSINESS",n))(wn||{}),ms={1:"Business",0:"Individual"};export{xi as ACCOUNT_STATEMENT_RECEIPT_KINDS,W as AccountIntentActions,f as BurnAuth,ms as CASHIE_ACCOUNT_TYPE_LABELS,pi as CASHIE_IDENTITY_SOUL_CONTRACT_ABI,xe as CASHIE_IDENTITY_SOUL_EIP712_NAME,Re as CASHIE_IDENTITY_SOUL_EIP712_VERSION,j as CASHIE_JSON_DATA_URI_BASE64_PREFIX,mi as CASHIE_MEMBERSHIP_BADGE_CONTRACT_ABI,$ as CASHIE_MEMBERSHIP_BADGE_METADATA_FORMAT,ui as CASHIE_PAYMENT_RECORD_BADGE_CONTRACT_ABI,z as CASHIE_PAYMENT_RECORD_BADGE_METADATA_FORMAT,yi as CASHIE_RECEIPT_BADGE_CONTRACT_ABI,V as CASHIE_RECEIPT_BADGE_METADATA_FORMAT,di as CASHIE_ROUTER_GUARD_CONTRACT_ABI,oi as CASHIE_ROUTER_V1_CONTRACT_ABI,Y as CASHIE_SVG_DATA_URI_BASE64_PREFIX,En as COMMON_ERROR_CODES,wn as CashieAccountType,$i as DEFAULT_MAX_AGE_MS,xn as EIP1193_ERROR_CODES,Rn as EIP5792_ERROR_CODES,K as ERC7715ValidationError,Pn as ERC7715_ERROR_CODES,C as Either,Mn as FATAL_ERROR_CODES,Sn as IDENTITY_MINT_CONSENT_EIP712_TYPE_STRING,_e as IDENTITY_MINT_EIP712_TYPES,Ee as IDENTITY_MINT_PAYLOAD_EIP712_TYPES,Cn as IDENTITY_MINT_PAYLOAD_EIP712_TYPE_STRING,tr as INTENT_ACTIONS,Be as IdentityIssuer,J as IdentityIssuerId,P as IdentityType,yt as JSON_IDENTITY_TYPE_LABEL_TO_IDENTITY_TYPE,hn as OCAP_STATEMENT_PREFIX,An as OcapAudiences,U as OcapValidationError,it as PLAID_IDV_ERROR_MESSAGE,Me as PRIMARY_TYPE_IDENTITY_MINT_CONSENT,Pe as PRIMARY_TYPE_IDENTITY_MINT_PAYLOAD,ys as PROTOCOL_RPC_PROXY_PATH,_ as PaymentIntentActions,rt as PlaidIdvErrorCode,ye as ReceiptType,qe as RpcError,$e as SoulManager,T as addressSchema,F as assertUrl,ce as basePaymentDetailsDataSchema,M as baseScopeSchema,He as billingPeriodSchema,Se as buildCashieIdentitySoulDomain,Nn as buildIdentityCommitmentHash,et as buildIdentityMintConsentTypedData,tt as buildIdentityMintProofTypedData,he as buildOcapId,X as burnAuthSchema,ne as bytes32HexSchema,fn as canonicalOcapPayload,pt as cashieIdentitySoulIdentityTypeJsonSchema,oe as cashieIdentitySoulTokenMetadataJsonSchema,ha as cashieIdentitySoulTokenMetadataSchema,se as cashieMembershipBadgeMetadataSchema,ie as cashiePaymentRecordBadgeMetadataSchema,re as cashieReceiptBadgeMetadataSchema,ae as cashieReceiptBadgeSoulBoundToSchema,ze as createPaymentRpcClient,Mt as decodeCashieJsonDataUriToUtf8,B as decodeCashieSvgDataUriToUtf8,Tn as encodeIntent,cn as encodeIntentData,Rt as encodeMembershipBadgeMintPayload,ft as encodePaymentRecordBadgeMintPayload,ct as encodeReceiptBadgeMintPayload,le as erc20TokenPaymentPermissionSchema,Q as expiryRuleSchema,Ui as findTransactionHashForBadgeId,Yn as generateSalt,ss as getErrorMessage,ln as getIntentDataHash,Yr as getIntentHash,Pt as getMembershipBadgeMintPayloadHash,bt as getPaymentRecordBadgeMintPayloadHash,kt as getPermissionsInfoResultParamsSchema,lt as getReceiptBadgeMintPayloadHash,Ht as getSupportedExecutionPermissionsResultSchema,Hn as hashIdentityMintConsentTypedData,Fn as hashIdentityMintProofTypedData,x as hex0xSchema,l as hexSchema,vn as identityAccountFor,ee as identityMintRuleSchema,L as identityMintSignPayloadWithSignatureSchema,S as identityTokenIdFor,Z as identityTypeSchema,v as initCodeDataSchema,ds as isEither,In as isPaymentIntentAction,ki as isPaymentIntentTrackingEntry,Pa as membershipBadgeIdFromMintPayload,Ha as parseBasePaymentDetailsData,oa as parseBaseScopeSchema,ka as parseBillingPeriod,Ne as parseCashieIdentitySoulTokenMetadata,O as parseCashieJsonDataUriJson,wt as parseCashieMembershipBadgeMetadata,Ue as parseCashieMembershipBadgeMetadataFromBadgeUri,_a as parseCashieMetadataDataUri,_t as parseCashiePaymentRecordBadgeMetadata,ke as parseCashiePaymentRecordBadgeMetadataFromBadgeUri,Et as parseCashieReceiptBadgeMetadata,De as parseCashieReceiptBadgeMetadataFromBadgeUri,La as parseERC20TokenPaymentPermission,ca as parseExpiryRule,Xa as parseGetPermissionsInfoResultParams,Qa as parseGetSupportedExecutionPermissionsResult,la as parseIdentityMintRule,Wa as parseInitCodeData,Fa as parsePaymentDetails,Ua as parsePaymentDetailsType,ja as parsePermission,qa as parsePermissionRequest,Ka as parsePermissionResponse,Ja as parsePermissionsRequest,Za as parsePermissionsResponse,Ta as parseRule,m as parseWithSchema,Fe as paymentDetailsSchema,me as paymentDetailsTypeSchema,ht as paymentRecordBadgeIdFromMintPayload,Oe as paymentRecordBadgeIdFromPaymentIntent,At as paymentRecordBadgeMintPayloadFromPaymentIntent,Ie as permissionRequestSchema,Le as permissionResponseSchema,Te as permissionSchema,Da as permissionSchemas,Nt as permissionsRequestSchema,Dt as permissionsResponseSchema,Zn as plaidIdvError,Gi as prepareStatement,Tt as receiptBadgeIdFromMintPayload,ue as receiptBadgeIdFromPaymentIntent,It as receiptBadgeMintPayloadFromPaymentIntent,vt as recurringPaymentDetailsSchema,Bt as rewardItemSchema,te as ruleSchema,ma as ruleSchemas,Ot as singlePaymentDetailsSchema,Ut as supportedExecutionPermissionInfoSchema,Yi as validateAndBuildOcap};
1
+ var P={Individual:0,Business:1},f={IssuerOnly:0,OwnerOnly:1,Both:2,Neither:3},xe="CashieIdentitySoul",Re="1",Pe="IdentityMintPayload",Me="IdentityMintConsent",Sn="IdentityMintPayload(uint8 identityType,string domain,uint8 burnAuth,bytes identityCommitment,address to)",Bn="IdentityMintConsent(uint8 identityType,string domain,uint8 burnAuth,bytes identityCommitment,address to,bytes proof)",Ee={IdentityMintPayload:[{name:"identityType",type:"uint8"},{name:"domain",type:"string"},{name:"burnAuth",type:"uint8"},{name:"identityCommitment",type:"bytes"},{name:"to",type:"address"}]},_e={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"}]};import{getAddress as we,hexToBigInt as Je,keccak256 as Ke,numberToHex as Ze}from"viem";var Xe=(1n<<160n)-1n;function S(e){return Je(we(e))}function Nn(e){let t=e&Xe;return we(Ze(t,{size:20}))}function Dn(e,t){let n=`0x${e}-${t}`;return Ke(n)}import{hashTypedData as Ce,hexToBigInt as Qe}from"viem";function Se(e,t){let n=Qe(e);return{name:xe,version:Re,chainId:n,verifyingContract:t}}function et(e){return{domain:Se(e.chainId,e.verifyingContract),types:_e,primaryType:Me,message:e.message}}function tt(e){return{domain:Se(e.chainId,e.verifyingContract),types:Ee,primaryType:Pe,message:e.message}}function Fn(e){let{domain:t,types:n,primaryType:i,message:a}=et(e);return Ce({domain:t,types:n,primaryType:i,message:a})}function Ln(e){let{domain:t,types:n,primaryType:i,message:a}=tt(e);return Ce({domain:t,types:n,primaryType:i,message:a})}var J=(n=>(n.PLAID="plaid-identity",n.BUSINESS="business-identity",n))(J||{});function nt(){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 at(e){return Array.from(e,t=>t.toString(16).padStart(2,"0")).join("")}function Vn(){let e=new Uint8Array(32);return nt().getRandomValues(e),`0x${at(e)}`}function F(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 Be=class{#n;constructor(t){t.idvProverUrl=F(t.idvProverUrl),this.#n=t}async postIdvProver(t,n){let i=this.#n.idvProverUrl,a=await fetch(`${i}/api/v1/idv/${t}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)});if(!a.ok){let o=await a.json().catch(()=>({}));throw new Error(o.error||o.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(J).includes(t)}};var rt=(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))(rt||{}),it={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."},Xn=e=>({error_code:e,error_message:it[e]});import{fromHex as an,toHex as fe}from"viem";import{z as p}from"zod";import{z as c}from"zod";import{z as A}from"zod";import{isAddress as st,isHex as ot}from"viem";var T=A.custom(e=>typeof e=="string"&&st(e),{message:"Expected valid Ethereum address"}),l=A.custom(e=>typeof e=="string"&&ot(e),{message:"Expected valid hex string"}),M=A.object({type:A.string(),isAdjustmentAllowed:A.boolean(),justification:A.string(),data:A.record(A.string(),A.unknown())}).strict(),K=class extends Error{schemaName;zodError;constructor(t,n){let i=n.issues.map(a=>{let o=a.path.length>0?` at ${a.path.join(".")}`:"";return`${a.message}${o}`}).join("; ");super(`Invalid ERC-7715 "${t}": ${i}`),this.name="ERC7715ValidationError",this.schemaName=t,this.zodError=n}};function m(e,t,n){let i=t.safeParse(n);if(!i.success)throw new K(e,i.error);return i.data}function da(e){return m("BaseScopeSchema",M,e)}var Z=c.union([c.literal(P.Individual),c.literal(P.Business)]),X=c.union([c.literal(f.IssuerOnly),c.literal(f.OwnerOnly),c.literal(f.Both),c.literal(f.Neither)]),dt=l.refine(e=>e.length===66,{message:"Expected 32-byte hex string (0x + 64 hex chars)"}),L=c.object({identityType:Z,domain:c.string(),burnAuth:X,identityCommitment:l,to:T,proof:l,signature:l,salt:dt}).strict(),Q=M.omit({type:!0,data:!0}).extend({type:c.literal("expiry"),data:c.object({timestamp:c.number().int()}).strict()}).strict(),ee=M.omit({type:!0,data:!0}).extend({type:c.literal("identity-mint"),data:c.object({identityMintPayload:L}).strict()}).strict(),te=c.discriminatedUnion("type",[Q,ee]),ca={expiry:Q,identityMint:ee};function la(e){return m("ExpiryRule",Q,e)}function Ta(e){return m("IdentityMintRule",ee,e)}function Ia(e){return m("Rule",te,e)}var j="data:application/json;base64,",Y="data:image/svg+xml;base64,",V="Cashie-ReceiptBadge-v1",z="Cashie-PaymentRecordBadge-v1",$="Cashie-MembershipBadge-v1",pt=p.enum(["Individual","Business"]),yt={Individual:P.Individual,Business:P.Business},b=p.string().regex(/^\d+$/,"Expected decimal string"),x=p.string().regex(/^0x[0-9a-fA-F]+$/,"Expected non-empty 0x-prefixed hex"),ne=x.refine(e=>e.length===66,{message:"Expected 32-byte hex string (0x + 64 hex chars)"}),ae=p.object({identityContract:x,tokenId:b}).strict(),re=p.object({name:p.string(),description:p.string(),image:p.string(),soulBoundTo:ae,receiptType:p.enum(["OneTime","Recurring"]),blockNumber:b,recipient:x,chainId:b,tokenAddress:x,allowance:b,salt:ne}).strict(),ut=b.refine(e=>{let t=Number(e);return Number.isInteger(t)&&t>=f.IssuerOnly&&t<=f.Neither},{message:"burnAuth must be IERC5484 enum ordinal (0\u20133)"}).transform(e=>Number(e)),ie=p.object({name:p.string(),description:p.string(),image:p.string(),soulBoundTo:ae,blockNumber:b,payer:x,chainId:b,tokenAddress:x,allowance:b,receiptBadgeId:b,salt:ne}).strict(),se=p.object({name:p.string(),description:p.string(),image:p.string(),soulBoundTo:ae,blockNumber:b,chainId:b,recipient:x,isMembershipActive:p.enum(["true","false"]),salt:ne}).strict(),oe=p.object({name:p.string(),description:p.string(),image:p.string(),identityType:pt.transform(e=>yt[e]),domain:p.string(),burnAuth:ut,identityCommitment:x}).strict(),Aa=p.object({name:p.string(),description:p.string(),image:p.string(),identityType:Z,domain:p.string(),burnAuth:X,identityCommitment:x}).strict();import{encodeAbiParameters as de,getAddress as E,hexToBigInt as G,keccak256 as pe}from"viem";var ye={OneTime:0,Recurring:1},mt=[{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 ct(e){return de([...mt],[e.soulBoundTo.identityContract,e.soulBoundTo.tokenId,e.receiptType,e.blockNumber,e.recipient,e.chainId,e.tokenAddress,e.allowance,e.salt])}function lt(e){return pe(ct(e))}function Tt(e){return BigInt(lt(e))}function It(e,t,n,i){let{payer:a,recipient:o,tokenAddress:d,allowance:r}=t.data;return{soulBoundTo:{identityContract:E(e),tokenId:S(a)},receiptType:i,blockNumber:n,recipient:E(o),chainId:G(t.chainId),tokenAddress:E(d),allowance:G(r),salt:t.salt}}function ue(e,t,n,i){return Tt(It(e,t,n,i))}var gt=[{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 ft(e){return de([...gt],[e.soulBoundTo.identityContract,e.soulBoundTo.tokenId,e.blockNumber,e.payer,e.chainId,e.tokenAddress,e.allowance,e.receiptBadgeId,e.salt])}function bt(e){return pe(ft(e))}function ht(e){return BigInt(bt(e))}function At(e,t,n,i){let{payer:a,recipient:o,tokenAddress:d,allowance:r}=t.data;return{soulBoundTo:{identityContract:E(e),tokenId:S(o)},blockNumber:n,payer:E(a),chainId:G(t.chainId),tokenAddress:E(d),allowance:G(r),receiptBadgeId:i,salt:t.salt}}function Oe(e,t,n,i){let a=ue(e,t,n,i);return ht(At(e,t,n,a))}var xt=[{type:"address",name:"identityContract"},{type:"uint256",name:"tokenId"},{type:"uint256",name:"blockNumber"},{type:"uint256",name:"chainId"},{type:"address",name:"recipient"},{type:"bytes32",name:"salt"}];function Rt(e){return de([...xt],[e.soulBoundTo.identityContract,e.soulBoundTo.tokenId,e.blockNumber,e.chainId,e.recipient,e.salt])}function Pt(e){return pe(Rt(e))}function Ma(e){return BigInt(Pt(e))}function ve(e){let t=e.replace(/\s+/g,"");try{let n=atob(t),i=new Uint8Array(n.length);for(let a=0;a<n.length;a++)i[a]=n.charCodeAt(a);return new TextDecoder("utf8",{fatal:!0}).decode(i)}catch{throw new Error("Failed to Base64-decode Cashie data URI payload (invalid encoding)")}}function Mt(e){if(!e.startsWith(j))throw new Error(`Expected Cashie JSON data URI prefix "${j}"`);let t=e.slice(j.length);return ve(t)}function B(e){if(!e.startsWith(Y))throw new Error(`Expected Cashie SVG data URI prefix "${Y}"`);let t=e.slice(Y.length);return ve(t)}function O(e){let t=Mt(e);return JSON.parse(t)}function Ne(e){let t=O(e);return oe.parse(t)}function Et(e){let t=O(e);return re.parse(t)}function De(e,t){if(t!==V)throw new Error(`Expected ERC-5114 metadataFormat "${V}", received "${t}"`);return Et(e)}function _t(e){let t=O(e);return ie.parse(t)}function ke(e,t){if(t!==z)throw new Error(`Expected ERC-5114 metadataFormat "${z}", received "${t}"`);return _t(e)}function wt(e){let t=O(e);return se.parse(t)}function Ue(e,t){if(t!==$)throw new Error(`Expected ERC-5114 metadataFormat "${$}", received "${t}"`);return wt(e)}function Ct(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function St(e){if("identityType"in e)return{kind:"identitySoul",data:oe.parse(e)};if("receiptType"in e)return{kind:"receiptBadge",format:V,data:re.parse(e)};if("receiptBadgeId"in e)return{kind:"paymentRecordBadge",format:z,data:ie.parse(e)};if("isMembershipActive"in e)return{kind:"membershipBadge",format:$,data:se.parse(e)};throw new Error("Unrecognized Cashie metadata JSON (expected identityType, receiptType, receiptBadgeId, or isMembershipActive)")}function wa(e){let t=O(e);if(!Ct(t))throw new Error("Unrecognized Cashie metadata JSON (expected identityType, receiptType, receiptBadgeId, or isMembershipActive)");return St(t)}import{createPublicClient as Zt,http as Xt,toHex as Qt}from"viem";import{sepolia as en,localhost as tn,anvil as nn}from"viem/chains";import{z as s}from"zod";import{isAddress as Lt,isHex as jt}from"viem";import{z as I}from"zod";import{z as g}from"zod";var Bt=l.refine(e=>e.length===66,{message:"Expected 32-byte hex string (0x + 64 hex chars)"}),He=g.enum(["weekly","monthly","annually"]),me=g.enum(["single","recurring"]),Ot=g.object({recipient:T,rewardAmount:l,rewardTokenAddress:T}).strict(),ce=g.object({allowance:l,tokenAddress:T,rewardItems:g.array(Ot).optional()}).strict(),vt=ce.extend({type:g.literal(me.enum.single)}).strict(),Nt=ce.extend({type:g.literal(me.enum.recurring),startDate:g.number().int().optional(),billingPeriod:He}).strict(),Fe=g.discriminatedUnion("type",[vt,Nt]),le=M.omit({type:!0,data:!0}).extend({type:g.literal("erc20-token-payment"),data:g.object({recipient:T,paymentDetails:Fe,salt:Bt}).strict()}).strict(),Te=g.discriminatedUnion("type",[le]),ka={"erc20-token-payment":le};function Ua(e){return m("BillingPeriod",He,e)}function Ha(e){return m("PaymentDetailsType",me,e)}function Fa(e){return m("BasePaymentDetailsData",ce,e)}function La(e){return m("PaymentDetails",Fe,e)}function ja(e){return m("ERC20TokenPaymentPermission",le,e)}function Ya(e){return m("Permission",Te,e)}var v=I.object({factory:T,factoryData:l}).strict(),Ie=I.object({chainId:l,from:T.optional(),to:T,permission:Te,rules:I.array(te).optional()}).strict(),Dt=I.array(Ie),Le=Ie.extend({from:T,context:l,dependencies:I.array(v),delegationManager:T}).strict(),kt=I.array(Le),Ut=I.object({chainIds:I.array(l)}).strict(),Ht=I.object({chainIds:I.array(l),ruleTypes:I.array(I.string())}).strict(),Ft=I.object({"erc20-token-payment":Ht}).strict();function qa(e){return m("InitCodeData",v,e)}function Ja(e){return m("PermissionRequest",Ie,e)}function Ka(e){return m("PermissionsRequest",Dt,e)}function Za(e){return m("PermissionResponse",Le,e)}function Xa(e){return m("PermissionsResponse",kt,e)}function Qa(e){return m("GetPermissionsInfoResultParams",Ut,e)}function er(e){return m("GetSupportedExecutionPermissionsResult",Ft,e)}var _=(o=>(o.PAYMENT_C2B="payment-c2b",o.PAYMENT_B2B="payment-b2b",o.PAYMENT_B2C="payment-b2c",o.DEPOSIT="deposit",o.WITHDRAW="withdraw",o))(_||{}),W=(a=>(a.DEACTIVATE_ACCOUNT="deactivate-account",a.REACTIVATE_ACCOUNT="reactivate-account",a.RECOVER_ACCOUNT="recover-account",a.FREEZE_ACCOUNT="freeze-account",a))(W||{}),nr={..._,...W};var u=s.custom(e=>typeof e=="string"&&Lt(e),{message:"Expected valid Ethereum address"}),y=s.custom(e=>typeof e=="string"&&jt(e),{message:"Expected valid hex string"}),Yt=s.custom(e=>typeof e=="number"&&Number.isInteger(e)&&e>=f.IssuerOnly&&e<=f.Neither,{message:"Expected BurnAuth enum value (0\u20133)"}),Vt=s.object({to:u,data:y}),D=s.enum(["receipt","paymentRecord","membership"]),zt=s.object({nftAddress:u,nftTokenId:y}),$t=s.object({identitySoulContract:s.object({address:u,badgeContracts:s.object({paymentRecordBadgeContract:u,receiptBadgeContract:u,membershipBadgeContract:u})})}),Gt=s.object({signedIdentityMintPayload:L,initCodeData:v}).strict(),Wt=s.object({recipient:u,rewardAmount:y,rewardTokenAddress:u}).strict(),qt=s.object({rewardPayer:u,rewardItems:s.array(Wt),rewardPermissionContext:y,rewardDelegationManager:u}).strict(),N=s.object({recipient:u,payer:u,identityMintPayloads:s.array(L),tokenAddress:u,allowance:y,rewardData:qt.optional(),dependencies:s.array(v)}).strict(),R={chainId:y,salt:y,permissionContext:y,delegationManager:u},Jt=s.discriminatedUnion("action",[s.object({action:s.literal("payment-c2b"),...R,data:N}).strict(),s.object({action:s.literal("payment-b2b"),...R,data:N}).strict(),s.object({action:s.literal("payment-b2c"),...R,data:N}).strict(),s.object({action:s.literal("deposit"),...R,data:N}).strict(),s.object({action:s.literal("withdraw"),...R,data:N}).strict(),s.object({action:s.literal("deactivate-account"),...R,data:s.object({accountAddress:u,permissionContexts:s.array(y)}).strict()}).strict(),s.object({action:s.literal("recover-account"),...R,data:s.object({accountAddress:u}).strict()}).strict(),s.object({action:s.literal("freeze-account"),...R,data:s.object({accountAddress:u,timestamp:s.number().int()}).strict()}).strict(),s.object({action:s.literal("reactivate-account"),...R,data:s.object({accountAddress:u}).strict()}).strict()]).transform(e=>e),je=s.object({intent:Jt,status:s.enum(["pending","confirmed","failed"]),txHash:y.nullable().optional(),blockNumber:y.nullable().optional()}).strict().transform(e=>e),Kt={payment_getProtocolFeeBps:y,payment_calculateRewardAmount:y,payment_prepareRouterCallsFromAction:s.array(Vt),payment_sendPrePaymentSetup:y,payment_getPrePaymentSetup:Gt.nullable(),cashie_sendIntent:y,cashie_getIntentStatus:je.nullable(),cashie_getIntentStatuses:s.array(je),discovery_supportedSouls:$t,identity_getBurnAuth:Yt,identity_getTokenURI:s.string().nullable(),badge_getOwnerOf:zt,badge_getBadgeUri:s.string().nullable(),badge_getMetadataFormat:s.string(),badge_totalBadgesOfIdentity:y,badge_badgeOfIdentityByIndex:y,badge_badgesOfIdentity:s.array(y)},Ye=s.tuple([s.object({chainHex:y,badgeId:y,badgeKind:D})]),yr={badge_getOwnerOf:Ye,badge_getBadgeUri:Ye,badge_getMetadataFormat:s.tuple([s.object({chainHex:y,badgeKind:D})]),badge_totalBadgesOfIdentity:s.tuple([s.object({chainHex:y,account:u,badgeKind:D})]),badge_badgeOfIdentityByIndex:s.tuple([s.object({chainHex:y,account:u,badgeKind:D,index:y})]),badge_badgesOfIdentity:s.tuple([s.object({chainHex:y,account:u,badgeKind:D,offset:y,limit:y})])};var ge=class extends Error{method;zodError;constructor(t,n){let i=n.issues.map(a=>{let o=a.path.length>0?` at ${a.path.join(".")}`:"";return`${a.message}${o}`}).join("; ");super(`Invalid RPC response for "${t}": ${i}`),this.name="PaymentRpcResponseValidationError",this.method=t,this.zodError=n}};function Ve(e,t){let n=Kt[e].safeParse(t);if(!n.success)throw new ge(e,n.error);return n.data}var ze=e=>{let t=()=>({"0xaa36a7":en,"0x539":tn,"0x7a69":nn}),n=r=>{let h=Qt(r),H=t()[h];if(!H)throw new Error(`Chain ${h} is not supported`);return H},{url:i,chainId:a}=e,o=Zt({chain:n(a),transport:Xt(F(i))}),d=async(r,h)=>{let H=await o.request({method:r,params:h});return Ve(r,H)};return{getIdentitySoulDiscovery:r=>d("discovery_supportedSouls",r),getProtocolFeeBps:r=>d("payment_getProtocolFeeBps",r),calculateRewardAmount:r=>d("payment_calculateRewardAmount",r),sendIntent:r=>d("cashie_sendIntent",r),getIntentStatus:r=>d("cashie_getIntentStatus",r),getIntentStatuses:r=>d("cashie_getIntentStatuses",r),prepareRouterCallsFromAction:r=>d("payment_prepareRouterCallsFromAction",r),getBurnAuth:r=>d("identity_getBurnAuth",r),getTokenURI:r=>d("identity_getTokenURI",r),sendPrePaymentSetup:r=>d("payment_sendPrePaymentSetup",r),getPrePaymentSetup:r=>d("payment_getPrePaymentSetup",r),getBadgeOwnerOf:r=>d("badge_getOwnerOf",r),getBadgeUri:r=>d("badge_getBadgeUri",r),getBadgeMetadataFormat:r=>d("badge_getMetadataFormat",r),getTotalBadgesOfIdentity:r=>d("badge_totalBadgesOfIdentity",r),getBadgeOfIdentityByIndex:r=>d("badge_badgeOfIdentityByIndex",r),getBadgesOfIdentity:r=>d("badge_badgesOfIdentity",r)}};var $e=class{#n;#r;#i;#s;#o;#d;#p;#t;#e;#y=new Map;#u=new Map;#m;constructor(t){let{identityIssuer:n,cashieRpcUrl:i,chainIdHex:a}=t;this.#m=n,this.#t=ze({url:i,chainId:an(a,"number")}),this.#e=a}#a(){if(!this.isInitialized())throw new Error("Soul manager is not initialized")}isInitialized(){return this.#n!==void 0&&this.#r!==void 0&&this.#i!==void 0&&this.#s!==void 0}async init(){let t=await this.#t.getIdentitySoulDiscovery([{chainHex:this.#e}]);if(!t)throw new Error("Failed to get supported souls");this.#n=t.identitySoulContract.address,this.#r=t.identitySoulContract.badgeContracts.paymentRecordBadgeContract,this.#i=t.identitySoulContract.badgeContracts.receiptBadgeContract,this.#s=t.identitySoulContract.badgeContracts.membershipBadgeContract;let[n,i,a]=await Promise.all([this.#t.getBadgeMetadataFormat([{chainHex:this.#e,badgeKind:"receipt"}]),this.#t.getBadgeMetadataFormat([{chainHex:this.#e,badgeKind:"paymentRecord"}]),this.#t.getBadgeMetadataFormat([{chainHex:this.#e,badgeKind:"membership"}])]);if(!n||!i||!a)throw new Error("Failed to get badge metadata formats");this.#o=n,this.#d=i,this.#p=a}async prepareIdentityMintConsent(t){if(this.#a(),!this.#n)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 i=await this.#m.issueIdentityProof(t),{identityType:a,domain:o,burnAuth:d,identityCommitment:r,proof:h}=i;return{chainId:this.#e,verifyingContract:this.#n,message:{to:n,identityType:a,domain:o,burnAuth:d,identityCommitment:r,proof:h}}}async getCashieIdentitySoulTokenMetadata(t){if(this.#a(),!this.#n)throw new Error("Identity soul contract is not initialized");if(!t)throw new Error("Account is not initialized");let n=S(t),i=fe(n),a=await this.#t.getTokenURI([{chainHex:this.#e,tokenId:i}]);if(!a)return;let o=Ne(a),d=B(o.image);if(!d)throw new Error("Failed to decode image SVG for identity soul token metadata");return o.image=d,o}async getCashieReceiptBadgeMetadata(t){if(this.#a(),!this.#i)throw new Error("Receipt badge contract is not initialized");if(!this.#o)throw new Error("Receipt badge metadata format is not initialized");let n=this.#y.get(t);if(n)return n;let i=await this.#t.getBadgeUri([{chainHex:this.#e,badgeId:t,badgeKind:"receipt"}]);if(!i)return;let a=De(i,this.#o),o=B(a.image);if(!o)throw new Error("Failed to decode image SVG for receipt badge metadata");return a.image=o,this.#y.set(t,a),a}async getCashiePaymentRecordBadgeMetadata(t){if(this.#a(),!this.#r)throw new Error("Payment record badge contract is not initialized");if(!this.#d)throw new Error("Payment record badge metadata format is not initialized");let n=this.#u.get(t);if(n)return n;let i=await this.#t.getBadgeUri([{chainHex:this.#e,badgeId:t,badgeKind:"paymentRecord"}]);if(!i)return;let a=ke(i,this.#d),o=B(a.image);if(!o)throw new Error("Failed to decode image SVG for payment record badge metadata");return a.image=o,this.#u.set(t,a),a}async#c(t){if(this.#a(),!this.#s)throw new Error("Membership badge contract is not initialized");let n=await this.#t.getBadgesOfIdentity([{chainHex:this.#e,account:t,badgeKind:"membership",offset:fe(0),limit:fe(1)}]);if(n.length!==0){if(n.length>1)throw new Error("Multiple membership badges minted for account");return n[0]}}async getCashieMembershipBadgeMetadata(t){if(this.#a(),!this.#p)throw new Error("Membership badge metadata format is not initialized");let n=await this.#c(t);if(!n)return;let i=await this.#t.getBadgeUri([{chainHex:this.#e,badgeId:n,badgeKind:"membership"}]);if(!i)return;let a=Ue(i,this.#p),o=B(a.image);if(!o)throw new Error("Failed to decode image SVG for membership badge metadata");return a.image=o,a}};import{concat as rn,encodeAbiParameters as w,keccak256 as k,zeroAddress as Ge}from"viem";var sn=[{name:"action",type:"string"},{name:"recipient",type:"address"},{name:"payer",type:"address"},{name:"rewardData",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"}],on=[{name:"action",type:"string"},{name:"accountAddress",type:"address"},{name:"permissionContextsHash",type:"bytes32"}],dn=[{name:"action",type:"string"},{name:"accountAddress",type:"address"}],pn=[{name:"action",type:"string"},{name:"accountAddress",type:"address"},{name:"timestamp",type:"uint256"}],yn=[{name:"action",type:"string"},{name:"accountAddress",type:"address"}],un=[{name:"action",type:"string"},{name:"chainId",type:"uint256"},{name:"dataHash",type:"bytes32"},{name:"delegationManager",type:"address"},{name:"salt",type:"bytes32"}];function mn(e){if(e.length===0)return k("0x");let t=rn([...e].map(n=>k(n).toLowerCase()).sort());return k(t)}function cn(e){let t=e.data,n=t.rewardData??{rewardPayer:Ge,rewardItems:[],rewardDelegationManager:Ge};return w(sn,[e.action,t.recipient,t.payer,{rewardPayer:n.rewardPayer,rewardItems:n.rewardItems.map(i=>({recipient:i.recipient,rewardAmount:BigInt(i.rewardAmount),rewardTokenAddress:i.rewardTokenAddress})),rewardDelegationManager:n.rewardDelegationManager},t.tokenAddress,BigInt(t.allowance)])}function ln(e){switch(e.action){case"payment-c2b":case"payment-b2b":case"payment-b2c":case"deposit":case"withdraw":return cn(e);case"deactivate-account":{let t=e.data;return w(on,[e.action,t.accountAddress,mn(t.permissionContexts)])}case"recover-account":{let t=e.data;return w(dn,[e.action,t.accountAddress])}case"freeze-account":{let t=e.data;return w(pn,[e.action,t.accountAddress,BigInt(t.timestamp)])}case"reactivate-account":{let t=e.data;return w(yn,[e.action,t.accountAddress])}default:throw new Error(`Unsupported intent action: ${String(e.action)}`)}}function Tn(e){return k(ln(e))}function In(e){return w(un,[e.action,BigInt(e.chainId),Tn(e),e.delegationManager,e.salt])}function Vr(e){return k(In(e))}var di=[{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:"_membershipBadge",type:"address",internalType:"contract ICashieMembershipBadge"},{name:"_identityVerificationProvers",type:"address[]",internalType:"address[]"},{name:"_delegationManager",type:"address",internalType:"contract IDelegationManager"}],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:"deactivateAccount",inputs:[{name:"accountAddress",type:"address",internalType:"address"},{name:"permissionContexts",type:"bytes[]",internalType:"bytes[]"},{name:"redeemDelegations",type:"tuple[]",internalType:"struct Delegation[]",components:[{name:"delegate",type:"address",internalType:"address"},{name:"delegator",type:"address",internalType:"address"},{name:"authority",type:"bytes32",internalType:"bytes32"},{name:"caveats",type:"tuple[]",internalType:"struct Caveat[]",components:[{name:"enforcer",type:"address",internalType:"address"},{name:"terms",type:"bytes",internalType:"bytes"},{name:"args",type:"bytes",internalType:"bytes"}]},{name:"salt",type:"uint256",internalType:"uint256"},{name:"signature",type:"bytes",internalType:"bytes"}]},{name:"salt",type:"bytes32",internalType:"bytes32"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"deactivationContextCount",inputs:[{name:"salt",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"deactivationDelegationHash",inputs:[{name:"salt",type:"bytes32",internalType:"bytes32"},{name:"contextIndex",type:"uint256",internalType:"uint256"}],outputs:[{name:"delegationHash",type:"bytes32",internalType:"bytes32"}],stateMutability:"view"},{type:"function",name:"deactivationSaltUsed",inputs:[{name:"salt",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"used",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"delegationActionIncentiveToken",inputs:[],outputs:[{name:"",type:"address",internalType:"contract IERC20Metadata"}],stateMutability:"view"},{type:"function",name:"delegationManager",inputs:[],outputs:[{name:"",type:"address",internalType:"contract IDelegationManager"}],stateMutability:"view"},{type:"function",name:"delegationRewardClaimed",inputs:[{name:"delegationHash",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"claimed",type:"bool",internalType:"bool"}],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"},{name:"salt",type:"bytes32",internalType:"bytes32"}]}],outputs:[{name:"tokenId",type:"uint256",internalType:"uint256"}],stateMutability:"nonpayable"},{type:"function",name:"membershipBadge",inputs:[],outputs:[{name:"",type:"address",internalType:"contract ICashieMembershipBadge"}],stateMutability:"view"},{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:"_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:"_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:"_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:"reactivateAccount",inputs:[{name:"accountAddress",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{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"}],outputs:[],stateMutability:"nonpayable"},{type:"event",name:"AccountDeactivated",inputs:[{name:"account",type:"address",indexed:!0,internalType:"address"},{name:"salt",type:"bytes32",indexed:!0,internalType:"bytes32"},{name:"delegationHashes",type:"bytes32[]",indexed:!1,internalType:"bytes32[]"},{name:"disabledCount",type:"uint256",indexed:!1,internalType:"uint256"},{name:"rewardAmount",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{type:"event",name:"AccountReactivated",inputs:[{name:"account",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{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:"beneficiaryAddress",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:"DeactivationSaltAlreadyUsed",inputs:[{name:"salt",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"DelegationAccountMismatch",inputs:[{name:"account",type:"address",internalType:"address"},{name:"delegator",type:"address",internalType:"address"}]},{type:"error",name:"DelegationActionIncentiveTokenNotConfigured",inputs:[]},{type:"error",name:"DelegationRewardAlreadyClaimed",inputs:[{name:"delegationHash",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"EmptyDelegationChain",inputs:[]},{type:"error",name:"EmptyPermissionContexts",inputs:[]},{type:"error",name:"EmptyRedeemDelegations",inputs:[]},{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:"InvalidDelegationManager",inputs:[]},{type:"error",name:"InvalidIdentityVerificationProver",inputs:[]},{type:"error",name:"MembershipBadgeNotActive",inputs:[]},{type:"error",name:"MembershipBadgeNotMinted",inputs:[]},{type:"error",name:"NotAccountOwner",inputs:[{name:"account",type:"address",internalType:"address"},{name:"caller",type:"address",internalType:"address"}]},{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:[]}],pi=[{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"}]}],yi=[{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:"",type:"address",internalType:"address"},{name:"",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"},{name:"salt",type:"bytes32",internalType:"bytes32"}]}],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:"nonpayable"},{type:"function",name:"setApprovalForAll",inputs:[{name:"",type:"address",internalType:"address"},{name:"",type:"bool",internalType:"bool"}],outputs:[],stateMutability:"pure"},{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:"nonpayable"},{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:"IdentityAlreadyMinted",inputs:[{name:"tokenId",type:"uint256",internalType:"uint256"},{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"}]},{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"}]}],ui=[{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"}]}],mi=[{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"}]}],ci=[{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:"disableByBadgeId",inputs:[{name:"badgeId",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"disableByIdentityTokenId",inputs:[{name:"identityTokenId",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"enableByBadgeId",inputs:[{name:"badgeId",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"enableByIdentityTokenId",inputs:[{name:"identityTokenId",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"identityContract",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"isMembershipActive",inputs:[{name:"identityTokenId",type:"uint256",internalType:"uint256"}],outputs:[{name:"active",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"membershipState",inputs:[{name:"identityTokenId",type:"uint256",internalType:"uint256"}],outputs:[{name:"exists",type:"bool",internalType:"bool"},{name:"active",type:"bool",internalType:"bool"}],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 MembershipBadgeMintPayload",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:"chainId",type:"uint256",internalType:"uint256"},{name:"recipient",type:"address",internalType:"address"},{name:"membershipBadgeDetails",type:"tuple",internalType:"struct MembershipBadgeDetails",components:[{name:"isMembershipActive",type:"bool",internalType:"bool"}]},{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:"Disable",inputs:[{name:"badgeId",type:"uint256",indexed:!0,internalType:"uint256"}],anonymous:!1},{type:"event",name:"Enable",inputs:[{name:"badgeId",type:"uint256",indexed:!0,internalType:"uint256"}],anonymous:!1},{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:"MembershipBadgeAlreadyDisabled",inputs:[{name:"badgeId",type:"uint256",internalType:"uint256"}]},{type:"error",name:"MembershipBadgeAlreadyEnabled",inputs:[{name:"badgeId",type:"uint256",internalType:"uint256"}]},{type:"error",name:"MembershipBadgeAlreadyMinted",inputs:[{name:"badgeId",type:"uint256",internalType:"uint256"}]},{type:"error",name:"MembershipBadgeMintPayloadAlreadyClaimed",inputs:[{name:"hash",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"MembershipBadgeNotMinted",inputs:[{name:"identityTokenId",type:"uint256",internalType:"uint256"}]},{type:"error",name:"MembershipPayloadNotSetActive",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:"StringsInsufficientHexLength",inputs:[{name:"value",type:"uint256",internalType:"uint256"},{name:"length",type:"uint256",internalType:"uint256"}]}];var Ri=["payments","deposits","withdrawals","rewards"];import{toHex as We}from"viem";function gn(e){return Object.values(_).includes(e)}function Ui(e){return gn(e.intent.action)}function Hi(e){let{badgeId:t,badgeKind:n,identityContract:i,paymentIntentTrackingEntries:a}=e;if(a.length===0)return null;let o=a.filter(d=>d.status==="confirmed");if(o.length===0)return null;for(let d of o)if(d.txHash&&d.blockNumber)switch(n){case"receipt":{if(We(ue(i,d.intent,BigInt(d.blockNumber),ye.OneTime))===t)return d.txHash;break}case"paymentRecord":{if(We(Oe(i,d.intent,BigInt(d.blockNumber),ye.OneTime))===t)return d.txHash;break}}return null}import{keccak256 as fn}from"viem";function be(e){if(e===null||typeof e!="object")return e;if(Array.isArray(e))return e.map(be).sort((o,d)=>{let r=JSON.stringify(o),h=JSON.stringify(d);return r<h?-1:r>h?1:0});let t=e,n=Object.keys(t).sort(),i={};for(let a of n)i[a]=be(t[a]);return i}function bn(e){return JSON.stringify(be(e))}function he(e){let t=bn(e),n=new TextEncoder().encode(t);return fn(n)}var U=class extends Error{constructor(t){super(t),this.name="OcapValidationError"}};function hn(e,t){if(e.type!=="api")throw new U(`Unsupported resource type: ${e.type}`);if(!t.includes(e.audience))throw new U(`Audience not allowed: ${e.audience}`);if(!e.data?.endpoint||!Array.isArray(e.data.methods))throw new U("Invalid api resource: missing endpoint or methods")}function Vi(e){let{resources:t,allowedAudiences:n}=e,i=Array.isArray(t.api)?t.api:[];for(let d of i)hn(d,n);let a={resources:{api:i}},o=he(a);return{ocap:a,ocapId:o}}var Gi=300*1e3,An="Request OCAP";function Wi(e,t){let n=he({resources:t});return`${An}:${e}:${n}`}var xn=(i=>(i.ACCOUNT_SERVICE="account-service",i.PAYMENT_SERVICE="payment-service",i.IDV_SERVICE="idv-service",i))(xn||{});var Rn=(o=>(o[o.USER_REJECTED_REQUEST=4001]="USER_REJECTED_REQUEST",o[o.UNAUTHORIZED_ACCESS_ACCOUNT=4100]="UNAUTHORIZED_ACCESS_ACCOUNT",o[o.UNSUPPORTED_METHOD=4200]="UNSUPPORTED_METHOD",o[o.DISCONNECTED=4900]="DISCONNECTED",o[o.CHAIN_DISCONNECTED=4901]="CHAIN_DISCONNECTED",o))(Rn||{}),Pn=(r=>(r[r.UNSUPPORTED_NON_OPTIONAL_CAPABILITY=5700]="UNSUPPORTED_NON_OPTIONAL_CAPABILITY",r[r.UNSUPPORTED_CHAIN_ID=5710]="UNSUPPORTED_CHAIN_ID",r[r.DUPLICATE_BUNDLE_ID=5720]="DUPLICATE_BUNDLE_ID",r[r.UNKNOWN_BUNDLE_ID=5730]="UNKNOWN_BUNDLE_ID",r[r.BUNDLE_TOO_LARGE=5740]="BUNDLE_TOO_LARGE",r[r.ATOMIC_READY_WALLET_REJECTED_UPGRADE=5750]="ATOMIC_READY_WALLET_REJECTED_UPGRADE",r[r.ATOMICITY_NOT_SUPPORTED=5760]="ATOMICITY_NOT_SUPPORTED",r))(Pn||{}),Mn=(t=>(t[t.UNAUTHORIZED_ACCESS_RESTRICTED_METHOD=4101]="UNAUTHORIZED_ACCESS_RESTRICTED_METHOD",t))(Mn||{}),En=(n=>(n[n.INTERNAL_ERROR=-32001]="INTERNAL_ERROR",n[n.NO_SECURE_CONNECTION_ESTABLISHED=-32002]="NO_SECURE_CONNECTION_ESTABLISHED",n))(En||{}),_n=(t=>(t[t.INVALID_PARAMS=-32602]="INVALID_PARAMS",t))(_n||{}),wn={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."}},os=e=>{let t=wn[e];return t||{code:e,message:`Unknown error code: ${e}`}},qe=class extends Error{code;data;constructor({message:t,code:n,data:i}){super(t),this.code=n,this.data=i}};var C=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 q(t)}static Left(t){return new Ae(t)}static Right(t){return new q(t)}},Ae=class extends C{constructor(t){super(t)}map(t){return this}flatMap(t){return this}getOrElse(t){return t}isLeft(){return!0}isRight(){return!1}},q=class extends C{constructor(t){super(t)}map(t){return C.of(t(this.value))}flatMap(t){return t(this.value)}getOrElse(t){return this.value}isLeft(){return!1}isRight(){return!0}},ps=e=>e instanceof C;var us="/api/public/protocol-rpc";var Cn=(n=>(n[n.INDIVIDUAL=0]="INDIVIDUAL",n[n.BUSINESS=1]="BUSINESS",n))(Cn||{}),cs={1:"Business",0:"Individual"};export{Ri as ACCOUNT_STATEMENT_RECEIPT_KINDS,W as AccountIntentActions,f as BurnAuth,cs as CASHIE_ACCOUNT_TYPE_LABELS,yi as CASHIE_IDENTITY_SOUL_CONTRACT_ABI,xe as CASHIE_IDENTITY_SOUL_EIP712_NAME,Re as CASHIE_IDENTITY_SOUL_EIP712_VERSION,j as CASHIE_JSON_DATA_URI_BASE64_PREFIX,ci as CASHIE_MEMBERSHIP_BADGE_CONTRACT_ABI,$ as CASHIE_MEMBERSHIP_BADGE_METADATA_FORMAT,mi as CASHIE_PAYMENT_RECORD_BADGE_CONTRACT_ABI,z as CASHIE_PAYMENT_RECORD_BADGE_METADATA_FORMAT,ui as CASHIE_RECEIPT_BADGE_CONTRACT_ABI,V as CASHIE_RECEIPT_BADGE_METADATA_FORMAT,pi as CASHIE_ROUTER_GUARD_CONTRACT_ABI,di as CASHIE_ROUTER_V1_CONTRACT_ABI,Y as CASHIE_SVG_DATA_URI_BASE64_PREFIX,_n as COMMON_ERROR_CODES,Cn as CashieAccountType,Gi as DEFAULT_MAX_AGE_MS,Rn as EIP1193_ERROR_CODES,Pn as EIP5792_ERROR_CODES,K as ERC7715ValidationError,Mn as ERC7715_ERROR_CODES,C as Either,En as FATAL_ERROR_CODES,Bn as IDENTITY_MINT_CONSENT_EIP712_TYPE_STRING,_e as IDENTITY_MINT_EIP712_TYPES,Ee as IDENTITY_MINT_PAYLOAD_EIP712_TYPES,Sn as IDENTITY_MINT_PAYLOAD_EIP712_TYPE_STRING,nr as INTENT_ACTIONS,Be as IdentityIssuer,J as IdentityIssuerId,P as IdentityType,yt as JSON_IDENTITY_TYPE_LABEL_TO_IDENTITY_TYPE,An as OCAP_STATEMENT_PREFIX,xn as OcapAudiences,U as OcapValidationError,it as PLAID_IDV_ERROR_MESSAGE,Me as PRIMARY_TYPE_IDENTITY_MINT_CONSENT,Pe as PRIMARY_TYPE_IDENTITY_MINT_PAYLOAD,us as PROTOCOL_RPC_PROXY_PATH,_ as PaymentIntentActions,rt as PlaidIdvErrorCode,ye as ReceiptType,qe as RpcError,$e as SoulManager,T as addressSchema,F as assertUrl,ce as basePaymentDetailsDataSchema,M as baseScopeSchema,He as billingPeriodSchema,Se as buildCashieIdentitySoulDomain,Dn as buildIdentityCommitmentHash,et as buildIdentityMintConsentTypedData,tt as buildIdentityMintProofTypedData,he as buildOcapId,X as burnAuthSchema,ne as bytes32HexSchema,bn as canonicalOcapPayload,pt as cashieIdentitySoulIdentityTypeJsonSchema,oe as cashieIdentitySoulTokenMetadataJsonSchema,Aa as cashieIdentitySoulTokenMetadataSchema,se as cashieMembershipBadgeMetadataSchema,ie as cashiePaymentRecordBadgeMetadataSchema,re as cashieReceiptBadgeMetadataSchema,ae as cashieReceiptBadgeSoulBoundToSchema,ze as createPaymentRpcClient,Mt as decodeCashieJsonDataUriToUtf8,B as decodeCashieSvgDataUriToUtf8,In as encodeIntent,ln as encodeIntentData,Rt as encodeMembershipBadgeMintPayload,ft as encodePaymentRecordBadgeMintPayload,ct as encodeReceiptBadgeMintPayload,le as erc20TokenPaymentPermissionSchema,Q as expiryRuleSchema,Hi as findTransactionHashForBadgeId,Vn as generateSalt,os as getErrorMessage,Tn as getIntentDataHash,Vr as getIntentHash,Pt as getMembershipBadgeMintPayloadHash,bt as getPaymentRecordBadgeMintPayloadHash,Ut as getPermissionsInfoResultParamsSchema,lt as getReceiptBadgeMintPayloadHash,Ft as getSupportedExecutionPermissionsResultSchema,Fn as hashIdentityMintConsentTypedData,Ln as hashIdentityMintProofTypedData,x as hex0xSchema,l as hexSchema,Nn as identityAccountFor,ee as identityMintRuleSchema,L as identityMintSignPayloadWithSignatureSchema,S as identityTokenIdFor,Z as identityTypeSchema,v as initCodeDataSchema,ps as isEither,gn as isPaymentIntentAction,Ui as isPaymentIntentTrackingEntry,Ma as membershipBadgeIdFromMintPayload,Fa as parseBasePaymentDetailsData,da as parseBaseScopeSchema,Ua as parseBillingPeriod,Ne as parseCashieIdentitySoulTokenMetadata,O as parseCashieJsonDataUriJson,wt as parseCashieMembershipBadgeMetadata,Ue as parseCashieMembershipBadgeMetadataFromBadgeUri,wa as parseCashieMetadataDataUri,_t as parseCashiePaymentRecordBadgeMetadata,ke as parseCashiePaymentRecordBadgeMetadataFromBadgeUri,Et as parseCashieReceiptBadgeMetadata,De as parseCashieReceiptBadgeMetadataFromBadgeUri,ja as parseERC20TokenPaymentPermission,la as parseExpiryRule,Qa as parseGetPermissionsInfoResultParams,er as parseGetSupportedExecutionPermissionsResult,Ta as parseIdentityMintRule,qa as parseInitCodeData,La as parsePaymentDetails,Ha as parsePaymentDetailsType,Ya as parsePermission,Ja as parsePermissionRequest,Za as parsePermissionResponse,Ka as parsePermissionsRequest,Xa as parsePermissionsResponse,Ia as parseRule,m as parseWithSchema,Fe as paymentDetailsSchema,me as paymentDetailsTypeSchema,ht as paymentRecordBadgeIdFromMintPayload,Oe as paymentRecordBadgeIdFromPaymentIntent,At as paymentRecordBadgeMintPayloadFromPaymentIntent,Ie as permissionRequestSchema,Le as permissionResponseSchema,Te as permissionSchema,ka as permissionSchemas,Dt as permissionsRequestSchema,kt as permissionsResponseSchema,Xn as plaidIdvError,Wi as prepareStatement,Tt as receiptBadgeIdFromMintPayload,ue as receiptBadgeIdFromPaymentIntent,It as receiptBadgeMintPayloadFromPaymentIntent,Nt as recurringPaymentDetailsSchema,Ot as rewardItemSchema,te as ruleSchema,ca as ruleSchemas,vt as singlePaymentDetailsSchema,Ht as supportedExecutionPermissionInfoSchema,Vi as validateAndBuildOcap};
2
2
  //# sourceMappingURL=index.mjs.map