@latticexyz/entrykit 2.2.12-entrykit-726159c20072f73028e74674fafdaefd96b36074 → 2.2.13-entrykit-c234485e5672ec5094300c8dfc9362af19a165ef

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.
@@ -681,8 +681,8 @@ video {
681
681
  max-height: 8rem;
682
682
  }
683
683
 
684
- .min-h-\\[28rem\\] {
685
- min-height: 28rem;
684
+ .min-h-\\[26rem\\] {
685
+ min-height: 26rem;
686
686
  }
687
687
 
688
688
  .w-16 {
@@ -1431,7 +1431,7 @@ video {
1431
1431
  --tw-text-opacity: 1;
1432
1432
  color: rgb(255 255 255 / var(--tw-text-opacity));
1433
1433
  }
1434
- `;import{useResizeObserver as Gt}from"usehooks-ts";import{mergeRefs as Vt}from"react-merge-refs";import{createContext as Tt,useContext as zt}from"react";import{jsx as Dt}from"react/jsx-runtime";var Pe=Tt(null);function Se({frame:e,children:t}){if(zt(Pe))throw new Error("`FrameProvider` can only be used once.");return Dt(Pe.Provider,{value:{frame:e},children:t})}import{useMediaQuery as Bt}from"usehooks-ts";import"@rainbow-me/rainbowkit/styles.css";import{createContext as Kt,useContext as Ne}from"react";import{RainbowKitProvider as Lt,lightTheme as Me,midnightTheme as Ie}from"@rainbow-me/rainbowkit";import{jsx as He}from"react/jsx-runtime";var se=Kt(null);function Ee({config:e,children:t}){if(Ne(se))throw new Error("`EntryKitProvider` can only be used once.");return He(Lt,{initialChain:e.chainId,appInfo:{appName:e.appInfo?.name},theme:e.theme==="light"?Me({borderRadius:"none"}):e.theme==="dark"?Ie({borderRadius:"none"}):{lightMode:Me({borderRadius:"none"}),darkMode:Ie({borderRadius:"none"})},children:He(se.Provider,{value:e,children:t})})}function u(){let e=Ne(se);if(!e)throw new Error("`useEntryKitConfig` can only be used within a `EntryKitProvider`.");return e}function Re(){let{theme:e}=u(),t=Bt("(prefers-color-scheme: dark)");return e??(t?"dark":"light")}import{jsx as N,jsxs as qt}from"react/jsx-runtime";function _t({onSize:e,...t}){let n=Te(null);return Gt({ref:n,onResize:e}),N("div",{ref:n,...t,style:{...t.style,display:"inline-block"}})}var L=Ft(function({mode:t,children:n},r){let a=Te(null),[c,s]=Oe(!1),o=c?a.current:null,[l,i]=Oe({width:void 0,height:void 0}),d=o?.contentDocument,p=Re();Wt(()=>{d&&d.body.setAttribute("data-theme",p)},[d,p]);let f=t==="modal"?{all:"unset",display:"block",position:"fixed",inset:"0",width:"100vw",height:"100vh",zIndex:"2147483646"}:l.width&&l.height?{all:"unset",display:"inline-block",width:`${l.width}px`,height:`${l.height}px`}:{all:"unset",display:"block",position:"fixed",inset:"0",width:"100vw",height:"100vh",opacity:0,pointerEvents:"none"};return N("iframe",{ref:Vt([r,a]),style:f,onLoad:()=>s(!0),srcDoc:"<!doctype html><title>\u2026</title>",children:d?Ut.createPortal(qt(Se,{frame:o,children:[N("div",{children:t==="modal"?n:N(_t,{onSize:i,children:n})}),N("style",{dangerouslySetInnerHTML:{__html:Ae}})]}),d.body):null})});import{twMerge as ze}from"tailwind-merge";import{jsx as k,jsxs as jt}from"react/jsx-runtime";function De({open:e,onOpenChange:t,children:n}){return k(Yt,{open:e,onOpenChange:t,children:k(Xt,{children:jt(L,{mode:"modal",children:[k("div",{className:ze("fixed inset-0","bg-neutral-800/85","animate-in animate-duration-300 fade-in")}),k("div",{className:ze("fixed inset-0","grid items-end sm:items-center","animate-in animate-duration-300 fade-in slide-in-from-bottom-16"),children:k("div",{children:k($t,{className:"outline-none w-full max-w-[26rem] mx-auto","aria-describedby":void 0,onOpenAutoFocus:r=>{r.preventDefault()},children:n})})})]})})})}import{useCallback as ce,useMemo as Qt}from"react";import{useStore as Jt}from"zustand";import{createStore as Zt}from"zustand/vanilla";var B=Zt(()=>({open:!1}));function y(){let e=Jt(B,a=>a.open),t=ce(()=>{B.setState({open:!0})},[]),n=ce(()=>{B.setState({open:!1})},[]),r=ce(a=>{B.setState({open:a})},[]);return Qt(()=>({accountModalOpen:e,openAccountModal:t,closeAccountModal:n,toggleAccountModal:r}),[e,t,n,r])}import{twMerge as kt}from"tailwind-merge";import{useConnectorClient as Br}from"wagmi";import{useAccount as Zn}from"wagmi";import{twMerge as F}from"tailwind-merge";import{twMerge as en}from"tailwind-merge";import{jsx as Ke,jsxs as tn}from"react/jsx-runtime";function x({className:e,...t}){return tn("svg",{className:en("-my-[0.125em] h-[1.25em] w-[1.25em] animate-spin",e),xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",...t,children:[Ke("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),Ke("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]})}import{jsx as E,jsxs as rn}from"react/jsx-runtime";var nn=({variant:e="primary"}={})=>F("group self-center leading-none outline-none border-4 border-transparent","transition hover:brightness-125 active:brightness-150","focus:border-orange-500","aria-disabled:pointer-events-none aria-busy:pointer-events-none","aria-disabled:opacity-50","p-[.75em] font-medium",{primary:F("bg-neutral-700 text-white"),secondary:F("bg-neutral-800 text-white")}[e]),g=({pending:e,variant:t,type:n,className:r,children:a,disabled:c,...s})=>E("button",{type:n||"button",className:F(nn({variant:t,pending:e}),r),"aria-busy":e,"aria-disabled":c,disabled:c||e,...s,children:rn("span",{className:"grid grid-cols-[1fr_auto_1fr] gap-2",children:[E("span",{className:"flex items-center justify-end text-[.75em]",children:E("span",{className:"transition opacity-0 translate-x-2 group-aria-busy:opacity-100 group-aria-busy:translate-x-0 duration-100 group-aria-busy:duration-300",children:E(x,{})})}),E("span",{children:a})]})});import{useConnectModal as er}from"@rainbow-me/rainbowkit";import{useMutation as Qe}from"@tanstack/react-query";import{useConnectors as Xn}from"wagmi";import{createClient as Fn,custom as Wn,getAddress as Un,numberToHex as Ye,SwitchChainError as Gn}from"viem";import{ChainNotConfiguredError as Vn,createConnector as _n}from"wagmi";import{createStore as an}from"zustand/vanilla";import{persist as on}from"zustand/middleware";var m=an(on(()=>({publicKeys:{},addresses:{},activeCredential:null}),{name:"mud:passkey:cache"}));function sn(e){e.key===m.persist.getOptions().name&&m.persist.rehydrate()}window.addEventListener("storage",sn);import{smartAccountActions as qn}from"permissionless/clients";import{toWebAuthnAccount as Cn}from"viem/account-abstraction";import{BaseError as cn}from"abitype";import{pad as dn,encodeFunctionData as de,hashMessage as ln,hashTypedData as Be,encodeAbiParameters as Fe,stringToHex as pn,size as un,encodePacked as mn,parseSignature as fn}from"viem";import{entryPoint07Abi as yn,entryPoint07Address as gn,getUserOperationHash as hn,toSmartAccount as wn}from"viem/account-abstraction";import{readContract as Le}from"viem/actions";import{parseSignature as bn}from"webauthn-p256";async function G(e){let{client:t,owners:n,nonce:r=0n}=e,a=e.address,c={abi:yn,address:gn,version:"0.7"},s={abi:vn,address:"0x356336adA1619BeC1Ae4E6D94Dd9c0490DA414a8"};if(!n.length)throw new Error("`owners` must have at least one account.");function o(d){return d.type==="webAuthn"?d.publicKey:dn(d.address)}let l=e.signer??n[0],i=n.indexOf(l);if(i===-1)throw new Error("`signer` must be one of `owners`.");return wn({client:t,entryPoint:c,extend:{__isCoinbaseSmartAccount:!0,abi:U,factory:s,signer:l},async encodeCalls(d){return d.length===1?de({abi:U,functionName:"execute",args:[d[0].to,d[0].value??0n,d[0].data??"0x"]}):de({abi:U,functionName:"executeBatch",args:[d.map(p=>({data:p.data??"0x",target:p.to,value:p.value??0n}))]})},async getAddress(){return a??=await Le(t,{...s,functionName:"getAddress",args:[n.map(o),r]}),a},async getFactoryArgs(){let d=de({abi:s.abi,functionName:"createAccount",args:[n.map(o),r]});return{factory:s.address,factoryData:d}},async getStubSignature(){return l.type==="webAuthn"?"0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000000001949fc7c88032b9fcb5f6efc7a7b8c63668eae9871b765e23123bb473ff57aa831a7c0d9276168ebcc29f2875a0239cffdf2a9cd1c2007c5c77c071db9264df1d000000000000000000000000000000000000000000000000000000000000002549960de5880e8c687434170f6476605b8fe4aeb9a28632c7995cf3ba831d97630500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008a7b2274797065223a22776562617574686e2e676574222c226368616c6c656e6765223a2273496a396e6164474850596759334b7156384f7a4a666c726275504b474f716d59576f4d57516869467773222c226f726967696e223a2268747470733a2f2f7369676e2e636f696e626173652e636f6d222c2263726f73734f726967696e223a66616c73657d00000000000000000000000000000000000000000000":R({signature:"0xfffffffffffffffffffffffffffffff0000000000000000000000000000000007aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1c",ownerIndex:i})},async sign(d){let p=await this.getAddress(),f=le({address:p,chainId:t.chain.id,hash:d.hash}),w=await W({hash:f,owner:l});return R({signature:w,ownerIndex:i})},async signMessage(d){let{message:p}=d,f=await this.getAddress(),w=le({address:f,chainId:t.chain.id,hash:ln(p)}),H=await W({hash:w,owner:l});return R({signature:H,ownerIndex:i})},async signTypedData(d){let{domain:p,types:f,primaryType:w,message:H}=d,ie=await this.getAddress(),Et=le({address:ie,chainId:t.chain.id,hash:Be({domain:p,message:H,primaryType:w,types:f})}),Rt=await W({hash:Et,owner:l});return R({signature:Rt,ownerIndex:i})},async signUserOperation(d){let{chainId:p=t.chain.id,...f}=d,w=await this.getAddress(),H=hn({chainId:p,entryPointAddress:c.address,entryPointVersion:c.version,userOperation:{...f,sender:w}}),ie=await W({hash:H,owner:l});return R({signature:ie,ownerIndex:i})},userOperation:{async estimateGas(d){if(l.type==="webAuthn")return{verificationGasLimit:BigInt(Math.max(Number(d.verificationGasLimit??0n),8e5))}}},async isOwner(d){return await Le(t,{abi:U,address:await this.getAddress(),functionName:"isOwnerBytes",args:[o(d)]})}})}async function W({hash:e,owner:t}){if(t.type==="webAuthn"){let{signature:n,webauthn:r}=await t.sign({hash:e});return xn({signature:n,webauthn:r})}if(t.sign)return t.sign({hash:e});throw new cn("`owner` does not support raw sign.")}function le({address:e,chainId:t,hash:n}){return Be({domain:{chainId:t,name:"Coinbase Smart Wallet",verifyingContract:e,version:"1"},types:{CoinbaseSmartWalletMessage:[{name:"hash",type:"bytes32"}]},primaryType:"CoinbaseSmartWalletMessage",message:{hash:n}})}function xn({webauthn:e,signature:t}){let{r:n,s:r}=bn(t);return Fe([{components:[{name:"authenticatorData",type:"bytes"},{name:"clientDataJSON",type:"bytes"},{name:"challengeIndex",type:"uint256"},{name:"typeIndex",type:"uint256"},{name:"r",type:"uint256"},{name:"s",type:"uint256"}],type:"tuple"}],[{authenticatorData:e.authenticatorData,clientDataJSON:pn(e.clientDataJSON),challengeIndex:BigInt(e.challengeIndex),typeIndex:BigInt(e.typeIndex),r:n,s:r}])}function R(e){let{ownerIndex:t}=e,n=(()=>{if(un(e.signature)!==65)return e.signature;let r=fn(e.signature);return mn(["bytes32","bytes32","uint8"],[r.r,r.s,r.yParity===0?27:28])})();return Fe([{components:[{name:"ownerIndex",type:"uint8"},{name:"signatureData",type:"bytes"}],type:"tuple"}],[{ownerIndex:t,signatureData:n}])}var U=[{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"}],vn=[{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"}];async function O(e,t){let{publicKeys:n}=m.getState(),r=n[t];if(!r)throw new Error("No public key found for passkey credential.");let c=[Cn({credential:{id:t,publicKey:r}})];return await G({client:e,owners:c})}import{bytesToHex as En,hashMessage as Rn}from"viem";import{sign as On}from"webauthn-p256";import{bytesToHex as kn,hexToBytes as We}from"webauthn-p256";import{concatBytes as An,utf8ToBytes as Pn}from"@noble/curves/abstract/utils";async function V(e){let{authenticatorData:t,challengeIndex:n,clientDataJSON:r,typeIndex:a,userVerificationRequired:c}=e,s=a||r.indexOf('"type"'),o=n||r.indexOf('"challenge"'),l=We(t);if(l.length<37)throw new Error("Invalid authenticatorData");let i=l[32];if((i&1)!==1)throw new Error("Invalid authenticatorData");if(c&&(i&4)!==4)throw new Error("Invalid authenticatorData");if((i&8)!==8&&(i&16)===16)throw new Error("Invalid authenticatorData");let d='"type":"webauthn.get"';if(d!==r.slice(Number(s),d.length+1))throw new Error("Invalid clientDataJSON");if(!r.slice(Number(o)).match(/^"challenge":"(.*?)"/))throw new Error("Invalid clientDataJSON");let f=new Uint8Array(await crypto.subtle.digest("SHA-256",Pn(r))),w=new Uint8Array(await crypto.subtle.digest("SHA-256",An(We(t),f)));return kn(w)}import{sign as Mn}from"webauthn-p256";import{parseSignature as Sn,serializePublicKey as Ue}from"webauthn-p256";import{secp256r1 as Ge}from"@noble/curves/p256";function pe(e){let{r:t,s:n}=Sn(e.signatureHex),r=new Ge.Signature(t,n).addRecoveryBit(1).recoverPublicKey(e.messageHash.slice(2)),a=new Ge.Signature(t,n).addRecoveryBit(0).recoverPublicKey(e.messageHash.slice(2));return[Ue(r),Ue(a)]}import{hashMessage as In}from"viem";function Hn([e,t]){return Nn([...pe(e),...pe(t)])}async function Ve(e){let t=In(e.signatureHex),{signature:n,webauthn:r,raw:a}=await Mn({credentialId:e.credentialId,hash:t}),c=await V(r),s=Hn([e,{signatureHex:n,messageHash:c}]);if(s)return{publicKey:s,credential:a}}function Nn(e){let t=new Set;for(let n of e){if(t.has(n))return n;t.add(n)}}async function ue(){let e=En(crypto.getRandomValues(new Uint8Array(256))),t=Rn(e),{signature:n,webauthn:r,raw:a}=await On({hash:t}),c=await(async()=>{let s=m.getState().publicKeys[a.id];if(s)return s;let o=await V(r),l=await Ve({credentialId:a.id,messageHash:o,signatureHex:n});if(!l)throw new Error("recovery failed");if(l.credential.id!==a.id)throw new Error("wrong credential");return m.setState(i=>({publicKeys:{...i.publicKeys,[a.id]:l.publicKey}})),l.publicKey})();return console.log("recovered passkey",a.id,c),m.setState(()=>({activeCredential:a.id})),{id:a.id,publicKey:c,raw:a}}import{createCredential as Tn}from"webauthn-p256";async function _e(){let e=await Tn({name:"MUD Account"});return console.log("created passkey",e),m.setState(t=>({activeCredential:e.id,publicKeys:{...t.publicKeys,[e.id]:e.publicKey}})),e}import{resourceToHex as zn}from"@latticexyz/common";import{parseAbi as Dn}from"viem";import Kn from"@latticexyz/world/mud.config";var _={pollingInterval:250},T=zn({type:"system",namespace:"",name:"unlimited"}),qe=Kn.namespaces.world.tables,me=Dn(["function registerDelegation(address delegatee, bytes32 delegationControlId, bytes initCallData)"]);import{createBundlerClient as Ln}from"viem/account-abstraction";var Bn=new Set([31337,17420,17069,690]);function q({paymasterAddress:e,...t}){let n=t.chain??t.client?.chain;return Ln({..._,paymaster:{getPaymasterData:async()=>({paymaster:e,paymasterData:"0x"})},userOperation:{estimateFeesPerGas:n&&Bn.has(n.id)?async()=>({maxFeePerGas:100000n,maxPriorityFeePerGas:0n}):void 0},...t})}import{observer as Yn}from"@latticexyz/explorer/observer";A.type="passkey";function A({chainId:e,bundlerTransport:t,paymasterAddress:n,explorerUrl:r}){return _n(a=>{if(!a.transports)throw new Error("Wagmi must be configured with transports to use the passkey connector.");let c=a.chains.find(i=>i.id===e);if(!c)throw new Error(`Could not find configured chain for chain ID ${e}.`);let s=a.transports[c.id];if(!s)throw new Error(`Could not find configured transport for chain ID ${e}.`);let o=Fn({..._,chain:c,transport:s}),l=m.getState().activeCredential!=null;return{id:"passkey",type:A.type,name:"Passkey",async createPasskey(){let{id:i}=await _e(),d=await O(o,i);this.onAccountsChanged([d.address]),this.onConnect?.({chainId:Ye(e)})},async reusePasskey(){let{id:i}=await ue(),d=await O(o,i);this.onAccountsChanged([d.address]),this.onConnect?.({chainId:Ye(e)})},hasPasskey(){return Object.keys(m.getState().publicKeys).length>0},async connect(i){if(console.log("connect"),i?.chainId!=null&&i.chainId!==e)throw new Error(`Can't connect to chain ${i.chainId}. Passkey connector is bound to chain ${e}.`);!m.getState().activeCredential&&!i?.isReconnecting&&await ue();let d=await this.getAccounts();return l=d.length>0,{accounts:d,chainId:e}},async disconnect(){console.log("disconnect"),l=!1,m.setState({activeCredential:null})},async getAccounts(){console.log("getAccounts");let i=m.getState().activeCredential;if(!i)return[];try{console.log("getting account for credential",i);let d=await O(o,i);return console.log("got account",d),[d.address]}catch{console.log("could not get address for credential ID",i)}return[]},async getChainId(){return e},async isAuthorized(){return console.log("isAuthorized"),l?(await this.getAccounts()).length>0:!1},async switchChain(i){if(i.chainId!==e)throw new Error(`Can't connect to chain ${i.chainId}. Passkey connector is bound to chain ${e}.`);let d=a.chains.find(p=>p.id===i.chainId);if(!d)throw new Gn(new Vn);return d},onAccountsChanged(i){console.log("onAccountsChanged"),i.length>0?a.emitter.emit("change",{accounts:i.map(d=>Un(d))}):this.onDisconnect()},onChainChanged(i){console.log("onChainChanged"),a.emitter.emit("change",{chainId:Number(i)})},async onConnect(i){console.log("onConnect");let d=await this.getAccounts();a.emitter.emit("connect",{accounts:d,chainId:e})},async onDisconnect(i){console.log("onDisconnect"),a.emitter.emit("disconnect"),l=!1},async getClient(i){console.log("passkeyConnector.getClient",i);let d=m.getState().activeCredential;if(!d)throw new Error("Not connected.");let p=await O(o,d);return q({paymasterAddress:n,transport:t,client:o,account:p}).extend(qn()).extend(f=>r?Yn({explorerUrl:r})(f):{})},async getProvider(i){return Wn({request:o.transport.request})({retryCount:0})}}})}function Xe(){let t=Xn().find(n=>n.type===A.type);if(!t)throw new Error("Could not find passkey connector. Did you configure Wagmi with the EntryKit passkey connector or passkey wallet?");return t}import{twMerge as $n}from"tailwind-merge";import{jsx as fe,jsxs as jn}from"react/jsx-runtime";function v({className:e,...t}){return jn("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 8 8",fill:"currentColor",shapeRendering:"crispEdges",className:$n("-my-[0.125em] h-[1.25em] w-[1.25em]",e),...t,children:[fe("path",{d:"M0 0h1v1H0zm0 1h1v1H0zm0 1h1v1H0zm0 1h1v1H0zm0 1h1v1H0zm0 1h1v1H0zm0 1h1v1H0zm0 1h1v1H0zm1 0h1v1H1zm1 0h1v1H2zm1 0h1v1H3zm1 0h1v1H4zm1 0h1v1H5zm2-1h1v1H7zm0 1h1v1H7zM6 7h1v1H6zm1-2h1v1H7zm0-1h1v1H7zm0-1h1v1H7z"}),fe("path",{d:"M2 2h1v1H2zm0 1h1v1H2zm0 1h1v1H2zm0 1h1v1H2zm1-3h1v1H3zm1 0h1v1H4zm1 0h1v1H5zm0 1h1v1H5zm0 1h1v1H5zm0 1h1v1H5zM4 5h1v1H4zM3 5h1v1H3z",opacity:".5"}),fe("path",{d:"M7 2h1v1H7zm0-1h1v1H7zM1 0h1v1H1zm1 0h1v1H2zm1 0h1v1H3zm1 0h1v1H4zm1 0h1v1H5zm1 0h1v1H6zm1 0h1v1H7z"})]})}function $e(){let{appInfo:e}=u(),t=e?.name??document.title,n=location.host,r=e?.icon??document.querySelector("link[rel~='icon']")?.getAttribute("href")??"/favico.ico",a=e?.image;return{appName:t,appOrigin:n,appIcon:r,appImage:a}}import{useQuery as Qn}from"@tanstack/react-query";function Y(e){return Qn({enabled:!!e,retry:!1,retryOnMount:!1,refetchOnMount:!1,refetchOnWindowFocus:!1,queryKey:[e],queryFn:()=>new Promise((t,n)=>{if(!e)throw new Error("usePreloadImage: Must provide `url` to preload image.");let r=new Image;r.onload=()=>t(r),r.onerror=()=>n(new Error(`usePreloadImage: Could not load image.
1434
+ `;import{useResizeObserver as Gt}from"usehooks-ts";import{mergeRefs as Vt}from"react-merge-refs";import{createContext as Tt,useContext as zt}from"react";import{jsx as Dt}from"react/jsx-runtime";var Pe=Tt(null);function Se({frame:e,children:t}){if(zt(Pe))throw new Error("`FrameProvider` can only be used once.");return Dt(Pe.Provider,{value:{frame:e},children:t})}import{useMediaQuery as Bt}from"usehooks-ts";import"@rainbow-me/rainbowkit/styles.css";import{createContext as Kt,useContext as Ne}from"react";import{RainbowKitProvider as Lt,lightTheme as Me,midnightTheme as Ie}from"@rainbow-me/rainbowkit";import{jsx as He}from"react/jsx-runtime";var se=Kt(null);function Ee({config:e,children:t}){if(Ne(se))throw new Error("`EntryKitProvider` can only be used once.");return He(Lt,{initialChain:e.chainId,appInfo:{appName:e.appInfo?.name},theme:e.theme==="light"?Me({borderRadius:"none"}):e.theme==="dark"?Ie({borderRadius:"none"}):{lightMode:Me({borderRadius:"none"}),darkMode:Ie({borderRadius:"none"})},children:He(se.Provider,{value:e,children:t})})}function u(){let e=Ne(se);if(!e)throw new Error("`useEntryKitConfig` can only be used within a `EntryKitProvider`.");return e}function Re(){let{theme:e}=u(),t=Bt("(prefers-color-scheme: dark)");return e??(t?"dark":"light")}import{jsx as H,jsxs as qt}from"react/jsx-runtime";function _t({onSize:e,...t}){let n=Te(null);return Gt({ref:n,onResize:e}),H("div",{ref:n,...t,style:{...t.style,display:"inline-block"}})}var L=Ft(function({mode:t,children:n},r){let a=Te(null),[c,s]=Oe(!1),o=c?a.current:null,[l,i]=Oe({width:void 0,height:void 0}),d=o?.contentDocument,p=Re();Wt(()=>{d&&d.body.setAttribute("data-theme",p)},[d,p]);let f=t==="modal"?{all:"unset",display:"block",position:"fixed",inset:"0",width:"100%",height:"100%",zIndex:"2147483646"}:l.width&&l.height?{all:"unset",display:"inline-block",width:`${l.width}px`,height:`${l.height}px`}:{all:"unset",display:"block",position:"fixed",inset:"0",width:"100%",height:"100%",opacity:0,pointerEvents:"none"};return H("iframe",{ref:Vt([r,a]),style:f,onLoad:()=>s(!0),srcDoc:"<!doctype html><title>\u2026</title>",children:d?Ut.createPortal(qt(Se,{frame:o,children:[H("div",{children:t==="modal"?n:H(_t,{onSize:i,children:n})}),H("style",{dangerouslySetInnerHTML:{__html:Ae}})]}),d.body):null})});import{twMerge as ze}from"tailwind-merge";import{jsx as k,jsxs as jt}from"react/jsx-runtime";function De({open:e,onOpenChange:t,children:n}){return k(Yt,{open:e,onOpenChange:t,children:k(Xt,{children:jt(L,{mode:"modal",children:[k("div",{className:ze("fixed inset-0","bg-neutral-800/85","animate-in animate-duration-300 fade-in")}),k("div",{className:ze("fixed inset-0","grid items-end sm:items-center","animate-in animate-duration-300 fade-in slide-in-from-bottom-16"),children:k("div",{children:k($t,{className:"outline-none w-full max-w-[26rem] mx-auto","aria-describedby":void 0,onOpenAutoFocus:r=>{r.preventDefault()},children:n})})})]})})})}import{useCallback as ce,useMemo as Qt}from"react";import{useStore as Jt}from"zustand";import{createStore as Zt}from"zustand/vanilla";var B=Zt(()=>({open:!1}));function y(){let e=Jt(B,a=>a.open),t=ce(()=>{B.setState({open:!0})},[]),n=ce(()=>{B.setState({open:!1})},[]),r=ce(a=>{B.setState({open:a})},[]);return Qt(()=>({accountModalOpen:e,openAccountModal:t,closeAccountModal:n,toggleAccountModal:r}),[e,t,n,r])}import{twMerge as kt}from"tailwind-merge";import{useConnectorClient as Br}from"wagmi";import{useAccount as Zn}from"wagmi";import{twMerge as F}from"tailwind-merge";import{twMerge as en}from"tailwind-merge";import{jsx as Ke,jsxs as tn}from"react/jsx-runtime";function x({className:e,...t}){return tn("svg",{className:en("-my-[0.125em] h-[1.25em] w-[1.25em] animate-spin",e),xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",...t,children:[Ke("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),Ke("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]})}import{jsx as N,jsxs as rn}from"react/jsx-runtime";var nn=({variant:e="primary"}={})=>F("group self-center leading-none outline-none border-4 border-transparent","transition hover:brightness-125 active:brightness-150","focus:border-orange-500","aria-disabled:pointer-events-none aria-busy:pointer-events-none","aria-disabled:opacity-50","p-[.75em] font-medium",{primary:F("bg-neutral-700 text-white"),secondary:F("bg-neutral-800 text-white")}[e]),g=({pending:e,variant:t,type:n,className:r,children:a,disabled:c,...s})=>N("button",{type:n||"button",className:F(nn({variant:t,pending:e}),r),"aria-busy":e,"aria-disabled":c,disabled:c||e,...s,children:rn("span",{className:"grid grid-cols-[1fr_auto_1fr] gap-2",children:[N("span",{className:"flex items-center justify-end text-[.75em]",children:N("span",{className:"transition opacity-0 translate-x-2 group-aria-busy:opacity-100 group-aria-busy:translate-x-0 duration-100 group-aria-busy:duration-300",children:N(x,{})})}),N("span",{children:a})]})});import{useConnectModal as er}from"@rainbow-me/rainbowkit";import{useMutation as Qe}from"@tanstack/react-query";import{useConnectors as Xn}from"wagmi";import{createClient as Fn,custom as Wn,getAddress as Un,numberToHex as Ye,SwitchChainError as Gn}from"viem";import{ChainNotConfiguredError as Vn,createConnector as _n}from"wagmi";import{createStore as an}from"zustand/vanilla";import{persist as on}from"zustand/middleware";var m=an(on(()=>({publicKeys:{},addresses:{},activeCredential:null}),{name:"mud:passkey:cache"}));function sn(e){e.key===m.persist.getOptions().name&&m.persist.rehydrate()}window.addEventListener("storage",sn);import{smartAccountActions as qn}from"permissionless/clients";import{toWebAuthnAccount as Cn}from"viem/account-abstraction";import{BaseError as cn}from"abitype";import{pad as dn,encodeFunctionData as de,hashMessage as ln,hashTypedData as Be,encodeAbiParameters as Fe,stringToHex as pn,size as un,encodePacked as mn,parseSignature as fn}from"viem";import{entryPoint07Abi as yn,entryPoint07Address as gn,getUserOperationHash as hn,toSmartAccount as wn}from"viem/account-abstraction";import{readContract as Le}from"viem/actions";import{parseSignature as bn}from"webauthn-p256";async function G(e){let{client:t,owners:n,nonce:r=0n}=e,a=e.address,c={abi:yn,address:gn,version:"0.7"},s={abi:vn,address:"0x356336adA1619BeC1Ae4E6D94Dd9c0490DA414a8"};if(!n.length)throw new Error("`owners` must have at least one account.");function o(d){return d.type==="webAuthn"?d.publicKey:dn(d.address)}let l=e.signer??n[0],i=n.indexOf(l);if(i===-1)throw new Error("`signer` must be one of `owners`.");return wn({client:t,entryPoint:c,extend:{__isCoinbaseSmartAccount:!0,abi:U,factory:s,signer:l},async encodeCalls(d){return d.length===1?de({abi:U,functionName:"execute",args:[d[0].to,d[0].value??0n,d[0].data??"0x"]}):de({abi:U,functionName:"executeBatch",args:[d.map(p=>({data:p.data??"0x",target:p.to,value:p.value??0n}))]})},async getAddress(){return a??=await Le(t,{...s,functionName:"getAddress",args:[n.map(o),r]}),a},async getFactoryArgs(){let d=de({abi:s.abi,functionName:"createAccount",args:[n.map(o),r]});return{factory:s.address,factoryData:d}},async getStubSignature(){return l.type==="webAuthn"?"0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000000001949fc7c88032b9fcb5f6efc7a7b8c63668eae9871b765e23123bb473ff57aa831a7c0d9276168ebcc29f2875a0239cffdf2a9cd1c2007c5c77c071db9264df1d000000000000000000000000000000000000000000000000000000000000002549960de5880e8c687434170f6476605b8fe4aeb9a28632c7995cf3ba831d97630500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008a7b2274797065223a22776562617574686e2e676574222c226368616c6c656e6765223a2273496a396e6164474850596759334b7156384f7a4a666c726275504b474f716d59576f4d57516869467773222c226f726967696e223a2268747470733a2f2f7369676e2e636f696e626173652e636f6d222c2263726f73734f726967696e223a66616c73657d00000000000000000000000000000000000000000000":E({signature:"0xfffffffffffffffffffffffffffffff0000000000000000000000000000000007aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1c",ownerIndex:i})},async sign(d){let p=await this.getAddress(),f=le({address:p,chainId:t.chain.id,hash:d.hash}),h=await W({hash:f,owner:l});return E({signature:h,ownerIndex:i})},async signMessage(d){let{message:p}=d,f=await this.getAddress(),h=le({address:f,chainId:t.chain.id,hash:ln(p)}),I=await W({hash:h,owner:l});return E({signature:I,ownerIndex:i})},async signTypedData(d){let{domain:p,types:f,primaryType:h,message:I}=d,ie=await this.getAddress(),Et=le({address:ie,chainId:t.chain.id,hash:Be({domain:p,message:I,primaryType:h,types:f})}),Rt=await W({hash:Et,owner:l});return E({signature:Rt,ownerIndex:i})},async signUserOperation(d){let{chainId:p=t.chain.id,...f}=d,h=await this.getAddress(),I=hn({chainId:p,entryPointAddress:c.address,entryPointVersion:c.version,userOperation:{...f,sender:h}}),ie=await W({hash:I,owner:l});return E({signature:ie,ownerIndex:i})},userOperation:{async estimateGas(d){if(l.type==="webAuthn")return{verificationGasLimit:BigInt(Math.max(Number(d.verificationGasLimit??0n),8e5))}}},async isOwner(d){return await Le(t,{abi:U,address:await this.getAddress(),functionName:"isOwnerBytes",args:[o(d)]})}})}async function W({hash:e,owner:t}){if(t.type==="webAuthn"){let{signature:n,webauthn:r}=await t.sign({hash:e});return xn({signature:n,webauthn:r})}if(t.sign)return t.sign({hash:e});throw new cn("`owner` does not support raw sign.")}function le({address:e,chainId:t,hash:n}){return Be({domain:{chainId:t,name:"Coinbase Smart Wallet",verifyingContract:e,version:"1"},types:{CoinbaseSmartWalletMessage:[{name:"hash",type:"bytes32"}]},primaryType:"CoinbaseSmartWalletMessage",message:{hash:n}})}function xn({webauthn:e,signature:t}){let{r:n,s:r}=bn(t);return Fe([{components:[{name:"authenticatorData",type:"bytes"},{name:"clientDataJSON",type:"bytes"},{name:"challengeIndex",type:"uint256"},{name:"typeIndex",type:"uint256"},{name:"r",type:"uint256"},{name:"s",type:"uint256"}],type:"tuple"}],[{authenticatorData:e.authenticatorData,clientDataJSON:pn(e.clientDataJSON),challengeIndex:BigInt(e.challengeIndex),typeIndex:BigInt(e.typeIndex),r:n,s:r}])}function E(e){let{ownerIndex:t}=e,n=(()=>{if(un(e.signature)!==65)return e.signature;let r=fn(e.signature);return mn(["bytes32","bytes32","uint8"],[r.r,r.s,r.yParity===0?27:28])})();return Fe([{components:[{name:"ownerIndex",type:"uint8"},{name:"signatureData",type:"bytes"}],type:"tuple"}],[{ownerIndex:t,signatureData:n}])}var U=[{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"}],vn=[{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"}];async function R(e,t){let{publicKeys:n}=m.getState(),r=n[t];if(!r)throw new Error("No public key found for passkey credential.");let c=[Cn({credential:{id:t,publicKey:r}})];return await G({client:e,owners:c})}import{bytesToHex as En,hashMessage as Rn}from"viem";import{sign as On}from"webauthn-p256";import{bytesToHex as kn,hexToBytes as We}from"webauthn-p256";import{concatBytes as An,utf8ToBytes as Pn}from"@noble/curves/abstract/utils";async function V(e){let{authenticatorData:t,challengeIndex:n,clientDataJSON:r,typeIndex:a,userVerificationRequired:c}=e,s=a||r.indexOf('"type"'),o=n||r.indexOf('"challenge"'),l=We(t);if(l.length<37)throw new Error("Invalid authenticatorData");let i=l[32];if((i&1)!==1)throw new Error("Invalid authenticatorData");if(c&&(i&4)!==4)throw new Error("Invalid authenticatorData");if((i&8)!==8&&(i&16)===16)throw new Error("Invalid authenticatorData");let d='"type":"webauthn.get"';if(d!==r.slice(Number(s),d.length+1))throw new Error("Invalid clientDataJSON");if(!r.slice(Number(o)).match(/^"challenge":"(.*?)"/))throw new Error("Invalid clientDataJSON");let f=new Uint8Array(await crypto.subtle.digest("SHA-256",Pn(r))),h=new Uint8Array(await crypto.subtle.digest("SHA-256",An(We(t),f)));return kn(h)}import{sign as Mn}from"webauthn-p256";import{parseSignature as Sn,serializePublicKey as Ue}from"webauthn-p256";import{secp256r1 as Ge}from"@noble/curves/p256";function pe(e){let{r:t,s:n}=Sn(e.signatureHex),r=new Ge.Signature(t,n).addRecoveryBit(1).recoverPublicKey(e.messageHash.slice(2)),a=new Ge.Signature(t,n).addRecoveryBit(0).recoverPublicKey(e.messageHash.slice(2));return[Ue(r),Ue(a)]}import{hashMessage as In}from"viem";function Hn([e,t]){return Nn([...pe(e),...pe(t)])}async function Ve(e){let t=In(e.signatureHex),{signature:n,webauthn:r,raw:a}=await Mn({credentialId:e.credentialId,hash:t}),c=await V(r),s=Hn([e,{signatureHex:n,messageHash:c}]);if(s)return{publicKey:s,credential:a}}function Nn(e){let t=new Set;for(let n of e){if(t.has(n))return n;t.add(n)}}async function ue(){let e=En(crypto.getRandomValues(new Uint8Array(256))),t=Rn(e),{signature:n,webauthn:r,raw:a}=await On({hash:t}),c=await(async()=>{let s=m.getState().publicKeys[a.id];if(s)return s;let o=await V(r),l=await Ve({credentialId:a.id,messageHash:o,signatureHex:n});if(!l)throw new Error("recovery failed");if(l.credential.id!==a.id)throw new Error("wrong credential");return m.setState(i=>({publicKeys:{...i.publicKeys,[a.id]:l.publicKey}})),l.publicKey})();return console.log("recovered passkey",a.id,c),m.setState(()=>({activeCredential:a.id})),{id:a.id,publicKey:c,raw:a}}import{createCredential as Tn}from"webauthn-p256";async function _e(){let e=await Tn({name:"MUD Account"});return console.log("created passkey",e),m.setState(t=>({activeCredential:e.id,publicKeys:{...t.publicKeys,[e.id]:e.publicKey}})),e}import{resourceToHex as zn}from"@latticexyz/common";import{parseAbi as Dn}from"viem";import Kn from"@latticexyz/world/mud.config";var _={pollingInterval:250},O=zn({type:"system",namespace:"",name:"unlimited"}),qe=Kn.namespaces.world.tables,me=Dn(["function registerDelegation(address delegatee, bytes32 delegationControlId, bytes initCallData)"]);import{createBundlerClient as Ln}from"viem/account-abstraction";var Bn=new Set([31337,17420,17069,690]);function q({paymasterAddress:e,...t}){let n=t.chain??t.client?.chain;return Ln({..._,paymaster:{getPaymasterData:async()=>({paymaster:e,paymasterData:"0x"})},userOperation:{estimateFeesPerGas:n&&Bn.has(n.id)?async()=>({maxFeePerGas:100000n,maxPriorityFeePerGas:0n}):void 0},...t})}import{observer as Yn}from"@latticexyz/explorer/observer";A.type="passkey";function A({chainId:e,bundlerTransport:t,paymasterAddress:n,explorerUrl:r}){return _n(a=>{if(!a.transports)throw new Error("Wagmi must be configured with transports to use the passkey connector.");let c=a.chains.find(i=>i.id===e);if(!c)throw new Error(`Could not find configured chain for chain ID ${e}.`);let s=a.transports[c.id];if(!s)throw new Error(`Could not find configured transport for chain ID ${e}.`);let o=Fn({..._,chain:c,transport:s}),l=m.getState().activeCredential!=null;return{id:"passkey",type:A.type,name:"Passkey",async createPasskey(){let{id:i}=await _e(),d=await R(o,i);this.onAccountsChanged([d.address]),this.onConnect?.({chainId:Ye(e)})},async reusePasskey(){let{id:i}=await ue(),d=await R(o,i);this.onAccountsChanged([d.address]),this.onConnect?.({chainId:Ye(e)})},hasPasskey(){return Object.keys(m.getState().publicKeys).length>0},async connect(i){if(console.log("connect"),i?.chainId!=null&&i.chainId!==e)throw new Error(`Can't connect to chain ${i.chainId}. Passkey connector is bound to chain ${e}.`);!m.getState().activeCredential&&!i?.isReconnecting&&await ue();let d=await this.getAccounts();return l=d.length>0,{accounts:d,chainId:e}},async disconnect(){console.log("disconnect"),l=!1,m.setState({activeCredential:null})},async getAccounts(){console.log("getAccounts");let i=m.getState().activeCredential;if(!i)return[];try{console.log("getting account for credential",i);let d=await R(o,i);return console.log("got account",d),[d.address]}catch{console.log("could not get address for credential ID",i)}return[]},async getChainId(){return e},async isAuthorized(){return console.log("isAuthorized"),l?(await this.getAccounts()).length>0:!1},async switchChain(i){if(i.chainId!==e)throw new Error(`Can't connect to chain ${i.chainId}. Passkey connector is bound to chain ${e}.`);let d=a.chains.find(p=>p.id===i.chainId);if(!d)throw new Gn(new Vn);return d},onAccountsChanged(i){console.log("onAccountsChanged"),i.length>0?a.emitter.emit("change",{accounts:i.map(d=>Un(d))}):this.onDisconnect()},onChainChanged(i){console.log("onChainChanged"),a.emitter.emit("change",{chainId:Number(i)})},async onConnect(i){console.log("onConnect");let d=await this.getAccounts();a.emitter.emit("connect",{accounts:d,chainId:e})},async onDisconnect(i){console.log("onDisconnect"),a.emitter.emit("disconnect"),l=!1},async getClient(i){console.log("passkeyConnector.getClient",i);let d=m.getState().activeCredential;if(!d)throw new Error("Not connected.");let p=await R(o,d);return q({paymasterAddress:n,transport:t,client:o,account:p}).extend(qn()).extend(f=>r?Yn({explorerUrl:r})(f):{})},async getProvider(i){return Wn({request:o.transport.request})({retryCount:0})}}})}function Xe(){let t=Xn().find(n=>n.type===A.type);if(!t)throw new Error("Could not find passkey connector. Did you configure Wagmi with the EntryKit passkey connector or passkey wallet?");return t}import{twMerge as $n}from"tailwind-merge";import{jsx as fe,jsxs as jn}from"react/jsx-runtime";function v({className:e,...t}){return jn("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 8 8",fill:"currentColor",shapeRendering:"crispEdges",className:$n("-my-[0.125em] h-[1.25em] w-[1.25em]",e),...t,children:[fe("path",{d:"M0 0h1v1H0zm0 1h1v1H0zm0 1h1v1H0zm0 1h1v1H0zm0 1h1v1H0zm0 1h1v1H0zm0 1h1v1H0zm0 1h1v1H0zm1 0h1v1H1zm1 0h1v1H2zm1 0h1v1H3zm1 0h1v1H4zm1 0h1v1H5zm2-1h1v1H7zm0 1h1v1H7zM6 7h1v1H6zm1-2h1v1H7zm0-1h1v1H7zm0-1h1v1H7z"}),fe("path",{d:"M2 2h1v1H2zm0 1h1v1H2zm0 1h1v1H2zm0 1h1v1H2zm1-3h1v1H3zm1 0h1v1H4zm1 0h1v1H5zm0 1h1v1H5zm0 1h1v1H5zm0 1h1v1H5zM4 5h1v1H4zM3 5h1v1H3z",opacity:".5"}),fe("path",{d:"M7 2h1v1H7zm0-1h1v1H7zM1 0h1v1H1zm1 0h1v1H2zm1 0h1v1H3zm1 0h1v1H4zm1 0h1v1H5zm1 0h1v1H6zm1 0h1v1H7z"})]})}function $e(){let{appInfo:e}=u(),t=e?.name??document.title,n=location.host,r=e?.icon??document.querySelector("link[rel~='icon']")?.getAttribute("href")??"/favico.ico",a=e?.image;return{appName:t,appOrigin:n,appIcon:r,appImage:a}}import{useQuery as Qn}from"@tanstack/react-query";function Y(e){return Qn({enabled:!!e,retry:!1,retryOnMount:!1,refetchOnMount:!1,refetchOnWindowFocus:!1,queryKey:[e],queryFn:()=>new Promise((t,n)=>{if(!e)throw new Error("usePreloadImage: Must provide `url` to preload image.");let r=new Image;r.onload=()=>t(r),r.onerror=()=>n(new Error(`usePreloadImage: Could not load image.
1435
1435
 
1436
- URL: ${e}`)),r.src=e})})}import{jsx as X,jsxs as Jn}from"react/jsx-runtime";function je(){let{appName:e,appIcon:t}=$e(),{data:n,isLoading:r}=Y(t);return Jn("div",{className:"flex-grow flex flex-col items-center justify-center gap-2",children:[X("div",{className:"w-16 h-16 m-2",children:r?null:n?X("img",{src:t,className:"w-full h-full object-cover"}):X(v,{className:"w-full h-full text-orange-500 dark:bg-neutral-800"})}),X("div",{className:"text-2xl text-white text-center",children:e})]})}import{twMerge as tr}from"tailwind-merge";import{jsx as P,jsxs as Je}from"react/jsx-runtime";function Ze(){let e=Zn(),{accountModalOpen:t}=y(),{openConnectModal:n,connectModalOpen:r}=er(),a=Xe(),c=Qe({onError:i=>console.error(i),mutationKey:["createPasskey",a.id,t,r,e.status],mutationFn:()=>a.createPasskey()}),s=Qe({onError:i=>console.error(i),mutationKey:["reusePasskey",a.id,t,r,e.status],mutationFn:()=>a.reusePasskey()}),o=a.hasPasskey(),l=[P(g,{variant:o?"secondary":"primary",className:"self-auto flex justify-center",pending:c.status==="pending",onClick:()=>c.mutate(),autoFocus:!o,children:"Create account"},"create"),P(g,{variant:o?"primary":"secondary",className:"self-auto flex justify-center",pending:s.status==="pending",onClick:()=>s.mutate(),autoFocus:o,children:"Sign in"},"signin")];return o&&l.reverse(),P("div",{className:tr("flex-grow grid place-items-center p-6"),children:Je("div",{className:"flex flex-col gap-6",children:[P("div",{className:"p-4",children:P(je,{})}),Je("div",{className:"self-center flex flex-col gap-2 w-60",children:[l,P("button",{className:"text-sm self-center transition text-neutral-500 hover:text-white p-2",disabled:e.status==="connecting",onClick:n,children:"Already have a wallet?"})]})]})})}import{useState as Lr}from"react";import{useMemo as Kr}from"react";import{parseEther as nr}from"viem";var $=nr("0.01");import{useReadContract as rr}from"wagmi";import ar from"@latticexyz/store/out/IStoreRead.sol/IStoreRead.abi.json";import{decodeValueArgs as or,getKeyTuple as ir,getSchemaTypes as sr,getValueSchema as cr}from"@latticexyz/protocol-parser/internal";function S({table:e,key:t,...n}){return rr(e&&t&&n.query?.enabled!==!1?{...n,abi:ar,functionName:"getRecord",args:[e.tableId,ir(e,t)],query:{...n.query,select:r=>({...t,...or(sr(cr(e)),{staticData:r[0],encodedLengths:r[1],dynamicData:r[2]})})}}:{})}import{defineStore as dr}from"@latticexyz/store";import{parseAbi as lr}from"viem";var ye=lr(["error SpenderSystem_AlreadyRegistered(address spender, address user)","error SpenderSystem_HasOwnBalance(address spender)","function registerSpender(address spender)"]),pr=dr({namespaces:{root:{namespace:"",tables:{Allowance:{schema:{user:"address",allowance:"uint256"},key:["user"]},Grantor:{schema:{grantor:"address",allowance:"uint256"},key:["grantor"]},PassHolder:{schema:{user:"address",passId:"bytes32",lastRenewed:"uint256",lastClaimed:"uint256"},key:["user","passId"]},PassConfig:{schema:{passId:"bytes32",claimAmount:"uint256",claimInterval:"uint256",validityPeriod:"uint256",grantor:"address"},key:["passId"]},Spender:{schema:{spender:"address",user:"address"},key:["spender"]},SystemConfig:{schema:{entryPoint:"address"},key:[]}}}}}),j=pr.namespaces.root.tables;function Q(e){let{chainId:t,paymasterAddress:n}=u();return S({chainId:t,address:n,...e?{table:j.Allowance,key:{user:e}}:null})}import{useClient as xr}from"wagmi";import{useQuery as vr}from"@tanstack/react-query";import{createStore as ur}from"zustand/vanilla";import{persist as mr}from"zustand/middleware";var z=ur(mr(()=>({appSigners:{}}),{name:"mud:entrykit",partialize:({appSigners:e})=>({appSigners:e})}));function fr(e){e.key===z.persist.getOptions().name&&z.persist.rehydrate()}window.addEventListener("storage",fr);import{generatePrivateKey as yr,privateKeyToAccount as gr}from"viem/accounts";function et(e){let t=z.getState().appSigners[e]??(()=>{let n=yr();return z.setState(r=>({appSigners:{...r.appSigners,[e]:n}})),n})();return gr(t)}import{smartAccountActions as hr}from"permissionless";import{callFrom as wr}from"@latticexyz/world/internal";import{observer as br}from"@latticexyz/explorer/observer";async function tt({worldAddress:e,userAddress:t,client:n,bundlerTransport:r,paymasterAddress:a,explorerUrl:c}){let s=et(t),o=await G({client:n,owners:[s]});return q({paymasterAddress:a,transport:r,client:n,account:o}).extend(hr()).extend(wr({worldAddress:e,delegatorAddress:t,publicClient:n})).extend(i=>c?br({explorerUrl:c})(i):{}).extend(()=>({userAddress:t}))}function M(e){let{chainId:t,bundlerTransport:n,paymasterAddress:r,worldAddress:a,explorerUrl:c}=u(),s=xr({chainId:t}),o=["appAccountClient",s?.uid,e];return vr(s&&e?{queryKey:o,queryFn:async()=>await tt({worldAddress:a,userAddress:e,client:s,bundlerTransport:n,paymasterAddress:r,explorerUrl:c}),staleTime:1/0}:{queryKey:o,enabled:!1})}function nt(e){let{chainId:t,paymasterAddress:n}=u();return S({chainId:t,address:n,...e?{table:j.Spender,key:{spender:e}}:null})}function rt(e,t){let{chainId:n,worldAddress:r}=u();return S({chainId:n,address:r,...e&&t?{table:qe.UserDelegationControl,key:{delegator:e,delegatee:t}}:null})}import{useDisconnect as Ar}from"wagmi";import{useQuery as Cr}from"@tanstack/react-query";function J(e){let t=e?.toLowerCase();return Cr({enabled:!!t,queryKey:["ens",t],initialData:{address:void 0,name:void 0,displayName:void 0,avatar:void 0},queryFn:async()=>{let n=await fetch(`https://api.ensideas.com/ens/resolve/${t}`).then(r=>r.json());return{address:n.address??void 0,name:n.name??void 0,displayName:n.displayName??void 0,avatar:n.avatar??void 0}}})}import{jsx as ge,jsxs as kr}from"react/jsx-runtime";function Z({hex:e}){return e.length<=10?ge("span",{title:e,children:e}):kr("span",{title:e,children:[ge("span",{className:"after:select-none after:content-['\u2026']",children:e.slice(0,6)}),ge("span",{className:"tracking-[-1ch] text-transparent",children:e.slice(6,-4)}),e.slice(-4)]})}import{jsx as D,jsxs as he}from"react/jsx-runtime";function at({isActive:e,isExpanded:t,userAddress:n}){let{data:r}=J(n),{disconnect:a,isPending:c}=Ar(),{closeAccountModal:s}=y();return he("div",{className:"flex flex-col gap-4",children:[he("div",{className:"flex justify-between gap-4",children:[he("div",{children:[D("div",{children:"Account"}),D("div",{className:"font-mono text-white",children:r.name??D(Z,{hex:n})})]}),D(g,{variant:e?"primary":"secondary",className:"flex-shrink-0 text-sm p-1 w-28",pending:c,onClick:()=>{s(),a()},children:"Sign out"})]}),t?D("p",{className:"text-sm",children:"Each of your onchain actions in this app is associated with your account."}):null]})}import{useMutation as Pr,useQueryClient as Sr}from"@tanstack/react-query";function ot(){let e=Sr(),{passIssuerTransport:t}=u();return Pr({onError:n=>console.error(n),mutationKey:["claimGasPass"],mutationFn:async n=>{let r=t({retryCount:0});await r.request({method:"quarry_issuePass",params:["0x01",n]}),await r.request({method:"quarry_claimAllowance",params:["0x01",n]}),await e.invalidateQueries({queryKey:["readContract"]})}})}import{twMerge as Mr}from"tailwind-merge";import{jsx as ee,jsxs as Ir}from"react/jsx-runtime";function it({className:e,...t}){return Ir("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 263 428",fill:"currentColor",className:Mr("w-[0.6em] h-[1em]",e),...t,children:[ee("path",{d:"M132 321V428L263 243L132 321Z"}),ee("path",{d:"M0 243L132 321V428",fillOpacity:"0.5"}),ee("path",{d:"M132 0V296L263 218"}),ee("path",{d:"M0 218L132 296V0L0 218Z",fillOpacity:"0.5"})]})}import{formatEther as Hr}from"viem";function st(e){let t=Hr(e),n=Math.floor(parseFloat(t)).toString().length;return parseFloat(t).toLocaleString("en-US",{maximumFractionDigits:Math.max(0,6-n)})}import{jsx as Nr,jsxs as Er}from"react/jsx-runtime";function ct({wei:e}){return Er("span",{className:"inline-flex items-center gap-1",children:[st(e)," ",Nr(it,{})]})}import{useEffect as Rr}from"react";import{jsx as I,jsxs as we}from"react/jsx-runtime";function dt({isActive:e,isExpanded:t,userAddress:n}){let r=Q(n),a=ot();return Rr(()=>{e&&a.status==="idle"&&r.data&&r.data.allowance<$&&a.mutate(n)},[r.data,a,e,n]),we("div",{className:"flex flex-col gap-4",children:[we("div",{className:"flex justify-between gap-4",children:[we("div",{children:[I("div",{children:"Allowance"}),I("div",{className:"font-mono text-white",children:r.data?I(ct,{wei:r.data.allowance}):I(x,{})})]}),I(g,{variant:e?"primary":"secondary",className:"flex-shrink-0 text-sm p-1 w-28",pending:a.status==="pending",onClick:()=>a.mutate(n),children:"Top up"})]}),t?I("p",{className:"text-sm",children:"Your allowance is used to pay for onchain computation."}):null]})}import{useMutation as Or,useQueryClient as Tr}from"@tanstack/react-query";import{getAction as te}from"viem/utils";import{sendUserOperation as zr,waitForUserOperationReceipt as Dr}from"viem/account-abstraction";import{writeContract as lt}from"viem/actions";function pt(){let{worldAddress:e,paymasterAddress:t}=u(),n=Tr();return Or({onError:r=>console.error(r),mutationKey:["setupAppAccount"],mutationFn:async({userClient:r,appAccountAddress:a,registerSpender:c,registerDelegation:s})=>{r.account.type!=="smart"&&(await te(r,lt,"writeContract")({chain:r.chain,account:r.account,address:t,abi:ye,functionName:"registerSpender",args:[a]}),await te(r,lt,"writeContract")({chain:r.chain,account:r.account,address:e,abi:me,functionName:"registerDelegation",args:[a,T,"0x"]}));let o=[];if(c&&(console.log("registering spender"),o.push({to:t,abi:ye,functionName:"registerSpender",args:[a]})),s&&(console.log("registering delegation"),o.push({to:e,abi:me,functionName:"registerDelegation",args:[a,T,"0x"]})),!o.length)return;console.log("setting up account with",o);let l=await te(r,zr,"sendUserOperation")({calls:o});console.log("got user op hash",l);let i=await te(r,Dr,"waitForUserOperationReceipt")({hash:l});console.log("got user op receipt",i),await n.invalidateQueries({queryKey:["readContract"]})}})}import{jsx as K,jsxs as be}from"react/jsx-runtime";function ut({isActive:e,isExpanded:t,userClient:n,registerSpender:r,registerDelegation:a}){let{closeAccountModal:c}=y(),s=M(n.account.address),o=pt(),l=!a&&!a;return be("div",{className:"flex flex-col gap-4",children:[be("div",{className:"flex justify-between gap-4",children:[be("div",{children:[K("div",{children:"Session"}),K("div",{className:"font-mono text-white",children:l?"Activated":"Set up"})]}),l?K(g,{variant:e?"primary":"secondary",className:"flex-shrink-0 text-sm p-1 w-28",disabled:!0,children:"Deactivate"}):K(g,{variant:e?"primary":"secondary",className:"flex-shrink-0 text-sm p-1 w-28",pending:!s.data||o.status==="pending",onClick:s.data?async()=>{await o.mutateAsync({userClient:n,appAccountAddress:s.data.account.address,registerSpender:r,registerDelegation:a}),c()}:void 0,children:"Activate"})]}),t?K("p",{className:"text-sm",children:"You can perform actions in this app without interruptions for approvals."}):null]})}import{jsx as xe}from"react/jsx-runtime";function ne(e){let t=e?.account.address,n=Q(t),r=M(t),a=nt(r.data?.account.address),c=t&&a.data?a.data.user.toLowerCase()===t.toLowerCase():!1,s=rt(e?.account.address,r.data?.account.address),o=s.data?s.data?.delegationControlId===T:!1;return Kr(()=>t?[{id:"wallet",label:"Sign in",isComplete:!0,content:l=>xe(at,{...l,userAddress:t})},{id:"allowance",label:"Top up",isComplete:(n.data?.allowance??0n)>=$,content:l=>xe(dt,{...l,userAddress:t})},{id:"session",label:"Set up account",isComplete:c&&o,content:l=>xe(ut,{...l,userClient:e,registerSpender:!c,registerDelegation:!o})}]:[{id:"wallet",label:"Sign in",isComplete:!1,content:()=>null}],[n.data?.allowance,o,c,t,e])}import{twMerge as ve}from"tailwind-merge";import{jsx as Ce}from"react/jsx-runtime";function mt({userClient:e}){let t=ne(e),[n]=Lr(null),r=t.find(o=>o.content!=null&&!o.isComplete),a=t.filter(o=>o.isComplete),c=(n!=null?t.find(o=>o.id===n):null)??r??(a.length<t.length?a.at(-1):null),s=c?t.indexOf(c):-1;return Ce("div",{className:ve("px-8 flex-grow flex flex-col divide-y divide-neutral-800"),children:t.map((o,l)=>{let i=o===c,d=i||a.length===t.length,p=!o.isComplete&&s!==-1&&l>s;return Ce("div",{className:ve("py-8 flex flex-col justify-center",i?"flex-grow":null),children:Ce("div",{className:ve("flex flex-col",p?"opacity-30 pointer-events-none":null),children:o.content({isActive:i,isExpanded:d})})},o.id)})})}import{jsx as ft}from"react/jsx-runtime";function yt(){let{chainId:e}=u(),t=Br({chainId:e});return t.status!=="success"?ft(Ze,{}):ft(mt,{userClient:t.data})}import{useState as Vr}from"react";import{ErrorBoundary as _r}from"react-error-boundary";import{twMerge as Fr}from"tailwind-merge";import{BaseError as Wr,UserRejectedRequestError as Ur}from"viem";import{jsx as gt,jsxs as Gr}from"react/jsx-runtime";function ht({title:e,error:t}){if(!t||t instanceof Wr&&t.walk(a=>a instanceof Ur)!=null)return null;let n=e??"Error",r=typeof t=="string"?t:t instanceof Error?String(t):"Something unexpected happened.";return Gr("div",{className:Fr("text-sm border-l-4 border-red-500","bg-red-100 text-red-900","dark:bg-red-900 dark:text-red-50"),children:[gt("div",{className:"p-3 font-semibold",children:n}),gt("div",{className:"px-3 whitespace-break-spaces break-all max-h-32 overflow-y-scroll",children:r})]})}import{wait as qr}from"@latticexyz/common/utils";import{twMerge as Yr}from"tailwind-merge";import{useIsMounted as Xr}from"usehooks-ts";import{jsx as re,jsxs as wt}from"react/jsx-runtime";function bt({children:e}){let t=Xr(),[n,r]=Vr(1);return re(_r,{fallbackRender:({error:a,resetErrorBoundary:c})=>wt("div",{className:Yr("flex-grow flex flex-col justify-center p-5 gap-2"),children:[re(ht,{error:a instanceof Error?a.stack??a.message:a}),n>0?wt("button",{type:"button",onClick:async s=>{s.currentTarget.ariaBusy="true",await qr(1e3),c(),t()&&(r(o=>o-1),s.currentTarget.ariaBusy=null)},className:"group aria-busy:pointer-events-none self-end flex items-center gap-1",children:[re(x,{className:"transition opacity-0 group-aria-busy:opacity-100 text-xs text-neutral-500 dark:text-neutral-400"}),re("span",{className:"text-sm text-neutral-500 dark:text-neutral-400 group-hover:text-black dark:group-hover:text-white",children:"Retry?"})]}):null]}),children:e})}import{DialogClose as Qr,DialogTitle as Jr}from"@radix-ui/react-dialog";import{twMerge as $r}from"tailwind-merge";import{jsx as jr}from"react/jsx-runtime";function xt({className:e,children:t,...n}){return jr("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",className:$r("-my-[0.125em] h-[1.25em] w-[1.25em]",e),...n,children:t})}import{jsx as vt}from"react/jsx-runtime";function Ct(e){return vt(xt,{strokeWidth:"2",stroke:"currentColor",...e,children:vt("path",{d:"M6 18L18 6M6 6L18 18",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})}import{jsx as h,jsxs as ke}from"react/jsx-runtime";function At(){let{accountModalOpen:e,toggleAccountModal:t}=y();return ke(De,{open:e,onOpenChange:t,children:[h(Jr,{className:"sr-only",children:"Connect with EntryKit"}),e?ke("div",{className:kt("relative flex flex-col min-h-[28rem] ring-1 py-2","bg-neutral-900 text-neutral-400 ring-neutral-700/50 divide-neutral-700","links:font-medium links:underline links:underline-offset-4","links:text-white","links:decoration-neutral-500 hover:links:decoration-orange-500"),children:[h("div",{className:"flex-grow flex flex-col",children:h(bt,{children:h(yt,{})})}),ke("a",{href:"https://mud.dev",target:"_blank",rel:"noreferrer noopener",className:"group self-center p-3 flex items-center justify-center gap-2 links-unset text-sm font-mono transition text-neutral-400 hover:text-white",children:[h("span",{className:"block w-4 h-4",children:h(v,{className:"w-full h-full text-orange-500 group-hover:rotate-90 transition duration-300"})}),h("span",{children:"Powered by MUD"})]}),h("div",{className:"absolute top-0 right-0",children:h(Qr,{className:kt("pointer-events-auto leading-none p-2 transition","text-neutral-700 hover:text-neutral-500"),title:"Close",children:h(Ct,{className:"m-0"})})})]}):null]})}import{jsx as ea,jsxs as ta}from"react/jsx-runtime";function Zr({config:e,children:t}){return ta(Ee,{config:e,children:[t,ea(At,{})]})}import{useAccount as ra}from"wagmi";import{twMerge as C}from"tailwind-merge";import{twMerge as Pt}from"tailwind-merge";import{Fragment as na,jsx as ae,jsxs as St}from"react/jsx-runtime";function Mt({address:e}){let{data:t}=J(e),{isSuccess:n}=Y(t.avatar);return St(na,{children:[St("span",{className:"flex-shrink-0 w-6 h-6 -my-1 -mx-0.5 grid place-items-center",children:[ae("img",{src:n?t.avatar:void 0,className:Pt("col-start-1 row-start-1","inline-flex w-full h-full rounded-full bg-black/10 dark:bg-white/10 bg-cover bg-no-repeat bg-center",n?"opacity-100":"opacity-0")}),ae(v,{className:Pt("col-start-1 row-start-1 text-orange-500","transition duration-300",n?"opacity-0":"opacity-100")})]}),ae("span",{className:"flex-grow",children:t.name??(e?ae(Z,{hex:e}):null)})]})}import{jsx as b,jsxs as Ht}from"react/jsx-runtime";var It=C("w-48 inline-flex outline-none transition","border border-transparent","text-base leading-none"),aa=C("bg-neutral-100 border-neutral-300 text-black","dark:bg-neutral-800 dark:border-neutral-700 dark:text-white"),oa=C("cursor-pointer outline-none hover:bg-neutral-200 data-[highlighted]:bg-neutral-200 dark:hover:bg-neutral-700");function ia(){let{openAccountModal:e,accountModalOpen:t}=y(),{status:n,address:r}=ra();return b(L,{mode:"child",children:n==="connected"||n==="reconnecting"&&r?b("button",{type:"button",className:C(It,aa,oa,"p-3"),onClick:e,children:b("span",{className:"flex-grow inline-flex gap-2.5 items-center text-left font-medium",children:b(Mt,{address:r})})},"connected"):Ht("button",{type:"button",className:C(It,"group","items-center justify-center gap-2.5 p-3","bg-orange-500 text-white font-medium","hover:bg-orange-400","active:bg-orange-600"),"aria-busy":t,onClick:e,children:[Ht("span",{className:"pointer-events-none inline-grid place-items-center -ml-3",children:[b("span",{className:C("col-start-1 row-start-1 leading-none","scale-100 opacity-100 transition duration-300","group-aria-busy:scale-125 group-aria-busy:opacity-0"),children:b(v,{})}),b("span",{"aria-hidden":!0,className:C("col-start-1 row-start-1","scale-50 opacity-0 transition duration-300 delay-50","group-aria-busy:scale-100 group-aria-busy:opacity-100"),children:b(x,{})})]}),b("span",{className:"font-medium",children:"Sign in"})]},"sign in")})}import{useMemo as sa}from"react";import{useConnectorClient as ca}from"wagmi";function da(){let{chainId:e}=u(),{data:t,error:n}=ca({chainId:e});n&&console.error("Error retrieving user client",n);let r=M(t?.account.address),a=ne(t);return sa(()=>{if(a.every(c=>c.isComplete))return r.data},[r.data,a])}import{connectorsForWallets as pa,getDefaultWallets as ua}from"@rainbow-me/rainbowkit";import{createConfig as ma}from"wagmi";var la=`data:image/svg+xml;base64,${btoa('<svg xmlns="http://www.w3.org/2000/svg" shape-rendering="geometricPrecision" text-rendering="geometricPrecision" image-rendering="optimizeQuality" fill-rule="evenodd" clip-rule="evenodd" width="512" height="512" viewBox="-64 -32 608 512"><path d="M6.206 425.469A6.202 6.202 0 010 419.263c0-1.771.235-3.517.663-5.245 9.95-78.847 57.22-96.006 100.964-107.256 21.008-5.412 62.901-26.489 57.822-53.668-10.596-9.819-21.113-23.39-22.946-43.63l-1.274.026c-2.932-.044-5.778-.716-8.422-2.217-5.848-3.325-9.051-9.697-10.596-16.958-3.238-22.186-4.058-33.515 7.768-38.464l.096-.035c-1.467-27.37 3.159-67.64-24.944-76.141C154.622 7.1 218.597-30.203 266.627 30.805c53.519 2.801 77.389 78.611 44.154 121.046h-1.405c11.826 4.949 10.045 17.674 7.767 38.464-1.544 7.261-4.747 13.633-10.595 16.958-2.645 1.501-5.481 2.173-8.422 2.217l-1.275-.026c-1.833 20.24-12.376 33.811-22.972 43.63-4.459 23.871 27.275 43.011 49.33 50.997a139.442 139.442 0 004.268 5.525c-7.2 9.941-8.771 22.797-4.564 34.038-17.002 8.763-24.255 29.334-16.479 46.86-11.966 7.55-18.258 21.305-16.609 34.955H6.206zm419.058-105.362a86.778 86.778 0 0019.446-1.641c29.36-5.822 53.152-27.467 62.657-55.823 3.596-10.544 5.071-21.663 4.521-33.341-1.179-23.46-12.193-46.633-29.631-62.369-17.107-15.361-38.342-23.574-61.383-23.042-22.841.507-45.359 11.216-60.187 28.593-14.977 17.551-22.003 39.144-20.921 62.133.585 11.661 3.482 23.016 8.737 34.074 7.741 16.303 19.934 29.735 35.391 39.048l-22.457 20.711 13.232 27.86-29.413 13.973 13.991 29.456-26.769 12.717 16.81 35.374 35.601-16.915 40.375-110.808zm15.239-129.364c13.685 4.869 20.824 19.908 15.954 33.593-4.87 13.685-19.908 20.833-33.593 15.963-13.685-4.87-20.834-19.917-15.963-33.602 4.87-13.685 19.917-20.825 33.602-15.954z"/></svg>')}`,oe=e=>()=>({id:"passkey",name:"Passkey",iconUrl:la,iconBackground:"#fec",createConnector:t=>n=>({...A(e)(n),...t})});function fa(e){let{wallets:t}=ua(),n=[{groupName:"Recommended",wallets:[oe({chainId:e.chainId,bundlerTransport:e.bundlerTransport,paymasterAddress:e.paymasterAddress})]},...t],r=pa(n,{appName:e.appInfo.name,projectId:e.walletConnectProjectId});return ma({connectors:r,chains:e.chains,transports:e.transports})}function Al(e){return e!=null&&"__isCoinbaseSmartAccount"in e&&e.__isCoinbaseSmartAccount===!0}var Sl=new Set([17420,31337]);function Ml(e){return t=>{let{request:n,...r}=e(t),a=null,c=new Map;return{...r,async request(s){if(s.method==="eth_chainId")return a??(a=await n(s));if(s.method==="eth_getTransactionReceipt"){let o=s.params[0],l=c.get(o)??await n(s);return c.has(o)||c.set(o,l),l}if(s.method==="eth_sendUserOperation"){let o=await n({...s,method:"wiresaw_sendUserOperation"});return c.set(o.userOpHash,{userOpHash:o.userOpHash,receipt:{transactionHash:o.txHash}}),o.userOpHash}if(s.method==="eth_getUserOperationReceipt"){let o=s.params[0],l=c.get(o)??await n(s);return c.has(o)||c.set(o,l),l}return n(s)}}}}import{connectorsForWallets as ga}from"@rainbow-me/rainbowkit";import{getDefaultWallets as ya}from"@rainbow-me/rainbowkit";function Nt(e){let{wallets:t}=ya();return[{groupName:"Recommended",wallets:[oe({chainId:e.chainId,bundlerTransport:e.bundlerTransport,paymasterAddress:e.paymasterAddress})]},...t]}function Dl({wallets:e,...t}){return ga(e??Nt(t),{appName:t.appInfo?.name??document.title,projectId:t.walletConnectProjectId})}export{ia as AccountButton,Zr as EntryKitProvider,U as abi,fa as createWagmiConfig,Dl as getConnectors,Nt as getWallets,Al as isCoinbaseSmartAccount,A as passkeyConnector,oe as passkeyWallet,W as sign,G as toCoinbaseSmartAccount,le as toReplaySafeHash,xn as toWebAuthnSignature,y as useAccountModal,da as useAppAccountClient,u as useEntryKitConfig,Ml as wiresaw,Sl as wiresawChainIds,R as wrapSignature};
1436
+ URL: ${e}`)),r.src=e})})}import{jsx as X,jsxs as Jn}from"react/jsx-runtime";function je(){let{appName:e,appIcon:t}=$e(),{data:n,isLoading:r}=Y(t);return Jn("div",{className:"flex-grow flex flex-col items-center justify-center gap-2",children:[X("div",{className:"w-16 h-16 m-2",children:r?null:n?X("img",{src:t,className:"w-full h-full object-cover"}):X(v,{className:"w-full h-full text-orange-500 dark:bg-neutral-800"})}),X("div",{className:"text-2xl text-white text-center",children:e})]})}import{twMerge as tr}from"tailwind-merge";import{jsx as T,jsxs as Je}from"react/jsx-runtime";function Ze(){let e=Zn(),{accountModalOpen:t}=y(),{openConnectModal:n,connectModalOpen:r}=er(),a=Xe(),c=Qe({onError:i=>console.error(i),mutationKey:["createPasskey",a.id,t,r,e.status],mutationFn:()=>a.createPasskey()}),s=Qe({onError:i=>console.error(i),mutationKey:["reusePasskey",a.id,t,r,e.status],mutationFn:()=>a.reusePasskey()}),o=a.hasPasskey(),l=[T(g,{variant:o?"secondary":"primary",className:"self-auto flex justify-center",pending:c.status==="pending",onClick:()=>c.mutate(),autoFocus:!o,children:"Create account"},"create"),T(g,{variant:o?"primary":"secondary",className:"self-auto flex justify-center",pending:s.status==="pending",onClick:()=>s.mutate(),autoFocus:o,children:"Sign in"},"signin")];return o&&l.reverse(),Je("div",{className:tr("flex flex-col gap-6 p-6","animate-in animate-duration-300 fade-in slide-in-from-bottom-8"),children:[T("div",{className:"p-4",children:T(je,{})}),Je("div",{className:"self-center flex flex-col gap-2 w-60",children:[l,T("button",{className:"text-sm self-center transition text-neutral-500 hover:text-white p-2",disabled:e.status==="connecting",onClick:n,children:"Already have a wallet?"})]})]})}import{useState as Lr}from"react";import{useMemo as Kr}from"react";import{parseEther as nr}from"viem";var $=nr("0.01");import{useReadContract as rr}from"wagmi";import ar from"@latticexyz/store/out/IStoreRead.sol/IStoreRead.abi.json";import{decodeValueArgs as or,getKeyTuple as ir,getSchemaTypes as sr,getValueSchema as cr}from"@latticexyz/protocol-parser/internal";function P({table:e,key:t,...n}){return rr(e&&t&&n.query?.enabled!==!1?{...n,abi:ar,functionName:"getRecord",args:[e.tableId,ir(e,t)],query:{...n.query,select:r=>({...t,...or(sr(cr(e)),{staticData:r[0],encodedLengths:r[1],dynamicData:r[2]})})}}:{})}import{defineStore as dr}from"@latticexyz/store";import{parseAbi as lr}from"viem";var ye=lr(["error SpenderSystem_AlreadyRegistered(address spender, address user)","error SpenderSystem_HasOwnBalance(address spender)","function registerSpender(address spender)"]),pr=dr({namespaces:{root:{namespace:"",tables:{Allowance:{schema:{user:"address",allowance:"uint256"},key:["user"]},Grantor:{schema:{grantor:"address",allowance:"uint256"},key:["grantor"]},PassHolder:{schema:{user:"address",passId:"bytes32",lastRenewed:"uint256",lastClaimed:"uint256"},key:["user","passId"]},PassConfig:{schema:{passId:"bytes32",claimAmount:"uint256",claimInterval:"uint256",validityPeriod:"uint256",grantor:"address"},key:["passId"]},Spender:{schema:{spender:"address",user:"address"},key:["spender"]},SystemConfig:{schema:{entryPoint:"address"},key:[]}}}}}),j=pr.namespaces.root.tables;function Q(e){let{chainId:t,paymasterAddress:n}=u();return P({chainId:t,address:n,...e?{table:j.Allowance,key:{user:e}}:null})}import{useClient as xr}from"wagmi";import{useQuery as vr}from"@tanstack/react-query";import{createStore as ur}from"zustand/vanilla";import{persist as mr}from"zustand/middleware";var z=ur(mr(()=>({appSigners:{}}),{name:"mud:entrykit",partialize:({appSigners:e})=>({appSigners:e})}));function fr(e){e.key===z.persist.getOptions().name&&z.persist.rehydrate()}window.addEventListener("storage",fr);import{generatePrivateKey as yr,privateKeyToAccount as gr}from"viem/accounts";function et(e){let t=z.getState().appSigners[e]??(()=>{let n=yr();return z.setState(r=>({appSigners:{...r.appSigners,[e]:n}})),n})();return gr(t)}import{smartAccountActions as hr}from"permissionless";import{callFrom as wr}from"@latticexyz/world/internal";import{observer as br}from"@latticexyz/explorer/observer";async function tt({worldAddress:e,userAddress:t,client:n,bundlerTransport:r,paymasterAddress:a,explorerUrl:c}){let s=et(t),o=await G({client:n,owners:[s]});return q({paymasterAddress:a,transport:r,client:n,account:o}).extend(hr()).extend(wr({worldAddress:e,delegatorAddress:t,publicClient:n})).extend(i=>c?br({explorerUrl:c})(i):{}).extend(()=>({userAddress:t}))}function S(e){let{chainId:t,bundlerTransport:n,paymasterAddress:r,worldAddress:a,explorerUrl:c}=u(),s=xr({chainId:t}),o=["appAccountClient",s?.uid,e];return vr(s&&e?{queryKey:o,queryFn:async()=>await tt({worldAddress:a,userAddress:e,client:s,bundlerTransport:n,paymasterAddress:r,explorerUrl:c}),staleTime:1/0}:{queryKey:o,enabled:!1})}function nt(e){let{chainId:t,paymasterAddress:n}=u();return P({chainId:t,address:n,...e?{table:j.Spender,key:{spender:e}}:null})}function rt(e,t){let{chainId:n,worldAddress:r}=u();return P({chainId:n,address:r,...e&&t?{table:qe.UserDelegationControl,key:{delegator:e,delegatee:t}}:null})}import{useDisconnect as Ar}from"wagmi";import{useQuery as Cr}from"@tanstack/react-query";function J(e){let t=e?.toLowerCase();return Cr({enabled:!!t,queryKey:["ens",t],initialData:{address:void 0,name:void 0,displayName:void 0,avatar:void 0},queryFn:async()=>{let n=await fetch(`https://api.ensideas.com/ens/resolve/${t}`).then(r=>r.json());return{address:n.address??void 0,name:n.name??void 0,displayName:n.displayName??void 0,avatar:n.avatar??void 0}}})}import{jsx as ge,jsxs as kr}from"react/jsx-runtime";function Z({hex:e}){return e.length<=10?ge("span",{title:e,children:e}):kr("span",{title:e,children:[ge("span",{className:"after:select-none after:content-['\u2026']",children:e.slice(0,6)}),ge("span",{className:"tracking-[-1ch] text-transparent",children:e.slice(6,-4)}),e.slice(-4)]})}import{jsx as D,jsxs as he}from"react/jsx-runtime";function at({isActive:e,isExpanded:t,userAddress:n}){let{data:r}=J(n),{disconnect:a,isPending:c}=Ar(),{closeAccountModal:s}=y();return he("div",{className:"flex flex-col gap-4",children:[he("div",{className:"flex justify-between gap-4",children:[he("div",{children:[D("div",{children:"Account"}),D("div",{className:"font-mono text-white",children:r.name??D(Z,{hex:n})})]}),D(g,{variant:e?"primary":"secondary",className:"flex-shrink-0 text-sm p-1 w-28",pending:c,onClick:()=>{s(),a()},children:"Sign out"})]}),t?D("p",{className:"text-sm",children:"Each of your onchain actions in this app is associated with your account."}):null]})}import{useMutation as Pr,useQueryClient as Sr}from"@tanstack/react-query";function ot(){let e=Sr(),{passIssuerTransport:t}=u();return Pr({onError:n=>console.error(n),mutationKey:["claimGasPass"],mutationFn:async n=>{let r=t({retryCount:0});await r.request({method:"quarry_issuePass",params:["0x01",n]}),await r.request({method:"quarry_claimAllowance",params:["0x01",n]}),await e.invalidateQueries({queryKey:["readContract"]})}})}import{twMerge as Mr}from"tailwind-merge";import{jsx as ee,jsxs as Ir}from"react/jsx-runtime";function it({className:e,...t}){return Ir("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 263 428",fill:"currentColor",className:Mr("w-[0.6em] h-[1em]",e),...t,children:[ee("path",{d:"M132 321V428L263 243L132 321Z"}),ee("path",{d:"M0 243L132 321V428",fillOpacity:"0.5"}),ee("path",{d:"M132 0V296L263 218"}),ee("path",{d:"M0 218L132 296V0L0 218Z",fillOpacity:"0.5"})]})}import{formatEther as Hr}from"viem";function st(e){let t=Hr(e),n=Math.floor(parseFloat(t)).toString().length;return parseFloat(t).toLocaleString("en-US",{maximumFractionDigits:Math.max(0,6-n)})}import{jsx as Nr,jsxs as Er}from"react/jsx-runtime";function ct({wei:e}){return Er("span",{className:"inline-flex items-center gap-1",children:[st(e)," ",Nr(it,{})]})}import{useEffect as Rr}from"react";import{jsx as M,jsxs as we}from"react/jsx-runtime";function dt({isActive:e,isExpanded:t,userAddress:n}){let r=Q(n),a=ot();return Rr(()=>{e&&a.status==="idle"&&r.data&&r.data.allowance<$&&a.mutate(n)},[r.data,a,e,n]),we("div",{className:"flex flex-col gap-4",children:[we("div",{className:"flex justify-between gap-4",children:[we("div",{children:[M("div",{children:"Allowance"}),M("div",{className:"font-mono text-white",children:r.data?M(ct,{wei:r.data.allowance}):M(x,{})})]}),M(g,{variant:e?"primary":"secondary",className:"flex-shrink-0 text-sm p-1 w-28",pending:a.status==="pending",onClick:()=>a.mutate(n),children:"Top up"})]}),t?M("p",{className:"text-sm",children:"Your allowance is used to pay for onchain computation."}):null]})}import{useMutation as Or,useQueryClient as Tr}from"@tanstack/react-query";import{getAction as te}from"viem/utils";import{sendUserOperation as zr,waitForUserOperationReceipt as Dr}from"viem/account-abstraction";import{writeContract as lt}from"viem/actions";function pt(){let{worldAddress:e,paymasterAddress:t}=u(),n=Tr();return Or({onError:r=>console.error(r),mutationKey:["setupAppAccount"],mutationFn:async({userClient:r,appAccountAddress:a,registerSpender:c,registerDelegation:s})=>{r.account.type!=="smart"&&(await te(r,lt,"writeContract")({chain:r.chain,account:r.account,address:t,abi:ye,functionName:"registerSpender",args:[a]}),await te(r,lt,"writeContract")({chain:r.chain,account:r.account,address:e,abi:me,functionName:"registerDelegation",args:[a,O,"0x"]}));let o=[];if(c&&(console.log("registering spender"),o.push({to:t,abi:ye,functionName:"registerSpender",args:[a]})),s&&(console.log("registering delegation"),o.push({to:e,abi:me,functionName:"registerDelegation",args:[a,O,"0x"]})),!o.length)return;console.log("setting up account with",o);let l=await te(r,zr,"sendUserOperation")({calls:o});console.log("got user op hash",l);let i=await te(r,Dr,"waitForUserOperationReceipt")({hash:l});console.log("got user op receipt",i),await n.invalidateQueries({queryKey:["readContract"]})}})}import{jsx as K,jsxs as be}from"react/jsx-runtime";function ut({isActive:e,isExpanded:t,userClient:n,registerSpender:r,registerDelegation:a}){let{closeAccountModal:c}=y(),s=S(n.account.address),o=pt(),l=!a&&!a;return be("div",{className:"flex flex-col gap-4",children:[be("div",{className:"flex justify-between gap-4",children:[be("div",{children:[K("div",{children:"Session"}),K("div",{className:"font-mono text-white",children:l?"Enabled":"Set up"})]}),l?K(g,{variant:e?"primary":"secondary",className:"flex-shrink-0 text-sm p-1 w-28",disabled:!0,children:"Disable"}):K(g,{variant:e?"primary":"secondary",className:"flex-shrink-0 text-sm p-1 w-28",pending:!s.data||o.status==="pending",onClick:s.data?async()=>{await o.mutateAsync({userClient:n,appAccountAddress:s.data.account.address,registerSpender:r,registerDelegation:a}),c()}:void 0,children:"Enable"})]}),t?K("p",{className:"text-sm",children:"You can perform actions in this app without interruptions for approvals."}):null]})}import{jsx as xe}from"react/jsx-runtime";function ne(e){let t=e?.account.address,n=Q(t),r=S(t),a=nt(r.data?.account.address),c=t&&a.data?a.data.user.toLowerCase()===t.toLowerCase():!1,s=rt(e?.account.address,r.data?.account.address),o=s.data?s.data?.delegationControlId===O:!1;return Kr(()=>t?[{id:"wallet",label:"Sign in",isComplete:!0,content:l=>xe(at,{...l,userAddress:t})},{id:"allowance",label:"Top up",isComplete:(n.data?.allowance??0n)>=$,content:l=>xe(dt,{...l,userAddress:t})},{id:"session",label:"Set up account",isComplete:c&&o,content:l=>xe(ut,{...l,userClient:e,registerSpender:!c,registerDelegation:!o})}]:[{id:"wallet",label:"Sign in",isComplete:!1,content:()=>null}],[n.data?.allowance,o,c,t,e])}import{twMerge as ve}from"tailwind-merge";import{jsx as Ce}from"react/jsx-runtime";function mt({userClient:e}){let t=ne(e),[n]=Lr(null),r=t.find(o=>o.content!=null&&!o.isComplete),a=t.filter(o=>o.isComplete),c=(n!=null?t.find(o=>o.id===n):null)??r??(a.length<t.length?a.at(-1):null),s=c?t.indexOf(c):-1;return Ce("div",{className:ve("min-h-[26rem] px-8 flex flex-col divide-y divide-neutral-800","animate-in animate-duration-300 fade-in slide-in-from-bottom-8"),children:t.map((o,l)=>{let i=o===c,d=i||a.length===t.length,p=!o.isComplete&&s!==-1&&l>s;return Ce("div",{className:ve("py-8 flex flex-col justify-center",i?"flex-grow":null),children:Ce("div",{className:ve("flex flex-col",p?"opacity-30 pointer-events-none":null),children:o.content({isActive:i,isExpanded:d})})},o.id)})})}import{jsx as ft}from"react/jsx-runtime";function yt(){let{chainId:e}=u(),t=Br({chainId:e});return t.status!=="success"?ft(Ze,{}):ft(mt,{userClient:t.data})}import{useState as Vr}from"react";import{ErrorBoundary as _r}from"react-error-boundary";import{twMerge as Fr}from"tailwind-merge";import{BaseError as Wr,UserRejectedRequestError as Ur}from"viem";import{jsx as gt,jsxs as Gr}from"react/jsx-runtime";function ht({title:e,error:t}){if(!t||t instanceof Wr&&t.walk(a=>a instanceof Ur)!=null)return null;let n=e??"Error",r=typeof t=="string"?t:t instanceof Error?String(t):"Something unexpected happened.";return Gr("div",{className:Fr("text-sm border-l-4 border-red-500","bg-red-100 text-red-900","dark:bg-red-900 dark:text-red-50"),children:[gt("div",{className:"p-3 font-semibold",children:n}),gt("div",{className:"px-3 whitespace-break-spaces break-all max-h-32 overflow-y-scroll",children:r})]})}import{wait as qr}from"@latticexyz/common/utils";import{twMerge as Yr}from"tailwind-merge";import{useIsMounted as Xr}from"usehooks-ts";import{jsx as re,jsxs as wt}from"react/jsx-runtime";function bt({children:e}){let t=Xr(),[n,r]=Vr(1);return re(_r,{fallbackRender:({error:a,resetErrorBoundary:c})=>wt("div",{className:Yr("flex-grow flex flex-col justify-center p-5 gap-2"),children:[re(ht,{error:a instanceof Error?a.stack??a.message:a}),n>0?wt("button",{type:"button",onClick:async s=>{s.currentTarget.ariaBusy="true",await qr(1e3),c(),t()&&(r(o=>o-1),s.currentTarget.ariaBusy=null)},className:"group aria-busy:pointer-events-none self-end flex items-center gap-1",children:[re(x,{className:"transition opacity-0 group-aria-busy:opacity-100 text-xs text-neutral-500 dark:text-neutral-400"}),re("span",{className:"text-sm text-neutral-500 dark:text-neutral-400 group-hover:text-black dark:group-hover:text-white",children:"Retry?"})]}):null]}),children:e})}import{DialogClose as Qr,DialogTitle as Jr}from"@radix-ui/react-dialog";import{twMerge as $r}from"tailwind-merge";import{jsx as jr}from"react/jsx-runtime";function xt({className:e,children:t,...n}){return jr("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",className:$r("-my-[0.125em] h-[1.25em] w-[1.25em]",e),...n,children:t})}import{jsx as vt}from"react/jsx-runtime";function Ct(e){return vt(xt,{strokeWidth:"2",stroke:"currentColor",...e,children:vt("path",{d:"M6 18L18 6M6 6L18 18",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})}import{jsx as w,jsxs as ke}from"react/jsx-runtime";function At(){let{accountModalOpen:e,toggleAccountModal:t}=y();return ke(De,{open:e,onOpenChange:t,children:[w(Jr,{className:"sr-only",children:"Connect with EntryKit"}),e?ke("div",{className:kt("relative py-2 ring-1","bg-neutral-900 text-neutral-400 ring-neutral-700/50 divide-neutral-700","links:font-medium links:underline links:underline-offset-4","links:text-white","links:decoration-neutral-500 hover:links:decoration-orange-500"),children:[w(bt,{children:w(yt,{})}),ke("a",{href:"https://mud.dev",target:"_blank",rel:"noreferrer noopener",className:"group self-center p-3 flex items-center justify-center gap-2 links-unset text-sm font-mono transition text-neutral-400 hover:text-white",children:[w("span",{className:"block w-4 h-4",children:w(v,{className:"w-full h-full text-orange-500 group-hover:rotate-90 transition duration-300"})}),w("span",{children:"Powered by MUD"})]}),w("div",{className:"absolute top-0 right-0",children:w(Qr,{className:kt("pointer-events-auto leading-none p-2 transition","text-neutral-700 hover:text-neutral-500"),title:"Close",children:w(Ct,{className:"m-0"})})})]}):null]})}import{jsx as ea,jsxs as ta}from"react/jsx-runtime";function Zr({config:e,children:t}){return ta(Ee,{config:e,children:[t,ea(At,{})]})}import{useAccount as ra}from"wagmi";import{twMerge as C}from"tailwind-merge";import{twMerge as Pt}from"tailwind-merge";import{Fragment as na,jsx as ae,jsxs as St}from"react/jsx-runtime";function Mt({address:e}){let{data:t}=J(e),{isSuccess:n}=Y(t.avatar);return St(na,{children:[St("span",{className:"flex-shrink-0 w-6 h-6 -my-1 -mx-0.5 grid place-items-center",children:[ae("img",{src:n?t.avatar:void 0,className:Pt("col-start-1 row-start-1","inline-flex w-full h-full rounded-full bg-black/10 dark:bg-white/10 bg-cover bg-no-repeat bg-center",n?"opacity-100":"opacity-0")}),ae(v,{className:Pt("col-start-1 row-start-1 text-orange-500","transition duration-300",n?"opacity-0":"opacity-100")})]}),ae("span",{className:"flex-grow",children:t.name??(e?ae(Z,{hex:e}):null)})]})}import{jsx as b,jsxs as Ht}from"react/jsx-runtime";var It=C("w-48 inline-flex outline-none transition","border border-transparent","text-base leading-none"),aa=C("bg-neutral-100 border-neutral-300 text-black","dark:bg-neutral-800 dark:border-neutral-700 dark:text-white"),oa=C("cursor-pointer outline-none hover:bg-neutral-200 data-[highlighted]:bg-neutral-200 dark:hover:bg-neutral-700");function ia(){let{openAccountModal:e,accountModalOpen:t}=y(),{status:n,address:r}=ra();return b(L,{mode:"child",children:n==="connected"||n==="reconnecting"&&r?b("button",{type:"button",className:C(It,aa,oa,"p-3"),onClick:e,children:b("span",{className:"flex-grow inline-flex gap-2.5 items-center text-left font-medium",children:b(Mt,{address:r})})},"connected"):Ht("button",{type:"button",className:C(It,"group","items-center justify-center gap-2.5 p-3","bg-orange-500 text-white font-medium","hover:bg-orange-400","active:bg-orange-600"),"aria-busy":t,onClick:e,children:[Ht("span",{className:"pointer-events-none inline-grid place-items-center -ml-3",children:[b("span",{className:C("col-start-1 row-start-1 leading-none","scale-100 opacity-100 transition duration-300","group-aria-busy:scale-125 group-aria-busy:opacity-0"),children:b(v,{})}),b("span",{"aria-hidden":!0,className:C("col-start-1 row-start-1","scale-50 opacity-0 transition duration-300 delay-50","group-aria-busy:scale-100 group-aria-busy:opacity-100"),children:b(x,{})})]}),b("span",{className:"font-medium",children:"Sign in"})]},"sign in")})}import{useMemo as sa}from"react";import{useConnectorClient as ca}from"wagmi";function da(){let{chainId:e}=u(),{data:t,error:n}=ca({chainId:e});n&&console.error("Error retrieving user client",n);let r=S(t?.account.address),a=ne(t);return sa(()=>{if(a.every(c=>c.isComplete))return r.data},[r.data,a])}import{connectorsForWallets as pa,getDefaultWallets as ua}from"@rainbow-me/rainbowkit";import{createConfig as ma}from"wagmi";var la=`data:image/svg+xml;base64,${btoa('<svg xmlns="http://www.w3.org/2000/svg" shape-rendering="geometricPrecision" text-rendering="geometricPrecision" image-rendering="optimizeQuality" fill-rule="evenodd" clip-rule="evenodd" width="512" height="512" viewBox="-64 -32 608 512"><path d="M6.206 425.469A6.202 6.202 0 010 419.263c0-1.771.235-3.517.663-5.245 9.95-78.847 57.22-96.006 100.964-107.256 21.008-5.412 62.901-26.489 57.822-53.668-10.596-9.819-21.113-23.39-22.946-43.63l-1.274.026c-2.932-.044-5.778-.716-8.422-2.217-5.848-3.325-9.051-9.697-10.596-16.958-3.238-22.186-4.058-33.515 7.768-38.464l.096-.035c-1.467-27.37 3.159-67.64-24.944-76.141C154.622 7.1 218.597-30.203 266.627 30.805c53.519 2.801 77.389 78.611 44.154 121.046h-1.405c11.826 4.949 10.045 17.674 7.767 38.464-1.544 7.261-4.747 13.633-10.595 16.958-2.645 1.501-5.481 2.173-8.422 2.217l-1.275-.026c-1.833 20.24-12.376 33.811-22.972 43.63-4.459 23.871 27.275 43.011 49.33 50.997a139.442 139.442 0 004.268 5.525c-7.2 9.941-8.771 22.797-4.564 34.038-17.002 8.763-24.255 29.334-16.479 46.86-11.966 7.55-18.258 21.305-16.609 34.955H6.206zm419.058-105.362a86.778 86.778 0 0019.446-1.641c29.36-5.822 53.152-27.467 62.657-55.823 3.596-10.544 5.071-21.663 4.521-33.341-1.179-23.46-12.193-46.633-29.631-62.369-17.107-15.361-38.342-23.574-61.383-23.042-22.841.507-45.359 11.216-60.187 28.593-14.977 17.551-22.003 39.144-20.921 62.133.585 11.661 3.482 23.016 8.737 34.074 7.741 16.303 19.934 29.735 35.391 39.048l-22.457 20.711 13.232 27.86-29.413 13.973 13.991 29.456-26.769 12.717 16.81 35.374 35.601-16.915 40.375-110.808zm15.239-129.364c13.685 4.869 20.824 19.908 15.954 33.593-4.87 13.685-19.908 20.833-33.593 15.963-13.685-4.87-20.834-19.917-15.963-33.602 4.87-13.685 19.917-20.825 33.602-15.954z"/></svg>')}`,oe=e=>()=>({id:"passkey",name:"Passkey",iconUrl:la,iconBackground:"#fec",createConnector:t=>n=>({...A(e)(n),...t})});function fa(e){let{wallets:t}=ua(),n=[{groupName:"Recommended",wallets:[oe({chainId:e.chainId,bundlerTransport:e.bundlerTransport,paymasterAddress:e.paymasterAddress})]},...t],r=pa(n,{appName:e.appInfo.name,projectId:e.walletConnectProjectId});return ma({connectors:r,chains:e.chains,transports:e.transports})}function Al(e){return e!=null&&"__isCoinbaseSmartAccount"in e&&e.__isCoinbaseSmartAccount===!0}var Sl=new Set([17420,31337]);function Ml(e){return t=>{let{request:n,...r}=e(t),a=null,c=new Map;return{...r,async request(s){if(s.method==="eth_chainId")return a??(a=await n(s));if(s.method==="eth_getTransactionReceipt"){let o=s.params[0],l=c.get(o)??await n(s);return c.has(o)||c.set(o,l),l}if(s.method==="eth_sendUserOperation"){let o=await n({...s,method:"wiresaw_sendUserOperation"});return c.set(o.userOpHash,{userOpHash:o.userOpHash,receipt:{transactionHash:o.txHash}}),o.userOpHash}if(s.method==="eth_getUserOperationReceipt"){let o=s.params[0],l=c.get(o)??await n(s);return c.has(o)||c.set(o,l),l}return n(s)}}}}import{connectorsForWallets as ga}from"@rainbow-me/rainbowkit";import{getDefaultWallets as ya}from"@rainbow-me/rainbowkit";function Nt(e){let{wallets:t}=ya();return[{groupName:"Recommended",wallets:[oe({chainId:e.chainId,bundlerTransport:e.bundlerTransport,paymasterAddress:e.paymasterAddress})]},...t]}function Dl({wallets:e,...t}){return ga(e??Nt(t),{appName:t.appInfo?.name??document.title,projectId:t.walletConnectProjectId})}export{ia as AccountButton,Zr as EntryKitProvider,U as abi,fa as createWagmiConfig,Dl as getConnectors,Nt as getWallets,Al as isCoinbaseSmartAccount,A as passkeyConnector,oe as passkeyWallet,W as sign,G as toCoinbaseSmartAccount,le as toReplaySafeHash,xn as toWebAuthnSignature,y as useAccountModal,da as useAppAccountClient,u as useEntryKitConfig,Ml as wiresaw,Sl as wiresawChainIds,E as wrapSignature};
1437
1437
  //# sourceMappingURL=internal.js.map