@latticexyz/entrykit 2.2.12-entrykit-8af96e16f9faceae4ab53d09a2c9cdaf89f7403b → 2.2.12-entrykit-bc150f8e6c877fc2c6381f761b6c629c10f52965

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.
@@ -1,4 +1,4 @@
1
- import{Root as Xt,DialogPortal as $t,DialogContent as Qt}from"@radix-ui/react-dialog";import{forwardRef as Ft,useEffect as Ut,useRef as Ee,useState as He}from"react";import Gt from"react-dom";var ve=`*, ::before, ::after {
1
+ import{Root as $t,DialogPortal as Qt,DialogContent as jt}from"@radix-ui/react-dialog";import{forwardRef as Gt,useEffect as Ut,useRef as Oe,useState as Te}from"react";import Vt from"react-dom";var Ae=`*, ::before, ::after {
2
2
  --tw-border-spacing-x: 0;
3
3
  --tw-border-spacing-y: 0;
4
4
  --tw-translate-x: 0;
@@ -1564,7 +1564,7 @@ video {
1564
1564
  .dark\\:links\\:decoration-neutral-500 a[href]:not(.links-unset):where([data-theme="dark"], [data-theme="dark"] *) {
1565
1565
  text-decoration-color: #737373;
1566
1566
  }
1567
- `;import{useResizeObserver as Vt}from"usehooks-ts";import{mergeRefs as _t}from"react-merge-refs";import{createContext as zt,useContext as Dt}from"react";import{jsx as Kt}from"react/jsx-runtime";var ke=zt(null);function Ce({frame:e,children:t}){if(Dt(ke))throw new Error("`FrameProvider` can only be used once.");return Kt(ke.Provider,{value:{frame:e},children:t})}import{useMediaQuery as Wt}from"usehooks-ts";import"@rainbow-me/rainbowkit/styles.css";import{createContext as Lt,useContext as Me}from"react";import{RainbowKitProvider as Bt,lightTheme as Ae,midnightTheme as Se}from"@rainbow-me/rainbowkit";import{jsx as Pe}from"react/jsx-runtime";var ue=Lt(null);function Ne({config:e,children:t}){if(Me(ue))throw new Error("`EntryKitProvider` can only be used once.");return Pe(Bt,{initialChain:e.chainId,appInfo:{appName:e.appInfo?.name},theme:e.theme==="light"?Ae({borderRadius:"none"}):e.theme==="dark"?Se({borderRadius:"none"}):{lightMode:Ae({borderRadius:"none"}),darkMode:Se({borderRadius:"none"})},children:Pe(ue.Provider,{value:e,children:t})})}function p(){let e=Me(ue);if(!e)throw new Error("`useEntryKitConfig` can only be used within a `EntryKitProvider`.");return e}function Ie(){let{theme:e}=p(),t=Wt("(prefers-color-scheme: dark)");return e??(t?"dark":"light")}import{jsx as O,jsxs as Yt}from"react/jsx-runtime";function qt({onSize:e,...t}){let r=Ee(null);return Vt({ref:r,onResize:e}),O("div",{ref:r,...t,style:{...t.style,display:"inline-block"}})}var U=Ft(function({mode:t,children:r},a){let n=Ee(null),[i,o]=He(!1),d=i?n.current:null,[l,c]=He({width:void 0,height:void 0}),s=d?.contentDocument,u=Ie();Ut(()=>{s&&s.body.setAttribute("data-theme",u)},[s,u]);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 O("iframe",{ref:_t([a,n]),style:f,onLoad:()=>o(!0),srcDoc:"<!doctype html><title>\u2026</title>",children:s?Gt.createPortal(Yt(Ce,{frame:d,children:[O("div",{children:t==="modal"?r:O(qt,{onSize:c,children:r})}),O("style",{dangerouslySetInnerHTML:{__html:ve}})]}),s.body):null})});import{twMerge as Re}from"tailwind-merge";import{jsx as z,jsxs as jt}from"react/jsx-runtime";function Te({open:e,onOpenChange:t,children:r}){return z(Xt,{open:e,onOpenChange:t,children:z($t,{children:jt(U,{mode:"modal",children:[z("div",{className:Re("fixed inset-0","bg-neutral-700/50 dark:bg-neutral-900/75","animate-in animate-duration-500 fade-in")}),z("div",{className:Re("fixed inset-0","grid place-items-end sm:place-items-center overflow-y-auto","animate-in animate-duration-200 fade-in slide-in-from-bottom-4"),children:z(Qt,{className:"outline-none w-full sm:max-w-screen-sm","aria-describedby":void 0,children:r})})]})})})}import{useCallback as me,useMemo as Jt}from"react";import{useStore as Zt}from"zustand";import{createStore as er}from"zustand/vanilla";var G=er(()=>({open:!1}));function y(){let e=Zt(G,n=>n.open),t=me(()=>{G.setState({open:!0})},[]),r=me(()=>{G.setState({open:!1})},[]),a=me(n=>{G.setState({open:n})},[]);return Jt(()=>({accountModalOpen:e,openAccountModal:t,closeAccountModal:r,toggleAccountModal:a}),[e,t,r,a])}import{twMerge as Ct}from"tailwind-merge";import{useConnectorClient as Qa}from"wagmi";import{useAccount as Jr}from"wagmi";import{twMerge as V}from"tailwind-merge";import{twMerge as tr}from"tailwind-merge";import{jsx as Oe,jsxs as rr}from"react/jsx-runtime";function b({className:e,...t}){return rr("svg",{className:tr("-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:[Oe("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),Oe("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 D,jsxs as nr}from"react/jsx-runtime";var ar=({variant:e="primary",pending:t=!1}={})=>V("group self-center leading-none outline-none border border-transparent ring-2 ring-transparent focus:ring-orange-500 focus:border-transparent transition","aria-disabled:pointer-events-none aria-busy:pointer-events-none","p-[1em] font-semibold",{primary:V("bg-neutral-900 text-white hover:bg-neutral-700 active:bg-neutral-600 aria-disabled:bg-neutral-200 aria-disabled:text-neutral-400","dark:bg-neutral-100 dark:text-black dark:hover:bg-neutral-200 dark:active:bg-neutral-300 dark:aria-disabled:bg-neutral-400 dark:aria-disabled:text-neutral-600",t&&"dark:bg-neutral-700 dark:text-neutral-400"),secondary:V("text-black border-neutral-400 hover:bg-neutral-200 hover:border-neutral-500 active:bg-neutral-300 active:border-neutral-600 aria-disabled:text-neutral-400 aria-disabled:border-neutral-300","dark:text-white dark:border-neutral-400 dark:hover:bg-neutral-700 dark:hover:border-neutral-300 dark:active:bg-neutral-600 dark:active:border-neutral-200 dark:aria-disabled:text-neutral-500 dark:aria-disabled:border-neutral-600")}[e]),k=({pending:e,variant:t,type:r,className:a,children:n,disabled:i,...o})=>D("button",{type:r||"button",className:V(ar({variant:t,pending:e}),a),"aria-busy":e,"aria-disabled":i,disabled:i||e,...o,children:nr("span",{className:"grid grid-cols-[1fr_auto_1fr] gap-2",children:[D("span",{className:"flex items-center justify-end text-[.75em]",children:D("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:D(b,{})})}),D("span",{children:n})]})});import{useConnectModal as Zr}from"@rainbow-me/rainbowkit";import{useMutation as ea}from"@tanstack/react-query";import{useConnectors as Xr}from"wagmi";import{createClient as Wr,custom as Fr,getAddress as Ur,numberToHex as _e,SwitchChainError as Gr}from"viem";import{ChainNotConfiguredError as Vr,createConnector as _r}from"wagmi";import{createStore as or}from"zustand/vanilla";import{persist as ir}from"zustand/middleware";var m=or(ir(()=>({publicKeys:{},addresses:{},activeCredential:null}),{name:"mud:passkey:cache"}));function sr(e){e.key===m.persist.getOptions().name&&m.persist.rehydrate()}window.addEventListener("storage",sr);import{smartAccountActions as qr}from"permissionless/clients";import{toWebAuthnAccount as kr}from"viem/account-abstraction";import{BaseError as cr}from"abitype";import{pad as dr,encodeFunctionData as fe,hashMessage as lr,hashTypedData as De,encodeAbiParameters as Ke,stringToHex as pr,size as ur,encodePacked as mr,parseSignature as fr}from"viem";import{entryPoint07Abi as gr,entryPoint07Address as yr,getUserOperationHash as hr,toSmartAccount as br}from"viem/account-abstraction";import{readContract as ze}from"viem/actions";import{parseSignature as wr}from"webauthn-p256";async function Y(e){let{client:t,owners:r,nonce:a=0n}=e,n=e.address,i={abi:gr,address:yr,version:"0.7"},o={abi:vr,address:"0x356336adA1619BeC1Ae4E6D94Dd9c0490DA414a8"};if(!r.length)throw new Error("`owners` must have at least one account.");function d(s){return s.type==="webAuthn"?s.publicKey:dr(s.address)}let l=e.signer??r[0],c=r.indexOf(l);if(c===-1)throw new Error("`signer` must be one of `owners`.");return br({client:t,entryPoint:i,extend:{__isCoinbaseSmartAccount:!0,abi:q,factory:o,signer:l},async encodeCalls(s){return s.length===1?fe({abi:q,functionName:"execute",args:[s[0].to,s[0].value??0n,s[0].data??"0x"]}):fe({abi:q,functionName:"executeBatch",args:[s.map(u=>({data:u.data??"0x",target:u.to,value:u.value??0n}))]})},async getAddress(){return n??=await ze(t,{...o,functionName:"getAddress",args:[r.map(d),a]}),n},async getFactoryArgs(){let s=fe({abi:o.abi,functionName:"createAccount",args:[r.map(d),a]});return{factory:o.address,factoryData:s}},async getStubSignature(){return l.type==="webAuthn"?"0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000000001949fc7c88032b9fcb5f6efc7a7b8c63668eae9871b765e23123bb473ff57aa831a7c0d9276168ebcc29f2875a0239cffdf2a9cd1c2007c5c77c071db9264df1d000000000000000000000000000000000000000000000000000000000000002549960de5880e8c687434170f6476605b8fe4aeb9a28632c7995cf3ba831d97630500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008a7b2274797065223a22776562617574686e2e676574222c226368616c6c656e6765223a2273496a396e6164474850596759334b7156384f7a4a666c726275504b474f716d59576f4d57516869467773222c226f726967696e223a2268747470733a2f2f7369676e2e636f696e626173652e636f6d222c2263726f73734f726967696e223a66616c73657d00000000000000000000000000000000000000000000":K({signature:"0xfffffffffffffffffffffffffffffff0000000000000000000000000000000007aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1c",ownerIndex:c})},async sign(s){let u=await this.getAddress(),f=ge({address:u,chainId:t.chain.id,hash:s.hash}),v=await _({hash:f,owner:l});return K({signature:v,ownerIndex:c})},async signMessage(s){let{message:u}=s,f=await this.getAddress(),v=ge({address:f,chainId:t.chain.id,hash:lr(u)}),T=await _({hash:v,owner:l});return K({signature:T,ownerIndex:c})},async signTypedData(s){let{domain:u,types:f,primaryType:v,message:T}=s,pe=await this.getAddress(),Rt=ge({address:pe,chainId:t.chain.id,hash:De({domain:u,message:T,primaryType:v,types:f})}),Tt=await _({hash:Rt,owner:l});return K({signature:Tt,ownerIndex:c})},async signUserOperation(s){let{chainId:u=t.chain.id,...f}=s,v=await this.getAddress(),T=hr({chainId:u,entryPointAddress:i.address,entryPointVersion:i.version,userOperation:{...f,sender:v}}),pe=await _({hash:T,owner:l});return K({signature:pe,ownerIndex:c})},userOperation:{async estimateGas(s){if(l.type==="webAuthn")return{verificationGasLimit:BigInt(Math.max(Number(s.verificationGasLimit??0n),8e5))}}},async isOwner(s){return await ze(t,{abi:q,address:await this.getAddress(),functionName:"isOwnerBytes",args:[d(s)]})}})}async function _({hash:e,owner:t}){if(t.type==="webAuthn"){let{signature:r,webauthn:a}=await t.sign({hash:e});return xr({signature:r,webauthn:a})}if(t.sign)return t.sign({hash:e});throw new cr("`owner` does not support raw sign.")}function ge({address:e,chainId:t,hash:r}){return De({domain:{chainId:t,name:"Coinbase Smart Wallet",verifyingContract:e,version:"1"},types:{CoinbaseSmartWalletMessage:[{name:"hash",type:"bytes32"}]},primaryType:"CoinbaseSmartWalletMessage",message:{hash:r}})}function xr({webauthn:e,signature:t}){let{r,s:a}=wr(t);return Ke([{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:pr(e.clientDataJSON),challengeIndex:BigInt(e.challengeIndex),typeIndex:BigInt(e.typeIndex),r,s:a}])}function K(e){let{ownerIndex:t}=e,r=(()=>{if(ur(e.signature)!==65)return e.signature;let a=fr(e.signature);return mr(["bytes32","bytes32","uint8"],[a.r,a.s,a.yParity===0?27:28])})();return Ke([{components:[{name:"ownerIndex",type:"uint8"},{name:"signatureData",type:"bytes"}],type:"tuple"}],[{ownerIndex:t,signatureData:r}])}var q=[{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"}],vr=[{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 L(e,t){let{publicKeys:r}=m.getState(),a=r[t];if(!a)throw new Error("No public key found for passkey credential.");let i=[kr({credential:{id:t,publicKey:a}})];return await Y({client:e,owners:i})}import{bytesToHex as Er,hashMessage as Rr}from"viem";import{sign as Tr}from"webauthn-p256";import{bytesToHex as Cr,hexToBytes as Le}from"webauthn-p256";import{concatBytes as Ar,utf8ToBytes as Sr}from"@noble/curves/abstract/utils";async function X(e){let{authenticatorData:t,challengeIndex:r,clientDataJSON:a,typeIndex:n,userVerificationRequired:i}=e,o=n||a.indexOf('"type"'),d=r||a.indexOf('"challenge"'),l=Le(t);if(l.length<37)throw new Error("Invalid authenticatorData");let c=l[32];if((c&1)!==1)throw new Error("Invalid authenticatorData");if(i&&(c&4)!==4)throw new Error("Invalid authenticatorData");if((c&8)!==8&&(c&16)===16)throw new Error("Invalid authenticatorData");let s='"type":"webauthn.get"';if(s!==a.slice(Number(o),s.length+1))throw new Error("Invalid clientDataJSON");if(!a.slice(Number(d)).match(/^"challenge":"(.*?)"/))throw new Error("Invalid clientDataJSON");let f=new Uint8Array(await crypto.subtle.digest("SHA-256",Sr(a))),v=new Uint8Array(await crypto.subtle.digest("SHA-256",Ar(Le(t),f)));return Cr(v)}import{sign as Mr}from"webauthn-p256";import{parseSignature as Pr,serializePublicKey as Be}from"webauthn-p256";import{secp256r1 as We}from"@noble/curves/p256";function ye(e){let{r:t,s:r}=Pr(e.signatureHex),a=new We.Signature(t,r).addRecoveryBit(1).recoverPublicKey(e.messageHash.slice(2)),n=new We.Signature(t,r).addRecoveryBit(0).recoverPublicKey(e.messageHash.slice(2));return[Be(a),Be(n)]}import{hashMessage as Nr}from"viem";function Ir([e,t]){return Hr([...ye(e),...ye(t)])}async function Fe(e){let t=Nr(e.signatureHex),{signature:r,webauthn:a,raw:n}=await Mr({credentialId:e.credentialId,hash:t}),i=await X(a),o=Ir([e,{signatureHex:r,messageHash:i}]);if(o)return{publicKey:o,credential:n}}function Hr(e){let t=new Set;for(let r of e){if(t.has(r))return r;t.add(r)}}async function he(){let e=Er(crypto.getRandomValues(new Uint8Array(256))),t=Rr(e),{signature:r,webauthn:a,raw:n}=await Tr({hash:t}),i=await(async()=>{let o=m.getState().publicKeys[n.id];if(o)return o;let d=await X(a),l=await Fe({credentialId:n.id,messageHash:d,signatureHex:r});if(!l)throw new Error("recovery failed");if(l.credential.id!==n.id)throw new Error("wrong credential");return m.setState(c=>({publicKeys:{...c.publicKeys,[n.id]:l.publicKey}})),l.publicKey})();return console.log("recovered passkey",n.id,i),m.setState(()=>({activeCredential:n.id})),{id:n.id,publicKey:i,raw:n}}import{createCredential as Or}from"webauthn-p256";async function Ue(){let e=await Or({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 zr}from"@latticexyz/common";import{parseAbi as Dr}from"viem";import Kr from"@latticexyz/world/mud.config";var $={pollingInterval:250},Q=zr({type:"system",namespace:"",name:"unlimited"}),Ge=Kr.namespaces.world.tables,Ve=Dr(["function registerDelegation(address delegatee, bytes32 delegationControlId, bytes initCallData)"]);import{createBundlerClient as Lr}from"viem/account-abstraction";var Br=new Set([31337,17420,17069,690]);function j({paymasterAddress:e,...t}){let r=t.chain??t.client?.chain;return Lr({...$,paymaster:{getPaymasterData:async()=>({paymaster:e,paymasterData:"0x"})},userOperation:{estimateFeesPerGas:r&&Br.has(r.id)?async()=>({maxFeePerGas:100000n,maxPriorityFeePerGas:0n}):void 0},...t})}import{observer as Yr}from"@latticexyz/explorer/observer";N.type="passkey";function N({chainId:e,bundlerTransport:t,paymasterAddress:r,explorerUrl:a}){return _r(n=>{if(!n.transports)throw new Error("Wagmi must be configured with transports to use the passkey connector.");let i=n.chains.find(c=>c.id===e);if(!i)throw new Error(`Could not find configured chain for chain ID ${e}.`);let o=n.transports[i.id];if(!o)throw new Error(`Could not find configured transport for chain ID ${e}.`);let d=Wr({...$,chain:i,transport:o}),l=m.getState().activeCredential!=null;return{id:"passkey",type:N.type,name:"Passkey",async createPasskey(){let{id:c}=await Ue(),s=await L(d,c);this.onAccountsChanged([s.address]),this.onConnect?.({chainId:_e(e)})},async reusePasskey(){let{id:c}=await he(),s=await L(d,c);this.onAccountsChanged([s.address]),this.onConnect?.({chainId:_e(e)})},async connect(c){if(console.log("connect"),c?.chainId!=null&&c.chainId!==e)throw new Error(`Can't connect to chain ${c.chainId}. Passkey connector is bound to chain ${e}.`);!m.getState().activeCredential&&!c?.isReconnecting&&await he();let s=await this.getAccounts();return l=s.length>0,{accounts:s,chainId:e}},async disconnect(){console.log("disconnect"),l=!1,m.setState({activeCredential:null})},async getAccounts(){console.log("getAccounts");let c=m.getState().activeCredential;if(!c)return[];try{console.log("getting account for credential",c);let s=await L(d,c);return console.log("got account",s),[s.address]}catch{console.log("could not get address for credential ID",c)}return[]},async getChainId(){return e},async isAuthorized(){return console.log("isAuthorized"),l?(await this.getAccounts()).length>0:!1},async switchChain(c){if(c.chainId!==e)throw new Error(`Can't connect to chain ${c.chainId}. Passkey connector is bound to chain ${e}.`);let s=n.chains.find(u=>u.id===c.chainId);if(!s)throw new Gr(new Vr);return s},onAccountsChanged(c){console.log("onAccountsChanged"),c.length>0?n.emitter.emit("change",{accounts:c.map(s=>Ur(s))}):this.onDisconnect()},onChainChanged(c){console.log("onChainChanged"),n.emitter.emit("change",{chainId:Number(c)})},async onConnect(c){console.log("onConnect");let s=await this.getAccounts();n.emitter.emit("connect",{accounts:s,chainId:e})},async onDisconnect(c){console.log("onDisconnect"),n.emitter.emit("disconnect"),l=!1},async getClient(c){console.log("passkeyConnector.getClient",c);let s=m.getState().activeCredential;if(!s)throw new Error("Not connected.");let u=await L(d,s);return j({paymasterAddress:r,transport:t,client:d,account:u}).extend(qr()).extend(f=>a?Yr({explorerUrl:a})(f):{})},async getProvider(c){return Fr({request:d.transport.request})({retryCount:0})}}})}function qe(){let t=Xr().find(r=>r.type===N.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 $r}from"tailwind-merge";import{jsx as be,jsxs as Qr}from"react/jsx-runtime";function A({className:e,...t}){return Qr("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 8 8",fill:"currentColor",shapeRendering:"crispEdges",className:$r("-my-[0.125em] h-[1.25em] w-[1.25em]",e),...t,children:[be("path",{d:"M0 0h1v1H0zm0 1h1v1H0zm0 1h1v1H0zm0 1h1v1H0zm0 1h1v1H0zm0 1h1v1H0zm0 1h1v1H0zm0 1h1v1H0zm1 0h1v1H1zm1 0h1v1H2zm1 0h1v1H3zm1 0h1v1H4zm1 0h1v1H5zm2-1h1v1H7zm0 1h1v1H7zM6 7h1v1H6zm1-2h1v1H7zm0-1h1v1H7zm0-1h1v1H7z"}),be("path",{d:"M2 2h1v1H2zm0 1h1v1H2zm0 1h1v1H2zm0 1h1v1H2zm1-3h1v1H3zm1 0h1v1H4zm1 0h1v1H5zm0 1h1v1H5zm0 1h1v1H5zm0 1h1v1H5zM4 5h1v1H4zM3 5h1v1H3z",opacity:".5"}),be("path",{d:"M7 2h1v1H7zm0-1h1v1H7zM1 0h1v1H1zm1 0h1v1H2zm1 0h1v1H3zm1 0h1v1H4zm1 0h1v1H5zm1 0h1v1H6zm1 0h1v1H7z"})]})}function Ye(){let{appInfo:e}=p(),t=e?.name??document.title,r=location.host,a=e?.icon??document.querySelector("link[rel~='icon']")?.getAttribute("href")??"/favico.ico",n=e?.image;return{appName:t,appOrigin:r,appIcon:a,appImage:n}}import{useQuery as jr}from"@tanstack/react-query";function J(e){return jr({enabled:!!e,retry:!1,retryOnMount:!1,refetchOnMount:!1,refetchOnWindowFocus:!1,queryKey:[e],queryFn:()=>new Promise((t,r)=>{if(!e)throw new Error("usePreloadImage: Must provide `url` to preload image.");let a=new Image;a.onload=()=>t(a),a.onerror=()=>r(new Error(`usePreloadImage: Could not load image.
1567
+ `;import{useResizeObserver as _t}from"usehooks-ts";import{mergeRefs as qt}from"react-merge-refs";import{createContext as Dt,useContext as Kt}from"react";import{jsx as Lt}from"react/jsx-runtime";var Se=Dt(null);function Pe({frame:e,children:t}){if(Kt(Se))throw new Error("`FrameProvider` can only be used once.");return Lt(Se.Provider,{value:{frame:e},children:t})}import{useMediaQuery as Ft}from"usehooks-ts";import"@rainbow-me/rainbowkit/styles.css";import{createContext as Bt,useContext as He}from"react";import{RainbowKitProvider as Wt,lightTheme as Me,midnightTheme as Ne}from"@rainbow-me/rainbowkit";import{jsx as Ie}from"react/jsx-runtime";var me=Bt(null);function Ee({config:e,children:t}){if(He(me))throw new Error("`EntryKitProvider` can only be used once.");return Ie(Wt,{initialChain:e.chainId,appInfo:{appName:e.appInfo?.name},theme:e.theme==="light"?Me({borderRadius:"none"}):e.theme==="dark"?Ne({borderRadius:"none"}):{lightMode:Me({borderRadius:"none"}),darkMode:Ne({borderRadius:"none"})},children:Ie(me.Provider,{value:e,children:t})})}function p(){let e=He(me);if(!e)throw new Error("`useEntryKitConfig` can only be used within a `EntryKitProvider`.");return e}function Re(){let{theme:e}=p(),t=Ft("(prefers-color-scheme: dark)");return e??(t?"dark":"light")}import{jsx as O,jsxs as Xt}from"react/jsx-runtime";function Yt({onSize:e,...t}){let r=Oe(null);return _t({ref:r,onResize:e}),O("div",{ref:r,...t,style:{...t.style,display:"inline-block"}})}var U=Gt(function({mode:t,children:r},a){let n=Oe(null),[i,o]=Te(!1),d=i?n.current:null,[l,c]=Te({width:void 0,height:void 0}),s=d?.contentDocument,u=Re();Ut(()=>{s&&s.body.setAttribute("data-theme",u)},[s,u]);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 O("iframe",{ref:qt([a,n]),style:f,onLoad:()=>o(!0),srcDoc:"<!doctype html><title>\u2026</title>",children:s?Vt.createPortal(Xt(Pe,{frame:d,children:[O("div",{children:t==="modal"?r:O(Yt,{onSize:c,children:r})}),O("style",{dangerouslySetInnerHTML:{__html:Ae}})]}),s.body):null})});import{twMerge as ze}from"tailwind-merge";import{jsx as z,jsxs as Jt}from"react/jsx-runtime";function De({open:e,onOpenChange:t,children:r}){return z($t,{open:e,onOpenChange:t,children:z(Qt,{children:Jt(U,{mode:"modal",children:[z("div",{className:ze("fixed inset-0","bg-neutral-700/50 dark:bg-neutral-900/75","animate-in animate-duration-500 fade-in")}),z("div",{className:ze("fixed inset-0","grid place-items-end sm:place-items-center overflow-y-auto","animate-in animate-duration-200 fade-in slide-in-from-bottom-4"),children:z(jt,{className:"outline-none w-full sm:max-w-screen-sm","aria-describedby":void 0,children:r})})]})})})}import{useCallback as fe,useMemo as Zt}from"react";import{useStore as er}from"zustand";import{createStore as tr}from"zustand/vanilla";var V=tr(()=>({open:!1}));function y(){let e=er(V,n=>n.open),t=fe(()=>{V.setState({open:!0})},[]),r=fe(()=>{V.setState({open:!1})},[]),a=fe(n=>{V.setState({open:n})},[]);return Zt(()=>({accountModalOpen:e,openAccountModal:t,closeAccountModal:r,toggleAccountModal:a}),[e,t,r,a])}import{twMerge as At}from"tailwind-merge";import{useConnectorClient as ja}from"wagmi";import{useAccount as Zr}from"wagmi";import{twMerge as _}from"tailwind-merge";import{twMerge as rr}from"tailwind-merge";import{jsx as Ke,jsxs as ar}from"react/jsx-runtime";function b({className:e,...t}){return ar("svg",{className:rr("-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 D,jsxs as or}from"react/jsx-runtime";var nr=({variant:e="primary",pending:t=!1}={})=>_("group self-center leading-none outline-none border border-transparent ring-2 ring-transparent focus:ring-orange-500 focus:border-transparent transition","aria-disabled:pointer-events-none aria-busy:pointer-events-none","p-[1em] font-semibold",{primary:_("bg-neutral-900 text-white hover:bg-neutral-700 active:bg-neutral-600 aria-disabled:bg-neutral-200 aria-disabled:text-neutral-400","dark:bg-neutral-100 dark:text-black dark:hover:bg-neutral-200 dark:active:bg-neutral-300 dark:aria-disabled:bg-neutral-400 dark:aria-disabled:text-neutral-600",t&&"dark:bg-neutral-700 dark:text-neutral-400"),secondary:_("text-black border-neutral-400 hover:bg-neutral-200 hover:border-neutral-500 active:bg-neutral-300 active:border-neutral-600 aria-disabled:text-neutral-400 aria-disabled:border-neutral-300","dark:text-white dark:border-neutral-400 dark:hover:bg-neutral-700 dark:hover:border-neutral-300 dark:active:bg-neutral-600 dark:active:border-neutral-200 dark:aria-disabled:text-neutral-500 dark:aria-disabled:border-neutral-600")}[e]),k=({pending:e,variant:t,type:r,className:a,children:n,disabled:i,...o})=>D("button",{type:r||"button",className:_(nr({variant:t,pending:e}),a),"aria-busy":e,"aria-disabled":i,disabled:i||e,...o,children:or("span",{className:"grid grid-cols-[1fr_auto_1fr] gap-2",children:[D("span",{className:"flex items-center justify-end text-[.75em]",children:D("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:D(b,{})})}),D("span",{children:n})]})});import{useConnectModal as ea}from"@rainbow-me/rainbowkit";import{useMutation as ta}from"@tanstack/react-query";import{useConnectors as $r}from"wagmi";import{createClient as Fr,custom as Gr,getAddress as Ur,numberToHex as Ye,SwitchChainError as Vr}from"viem";import{ChainNotConfiguredError as _r,createConnector as qr}from"wagmi";import{createStore as ir}from"zustand/vanilla";import{persist as sr}from"zustand/middleware";var m=ir(sr(()=>({publicKeys:{},addresses:{},activeCredential:null}),{name:"mud:passkey:cache"}));function cr(e){e.key===m.persist.getOptions().name&&m.persist.rehydrate()}window.addEventListener("storage",cr);import{smartAccountActions as Yr}from"permissionless/clients";import{toWebAuthnAccount as Cr}from"viem/account-abstraction";import{BaseError as dr}from"abitype";import{pad as lr,encodeFunctionData as ge,hashMessage as pr,hashTypedData as Be,encodeAbiParameters as We,stringToHex as ur,size as mr,encodePacked as fr,parseSignature as gr}from"viem";import{entryPoint07Abi as yr,entryPoint07Address as hr,getUserOperationHash as br,toSmartAccount as wr}from"viem/account-abstraction";import{readContract as Le}from"viem/actions";import{parseSignature as xr}from"webauthn-p256";async function X(e){let{client:t,owners:r,nonce:a=0n}=e,n=e.address,i={abi:yr,address:hr,version:"0.7"},o={abi:kr,address:"0x356336adA1619BeC1Ae4E6D94Dd9c0490DA414a8"};if(!r.length)throw new Error("`owners` must have at least one account.");function d(s){return s.type==="webAuthn"?s.publicKey:lr(s.address)}let l=e.signer??r[0],c=r.indexOf(l);if(c===-1)throw new Error("`signer` must be one of `owners`.");return wr({client:t,entryPoint:i,extend:{__isCoinbaseSmartAccount:!0,abi:Y,factory:o,signer:l},async encodeCalls(s){return s.length===1?ge({abi:Y,functionName:"execute",args:[s[0].to,s[0].value??0n,s[0].data??"0x"]}):ge({abi:Y,functionName:"executeBatch",args:[s.map(u=>({data:u.data??"0x",target:u.to,value:u.value??0n}))]})},async getAddress(){return n??=await Le(t,{...o,functionName:"getAddress",args:[r.map(d),a]}),n},async getFactoryArgs(){let s=ge({abi:o.abi,functionName:"createAccount",args:[r.map(d),a]});return{factory:o.address,factoryData:s}},async getStubSignature(){return l.type==="webAuthn"?"0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000000001949fc7c88032b9fcb5f6efc7a7b8c63668eae9871b765e23123bb473ff57aa831a7c0d9276168ebcc29f2875a0239cffdf2a9cd1c2007c5c77c071db9264df1d000000000000000000000000000000000000000000000000000000000000002549960de5880e8c687434170f6476605b8fe4aeb9a28632c7995cf3ba831d97630500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008a7b2274797065223a22776562617574686e2e676574222c226368616c6c656e6765223a2273496a396e6164474850596759334b7156384f7a4a666c726275504b474f716d59576f4d57516869467773222c226f726967696e223a2268747470733a2f2f7369676e2e636f696e626173652e636f6d222c2263726f73734f726967696e223a66616c73657d00000000000000000000000000000000000000000000":K({signature:"0xfffffffffffffffffffffffffffffff0000000000000000000000000000000007aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1c",ownerIndex:c})},async sign(s){let u=await this.getAddress(),f=ye({address:u,chainId:t.chain.id,hash:s.hash}),v=await q({hash:f,owner:l});return K({signature:v,ownerIndex:c})},async signMessage(s){let{message:u}=s,f=await this.getAddress(),v=ye({address:f,chainId:t.chain.id,hash:pr(u)}),T=await q({hash:v,owner:l});return K({signature:T,ownerIndex:c})},async signTypedData(s){let{domain:u,types:f,primaryType:v,message:T}=s,ue=await this.getAddress(),Tt=ye({address:ue,chainId:t.chain.id,hash:Be({domain:u,message:T,primaryType:v,types:f})}),Ot=await q({hash:Tt,owner:l});return K({signature:Ot,ownerIndex:c})},async signUserOperation(s){let{chainId:u=t.chain.id,...f}=s,v=await this.getAddress(),T=br({chainId:u,entryPointAddress:i.address,entryPointVersion:i.version,userOperation:{...f,sender:v}}),ue=await q({hash:T,owner:l});return K({signature:ue,ownerIndex:c})},userOperation:{async estimateGas(s){if(l.type==="webAuthn")return{verificationGasLimit:BigInt(Math.max(Number(s.verificationGasLimit??0n),8e5))}}},async isOwner(s){return await Le(t,{abi:Y,address:await this.getAddress(),functionName:"isOwnerBytes",args:[d(s)]})}})}async function q({hash:e,owner:t}){if(t.type==="webAuthn"){let{signature:r,webauthn:a}=await t.sign({hash:e});return vr({signature:r,webauthn:a})}if(t.sign)return t.sign({hash:e});throw new dr("`owner` does not support raw sign.")}function ye({address:e,chainId:t,hash:r}){return Be({domain:{chainId:t,name:"Coinbase Smart Wallet",verifyingContract:e,version:"1"},types:{CoinbaseSmartWalletMessage:[{name:"hash",type:"bytes32"}]},primaryType:"CoinbaseSmartWalletMessage",message:{hash:r}})}function vr({webauthn:e,signature:t}){let{r,s:a}=xr(t);return We([{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:ur(e.clientDataJSON),challengeIndex:BigInt(e.challengeIndex),typeIndex:BigInt(e.typeIndex),r,s:a}])}function K(e){let{ownerIndex:t}=e,r=(()=>{if(mr(e.signature)!==65)return e.signature;let a=gr(e.signature);return fr(["bytes32","bytes32","uint8"],[a.r,a.s,a.yParity===0?27:28])})();return We([{components:[{name:"ownerIndex",type:"uint8"},{name:"signatureData",type:"bytes"}],type:"tuple"}],[{ownerIndex:t,signatureData:r}])}var Y=[{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"}],kr=[{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 L(e,t){let{publicKeys:r}=m.getState(),a=r[t];if(!a)throw new Error("No public key found for passkey credential.");let i=[Cr({credential:{id:t,publicKey:a}})];return await X({client:e,owners:i})}import{bytesToHex as Rr,hashMessage as Tr}from"viem";import{sign as Or}from"webauthn-p256";import{bytesToHex as Ar,hexToBytes as Fe}from"webauthn-p256";import{concatBytes as Sr,utf8ToBytes as Pr}from"@noble/curves/abstract/utils";async function $(e){let{authenticatorData:t,challengeIndex:r,clientDataJSON:a,typeIndex:n,userVerificationRequired:i}=e,o=n||a.indexOf('"type"'),d=r||a.indexOf('"challenge"'),l=Fe(t);if(l.length<37)throw new Error("Invalid authenticatorData");let c=l[32];if((c&1)!==1)throw new Error("Invalid authenticatorData");if(i&&(c&4)!==4)throw new Error("Invalid authenticatorData");if((c&8)!==8&&(c&16)===16)throw new Error("Invalid authenticatorData");let s='"type":"webauthn.get"';if(s!==a.slice(Number(o),s.length+1))throw new Error("Invalid clientDataJSON");if(!a.slice(Number(d)).match(/^"challenge":"(.*?)"/))throw new Error("Invalid clientDataJSON");let f=new Uint8Array(await crypto.subtle.digest("SHA-256",Pr(a))),v=new Uint8Array(await crypto.subtle.digest("SHA-256",Sr(Fe(t),f)));return Ar(v)}import{sign as Nr}from"webauthn-p256";import{parseSignature as Mr,serializePublicKey as Ge}from"webauthn-p256";import{secp256r1 as Ue}from"@noble/curves/p256";function he(e){let{r:t,s:r}=Mr(e.signatureHex),a=new Ue.Signature(t,r).addRecoveryBit(1).recoverPublicKey(e.messageHash.slice(2)),n=new Ue.Signature(t,r).addRecoveryBit(0).recoverPublicKey(e.messageHash.slice(2));return[Ge(a),Ge(n)]}import{hashMessage as Ir}from"viem";function Hr([e,t]){return Er([...he(e),...he(t)])}async function Ve(e){let t=Ir(e.signatureHex),{signature:r,webauthn:a,raw:n}=await Nr({credentialId:e.credentialId,hash:t}),i=await $(a),o=Hr([e,{signatureHex:r,messageHash:i}]);if(o)return{publicKey:o,credential:n}}function Er(e){let t=new Set;for(let r of e){if(t.has(r))return r;t.add(r)}}async function be(){let e=Rr(crypto.getRandomValues(new Uint8Array(256))),t=Tr(e),{signature:r,webauthn:a,raw:n}=await Or({hash:t}),i=await(async()=>{let o=m.getState().publicKeys[n.id];if(o)return o;let d=await $(a),l=await Ve({credentialId:n.id,messageHash:d,signatureHex:r});if(!l)throw new Error("recovery failed");if(l.credential.id!==n.id)throw new Error("wrong credential");return m.setState(c=>({publicKeys:{...c.publicKeys,[n.id]:l.publicKey}})),l.publicKey})();return console.log("recovered passkey",n.id,i),m.setState(()=>({activeCredential:n.id})),{id:n.id,publicKey:i,raw:n}}import{createCredential as zr}from"webauthn-p256";async function _e(){let e=await zr({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 Dr}from"@latticexyz/common";import{parseAbi as Kr}from"viem";import Lr from"@latticexyz/world/mud.config";var Q={pollingInterval:250},B=Dr({type:"system",namespace:"",name:"unlimited"}),qe=Lr.namespaces.world.tables,we=Kr(["function registerDelegation(address delegatee, bytes32 delegationControlId, bytes initCallData)"]);import{createBundlerClient as Br}from"viem/account-abstraction";var Wr=new Set([31337,17420,17069,690]);function j({paymasterAddress:e,...t}){let r=t.chain??t.client?.chain;return Br({...Q,paymaster:{getPaymasterData:async()=>({paymaster:e,paymasterData:"0x"})},userOperation:{estimateFeesPerGas:r&&Wr.has(r.id)?async()=>({maxFeePerGas:100000n,maxPriorityFeePerGas:0n}):void 0},...t})}import{observer as Xr}from"@latticexyz/explorer/observer";N.type="passkey";function N({chainId:e,bundlerTransport:t,paymasterAddress:r,explorerUrl:a}){return qr(n=>{if(!n.transports)throw new Error("Wagmi must be configured with transports to use the passkey connector.");let i=n.chains.find(c=>c.id===e);if(!i)throw new Error(`Could not find configured chain for chain ID ${e}.`);let o=n.transports[i.id];if(!o)throw new Error(`Could not find configured transport for chain ID ${e}.`);let d=Fr({...Q,chain:i,transport:o}),l=m.getState().activeCredential!=null;return{id:"passkey",type:N.type,name:"Passkey",async createPasskey(){let{id:c}=await _e(),s=await L(d,c);this.onAccountsChanged([s.address]),this.onConnect?.({chainId:Ye(e)})},async reusePasskey(){let{id:c}=await be(),s=await L(d,c);this.onAccountsChanged([s.address]),this.onConnect?.({chainId:Ye(e)})},async connect(c){if(console.log("connect"),c?.chainId!=null&&c.chainId!==e)throw new Error(`Can't connect to chain ${c.chainId}. Passkey connector is bound to chain ${e}.`);!m.getState().activeCredential&&!c?.isReconnecting&&await be();let s=await this.getAccounts();return l=s.length>0,{accounts:s,chainId:e}},async disconnect(){console.log("disconnect"),l=!1,m.setState({activeCredential:null})},async getAccounts(){console.log("getAccounts");let c=m.getState().activeCredential;if(!c)return[];try{console.log("getting account for credential",c);let s=await L(d,c);return console.log("got account",s),[s.address]}catch{console.log("could not get address for credential ID",c)}return[]},async getChainId(){return e},async isAuthorized(){return console.log("isAuthorized"),l?(await this.getAccounts()).length>0:!1},async switchChain(c){if(c.chainId!==e)throw new Error(`Can't connect to chain ${c.chainId}. Passkey connector is bound to chain ${e}.`);let s=n.chains.find(u=>u.id===c.chainId);if(!s)throw new Vr(new _r);return s},onAccountsChanged(c){console.log("onAccountsChanged"),c.length>0?n.emitter.emit("change",{accounts:c.map(s=>Ur(s))}):this.onDisconnect()},onChainChanged(c){console.log("onChainChanged"),n.emitter.emit("change",{chainId:Number(c)})},async onConnect(c){console.log("onConnect");let s=await this.getAccounts();n.emitter.emit("connect",{accounts:s,chainId:e})},async onDisconnect(c){console.log("onDisconnect"),n.emitter.emit("disconnect"),l=!1},async getClient(c){console.log("passkeyConnector.getClient",c);let s=m.getState().activeCredential;if(!s)throw new Error("Not connected.");let u=await L(d,s);return j({paymasterAddress:r,transport:t,client:d,account:u}).extend(Yr()).extend(f=>a?Xr({explorerUrl:a})(f):{})},async getProvider(c){return Gr({request:d.transport.request})({retryCount:0})}}})}function Xe(){let t=$r().find(r=>r.type===N.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 Qr}from"tailwind-merge";import{jsx as xe,jsxs as jr}from"react/jsx-runtime";function A({className:e,...t}){return jr("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 8 8",fill:"currentColor",shapeRendering:"crispEdges",className:Qr("-my-[0.125em] h-[1.25em] w-[1.25em]",e),...t,children:[xe("path",{d:"M0 0h1v1H0zm0 1h1v1H0zm0 1h1v1H0zm0 1h1v1H0zm0 1h1v1H0zm0 1h1v1H0zm0 1h1v1H0zm0 1h1v1H0zm1 0h1v1H1zm1 0h1v1H2zm1 0h1v1H3zm1 0h1v1H4zm1 0h1v1H5zm2-1h1v1H7zm0 1h1v1H7zM6 7h1v1H6zm1-2h1v1H7zm0-1h1v1H7zm0-1h1v1H7z"}),xe("path",{d:"M2 2h1v1H2zm0 1h1v1H2zm0 1h1v1H2zm0 1h1v1H2zm1-3h1v1H3zm1 0h1v1H4zm1 0h1v1H5zm0 1h1v1H5zm0 1h1v1H5zm0 1h1v1H5zM4 5h1v1H4zM3 5h1v1H3z",opacity:".5"}),xe("path",{d:"M7 2h1v1H7zm0-1h1v1H7zM1 0h1v1H1zm1 0h1v1H2zm1 0h1v1H3zm1 0h1v1H4zm1 0h1v1H5zm1 0h1v1H6zm1 0h1v1H7z"})]})}function $e(){let{appInfo:e}=p(),t=e?.name??document.title,r=location.host,a=e?.icon??document.querySelector("link[rel~='icon']")?.getAttribute("href")??"/favico.ico",n=e?.image;return{appName:t,appOrigin:r,appIcon:a,appImage:n}}import{useQuery as Jr}from"@tanstack/react-query";function J(e){return Jr({enabled:!!e,retry:!1,retryOnMount:!1,refetchOnMount:!1,refetchOnWindowFocus:!1,queryKey:[e],queryFn:()=>new Promise((t,r)=>{if(!e)throw new Error("usePreloadImage: Must provide `url` to preload image.");let a=new Image;a.onload=()=>t(a),a.onerror=()=>r(new Error(`usePreloadImage: Could not load image.
1568
1568
 
1569
- URL: ${e}`)),a.src=e})})}import{jsx as B,jsxs as Xe}from"react/jsx-runtime";function $e(){let{appName:e,appOrigin:t,appIcon:r}=Ye(),{data:a,isLoading:n}=J(r);return Xe("div",{className:"flex-grow flex flex-col items-center justify-center gap-2",children:[B("div",{className:"w-16 h-16 m-2",children:n?null:a?B("img",{src:r,className:"w-full h-full object-cover"}):B(A,{className:"w-full h-full text-orange-500 dark:bg-neutral-800"})}),Xe("div",{className:"flex flex-col gap-1 items-center justify-center",children:[B("div",{className:"text-2xl",children:e}),B("div",{className:"text-sm font-mono text-neutral-400",children:t})]})]})}import{Fragment as ta,jsx as w,jsxs as Z}from"react/jsx-runtime";function Qe(){let e=Jr(),{accountModalOpen:t}=y(),{openConnectModal:r,connectModalOpen:a}=Zr(),n=qe(),i=ea({mutationKey:["createPasskey",n.id,t,a,e.status],mutationFn:async()=>await n.createPasskey()});return w(ta,{children:w("div",{className:"flex-grow grid place-items-center p-6",children:Z("div",{className:"flex flex-col gap-6",children:[w("div",{className:"p-4",children:w($e,{})}),Z("div",{className:"flex flex-col gap-2",children:[Z("div",{className:"flex flex-col",children:[w(k,{className:"self-auto flex justify-center",pending:i.status==="pending",onClick:()=>i.mutate(),children:"Create account"}),i.status==="error"?w("div",{className:"bg-red-100 text-red-700 text-sm p-2 animate-in animate-duration-200 fade-in",children:i.error.message}):null]}),w(k,{className:"self-auto flex justify-center text-sm py-1",variant:"secondary",pending:e.status==="connecting",onClick:r,children:"Connect with passkey or wallet"})]}),Z("a",{href:"https://mud.dev",target:"_blank",rel:"noreferrer noopener",className:"self-center p-2 flex items-center justify-center gap-1.5 text-sm",children:[w("span",{className:"block w-4 h-4",children:w(A,{className:"w-full h-full text-orange-500 dark:bg-neutral-800"})}),w("span",{children:"Powered by MUD"})]})]})})})}import{useState as ra}from"react";import{twMerge as aa}from"tailwind-merge";import{Fragment as na,jsx as ee,jsxs as je}from"react/jsx-runtime";function Je({steps:e}){if(!e.length)throw new Error("No steps.");let[t,r]=ra(null),a=e.find(o=>o.content!=null&&!o.isComplete),n=e.filter(o=>o.isComplete),i=(t!=null?e.find(o=>o.id===t):null)??a??(n.length<e.length?n.at(-1):null)??e.at(0);return je(na,{children:[ee("div",{className:"flex items-center justify-center p-2",children:e.filter(o=>o.id!=="finalize").map(o=>je("button",{type:"button",title:o.label,disabled:!o.content,className:"outline-none p-2.5 -my-2.5 hover:enabled:brightness-125 transition",onClick:()=>r(o.id),children:[ee("span",{className:aa("block w-2.5 h-2.5 rounded-full",o.id===a?.id?"bg-orange-500":o.isComplete?"bg-amber-700":"bg-gray-300",o.id===i.id?"ring-4 ring-orange-500/20":null)}),ee("span",{className:"sr-only",children:o.label})]},o.id))}),ee("div",{className:"outline-none flex-grow flex flex-col",children:i.content})]})}import{useDisconnect as ma}from"wagmi";import{twMerge as oa}from"tailwind-merge";import{jsx as ia}from"react/jsx-runtime";function g({className:e,children:t}){return ia("div",{className:oa("flex-grow flex flex-col gap-5 px-5 pb-5","animate-in fade-in slide-in-from-left-2",e),children:t})}import{useQuery as sa}from"@tanstack/react-query";function te(e){let t=e?.toLowerCase();return sa({enabled:!!t,queryKey:["ens",t],initialData:{address:void 0,name:void 0,displayName:void 0,avatar:void 0},queryFn:async()=>{let r=await fetch(`https://api.ensideas.com/ens/resolve/${t}`).then(a=>a.json());return{address:r.address??void 0,name:r.name??void 0,displayName:r.displayName??void 0,avatar:r.avatar??void 0}}})}import{jsx as we,jsxs as ca}from"react/jsx-runtime";function W({hex:e}){return e.length<=10?we("span",{title:e,children:e}):ca("span",{title:e,children:[we("span",{className:"after:select-none after:content-['\u2026']",children:e.slice(0,6)}),we("span",{className:"tracking-[-1ch] text-transparent",children:e.slice(6,-4)}),e.slice(-4)]})}import{twMerge as da}from"tailwind-merge";import{BaseError as la,UserRejectedRequestError as pa}from"viem";import{jsx as Ze,jsxs as ua}from"react/jsx-runtime";function S({title:e,error:t}){if(!t||t instanceof la&&t.walk(n=>n instanceof pa)!=null)return null;let r=e??"Error",a=typeof t=="string"?t:t instanceof Error?String(t):"Something unexpected happened.";return ua("div",{className:da("text-sm border-l-4 border-red-500","bg-red-100 text-red-900","dark:bg-red-900 dark:text-red-50"),children:[Ze("div",{className:"p-3 font-semibold",children:r}),Ze("div",{className:"px-3 whitespace-break-spaces break-all max-h-32 overflow-y-scroll",children:a})]})}import{Fragment as fa,jsx as P,jsxs as I}from"react/jsx-runtime";function et({userAddress:e}){let{data:t}=te(e),{disconnect:r,isPending:a,error:n}=ma(),{closeAccountModal:i}=y();return I(fa,{children:[I(g,{children:[P("div",{className:"text-lg font-medium",children:"Your wallet"}),I("div",{className:"space-y-4",children:[I("p",{children:["Hello,"," ",t.name?P("span",{className:"font-medium",children:t.name}):P("span",{className:"text-sm font-mono font-medium",children:P(W,{hex:e})}),"!"]}),I("p",{children:["Once signed in, your wallet address (",P("span",{className:"text-sm font-mono font-medium",children:P(W,{hex:e})}),") will be associated with all onchain actions for this app."]})]})]}),I(g,{className:"justify-end",children:[n?P(S,{error:n}):null,P(k,{variant:"secondary",className:"self-stretch sm:self-start",pending:a,onClick:()=>{i(),r()},children:"Disconnect"})]})]})}import{useClient as Ca}from"wagmi";import{useQuery as Aa}from"@tanstack/react-query";import{createStore as ga}from"zustand/vanilla";import{persist as ya}from"zustand/middleware";var F=ga(ya(()=>({appSigners:{}}),{name:"mud:entrykit",partialize:({appSigners:e})=>({appSigners:e})}));function ha(e){e.key===F.persist.getOptions().name&&F.persist.rehydrate()}window.addEventListener("storage",ha);import{generatePrivateKey as ba,privateKeyToAccount as wa}from"viem/accounts";function tt(e){let t=F.getState().appSigners[e]??(()=>{let r=ba();return F.setState(a=>({appSigners:{...a.appSigners,[e]:r}})),r})();return wa(t)}import{smartAccountActions as xa}from"permissionless";import{callFrom as va}from"@latticexyz/world/internal";import{observer as ka}from"@latticexyz/explorer/observer";async function rt({worldAddress:e,userAddress:t,client:r,bundlerTransport:a,paymasterAddress:n,explorerUrl:i}){let o=tt(t),d=await Y({client:r,owners:[o]});return j({paymasterAddress:n,transport:a,client:r,account:d}).extend(xa()).extend(va({worldAddress:e,delegatorAddress:t,publicClient:r})).extend(c=>i?ka({explorerUrl:i})(c):{})}function H(e){let{chainId:t,bundlerTransport:r,paymasterAddress:a,worldAddress:n,explorerUrl:i}=p(),o=Ca({chainId:t}),d=["appAccountClient",o?.uid,e];return Aa(o&&e?{queryKey:d,queryFn:async()=>await rt({worldAddress:n,userAddress:e,client:o,bundlerTransport:r,paymasterAddress:a,explorerUrl:i}),staleTime:1/0}:{queryKey:d,enabled:!1})}import{useMutation as Na,useQueryClient as Ia}from"@tanstack/react-query";import{getAction as nt}from"viem/utils";import{sendUserOperation as Ha,waitForUserOperationReceipt as Ea}from"viem/account-abstraction";import{defineStore as Sa}from"@latticexyz/store";import{parseAbi as Pa}from"viem";var at=Pa(["error SpenderSystem_AlreadyRegistered(address spender, address user)","error SpenderSystem_HasOwnBalance(address spender)","function registerSpender(address spender)"]),Ma=Sa({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:[]}}}}}),re=Ma.namespaces.root.tables;function ot(){let{worldAddress:e,paymasterAddress:t}=p(),r=Ia();return Na({mutationKey:["setupAppAccount"],mutationFn:async({userClient:a,appAccountAddress:n,registerSpender:i,registerDelegation:o})=>{if(a.account.type!=="smart")throw new Error("User account is not a smart account.");let d=[];if(i&&(console.log("registering spender"),d.push({to:t,abi:at,functionName:"registerSpender",args:[n]})),o&&(console.log("registering delegation"),d.push({to:e,abi:Ve,functionName:"registerDelegation",args:[n,Q,"0x"]})),!d.length)return;console.log("setting up account with",d);let l=await nt(a,Ha,"sendUserOperation")({calls:d});console.log("got user op hash",l);let c=await nt(a,Ea,"waitForUserOperationReceipt")({hash:l});console.log("got user op receipt",c),await r.invalidateQueries({queryKey:["readContract"]})}})}import{jsx as h,jsxs as it}from"react/jsx-runtime";function st({userClient:e,registerSpender:t,registerDelegation:r}){let{closeAccountModal:a}=y(),n=H(e.account.address),i=ot();return n.status==="pending"?h(g,{className:"items-center justify-center",children:h(b,{})}):n.status==="error"?h(g,{children:h(S,{error:n.error})}):!t&&!r?it(g,{children:[h("div",{className:"text-lg font-medium",children:"Your app account"}),h("p",{children:"Blah blah blah app account"}),h("p",{children:"All sorted"})]}):it(g,{children:[h("div",{className:"text-lg font-medium",children:"Set up account"}),h("p",{children:"Blah blah blah app account"}),n.data?h(k,{className:"self-start",pending:i.status==="pending",onClick:async()=>{await i.mutateAsync({userClient:e,appAccountAddress:n.data.account.address,registerSpender:t,registerDelegation:r}),a()},children:"Set up"}):h("p",{children:"not ready"})]})}import{useReadContract as Ra}from"wagmi";import Ta from"@latticexyz/store/out/IStoreRead.sol/IStoreRead.abi.json";import{decodeValueArgs as Oa,getKeyTuple as za,getSchemaTypes as Da,getValueSchema as Ka}from"@latticexyz/protocol-parser/internal";function E({table:e,key:t,...r}){return Ra(e&&t&&r.query?.enabled!==!1?{...r,abi:Ta,functionName:"getRecord",args:[e.tableId,za(e,t)],query:{...r.query,select:a=>({...t,...Oa(Da(Ka(e)),{staticData:a[0],encodedLengths:a[1],dynamicData:a[2]})})}}:{})}function ae(e){let{chainId:t,paymasterAddress:r}=p();return E({chainId:t,address:r,...e?{table:re.Allowance,key:{user:e}}:null})}import{useMutation as La,useQueryClient as Ba}from"@tanstack/react-query";function ct(){let e=Ba(),{passIssuerTransport:t}=p();return La({mutationKey:["claimGasPass"],mutationFn:async r=>{let a=t({retryCount:0});await a.request({method:"quarry_issuePass",params:["0x01",r]}),await a.request({method:"quarry_claimAllowance",params:["0x01",r]}),await e.invalidateQueries({queryKey:["readContract"]})}})}import{twMerge as Wa}from"tailwind-merge";import{jsx as ne,jsxs as Fa}from"react/jsx-runtime";function dt({className:e,...t}){return Fa("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 263 428",fill:"currentColor",className:Wa("w-[0.6em] h-[1em]",e),...t,children:[ne("path",{d:"M132 321V428L263 243L132 321Z"}),ne("path",{d:"M0 243L132 321V428",fillOpacity:"0.5"}),ne("path",{d:"M132 0V296L263 218"}),ne("path",{d:"M0 218L132 296V0L0 218Z",fillOpacity:"0.5"})]})}import{formatEther as Ua}from"viem";function lt(e){let t=Ua(e),r=Math.floor(parseFloat(t)).toString().length;return parseFloat(t).toLocaleString("en-US",{maximumFractionDigits:Math.max(0,6-r)})}import{jsx as Ga,jsxs as Va}from"react/jsx-runtime";function pt({wei:e}){return Va("span",{className:"inline-flex items-center gap-1",children:[lt(e)," ",Ga(dt,{})]})}import{useEffect as qa}from"react";import{parseEther as _a}from"viem";var oe=_a("0.01");import{Fragment as Ya,jsx as x,jsxs as ie}from"react/jsx-runtime";function ut({userAddress:e}){let t=ae(e),r=ct();return qa(()=>{r.status==="idle"&&t.data&&t.data.allowance<oe&&r.mutate(e)},[t.data,r,e]),t.status==="pending"?x(g,{className:"items-center justify-center",children:x(b,{})}):t.status==="error"?x(g,{children:x(S,{error:t.error})}):x(Ya,{children:ie(g,{children:[x("div",{className:"text-lg font-medium",children:"Top up"}),ie("div",{className:"space-y-4",children:[t.data.allowance>0n?ie("p",{children:["You currently have ",x(pt,{wei:t.data.allowance})," allowance to spend on gas."]}):x("p",{children:"You haven't claimed a gas pass yet."}),ie("div",{className:"flex flex-col",children:[x(k,{className:"self-start",pending:r.status==="pending",onClick:()=>r.mutate(e),children:"Claim gas pass"}),r.status==="error"?x("div",{className:"bg-red-100 text-red-700 text-sm p-2 animate-in animate-duration-200 fade-in",children:r.error.message}):null]})]})]})})}function mt(e){let{chainId:t,paymasterAddress:r}=p();return E({chainId:t,address:r,...e?{table:re.Spender,key:{spender:e}}:null})}function ft(e,t){let{chainId:r,worldAddress:a}=p();return E({chainId:r,address:a,...e&&t?{table:Ge.UserDelegationControl,key:{delegator:e,delegatee:t}}:null})}import{useMemo as Xa}from"react";import{jsx as xe}from"react/jsx-runtime";function se(e){let t=e?.account.address,r=ae(t),a=H(t),n=mt(a.data?.account.address),i=t&&n.data?n.data.user.toLowerCase()===t.toLowerCase():!1,o=ft(e?.account.address,a.data?.account.address),d=o.data?o.data?.delegationControlId===Q:!1;return Xa(()=>t?[{id:"connectWallet",label:"Sign in",isComplete:!0,content:xe(et,{userAddress:t})},{id:"claimGasPass",label:"Top up",isComplete:(r.data?.allowance??0n)>=oe,content:xe(ut,{userAddress:t})},{id:"setupAppAccount",label:"Set up account",isComplete:i&&d,content:xe(st,{userClient:e,registerSpender:!i,registerDelegation:!d})}]:[{id:"connectWallet",label:"Sign in",isComplete:!1,content:null}],[r.data?.allowance,d,i,t,e])}import{jsx as $a}from"react/jsx-runtime";function gt({userClient:e}){let t=se(e);return $a(Je,{steps:t})}import{jsx as yt}from"react/jsx-runtime";function ht(){let{chainId:e}=p(),t=Qa({chainId:e});return t.status!=="success"?yt(Qe,{}):yt(gt,{userClient:t.data})}import{useState as ja}from"react";import{ErrorBoundary as Ja}from"react-error-boundary";import{wait as Za}from"@latticexyz/common/utils";import{twMerge as en}from"tailwind-merge";import{useIsMounted as tn}from"usehooks-ts";import{jsx as ce,jsxs as bt}from"react/jsx-runtime";function wt({children:e}){let t=tn(),[r,a]=ja(1);return ce(Ja,{fallbackRender:({error:n,resetErrorBoundary:i})=>bt("div",{className:en("flex-grow flex flex-col justify-center p-5 gap-2"),children:[ce(S,{error:n instanceof Error?n.stack??n.message:n}),r>0?bt("button",{type:"button",onClick:async o=>{o.currentTarget.ariaBusy="true",await Za(1e3),i(),t()&&(a(d=>d-1),o.currentTarget.ariaBusy=null)},className:"group aria-busy:pointer-events-none self-end flex items-center gap-1",children:[ce(b,{className:"transition opacity-0 group-aria-busy:opacity-100 text-xs text-neutral-500 dark:text-neutral-400"}),ce("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 nn,DialogTitle as on}from"@radix-ui/react-dialog";import{twMerge as rn}from"tailwind-merge";import{jsx as an}from"react/jsx-runtime";function xt({className:e,children:t,...r}){return an("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",className:rn("-my-[0.125em] h-[1.25em] w-[1.25em]",e),...r,children:t})}import{jsx as vt}from"react/jsx-runtime";function kt(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 R,jsxs as At}from"react/jsx-runtime";function St(){let{accountModalOpen:e,toggleAccountModal:t}=y();return At(Te,{open:e,onOpenChange:t,children:[R(on,{className:"sr-only",children:"Connect with EntryKit"}),e?At("div",{className:Ct("relative flex flex-col min-h-[20rem] border-t sm:border","bg-neutral-100 text-neutral-700 border-neutral-300","dark:bg-neutral-800 dark:text-neutral-300 dark:border-neutral-700 dark:divide-neutral-700","links:font-medium links:underline links:underline-offset-4","links:text-black dark:links:text-white","links:decoration-neutral-300 dark:links:decoration-neutral-500 hover:links:decoration-orange-500"),children:[R(wt,{children:R(ht,{})}),R("div",{className:"absolute top-0 right-0",children:R(nn,{className:Ct("pointer-events-auto leading-none p-1 transition","text-neutral-400 hover:text-neutral-600","dark:text-neutral-500 dark:hover:text-neutral-400"),title:"Close",children:R(kt,{className:"m-0"})})})]}):null]})}import{jsx as cn,jsxs as dn}from"react/jsx-runtime";function sn({config:e,children:t}){return dn(Ne,{config:e,children:[t,cn(St,{})]})}import{useAccount as pn}from"wagmi";import{twMerge as M}from"tailwind-merge";import{twMerge as Pt}from"tailwind-merge";import{Fragment as ln,jsx as de,jsxs as Mt}from"react/jsx-runtime";function Nt({address:e}){let{data:t}=te(e),{isSuccess:r}=J(t.avatar);return Mt(ln,{children:[Mt("span",{className:"flex-shrink-0 w-6 h-6 -my-1 -mx-0.5 grid place-items-center",children:[de("img",{src:r?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",r?"opacity-100":"opacity-0")}),de(A,{className:Pt("col-start-1 row-start-1 text-orange-500","transition duration-300",r?"opacity-0":"opacity-100")})]}),de("span",{className:"flex-grow",children:t.name??(e?de(W,{hex:e}):null)})]})}import{jsx as C,jsxs as Ht}from"react/jsx-runtime";var It=M("w-60 inline-flex outline-none transition","border border-transparent","text-base leading-none"),un=M("bg-neutral-100 border-neutral-300 text-black","dark:bg-neutral-800 dark:border-neutral-700 dark:text-white"),mn=M("cursor-pointer outline-none hover:bg-neutral-200 data-[highlighted]:bg-neutral-200 dark:hover:bg-neutral-700");function fn(){let{openAccountModal:e,accountModalOpen:t}=y(),{status:r,address:a}=pn();return C(U,{mode:"child",children:r==="connected"||r==="reconnecting"&&a?C("button",{type:"button",className:M(It,un,mn,"p-3"),onClick:e,children:C("span",{className:"flex-grow inline-flex gap-2.5 items-center text-left font-medium",children:C(Nt,{address:a})})},"connected"):Ht("button",{type:"button",className:M(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:saturate-50"),"aria-busy":t,onClick:e,children:[Ht("span",{className:"pointer-events-none inline-grid place-items-center -ml-3",children:[C("span",{className:M("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:C(A,{})}),C("span",{"aria-hidden":!0,className:M("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:C(b,{})})]}),C("span",{className:"font-medium",children:"Sign in"})]},"sign in")})}import{useConnectorClient as gn}from"wagmi";import{useMemo as yn}from"react";function hn(){let{chainId:e}=p(),{data:t,error:r}=gn({chainId:e});r&&console.error("Error retrieving user client",r);let a=H(t?.account.address),n=se(t);return yn(()=>{if(n.every(i=>i.isComplete))return a.data},[a.data,n])}import{connectorsForWallets as wn,getDefaultWallets as xn}from"@rainbow-me/rainbowkit";import{createConfig as vn}from"wagmi";var bn=`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>')}`,le=e=>()=>({id:"passkey",name:"Passkey",iconUrl:bn,iconBackground:"#fec",createConnector:t=>r=>({...N(e)(r),...t})});function kn(e){let{wallets:t}=xn(),r=[{groupName:"Recommended",wallets:[le({chainId:e.chainId,bundlerTransport:e.bundlerTransport,paymasterAddress:e.paymasterAddress})]},...t],a=wn(r,{appName:e.appInfo.name,projectId:e.walletConnectProjectId});return vn({connectors:a,chains:e.chains,transports:e.transports})}function Ul(e){return e!=null&&"__isCoinbaseSmartAccount"in e&&e.__isCoinbaseSmartAccount===!0}var Vl=new Set([17420,31337]);function _l(e){return t=>{let{request:r,...a}=e(t),n=null,i=new Map;return{...a,async request(o){if(o.method==="eth_chainId")return n??(n=await r(o));if(o.method==="eth_getTransactionReceipt"){let d=o.params[0],l=i.get(d)??await r(o);return i.has(d)||i.set(d,l),l}if(o.method==="eth_sendUserOperation")return(await r({...o,method:"pimlico_sendUserOperationNow"})).userOpHash;if(o.method==="eth_getUserOperationReceipt"){let d=o.params[0],l=i.get(d)??await r(o);return i.has(d)||i.set(d,l),l}return r(o)}}}}import{connectorsForWallets as An}from"@rainbow-me/rainbowkit";import{getDefaultWallets as Cn}from"@rainbow-me/rainbowkit";function Et(e){let{wallets:t}=Cn();return[{groupName:"Recommended",wallets:[le({chainId:e.chainId,bundlerTransport:e.bundlerTransport,paymasterAddress:e.paymasterAddress})]},...t]}function ep({wallets:e,...t}){return An(e??Et(t),{appName:t.appInfo?.name??document.title,projectId:t.walletConnectProjectId})}export{fn as AccountButton,sn as EntryKitProvider,q as abi,kn as createWagmiConfig,ep as getConnectors,Et as getWallets,Ul as isCoinbaseSmartAccount,N as passkeyConnector,le as passkeyWallet,_ as sign,Y as toCoinbaseSmartAccount,ge as toReplaySafeHash,xr as toWebAuthnSignature,y as useAccountModal,hn as useAppAccountClient,p as useEntryKitConfig,_l as wiresaw,Vl as wiresawChainIds,K as wrapSignature};
1569
+ URL: ${e}`)),a.src=e})})}import{jsx as W,jsxs as Qe}from"react/jsx-runtime";function je(){let{appName:e,appOrigin:t,appIcon:r}=$e(),{data:a,isLoading:n}=J(r);return Qe("div",{className:"flex-grow flex flex-col items-center justify-center gap-2",children:[W("div",{className:"w-16 h-16 m-2",children:n?null:a?W("img",{src:r,className:"w-full h-full object-cover"}):W(A,{className:"w-full h-full text-orange-500 dark:bg-neutral-800"})}),Qe("div",{className:"flex flex-col gap-1 items-center justify-center",children:[W("div",{className:"text-2xl",children:e}),W("div",{className:"text-sm font-mono text-neutral-400",children:t})]})]})}import{Fragment as ra,jsx as w,jsxs as Z}from"react/jsx-runtime";function Je(){let e=Zr(),{accountModalOpen:t}=y(),{openConnectModal:r,connectModalOpen:a}=ea(),n=Xe(),i=ta({mutationKey:["createPasskey",n.id,t,a,e.status],mutationFn:async()=>await n.createPasskey()});return w(ra,{children:w("div",{className:"flex-grow grid place-items-center p-6",children:Z("div",{className:"flex flex-col gap-6",children:[w("div",{className:"p-4",children:w(je,{})}),Z("div",{className:"flex flex-col gap-2",children:[Z("div",{className:"flex flex-col",children:[w(k,{className:"self-auto flex justify-center",pending:i.status==="pending",onClick:()=>i.mutate(),children:"Create account"}),i.status==="error"?w("div",{className:"bg-red-100 text-red-700 text-sm p-2 animate-in animate-duration-200 fade-in",children:i.error.message}):null]}),w(k,{className:"self-auto flex justify-center text-sm py-1",variant:"secondary",pending:e.status==="connecting",onClick:r,children:"Connect with passkey or wallet"})]}),Z("a",{href:"https://mud.dev",target:"_blank",rel:"noreferrer noopener",className:"self-center p-2 flex items-center justify-center gap-1.5 text-sm",children:[w("span",{className:"block w-4 h-4",children:w(A,{className:"w-full h-full text-orange-500 dark:bg-neutral-800"})}),w("span",{children:"Powered by MUD"})]})]})})})}import{useState as aa}from"react";import{twMerge as na}from"tailwind-merge";import{Fragment as oa,jsx as ee,jsxs as Ze}from"react/jsx-runtime";function et({steps:e}){if(!e.length)throw new Error("No steps.");let[t,r]=aa(null),a=e.find(o=>o.content!=null&&!o.isComplete),n=e.filter(o=>o.isComplete),i=(t!=null?e.find(o=>o.id===t):null)??a??(n.length<e.length?n.at(-1):null)??e.at(0);return Ze(oa,{children:[ee("div",{className:"flex items-center justify-center p-2",children:e.filter(o=>o.id!=="finalize").map(o=>Ze("button",{type:"button",title:o.label,disabled:!o.content,className:"outline-none p-2.5 -my-2.5 hover:enabled:brightness-125 transition",onClick:()=>r(o.id),children:[ee("span",{className:na("block w-2.5 h-2.5 rounded-full",o.id===a?.id?"bg-orange-500":o.isComplete?"bg-amber-700":"bg-gray-300",o.id===i.id?"ring-4 ring-orange-500/20":null)}),ee("span",{className:"sr-only",children:o.label})]},o.id))}),ee("div",{className:"outline-none flex-grow flex flex-col",children:i.content})]})}import{useDisconnect as fa}from"wagmi";import{twMerge as ia}from"tailwind-merge";import{jsx as sa}from"react/jsx-runtime";function g({className:e,children:t}){return sa("div",{className:ia("flex-grow flex flex-col gap-5 px-5 pb-5","animate-in fade-in slide-in-from-left-2",e),children:t})}import{useQuery as ca}from"@tanstack/react-query";function te(e){let t=e?.toLowerCase();return ca({enabled:!!t,queryKey:["ens",t],initialData:{address:void 0,name:void 0,displayName:void 0,avatar:void 0},queryFn:async()=>{let r=await fetch(`https://api.ensideas.com/ens/resolve/${t}`).then(a=>a.json());return{address:r.address??void 0,name:r.name??void 0,displayName:r.displayName??void 0,avatar:r.avatar??void 0}}})}import{jsx as ve,jsxs as da}from"react/jsx-runtime";function F({hex:e}){return e.length<=10?ve("span",{title:e,children:e}):da("span",{title:e,children:[ve("span",{className:"after:select-none after:content-['\u2026']",children:e.slice(0,6)}),ve("span",{className:"tracking-[-1ch] text-transparent",children:e.slice(6,-4)}),e.slice(-4)]})}import{twMerge as la}from"tailwind-merge";import{BaseError as pa,UserRejectedRequestError as ua}from"viem";import{jsx as tt,jsxs as ma}from"react/jsx-runtime";function S({title:e,error:t}){if(!t||t instanceof pa&&t.walk(n=>n instanceof ua)!=null)return null;let r=e??"Error",a=typeof t=="string"?t:t instanceof Error?String(t):"Something unexpected happened.";return ma("div",{className:la("text-sm border-l-4 border-red-500","bg-red-100 text-red-900","dark:bg-red-900 dark:text-red-50"),children:[tt("div",{className:"p-3 font-semibold",children:r}),tt("div",{className:"px-3 whitespace-break-spaces break-all max-h-32 overflow-y-scroll",children:a})]})}import{Fragment as ga,jsx as P,jsxs as I}from"react/jsx-runtime";function rt({userAddress:e}){let{data:t}=te(e),{disconnect:r,isPending:a,error:n}=fa(),{closeAccountModal:i}=y();return I(ga,{children:[I(g,{children:[P("div",{className:"text-lg font-medium",children:"Your wallet"}),I("div",{className:"space-y-4",children:[I("p",{children:["Hello,"," ",t.name?P("span",{className:"font-medium",children:t.name}):P("span",{className:"text-sm font-mono font-medium",children:P(F,{hex:e})}),"!"]}),I("p",{children:["Once signed in, your wallet address (",P("span",{className:"text-sm font-mono font-medium",children:P(F,{hex:e})}),") will be associated with all onchain actions for this app."]})]})]}),I(g,{className:"justify-end",children:[n?P(S,{error:n}):null,P(k,{variant:"secondary",className:"self-stretch sm:self-start",pending:a,onClick:()=>{i(),r()},children:"Disconnect"})]})]})}import{useClient as Aa}from"wagmi";import{useQuery as Sa}from"@tanstack/react-query";import{createStore as ya}from"zustand/vanilla";import{persist as ha}from"zustand/middleware";var G=ya(ha(()=>({appSigners:{}}),{name:"mud:entrykit",partialize:({appSigners:e})=>({appSigners:e})}));function ba(e){e.key===G.persist.getOptions().name&&G.persist.rehydrate()}window.addEventListener("storage",ba);import{generatePrivateKey as wa,privateKeyToAccount as xa}from"viem/accounts";function at(e){let t=G.getState().appSigners[e]??(()=>{let r=wa();return G.setState(a=>({appSigners:{...a.appSigners,[e]:r}})),r})();return xa(t)}import{smartAccountActions as va}from"permissionless";import{callFrom as ka}from"@latticexyz/world/internal";import{observer as Ca}from"@latticexyz/explorer/observer";async function nt({worldAddress:e,userAddress:t,client:r,bundlerTransport:a,paymasterAddress:n,explorerUrl:i}){let o=at(t),d=await X({client:r,owners:[o]});return j({paymasterAddress:n,transport:a,client:r,account:d}).extend(va()).extend(ka({worldAddress:e,delegatorAddress:t,publicClient:r})).extend(c=>i?Ca({explorerUrl:i})(c):{})}function H(e){let{chainId:t,bundlerTransport:r,paymasterAddress:a,worldAddress:n,explorerUrl:i}=p(),o=Aa({chainId:t}),d=["appAccountClient",o?.uid,e];return Sa(o&&e?{queryKey:d,queryFn:async()=>await nt({worldAddress:n,userAddress:e,client:o,bundlerTransport:r,paymasterAddress:a,explorerUrl:i}),staleTime:1/0}:{queryKey:d,enabled:!1})}import{useMutation as Ia,useQueryClient as Ha}from"@tanstack/react-query";import{getAction as ae}from"viem/utils";import{sendUserOperation as Ea,waitForUserOperationReceipt as Ra}from"viem/account-abstraction";import{defineStore as Pa}from"@latticexyz/store";import{parseAbi as Ma}from"viem";var ke=Ma(["error SpenderSystem_AlreadyRegistered(address spender, address user)","error SpenderSystem_HasOwnBalance(address spender)","function registerSpender(address spender)"]),Na=Pa({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:[]}}}}}),re=Na.namespaces.root.tables;import{writeContract as ot}from"viem/actions";function it(){let{worldAddress:e,paymasterAddress:t}=p(),r=Ha();return Ia({mutationKey:["setupAppAccount"],mutationFn:async({userClient:a,appAccountAddress:n,registerSpender:i,registerDelegation:o})=>{a.account.type!=="smart"&&(await ae(a,ot,"writeContract")({chain:a.chain,account:a.account,address:t,abi:ke,functionName:"registerSpender",args:[n]}),await ae(a,ot,"writeContract")({chain:a.chain,account:a.account,address:e,abi:we,functionName:"registerDelegation",args:[n,B,"0x"]}));let d=[];if(i&&(console.log("registering spender"),d.push({to:t,abi:ke,functionName:"registerSpender",args:[n]})),o&&(console.log("registering delegation"),d.push({to:e,abi:we,functionName:"registerDelegation",args:[n,B,"0x"]})),!d.length)return;console.log("setting up account with",d);let l=await ae(a,Ea,"sendUserOperation")({calls:d});console.log("got user op hash",l);let c=await ae(a,Ra,"waitForUserOperationReceipt")({hash:l});console.log("got user op receipt",c),await r.invalidateQueries({queryKey:["readContract"]})}})}import{jsx as h,jsxs as st}from"react/jsx-runtime";function ct({userClient:e,registerSpender:t,registerDelegation:r}){let{closeAccountModal:a}=y(),n=H(e.account.address),i=it();return n.status==="pending"?h(g,{className:"items-center justify-center",children:h(b,{})}):n.status==="error"?h(g,{children:h(S,{error:n.error})}):!t&&!r?st(g,{children:[h("div",{className:"text-lg font-medium",children:"Your app account"}),h("p",{children:"Blah blah blah app account"}),h("p",{children:"All sorted"})]}):st(g,{children:[h("div",{className:"text-lg font-medium",children:"Set up account"}),h("p",{children:"Blah blah blah app account"}),n.data?h(k,{className:"self-start",pending:i.status==="pending",onClick:async()=>{await i.mutateAsync({userClient:e,appAccountAddress:n.data.account.address,registerSpender:t,registerDelegation:r}),a()},children:"Set up"}):h("p",{children:"not ready"})]})}import{useReadContract as Ta}from"wagmi";import Oa from"@latticexyz/store/out/IStoreRead.sol/IStoreRead.abi.json";import{decodeValueArgs as za,getKeyTuple as Da,getSchemaTypes as Ka,getValueSchema as La}from"@latticexyz/protocol-parser/internal";function E({table:e,key:t,...r}){return Ta(e&&t&&r.query?.enabled!==!1?{...r,abi:Oa,functionName:"getRecord",args:[e.tableId,Da(e,t)],query:{...r.query,select:a=>({...t,...za(Ka(La(e)),{staticData:a[0],encodedLengths:a[1],dynamicData:a[2]})})}}:{})}function ne(e){let{chainId:t,paymasterAddress:r}=p();return E({chainId:t,address:r,...e?{table:re.Allowance,key:{user:e}}:null})}import{useMutation as Ba,useQueryClient as Wa}from"@tanstack/react-query";function dt(){let e=Wa(),{passIssuerTransport:t}=p();return Ba({mutationKey:["claimGasPass"],mutationFn:async r=>{let a=t({retryCount:0});await a.request({method:"quarry_issuePass",params:["0x01",r]}),await a.request({method:"quarry_claimAllowance",params:["0x01",r]}),await e.invalidateQueries({queryKey:["readContract"]})}})}import{twMerge as Fa}from"tailwind-merge";import{jsx as oe,jsxs as Ga}from"react/jsx-runtime";function lt({className:e,...t}){return Ga("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 263 428",fill:"currentColor",className:Fa("w-[0.6em] h-[1em]",e),...t,children:[oe("path",{d:"M132 321V428L263 243L132 321Z"}),oe("path",{d:"M0 243L132 321V428",fillOpacity:"0.5"}),oe("path",{d:"M132 0V296L263 218"}),oe("path",{d:"M0 218L132 296V0L0 218Z",fillOpacity:"0.5"})]})}import{formatEther as Ua}from"viem";function pt(e){let t=Ua(e),r=Math.floor(parseFloat(t)).toString().length;return parseFloat(t).toLocaleString("en-US",{maximumFractionDigits:Math.max(0,6-r)})}import{jsx as Va,jsxs as _a}from"react/jsx-runtime";function ut({wei:e}){return _a("span",{className:"inline-flex items-center gap-1",children:[pt(e)," ",Va(lt,{})]})}import{useEffect as Ya}from"react";import{parseEther as qa}from"viem";var ie=qa("0.01");import{Fragment as Xa,jsx as x,jsxs as se}from"react/jsx-runtime";function mt({userAddress:e}){let t=ne(e),r=dt();return Ya(()=>{r.status==="idle"&&t.data&&t.data.allowance<ie&&r.mutate(e)},[t.data,r,e]),t.status==="pending"?x(g,{className:"items-center justify-center",children:x(b,{})}):t.status==="error"?x(g,{children:x(S,{error:t.error})}):x(Xa,{children:se(g,{children:[x("div",{className:"text-lg font-medium",children:"Top up"}),se("div",{className:"space-y-4",children:[t.data.allowance>0n?se("p",{children:["You currently have ",x(ut,{wei:t.data.allowance})," allowance to spend on gas."]}):x("p",{children:"You haven't claimed a gas pass yet."}),se("div",{className:"flex flex-col",children:[x(k,{className:"self-start",pending:r.status==="pending",onClick:()=>r.mutate(e),children:"Claim gas pass"}),r.status==="error"?x("div",{className:"bg-red-100 text-red-700 text-sm p-2 animate-in animate-duration-200 fade-in",children:r.error.message}):null]})]})]})})}function ft(e){let{chainId:t,paymasterAddress:r}=p();return E({chainId:t,address:r,...e?{table:re.Spender,key:{spender:e}}:null})}function gt(e,t){let{chainId:r,worldAddress:a}=p();return E({chainId:r,address:a,...e&&t?{table:qe.UserDelegationControl,key:{delegator:e,delegatee:t}}:null})}import{useMemo as $a}from"react";import{jsx as Ce}from"react/jsx-runtime";function ce(e){let t=e?.account.address,r=ne(t),a=H(t),n=ft(a.data?.account.address),i=t&&n.data?n.data.user.toLowerCase()===t.toLowerCase():!1,o=gt(e?.account.address,a.data?.account.address),d=o.data?o.data?.delegationControlId===B:!1;return $a(()=>t?[{id:"connectWallet",label:"Sign in",isComplete:!0,content:Ce(rt,{userAddress:t})},{id:"claimGasPass",label:"Top up",isComplete:(r.data?.allowance??0n)>=ie,content:Ce(mt,{userAddress:t})},{id:"setupAppAccount",label:"Set up account",isComplete:i&&d,content:Ce(ct,{userClient:e,registerSpender:!i,registerDelegation:!d})}]:[{id:"connectWallet",label:"Sign in",isComplete:!1,content:null}],[r.data?.allowance,d,i,t,e])}import{jsx as Qa}from"react/jsx-runtime";function yt({userClient:e}){let t=ce(e);return Qa(et,{steps:t})}import{jsx as ht}from"react/jsx-runtime";function bt(){let{chainId:e}=p(),t=ja({chainId:e});return t.status!=="success"?ht(Je,{}):ht(yt,{userClient:t.data})}import{useState as Ja}from"react";import{ErrorBoundary as Za}from"react-error-boundary";import{wait as en}from"@latticexyz/common/utils";import{twMerge as tn}from"tailwind-merge";import{useIsMounted as rn}from"usehooks-ts";import{jsx as de,jsxs as wt}from"react/jsx-runtime";function xt({children:e}){let t=rn(),[r,a]=Ja(1);return de(Za,{fallbackRender:({error:n,resetErrorBoundary:i})=>wt("div",{className:tn("flex-grow flex flex-col justify-center p-5 gap-2"),children:[de(S,{error:n instanceof Error?n.stack??n.message:n}),r>0?wt("button",{type:"button",onClick:async o=>{o.currentTarget.ariaBusy="true",await en(1e3),i(),t()&&(a(d=>d-1),o.currentTarget.ariaBusy=null)},className:"group aria-busy:pointer-events-none self-end flex items-center gap-1",children:[de(b,{className:"transition opacity-0 group-aria-busy:opacity-100 text-xs text-neutral-500 dark:text-neutral-400"}),de("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 on,DialogTitle as sn}from"@radix-ui/react-dialog";import{twMerge as an}from"tailwind-merge";import{jsx as nn}from"react/jsx-runtime";function vt({className:e,children:t,...r}){return nn("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",className:an("-my-[0.125em] h-[1.25em] w-[1.25em]",e),...r,children:t})}import{jsx as kt}from"react/jsx-runtime";function Ct(e){return kt(vt,{strokeWidth:"2",stroke:"currentColor",...e,children:kt("path",{d:"M6 18L18 6M6 6L18 18",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})}import{jsx as R,jsxs as St}from"react/jsx-runtime";function Pt(){let{accountModalOpen:e,toggleAccountModal:t}=y();return St(De,{open:e,onOpenChange:t,children:[R(sn,{className:"sr-only",children:"Connect with EntryKit"}),e?St("div",{className:At("relative flex flex-col min-h-[20rem] border-t sm:border","bg-neutral-100 text-neutral-700 border-neutral-300","dark:bg-neutral-800 dark:text-neutral-300 dark:border-neutral-700 dark:divide-neutral-700","links:font-medium links:underline links:underline-offset-4","links:text-black dark:links:text-white","links:decoration-neutral-300 dark:links:decoration-neutral-500 hover:links:decoration-orange-500"),children:[R(xt,{children:R(bt,{})}),R("div",{className:"absolute top-0 right-0",children:R(on,{className:At("pointer-events-auto leading-none p-1 transition","text-neutral-400 hover:text-neutral-600","dark:text-neutral-500 dark:hover:text-neutral-400"),title:"Close",children:R(Ct,{className:"m-0"})})})]}):null]})}import{jsx as dn,jsxs as ln}from"react/jsx-runtime";function cn({config:e,children:t}){return ln(Ee,{config:e,children:[t,dn(Pt,{})]})}import{useAccount as un}from"wagmi";import{twMerge as M}from"tailwind-merge";import{twMerge as Mt}from"tailwind-merge";import{Fragment as pn,jsx as le,jsxs as Nt}from"react/jsx-runtime";function It({address:e}){let{data:t}=te(e),{isSuccess:r}=J(t.avatar);return Nt(pn,{children:[Nt("span",{className:"flex-shrink-0 w-6 h-6 -my-1 -mx-0.5 grid place-items-center",children:[le("img",{src:r?t.avatar:void 0,className:Mt("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",r?"opacity-100":"opacity-0")}),le(A,{className:Mt("col-start-1 row-start-1 text-orange-500","transition duration-300",r?"opacity-0":"opacity-100")})]}),le("span",{className:"flex-grow",children:t.name??(e?le(F,{hex:e}):null)})]})}import{jsx as C,jsxs as Et}from"react/jsx-runtime";var Ht=M("w-60 inline-flex outline-none transition","border border-transparent","text-base leading-none"),mn=M("bg-neutral-100 border-neutral-300 text-black","dark:bg-neutral-800 dark:border-neutral-700 dark:text-white"),fn=M("cursor-pointer outline-none hover:bg-neutral-200 data-[highlighted]:bg-neutral-200 dark:hover:bg-neutral-700");function gn(){let{openAccountModal:e,accountModalOpen:t}=y(),{status:r,address:a}=un();return C(U,{mode:"child",children:r==="connected"||r==="reconnecting"&&a?C("button",{type:"button",className:M(Ht,mn,fn,"p-3"),onClick:e,children:C("span",{className:"flex-grow inline-flex gap-2.5 items-center text-left font-medium",children:C(It,{address:a})})},"connected"):Et("button",{type:"button",className:M(Ht,"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:saturate-50"),"aria-busy":t,onClick:e,children:[Et("span",{className:"pointer-events-none inline-grid place-items-center -ml-3",children:[C("span",{className:M("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:C(A,{})}),C("span",{"aria-hidden":!0,className:M("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:C(b,{})})]}),C("span",{className:"font-medium",children:"Sign in"})]},"sign in")})}import{useConnectorClient as yn}from"wagmi";import{useMemo as hn}from"react";function bn(){let{chainId:e}=p(),{data:t,error:r}=yn({chainId:e});r&&console.error("Error retrieving user client",r);let a=H(t?.account.address),n=ce(t);return hn(()=>{if(n.every(i=>i.isComplete))return a.data},[a.data,n])}import{connectorsForWallets as xn,getDefaultWallets as vn}from"@rainbow-me/rainbowkit";import{createConfig as kn}from"wagmi";var wn=`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>')}`,pe=e=>()=>({id:"passkey",name:"Passkey",iconUrl:wn,iconBackground:"#fec",createConnector:t=>r=>({...N(e)(r),...t})});function Cn(e){let{wallets:t}=vn(),r=[{groupName:"Recommended",wallets:[pe({chainId:e.chainId,bundlerTransport:e.bundlerTransport,paymasterAddress:e.paymasterAddress})]},...t],a=xn(r,{appName:e.appInfo.name,projectId:e.walletConnectProjectId});return kn({connectors:a,chains:e.chains,transports:e.transports})}function Vl(e){return e!=null&&"__isCoinbaseSmartAccount"in e&&e.__isCoinbaseSmartAccount===!0}var ql=new Set([17420,31337]);function Yl(e){return t=>{let{request:r,...a}=e(t),n=null,i=new Map;return{...a,async request(o){if(o.method==="eth_chainId")return n??(n=await r(o));if(o.method==="eth_getTransactionReceipt"){let d=o.params[0],l=i.get(d)??await r(o);return i.has(d)||i.set(d,l),l}if(o.method==="eth_sendUserOperation")return(await r({...o,method:"pimlico_sendUserOperationNow"})).userOpHash;if(o.method==="eth_getUserOperationReceipt"){let d=o.params[0],l=i.get(d)??await r(o);return i.has(d)||i.set(d,l),l}return r(o)}}}}import{connectorsForWallets as Sn}from"@rainbow-me/rainbowkit";import{getDefaultWallets as An}from"@rainbow-me/rainbowkit";function Rt(e){let{wallets:t}=An();return[{groupName:"Recommended",wallets:[pe({chainId:e.chainId,bundlerTransport:e.bundlerTransport,paymasterAddress:e.paymasterAddress})]},...t]}function rp({wallets:e,...t}){return Sn(e??Rt(t),{appName:t.appInfo?.name??document.title,projectId:t.walletConnectProjectId})}export{gn as AccountButton,cn as EntryKitProvider,Y as abi,Cn as createWagmiConfig,rp as getConnectors,Rt as getWallets,Vl as isCoinbaseSmartAccount,N as passkeyConnector,pe as passkeyWallet,q as sign,X as toCoinbaseSmartAccount,ye as toReplaySafeHash,vr as toWebAuthnSignature,y as useAccountModal,bn as useAppAccountClient,p as useEntryKitConfig,Yl as wiresaw,ql as wiresawChainIds,K as wrapSignature};
1570
1570
  //# sourceMappingURL=internal.js.map