@latticexyz/entrykit 2.2.12-entrykit-097d5f20d7d6decda06c7bb4fbabbb0a75220317 → 2.2.12-entrykit-4d17bb90b157a8c5b0d88d833b396840cf380b30

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