@latticexyz/entrykit 2.2.15-entrykit-ad6909b56c09bc9a673d077aac65b68217cf841b → 2.2.15-entrykit-08b84b5d85eb753628e93ed161a084e0eab53560

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.
@@ -2,6 +2,7 @@ import { Transport, Chain, Client, Account, Address as Address$1, EIP1193Request
2
2
  import { Address } from 'viem/accounts';
3
3
  import * as react_jsx_runtime from 'react/jsx-runtime';
4
4
  import { ReactNode } from 'react';
5
+ import { UseQueryResult } from '@tanstack/react-query';
5
6
  import * as wagmi from 'wagmi';
6
7
  import { CreateConnectorFn } from 'wagmi';
7
8
  import { Wallet, WalletList } from '@rainbow-me/rainbowkit';
@@ -13,7 +14,7 @@ type EntryKitConfig = {
13
14
  /**
14
15
  * The chain ID where the world is deployed.
15
16
  * There must be a matching chain entry in wagmi's configured chains.
16
- * The app account client returned by EntryKit will be tied to this chain.
17
+ * The session client returned by EntryKit will be tied to this chain.
17
18
  */
18
19
  readonly chainId: number;
19
20
  /**
@@ -62,7 +63,7 @@ type EntryKitConfig = {
62
63
  };
63
64
 
64
65
  type ConnectedClient<chain extends Chain = Chain> = Client<Transport, chain, Account>;
65
- type AppAccountClient<chain extends Chain = Chain> = ConnectedClient<chain> & {
66
+ type SessionClient<chain extends Chain = Chain> = ConnectedClient<chain> & {
66
67
  readonly userAddress: Address$1;
67
68
  };
68
69
 
@@ -84,7 +85,7 @@ type UseAccountModalResult = {
84
85
  };
85
86
  declare function useAccountModal(): UseAccountModalResult;
86
87
 
87
- declare function usePreparedAppAccountClient(): AppAccountClient | undefined;
88
+ declare function useSessionClientReady(): UseQueryResult<SessionClient | undefined>;
88
89
 
89
90
  type CreateWagmiConfigOptions<chains extends readonly [Chain, ...Chain[]] = readonly [Chain, ...Chain[]], transports extends Record<chains[number]["id"], Transport> = Record<chains[number]["id"], Transport>> = Pick<EntryKitConfig, "chainId" | "bundlerTransport" | "paymasterAddress"> & {
90
91
  readonly chains: chains;
@@ -778,4 +779,4 @@ declare function getConnectors({ wallets, ...config }: EntryKitConfig & {
778
779
 
779
780
  declare function getWallets(config: EntryKitConfig): WalletList;
780
781
 
781
- export { AccountButton, AppAccountClient, CoinbaseSmartAccountImplementation, ConnectedClient, CreatePasskeyConnector, CreateWagmiConfigOptions, EntryKitConfig, EntryKitProvider, PasskeyConnector, PasskeyConnectorOptions, PasskeyConnectorProperties, PasskeyProvider, PasskeyWalletOptions, ToCoinbaseSmartAccountParameters, ToCoinbaseSmartAccountReturnType, abi, createWagmiConfig, getConnectors, getWallets, isCoinbaseSmartAccount, passkeyConnector, passkeyWallet, sign, toCoinbaseSmartAccount, toReplaySafeHash, toWebAuthnSignature, useAccountModal, usePreparedAppAccountClient as useAppAccountClient, useEntryKitConfig, wiresaw, wiresawChainIds, wrapSignature };
782
+ export { AccountButton, CoinbaseSmartAccountImplementation, ConnectedClient, CreatePasskeyConnector, CreateWagmiConfigOptions, EntryKitConfig, EntryKitProvider, PasskeyConnector, PasskeyConnectorOptions, PasskeyConnectorProperties, PasskeyProvider, PasskeyWalletOptions, SessionClient, ToCoinbaseSmartAccountParameters, ToCoinbaseSmartAccountReturnType, abi, createWagmiConfig, getConnectors, getWallets, isCoinbaseSmartAccount, passkeyConnector, passkeyWallet, sign, toCoinbaseSmartAccount, toReplaySafeHash, toWebAuthnSignature, useAccountModal, useEntryKitConfig, useSessionClientReady as useSessionClient, wiresaw, wiresawChainIds, wrapSignature };
@@ -1,4 +1,4 @@
1
- import{Root as jt,DialogPortal as Jt,DialogContent as Zt}from"@radix-ui/react-dialog";import{forwardRef as Vt,useEffect as _t,useRef as Ke,useState as ze}from"react";import qt from"react-dom";var Me=`*, ::before, ::after {
1
+ import{Root as tn,DialogPortal as nn,DialogContent as rn}from"@radix-ui/react-dialog";import{forwardRef as Yt,useEffect as Xt,useRef as Ke,useState as ze}from"react";import $t from"react-dom";var Me=`*, ::before, ::after {
2
2
  --tw-border-spacing-x: 0;
3
3
  --tw-border-spacing-y: 0;
4
4
  --tw-translate-x: 0;
@@ -1295,11 +1295,6 @@ video {
1295
1295
  pointer-events: none;
1296
1296
  }
1297
1297
 
1298
- .aria-busy\\:saturate-50[aria-busy="true"] {
1299
- --tw-saturate: saturate(.5);
1300
- filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
1301
- }
1302
-
1303
1298
  .aria-disabled\\:pointer-events-none[aria-disabled="true"] {
1304
1299
  pointer-events: none;
1305
1300
  }
@@ -1427,7 +1422,7 @@ video {
1427
1422
  --tw-text-opacity: 1;
1428
1423
  color: rgb(255 255 255 / var(--tw-text-opacity));
1429
1424
  }
1430
- `;import{useResizeObserver as Qt}from"usehooks-ts";import{mergeRefs as Yt}from"react-merge-refs";import{createContext as Lt,useContext as Bt}from"react";import{jsx as Ft}from"react/jsx-runtime";var Ie=Lt(null);function He({frame:e,children:t}){if(Bt(Ie))throw new Error("`FrameProvider` can only be used once.");return Ft(Ie.Provider,{value:{frame:e},children:t})}import{useMediaQuery as Gt}from"usehooks-ts";import"@rainbow-me/rainbowkit/styles.css";import{createContext as Wt,useContext as Re}from"react";import{RainbowKitProvider as Ut,lightTheme as Ne,midnightTheme as Ee}from"@rainbow-me/rainbowkit";import{jsx as Te}from"react/jsx-runtime";var se=Wt(null);function Oe({config:e,children:t}){if(Re(se))throw new Error("`EntryKitProvider` can only be used once.");return Te(Ut,{initialChain:e.chainId,appInfo:{appName:e.appInfo?.name},theme:e.theme==="light"?Ne({borderRadius:"none"}):e.theme==="dark"?Ee({borderRadius:"none"}):{lightMode:Ne({borderRadius:"none"}),darkMode:Ee({borderRadius:"none"})},children:Te(se.Provider,{value:e,children:t})})}function u(){let e=Re(se);if(!e)throw new Error("`useEntryKitConfig` can only be used within a `EntryKitProvider`.");return e}function De(){let{theme:e}=u(),t=Gt("(prefers-color-scheme: dark)");return e??(t?"dark":"light")}import{jsx as I,jsxs as $t}from"react/jsx-runtime";function Xt({onSize:e,...t}){let n=Ke(null);return Qt({ref:n,onResize:e}),I("div",{ref:n,...t,style:{...t.style,display:"inline-grid"}})}var K=Vt(function({mode:t,children:n},r){let a=Ke(null),[i,s]=ze(!1),o=i?a.current:null,[l,c]=ze({width:void 0,height:void 0}),d=o?.contentDocument,p=De();_t(()=>{d&&d.body.setAttribute("data-theme",p)},[d,p]);let f=t==="modal"?{all:"unset",display:"block",position:"fixed",inset:"0",width:"100%",height:"100%",zIndex:"2147483646"}:l.width&&l.height?{all:"unset",display:"inline-grid",width:`${l.width}px`,height:`${l.height}px`}:{all:"unset",display:"block",position:"fixed",inset:"0",width:"100%",height:"100%",opacity:0,pointerEvents:"none"};return I("iframe",{ref:Yt([r,a]),style:f,onLoad:()=>s(!0),srcDoc:"<!doctype html><title>\u2026</title>",children:d?qt.createPortal($t(He,{frame:o,children:[I("div",{children:t==="modal"?n:I(Xt,{onSize:c,children:n})}),I("style",{dangerouslySetInnerHTML:{__html:Me}})]}),d.body):null})});import{twMerge as Le}from"tailwind-merge";import{jsx as k,jsxs as en}from"react/jsx-runtime";function Be({open:e,onOpenChange:t,children:n}){return k(jt,{open:e,onOpenChange:t,children:k(Jt,{children:en(K,{mode:"modal",children:[k("div",{className:Le("fixed inset-0","bg-neutral-800/85","animate-in animate-duration-300 fade-in")}),k("div",{className:Le("fixed inset-0","grid items-end sm:items-center","animate-in animate-duration-300 fade-in slide-in-from-bottom-16"),children:k("div",{children:k(Zt,{className:"outline-none w-full max-w-[26rem] mx-auto","aria-describedby":void 0,onOpenAutoFocus:r=>{r.preventDefault()},children:n})})})]})})})}import{useCallback as ce,useMemo as tn}from"react";import{useStore as nn}from"zustand";import{createStore as rn}from"zustand/vanilla";var L=rn(()=>({open:!1}));function y(){let e=nn(L,a=>a.open),t=ce(()=>{L.setState({open:!0})},[]),n=ce(()=>{L.setState({open:!1})},[]),r=ce(a=>{L.setState({open:a})},[]);return tn(()=>({accountModalOpen:e,openAccountModal:t,closeAccountModal:n,toggleAccountModal:r}),[e,t,n,r])}import{twMerge as Mt}from"tailwind-merge";import{useConnectorClient as ea}from"wagmi";import{useAccount as rr}from"wagmi";import{twMerge as B}from"tailwind-merge";import{twMerge as an}from"tailwind-merge";import{jsx as Fe,jsxs as on}from"react/jsx-runtime";function x({className:e,...t}){return on("svg",{className:an("-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:[Fe("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),Fe("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 H,jsxs as cn}from"react/jsx-runtime";var sn=({variant:e="primary"}={})=>B("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:B("bg-neutral-700 text-white"),secondary:B("bg-neutral-800 text-white")}[e]),g=({pending:e,variant:t,type:n,className:r,children:a,disabled:i,...s})=>H("button",{type:n||"button",className:B(sn({variant:t,pending:e}),r),"aria-busy":e,"aria-disabled":i,disabled:i||e,...s,children:cn("span",{className:"grid grid-cols-[1fr_auto_1fr] gap-2",children:[H("span",{className:"flex items-center justify-end text-[.75em]",children:H("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:H(x,{})})}),H("span",{children:a})]})});import{useConnectModal as ar}from"@rainbow-me/rainbowkit";import{useMutation as et}from"@tanstack/react-query";import{useConnectors as Jn}from"wagmi";import{createClient as Vn,custom as _n,getAddress as qn,numberToHex as $e,SwitchChainError as Qn}from"viem";import{ChainNotConfiguredError as Yn,createConnector as Xn}from"wagmi";import{createStore as dn}from"zustand/vanilla";import{persist as ln}from"zustand/middleware";var m=dn(ln(()=>({publicKeys:{},addresses:{},activeCredential:null}),{name:"mud:passkey:cache"}));function pn(e){e.key===m.persist.getOptions().name&&m.persist.rehydrate()}window.addEventListener("storage",pn);import{smartAccountActions as $n}from"permissionless/clients";import{toWebAuthnAccount as Pn}from"viem/account-abstraction";import{BaseError as un}from"abitype";import{pad as mn,encodeFunctionData as de,hashMessage as fn,hashTypedData as Ue,encodeAbiParameters as Ge,stringToHex as yn,size as gn,encodePacked as hn,parseSignature as wn}from"viem";import{entryPoint07Abi as bn,entryPoint07Address as xn,getUserOperationHash as vn,toSmartAccount as Cn}from"viem/account-abstraction";import{readContract as We}from"viem/actions";import{parseSignature as kn}from"webauthn-p256";async function U(e){let{client:t,owners:n,nonce:r=0n}=e,a=e.address,i={abi:bn,address:xn,version:"0.7"},s={abi:Sn,address:"0x356336adA1619BeC1Ae4E6D94Dd9c0490DA414a8"};if(!n.length)throw new Error("`owners` must have at least one account.");function o(d){return d.type==="webAuthn"?d.publicKey:mn(d.address)}let l=e.signer??n[0],c=n.indexOf(l);if(c===-1)throw new Error("`signer` must be one of `owners`.");return Cn({client:t,entryPoint:i,extend:{__isCoinbaseSmartAccount:!0,abi:W,factory:s,signer:l},async encodeCalls(d){return d.length===1?de({abi:W,functionName:"execute",args:[d[0].to,d[0].value??0n,d[0].data??"0x"]}):de({abi:W,functionName:"executeBatch",args:[d.map(p=>({data:p.data??"0x",target:p.to,value:p.value??0n}))]})},async getAddress(){return a??=await We(t,{...s,functionName:"getAddress",args:[n.map(o),r]}),a},async getFactoryArgs(){let d=de({abi:s.abi,functionName:"createAccount",args:[n.map(o),r]});return{factory:s.address,factoryData:d}},async getStubSignature(){return l.type==="webAuthn"?"0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000000001949fc7c88032b9fcb5f6efc7a7b8c63668eae9871b765e23123bb473ff57aa831a7c0d9276168ebcc29f2875a0239cffdf2a9cd1c2007c5c77c071db9264df1d000000000000000000000000000000000000000000000000000000000000002549960de5880e8c687434170f6476605b8fe4aeb9a28632c7995cf3ba831d97630500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008a7b2274797065223a22776562617574686e2e676574222c226368616c6c656e6765223a2273496a396e6164474850596759334b7156384f7a4a666c726275504b474f716d59576f4d57516869467773222c226f726967696e223a2268747470733a2f2f7369676e2e636f696e626173652e636f6d222c2263726f73734f726967696e223a66616c73657d00000000000000000000000000000000000000000000":N({signature:"0xfffffffffffffffffffffffffffffff0000000000000000000000000000000007aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1c",ownerIndex:c})},async sign(d){let p=await this.getAddress(),f=le({address:p,chainId:t.chain.id,hash:d.hash}),h=await F({hash:f,owner:l});return N({signature:h,ownerIndex:c})},async signMessage(d){let{message:p}=d,f=await this.getAddress(),h=le({address:f,chainId:t.chain.id,hash:fn(p)}),M=await F({hash:h,owner:l});return N({signature:M,ownerIndex:c})},async signTypedData(d){let{domain:p,types:f,primaryType:h,message:M}=d,ie=await this.getAddress(),Dt=le({address:ie,chainId:t.chain.id,hash:Ue({domain:p,message:M,primaryType:h,types:f})}),zt=await F({hash:Dt,owner:l});return N({signature:zt,ownerIndex:c})},async signUserOperation(d){let{chainId:p=t.chain.id,...f}=d,h=await this.getAddress(),M=vn({chainId:p,entryPointAddress:i.address,entryPointVersion:i.version,userOperation:{...f,sender:h}}),ie=await F({hash:M,owner:l});return N({signature:ie,ownerIndex:c})},userOperation:{async estimateGas(d){if(l.type==="webAuthn")return{verificationGasLimit:BigInt(Math.max(Number(d.verificationGasLimit??0n),8e5))}}},async isOwner(d){return await We(t,{abi:W,address:await this.getAddress(),functionName:"isOwnerBytes",args:[o(d)]})}})}async function F({hash:e,owner:t}){if(t.type==="webAuthn"){let{signature:n,webauthn:r}=await t.sign({hash:e});return An({signature:n,webauthn:r})}if(t.sign)return t.sign({hash:e});throw new un("`owner` does not support raw sign.")}function le({address:e,chainId:t,hash:n}){return Ue({domain:{chainId:t,name:"Coinbase Smart Wallet",verifyingContract:e,version:"1"},types:{CoinbaseSmartWalletMessage:[{name:"hash",type:"bytes32"}]},primaryType:"CoinbaseSmartWalletMessage",message:{hash:n}})}function An({webauthn:e,signature:t}){let{r:n,s:r}=kn(t);return Ge([{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:yn(e.clientDataJSON),challengeIndex:BigInt(e.challengeIndex),typeIndex:BigInt(e.typeIndex),r:n,s:r}])}function N(e){let{ownerIndex:t}=e,n=(()=>{if(gn(e.signature)!==65)return e.signature;let r=wn(e.signature);return hn(["bytes32","bytes32","uint8"],[r.r,r.s,r.yParity===0?27:28])})();return Ge([{components:[{name:"ownerIndex",type:"uint8"},{name:"signatureData",type:"bytes"}],type:"tuple"}],[{ownerIndex:t,signatureData:n}])}var W=[{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"}],Sn=[{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 E(e,t){let{publicKeys:n}=m.getState(),r=n[t];if(!r)throw new Error("No public key found for passkey credential.");let i=[Pn({credential:{id:t,publicKey:r}})];return await U({client:e,owners:i})}import{bytesToHex as Dn,hashMessage as zn}from"viem";import{sign as Kn}from"webauthn-p256";import{bytesToHex as Mn,hexToBytes as Ve}from"webauthn-p256";import{concatBytes as In,utf8ToBytes as Hn}from"@noble/curves/abstract/utils";async function G(e){let{authenticatorData:t,challengeIndex:n,clientDataJSON:r,typeIndex:a,userVerificationRequired:i}=e,s=a||r.indexOf('"type"'),o=n||r.indexOf('"challenge"'),l=Ve(t);if(l.length<37)throw new Error("Invalid authenticatorData");let c=l[32];if((c&1)!==1)throw new Error("Invalid authenticatorData");if(i&&(c&4)!==4)throw new Error("Invalid authenticatorData");if((c&8)!==8&&(c&16)===16)throw new Error("Invalid authenticatorData");let d='"type":"webauthn.get"';if(d!==r.slice(Number(s),d.length+1))throw new Error("Invalid clientDataJSON");if(!r.slice(Number(o)).match(/^"challenge":"(.*?)"/))throw new Error("Invalid clientDataJSON");let f=new Uint8Array(await crypto.subtle.digest("SHA-256",Hn(r))),h=new Uint8Array(await crypto.subtle.digest("SHA-256",In(Ve(t),f)));return Mn(h)}import{sign as En}from"webauthn-p256";import{parseSignature as Nn,serializePublicKey as _e}from"webauthn-p256";import{secp256r1 as qe}from"@noble/curves/p256";function pe(e){let{r:t,s:n}=Nn(e.signatureHex),r=new qe.Signature(t,n).addRecoveryBit(1).recoverPublicKey(e.messageHash.slice(2)),a=new qe.Signature(t,n).addRecoveryBit(0).recoverPublicKey(e.messageHash.slice(2));return[_e(r),_e(a)]}import{hashMessage as Tn}from"viem";function Rn([e,t]){return On([...pe(e),...pe(t)])}async function Qe(e){let t=Tn(e.signatureHex),{signature:n,webauthn:r,raw:a}=await En({credentialId:e.credentialId,hash:t}),i=await G(r),s=Rn([e,{signatureHex:n,messageHash:i}]);if(s)return{publicKey:s,credential:a}}function On(e){let t=new Set;for(let n of e){if(t.has(n))return n;t.add(n)}}async function ue(){let e=Dn(crypto.getRandomValues(new Uint8Array(256))),t=zn(e),{signature:n,webauthn:r,raw:a}=await Kn({hash:t}),i=await(async()=>{let s=m.getState().publicKeys[a.id];if(s)return s;let o=await G(r),l=await Qe({credentialId:a.id,messageHash:o,signatureHex:n});if(!l)throw new Error("recovery failed");if(l.credential.id!==a.id)throw new Error("wrong credential");return m.setState(c=>({publicKeys:{...c.publicKeys,[a.id]:l.publicKey}})),l.publicKey})();return console.log("recovered passkey",a.id,i),m.setState(()=>({activeCredential:a.id})),{id:a.id,publicKey:i,raw:a}}import{createCredential as Ln}from"webauthn-p256";async function Ye(){let e=await Ln({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 Bn}from"@latticexyz/common";import{parseAbi as Fn}from"viem";import Wn from"@latticexyz/world/mud.config";var V={pollingInterval:250},T=Bn({type:"system",namespace:"",name:"unlimited"}),Xe=Wn.namespaces.world.tables,me=Fn(["function registerDelegation(address delegatee, bytes32 delegationControlId, bytes initCallData)"]);import{createBundlerClient as Un}from"viem/account-abstraction";var Gn=new Set([31337,17420,17069,690]);function _({paymasterAddress:e,...t}){let n=t.chain??t.client?.chain;return Un({...V,paymaster:{getPaymasterData:async()=>({paymaster:e,paymasterData:"0x"})},userOperation:{estimateFeesPerGas:n&&Gn.has(n.id)?async()=>({maxFeePerGas:100000n,maxPriorityFeePerGas:0n}):void 0},...t})}import{observer as jn}from"@latticexyz/explorer/observer";A.type="passkey";function A({chainId:e,bundlerTransport:t,paymasterAddress:n,explorerUrl:r}){return Xn(a=>{if(!a.transports)throw new Error("Wagmi must be configured with transports to use the passkey connector.");let i=a.chains.find(c=>c.id===e);if(!i)throw new Error(`Could not find configured chain for chain ID ${e}.`);let s=a.transports[i.id];if(!s)throw new Error(`Could not find configured transport for chain ID ${e}.`);let o=Vn({...V,chain:i,transport:s}),l=m.getState().activeCredential!=null;return{id:"passkey",type:A.type,name:"Passkey",async createPasskey(){let{id:c}=await Ye(),d=await E(o,c);this.onAccountsChanged([d.address]),this.onConnect?.({chainId:$e(e)})},async reusePasskey(){let{id:c}=await ue(),d=await E(o,c);this.onAccountsChanged([d.address]),this.onConnect?.({chainId:$e(e)})},hasPasskey(){return Object.keys(m.getState().publicKeys).length>0},async connect(c){if(console.log("connect"),c?.chainId!=null&&c.chainId!==e)throw new Error(`Can't connect to chain ${c.chainId}. Passkey connector is bound to chain ${e}.`);!m.getState().activeCredential&&!c?.isReconnecting&&await ue();let d=await this.getAccounts();return l=d.length>0,{accounts:d,chainId:e}},async disconnect(){console.log("disconnect"),l=!1,m.setState({activeCredential:null})},async getAccounts(){console.log("getAccounts");let c=m.getState().activeCredential;if(!c)return[];try{console.log("getting account for credential",c);let d=await E(o,c);return console.log("got account",d),[d.address]}catch{console.log("could not get address for credential ID",c)}return[]},async getChainId(){return e},async isAuthorized(){return console.log("isAuthorized"),l?(await this.getAccounts()).length>0:!1},async switchChain(c){if(c.chainId!==e)throw new Error(`Can't connect to chain ${c.chainId}. Passkey connector is bound to chain ${e}.`);let d=a.chains.find(p=>p.id===c.chainId);if(!d)throw new Qn(new Yn);return d},onAccountsChanged(c){console.log("onAccountsChanged"),c.length>0?a.emitter.emit("change",{accounts:c.map(d=>qn(d))}):this.onDisconnect()},onChainChanged(c){console.log("onChainChanged"),a.emitter.emit("change",{chainId:Number(c)})},async onConnect(c){console.log("onConnect");let d=await this.getAccounts();a.emitter.emit("connect",{accounts:d,chainId:e})},async onDisconnect(c){console.log("onDisconnect"),a.emitter.emit("disconnect"),l=!1},async getClient(c){console.log("passkeyConnector.getClient",c);let d=m.getState().activeCredential;if(!d)throw new Error("Not connected.");let p=await E(o,d);return _({paymasterAddress:n,transport:t,client:o,account:p}).extend($n()).extend(f=>r?jn({explorerUrl:r})(f):{})},async getProvider(c){return _n({request:o.transport.request})({retryCount:0})}}})}function je(){let t=Jn().find(n=>n.type===A.type);if(!t)throw new Error("Could not find passkey connector. Did you configure Wagmi with the EntryKit passkey connector or passkey wallet?");return t}import{twMerge as Zn}from"tailwind-merge";import{jsx as fe,jsxs as er}from"react/jsx-runtime";function v({className:e,...t}){return er("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 8 8",fill:"currentColor",shapeRendering:"crispEdges",className:Zn("-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 Je(){let{appInfo:e}=u(),t=e?.name??document.title,n=location.host,r=e?.icon??document.querySelector("link[rel~='icon']")?.getAttribute("href")??"/favico.ico",a=e?.image;return{appName:t,appOrigin:n,appIcon:r,appImage:a}}import{useQuery as tr}from"@tanstack/react-query";function q(e){return tr({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.
1425
+ `;import{useResizeObserver as jt}from"usehooks-ts";import{mergeRefs as Jt}from"react-merge-refs";import{createContext as Wt,useContext as Ut}from"react";import{jsx as qt}from"react/jsx-runtime";var Ie=Wt(null);function Ne({frame:e,children:t}){if(Ut(Ie))throw new Error("`FrameProvider` can only be used once.");return qt(Ie.Provider,{value:{frame:e},children:t})}import{useMediaQuery as _t}from"usehooks-ts";import"@rainbow-me/rainbowkit/styles.css";import{createContext as Vt,useContext as He}from"react";import{RainbowKitProvider as Qt,lightTheme as Te,midnightTheme as Ee}from"@rainbow-me/rainbowkit";import{jsx as Oe}from"react/jsx-runtime";var ce=Vt(null);function Re({config:e,children:t}){if(He(ce))throw new Error("`EntryKitProvider` can only be used once.");return Oe(Qt,{initialChain:e.chainId,appInfo:{appName:e.appInfo?.name},theme:e.theme==="light"?Te({borderRadius:"none"}):e.theme==="dark"?Ee({borderRadius:"none"}):{lightMode:Te({borderRadius:"none"}),darkMode:Ee({borderRadius:"none"})},children:Oe(ce.Provider,{value:e,children:t})})}function p(){let e=He(ce);if(!e)throw new Error("`useEntryKitConfig` can only be used within a `EntryKitProvider`.");return e}function De(){let{theme:e}=p(),t=_t("(prefers-color-scheme: dark)");return e??(t?"dark":"light")}import{jsx as N,jsxs as en}from"react/jsx-runtime";function Zt({onSize:e,...t}){let n=Ke(null);return jt({ref:n,onResize:e}),N("div",{ref:n,...t,style:{...t.style,display:"inline-grid"}})}var L=Yt(function({mode:t,children:n},r){let o=Ke(null),[i,s]=ze(!1),a=i?o.current:null,[l,c]=ze({width:void 0,height:void 0}),d=a?.contentDocument,u=De();Xt(()=>{d&&d.body.setAttribute("data-theme",u)},[d,u]);let f=t==="modal"?{all:"unset",display:"block",position:"fixed",inset:"0",width:"100%",height:"100%",zIndex:"2147483646"}:l.width&&l.height?{all:"unset",display:"inline-grid",width:`${l.width}px`,height:`${l.height}px`}:{all:"unset",display:"block",position:"fixed",inset:"0",width:"100%",height:"100%",opacity:0,pointerEvents:"none"};return N("iframe",{ref:Jt([r,o]),style:f,onLoad:()=>s(!0),srcDoc:"<!doctype html><title>\u2026</title>",children:d?$t.createPortal(en(Ne,{frame:a,children:[N("div",{children:t==="modal"?n:N(Zt,{onSize:c,children:n})}),N("style",{dangerouslySetInnerHTML:{__html:Me}})]}),d.body):null})});import{twMerge as Le}from"tailwind-merge";import{jsx as k,jsxs as on}from"react/jsx-runtime";function Be({open:e,onOpenChange:t,children:n}){return k(tn,{open:e,onOpenChange:t,children:k(nn,{children:on(L,{mode:"modal",children:[k("div",{className:Le("fixed inset-0","bg-neutral-800/85","animate-in animate-duration-300 fade-in")}),k("div",{className:Le("fixed inset-0","grid items-end sm:items-center","animate-in animate-duration-300 fade-in slide-in-from-bottom-16"),children:k("div",{children:k(rn,{className:"outline-none w-full max-w-[26rem] mx-auto","aria-describedby":void 0,onOpenAutoFocus:r=>{r.preventDefault()},children:n})})})]})})})}import{useCallback as de,useMemo as an}from"react";import{useStore as sn}from"zustand";import{createStore as cn}from"zustand/vanilla";var B=cn(()=>({open:!1}));function y(){let e=sn(B,o=>o.open),t=de(()=>{B.setState({open:!0})},[]),n=de(()=>{B.setState({open:!1})},[]),r=de(o=>{B.setState({open:o})},[]);return an(()=>({accountModalOpen:e,openAccountModal:t,closeAccountModal:n,toggleAccountModal:r}),[e,t,n,r])}import{twMerge as Nt}from"tailwind-merge";import{useConnectorClient as ro}from"wagmi";import{useAccount as sr}from"wagmi";import{twMerge as F}from"tailwind-merge";import{twMerge as dn}from"tailwind-merge";import{jsx as Fe,jsxs as ln}from"react/jsx-runtime";function x({className:e,...t}){return ln("svg",{className:dn("-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:[Fe("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),Fe("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 T,jsxs as un}from"react/jsx-runtime";var pn=({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:o,disabled:i,...s})=>T("button",{type:n||"button",className:F(pn({variant:t,pending:e}),r),"aria-busy":e,"aria-disabled":i,disabled:i||e,...s,children:un("span",{className:"grid grid-cols-[1fr_auto_1fr] gap-2",children:[T("span",{className:"flex items-center justify-end text-[.75em]",children:T("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:T(x,{})})}),T("span",{children:o})]})});import{useConnectModal as cr}from"@rainbow-me/rainbowkit";import{useMutation as et}from"@tanstack/react-query";import{useConnectors as nr}from"wagmi";import{createClient as Yn,custom as Xn,getAddress as $n,numberToHex as $e,SwitchChainError as jn}from"viem";import{ChainNotConfiguredError as Jn,createConnector as Zn}from"wagmi";import{createStore as mn}from"zustand/vanilla";import{persist as fn}from"zustand/middleware";var m=mn(fn(()=>({publicKeys:{},addresses:{},activeCredential:null}),{name:"mud:passkey:cache"}));function yn(e){e.key===m.persist.getOptions().name&&m.persist.rehydrate()}window.addEventListener("storage",yn);import{smartAccountActions as er}from"permissionless/clients";import{toWebAuthnAccount as Tn}from"viem/account-abstraction";import{BaseError as gn}from"abitype";import{pad as hn,encodeFunctionData as le,hashMessage as wn,hashTypedData as We,encodeAbiParameters as Ue,stringToHex as bn,size as xn,encodePacked as vn,parseSignature as Cn}from"viem";import{entryPoint07Abi as kn,entryPoint07Address as An,getUserOperationHash as Sn,toSmartAccount as Pn}from"viem/account-abstraction";import{readContract as Ge}from"viem/actions";import{parseSignature as Mn}from"webauthn-p256";async function U(e){let{client:t,owners:n,nonce:r=0n}=e,o=e.address,i={abi:kn,address:An,version:"0.7"},s={abi:Nn,address:"0x356336adA1619BeC1Ae4E6D94Dd9c0490DA414a8"};if(!n.length)throw new Error("`owners` must have at least one account.");function a(d){return d.type==="webAuthn"?d.publicKey:hn(d.address)}let l=e.signer??n[0],c=n.indexOf(l);if(c===-1)throw new Error("`signer` must be one of `owners`.");return Pn({client:t,entryPoint:i,extend:{__isCoinbaseSmartAccount:!0,abi:W,factory:s,signer:l},async encodeCalls(d){return d.length===1?le({abi:W,functionName:"execute",args:[d[0].to,d[0].value??0n,d[0].data??"0x"]}):le({abi:W,functionName:"executeBatch",args:[d.map(u=>({data:u.data??"0x",target:u.to,value:u.value??0n}))]})},async getAddress(){return o??=await Ge(t,{...s,functionName:"getAddress",args:[n.map(a),r]}),o},async getFactoryArgs(){let d=le({abi:s.abi,functionName:"createAccount",args:[n.map(a),r]});return{factory:s.address,factoryData:d}},async getStubSignature(){return l.type==="webAuthn"?"0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000000001949fc7c88032b9fcb5f6efc7a7b8c63668eae9871b765e23123bb473ff57aa831a7c0d9276168ebcc29f2875a0239cffdf2a9cd1c2007c5c77c071db9264df1d000000000000000000000000000000000000000000000000000000000000002549960de5880e8c687434170f6476605b8fe4aeb9a28632c7995cf3ba831d97630500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008a7b2274797065223a22776562617574686e2e676574222c226368616c6c656e6765223a2273496a396e6164474850596759334b7156384f7a4a666c726275504b474f716d59576f4d57516869467773222c226f726967696e223a2268747470733a2f2f7369676e2e636f696e626173652e636f6d222c2263726f73734f726967696e223a66616c73657d00000000000000000000000000000000000000000000":E({signature:"0xfffffffffffffffffffffffffffffff0000000000000000000000000000000007aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1c",ownerIndex:c})},async sign(d){let u=await this.getAddress(),f=pe({address:u,chainId:t.chain.id,hash:d.hash}),h=await G({hash:f,owner:l});return E({signature:h,ownerIndex:c})},async signMessage(d){let{message:u}=d,f=await this.getAddress(),h=pe({address:f,chainId:t.chain.id,hash:wn(u)}),I=await G({hash:h,owner:l});return E({signature:I,ownerIndex:c})},async signTypedData(d){let{domain:u,types:f,primaryType:h,message:I}=d,se=await this.getAddress(),Bt=pe({address:se,chainId:t.chain.id,hash:We({domain:u,message:I,primaryType:h,types:f})}),Ft=await G({hash:Bt,owner:l});return E({signature:Ft,ownerIndex:c})},async signUserOperation(d){let{chainId:u=t.chain.id,...f}=d,h=await this.getAddress(),I=Sn({chainId:u,entryPointAddress:i.address,entryPointVersion:i.version,userOperation:{...f,sender:h}}),se=await G({hash:I,owner:l});return E({signature:se,ownerIndex:c})},userOperation:{async estimateGas(d){if(l.type==="webAuthn")return{verificationGasLimit:BigInt(Math.max(Number(d.verificationGasLimit??0n),8e5))}}},async isOwner(d){return await Ge(t,{abi:W,address:await this.getAddress(),functionName:"isOwnerBytes",args:[a(d)]})}})}async function G({hash:e,owner:t}){if(t.type==="webAuthn"){let{signature:n,webauthn:r}=await t.sign({hash:e});return In({signature:n,webauthn:r})}if(t.sign)return t.sign({hash:e});throw new gn("`owner` does not support raw sign.")}function pe({address:e,chainId:t,hash:n}){return We({domain:{chainId:t,name:"Coinbase Smart Wallet",verifyingContract:e,version:"1"},types:{CoinbaseSmartWalletMessage:[{name:"hash",type:"bytes32"}]},primaryType:"CoinbaseSmartWalletMessage",message:{hash:n}})}function In({webauthn:e,signature:t}){let{r:n,s:r}=Mn(t);return Ue([{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:bn(e.clientDataJSON),challengeIndex:BigInt(e.challengeIndex),typeIndex:BigInt(e.typeIndex),r:n,s:r}])}function E(e){let{ownerIndex:t}=e,n=(()=>{if(xn(e.signature)!==65)return e.signature;let r=Cn(e.signature);return vn(["bytes32","bytes32","uint8"],[r.r,r.s,r.yParity===0?27:28])})();return Ue([{components:[{name:"ownerIndex",type:"uint8"},{name:"signatureData",type:"bytes"}],type:"tuple"}],[{ownerIndex:t,signatureData:n}])}var W=[{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"}],Nn=[{inputs:[{name:"implementation_",type:"address"}],stateMutability:"payable",type:"constructor"},{inputs:[],name:"OwnerRequired",type:"error"},{inputs:[{name:"owners",type:"bytes[]"},{name:"nonce",type:"uint256"}],name:"createAccount",outputs:[{name:"account",type:"address"}],stateMutability:"payable",type:"function"},{inputs:[{name:"owners",type:"bytes[]"},{name:"nonce",type:"uint256"}],name:"getAddress",outputs:[{name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"implementation",outputs:[{name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"initCodeHash",outputs:[{name:"",type:"bytes32"}],stateMutability:"view",type:"function"}];async function O(e,t){let{publicKeys:n}=m.getState(),r=n[t];if(!r)throw new Error("No public key found for passkey credential.");let i=[Tn({credential:{id:t,publicKey:r}})];return await U({client:e,owners:i})}import{bytesToHex as Bn,hashMessage as Fn}from"viem";import{sign as Gn}from"webauthn-p256";import{bytesToHex as En,hexToBytes as qe}from"webauthn-p256";import{concatBytes as On,utf8ToBytes as Hn}from"@noble/curves/abstract/utils";async function q(e){let{authenticatorData:t,challengeIndex:n,clientDataJSON:r,typeIndex:o,userVerificationRequired:i}=e,s=o||r.indexOf('"type"'),a=n||r.indexOf('"challenge"'),l=qe(t);if(l.length<37)throw new Error("Invalid authenticatorData");let c=l[32];if((c&1)!==1)throw new Error("Invalid authenticatorData");if(i&&(c&4)!==4)throw new Error("Invalid authenticatorData");if((c&8)!==8&&(c&16)===16)throw new Error("Invalid authenticatorData");let d='"type":"webauthn.get"';if(d!==r.slice(Number(s),d.length+1))throw new Error("Invalid clientDataJSON");if(!r.slice(Number(a)).match(/^"challenge":"(.*?)"/))throw new Error("Invalid clientDataJSON");let f=new Uint8Array(await crypto.subtle.digest("SHA-256",Hn(r))),h=new Uint8Array(await crypto.subtle.digest("SHA-256",On(qe(t),f)));return En(h)}import{sign as Dn}from"webauthn-p256";import{parseSignature as Rn,serializePublicKey as Ve}from"webauthn-p256";import{secp256r1 as Qe}from"@noble/curves/p256";function ue(e){let{r:t,s:n}=Rn(e.signatureHex),r=new Qe.Signature(t,n).addRecoveryBit(1).recoverPublicKey(e.messageHash.slice(2)),o=new Qe.Signature(t,n).addRecoveryBit(0).recoverPublicKey(e.messageHash.slice(2));return[Ve(r),Ve(o)]}import{hashMessage as zn}from"viem";function Kn([e,t]){return Ln([...ue(e),...ue(t)])}async function _e(e){let t=zn(e.signatureHex),{signature:n,webauthn:r,raw:o}=await Dn({credentialId:e.credentialId,hash:t}),i=await q(r),s=Kn([e,{signatureHex:n,messageHash:i}]);if(s)return{publicKey:s,credential:o}}function Ln(e){let t=new Set;for(let n of e){if(t.has(n))return n;t.add(n)}}async function me(){let e=Bn(crypto.getRandomValues(new Uint8Array(256))),t=Fn(e),{signature:n,webauthn:r,raw:o}=await Gn({hash:t}),i=await(async()=>{let s=m.getState().publicKeys[o.id];if(s)return s;let a=await q(r),l=await _e({credentialId:o.id,messageHash:a,signatureHex:n});if(!l)throw new Error("recovery failed");if(l.credential.id!==o.id)throw new Error("wrong credential");return m.setState(c=>({publicKeys:{...c.publicKeys,[o.id]:l.publicKey}})),l.publicKey})();return console.log("recovered passkey",o.id,i),m.setState(()=>({activeCredential:o.id})),{id:o.id,publicKey:i,raw:o}}import{createCredential as Wn}from"webauthn-p256";async function Ye(){let e=await Wn({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 Un}from"@latticexyz/common";import{parseAbi as qn}from"viem";import Vn from"@latticexyz/world/mud.config";var V={pollingInterval:250},H=Un({type:"system",namespace:"",name:"unlimited"}),Xe=Vn.namespaces.world.tables,fe=qn(["function registerDelegation(address delegatee, bytes32 delegationControlId, bytes initCallData)"]);import{createBundlerClient as Qn}from"viem/account-abstraction";var _n=new Set([31337,17420,17069,690]);function Q({paymasterAddress:e,...t}){let n=t.chain??t.client?.chain;return Qn({...V,paymaster:{getPaymasterData:async()=>({paymaster:e,paymasterData:"0x"})},userOperation:{estimateFeesPerGas:n&&_n.has(n.id)?async()=>({maxFeePerGas:100000n,maxPriorityFeePerGas:0n}):void 0},...t})}import{observer as tr}from"@latticexyz/explorer/observer";A.type="passkey";function A({chainId:e,bundlerTransport:t,paymasterAddress:n,explorerUrl:r}){return Zn(o=>{if(!o.transports)throw new Error("Wagmi must be configured with transports to use the passkey connector.");let i=o.chains.find(c=>c.id===e);if(!i)throw new Error(`Could not find configured chain for chain ID ${e}.`);let s=o.transports[i.id];if(!s)throw new Error(`Could not find configured transport for chain ID ${e}.`);let a=Yn({...V,chain:i,transport:s}),l=m.getState().activeCredential!=null;return{id:"passkey",type:A.type,name:"Passkey",async createPasskey(){let{id:c}=await Ye(),d=await O(a,c);this.onAccountsChanged([d.address]),this.onConnect?.({chainId:$e(e)})},async reusePasskey(){let{id:c}=await me(),d=await O(a,c);this.onAccountsChanged([d.address]),this.onConnect?.({chainId:$e(e)})},hasPasskey(){return Object.keys(m.getState().publicKeys).length>0},async connect(c){if(console.log("connect"),c?.chainId!=null&&c.chainId!==e)throw new Error(`Can't connect to chain ${c.chainId}. Passkey connector is bound to chain ${e}.`);!m.getState().activeCredential&&!c?.isReconnecting&&await me();let d=await this.getAccounts();return l=d.length>0,{accounts:d,chainId:e}},async disconnect(){console.log("disconnect"),l=!1,m.setState({activeCredential:null})},async getAccounts(){console.log("getAccounts");let c=m.getState().activeCredential;if(!c)return[];try{console.log("getting account for credential",c);let d=await O(a,c);return console.log("got account",d),[d.address]}catch{console.log("could not get address for credential ID",c)}return[]},async getChainId(){return e},async isAuthorized(){return console.log("isAuthorized"),l?(await this.getAccounts()).length>0:!1},async switchChain(c){if(c.chainId!==e)throw new Error(`Can't connect to chain ${c.chainId}. Passkey connector is bound to chain ${e}.`);let d=o.chains.find(u=>u.id===c.chainId);if(!d)throw new jn(new Jn);return d},onAccountsChanged(c){console.log("onAccountsChanged"),c.length>0?o.emitter.emit("change",{accounts:c.map(d=>$n(d))}):this.onDisconnect()},onChainChanged(c){console.log("onChainChanged"),o.emitter.emit("change",{chainId:Number(c)})},async onConnect(c){console.log("onConnect");let d=await this.getAccounts();o.emitter.emit("connect",{accounts:d,chainId:e})},async onDisconnect(c){console.log("onDisconnect"),o.emitter.emit("disconnect"),l=!1},async getClient(c){console.log("passkeyConnector.getClient",c);let d=m.getState().activeCredential;if(!d)throw new Error("Not connected.");let u=await O(a,d);return Q({paymasterAddress:n,transport:t,client:a,account:u}).extend(er()).extend(f=>r?tr({explorerUrl:r})(f):{})},async getProvider(c){return Xn({request:a.transport.request})({retryCount:0})}}})}function je(){let t=nr().find(n=>n.type===A.type);if(!t)throw new Error("Could not find passkey connector. Did you configure Wagmi with the EntryKit passkey connector or passkey wallet?");return t}import{twMerge as rr}from"tailwind-merge";import{jsx as ye,jsxs as or}from"react/jsx-runtime";function v({className:e,...t}){return or("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 8 8",fill:"currentColor",shapeRendering:"crispEdges",className:rr("-my-[0.125em] h-[1.25em] w-[1.25em]",e),...t,children:[ye("path",{d:"M0 0h1v1H0zm0 1h1v1H0zm0 1h1v1H0zm0 1h1v1H0zm0 1h1v1H0zm0 1h1v1H0zm0 1h1v1H0zm0 1h1v1H0zm1 0h1v1H1zm1 0h1v1H2zm1 0h1v1H3zm1 0h1v1H4zm1 0h1v1H5zm2-1h1v1H7zm0 1h1v1H7zM6 7h1v1H6zm1-2h1v1H7zm0-1h1v1H7zm0-1h1v1H7z"}),ye("path",{d:"M2 2h1v1H2zm0 1h1v1H2zm0 1h1v1H2zm0 1h1v1H2zm1-3h1v1H3zm1 0h1v1H4zm1 0h1v1H5zm0 1h1v1H5zm0 1h1v1H5zm0 1h1v1H5zM4 5h1v1H4zM3 5h1v1H3z",opacity:".5"}),ye("path",{d:"M7 2h1v1H7zm0-1h1v1H7zM1 0h1v1H1zm1 0h1v1H2zm1 0h1v1H3zm1 0h1v1H4zm1 0h1v1H5zm1 0h1v1H6zm1 0h1v1H7z"})]})}function Je(){let{appInfo:e}=p(),t=e?.name??document.title,n=location.host,r=e?.icon??document.querySelector("link[rel~='icon']")?.getAttribute("href")??"/favico.ico",o=e?.image;return{appName:t,appOrigin:n,appIcon:r,appImage:o}}import{useQuery as ar}from"@tanstack/react-query";function _(e){return ar({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.
1431
1426
 
1432
- URL: ${e}`)),r.src=e})})}import{jsx as Q,jsxs as nr}from"react/jsx-runtime";function Ze(){let{appName:e,appIcon:t}=Je(),{data:n,isLoading:r}=q(t);return nr("div",{className:"flex-grow flex flex-col items-center justify-center gap-2",children:[Q("div",{className:"w-16 h-16 m-2",children:r?null:n?Q("img",{src:t,className:"w-full h-full object-cover"}):Q(v,{className:"w-full h-full text-orange-500 dark:bg-neutral-800"})}),Q("div",{className:"text-2xl text-white text-center",children:e})]})}import{twMerge as or}from"tailwind-merge";import{jsx as R,jsxs as tt}from"react/jsx-runtime";function nt(){let e=rr(),{accountModalOpen:t}=y(),{openConnectModal:n,connectModalOpen:r}=ar(),a=je(),i=et({onError:c=>console.error(c),mutationKey:["createPasskey",a.id,t,r,e.status],mutationFn:()=>a.createPasskey()}),s=et({onError:c=>console.error(c),mutationKey:["reusePasskey",a.id,t,r,e.status],mutationFn:()=>a.reusePasskey()}),o=a.hasPasskey(),l=[R(g,{variant:o?"secondary":"primary",className:"self-auto flex justify-center",pending:i.status==="pending",onClick:()=>i.mutate(),autoFocus:!o,children:"Create account"},"create"),R(g,{variant:o?"primary":"secondary",className:"self-auto flex justify-center",pending:s.status==="pending",onClick:()=>s.mutate(),autoFocus:o,children:"Sign in"},"signin")];return o&&l.reverse(),tt("div",{className:or("flex flex-col gap-6 p-6","animate-in animate-duration-300 fade-in slide-in-from-bottom-8"),children:[R("div",{className:"p-4",children:R(Ze,{})}),tt("div",{className:"self-center flex flex-col gap-2 w-60",children:[l,R("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 Zr}from"react";import{useMemo as Jr}from"react";import{parseEther as ir}from"viem";var Y=ir("0.01");import{useReadContract as sr}from"wagmi";import cr from"@latticexyz/store/out/IStoreRead.sol/IStoreRead.abi.json";import{decodeValueArgs as dr,getKeyTuple as lr,getSchemaTypes as pr,getValueSchema as ur}from"@latticexyz/protocol-parser/internal";function rt({table:e,key:t,...n}){return sr(e&&t&&n.query?.enabled!==!1?{...n,abi:cr,functionName:"getRecord",args:[e.tableId,lr(e,t)],query:{...n.query,select:r=>({...t,...dr(pr(ur(e)),{staticData:r[0],encodedLengths:r[1],dynamicData:r[2]})})}}:{})}import{defineStore as mr}from"@latticexyz/store";import{parseAbi as fr}from"viem";var ye=fr(["error SpenderSystem_AlreadyRegistered(address spender, address user)","error SpenderSystem_HasOwnBalance(address spender)","function registerSpender(address spender)"]),yr=mr({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:[]}}}}}),X=yr.namespaces.root.tables;function $(e){let{chainId:t,paymasterAddress:n}=u();return rt({chainId:t,address:n,...e?{table:X.Allowance,key:{user:e}}:null})}import{useClient as Ar}from"wagmi";import{useQuery as Sr}from"@tanstack/react-query";import{createStore as gr}from"zustand/vanilla";import{persist as hr}from"zustand/middleware";var O=gr(hr(()=>({appSigners:{}}),{name:"mud:entrykit",partialize:({appSigners:e})=>({appSigners:e})}));function wr(e){e.key===O.persist.getOptions().name&&O.persist.rehydrate()}window.addEventListener("storage",wr);import{generatePrivateKey as br,privateKeyToAccount as xr}from"viem/accounts";function at(e){let t=O.getState().appSigners[e]??(()=>{let n=br();return O.setState(r=>({appSigners:{...r.appSigners,[e]:n}})),n})();return xr(t)}import{smartAccountActions as vr}from"permissionless";import{callFrom as Cr}from"@latticexyz/world/internal";import{observer as kr}from"@latticexyz/explorer/observer";async function ot({worldAddress:e,userAddress:t,client:n,bundlerTransport:r,paymasterAddress:a,explorerUrl:i}){let s=at(t),o=await U({client:n,owners:[s]});return _({paymasterAddress:a,transport:r,client:n,account:o}).extend(vr()).extend(Cr({worldAddress:e,delegatorAddress:t,publicClient:n})).extend(c=>i?kr({explorerUrl:i})(c):{}).extend(()=>({userAddress:t}))}function S(e){let{chainId:t,bundlerTransport:n,paymasterAddress:r,worldAddress:a,explorerUrl:i}=u(),s=Ar({chainId:t}),o=["appAccountClient",s?.uid,e];return Sr(s&&e?{queryKey:o,queryFn:async()=>await ot({worldAddress:a,userAddress:e,client:s,bundlerTransport:n,paymasterAddress:r,explorerUrl:i}),staleTime:1/0}:{queryKey:o,enabled:!1})}import{useClient as Rr}from"wagmi";import{decodeValueArgs as Pr,getKeyTuple as Mr,getSchemaTypes as Ir,getValueSchema as Hr}from"@latticexyz/protocol-parser/internal";import{readContract as Nr}from"viem/actions";import{getAction as Er}from"viem/utils";async function j(e,{address:t,table:n,key:r,blockTag:a}){let[i,s,o]=await Er(e,Nr,"readContract")({address:t,abi:Tr,functionName:"getRecord",args:[n.tableId,Mr(n,r)],blockTag:a});return{...r,...Pr(Ir(Hr(n)),{staticData:i,encodedLengths:s,dynamicData:o})}}var Tr=[{type:"function",name:"getRecord",inputs:[{name:"tableId",type:"bytes32",internalType:"ResourceId"},{name:"keyTuple",type:"bytes32[]",internalType:"bytes32[]"}],outputs:[{name:"staticData",type:"bytes",internalType:"bytes"},{name:"encodedLengths",type:"bytes32",internalType:"EncodedLengths"},{name:"dynamicData",type:"bytes",internalType:"bytes"}],stateMutability:"view"}];import{useQuery as Or}from"@tanstack/react-query";function ge({client:e,paymasterAddress:t,userAddress:n,appAccountAddress:r}){return["spender",e?.chain.id,t,n,r]}function it(e,t){let{chainId:n,paymasterAddress:r}=u(),a=Rr({chainId:n}),i=ge({client:a,paymasterAddress:r,userAddress:e,appAccountAddress:t});return Or(a&&e&&t?{queryKey:i,queryFn:async()=>(await j(a,{address:r,table:X.Spender,key:{spender:t}})).user.toLowerCase()===e.toLowerCase()}:{queryKey:i,enabled:!1})}import{useClient as Dr}from"wagmi";import{useQuery as zr}from"@tanstack/react-query";function he({client:e,worldAddress:t,userAddress:n,appAccountAddress:r}){return["delegation",e?.chain.id,t,n,r]}function st(e,t){let{chainId:n,worldAddress:r}=u(),a=Dr({chainId:n}),i=he({client:a,worldAddress:r,userAddress:e,appAccountAddress:t});return zr(a&&e&&t?{queryKey:i,queryFn:async()=>(await j(a,{address:r,table:Xe.UserDelegationControl,key:{delegator:e,delegatee:t}})).delegationControlId===T}:{queryKey:i,enabled:!1})}import{useDisconnect as Br}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 we,jsxs as Lr}from"react/jsx-runtime";function Z({hex:e}){return e.length<=10?we("span",{title:e,children:e}):Lr("span",{title:e,children:[we("span",{className:"after:select-none after:content-['\u2026']",children:e.slice(0,6)}),we("span",{className:"tracking-[-1ch] text-transparent",children:e.slice(6,-4)}),e.slice(-4)]})}import{jsx as D,jsxs as be}from"react/jsx-runtime";function ct({isActive:e,isExpanded:t,userAddress:n}){let{data:r}=J(n),{disconnect:a,isPending:i}=Br(),{closeAccountModal:s}=y();return be("div",{className:"flex flex-col gap-4",children:[be("div",{className:"flex justify-between gap-4",children:[be("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:i,onClick:()=>{s(),a()},children:"Sign out"})]}),t?D("p",{className:"text-sm",children:"Each of your onchain actions in this app is associated with your account."}):null]})}import{useMutation as Fr,useQueryClient as Wr}from"@tanstack/react-query";function dt(){let e=Wr(),{passIssuerTransport:t}=u();return Fr({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 Ur}from"tailwind-merge";import{jsx as ee,jsxs as Gr}from"react/jsx-runtime";function lt({className:e,...t}){return Gr("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 263 428",fill:"currentColor",className:Ur("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 Vr}from"viem";function pt(e){let t=Vr(e),n=Math.floor(parseFloat(t)).toString().length;return parseFloat(t).toLocaleString("en-US",{maximumFractionDigits:Math.max(0,6-n)})}import{jsx as _r,jsxs as qr}from"react/jsx-runtime";function ut({wei:e}){return qr("span",{className:"inline-flex items-center gap-1",children:[pt(e)," ",_r(lt,{})]})}import{useEffect as Qr}from"react";import{jsx as P,jsxs as xe}from"react/jsx-runtime";function mt({isActive:e,isExpanded:t,userAddress:n}){let r=$(n),a=dt();return Qr(()=>{e&&a.status==="idle"&&r.data&&r.data.allowance<Y&&a.mutate(n)},[r.data,a,e,n]),xe("div",{className:"flex flex-col gap-4",children:[xe("div",{className:"flex justify-between gap-4",children:[xe("div",{children:[P("div",{children:"Allowance"}),P("div",{className:"font-mono text-white",children:r.data?P(ut,{wei:r.data.allowance}):P(x,{})})]}),P(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?P("p",{className:"text-sm",children:"Your allowance is used to pay for onchain computation."}):null]})}import{useMutation as Yr,useQueryClient as Xr}from"@tanstack/react-query";import{getAction as te}from"viem/utils";import{sendUserOperation as $r,waitForUserOperationReceipt as jr}from"viem/account-abstraction";import{writeContract as ft}from"viem/actions";function yt(){let{worldAddress:e,paymasterAddress:t}=u(),n=Xr();return Yr({onError:r=>console.error(r),mutationKey:["setupAppAccount"],mutationFn:async({userClient:r,appAccountAddress:a,registerSpender:i,registerDelegation:s})=>{r.account.type!=="smart"&&(await te(r,ft,"writeContract")({chain:r.chain,account:r.account,address:t,abi:ye,functionName:"registerSpender",args:[a]}),await te(r,ft,"writeContract")({chain:r.chain,account:r.account,address:e,abi:me,functionName:"registerDelegation",args:[a,T,"0x"]}));let o=[];if(i&&(console.log("registering spender"),o.push({to:t,abi:ye,functionName:"registerSpender",args:[a]})),s&&(console.log("registering delegation"),o.push({to:e,abi:me,functionName:"registerDelegation",args:[a,T,"0x"]})),!o.length)return;console.log("setting up account with",o);let l=await te(r,$r,"sendUserOperation")({calls:o});console.log("got user op hash",l);let c=await te(r,jr,"waitForUserOperationReceipt")({hash:l});if(console.log("got user op receipt",c),await n.invalidateQueries({queryKey:["readContract"]}),!!c.success){if(i){let d=ge({client:r,paymasterAddress:t,userAddress:r.account.address,appAccountAddress:a});n.setQueryData(d,!0)}if(s){let d=he({client:r,worldAddress:e,userAddress:r.account.address,appAccountAddress:a});n.setQueryData(d,!0)}}}})}import{jsx as z,jsxs as ve}from"react/jsx-runtime";function gt({isActive:e,isExpanded:t,userClient:n,registerSpender:r,registerDelegation:a}){let{closeAccountModal:i}=y(),s=S(n.account.address),o=yt(),l=!a&&!a;return ve("div",{className:"flex flex-col gap-4",children:[ve("div",{className:"flex justify-between gap-4",children:[ve("div",{children:[z("div",{children:"Session"}),z("div",{className:"font-mono text-white",children:l?"Enabled":"Set up"})]}),l?z(g,{variant:e?"primary":"secondary",className:"flex-shrink-0 text-sm p-1 w-28",disabled:!0,children:"Disable"}):z(g,{variant:e?"primary":"secondary",className:"flex-shrink-0 text-sm p-1 w-28",pending:!s.data||o.status==="pending",onClick:s.data?async()=>{await o.mutateAsync({userClient:n,appAccountAddress:s.data.account.address,registerSpender:r,registerDelegation:a}),i()}:void 0,children:"Enable"})]}),t?z("p",{className:"text-sm",children:"You can perform actions in this app without interruptions for approvals."}):null]})}import{jsx as Ce}from"react/jsx-runtime";function ne(e){let t=e?.account.address,n=$(t),r=S(t),i=it(t,r.data?.account.address).data===!0,o=st(t,r.data?.account.address).data===!0;return Jr(()=>t?[{id:"wallet",label:"Sign in",isComplete:!0,content:l=>Ce(ct,{...l,userAddress:t})},{id:"allowance",label:"Top up",isComplete:(n.data?.allowance??0n)>=Y,content:l=>Ce(mt,{...l,userAddress:t})},{id:"session",label:"Set up account",isComplete:i&&o,content:l=>Ce(gt,{...l,userClient:e,registerSpender:!i,registerDelegation:!o})}]:[{id:"wallet",label:"Sign in",isComplete:!1,content:()=>null}],[n.data?.allowance,o,i,t,e])}import{twMerge as ke}from"tailwind-merge";import{jsx as Ae}from"react/jsx-runtime";function ht({userClient:e}){let t=ne(e),[n]=Zr(null),r=t.find(o=>o.content!=null&&!o.isComplete),a=t.filter(o=>o.isComplete),i=(n!=null?t.find(o=>o.id===n):null)??r??(a.length<t.length?a.at(-1):null),s=i?t.indexOf(i):-1;return Ae("div",{className:ke("min-h-[26rem] px-8 flex flex-col divide-y divide-neutral-800","animate-in animate-duration-300 fade-in slide-in-from-bottom-8"),children:t.map((o,l)=>{let c=o===i,d=c||a.length===t.length,p=!o.isComplete&&s!==-1&&l>s;return Ae("div",{className:ke("py-8 flex flex-col justify-center",c?"flex-grow":null),children:Ae("div",{className:ke("flex flex-col",p?"opacity-30 pointer-events-none":null),children:o.content({isActive:c,isExpanded:d})})},o.id)})})}import{jsx as wt}from"react/jsx-runtime";function bt(){let{chainId:e}=u(),t=ea({chainId:e});return t.status!=="success"?wt(nt,{}):wt(ht,{userClient:t.data})}import{useState as oa}from"react";import{ErrorBoundary as ia}from"react-error-boundary";import{twMerge as ta}from"tailwind-merge";import{BaseError as na,UserRejectedRequestError as ra}from"viem";import{jsx as xt,jsxs as aa}from"react/jsx-runtime";function vt({title:e,error:t}){if(!t||t instanceof na&&t.walk(a=>a instanceof ra)!=null)return null;let n=e??"Error",r=typeof t=="string"?t:t instanceof Error?String(t):"Something unexpected happened.";return aa("div",{className:ta("text-sm border-l-4 border-red-500","bg-red-100 text-red-900","dark:bg-red-900 dark:text-red-50"),children:[xt("div",{className:"p-3 font-semibold",children:n}),xt("div",{className:"px-3 whitespace-break-spaces break-all max-h-32 overflow-y-scroll",children:r})]})}import{wait as sa}from"@latticexyz/common/utils";import{twMerge as ca}from"tailwind-merge";import{useIsMounted as da}from"usehooks-ts";import{jsx as re,jsxs as Ct}from"react/jsx-runtime";function kt({children:e}){let t=da(),[n,r]=oa(1);return re(ia,{fallbackRender:({error:a,resetErrorBoundary:i})=>Ct("div",{className:ca("flex-grow flex flex-col justify-center p-5 gap-2"),children:[re(vt,{error:a instanceof Error?a.stack??a.message:a}),n>0?Ct("button",{type:"button",onClick:async s=>{s.currentTarget.ariaBusy="true",await sa(1e3),i(),t()&&(r(o=>o-1),s.currentTarget.ariaBusy=null)},className:"group aria-busy:pointer-events-none self-end flex items-center gap-1",children:[re(x,{className:"transition opacity-0 group-aria-busy:opacity-100 text-xs text-neutral-500 dark:text-neutral-400"}),re("span",{className:"text-sm text-neutral-500 dark:text-neutral-400 group-hover:text-black dark:group-hover:text-white",children:"Retry?"})]}):null]}),children:e})}import{DialogClose as ua,DialogTitle as ma}from"@radix-ui/react-dialog";import{twMerge as la}from"tailwind-merge";import{jsx as pa}from"react/jsx-runtime";function At({className:e,children:t,...n}){return pa("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",className:la("-my-[0.125em] h-[1.25em] w-[1.25em]",e),...n,children:t})}import{jsx as St}from"react/jsx-runtime";function Pt(e){return St(At,{strokeWidth:"2",stroke:"currentColor",...e,children:St("path",{d:"M6 18L18 6M6 6L18 18",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})}import{jsx as w,jsxs as Se}from"react/jsx-runtime";function It(){let{accountModalOpen:e,toggleAccountModal:t}=y();return Se(Be,{open:e,onOpenChange:t,children:[w(ma,{className:"sr-only",children:"Connect with EntryKit"}),e?Se("div",{className:Mt("relative py-2 ring-1","bg-neutral-900 text-neutral-400 ring-neutral-700/50 divide-neutral-700","links:font-medium links:underline links:underline-offset-4","links:text-white","links:decoration-neutral-500 hover:links:decoration-orange-500"),children:[w(kt,{children:w(bt,{})}),Se("a",{href:"https://mud.dev",target:"_blank",rel:"noreferrer noopener",className:"group self-center p-3 flex items-center justify-center gap-2 links-unset text-sm font-mono transition text-neutral-400 hover:text-white",children:[w("span",{className:"block w-4 h-4",children:w(v,{className:"w-full h-full text-orange-500 group-hover:rotate-90 transition duration-300"})}),w("span",{children:"Powered by MUD"})]}),w("div",{className:"absolute top-0 right-0",children:w(ua,{className:Mt("pointer-events-auto leading-none p-2 transition","text-neutral-700 hover:text-neutral-500"),title:"Close",children:w(Pt,{className:"m-0"})})})]}):null]})}import{jsx as ya,jsxs as ga}from"react/jsx-runtime";function fa({config:e,children:t}){return ga(Oe,{config:e,children:[t,ya(It,{})]})}import{useAccount as xa}from"wagmi";import{twMerge as C}from"tailwind-merge";import{twMerge as Ht}from"tailwind-merge";import{Fragment as ha,jsx as ae,jsxs as Nt}from"react/jsx-runtime";function Et({address:e}){let{data:t}=J(e),{isSuccess:n}=q(t.avatar);return Nt(ha,{children:[Nt("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:Ht("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:Ht("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{useMemo as wa}from"react";import{useConnectorClient as ba}from"wagmi";function Pe(){let{chainId:e}=u(),{data:t,error:n}=ba({chainId:e});n&&console.error("Error retrieving user client",n);let r=S(t?.account.address),a=ne(t);return wa(()=>{if(a.every(i=>i.isComplete))return r.data},[r.data,a])}import{jsx as b,jsxs as Rt}from"react/jsx-runtime";var Tt=C("w-48 inline-flex outline-none transition","border border-transparent","text-base leading-none"),va=C("bg-neutral-100 border-neutral-300 text-black","dark:bg-neutral-800 dark:border-neutral-700 dark:text-white"),Ca=C("cursor-pointer outline-none hover:bg-neutral-200 data-[highlighted]:bg-neutral-200 dark:hover:bg-neutral-700");function ka(){let{openAccountModal:e,accountModalOpen:t}=y(),{status:n,address:r}=xa();return Pe(),b(K,{mode:"child",children:n==="connected"||n==="reconnecting"&&r?b("button",{type:"button",className:C(Tt,va,Ca,"p-3"),onClick:e,children:b("span",{className:"flex-grow inline-flex gap-2.5 items-center text-left font-medium",children:b(Et,{address:r})})},"connected"):Rt("button",{type:"button",className:C(Tt,"group","items-center justify-center gap-2.5 p-3","bg-orange-500 text-white font-medium","hover:bg-orange-400","active:bg-orange-600"),"aria-busy":t,onClick:e,children:[Rt("span",{className:"pointer-events-none inline-grid place-items-center -ml-3",children:[b("span",{className:C("col-start-1 row-start-1 leading-none","scale-100 opacity-100 transition duration-300","group-aria-busy:scale-125 group-aria-busy:opacity-0"),children:b(v,{})}),b("span",{"aria-hidden":!0,className:C("col-start-1 row-start-1","scale-50 opacity-0 transition duration-300 delay-50","group-aria-busy:scale-100 group-aria-busy:opacity-100"),children:b(x,{})})]}),b("span",{className:"font-medium",children:"Sign in"})]},"sign in")})}import{connectorsForWallets as Sa,getDefaultWallets as Pa}from"@rainbow-me/rainbowkit";import{createConfig as Ma}from"wagmi";var Aa=`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:Aa,iconBackground:"#fec",createConnector:t=>n=>({...A(e)(n),...t})});function Ia(e){let{wallets:t}=Pa(),n=[{groupName:"Recommended",wallets:[oe({chainId:e.chainId,bundlerTransport:e.bundlerTransport,paymasterAddress:e.paymasterAddress})]},...t],r=Sa(n,{appName:e.appInfo.name,projectId:e.walletConnectProjectId});return Ma({connectors:r,chains:e.chains,transports:e.transports})}function Xl(e){return e!=null&&"__isCoinbaseSmartAccount"in e&&e.__isCoinbaseSmartAccount===!0}var jl=new Set([17420,31337]);function Jl(e){return t=>{let{request:n,...r}=e(t),a=null,i=new Map;return{...r,async request(s){if(s.method==="eth_chainId")return a??(a=await n(s));if(s.method==="eth_getTransactionReceipt"){let o=s.params[0],l=i.get(o)??await n(s);return i.has(o)||i.set(o,l),l}if(s.method==="eth_sendUserOperation"){let o=await n({...s,method:"wiresaw_sendUserOperation"});return i.set(o.userOpHash,{success:!0,userOpHash:o.userOpHash,receipt:{transactionHash:o.txHash}}),o.userOpHash}if(s.method==="eth_getUserOperationReceipt"){let o=s.params[0],l=i.get(o)??await n(s);return i.has(o)||i.set(o,l),l}return n(s)}}}}import{connectorsForWallets as Na}from"@rainbow-me/rainbowkit";import{getDefaultWallets as Ha}from"@rainbow-me/rainbowkit";function Ot(e){let{wallets:t}=Ha();return[{groupName:"Recommended",wallets:[oe({chainId:e.chainId,bundlerTransport:e.bundlerTransport,paymasterAddress:e.paymasterAddress})]},...t]}function sp({wallets:e,...t}){return Na(e??Ot(t),{appName:t.appInfo?.name??document.title,projectId:t.walletConnectProjectId})}export{ka as AccountButton,fa as EntryKitProvider,W as abi,Ia as createWagmiConfig,sp as getConnectors,Ot as getWallets,Xl as isCoinbaseSmartAccount,A as passkeyConnector,oe as passkeyWallet,F as sign,U as toCoinbaseSmartAccount,le as toReplaySafeHash,An as toWebAuthnSignature,y as useAccountModal,Pe as useAppAccountClient,u as useEntryKitConfig,Jl as wiresaw,jl as wiresawChainIds,N as wrapSignature};
1427
+ URL: ${e}`)),r.src=e})})}import{jsx as Y,jsxs as ir}from"react/jsx-runtime";function Ze(){let{appName:e,appIcon:t}=Je(),{data:n,isLoading:r}=_(t);return ir("div",{className:"flex-grow flex flex-col items-center justify-center gap-2",children:[Y("div",{className:"w-16 h-16 m-2",children:r?null:n?Y("img",{src:t,className:"w-full h-full object-cover"}):Y(v,{className:"w-full h-full text-orange-500 dark:bg-neutral-800"})}),Y("div",{className:"text-2xl text-white text-center",children:e})]})}import{twMerge as dr}from"tailwind-merge";import{jsx as R,jsxs as tt}from"react/jsx-runtime";function nt(){let e=sr(),{accountModalOpen:t}=y(),{openConnectModal:n,connectModalOpen:r}=cr(),o=je(),i=et({onError:c=>console.error(c),mutationKey:["createPasskey",o.id,t,r,e.status],mutationFn:()=>o.createPasskey()}),s=et({onError:c=>console.error(c),mutationKey:["reusePasskey",o.id,t,r,e.status],mutationFn:()=>o.reusePasskey()}),a=o.hasPasskey(),l=[R(g,{variant:a?"secondary":"primary",className:"self-auto flex justify-center",pending:i.status==="pending",onClick:()=>i.mutate(),autoFocus:!a,children:"Create account"},"create"),R(g,{variant:a?"primary":"secondary",className:"self-auto flex justify-center",pending:s.status==="pending",onClick:()=>s.mutate(),autoFocus:a,children:"Sign in"},"signin")];return a&&l.reverse(),tt("div",{className:dr("flex flex-col gap-6 p-6","animate-in animate-duration-300 fade-in slide-in-from-bottom-8"),children:[R("div",{className:"p-4",children:R(Ze,{})}),tt("div",{className:"self-center flex flex-col gap-2 w-60",children:[l,R("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 no}from"react";import{useMemo as to}from"react";import{useDisconnect as ur}from"wagmi";import{useQuery as lr}from"@tanstack/react-query";function X(e){let t=e?.toLowerCase();return lr({enabled:!!t,queryKey:["ens",t],initialData:{address:void 0,name:void 0,displayName:void 0,avatar:void 0},queryFn:async()=>{let n=await fetch(`https://api.ensideas.com/ens/resolve/${t}`).then(r=>r.json());return{address:n.address??void 0,name:n.name??void 0,displayName:n.displayName??void 0,avatar:n.avatar??void 0}}})}import{jsx as ge,jsxs as pr}from"react/jsx-runtime";function $({hex:e}){return e.length<=10?ge("span",{title:e,children:e}):pr("span",{title:e,children:[ge("span",{className:"after:select-none after:content-['\u2026']",children:e.slice(0,6)}),ge("span",{className:"tracking-[-1ch] text-transparent",children:e.slice(6,-4)}),e.slice(-4)]})}import{jsx as D,jsxs as he}from"react/jsx-runtime";function rt({isActive:e,isExpanded:t,userAddress:n}){let{data:r}=X(n),{disconnect:o,isPending:i}=ur(),{closeAccountModal:s}=y();return he("div",{className:"flex flex-col gap-4",children:[he("div",{className:"flex justify-between gap-4",children:[he("div",{children:[D("div",{children:"Account"}),D("div",{className:"font-mono text-white",children:r.name??D($,{hex:n})})]}),D(g,{variant:e?"primary":"secondary",className:"flex-shrink-0 text-sm p-1 w-28",pending:i,onClick:()=>{s(),o()},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{useClient as kr}from"wagmi";import{queryOptions as Ar,useQuery as Sr}from"@tanstack/react-query";import{defineStore as mr}from"@latticexyz/store";import{parseAbi as fr}from"viem";var we=fr(["error SpenderSystem_AlreadyRegistered(address spender, address user)","error SpenderSystem_HasOwnBalance(address spender)","function registerSpender(address spender)"]),yr=mr({namespaces:{root:{namespace:"",tables:{Allowance:{schema:{user:"address",allowance:"uint256"},key:["user"]},Grantor:{schema:{grantor:"address",allowance:"uint256"},key:["grantor"]},PassHolder:{schema:{user:"address",passId:"bytes32",lastRenewed:"uint256",lastClaimed:"uint256"},key:["user","passId"]},PassConfig:{schema:{passId:"bytes32",claimAmount:"uint256",claimInterval:"uint256",validityPeriod:"uint256",grantor:"address"},key:["passId"]},Spender:{schema:{spender:"address",user:"address"},key:["spender"]},SystemConfig:{schema:{entryPoint:"address"},key:[]}}}}}),j=yr.namespaces.root.tables;import{decodeValueArgs as gr,getKeyTuple as hr,getSchemaTypes as wr,getValueSchema as br}from"@latticexyz/protocol-parser/internal";import{readContract as xr}from"viem/actions";import{getAction as vr}from"viem/utils";async function S(e,{address:t,table:n,key:r,blockTag:o}){let[i,s,a]=await vr(e,xr,"readContract")({address:t,abi:Cr,functionName:"getRecord",args:[n.tableId,hr(n,r)],blockTag:o});return{...r,...gr(wr(br(n)),{staticData:i,encodedLengths:s,dynamicData:a})}}var Cr=[{type:"function",name:"getRecord",inputs:[{name:"tableId",type:"bytes32",internalType:"ResourceId"},{name:"keyTuple",type:"bytes32[]",internalType:"bytes32[]"}],outputs:[{name:"staticData",type:"bytes",internalType:"bytes"},{name:"encodedLengths",type:"bytes32",internalType:"EncodedLengths"},{name:"dynamicData",type:"bytes",internalType:"bytes"}],stateMutability:"view"}];async function ot({client:e,paymasterAddress:t,userAddress:n}){return(await S(e,{address:t,table:j.Allowance,key:{user:n}})).allowance}function be({client:e,paymasterAddress:t,userAddress:n}){let r=["getAllowance",e?.chain.id,t,n];return Ar(e&&n?{queryKey:r,queryFn:()=>ot({client:e,paymasterAddress:t,userAddress:n})}:{queryKey:r,enabled:!1})}function at(e){let{chainId:t,paymasterAddress:n}=p(),r=kr({chainId:t});return Sr(be({client:r,paymasterAddress:n,userAddress:e}))}import{useMutation as Pr,useQueryClient as Mr}from"@tanstack/react-query";function it(){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 Promise.all([e.invalidateQueries({queryKey:["getAllowance"]}),e.invalidateQueries({queryKey:["getPrerequisites"]})])},retry:0})}import{twMerge as Ir}from"tailwind-merge";import{jsx as J,jsxs as Nr}from"react/jsx-runtime";function st({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:[J("path",{d:"M132 321V428L263 243L132 321Z"}),J("path",{d:"M0 243L132 321V428",fillOpacity:"0.5"}),J("path",{d:"M132 0V296L263 218"}),J("path",{d:"M0 218L132 296V0L0 218Z",fillOpacity:"0.5"})]})}import{formatEther as Tr}from"viem";function ct(e){let t=Tr(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 Or}from"react/jsx-runtime";function dt({wei:e}){return Or("span",{className:"inline-flex items-center gap-1",children:[ct(e)," ",Er(st,{})]})}import{useEffect as Rr}from"react";import{parseEther as Hr}from"viem";var Z=Hr("0.01");import{jsx as P,jsxs as xe}from"react/jsx-runtime";function lt({isActive:e,isExpanded:t,userAddress:n}){let r=at(n),o=it();return Rr(()=>{e&&o.status==="idle"&&r.isSuccess&&r.data<Z&&o.mutate(n)},[r.data,r.isSuccess,o,e,n]),xe("div",{className:"flex flex-col gap-4",children:[xe("div",{className:"flex justify-between gap-4",children:[xe("div",{children:[P("div",{children:"Allowance"}),P("div",{className:"font-mono text-white",children:r.data!=null?P(dt,{wei:r.data}):P(x,{className:"text-sm"})})]}),P(g,{variant:e?"primary":"secondary",className:"flex-shrink-0 text-sm p-1 w-28",pending:o.status==="pending",onClick:()=>o.mutate(n),children:"Top up"})]}),t?P("p",{className:"text-sm",children:"Your allowance is used to pay for onchain computation."}):null]})}import{useMutation as Kr,useQueryClient as Lr}from"@tanstack/react-query";import{getAction as ne}from"viem/utils";import{sendUserOperation as Br,waitForUserOperationReceipt as Fr}from"viem/account-abstraction";import{writeContract as mt}from"viem/actions";import{useClient as Ec}from"wagmi";import{queryOptions as Dr,useQuery as Hc}from"@tanstack/react-query";async function pt({client:e,paymasterAddress:t,userAddress:n,sessionAddress:r}){return(await S(e,{address:t,table:j.Spender,key:{spender:r}})).user.toLowerCase()===n.toLowerCase()}function ee({client:e,paymasterAddress:t,userAddress:n,sessionAddress:r}){let o=["getSpender",e?.chain.id,t,n,r];return Dr(e&&n&&r?{queryKey:o,queryFn:()=>pt({client:e,paymasterAddress:t,userAddress:n,sessionAddress:r})}:{queryKey:o,enabled:!1})}import{useClient as Gc}from"wagmi";import{queryOptions as zr,useQuery as Uc}from"@tanstack/react-query";async function ut({client:e,worldAddress:t,userAddress:n,sessionAddress:r}){return(await S(e,{address:t,table:Xe.UserDelegationControl,key:{delegator:n,delegatee:r}})).delegationControlId===H}function te({client:e,worldAddress:t,userAddress:n,sessionAddress:r}){let o=["getDelegation",e?.chain.id,t,n,r];return zr(e&&n&&r?{queryKey:o,queryFn:()=>ut({client:e,worldAddress:t,userAddress:n,sessionAddress:r})}:{queryKey:o,enabled:!1})}function ft(){let{worldAddress:e,paymasterAddress:t}=p(),n=Lr();return Kr({onError:r=>console.error(r),mutationKey:["setupSession"],mutationFn:async({userClient:r,sessionAddress:o,registerSpender:i,registerDelegation:s})=>{r.account.type!=="smart"&&(await ne(r,mt,"writeContract")({chain:r.chain,account:r.account,address:t,abi:we,functionName:"registerSpender",args:[o]}),await ne(r,mt,"writeContract")({chain:r.chain,account:r.account,address:e,abi:fe,functionName:"registerDelegation",args:[o,H,"0x"]}));let a=[];if(i&&(console.log("registering spender"),a.push({to:t,abi:we,functionName:"registerSpender",args:[o]})),s&&(console.log("registering delegation"),a.push({to:e,abi:fe,functionName:"registerDelegation",args:[o,H,"0x"]})),!a.length)return;console.log("setting up account with",a);let l=await ne(r,Br,"sendUserOperation")({calls:a});console.log("got user op hash",l);let c=await ne(r,Fr,"waitForUserOperationReceipt")({hash:l});if(console.log("got user op receipt",c),!!c.success){if(i){let{queryKey:d}=ee({client:r,paymasterAddress:t,userAddress:r.account.address,sessionAddress:o});n.setQueryData(d,!0)}if(s){let{queryKey:d}=te({client:r,worldAddress:e,userAddress:r.account.address,sessionAddress:o});n.setQueryData(d,!0)}await Promise.all([n.invalidateQueries({queryKey:["getPrerequisites"]})])}}})}import{useEffect as Xr}from"react";import{useClient as Qr}from"wagmi";import{queryOptions as _r,useQuery as Yr}from"@tanstack/react-query";import{createStore as Gr}from"zustand/vanilla";import{persist as Wr}from"zustand/middleware";var z=Gr(Wr(()=>({signers:{}}),{name:"mud:entrykit",partialize:({signers:e})=>({signers:e})}));function Ur(e){e.key===z.persist.getOptions().name&&z.persist.rehydrate()}window.addEventListener("storage",Ur);import{generatePrivateKey as qr,privateKeyToAccount as Vr}from"viem/accounts";function yt(e){let t=z.getState().signers[e]??(()=>{let n=qr();return z.setState(r=>({signers:{...r.signers,[e]:n}})),n})();return Vr(t)}async function gt({client:e,userAddress:t}){let n=yt(t);return await U({client:e,owners:[n]})}function ve({client:e,userAddress:t}){let n=["getSessionAccount",e?.chain.id,t];return _r(e&&t?{queryKey:n,queryFn:()=>gt({client:e,userAddress:t}),staleTime:1/0}:{queryKey:n,enabled:!1})}function re(e){let{chainId:t}=p(),n=Qr({chainId:t});return Yr(ve({userAddress:e,client:n}))}import{jsx as K,jsxs as Ce}from"react/jsx-runtime";function ht({isActive:e,isExpanded:t,userClient:n,registerSpender:r,registerDelegation:o}){let{closeAccountModal:i}=y(),a=re(n.account.address).data?.address,l=ft(),c=!o&&!o;return Xr(()=>{e&&l.status==="idle"&&a&&!c&&l.mutate({userClient:n,sessionAddress:a,registerSpender:r,registerDelegation:o},{onSuccess:i})},[i,e,c,o,r,a,l,n]),Ce("div",{className:"flex flex-col gap-4",children:[Ce("div",{className:"flex justify-between gap-4",children:[Ce("div",{children:[K("div",{children:"Session"}),K("div",{className:"font-mono text-white",children:c?"Enabled":"Set up"})]}),c?K(g,{variant:e?"primary":"secondary",className:"flex-shrink-0 text-sm p-1 w-28",disabled:!0,children:"Disable"}):K(g,{variant:e?"primary":"secondary",className:"flex-shrink-0 text-sm p-1 w-28",pending:!a||l.status==="pending",onClick:a?()=>l.mutate({userClient:n,sessionAddress:a,registerSpender:r,registerDelegation:o},{onSuccess:i}):void 0,children:"Enable"})]}),t?K("p",{className:"text-sm",children:"You can perform actions in this app without interruptions for approvals."}):null]})}import{queryOptions as $r,useQuery as jr,useQueryClient as Jr}from"@tanstack/react-query";import{useClient as Zr}from"wagmi";function eo({queryClient:e,client:t,userAddress:n,paymasterAddress:r,worldAddress:o}){let i=["getPrerequisites",t?.chain.id,n];return $r(t&&n?{queryKey:i,queryFn:async()=>{let{address:s}=await e.fetchQuery(ve({client:t,userAddress:n})),[a,l,c]=await Promise.all([e.fetchQuery(be({client:t,paymasterAddress:r,userAddress:n})),e.fetchQuery(ee({client:t,paymasterAddress:r,userAddress:n,sessionAddress:s})),e.fetchQuery(te({client:t,worldAddress:o,userAddress:n,sessionAddress:s}))]),d=a>=Z;return{hasAllowance:d,isSpender:l,hasDelegation:c,complete:d&&l&&c}}}:{queryKey:i,enabled:!1})}function M(e){let t=Jr(),{chainId:n,paymasterAddress:r,worldAddress:o}=p(),i=Zr({chainId:n});return jr(eo({queryClient:t,client:i,userAddress:e,paymasterAddress:r,worldAddress:o}),t)}import{jsx as ke}from"react/jsx-runtime";function wt(e){let t=e?.account.address,n=M(t),{hasAllowance:r,isSpender:o,hasDelegation:i}=n.data??{};return to(()=>t?[{id:"wallet",label:"Sign in",isComplete:!0,content:s=>ke(rt,{...s,userAddress:t})},{id:"allowance",label:"Top up",isComplete:!!r,content:s=>ke(lt,{...s,userAddress:t})},{id:"session",label:"Set up account",isComplete:!!o&&!!i,content:s=>ke(ht,{...s,userClient:e,registerSpender:!o,registerDelegation:!i})}]:[{id:"wallet",label:"Sign in",isComplete:!1,content:()=>null}],[r,i,o,t,e])}import{twMerge as Ae}from"tailwind-merge";import{jsx as Se}from"react/jsx-runtime";function bt({userClient:e}){let t=wt(e),[n]=no(null),r=t.find(a=>a.content!=null&&!a.isComplete),o=t.filter(a=>a.isComplete),i=(n!=null?t.find(a=>a.id===n):null)??r??(o.length<t.length?o.at(-1):null),s=i?t.indexOf(i):-1;return Se("div",{className:Ae("min-h-[26rem] px-8 flex flex-col divide-y divide-neutral-800","animate-in animate-duration-300 fade-in slide-in-from-bottom-8"),children:t.map((a,l)=>{let c=a===i,d=c||o.length===t.length,u=!a.isComplete&&s!==-1&&l>s;return Se("div",{className:Ae("py-8 flex flex-col justify-center",c?"flex-grow":null),children:Se("div",{className:Ae("flex flex-col",u?"opacity-30 pointer-events-none":null),children:a.content({isActive:c,isExpanded:d})})},a.id)})})}import{jsx as xt}from"react/jsx-runtime";function vt(){let{chainId:e}=p(),t=ro({chainId:e});return t.status!=="success"?xt(nt,{}):xt(bt,{userClient:t.data})}import{useState as co}from"react";import{ErrorBoundary as lo}from"react-error-boundary";import{twMerge as oo}from"tailwind-merge";import{BaseError as ao,UserRejectedRequestError as io}from"viem";import{jsx as Ct,jsxs as so}from"react/jsx-runtime";function kt({title:e,error:t}){if(!t||t instanceof ao&&t.walk(o=>o instanceof io)!=null)return null;let n=e??"Error",r=typeof t=="string"?t:t instanceof Error?String(t):"Something unexpected happened.";return so("div",{className:oo("text-sm border-l-4 border-red-500","bg-red-100 text-red-900","dark:bg-red-900 dark:text-red-50"),children:[Ct("div",{className:"p-3 font-semibold",children:n}),Ct("div",{className:"px-3 whitespace-break-spaces break-all max-h-32 overflow-y-scroll",children:r})]})}import{wait as po}from"@latticexyz/common/utils";import{twMerge as uo}from"tailwind-merge";import{useIsMounted as mo}from"usehooks-ts";import{jsx as oe,jsxs as At}from"react/jsx-runtime";function St({children:e}){let t=mo(),[n,r]=co(1);return oe(lo,{fallbackRender:({error:o,resetErrorBoundary:i})=>At("div",{className:uo("flex-grow flex flex-col justify-center p-5 gap-2"),children:[oe(kt,{error:o instanceof Error?o.stack??o.message:o}),n>0?At("button",{type:"button",onClick:async s=>{s.currentTarget.ariaBusy="true",await po(1e3),i(),t()&&(r(a=>a-1),s.currentTarget.ariaBusy=null)},className:"group aria-busy:pointer-events-none self-end flex items-center gap-1",children:[oe(x,{className:"transition opacity-0 group-aria-busy:opacity-100 text-xs text-neutral-500 dark:text-neutral-400"}),oe("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 go,DialogTitle as ho}from"@radix-ui/react-dialog";import{twMerge as fo}from"tailwind-merge";import{jsx as yo}from"react/jsx-runtime";function Pt({className:e,children:t,...n}){return yo("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",className:fo("-my-[0.125em] h-[1.25em] w-[1.25em]",e),...n,children:t})}import{jsx as Mt}from"react/jsx-runtime";function It(e){return Mt(Pt,{strokeWidth:"2",stroke:"currentColor",...e,children:Mt("path",{d:"M6 18L18 6M6 6L18 18",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})}import{jsx as w,jsxs as Pe}from"react/jsx-runtime";function Tt(){let{accountModalOpen:e,toggleAccountModal:t}=y();return Pe(Be,{open:e,onOpenChange:t,children:[w(ho,{className:"sr-only",children:"Connect with EntryKit"}),e?Pe("div",{className:Nt("relative py-2 ring-1","bg-neutral-900 text-neutral-400 ring-neutral-700/50 divide-neutral-700","links:font-medium links:underline links:underline-offset-4","links:text-white","links:decoration-neutral-500 hover:links:decoration-orange-500"),children:[w(St,{children:w(vt,{})}),Pe("a",{href:"https://mud.dev",target:"_blank",rel:"noreferrer noopener",className:"group self-center p-3 flex items-center justify-center gap-2 links-unset text-sm font-mono transition text-neutral-400 hover:text-white",children:[w("span",{className:"block w-4 h-4",children:w(v,{className:"w-full h-full text-orange-500 group-hover:rotate-90 transition duration-300"})}),w("span",{children:"Powered by MUD"})]}),w("div",{className:"absolute top-0 right-0",children:w(go,{className:Nt("pointer-events-auto leading-none p-2 transition","text-neutral-700 hover:text-neutral-500"),title:"Close",children:w(It,{className:"m-0"})})})]}):null]})}import{jsx as bo,jsxs as xo}from"react/jsx-runtime";function wo({config:e,children:t}){return xo(Re,{config:e,children:[t,bo(Tt,{})]})}import{useAccount as Co}from"wagmi";import{twMerge as C}from"tailwind-merge";import{twMerge as Et}from"tailwind-merge";import{Fragment as vo,jsx as ae,jsxs as Ot}from"react/jsx-runtime";function Ht({address:e}){let{data:t}=X(e),{isSuccess:n}=_(t.avatar);return Ot(vo,{children:[Ot("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:Et("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:Et("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($,{hex:e}):null)})]})}import{jsx as b,jsxs as Dt}from"react/jsx-runtime";var Rt=C("w-48 inline-flex outline-none transition","border border-transparent","text-base leading-none"),ko=C("bg-neutral-100 border-neutral-300 text-black","dark:bg-neutral-800 dark:border-neutral-700 dark:text-white"),Ao=C("cursor-pointer outline-none hover:bg-neutral-200 data-[highlighted]:bg-neutral-200 dark:hover:bg-neutral-700");function So(){let{openAccountModal:e,accountModalOpen:t}=y(),{status:n,address:r}=Co(),o=M(r),i=n==="connected"||n==="reconnecting"&&r,s=o.isSuccess?o.data.complete:i,a=(()=>{if(o.isSuccess){if(!o.data.hasAllowance)return"Top up";if(!o.data.hasDelegation||!o.data.isSpender)return"Set up"}return"Sign in"})();return b(L,{mode:"child",children:s?b("button",{type:"button",className:C(Rt,ko,Ao,"p-3"),onClick:e,children:b("span",{className:"flex-grow inline-flex gap-2.5 items-center text-left font-medium",children:b(Ht,{address:r})})},"connected"):Dt("button",{type:"button",className:C(Rt,"group","items-center justify-center gap-2.5 p-3","bg-orange-500 text-white font-medium","hover:bg-orange-400","active:bg-orange-600"),"aria-busy":t,onClick:e,children:[Dt("span",{className:"pointer-events-none inline-grid place-items-center -ml-3",children:[b("span",{className:C("col-start-1 row-start-1 leading-none","scale-100 opacity-100 transition duration-300","group-aria-busy:scale-125 group-aria-busy:opacity-0"),children:b(v,{})}),b("span",{"aria-hidden":!0,className:C("col-start-1 row-start-1","scale-50 opacity-0 transition duration-300 delay-50","group-aria-busy:scale-100 group-aria-busy:opacity-100"),children:b(x,{})})]}),b("span",{className:"font-medium",children:a})]},"sign in")})}import{useConnectorClient as Ho}from"wagmi";import{useClient as No}from"wagmi";import{queryOptions as To,useQuery as Eo}from"@tanstack/react-query";import{smartAccountActions as Po}from"permissionless";import{callFrom as Mo}from"@latticexyz/world/internal";import{observer as Io}from"@latticexyz/explorer/observer";async function zt({sessionAccount:e,worldAddress:t,userAddress:n,client:r,bundlerTransport:o,paymasterAddress:i,explorerUrl:s}){return Q({paymasterAddress:i,transport:o,client:r,account:e}).extend(Po()).extend(Mo({worldAddress:t,delegatorAddress:n,publicClient:r})).extend(l=>s?Io({explorerUrl:s})(l):{}).extend(()=>({userAddress:n}))}function Oo({sessionAccount:e,client:t,userAddress:n,bundlerTransport:r,paymasterAddress:o,worldAddress:i,explorerUrl:s}){let a=["getSessionClient",t?.uid,n,e?.address,i,o,s];return To(t&&n&&e?{queryKey:a,queryFn:()=>zt({sessionAccount:e,client:t,userAddress:n,worldAddress:i,bundlerTransport:r,paymasterAddress:o,explorerUrl:s}),staleTime:1/0}:{queryKey:a,enabled:!1})}function Kt(e){let{chainId:t,bundlerTransport:n,paymasterAddress:r,worldAddress:o,explorerUrl:i}=p(),s=No({chainId:t}),{data:a}=re(e);return Eo(Oo({sessionAccount:a,userAddress:e,client:s,bundlerTransport:n,paymasterAddress:r,worldAddress:o,explorerUrl:i}))}function Ro(){let{chainId:e}=p(),t=Ho({chainId:e});t.error&&console.error("Error retrieving user client",t.error);let n=t.data?.account.address,r=M(n),o=Kt(n);return t.isSuccess?!r.isSuccess||!r.data.complete?{...r,data:void 0}:o:{...t,data:void 0}}import{connectorsForWallets as zo,getDefaultWallets as Ko}from"@rainbow-me/rainbowkit";import{createConfig as Lo}from"wagmi";var Do=`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>')}`,ie=e=>()=>({id:"passkey",name:"Passkey",iconUrl:Do,iconBackground:"#fec",createConnector:t=>n=>({...A(e)(n),...t})});function Bo(e){let{wallets:t}=Ko(),n=[{groupName:"Recommended",wallets:[ie({chainId:e.chainId,bundlerTransport:e.bundlerTransport,paymasterAddress:e.paymasterAddress})]},...t],r=zo(n,{appName:e.appInfo.name,projectId:e.walletConnectProjectId});return Lo({connectors:r,chains:e.chains,transports:e.transports})}function Cp(e){return e!=null&&"__isCoinbaseSmartAccount"in e&&e.__isCoinbaseSmartAccount===!0}var Ap=new Set([17420,31337]);function Sp(e){return t=>{let{request:n,...r}=e(t),o=null,i=new Map;return{...r,async request(s){if(s.method==="eth_chainId")return o??(o=await n(s));if(s.method==="eth_getTransactionReceipt"){let a=s.params[0],l=i.get(a)??await n(s);return i.has(a)||i.set(a,l),l}if(s.method==="eth_sendUserOperation"){let a=await n({...s,method:"wiresaw_sendUserOperation"});return i.set(a.userOpHash,{success:!0,userOpHash:a.userOpHash,receipt:{transactionHash:a.txHash}}),a.userOpHash}if(s.method==="eth_getUserOperationReceipt"){let a=s.params[0],l=i.get(a)??await n(s);return i.has(a)||i.set(a,l),l}return n(s)}}}}import{connectorsForWallets as Go}from"@rainbow-me/rainbowkit";import{getDefaultWallets as Fo}from"@rainbow-me/rainbowkit";function Lt(e){let{wallets:t}=Fo();return[{groupName:"Recommended",wallets:[ie({chainId:e.chainId,bundlerTransport:e.bundlerTransport,paymasterAddress:e.paymasterAddress})]},...t]}function Rp({wallets:e,...t}){return Go(e??Lt(t),{appName:t.appInfo?.name??document.title,projectId:t.walletConnectProjectId})}export{So as AccountButton,wo as EntryKitProvider,W as abi,Bo as createWagmiConfig,Rp as getConnectors,Lt as getWallets,Cp as isCoinbaseSmartAccount,A as passkeyConnector,ie as passkeyWallet,G as sign,U as toCoinbaseSmartAccount,pe as toReplaySafeHash,In as toWebAuthnSignature,y as useAccountModal,p as useEntryKitConfig,Ro as useSessionClient,Sp as wiresaw,Ap as wiresawChainIds,E as wrapSignature};
1433
1428
  //# sourceMappingURL=internal.js.map