UNPKG

@base-org/account

Version:
1 lines 815 kB
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).base={})}(this,function(e){"use strict";const t="https://rpc.wallet.coinbase.com",n="@base-org/account",a="2.4.0";function r(e,t){let n;try{n=e()}catch(e){return}const a={getItem:e=>{var t;const a=e=>null===e?null:JSON.parse(e,void 0),r=null!=(t=n.getItem(e))?t:null;return r instanceof Promise?r.then(a):a(r)},setItem:(e,t)=>n.setItem(e,JSON.stringify(t,void 0)),removeItem:e=>n.removeItem(e)};return a}const s=e=>t=>{try{const n=e(t);return n instanceof Promise?n:{then:e=>s(e)(n),catch(e){return this}}}catch(e){return{then(e){return this},catch:t=>s(t)(e)}}},o=(e,t)=>(n,a,o)=>{let i={storage:r(()=>localStorage),partialize:e=>e,version:0,merge:(e,t)=>({...t,...e}),...t},c=!1;const l=new Set,u=new Set;let d=i.storage;if(!d)return e((...e)=>{console.warn(`[zustand persist middleware] Unable to update item '${i.name}', the given storage is currently unavailable.`),n(...e)},a,o);const p=()=>{const e=i.partialize({...a()});return d.setItem(i.name,{state:e,version:i.version})},m=o.setState;o.setState=(e,t)=>{m(e,t),p()};const h=e((...e)=>{n(...e),p()},a,o);let f;o.getInitialState=()=>h;const b=()=>{var e,t;if(!d)return;c=!1,l.forEach(e=>{var t;return e(null!=(t=a())?t:h)});const r=(null==(t=i.onRehydrateStorage)?void 0:t.call(i,null!=(e=a())?e:h))||void 0;return s(d.getItem.bind(d))(i.name).then(e=>{if(e){if("number"!=typeof e.version||e.version===i.version)return[!1,e.state];if(i.migrate){const t=i.migrate(e.state,e.version);return t instanceof Promise?t.then(e=>[!0,e]):[!0,t]}console.error("State loaded from storage couldn't be migrated since no migrate function was provided")}return[!1,void 0]}).then(e=>{var t;const[r,s]=e;if(f=i.merge(s,null!=(t=a())?t:h),n(f,!0),r)return p()}).then(()=>{null==r||r(f,void 0),f=a(),c=!0,u.forEach(e=>e(f))}).catch(e=>{null==r||r(void 0,e)})};return o.persist={setOptions:e=>{i={...i,...e},e.storage&&(d=e.storage)},clearStorage:()=>{null==d||d.removeItem(i.name)},getOptions:()=>i,rehydrate:()=>b(),hasHydrated:()=>c,onHydrate:e=>(l.add(e),()=>{l.delete(e)}),onFinishHydration:e=>(u.add(e),()=>{u.delete(e)})},i.skipHydration||b(),f||h},i=e=>{let t;const n=new Set,a=(e,a)=>{const r="function"==typeof e?e(t):e;if(!Object.is(r,t)){const e=t;t=(null!=a?a:"object"!=typeof r||null===r)?r:Object.assign({},t,r),n.forEach(n=>n(t,e))}},r=()=>t,s={setState:a,getState:r,getInitialState:()=>o,subscribe:e=>(n.add(e),()=>n.delete(e))},o=t=e(a,r,s);return s},c=e=>e?i(e):i,l=()=>({config:{version:a}}),u=c(o((...e)=>({chains:[],keys:{},account:{},subAccount:void 0,spendPermissions:[],...l(...e),subAccountConfig:{}}),{name:"base-acc-sdk.store",storage:r(()=>localStorage),partialize:e=>({chains:e.chains,keys:e.keys,account:e.account,subAccount:e.subAccount,spendPermissions:e.spendPermissions,config:e.config})})),d={get:()=>u.getState().spendPermissions,set:e=>{u.setState({spendPermissions:e})},clear:()=>{u.setState({spendPermissions:[]})}},p={get:()=>u.getState().chains,set:e=>{u.setState({chains:e})},clear:()=>{u.setState({chains:[]})}},m={get:()=>u.getState().config,set:e=>{u.setState(t=>({config:{...t.config,...e}}))}},h={subAccounts:{get:()=>u.getState().subAccount,set:e=>{u.setState(t=>({subAccount:t.subAccount?{...t.subAccount,...e}:{address:e.address,...e}}))},clear:()=>{u.setState({subAccount:void 0})}},subAccountsConfig:{get:()=>u.getState().subAccountConfig,set:e=>{u.setState(t=>({subAccountConfig:{...t.subAccountConfig,...e}}))},clear:()=>{u.setState({subAccountConfig:{}})}},spendPermissions:d,account:{get:()=>u.getState().account,set:e=>{u.setState(t=>({account:{...t.account,...e}}))},clear:()=>{u.setState({account:{}})}},chains:p,keys:{get:e=>u.getState().keys[e],set:(e,t)=>{u.setState(n=>({keys:{...n.keys,[e]:t}}))},clear:()=>{u.setState({keys:{}})}},config:m},f={...u,...h},b=()=>{if("undefined"!=typeof window){const e=f.config.get().deviceId??crypto?.randomUUID()??"";if(window.ClientAnalytics){const{init:t,identify:n,PlatformName:a}=window.ClientAnalytics;t({isProd:!0,amplitudeApiKey:"c66737ad47ec354ced777935b0af822e",platform:a.web,projectName:"base_account_sdk",showDebugLogging:!1,version:"1.0.0",apiEndpoint:"https://cca-lite.coinbase.com"}),n({deviceId:e}),f.config.set({deviceId:e})}}},y="0xf85210B21cC50302F477BA56686d2019dC9b67Ad",g=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[{name:"owner",type:"bytes"}],name:"AlreadyOwner",type:"error"},{inputs:[],name:"Initialized",type:"error"},{inputs:[{name:"owner",type:"bytes"}],name:"InvalidEthereumAddressOwner",type:"error"},{inputs:[{name:"key",type:"uint256"}],name:"InvalidNonceKey",type:"error"},{inputs:[{name:"owner",type:"bytes"}],name:"InvalidOwnerBytesLength",type:"error"},{inputs:[],name:"LastOwner",type:"error"},{inputs:[{name:"index",type:"uint256"}],name:"NoOwnerAtIndex",type:"error"},{inputs:[{name:"ownersRemaining",type:"uint256"}],name:"NotLastOwner",type:"error"},{inputs:[{name:"selector",type:"bytes4"}],name:"SelectorNotAllowed",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"UnauthorizedCallContext",type:"error"},{inputs:[],name:"UpgradeFailed",type:"error"},{inputs:[{name:"index",type:"uint256"},{name:"expectedOwner",type:"bytes"},{name:"actualOwner",type:"bytes"}],name:"WrongOwnerAtIndex",type:"error"},{anonymous:!1,inputs:[{indexed:!0,name:"index",type:"uint256"},{indexed:!1,name:"owner",type:"bytes"}],name:"AddOwner",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"index",type:"uint256"},{indexed:!1,name:"owner",type:"bytes"}],name:"RemoveOwner",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"implementation",type:"address"}],name:"Upgraded",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"REPLAYABLE_NONCE_KEY",outputs:[{name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{name:"owner",type:"address"}],name:"addOwnerAddress",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{name:"x",type:"bytes32"},{name:"y",type:"bytes32"}],name:"addOwnerPublicKey",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{name:"functionSelector",type:"bytes4"}],name:"canSkipChainIdValidation",outputs:[{name:"",type:"bool"}],stateMutability:"pure",type:"function"},{inputs:[],name:"domainSeparator",outputs:[{name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"eip712Domain",outputs:[{name:"fields",type:"bytes1"},{name:"name",type:"string"},{name:"version",type:"string"},{name:"chainId",type:"uint256"},{name:"verifyingContract",type:"address"},{name:"salt",type:"bytes32"},{name:"extensions",type:"uint256[]"}],stateMutability:"view",type:"function"},{inputs:[],name:"entryPoint",outputs:[{name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{name:"target",type:"address"},{name:"value",type:"uint256"},{name:"data",type:"bytes"}],name:"execute",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{components:[{name:"target",type:"address"},{name:"value",type:"uint256"},{name:"data",type:"bytes"}],name:"calls",type:"tuple[]"}],name:"executeBatch",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{name:"calls",type:"bytes[]"}],name:"executeWithoutChainIdValidation",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{components:[{name:"sender",type:"address"},{name:"nonce",type:"uint256"},{name:"initCode",type:"bytes"},{name:"callData",type:"bytes"},{name:"callGasLimit",type:"uint256"},{name:"verificationGasLimit",type:"uint256"},{name:"preVerificationGas",type:"uint256"},{name:"maxFeePerGas",type:"uint256"},{name:"maxPriorityFeePerGas",type:"uint256"},{name:"paymasterAndData",type:"bytes"},{name:"signature",type:"bytes"}],name:"userOp",type:"tuple"}],name:"getUserOpHashWithoutChainId",outputs:[{name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"implementation",outputs:[{name:"$",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{name:"owners",type:"bytes[]"}],name:"initialize",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{name:"account",type:"address"}],name:"isOwnerAddress",outputs:[{name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{name:"account",type:"bytes"}],name:"isOwnerBytes",outputs:[{name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{name:"x",type:"bytes32"},{name:"y",type:"bytes32"}],name:"isOwnerPublicKey",outputs:[{name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{name:"hash",type:"bytes32"},{name:"signature",type:"bytes"}],name:"isValidSignature",outputs:[{name:"result",type:"bytes4"}],stateMutability:"view",type:"function"},{inputs:[],name:"nextOwnerIndex",outputs:[{name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{name:"index",type:"uint256"}],name:"ownerAtIndex",outputs:[{name:"",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"ownerCount",outputs:[{name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"proxiableUUID",outputs:[{name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{name:"index",type:"uint256"},{name:"owner",type:"bytes"}],name:"removeLastOwner",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{name:"index",type:"uint256"},{name:"owner",type:"bytes"}],name:"removeOwnerAtIndex",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"removedOwnersCount",outputs:[{name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{name:"hash",type:"bytes32"}],name:"replaySafeHash",outputs:[{name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{name:"newImplementation",type:"address"},{name:"data",type:"bytes"}],name:"upgradeToAndCall",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{components:[{name:"sender",type:"address"},{name:"nonce",type:"uint256"},{name:"initCode",type:"bytes"},{name:"callData",type:"bytes"},{name:"callGasLimit",type:"uint256"},{name:"verificationGasLimit",type:"uint256"},{name:"preVerificationGas",type:"uint256"},{name:"maxFeePerGas",type:"uint256"},{name:"maxPriorityFeePerGas",type:"uint256"},{name:"paymasterAndData",type:"bytes"},{name:"signature",type:"bytes"}],name:"userOp",type:"tuple"},{name:"userOpHash",type:"bytes32"},{name:"missingAccountFunds",type:"uint256"}],name:"validateUserOp",outputs:[{name:"validationData",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}],w=[{inputs:[{name:"implementation_",type:"address"}],stateMutability:"payable",type:"constructor"},{inputs:[],name:"OwnerRequired",type:"error"},{inputs:[{name:"owners",type:"bytes[]"},{name:"nonce",type:"uint256"}],name:"createAccount",outputs:[{name:"account",type:"address"}],stateMutability:"payable",type:"function"},{inputs:[{name:"owners",type:"bytes[]"},{name:"nonce",type:"uint256"}],name:"getAddress",outputs:[{name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"implementation",outputs:[{name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"initCodeHash",outputs:[{name:"",type:"bytes32"}],stateMutability:"view",type:"function"}],v=[{type:"constructor",inputs:[{name:"publicERC6492Validator",type:"address",internalType:"contract PublicERC6492Validator"},{name:"magicSpend",type:"address",internalType:"address"}],stateMutability:"nonpayable"},{type:"receive",stateMutability:"payable"},{type:"function",name:"MAGIC_SPEND",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"NATIVE_TOKEN",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"PERMISSION_DETAILS_TYPEHASH",inputs:[],outputs:[{name:"",type:"bytes32",internalType:"bytes32"}],stateMutability:"view"},{type:"function",name:"PUBLIC_ERC6492_VALIDATOR",inputs:[],outputs:[{name:"",type:"address",internalType:"contract PublicERC6492Validator"}],stateMutability:"view"},{type:"function",name:"SPEND_PERMISSION_BATCH_TYPEHASH",inputs:[],outputs:[{name:"",type:"bytes32",internalType:"bytes32"}],stateMutability:"view"},{type:"function",name:"SPEND_PERMISSION_TYPEHASH",inputs:[],outputs:[{name:"",type:"bytes32",internalType:"bytes32"}],stateMutability:"view"},{type:"function",name:"approve",inputs:[{name:"spendPermission",type:"tuple",internalType:"struct SpendPermissionManager.SpendPermission",components:[{name:"account",type:"address",internalType:"address"},{name:"spender",type:"address",internalType:"address"},{name:"token",type:"address",internalType:"address"},{name:"allowance",type:"uint160",internalType:"uint160"},{name:"period",type:"uint48",internalType:"uint48"},{name:"start",type:"uint48",internalType:"uint48"},{name:"end",type:"uint48",internalType:"uint48"},{name:"salt",type:"uint256",internalType:"uint256"},{name:"extraData",type:"bytes",internalType:"bytes"}]}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"nonpayable"},{type:"function",name:"approveBatchWithSignature",inputs:[{name:"spendPermissionBatch",type:"tuple",internalType:"struct SpendPermissionManager.SpendPermissionBatch",components:[{name:"account",type:"address",internalType:"address"},{name:"period",type:"uint48",internalType:"uint48"},{name:"start",type:"uint48",internalType:"uint48"},{name:"end",type:"uint48",internalType:"uint48"},{name:"permissions",type:"tuple[]",internalType:"struct SpendPermissionManager.PermissionDetails[]",components:[{name:"spender",type:"address",internalType:"address"},{name:"token",type:"address",internalType:"address"},{name:"allowance",type:"uint160",internalType:"uint160"},{name:"salt",type:"uint256",internalType:"uint256"},{name:"extraData",type:"bytes",internalType:"bytes"}]}]},{name:"signature",type:"bytes",internalType:"bytes"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"nonpayable"},{type:"function",name:"approveWithRevoke",inputs:[{name:"permissionToApprove",type:"tuple",internalType:"struct SpendPermissionManager.SpendPermission",components:[{name:"account",type:"address",internalType:"address"},{name:"spender",type:"address",internalType:"address"},{name:"token",type:"address",internalType:"address"},{name:"allowance",type:"uint160",internalType:"uint160"},{name:"period",type:"uint48",internalType:"uint48"},{name:"start",type:"uint48",internalType:"uint48"},{name:"end",type:"uint48",internalType:"uint48"},{name:"salt",type:"uint256",internalType:"uint256"},{name:"extraData",type:"bytes",internalType:"bytes"}]},{name:"permissionToRevoke",type:"tuple",internalType:"struct SpendPermissionManager.SpendPermission",components:[{name:"account",type:"address",internalType:"address"},{name:"spender",type:"address",internalType:"address"},{name:"token",type:"address",internalType:"address"},{name:"allowance",type:"uint160",internalType:"uint160"},{name:"period",type:"uint48",internalType:"uint48"},{name:"start",type:"uint48",internalType:"uint48"},{name:"end",type:"uint48",internalType:"uint48"},{name:"salt",type:"uint256",internalType:"uint256"},{name:"extraData",type:"bytes",internalType:"bytes"}]},{name:"expectedLastUpdatedPeriod",type:"tuple",internalType:"struct SpendPermissionManager.PeriodSpend",components:[{name:"start",type:"uint48",internalType:"uint48"},{name:"end",type:"uint48",internalType:"uint48"},{name:"spend",type:"uint160",internalType:"uint160"}]}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"nonpayable"},{type:"function",name:"approveWithSignature",inputs:[{name:"spendPermission",type:"tuple",internalType:"struct SpendPermissionManager.SpendPermission",components:[{name:"account",type:"address",internalType:"address"},{name:"spender",type:"address",internalType:"address"},{name:"token",type:"address",internalType:"address"},{name:"allowance",type:"uint160",internalType:"uint160"},{name:"period",type:"uint48",internalType:"uint48"},{name:"start",type:"uint48",internalType:"uint48"},{name:"end",type:"uint48",internalType:"uint48"},{name:"salt",type:"uint256",internalType:"uint256"},{name:"extraData",type:"bytes",internalType:"bytes"}]},{name:"signature",type:"bytes",internalType:"bytes"}],outputs:[{name:"",type:"bool",internalType:"bool"}],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:"getBatchHash",inputs:[{name:"spendPermissionBatch",type:"tuple",internalType:"struct SpendPermissionManager.SpendPermissionBatch",components:[{name:"account",type:"address",internalType:"address"},{name:"period",type:"uint48",internalType:"uint48"},{name:"start",type:"uint48",internalType:"uint48"},{name:"end",type:"uint48",internalType:"uint48"},{name:"permissions",type:"tuple[]",internalType:"struct SpendPermissionManager.PermissionDetails[]",components:[{name:"spender",type:"address",internalType:"address"},{name:"token",type:"address",internalType:"address"},{name:"allowance",type:"uint160",internalType:"uint160"},{name:"salt",type:"uint256",internalType:"uint256"},{name:"extraData",type:"bytes",internalType:"bytes"}]}]}],outputs:[{name:"",type:"bytes32",internalType:"bytes32"}],stateMutability:"view"},{type:"function",name:"getCurrentPeriod",inputs:[{name:"spendPermission",type:"tuple",internalType:"struct SpendPermissionManager.SpendPermission",components:[{name:"account",type:"address",internalType:"address"},{name:"spender",type:"address",internalType:"address"},{name:"token",type:"address",internalType:"address"},{name:"allowance",type:"uint160",internalType:"uint160"},{name:"period",type:"uint48",internalType:"uint48"},{name:"start",type:"uint48",internalType:"uint48"},{name:"end",type:"uint48",internalType:"uint48"},{name:"salt",type:"uint256",internalType:"uint256"},{name:"extraData",type:"bytes",internalType:"bytes"}]}],outputs:[{name:"",type:"tuple",internalType:"struct SpendPermissionManager.PeriodSpend",components:[{name:"start",type:"uint48",internalType:"uint48"},{name:"end",type:"uint48",internalType:"uint48"},{name:"spend",type:"uint160",internalType:"uint160"}]}],stateMutability:"view"},{type:"function",name:"getHash",inputs:[{name:"spendPermission",type:"tuple",internalType:"struct SpendPermissionManager.SpendPermission",components:[{name:"account",type:"address",internalType:"address"},{name:"spender",type:"address",internalType:"address"},{name:"token",type:"address",internalType:"address"},{name:"allowance",type:"uint160",internalType:"uint160"},{name:"period",type:"uint48",internalType:"uint48"},{name:"start",type:"uint48",internalType:"uint48"},{name:"end",type:"uint48",internalType:"uint48"},{name:"salt",type:"uint256",internalType:"uint256"},{name:"extraData",type:"bytes",internalType:"bytes"}]}],outputs:[{name:"",type:"bytes32",internalType:"bytes32"}],stateMutability:"view"},{type:"function",name:"getLastUpdatedPeriod",inputs:[{name:"spendPermission",type:"tuple",internalType:"struct SpendPermissionManager.SpendPermission",components:[{name:"account",type:"address",internalType:"address"},{name:"spender",type:"address",internalType:"address"},{name:"token",type:"address",internalType:"address"},{name:"allowance",type:"uint160",internalType:"uint160"},{name:"period",type:"uint48",internalType:"uint48"},{name:"start",type:"uint48",internalType:"uint48"},{name:"end",type:"uint48",internalType:"uint48"},{name:"salt",type:"uint256",internalType:"uint256"},{name:"extraData",type:"bytes",internalType:"bytes"}]}],outputs:[{name:"",type:"tuple",internalType:"struct SpendPermissionManager.PeriodSpend",components:[{name:"start",type:"uint48",internalType:"uint48"},{name:"end",type:"uint48",internalType:"uint48"},{name:"spend",type:"uint160",internalType:"uint160"}]}],stateMutability:"view"},{type:"function",name:"isApproved",inputs:[{name:"spendPermission",type:"tuple",internalType:"struct SpendPermissionManager.SpendPermission",components:[{name:"account",type:"address",internalType:"address"},{name:"spender",type:"address",internalType:"address"},{name:"token",type:"address",internalType:"address"},{name:"allowance",type:"uint160",internalType:"uint160"},{name:"period",type:"uint48",internalType:"uint48"},{name:"start",type:"uint48",internalType:"uint48"},{name:"end",type:"uint48",internalType:"uint48"},{name:"salt",type:"uint256",internalType:"uint256"},{name:"extraData",type:"bytes",internalType:"bytes"}]}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isRevoked",inputs:[{name:"spendPermission",type:"tuple",internalType:"struct SpendPermissionManager.SpendPermission",components:[{name:"account",type:"address",internalType:"address"},{name:"spender",type:"address",internalType:"address"},{name:"token",type:"address",internalType:"address"},{name:"allowance",type:"uint160",internalType:"uint160"},{name:"period",type:"uint48",internalType:"uint48"},{name:"start",type:"uint48",internalType:"uint48"},{name:"end",type:"uint48",internalType:"uint48"},{name:"salt",type:"uint256",internalType:"uint256"},{name:"extraData",type:"bytes",internalType:"bytes"}]}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isValid",inputs:[{name:"spendPermission",type:"tuple",internalType:"struct SpendPermissionManager.SpendPermission",components:[{name:"account",type:"address",internalType:"address"},{name:"spender",type:"address",internalType:"address"},{name:"token",type:"address",internalType:"address"},{name:"allowance",type:"uint160",internalType:"uint160"},{name:"period",type:"uint48",internalType:"uint48"},{name:"start",type:"uint48",internalType:"uint48"},{name:"end",type:"uint48",internalType:"uint48"},{name:"salt",type:"uint256",internalType:"uint256"},{name:"extraData",type:"bytes",internalType:"bytes"}]}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"revoke",inputs:[{name:"spendPermission",type:"tuple",internalType:"struct SpendPermissionManager.SpendPermission",components:[{name:"account",type:"address",internalType:"address"},{name:"spender",type:"address",internalType:"address"},{name:"token",type:"address",internalType:"address"},{name:"allowance",type:"uint160",internalType:"uint160"},{name:"period",type:"uint48",internalType:"uint48"},{name:"start",type:"uint48",internalType:"uint48"},{name:"end",type:"uint48",internalType:"uint48"},{name:"salt",type:"uint256",internalType:"uint256"},{name:"extraData",type:"bytes",internalType:"bytes"}]}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"revokeAsSpender",inputs:[{name:"spendPermission",type:"tuple",internalType:"struct SpendPermissionManager.SpendPermission",components:[{name:"account",type:"address",internalType:"address"},{name:"spender",type:"address",internalType:"address"},{name:"token",type:"address",internalType:"address"},{name:"allowance",type:"uint160",internalType:"uint160"},{name:"period",type:"uint48",internalType:"uint48"},{name:"start",type:"uint48",internalType:"uint48"},{name:"end",type:"uint48",internalType:"uint48"},{name:"salt",type:"uint256",internalType:"uint256"},{name:"extraData",type:"bytes",internalType:"bytes"}]}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"spend",inputs:[{name:"spendPermission",type:"tuple",internalType:"struct SpendPermissionManager.SpendPermission",components:[{name:"account",type:"address",internalType:"address"},{name:"spender",type:"address",internalType:"address"},{name:"token",type:"address",internalType:"address"},{name:"allowance",type:"uint160",internalType:"uint160"},{name:"period",type:"uint48",internalType:"uint48"},{name:"start",type:"uint48",internalType:"uint48"},{name:"end",type:"uint48",internalType:"uint48"},{name:"salt",type:"uint256",internalType:"uint256"},{name:"extraData",type:"bytes",internalType:"bytes"}]},{name:"value",type:"uint160",internalType:"uint160"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"spendWithWithdraw",inputs:[{name:"spendPermission",type:"tuple",internalType:"struct SpendPermissionManager.SpendPermission",components:[{name:"account",type:"address",internalType:"address"},{name:"spender",type:"address",internalType:"address"},{name:"token",type:"address",internalType:"address"},{name:"allowance",type:"uint160",internalType:"uint160"},{name:"period",type:"uint48",internalType:"uint48"},{name:"start",type:"uint48",internalType:"uint48"},{name:"end",type:"uint48",internalType:"uint48"},{name:"salt",type:"uint256",internalType:"uint256"},{name:"extraData",type:"bytes",internalType:"bytes"}]},{name:"value",type:"uint160",internalType:"uint160"},{name:"withdrawRequest",type:"tuple",internalType:"struct MagicSpend.WithdrawRequest",components:[{name:"signature",type:"bytes",internalType:"bytes"},{name:"asset",type:"address",internalType:"address"},{name:"amount",type:"uint256",internalType:"uint256"},{name:"nonce",type:"uint256",internalType:"uint256"},{name:"expiry",type:"uint48",internalType:"uint48"}]}],outputs:[],stateMutability:"nonpayable"},{type:"event",name:"SpendPermissionApproved",inputs:[{name:"hash",type:"bytes32",indexed:!0,internalType:"bytes32"},{name:"spendPermission",type:"tuple",indexed:!1,internalType:"struct SpendPermissionManager.SpendPermission",components:[{name:"account",type:"address",internalType:"address"},{name:"spender",type:"address",internalType:"address"},{name:"token",type:"address",internalType:"address"},{name:"allowance",type:"uint160",internalType:"uint160"},{name:"period",type:"uint48",internalType:"uint48"},{name:"start",type:"uint48",internalType:"uint48"},{name:"end",type:"uint48",internalType:"uint48"},{name:"salt",type:"uint256",internalType:"uint256"},{name:"extraData",type:"bytes",internalType:"bytes"}]}],anonymous:!1},{type:"event",name:"SpendPermissionRevoked",inputs:[{name:"hash",type:"bytes32",indexed:!0,internalType:"bytes32"},{name:"spendPermission",type:"tuple",indexed:!1,internalType:"struct SpendPermissionManager.SpendPermission",components:[{name:"account",type:"address",internalType:"address"},{name:"spender",type:"address",internalType:"address"},{name:"token",type:"address",internalType:"address"},{name:"allowance",type:"uint160",internalType:"uint160"},{name:"period",type:"uint48",internalType:"uint48"},{name:"start",type:"uint48",internalType:"uint48"},{name:"end",type:"uint48",internalType:"uint48"},{name:"salt",type:"uint256",internalType:"uint256"},{name:"extraData",type:"bytes",internalType:"bytes"}]}],anonymous:!1},{type:"event",name:"SpendPermissionUsed",inputs:[{name:"hash",type:"bytes32",indexed:!0,internalType:"bytes32"},{name:"account",type:"address",indexed:!0,internalType:"address"},{name:"spender",type:"address",indexed:!0,internalType:"address"},{name:"token",type:"address",indexed:!1,internalType:"address"},{name:"periodSpend",type:"tuple",indexed:!1,internalType:"struct SpendPermissionManager.PeriodSpend",components:[{name:"start",type:"uint48",internalType:"uint48"},{name:"end",type:"uint48",internalType:"uint48"},{name:"spend",type:"uint160",internalType:"uint160"}]}],anonymous:!1},{type:"error",name:"AfterSpendPermissionEnd",inputs:[{name:"currentTimestamp",type:"uint48",internalType:"uint48"},{name:"end",type:"uint48",internalType:"uint48"}]},{type:"error",name:"BeforeSpendPermissionStart",inputs:[{name:"currentTimestamp",type:"uint48",internalType:"uint48"},{name:"start",type:"uint48",internalType:"uint48"}]},{type:"error",name:"ERC721TokenNotSupported",inputs:[{name:"token",type:"address",internalType:"address"}]},{type:"error",name:"EmptySpendPermissionBatch",inputs:[]},{type:"error",name:"ExceededSpendPermission",inputs:[{name:"value",type:"uint256",internalType:"uint256"},{name:"allowance",type:"uint256",internalType:"uint256"}]},{type:"error",name:"InvalidLastUpdatedPeriod",inputs:[{name:"actualLastUpdatedPeriod",type:"tuple",internalType:"struct SpendPermissionManager.PeriodSpend",components:[{name:"start",type:"uint48",internalType:"uint48"},{name:"end",type:"uint48",internalType:"uint48"},{name:"spend",type:"uint160",internalType:"uint160"}]},{name:"expectedLastUpdatedPeriod",type:"tuple",internalType:"struct SpendPermissionManager.PeriodSpend",components:[{name:"start",type:"uint48",internalType:"uint48"},{name:"end",type:"uint48",internalType:"uint48"},{name:"spend",type:"uint160",internalType:"uint160"}]}]},{type:"error",name:"InvalidSender",inputs:[{name:"sender",type:"address",internalType:"address"},{name:"expected",type:"address",internalType:"address"}]},{type:"error",name:"InvalidSignature",inputs:[]},{type:"error",name:"InvalidStartEnd",inputs:[{name:"start",type:"uint48",internalType:"uint48"},{name:"end",type:"uint48",internalType:"uint48"}]},{type:"error",name:"InvalidWithdrawRequestNonce",inputs:[{name:"noncePostfix",type:"uint128",internalType:"uint128"},{name:"permissionHashPostfix",type:"uint128",internalType:"uint128"}]},{type:"error",name:"MismatchedAccounts",inputs:[{name:"firstAccount",type:"address",internalType:"address"},{name:"secondAccount",type:"address",internalType:"address"}]},{type:"error",name:"SafeERC20FailedOperation",inputs:[{name:"token",type:"address",internalType:"address"}]},{type:"error",name:"SpendTokenWithdrawAssetMismatch",inputs:[{name:"spendToken",type:"address",internalType:"address"},{name:"withdrawAsset",type:"address",internalType:"address"}]},{type:"error",name:"SpendValueOverflow",inputs:[{name:"value",type:"uint256",internalType:"uint256"}]},{type:"error",name:"SpendValueWithdrawAmountMismatch",inputs:[{name:"spendValue",type:"uint256",internalType:"uint256"},{name:"withdrawAmount",type:"uint256",internalType:"uint256"}]},{type:"error",name:"UnauthorizedSpendPermission",inputs:[]},{type:"error",name:"UnexpectedReceiveAmount",inputs:[{name:"received",type:"uint256",internalType:"uint256"},{name:"expected",type:"uint256",internalType:"uint256"}]},{type:"error",name:"ZeroAllowance",inputs:[]},{type:"error",name:"ZeroPeriod",inputs:[]},{type:"error",name:"ZeroSpender",inputs:[]},{type:"error",name:"ZeroToken",inputs:[]},{type:"error",name:"ZeroValue",inputs:[]}],x={invalidInput:-32e3,resourceNotFound:-32001,resourceUnavailable:-32002,transactionRejected:-32003,methodNotSupported:-32004,limitExceeded:-32005,parse:-32700,invalidRequest:-32600,methodNotFound:-32601,invalidParams:-32602,internal:-32603},k={userRejectedRequest:4001,unauthorized:4100,unsupportedMethod:4200,disconnected:4900,chainDisconnected:4901,unsupportedChain:4902},E={"-32700":{standard:"JSON RPC 2.0",message:"Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text."},"-32600":{standard:"JSON RPC 2.0",message:"The JSON sent is not a valid Request object."},"-32601":{standard:"JSON RPC 2.0",message:"The method does not exist / is not available."},"-32602":{standard:"JSON RPC 2.0",message:"Invalid method parameter(s)."},"-32603":{standard:"JSON RPC 2.0",message:"Internal JSON-RPC error."},"-32000":{standard:"EIP-1474",message:"Invalid input."},"-32001":{standard:"EIP-1474",message:"Resource not found."},"-32002":{standard:"EIP-1474",message:"Resource unavailable."},"-32003":{standard:"EIP-1474",message:"Transaction rejected."},"-32004":{standard:"EIP-1474",message:"Method not supported."},"-32005":{standard:"EIP-1474",message:"Request limit exceeded."},4001:{standard:"EIP-1193",message:"User rejected the request."},4100:{standard:"EIP-1193",message:"The requested account and/or method has not been authorized by the user."},4200:{standard:"EIP-1193",message:"The requested method is not supported by this Ethereum provider."},4900:{standard:"EIP-1193",message:"The provider is disconnected from all chains."},4901:{standard:"EIP-1193",message:"The provider is disconnected from the specified chain."},4902:{standard:"EIP-3085",message:"Unrecognized chain ID."}},C="Unspecified error message.";function T(e,t=C){if(e&&Number.isInteger(e)){const t=e.toString();if(B(E,t))return E[t].message;if(S(e))return"Unspecified server error."}return t}function A(e,{shouldIncludeStack:t=!1}={}){const n={};if(e&&"object"==typeof e&&!Array.isArray(e)&&B(e,"code")&&function(e){if(!Number.isInteger(e))return!1;const t=e.toString();return!!E[t]||!!S(e)}(e.code)){const t=e;n.code=t.code,t.message&&"string"==typeof t.message?(n.message=t.message,B(t,"data")&&(n.data=t.data)):(n.message=T(n.code),n.data={originalError:P(e)})}else n.code=x.internal,n.message=U(e,"message")?e.message:C,n.data={originalError:P(e)};return t&&(n.stack=U(e,"stack")?e.stack:void 0),n}function S(e){return e>=-32099&&e<=-32e3}function P(e){return e&&"object"==typeof e&&!Array.isArray(e)?Object.assign({},e):e}function B(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function U(e,t){return"object"==typeof e&&null!==e&&t in e&&"string"==typeof e[t]}const I={parse:e=>F(x.parse,e),invalidRequest:e=>F(x.invalidRequest,e),invalidParams:e=>F(x.invalidParams,e),methodNotFound:e=>F(x.methodNotFound,e),internal:e=>F(x.internal,e),server:e=>{if(!e||"object"!=typeof e||Array.isArray(e))throw new Error("Ethereum RPC Server errors must provide single object argument.");const{code:t}=e;if(!Number.isInteger(t)||t>-32005||t<-32099)throw new Error('"code" must be an integer such that: -32099 <= code <= -32005');return F(t,e)},invalidInput:e=>F(x.invalidInput,e),resourceNotFound:e=>F(x.resourceNotFound,e),resourceUnavailable:e=>F(x.resourceUnavailable,e),transactionRejected:e=>F(x.transactionRejected,e),methodNotSupported:e=>F(x.methodNotSupported,e),limitExceeded:e=>F(x.limitExceeded,e)},O={userRejectedRequest:e=>N(k.userRejectedRequest,e),unauthorized:e=>N(k.unauthorized,e),unsupportedMethod:e=>N(k.unsupportedMethod,e),disconnected:e=>N(k.disconnected,e),chainDisconnected:e=>N(k.chainDisconnected,e),unsupportedChain:e=>N(k.unsupportedChain,e),custom:e=>{if(!e||"object"!=typeof e||Array.isArray(e))throw new Error("Ethereum Provider custom errors must provide single object argument.");const{code:t,message:n,data:a}=e;if(!n||"string"!=typeof n)throw new Error('"message" must be a nonempty string');return new z(t,n,a)}};function F(e,t){const[n,a]=D(t);return new M(e,n||T(e),a)}function N(e,t){const[n,a]=D(t);return new z(e,n||T(e),a)}function D(e){if(e){if("string"==typeof e)return[e];if("object"==typeof e&&!Array.isArray(e)){const{message:t,data:n}=e;if(t&&"string"!=typeof t)throw new Error("Must specify string message.");return[t||void 0,n]}}return[]}class M extends Error{code;data;constructor(e,t,n){if(!Number.isInteger(e))throw new Error('"code" must be an integer.');if(!t||"string"!=typeof t)throw new Error('"message" must be a nonempty string.');super(t),this.code=e,void 0!==n&&(this.data=n)}}class z extends M{constructor(e,t,n){if(!function(e){return Number.isInteger(e)&&e>=1e3&&e<=4999}(e))throw new Error('"code" must be an integer such that: 1000 <= code <= 4999');super(e,t,n)}}function L(e){return"object"==typeof e&&null!==e&&"code"in e&&"data"in e&&-32090===e.code&&"object"==typeof e.data&&null!==e.data&&"type"in e.data&&"INSUFFICIENT_FUNDS"===e.data.type}function R(e){return"object"==typeof e&&null!==e&&"details"in e}function j(e,t,n){if(null==e)throw t??I.invalidParams({message:"value must be present",data:e})}function H(e,t){if(!Array.isArray(e))throw I.invalidParams({message:t??"value must be an array",data:e})}const{checkCrossOriginOpenerPolicy:G,getCrossOriginOpenerPolicy:_}=(()=>{let e;return{getCrossOriginOpenerPolicy:()=>void 0===e?"undefined":e,checkCrossOriginOpenerPolicy:async()=>{if("undefined"!=typeof window)try{const t=`${window.location.origin}${window.location.pathname}`,n=await fetch(t,{method:"HEAD"});if(!n.ok)throw new Error(`HTTP error! status: ${n.status}`);const a=n.headers.get("Cross-Origin-Opener-Policy");e=a??"null","same-origin"===e&&console.error("Base Account SDK requires the Cross-Origin-Opener-Policy header to not be set to 'same-origin'. This is to ensure that the SDK can communicate with the Base Account app.\n\nPlease see https://docs.base.org/smart-wallet/quickstart#cross-origin-opener-policy for more information.")}catch(t){console.error("Error checking Cross-Origin-Opener-Policy:",t.message),e="error"}else e="non-browser-env"}}})();function q(e){if("function"!=typeof e)throw new Error("toAccount is not a function")}let V=class e extends Error{constructor(t,n={}){const a=n.cause instanceof e?n.cause.details:n.cause?.message?n.cause.message:n.details,r=n.cause instanceof e&&n.cause.docsPath||n.docsPath;super([t||"An error occurred.","",...n.metaMessages?[...n.metaMessages,""]:[],...r?[`Docs: https://abitype.dev${r}`]:[],...a?[`Details: ${a}`]:[],"Version: abitype@1.0.8"].join("\n")),Object.defineProperty(this,"details",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"docsPath",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"metaMessages",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"shortMessage",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"AbiTypeError"}),n.cause&&(this.cause=n.cause),this.details=a,this.docsPath=r,this.metaMessages=n.metaMessages,this.shortMessage=t}};function K(e,t){const n=e.exec(t);return n?.groups}const Z=/^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/,W=/^u?int(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/,X=/^\(.+?\).*?$/,J=/^tuple(?<array>(\[(\d*)\])*)$/;function Y(e){let t=e.type;if(J.test(e.type)&&"components"in e){t="(";const n=e.components.length;for(let a=0;a<n;a++){t+=Y(e.components[a]),a<n-1&&(t+=", ")}const a=K(J,e.type);return t+=`)${a?.array??""}`,Y({...e,type:t})}return"indexed"in e&&e.indexed&&(t=`${t} indexed`),e.name?`${t} ${e.name}`:t}function Q(e){let t="";const n=e.length;for(let a=0;a<n;a++){t+=Y(e[a]),a!==n-1&&(t+=", ")}return t}function $(e){return"function"===e.type?`function ${e.name}(${Q(e.inputs)})${e.stateMutability&&"nonpayable"!==e.stateMutability?` ${e.stateMutability}`:""}${e.outputs?.length?` returns (${Q(e.outputs)})`:""}`:"event"===e.type?`event ${e.name}(${Q(e.inputs)})`:"error"===e.type?`error ${e.name}(${Q(e.inputs)})`:"constructor"===e.type?`constructor(${Q(e.inputs)})${"payable"===e.stateMutability?" payable":""}`:"fallback"===e.type?"fallback() external"+("payable"===e.stateMutability?" payable":""):"receive() external payable"}const ee=/^error (?<name>[a-zA-Z$_][a-zA-Z0-9$_]*)\((?<parameters>.*?)\)$/;const te=/^event (?<name>[a-zA-Z$_][a-zA-Z0-9$_]*)\((?<parameters>.*?)\)$/;const ne=/^function (?<name>[a-zA-Z$_][a-zA-Z0-9$_]*)\((?<parameters>.*?)\)(?: (?<scope>external|public{1}))?(?: (?<stateMutability>pure|view|nonpayable|payable{1}))?(?: returns\s?\((?<returns>.*?)\))?$/;const ae=/^struct (?<name>[a-zA-Z$_][a-zA-Z0-9$_]*) \{(?<properties>.*?)\}$/;function re(e){return ae.test(e)}function se(e){return K(ae,e)}const oe=/^constructor\((?<parameters>.*?)\)(?:\s(?<stateMutability>payable{1}))?$/;const ie=/^fallback\(\) external(?:\s(?<stateMutability>payable{1}))?$/;const ce=/^receive\(\) external payable$/;const le=new Set(["indexed"]),ue=new Set(["calldata","memory","storage"]);class de extends V{constructor({signature:e}){super("Failed to parse ABI item.",{details:`parseAbiItem(${JSON.stringify(e,null,2)})`,docsPath:"/api/human#parseabiitem-1"}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidAbiItemError"})}}class pe extends V{constructor({type:e}){super("Unknown type.",{metaMessages:[`Type "${e}" is not a valid ABI type. Perhaps you forgot to include a struct signature?`]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"UnknownTypeError"})}}class me extends V{constructor({type:e}){super("Unknown type.",{metaMessages:[`Type "${e}" is not a valid ABI type.`]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"UnknownSolidityTypeError"})}}class he extends V{constructor({param:e}){super("Invalid ABI parameter.",{details:e}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidParameterError"})}}class fe extends V{constructor({param:e,name:t}){super("Invalid ABI parameter.",{details:e,metaMessages:[`"${t}" is a protected Solidity keyword. More info: https://docs.soliditylang.org/en/latest/cheatsheet.html`]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"SolidityProtectedKeywordError"})}}class be extends V{constructor({param:e,type:t,modifier:n}){super("Invalid ABI parameter.",{details:e,metaMessages:[`Modifier "${n}" not allowed${t?` in "${t}" type`:""}.`]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidModifierError"})}}class ye extends V{constructor({param:e,type:t,modifier:n}){super("Invalid ABI parameter.",{details:e,metaMessages:[`Modifier "${n}" not allowed${t?` in "${t}" type`:""}.`,`Data location can only be specified for array, struct, or mapping types, but "${n}" was given.`]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidFunctionModifierError"})}}class ge extends V{constructor({abiParameter:e}){super("Invalid ABI parameter.",{details:JSON.stringify(e,null,2),metaMessages:["ABI parameter type is invalid."]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidAbiTypeParameterError"})}}class we extends V{constructor({signature:e,type:t}){super(`Invalid ${t} signature.`,{details:e}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidSignatureError"})}}class ve extends V{constructor({signature:e}){super("Unknown signature.",{details:e}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"UnknownSignatureError"})}}class xe extends V{constructor({signature:e}){super("Invalid struct signature.",{details:e,metaMessages:["No properties exist."]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidStructSignatureError"})}}class ke extends V{constructor({type:e}){super("Circular reference detected.",{metaMessages:[`Struct "${e}" is a circular reference.`]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"CircularReferenceError"})}}class Ee extends V{constructor({current:e,depth:t}){super("Unbalanced parentheses.",{metaMessages:[`"${e.trim()}" has too many ${t>0?"opening":"closing"} parentheses.`],details:`Depth "${t}"`}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidParenthesisError"})}}const Ce=new Map([["address",{type:"address"}],["bool",{type:"bool"}],["bytes",{type:"bytes"}],["bytes32",{type:"bytes32"}],["int",{type:"int256"}],["int256",{type:"int256"}],["string",{type:"string"}],["uint",{type:"uint256"}],["uint8",{type:"uint8"}],["uint16",{type:"uint16"}],["uint24",{type:"uint24"}],["uint32",{type:"uint32"}],["uint64",{type:"uint64"}],["uint96",{type:"uint96"}],["uint112",{type:"uint112"}],["uint160",{type:"uint160"}],["uint192",{type:"uint192"}],["uint256",{type:"uint256"}],["address owner",{type:"address",name:"owner"}],["address to",{type:"address",name:"to"}],["bool approved",{type:"bool",name:"approved"}],["bytes _data",{type:"bytes",name:"_data"}],["bytes data",{type:"bytes",name:"data"}],["bytes signature",{type:"bytes",name:"signature"}],["bytes32 hash",{type:"bytes32",name:"hash"}],["bytes32 r",{type:"bytes32",name:"r"}],["bytes32 root",{type:"bytes32",name:"root"}],["bytes32 s",{type:"bytes32",name:"s"}],["string name",{type:"string",name:"name"}],["string symbol",{type:"string",name:"symbol"}],["string tokenURI",{type:"string",name:"tokenURI"}],["uint tokenId",{type:"uint256",name:"tokenId"}],["uint8 v",{type:"uint8",name:"v"}],["uint256 balance",{type:"uint256",name:"balance"}],["uint256 tokenId",{type:"uint256",name:"tokenId"}],["uint256 value",{type:"uint256",name:"value"}],["event:address indexed from",{type:"address",name:"from",indexed:!0}],["event:address indexed to",{type:"address",name:"to",indexed:!0}],["event:uint indexed tokenId",{type:"uint256",name:"tokenId",indexed:!0}],["event:uint256 indexed tokenId",{type:"uint256",name:"tokenId",indexed:!0}]]);function Te(e,t={}){if(function(e){return ne.test(e)}(e))return function(e,t={}){const n=function(e){return K(ne,e)}(e);if(!n)throw new we({signature:e,type:"function"});const a=Ue(n.parameters),r=[],s=a.length;for(let e=0;e<s;e++)r.push(Be(a[e],{modifiers:ue,structs:t,type:"function"}));const o=[];if(n.returns){const e=Ue(n.returns),a=e.length;for(let n=0;n<a;n++)o.push(Be(e[n],{modifiers:ue,structs:t,type:"function"}))}return{name:n.name,type:"function",stateMutability:n.stateMutability??"nonpayable",inputs:r,outputs:o}}(e,t);if(function(e){return te.test(e)}(e))return function(e,t={}){const n=function(e){return K(te,e)}(e);if(!n)throw new we({signature:e,type:"event"});const a=Ue(n.parameters),r=[],s=a.length;for(let e=0;e<s;e++)r.push(Be(a[e],{modifiers:le,structs:t,type:"event"}));return{name:n.name,type:"event",inputs:r}}(e,t);if(function(e){return ee.test(e)}(e))return function(e,t={}){const n=function(e){return K(ee,e)}(e);if(!n)throw new we({signature:e,type:"error"});const a=Ue(n.parameters),r=[],s=a.length;for(let e=0;e<s;e++)r.push(Be(a[e],{structs:t,type:"error"}));return{name:n.name,type:"error",inputs:r}}(e,t);if(function(e){return oe.test(e)}(e))return function(e,t={}){const n=function(e){return K(oe,e)}(e);if(!n)throw new we({signature:e,type:"constructor"});const a=Ue(n.parameters),r=[],s=a.length;for(let e=0;e<s;e++)r.push(Be(a[e],{structs:t,type:"constructor"}));return{type:"constructor",stateMutability:n.stateMutability??"nonpayable",inputs:r}}(e,t);if(function(e){return ie.test(e)}(e))return function(e){const t=function(e){return K(ie,e)}(e);if(!t)throw new we({signature:e,type:"fallback"});return{type:"fallback",stateMutability:t.stateMutability??"nonpayable"}}(e);if(function(e){return ce.test(e)}(e))return{type:"receive",stateMutability:"payable"};throw new ve({signature:e})}const Ae=/^(?<type>[a-zA-Z$_][a-zA-Z0-9$_]*)(?<array>(?:\[\d*?\])+?)?(?:\s(?<modifier>calldata|indexed|memory|storage{1}))?(?:\s(?<name>[a-zA-Z$_][a-zA-Z0-9$_]*))?$/,Se=/^\((?<type>.+?)\)(?<array>(?:\[\d*?\])+?)?(?:\s(?<modifier>calldata|indexed|memory|storage{1}))?(?:\s(?<name>[a-zA-Z$_][a-zA-Z0-9$_]*))?$/,Pe=/^u?int$/;function Be(e,t){const n=function(e,t,n){let a="";if(n)for(const e of Object.entries(n)){if(!e)continue;let t="";for(const n of e[1])t+=`[${n.type}${n.name?`:${n.name}`:""}]`;a+=`(${e[0]}{${t}})`}return t?`${t}:${e}${a}`:e}(e,t?.type,t?.structs);if(Ce.has(n))return Ce.get(n);const a=X.test(e),r=K(a?Se:Ae,e);if(!r)throw new he({param:e});if(r.name&&function(e){return"address"===e||"bool"===e||"function"===e||"string"===e||"tuple"===e||Z.test(e)||W.test(e)||Oe.test(e)}(r.name))throw new fe({param:e,name:r.name});const s=r.name?{name:r.name}:{},o="indexed"===r.modifier?{indexed:!0}:{},i=t?.structs??{};let c,l={};if(a){c="tuple";const e=Ue(r.type),t=[],n=e.length;for(let a=0;a<n;a++)t.push(Be(e[a],{structs:i}));l={components:t}}else if(r.type in i)c="tuple",l={components:i[r.type]};else if(Pe.test(r.type))c=`${r.type}256`;else if(c=r.type,"struct"!==t?.type&&!Ie(c))throw new me({type:c});if(r.modifier){if(!t?.modifiers?.has?.(r.modifier))throw new be({param:e,type:t?.type,modifier:r.modifier});if(ue.has(r.modifier)&&!function(e,t){return t||"bytes"===e||"string"===e||"tuple"===e}(c,!!r.array))throw new ye({param:e,type:t?.type,modifier:r.modifier})}const u={type:`${c}${r.array??""}`,...s,...o,...l};return Ce.set(n,u),u}function Ue(e,t=[],n="",a=0){const r=e.trim().length;for(let s=0;s<r;s++){const r=e[s],o=e.slice(s+1);switch(r){case",":return 0===a?Ue(o,[...t,n.trim()]):Ue(o,t,`${n}${r}`,a);case"(":return Ue(o,t,`${n}${r}`,a+1);case")":return Ue(o,t,`${n}${r}`,a-1);default:return Ue(o,t,`${n}${r}`,a)}}if(""===n)return t;if(0!==a)throw new Ee({current:n,depth:a});return t.push(n.trim()),t}function Ie(e){return"address"===e||"bool"===e||"function"===e||"string"===e||Z.test(e)||W.test(e)}const Oe=/^(?:after|alias|anonymous|apply|auto|byte|calldata|case|catch|constant|copyof|default|defined|error|event|external|false|final|function|immutable|implements|in|indexed|inline|internal|let|mapping|match|memory|mutable|null|of|override|partial|private|promise|public|pure|reference|relocatable|return|returns|sizeof|static|storage|struct|super|supports|switch|this|true|try|typedef|typeof|var|view|virtual)$/;function Fe(e){const t={},n=e.length;for(let a=0;a<n;a++){const n=e[a];if(!re(n))continue;const r=se(n);if(!r)throw new we({signature:n,type:"struct"});const s=r.properties.split(";"),o=[],i=s.length;for(let e=0;e<i;e++){const t=s[e].trim();if(!t)continue;const n=Be(t,{type:"struct"});o.push(n)}if(!o.length)throw new xe({signature:n});t[r.name]=o}const a={},r=Object.entries(t),s=r.length;for(let e=0;e<s;e++){const[n,s]=r[e];a[n]=De(s,t)}return a}const Ne=/^(?<type>[a-zA-Z$_][a-zA-Z0-9$_]*)(?<array>(?:\[\d*?\])+?)?$/;function De(e,t,n=new Set){const a=[],r=e.length;for(let s=0;s<r;s++){const r=e[s];if(X.test(r.type))a.push(r);else{const e=K(Ne,r.type);if(!e?.type)throw new ge({abiParameter:r});const{array:s,type:o}=e;if(o in t){if(n.has(o))throw new ke({type:o});a.push({...r,type:`tuple${s??""}`,components:De(t[o]??[],t,new Set([...n,o]))})}