@latticexyz/entrykit 2.2.15-entrykit-e20c07f8247e5a9b1acdd4d4bb16149b99af74a2 → 2.2.15-entrykit-b6f973041836a15219dc15b5b4a01f75c7529a63
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.
package/dist/tsup/internal.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Address } from 'viem/accounts';
|
|
2
|
-
import { Chain, Client, Transport, Account, Address as Address$1, EIP1193RequestFn, EIP1474Methods, ProviderConnectInfo, OneOf, LocalAccount, Prettify, Assign, Hash } from 'viem';
|
|
2
|
+
import { Chain, Client, Transport, Account, Address as Address$1, EIP1193RequestFn, EIP1474Methods, ProviderConnectInfo, OneOf, LocalAccount, Prettify, Assign, Hash, RpcSchema, UnionToTuple, PublicRpcSchema, BundlerRpcSchema, Hex as Hex$1 } from 'viem';
|
|
3
3
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
4
4
|
import { ReactNode } from 'react';
|
|
5
5
|
import { UseQueryResult } from '@tanstack/react-query';
|
|
@@ -792,4 +792,30 @@ declare function getWallets(config: {
|
|
|
792
792
|
readonly chainId: number;
|
|
793
793
|
}): WalletList;
|
|
794
794
|
|
|
795
|
-
|
|
795
|
+
type getRpcMethod<rpcSchema extends RpcSchema, method extends rpcSchema[number]["Method"]> = Extract<rpcSchema[number], {
|
|
796
|
+
Method: method;
|
|
797
|
+
}>;
|
|
798
|
+
type getRpcSchema<rpcSchema extends RpcSchema, method extends rpcSchema[number]["Method"]> = UnionToTuple<getRpcMethod<rpcSchema, method>>;
|
|
799
|
+
|
|
800
|
+
type WiresawRpcSchema = [
|
|
801
|
+
{
|
|
802
|
+
Method: "wiresaw_call";
|
|
803
|
+
Parameters: getRpcMethod<PublicRpcSchema, "eth_call">["Parameters"];
|
|
804
|
+
ReturnType: getRpcMethod<PublicRpcSchema, "eth_call">["ReturnType"];
|
|
805
|
+
},
|
|
806
|
+
{
|
|
807
|
+
Method: "wiresaw_sendUserOperation";
|
|
808
|
+
Parameters: getRpcMethod<BundlerRpcSchema, "eth_sendUserOperation">["Parameters"];
|
|
809
|
+
ReturnType: {
|
|
810
|
+
userOpHash: Hex$1;
|
|
811
|
+
txHash: Hex$1;
|
|
812
|
+
};
|
|
813
|
+
}
|
|
814
|
+
];
|
|
815
|
+
type OverriddenMethods = [
|
|
816
|
+
...getRpcSchema<PublicRpcSchema, "eth_chainId" | "eth_call" | "eth_getTransactionReceipt">,
|
|
817
|
+
...getRpcSchema<BundlerRpcSchema, "eth_sendUserOperation" | "eth_getUserOperationReceipt">
|
|
818
|
+
];
|
|
819
|
+
declare function wiresaw<const transport extends Transport>(getTransport: transport): transport;
|
|
820
|
+
|
|
821
|
+
export { AccountButton, CoinbaseSmartAccountImplementation, ConnectedClient, CreatePasskeyConnector, CreateWagmiConfigOptions, EntryKitConfig, EntryKitConfigInput, EntryKitProvider, OverriddenMethods, PasskeyConnector, PasskeyConnectorOptions, PasskeyConnectorProperties, PasskeyProvider, PasskeyWalletOptions, SessionClient, ToCoinbaseSmartAccountParameters, ToCoinbaseSmartAccountReturnType, WiresawRpcSchema, abi, createWagmiConfig, defineConfig, getConnectors, getWallets, isCoinbaseSmartAccount, passkeyConnector, passkeyWallet, sign, toCoinbaseSmartAccount, toReplaySafeHash, toWebAuthnSignature, useAccountModal, useEntryKitConfig, useSessionClientReady as useSessionClient, wiresaw, wrapSignature };
|
package/dist/tsup/internal.js
CHANGED
|
@@ -1422,7 +1422,7 @@ video {
|
|
|
1422
1422
|
--tw-text-opacity: 1;
|
|
1423
1423
|
color: rgb(255 255 255 / var(--tw-text-opacity));
|
|
1424
1424
|
}
|
|
1425
|
-
`;import{useResizeObserver as lr}from"usehooks-ts";import{mergeRefs as ur}from"react-merge-refs";import{createContext as tr,useContext as rr}from"react";import{jsx as nr}from"react/jsx-runtime";var Ne=tr(null);function Ee({frame:e,children:t}){if(rr(Ne))throw new Error("`FrameProvider` can only be used once.");return nr(Ne.Provider,{value:{frame:e},children:t})}import{useMediaQuery as sr}from"usehooks-ts";import"@rainbow-me/rainbowkit/styles.css";import{createContext as or,useContext as qe}from"react";import{RainbowKitProvider as ar,lightTheme as He,midnightTheme as De}from"@rainbow-me/rainbowkit";import{useChains as ir}from"wagmi";function F(e){let t=e.contracts?.quarryPaymaster&&"address"in e.contracts.quarryPaymaster?e.contracts?.quarryPaymaster.address:void 0;if(!t)throw new Error(`Chain ${e.id} config did not include a \`quarryPaymaster\` contract address.`);return t}import{jsx as ze}from"react/jsx-runtime";var fe=or(null);function Ke({config:e,children:t}){if(qe(fe))throw new Error("`EntryKitProvider` can only be used once.");let o=ir().find(({id:s})=>s===e.chainId);if(!o)throw new Error(`Could not find configured chain for chain ID ${e.chainId}.`);let i=F(o);return ze(ar,{initialChain:e.chainId,appInfo:{appName:e.appName},theme:e.theme==="light"?He({borderRadius:"none"}):e.theme==="dark"?De({borderRadius:"none"}):{lightMode:He({borderRadius:"none"}),darkMode:De({borderRadius:"none"})},children:ze(fe.Provider,{value:{...e,chain:o,paymasterAddress:i},children:t})})}function m(){let e=qe(fe);if(!e)throw new Error("`useEntryKitConfig` can only be used within a `EntryKitProvider`.");return e}function Le(){let{theme:e}=m(),t=sr("(prefers-color-scheme: dark)");return e??(t?"dark":"light")}import{jsx as E,jsxs as fr}from"react/jsx-runtime";function mr({onSize:e,...t}){let r=Be(null);return lr({ref:r,onResize:e}),E("div",{ref:r,...t,style:{...t.style,display:"inline-grid"}})}var G=cr(function({mode:t,children:r},n){let o=Be(null),[i,s]=Ue(!1),d=i?o.current:null,[p,a]=Ue({width:void 0,height:void 0}),c=d?.contentDocument,l=Le();dr(()=>{c&&c.body.setAttribute("data-theme",l)},[c,l]);let u=t==="modal"?{all:"unset",display:"block",position:"fixed",inset:"0",width:"100%",height:"100%",zIndex:"2147483646"}:p.width&&p.height?{all:"unset",display:"inline-grid",width:`${p.width}px`,height:`${p.height}px`}:{all:"unset",display:"block",position:"fixed",inset:"0",width:"100%",height:"100%",opacity:0,pointerEvents:"none"};return E("iframe",{ref:ur([n,o]),style:u,onLoad:()=>s(!0),srcDoc:"<!doctype html><title>\u2026</title>",children:c?pr.createPortal(fr(Ee,{frame:d,children:[E("div",{children:t==="modal"?r:E(mr,{onSize:a,children:r})}),E("style",{dangerouslySetInnerHTML:{__html:Te}})]}),c.body):null})});import{twMerge as Fe}from"tailwind-merge";import{jsx as S,jsxs as wr}from"react/jsx-runtime";function Ge({open:e,onOpenChange:t,children:r}){return S(yr,{open:e,onOpenChange:t,children:S(gr,{children:wr(G,{mode:"modal",children:[S("div",{className:Fe("fixed inset-0","bg-neutral-800/85","animate-in animate-duration-300 fade-in")}),S("div",{className:Fe("fixed inset-0","grid items-end sm:items-center","animate-in animate-duration-300 fade-in slide-in-from-bottom-16"),children:S("div",{children:S(hr,{className:"outline-none w-full max-w-[26rem] mx-auto","aria-describedby":void 0,onOpenAutoFocus:n=>{n.preventDefault()},children:r})})})]})})})}import{useCallback as ye,useMemo as br}from"react";import{useStore as xr}from"zustand";import{createStore as vr}from"zustand/vanilla";var _=vr(()=>({open:!1}));function w(){let e=xr(_,o=>o.open),t=ye(()=>{_.setState({open:!0})},[]),r=ye(()=>{_.setState({open:!1})},[]),n=ye(o=>{_.setState({open:o})},[]);return br(()=>({accountModalOpen:e,openAccountModal:t,closeAccountModal:r,toggleAccountModal:n}),[e,t,r,n])}import{twMerge as Bt}from"tailwind-merge";import{useAccount as Bo,useConnectorClient as Fo}from"wagmi";import{useAccount as Ln}from"wagmi";import{twMerge as W}from"tailwind-merge";import{twMerge as Cr}from"tailwind-merge";import{jsx as _e,jsxs as Ar}from"react/jsx-runtime";function A({className:e,...t}){return Ar("svg",{className:Cr("-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:[_e("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),_e("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 Pr}from"react/jsx-runtime";var kr=({variant:e="primary"}={})=>W("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:W("bg-neutral-700 text-white"),secondary:W("bg-neutral-800 text-white")}[e]),b=({pending:e,variant:t,type:r,className:n,children:o,disabled:i,...s})=>H("button",{type:r||"button",className:W(kr({variant:t,pending:e}),n),"aria-busy":e,"aria-disabled":i,disabled:i||e,...s,children:Pr("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(A,{})})}),H("span",{children:o})]})});import{useConnectModal as Un}from"@rainbow-me/rainbowkit";import{useMutation as pt}from"@tanstack/react-query";import{useConnectors as Hn}from"wagmi";import{createClient as Sn,custom as Rn,getAddress as Mn,numberToHex as it,SwitchChainError as In}from"viem";import{ChainNotConfiguredError as On,createConnector as Tn}from"wagmi";import{createStore as Sr}from"zustand/vanilla";import{persist as Rr}from"zustand/middleware";var g=Sr(Rr(()=>({publicKeys:{},activeCredential:null}),{name:"mud:passkey:cache"}));function Mr(e){e.key===g.persist.getOptions().name&&g.persist.rehydrate()}window.addEventListener("storage",Mr);import{smartAccountActions as Nn}from"permissionless/clients";import{toWebAuthnAccount as Gr}from"viem/account-abstraction";import{pad as Ir,encodeFunctionData as ge,hashMessage as Or,hashTypedData as Ve,encodeAbiParameters as Qe,stringToHex as Tr,size as Nr,encodePacked as Er,parseSignature as Hr,BaseError as Dr}from"viem";import{entryPoint07Abi as zr,entryPoint07Address as qr,getUserOperationHash as Kr,toSmartAccount as Lr}from"viem/account-abstraction";import{readContract as We}from"viem/actions";import{parseSignature as Ur}from"webauthn-p256";async function Y(e){let{client:t,owners:r,nonce:n=0n}=e,o=e.address,i={abi:zr,address:qr,version:"0.7"},s={abi:Fr,address:"0x356336adA1619BeC1Ae4E6D94Dd9c0490DA414a8"};if(!r.length)throw new Error("`owners` must have at least one account.");function d(l){return l.type==="webAuthn"?l.publicKey:Ir(l.address)}let p=e.signer??r[0],a=r.indexOf(p);if(a===-1)throw new Error("`signer` must be one of `owners`.");let c=0n;return Lr({client:t,entryPoint:i,extend:{__isCoinbaseSmartAccount:!0,abi:Q,factory:s,signer:p},async encodeCalls(l){return l.length===1?ge({abi:Q,functionName:"execute",args:[l[0].to,l[0].value??0n,l[0].data??"0x"]}):ge({abi:Q,functionName:"executeBatch",args:[l.map(u=>({data:u.data??"0x",target:u.to,value:u.value??0n}))]})},async getAddress(){return o??=await We(t,{...s,functionName:"getAddress",args:[r.map(d),n]}),o},async getNonce(){let l=8n;return c=(c+1n)%(1n<<l),(BigInt(Date.now())<<l)+c<<64n},async getFactoryArgs(){let l=ge({abi:s.abi,functionName:"createAccount",args:[r.map(d),n]});return{factory:s.address,factoryData:l}},async getStubSignature(){return p.type==="webAuthn"?"0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000000001949fc7c88032b9fcb5f6efc7a7b8c63668eae9871b765e23123bb473ff57aa831a7c0d9276168ebcc29f2875a0239cffdf2a9cd1c2007c5c77c071db9264df1d000000000000000000000000000000000000000000000000000000000000002549960de5880e8c687434170f6476605b8fe4aeb9a28632c7995cf3ba831d97630500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008a7b2274797065223a22776562617574686e2e676574222c226368616c6c656e6765223a2273496a396e6164474850596759334b7156384f7a4a666c726275504b474f716d59576f4d57516869467773222c226f726967696e223a2268747470733a2f2f7369676e2e636f696e626173652e636f6d222c2263726f73734f726967696e223a66616c73657d00000000000000000000000000000000000000000000":D({signature:"0xfffffffffffffffffffffffffffffff0000000000000000000000000000000007aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1c",ownerIndex:a})},async sign(l){let u=await this.getAddress(),f=he({address:u,chainId:t.chain.id,hash:l.hash}),h=await V({hash:f,owner:p});return D({signature:h,ownerIndex:a})},async signMessage(l){let{message:u}=l,f=await this.getAddress(),h=he({address:f,chainId:t.chain.id,hash:Or(u)}),C=await V({hash:h,owner:p});return D({signature:C,ownerIndex:a})},async signTypedData(l){let{domain:u,types:f,primaryType:h,message:C}=l,y=await this.getAddress(),me=he({address:y,chainId:t.chain.id,hash:Ve({domain:u,message:C,primaryType:h,types:f})}),N=await V({hash:me,owner:p});return D({signature:N,ownerIndex:a})},async signUserOperation(l){let{chainId:u=t.chain.id,...f}=l,h=await this.getAddress(),C=Kr({chainId:u,entryPointAddress:i.address,entryPointVersion:i.version,userOperation:{...f,sender:h}}),y=await V({hash:C,owner:p});return D({signature:y,ownerIndex:a})},userOperation:{async estimateGas(l){if(p.type==="webAuthn")return{verificationGasLimit:BigInt(Math.max(Number(l.verificationGasLimit??0n),8e5))}}},async isOwner(l){return await We(t,{abi:Q,address:await this.getAddress(),functionName:"isOwnerBytes",args:[d(l)]})}})}async function V({hash:e,owner:t}){if(t.type==="webAuthn"){let{signature:r,webauthn:n}=await t.sign({hash:e});return Br({signature:r,webauthn:n})}if(t.sign)return t.sign({hash:e});throw new Dr("`owner` does not support raw sign.")}function he({address:e,chainId:t,hash:r}){return Ve({domain:{chainId:t,name:"Coinbase Smart Wallet",verifyingContract:e,version:"1"},types:{CoinbaseSmartWalletMessage:[{name:"hash",type:"bytes32"}]},primaryType:"CoinbaseSmartWalletMessage",message:{hash:r}})}function Br({webauthn:e,signature:t}){let{r,s:n}=Ur(t);return Qe([{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:Tr(e.clientDataJSON),challengeIndex:BigInt(e.challengeIndex),typeIndex:BigInt(e.typeIndex),r,s:n}])}function D(e){let{ownerIndex:t}=e,r=(()=>{if(Nr(e.signature)!==65)return e.signature;let n=Hr(e.signature);return Er(["bytes32","bytes32","uint8"],[n.r,n.s,n.yParity===0?27:28])})();return Qe([{components:[{name:"ownerIndex",type:"uint8"},{name:"signatureData",type:"bytes"}],type:"tuple"}],[{ownerIndex:t,signatureData:r}])}var Q=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[{name:"owner",type:"bytes"}],name:"AlreadyOwner",type:"error"},{inputs:[],name:"Initialized",type:"error"},{inputs:[{name:"owner",type:"bytes"}],name:"InvalidEthereumAddressOwner",type:"error"},{inputs:[{name:"key",type:"uint256"}],name:"InvalidNonceKey",type:"error"},{inputs:[{name:"owner",type:"bytes"}],name:"InvalidOwnerBytesLength",type:"error"},{inputs:[],name:"LastOwner",type:"error"},{inputs:[{name:"index",type:"uint256"}],name:"NoOwnerAtIndex",type:"error"},{inputs:[{name:"ownersRemaining",type:"uint256"}],name:"NotLastOwner",type:"error"},{inputs:[{name:"selector",type:"bytes4"}],name:"SelectorNotAllowed",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"UnauthorizedCallContext",type:"error"},{inputs:[],name:"UpgradeFailed",type:"error"},{inputs:[{name:"index",type:"uint256"},{name:"expectedOwner",type:"bytes"},{name:"actualOwner",type:"bytes"}],name:"WrongOwnerAtIndex",type:"error"},{anonymous:!1,inputs:[{indexed:!0,name:"index",type:"uint256"},{indexed:!1,name:"owner",type:"bytes"}],name:"AddOwner",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"index",type:"uint256"},{indexed:!1,name:"owner",type:"bytes"}],name:"RemoveOwner",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"implementation",type:"address"}],name:"Upgraded",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"REPLAYABLE_NONCE_KEY",outputs:[{name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{name:"owner",type:"address"}],name:"addOwnerAddress",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{name:"x",type:"bytes32"},{name:"y",type:"bytes32"}],name:"addOwnerPublicKey",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{name:"functionSelector",type:"bytes4"}],name:"canSkipChainIdValidation",outputs:[{name:"",type:"bool"}],stateMutability:"pure",type:"function"},{inputs:[],name:"domainSeparator",outputs:[{name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"eip712Domain",outputs:[{name:"fields",type:"bytes1"},{name:"name",type:"string"},{name:"version",type:"string"},{name:"chainId",type:"uint256"},{name:"verifyingContract",type:"address"},{name:"salt",type:"bytes32"},{name:"extensions",type:"uint256[]"}],stateMutability:"view",type:"function"},{inputs:[],name:"entryPoint",outputs:[{name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{name:"target",type:"address"},{name:"value",type:"uint256"},{name:"data",type:"bytes"}],name:"execute",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{components:[{name:"target",type:"address"},{name:"value",type:"uint256"},{name:"data",type:"bytes"}],name:"calls",type:"tuple[]"}],name:"executeBatch",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{name:"calls",type:"bytes[]"}],name:"executeWithoutChainIdValidation",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{components:[{name:"sender",type:"address"},{name:"nonce",type:"uint256"},{name:"initCode",type:"bytes"},{name:"callData",type:"bytes"},{name:"callGasLimit",type:"uint256"},{name:"verificationGasLimit",type:"uint256"},{name:"preVerificationGas",type:"uint256"},{name:"maxFeePerGas",type:"uint256"},{name:"maxPriorityFeePerGas",type:"uint256"},{name:"paymasterAndData",type:"bytes"},{name:"signature",type:"bytes"}],name:"userOp",type:"tuple"}],name:"getUserOpHashWithoutChainId",outputs:[{name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"implementation",outputs:[{name:"$",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{name:"owners",type:"bytes[]"}],name:"initialize",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{name:"account",type:"address"}],name:"isOwnerAddress",outputs:[{name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{name:"account",type:"bytes"}],name:"isOwnerBytes",outputs:[{name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{name:"x",type:"bytes32"},{name:"y",type:"bytes32"}],name:"isOwnerPublicKey",outputs:[{name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{name:"hash",type:"bytes32"},{name:"signature",type:"bytes"}],name:"isValidSignature",outputs:[{name:"result",type:"bytes4"}],stateMutability:"view",type:"function"},{inputs:[],name:"nextOwnerIndex",outputs:[{name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{name:"index",type:"uint256"}],name:"ownerAtIndex",outputs:[{name:"",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"ownerCount",outputs:[{name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"proxiableUUID",outputs:[{name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{name:"index",type:"uint256"},{name:"owner",type:"bytes"}],name:"removeLastOwner",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{name:"index",type:"uint256"},{name:"owner",type:"bytes"}],name:"removeOwnerAtIndex",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"removedOwnersCount",outputs:[{name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{name:"hash",type:"bytes32"}],name:"replaySafeHash",outputs:[{name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{name:"newImplementation",type:"address"},{name:"data",type:"bytes"}],name:"upgradeToAndCall",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{components:[{name:"sender",type:"address"},{name:"nonce",type:"uint256"},{name:"initCode",type:"bytes"},{name:"callData",type:"bytes"},{name:"callGasLimit",type:"uint256"},{name:"verificationGasLimit",type:"uint256"},{name:"preVerificationGas",type:"uint256"},{name:"maxFeePerGas",type:"uint256"},{name:"maxPriorityFeePerGas",type:"uint256"},{name:"paymasterAndData",type:"bytes"},{name:"signature",type:"bytes"}],name:"userOp",type:"tuple"},{name:"userOpHash",type:"bytes32"},{name:"missingAccountFunds",type:"uint256"}],name:"validateUserOp",outputs:[{name:"validationData",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}],Fr=[{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 z(e,t){let{publicKeys:r}=g.getState(),n=r[t];if(!n)throw new Error("No public key found for passkey credential.");let i=[Gr({credential:{id:t,publicKey:n}})];return await Y({client:e,owners:i})}import{bytesToHex as Jr,hashMessage as Zr}from"viem";import{sign as en}from"webauthn-p256";import{bytesToHex as _r,hexToBytes as Ye}from"webauthn-p256";import{concatBytes as Wr,utf8ToBytes as Vr}from"@noble/curves/abstract/utils";async function $(e){let{authenticatorData:t,challengeIndex:r,clientDataJSON:n,typeIndex:o,userVerificationRequired:i}=e,s=o||n.indexOf('"type"'),d=r||n.indexOf('"challenge"'),p=Ye(t);if(p.length<37)throw new Error("Invalid authenticatorData");let a=p[32];if((a&1)!==1)throw new Error("Invalid authenticatorData");if(i&&(a&4)!==4)throw new Error("Invalid authenticatorData");if((a&8)!==8&&(a&16)===16)throw new Error("Invalid authenticatorData");let c='"type":"webauthn.get"';if(c!==n.slice(Number(s),c.length+1))throw new Error("Invalid clientDataJSON");if(!n.slice(Number(d)).match(/^"challenge":"(.*?)"/))throw new Error("Invalid clientDataJSON");let u=new Uint8Array(await crypto.subtle.digest("SHA-256",Vr(n))),f=new Uint8Array(await crypto.subtle.digest("SHA-256",Wr(Ye(t),u)));return _r(f)}import{sign as Yr}from"webauthn-p256";import{parseSignature as Qr,serializePublicKey as $e}from"webauthn-p256";import{secp256r1 as Xe}from"@noble/curves/p256";function we(e){let{r:t,s:r}=Qr(e.signatureHex),n=new Xe.Signature(t,r).addRecoveryBit(1).recoverPublicKey(e.messageHash.slice(2)),o=new Xe.Signature(t,r).addRecoveryBit(0).recoverPublicKey(e.messageHash.slice(2));return[$e(n),$e(o)]}import{hashMessage as $r}from"viem";function Xr([e,t]){return jr([...we(e),...we(t)])}async function je(e){let t=$r(e.signatureHex),{signature:r,webauthn:n,raw:o}=await Yr({credentialId:e.credentialId,hash:t}),i=await $(n),s=Xr([e,{signatureHex:r,messageHash:i}]);if(s)return{publicKey:s,credential:o}}function jr(e){let t=new Set;for(let r of e){if(t.has(r))return r;t.add(r)}}async function be(){let e=Jr(crypto.getRandomValues(new Uint8Array(256))),t=Zr(e),{signature:r,webauthn:n,raw:o}=await en({hash:t}),i=await(async()=>{let s=g.getState().publicKeys[o.id];if(s)return s;let d=await $(n),p=await je({credentialId:o.id,messageHash:d,signatureHex:r});if(!p)throw new Error("recovery failed");if(p.credential.id!==o.id)throw new Error("wrong credential");return g.setState(a=>({publicKeys:{...a.publicKeys,[o.id]:p.publicKey}})),p.publicKey})();return console.log("recovered passkey",o.id,i),g.setState(()=>({activeCredential:o.id})),{id:o.id,publicKey:i,raw:o}}import{createCredential as tn}from"webauthn-p256";async function Je(){let e=await tn({name:"MUD Account"});return console.log("created passkey",e),g.setState(t=>({activeCredential:e.id,publicKeys:{...t.publicKeys,[e.id]:e.publicKey}})),e}import{resourceToHex as rn}from"@latticexyz/common";import{parseAbi as nn}from"viem";import on from"@latticexyz/world/mud.config";var X={pollingInterval:250},q=rn({type:"system",namespace:"",name:"unlimited"}),Ze=on.namespaces.world.tables,xe=nn(["function registerDelegation(address delegatee, bytes32 delegationControlId, bytes initCallData)"]);import{createBundlerClient as an}from"viem/account-abstraction";var sn=new Set([31337,17420,17069,690]);function j({paymasterAddress:e,...t}){let r=t.chain??t.client?.chain;return an({...X,paymaster:{getPaymasterData:async()=>({paymaster:e,paymasterData:"0x"})},userOperation:{estimateFeesPerGas:r&&sn.has(r.id)?async()=>({maxFeePerGas:100000n,maxPriorityFeePerGas:0n}):void 0},...t})}import{observer as En}from"@latticexyz/explorer/observer";import{transactionQueue as xn}from"@latticexyz/common/actions";import{createClient as vn,fallback as Cn,http as at,webSocket as An}from"viem";import{privateKeyToAccount as kn,generatePrivateKey as Pn}from"viem/accounts";import{createTransport as hn,numberToHex as wn}from"viem";import{entryPoint07Address as rt}from"viem/account-abstraction";import{formatUserOperationRequest as cn}from"viem/account-abstraction";async function J(e){return cn({callGasLimit:1000000n,preVerificationGas:100000n,verificationGasLimit:1000000n,paymasterVerificationGasLimit:100000n,paymasterPostOpGasLimit:100000n})}import{parseEther as dn}from"viem";import{formatUserOperation as pn,toPackedUserOperation as ln,getUserOperationHash as un,entryPoint07Address as et,entryPoint07Abi as mn}from"viem/account-abstraction";import{setBalance as fn,writeContract as yn}from"viem/actions";import{getAction as gn}from"viem/utils";async function tt({executor:e,rpcUserOp:t}){e.chain.id===31337&&await fn(e.extend(()=>({mode:"anvil"})),{address:e.account.address,value:dn("100")});let r=pn(t),n=r.preVerificationGas+r.verificationGasLimit+(r.paymasterVerificationGasLimit??0n)+(r.paymasterPostOpGasLimit??0n)+r.callGasLimit,o=ln(r),i=un({userOperation:r,chainId:e.chain.id,entryPointVersion:"0.7",entryPointAddress:et}),s=await gn(e,yn,"writeContract")({abi:mn,address:et,functionName:"handleOps",args:[[o],e.account.address],chain:e.chain,account:e.account,gas:n});return{success:!0,userOpHash:i,receipt:{transactionHash:s}}}function nt({executor:e}){return()=>{let t=new Map;return hn({key:"userOpExecutor",type:"userOpExecutor",name:"User Operation Executor Transport",request:async({method:n,params:o})=>{if(n==="eth_chainId")return wn(e.chain.id);if(n==="eth_supportedEntryPoints")return[rt];if(n==="eth_sendUserOperation"){let[i,s]=o;if(s===rt){let d=await tt({executor:e,rpcUserOp:i});return t.set(d.userOpHash,d),d.userOpHash}}if(n==="eth_getUserOperationReceipt"){let[i]=o;return t.get(i)??null}if(n==="eth_estimateUserOperationGas")return await J(o);throw new Error("Not implemented")}})}}function ot(e){return t=>{let{request:r,...n}=e(t);return{request:async({method:i,params:s},d)=>i==="eth_estimateUserOperationGas"?J(s):r({method:i,params:s},d),...n}}}import{http as bn}from"viem";function Z(e){return t=>{let r=t.chain?.rpcUrls&&"wiresaw"in t.chain.rpcUrls?bn(t.chain.rpcUrls.wiresaw.http[0]):void 0;if(!r)return e(t);let n=e(t),o=r(t),i=null,s=new Map,d=new Map;return{...n,request:async({method:a,params:c},l)=>{if(a==="eth_chainId")return i??(i=await n.request({method:a,params:c},l));if(a==="eth_call")return o.request({method:"wiresaw_call",params:c});if(a==="eth_getTransactionReceipt"){let[u]=c,f=s.get(u)??await n.request({method:a,params:c});return!s.has(u)&&f&&s.set(u,f),f}if(a==="eth_sendUserOperation"){let u=await o.request({method:"wiresaw_sendUserOperation",params:c});return d.set(u.userOpHash,{success:!0,userOpHash:u.userOpHash,receipt:{transactionHash:u.txHash}}),u.userOpHash}if(a==="eth_getUserOperationReceipt"){let[u]=c,f=d.get(u)??await n.request({method:a,params:c});return!d.has(u)&&f&&d.set(u,f),f}return await n.request({method:a,params:c},l)}}}}function ee(e){let t=e.rpcUrls.bundler?.http[0],r=e.rpcUrls.bundler?.http[0]?Z(ot(at(t))):e.id===31337?nt({executor:vn({chain:e,transport:Cn([An(),at()]),account:kn(Pn())}).extend(xn())}):null;if(!r)throw new Error(`Chain ${e.id} config did not include a bundler RPC URL.`);return r}R.type="passkey";function R({chainId:e}){return Tn(t=>{if(!t.transports)throw new Error("Wagmi must be configured with transports to use the passkey connector.");let r=t.chains.find(a=>a.id===e);if(!r)throw new Error(`Could not find configured chain for chain ID ${e}.`);let n=t.transports[r.id];if(!n)throw new Error(`Could not find configured transport for chain ID ${e}.`);let o=Z(n),i=F(r),s=ee(r),d=Sn({...X,chain:r,transport:o}),p=g.getState().activeCredential!=null;return{id:"passkey",type:R.type,name:"Passkey",async createPasskey(){let{id:a}=await Je(),c=await z(d,a);this.onAccountsChanged([c.address]),this.onConnect?.({chainId:it(e)})},async reusePasskey(){let{id:a}=await be(),c=await z(d,a);this.onAccountsChanged([c.address]),this.onConnect?.({chainId:it(e)})},hasPasskey(){return Object.keys(g.getState().publicKeys).length>0},async connect(a){if(console.log("connect"),a?.chainId!=null&&a.chainId!==e)throw new Error(`Can't connect to chain ${a.chainId}. Passkey connector is bound to chain ${e}.`);!g.getState().activeCredential&&!a?.isReconnecting&&await be();let c=await this.getAccounts();return p=c.length>0,{accounts:c,chainId:e}},async disconnect(){console.log("disconnect"),p=!1,g.setState({activeCredential:null})},async getAccounts(){console.log("getAccounts");let a=g.getState().activeCredential;if(!a)return[];try{console.log("getting account for credential",a);let c=await z(d,a);return console.log("got account",c),[c.address]}catch{console.log("could not get address for credential ID",a)}return[]},async getChainId(){return e},async isAuthorized(){return console.log("isAuthorized"),p?(await this.getAccounts()).length>0:!1},async switchChain(a){if(a.chainId!==e)throw new Error(`Can't connect to chain ${a.chainId}. Passkey connector is bound to chain ${e}.`);let c=t.chains.find(l=>l.id===a.chainId);if(!c)throw new In(new On);return c},onAccountsChanged(a){console.log("onAccountsChanged"),a.length>0?t.emitter.emit("change",{accounts:a.map(c=>Mn(c))}):this.onDisconnect()},onChainChanged(a){console.log("onChainChanged"),t.emitter.emit("change",{chainId:Number(a)})},async onConnect(a){console.log("onConnect");let c=await this.getAccounts();t.emitter.emit("connect",{accounts:c,chainId:e})},async onDisconnect(a){console.log("onDisconnect"),t.emitter.emit("disconnect"),p=!1},async getClient(a){console.log("passkeyConnector.getClient",a);let c=g.getState().activeCredential;if(!c)throw new Error("Not connected.");let l=await z(d,c);return j({paymasterAddress:i,transport:s,client:d,account:l}).extend(Nn()).extend(En())},async getProvider(a){return Rn({request:d.transport.request})({retryCount:0})}}})}function st(){let t=Hn().find(r=>r.type===R.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 Dn}from"tailwind-merge";import{jsx as ve,jsxs as zn}from"react/jsx-runtime";function k({className:e,...t}){return zn("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 8 8",fill:"currentColor",shapeRendering:"crispEdges",className:Dn("-my-[0.125em] h-[1.25em] w-[1.25em]",e),...t,children:[ve("path",{d:"M0 0h1v1H0zm0 1h1v1H0zm0 1h1v1H0zm0 1h1v1H0zm0 1h1v1H0zm0 1h1v1H0zm0 1h1v1H0zm0 1h1v1H0zm1 0h1v1H1zm1 0h1v1H2zm1 0h1v1H3zm1 0h1v1H4zm1 0h1v1H5zm2-1h1v1H7zm0 1h1v1H7zM6 7h1v1H6zm1-2h1v1H7zm0-1h1v1H7zm0-1h1v1H7z"}),ve("path",{d:"M2 2h1v1H2zm0 1h1v1H2zm0 1h1v1H2zm0 1h1v1H2zm1-3h1v1H3zm1 0h1v1H4zm1 0h1v1H5zm0 1h1v1H5zm0 1h1v1H5zm0 1h1v1H5zM4 5h1v1H4zM3 5h1v1H3z",opacity:".5"}),ve("path",{d:"M7 2h1v1H7zm0-1h1v1H7zM1 0h1v1H1zm1 0h1v1H2zm1 0h1v1H3zm1 0h1v1H4zm1 0h1v1H5zm1 0h1v1H6zm1 0h1v1H7z"})]})}function ct(){let{appInfo:e}=m(),t=e?.name??document.title,r=location.host,n=e?.icon??document.querySelector("link[rel~='icon']")?.getAttribute("href")??"/favico.ico",o=e?.image;return{appName:t,appOrigin:r,appIcon:n,appImage:o}}import{useQuery as qn}from"@tanstack/react-query";function te(e){return qn({enabled:!!e,retry:!1,retryOnMount:!1,refetchOnMount:!1,refetchOnWindowFocus:!1,queryKey:[e],queryFn:()=>new Promise((t,r)=>{if(!e)throw new Error("usePreloadImage: Must provide `url` to preload image.");let n=new Image;n.onload=()=>t(n),n.onerror=()=>r(new Error(`usePreloadImage: Could not load image.
|
|
1425
|
+
`;import{useResizeObserver as lr}from"usehooks-ts";import{mergeRefs as ur}from"react-merge-refs";import{createContext as tr,useContext as rr}from"react";import{jsx as nr}from"react/jsx-runtime";var Ne=tr(null);function Ee({frame:e,children:t}){if(rr(Ne))throw new Error("`FrameProvider` can only be used once.");return nr(Ne.Provider,{value:{frame:e},children:t})}import{useMediaQuery as sr}from"usehooks-ts";import"@rainbow-me/rainbowkit/styles.css";import{createContext as or,useContext as qe}from"react";import{RainbowKitProvider as ar,lightTheme as He,midnightTheme as De}from"@rainbow-me/rainbowkit";import{useChains as ir}from"wagmi";function G(e){let t=e.contracts?.quarryPaymaster&&"address"in e.contracts.quarryPaymaster?e.contracts?.quarryPaymaster.address:void 0;if(!t)throw new Error(`Chain ${e.id} config did not include a \`quarryPaymaster\` contract address.`);return t}import{jsx as ze}from"react/jsx-runtime";var fe=or(null);function Ke({config:e,children:t}){if(qe(fe))throw new Error("`EntryKitProvider` can only be used once.");let o=ir().find(({id:s})=>s===e.chainId);if(!o)throw new Error(`Could not find configured chain for chain ID ${e.chainId}.`);let i=G(o);return ze(ar,{initialChain:e.chainId,appInfo:{appName:e.appName},theme:e.theme==="light"?He({borderRadius:"none"}):e.theme==="dark"?De({borderRadius:"none"}):{lightMode:He({borderRadius:"none"}),darkMode:De({borderRadius:"none"})},children:ze(fe.Provider,{value:{...e,chain:o,paymasterAddress:i},children:t})})}function m(){let e=qe(fe);if(!e)throw new Error("`useEntryKitConfig` can only be used within a `EntryKitProvider`.");return e}function Le(){let{theme:e}=m(),t=sr("(prefers-color-scheme: dark)");return e??(t?"dark":"light")}import{jsx as H,jsxs as fr}from"react/jsx-runtime";function mr({onSize:e,...t}){let r=Be(null);return lr({ref:r,onResize:e}),H("div",{ref:r,...t,style:{...t.style,display:"inline-grid"}})}var _=cr(function({mode:t,children:r},n){let o=Be(null),[i,s]=Ue(!1),d=i?o.current:null,[p,a]=Ue({width:void 0,height:void 0}),c=d?.contentDocument,l=Le();dr(()=>{c&&c.body.setAttribute("data-theme",l)},[c,l]);let u=t==="modal"?{all:"unset",display:"block",position:"fixed",inset:"0",width:"100%",height:"100%",zIndex:"2147483646"}:p.width&&p.height?{all:"unset",display:"inline-grid",width:`${p.width}px`,height:`${p.height}px`}:{all:"unset",display:"block",position:"fixed",inset:"0",width:"100%",height:"100%",opacity:0,pointerEvents:"none"};return H("iframe",{ref:ur([n,o]),style:u,onLoad:()=>s(!0),srcDoc:"<!doctype html><title>\u2026</title>",children:c?pr.createPortal(fr(Ee,{frame:d,children:[H("div",{children:t==="modal"?r:H(mr,{onSize:a,children:r})}),H("style",{dangerouslySetInnerHTML:{__html:Te}})]}),c.body):null})});import{twMerge as Fe}from"tailwind-merge";import{jsx as S,jsxs as wr}from"react/jsx-runtime";function Ge({open:e,onOpenChange:t,children:r}){return S(yr,{open:e,onOpenChange:t,children:S(gr,{children:wr(_,{mode:"modal",children:[S("div",{className:Fe("fixed inset-0","bg-neutral-800/85","animate-in animate-duration-300 fade-in")}),S("div",{className:Fe("fixed inset-0","grid items-end sm:items-center","animate-in animate-duration-300 fade-in slide-in-from-bottom-16"),children:S("div",{children:S(hr,{className:"outline-none w-full max-w-[26rem] mx-auto","aria-describedby":void 0,onOpenAutoFocus:n=>{n.preventDefault()},children:r})})})]})})})}import{useCallback as ye,useMemo as br}from"react";import{useStore as xr}from"zustand";import{createStore as vr}from"zustand/vanilla";var W=vr(()=>({open:!1}));function w(){let e=xr(W,o=>o.open),t=ye(()=>{W.setState({open:!0})},[]),r=ye(()=>{W.setState({open:!1})},[]),n=ye(o=>{W.setState({open:o})},[]);return br(()=>({accountModalOpen:e,openAccountModal:t,closeAccountModal:r,toggleAccountModal:n}),[e,t,r,n])}import{twMerge as Bt}from"tailwind-merge";import{useAccount as Bo,useConnectorClient as Fo}from"wagmi";import{useAccount as Ln}from"wagmi";import{twMerge as V}from"tailwind-merge";import{twMerge as Cr}from"tailwind-merge";import{jsx as _e,jsxs as Ar}from"react/jsx-runtime";function A({className:e,...t}){return Ar("svg",{className:Cr("-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:[_e("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),_e("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]})}import{jsx as D,jsxs as Pr}from"react/jsx-runtime";var kr=({variant:e="primary"}={})=>V("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:V("bg-neutral-700 text-white"),secondary:V("bg-neutral-800 text-white")}[e]),b=({pending:e,variant:t,type:r,className:n,children:o,disabled:i,...s})=>D("button",{type:r||"button",className:V(kr({variant:t,pending:e}),n),"aria-busy":e,"aria-disabled":i,disabled:i||e,...s,children:Pr("span",{className:"grid grid-cols-[1fr_auto_1fr] gap-2",children:[D("span",{className:"flex items-center justify-end text-[.75em]",children:D("span",{className:"transition opacity-0 translate-x-2 group-aria-busy:opacity-100 group-aria-busy:translate-x-0 duration-100 group-aria-busy:duration-300",children:D(A,{})})}),D("span",{children:o})]})});import{useConnectModal as Un}from"@rainbow-me/rainbowkit";import{useMutation as pt}from"@tanstack/react-query";import{useConnectors as Hn}from"wagmi";import{createClient as Sn,custom as Rn,getAddress as Mn,numberToHex as it,SwitchChainError as In}from"viem";import{ChainNotConfiguredError as On,createConnector as Tn}from"wagmi";import{createStore as Sr}from"zustand/vanilla";import{persist as Rr}from"zustand/middleware";var g=Sr(Rr(()=>({publicKeys:{},activeCredential:null}),{name:"mud:passkey:cache"}));function Mr(e){e.key===g.persist.getOptions().name&&g.persist.rehydrate()}window.addEventListener("storage",Mr);import{smartAccountActions as Nn}from"permissionless/clients";import{toWebAuthnAccount as Gr}from"viem/account-abstraction";import{pad as Ir,encodeFunctionData as ge,hashMessage as Or,hashTypedData as Ve,encodeAbiParameters as Qe,stringToHex as Tr,size as Nr,encodePacked as Er,parseSignature as Hr,BaseError as Dr}from"viem";import{entryPoint07Abi as zr,entryPoint07Address as qr,getUserOperationHash as Kr,toSmartAccount as Lr}from"viem/account-abstraction";import{readContract as We}from"viem/actions";import{parseSignature as Ur}from"webauthn-p256";async function $(e){let{client:t,owners:r,nonce:n=0n}=e,o=e.address,i={abi:zr,address:qr,version:"0.7"},s={abi:Fr,address:"0x356336adA1619BeC1Ae4E6D94Dd9c0490DA414a8"};if(!r.length)throw new Error("`owners` must have at least one account.");function d(l){return l.type==="webAuthn"?l.publicKey:Ir(l.address)}let p=e.signer??r[0],a=r.indexOf(p);if(a===-1)throw new Error("`signer` must be one of `owners`.");let c=0n;return Lr({client:t,entryPoint:i,extend:{__isCoinbaseSmartAccount:!0,abi:Y,factory:s,signer:p},async encodeCalls(l){return l.length===1?ge({abi:Y,functionName:"execute",args:[l[0].to,l[0].value??0n,l[0].data??"0x"]}):ge({abi:Y,functionName:"executeBatch",args:[l.map(u=>({data:u.data??"0x",target:u.to,value:u.value??0n}))]})},async getAddress(){return o??=await We(t,{...s,functionName:"getAddress",args:[r.map(d),n]}),o},async getNonce(){let l=8n;return c=(c+1n)%(1n<<l),(BigInt(Date.now())<<l)+c<<64n},async getFactoryArgs(){let l=ge({abi:s.abi,functionName:"createAccount",args:[r.map(d),n]});return{factory:s.address,factoryData:l}},async getStubSignature(){return p.type==="webAuthn"?"0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000000001949fc7c88032b9fcb5f6efc7a7b8c63668eae9871b765e23123bb473ff57aa831a7c0d9276168ebcc29f2875a0239cffdf2a9cd1c2007c5c77c071db9264df1d000000000000000000000000000000000000000000000000000000000000002549960de5880e8c687434170f6476605b8fe4aeb9a28632c7995cf3ba831d97630500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008a7b2274797065223a22776562617574686e2e676574222c226368616c6c656e6765223a2273496a396e6164474850596759334b7156384f7a4a666c726275504b474f716d59576f4d57516869467773222c226f726967696e223a2268747470733a2f2f7369676e2e636f696e626173652e636f6d222c2263726f73734f726967696e223a66616c73657d00000000000000000000000000000000000000000000":z({signature:"0xfffffffffffffffffffffffffffffff0000000000000000000000000000000007aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1c",ownerIndex:a})},async sign(l){let u=await this.getAddress(),f=he({address:u,chainId:t.chain.id,hash:l.hash}),h=await Q({hash:f,owner:p});return z({signature:h,ownerIndex:a})},async signMessage(l){let{message:u}=l,f=await this.getAddress(),h=he({address:f,chainId:t.chain.id,hash:Or(u)}),C=await Q({hash:h,owner:p});return z({signature:C,ownerIndex:a})},async signTypedData(l){let{domain:u,types:f,primaryType:h,message:C}=l,y=await this.getAddress(),me=he({address:y,chainId:t.chain.id,hash:Ve({domain:u,message:C,primaryType:h,types:f})}),E=await Q({hash:me,owner:p});return z({signature:E,ownerIndex:a})},async signUserOperation(l){let{chainId:u=t.chain.id,...f}=l,h=await this.getAddress(),C=Kr({chainId:u,entryPointAddress:i.address,entryPointVersion:i.version,userOperation:{...f,sender:h}}),y=await Q({hash:C,owner:p});return z({signature:y,ownerIndex:a})},userOperation:{async estimateGas(l){if(p.type==="webAuthn")return{verificationGasLimit:BigInt(Math.max(Number(l.verificationGasLimit??0n),8e5))}}},async isOwner(l){return await We(t,{abi:Y,address:await this.getAddress(),functionName:"isOwnerBytes",args:[d(l)]})}})}async function Q({hash:e,owner:t}){if(t.type==="webAuthn"){let{signature:r,webauthn:n}=await t.sign({hash:e});return Br({signature:r,webauthn:n})}if(t.sign)return t.sign({hash:e});throw new Dr("`owner` does not support raw sign.")}function he({address:e,chainId:t,hash:r}){return Ve({domain:{chainId:t,name:"Coinbase Smart Wallet",verifyingContract:e,version:"1"},types:{CoinbaseSmartWalletMessage:[{name:"hash",type:"bytes32"}]},primaryType:"CoinbaseSmartWalletMessage",message:{hash:r}})}function Br({webauthn:e,signature:t}){let{r,s:n}=Ur(t);return Qe([{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:Tr(e.clientDataJSON),challengeIndex:BigInt(e.challengeIndex),typeIndex:BigInt(e.typeIndex),r,s:n}])}function z(e){let{ownerIndex:t}=e,r=(()=>{if(Nr(e.signature)!==65)return e.signature;let n=Hr(e.signature);return Er(["bytes32","bytes32","uint8"],[n.r,n.s,n.yParity===0?27:28])})();return Qe([{components:[{name:"ownerIndex",type:"uint8"},{name:"signatureData",type:"bytes"}],type:"tuple"}],[{ownerIndex:t,signatureData:r}])}var Y=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[{name:"owner",type:"bytes"}],name:"AlreadyOwner",type:"error"},{inputs:[],name:"Initialized",type:"error"},{inputs:[{name:"owner",type:"bytes"}],name:"InvalidEthereumAddressOwner",type:"error"},{inputs:[{name:"key",type:"uint256"}],name:"InvalidNonceKey",type:"error"},{inputs:[{name:"owner",type:"bytes"}],name:"InvalidOwnerBytesLength",type:"error"},{inputs:[],name:"LastOwner",type:"error"},{inputs:[{name:"index",type:"uint256"}],name:"NoOwnerAtIndex",type:"error"},{inputs:[{name:"ownersRemaining",type:"uint256"}],name:"NotLastOwner",type:"error"},{inputs:[{name:"selector",type:"bytes4"}],name:"SelectorNotAllowed",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"UnauthorizedCallContext",type:"error"},{inputs:[],name:"UpgradeFailed",type:"error"},{inputs:[{name:"index",type:"uint256"},{name:"expectedOwner",type:"bytes"},{name:"actualOwner",type:"bytes"}],name:"WrongOwnerAtIndex",type:"error"},{anonymous:!1,inputs:[{indexed:!0,name:"index",type:"uint256"},{indexed:!1,name:"owner",type:"bytes"}],name:"AddOwner",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"index",type:"uint256"},{indexed:!1,name:"owner",type:"bytes"}],name:"RemoveOwner",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"implementation",type:"address"}],name:"Upgraded",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"REPLAYABLE_NONCE_KEY",outputs:[{name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{name:"owner",type:"address"}],name:"addOwnerAddress",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{name:"x",type:"bytes32"},{name:"y",type:"bytes32"}],name:"addOwnerPublicKey",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{name:"functionSelector",type:"bytes4"}],name:"canSkipChainIdValidation",outputs:[{name:"",type:"bool"}],stateMutability:"pure",type:"function"},{inputs:[],name:"domainSeparator",outputs:[{name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"eip712Domain",outputs:[{name:"fields",type:"bytes1"},{name:"name",type:"string"},{name:"version",type:"string"},{name:"chainId",type:"uint256"},{name:"verifyingContract",type:"address"},{name:"salt",type:"bytes32"},{name:"extensions",type:"uint256[]"}],stateMutability:"view",type:"function"},{inputs:[],name:"entryPoint",outputs:[{name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{name:"target",type:"address"},{name:"value",type:"uint256"},{name:"data",type:"bytes"}],name:"execute",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{components:[{name:"target",type:"address"},{name:"value",type:"uint256"},{name:"data",type:"bytes"}],name:"calls",type:"tuple[]"}],name:"executeBatch",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{name:"calls",type:"bytes[]"}],name:"executeWithoutChainIdValidation",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{components:[{name:"sender",type:"address"},{name:"nonce",type:"uint256"},{name:"initCode",type:"bytes"},{name:"callData",type:"bytes"},{name:"callGasLimit",type:"uint256"},{name:"verificationGasLimit",type:"uint256"},{name:"preVerificationGas",type:"uint256"},{name:"maxFeePerGas",type:"uint256"},{name:"maxPriorityFeePerGas",type:"uint256"},{name:"paymasterAndData",type:"bytes"},{name:"signature",type:"bytes"}],name:"userOp",type:"tuple"}],name:"getUserOpHashWithoutChainId",outputs:[{name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"implementation",outputs:[{name:"$",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{name:"owners",type:"bytes[]"}],name:"initialize",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{name:"account",type:"address"}],name:"isOwnerAddress",outputs:[{name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{name:"account",type:"bytes"}],name:"isOwnerBytes",outputs:[{name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{name:"x",type:"bytes32"},{name:"y",type:"bytes32"}],name:"isOwnerPublicKey",outputs:[{name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{name:"hash",type:"bytes32"},{name:"signature",type:"bytes"}],name:"isValidSignature",outputs:[{name:"result",type:"bytes4"}],stateMutability:"view",type:"function"},{inputs:[],name:"nextOwnerIndex",outputs:[{name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{name:"index",type:"uint256"}],name:"ownerAtIndex",outputs:[{name:"",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"ownerCount",outputs:[{name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"proxiableUUID",outputs:[{name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{name:"index",type:"uint256"},{name:"owner",type:"bytes"}],name:"removeLastOwner",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{name:"index",type:"uint256"},{name:"owner",type:"bytes"}],name:"removeOwnerAtIndex",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"removedOwnersCount",outputs:[{name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{name:"hash",type:"bytes32"}],name:"replaySafeHash",outputs:[{name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{name:"newImplementation",type:"address"},{name:"data",type:"bytes"}],name:"upgradeToAndCall",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{components:[{name:"sender",type:"address"},{name:"nonce",type:"uint256"},{name:"initCode",type:"bytes"},{name:"callData",type:"bytes"},{name:"callGasLimit",type:"uint256"},{name:"verificationGasLimit",type:"uint256"},{name:"preVerificationGas",type:"uint256"},{name:"maxFeePerGas",type:"uint256"},{name:"maxPriorityFeePerGas",type:"uint256"},{name:"paymasterAndData",type:"bytes"},{name:"signature",type:"bytes"}],name:"userOp",type:"tuple"},{name:"userOpHash",type:"bytes32"},{name:"missingAccountFunds",type:"uint256"}],name:"validateUserOp",outputs:[{name:"validationData",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}],Fr=[{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 q(e,t){let{publicKeys:r}=g.getState(),n=r[t];if(!n)throw new Error("No public key found for passkey credential.");let i=[Gr({credential:{id:t,publicKey:n}})];return await $({client:e,owners:i})}import{bytesToHex as Jr,hashMessage as Zr}from"viem";import{sign as en}from"webauthn-p256";import{bytesToHex as _r,hexToBytes as Ye}from"webauthn-p256";import{concatBytes as Wr,utf8ToBytes as Vr}from"@noble/curves/abstract/utils";async function j(e){let{authenticatorData:t,challengeIndex:r,clientDataJSON:n,typeIndex:o,userVerificationRequired:i}=e,s=o||n.indexOf('"type"'),d=r||n.indexOf('"challenge"'),p=Ye(t);if(p.length<37)throw new Error("Invalid authenticatorData");let a=p[32];if((a&1)!==1)throw new Error("Invalid authenticatorData");if(i&&(a&4)!==4)throw new Error("Invalid authenticatorData");if((a&8)!==8&&(a&16)===16)throw new Error("Invalid authenticatorData");let c='"type":"webauthn.get"';if(c!==n.slice(Number(s),c.length+1))throw new Error("Invalid clientDataJSON");if(!n.slice(Number(d)).match(/^"challenge":"(.*?)"/))throw new Error("Invalid clientDataJSON");let u=new Uint8Array(await crypto.subtle.digest("SHA-256",Vr(n))),f=new Uint8Array(await crypto.subtle.digest("SHA-256",Wr(Ye(t),u)));return _r(f)}import{sign as Yr}from"webauthn-p256";import{parseSignature as Qr,serializePublicKey as $e}from"webauthn-p256";import{secp256r1 as je}from"@noble/curves/p256";function we(e){let{r:t,s:r}=Qr(e.signatureHex),n=new je.Signature(t,r).addRecoveryBit(1).recoverPublicKey(e.messageHash.slice(2)),o=new je.Signature(t,r).addRecoveryBit(0).recoverPublicKey(e.messageHash.slice(2));return[$e(n),$e(o)]}import{hashMessage as $r}from"viem";function jr([e,t]){return Xr([...we(e),...we(t)])}async function Xe(e){let t=$r(e.signatureHex),{signature:r,webauthn:n,raw:o}=await Yr({credentialId:e.credentialId,hash:t}),i=await j(n),s=jr([e,{signatureHex:r,messageHash:i}]);if(s)return{publicKey:s,credential:o}}function Xr(e){let t=new Set;for(let r of e){if(t.has(r))return r;t.add(r)}}async function be(){let e=Jr(crypto.getRandomValues(new Uint8Array(256))),t=Zr(e),{signature:r,webauthn:n,raw:o}=await en({hash:t}),i=await(async()=>{let s=g.getState().publicKeys[o.id];if(s)return s;let d=await j(n),p=await Xe({credentialId:o.id,messageHash:d,signatureHex:r});if(!p)throw new Error("recovery failed");if(p.credential.id!==o.id)throw new Error("wrong credential");return g.setState(a=>({publicKeys:{...a.publicKeys,[o.id]:p.publicKey}})),p.publicKey})();return console.log("recovered passkey",o.id,i),g.setState(()=>({activeCredential:o.id})),{id:o.id,publicKey:i,raw:o}}import{createCredential as tn}from"webauthn-p256";async function Je(){let e=await tn({name:"MUD Account"});return console.log("created passkey",e),g.setState(t=>({activeCredential:e.id,publicKeys:{...t.publicKeys,[e.id]:e.publicKey}})),e}import{resourceToHex as rn}from"@latticexyz/common";import{parseAbi as nn}from"viem";import on from"@latticexyz/world/mud.config";var X={pollingInterval:250},K=rn({type:"system",namespace:"",name:"unlimited"}),Ze=on.namespaces.world.tables,xe=nn(["function registerDelegation(address delegatee, bytes32 delegationControlId, bytes initCallData)"]);import{createBundlerClient as an}from"viem/account-abstraction";var sn=new Set([31337,17420,17069,690]);function J({paymasterAddress:e,...t}){let r=t.chain??t.client?.chain;return an({...X,paymaster:{getPaymasterData:async()=>({paymaster:e,paymasterData:"0x"})},userOperation:{estimateFeesPerGas:r&&sn.has(r.id)?async()=>({maxFeePerGas:100000n,maxPriorityFeePerGas:0n}):void 0},...t})}import{observer as En}from"@latticexyz/explorer/observer";import{transactionQueue as xn}from"@latticexyz/common/actions";import{createClient as vn,fallback as Cn,http as at,webSocket as An}from"viem";import{privateKeyToAccount as kn,generatePrivateKey as Pn}from"viem/accounts";import{createTransport as hn,numberToHex as wn}from"viem";import{entryPoint07Address as rt}from"viem/account-abstraction";import{formatUserOperationRequest as cn}from"viem/account-abstraction";async function Z(e){return cn({callGasLimit:1000000n,preVerificationGas:100000n,verificationGasLimit:1000000n,paymasterVerificationGasLimit:100000n,paymasterPostOpGasLimit:100000n})}import{parseEther as dn}from"viem";import{formatUserOperation as pn,toPackedUserOperation as ln,getUserOperationHash as un,entryPoint07Address as et,entryPoint07Abi as mn}from"viem/account-abstraction";import{setBalance as fn,writeContract as yn}from"viem/actions";import{getAction as gn}from"viem/utils";async function tt({executor:e,rpcUserOp:t}){e.chain.id===31337&&await fn(e.extend(()=>({mode:"anvil"})),{address:e.account.address,value:dn("100")});let r=pn(t),n=r.preVerificationGas+r.verificationGasLimit+(r.paymasterVerificationGasLimit??0n)+(r.paymasterPostOpGasLimit??0n)+r.callGasLimit,o=ln(r),i=un({userOperation:r,chainId:e.chain.id,entryPointVersion:"0.7",entryPointAddress:et}),s=await gn(e,yn,"writeContract")({abi:mn,address:et,functionName:"handleOps",args:[[o],e.account.address],chain:e.chain,account:e.account,gas:n});return{success:!0,userOpHash:i,receipt:{transactionHash:s}}}function nt({executor:e}){return()=>{let t=new Map;return hn({key:"userOpExecutor",type:"userOpExecutor",name:"User Operation Executor Transport",request:async({method:n,params:o})=>{if(n==="eth_chainId")return wn(e.chain.id);if(n==="eth_supportedEntryPoints")return[rt];if(n==="eth_sendUserOperation"){let[i,s]=o;if(s===rt){let d=await tt({executor:e,rpcUserOp:i});return t.set(d.userOpHash,d),d.userOpHash}}if(n==="eth_getUserOperationReceipt"){let[i]=o;return t.get(i)??null}if(n==="eth_estimateUserOperationGas")return await Z(o);throw new Error("Not implemented")}})}}function ot(e){return t=>{let{request:r,...n}=e(t);return{request:async({method:i,params:s},d)=>i==="eth_estimateUserOperationGas"?Z(s):r({method:i,params:s},d),...n}}}import{http as bn}from"viem";function R(e){return t=>{let r=t.chain?.rpcUrls&&"wiresaw"in t.chain.rpcUrls?bn(t.chain.rpcUrls.wiresaw.http[0]):void 0;if(!r)return e(t);let n=e(t),o=r(t),i=null,s=new Map,d=new Map;return{...n,request:async({method:a,params:c},l)=>{if(a==="eth_chainId")return i??(i=await n.request({method:a,params:c},l));if(a==="eth_call")return o.request({method:"wiresaw_call",params:c});if(a==="eth_getTransactionReceipt"){let[u]=c,f=s.get(u)??await n.request({method:a,params:c});return!s.has(u)&&f&&s.set(u,f),f}if(a==="eth_sendUserOperation"){let u=await o.request({method:"wiresaw_sendUserOperation",params:c});return d.set(u.userOpHash,{success:!0,userOpHash:u.userOpHash,receipt:{transactionHash:u.txHash}}),u.userOpHash}if(a==="eth_getUserOperationReceipt"){let[u]=c,f=d.get(u)??await n.request({method:a,params:c});return!d.has(u)&&f&&d.set(u,f),f}return await n.request({method:a,params:c},l)}}}}function ee(e){let t=e.rpcUrls.bundler?.http[0],r=e.rpcUrls.bundler?.http[0]?R(ot(at(t))):e.id===31337?nt({executor:vn({chain:e,transport:Cn([An(),at()]),account:kn(Pn())}).extend(xn())}):null;if(!r)throw new Error(`Chain ${e.id} config did not include a bundler RPC URL.`);return r}M.type="passkey";function M({chainId:e}){return Tn(t=>{if(!t.transports)throw new Error("Wagmi must be configured with transports to use the passkey connector.");let r=t.chains.find(a=>a.id===e);if(!r)throw new Error(`Could not find configured chain for chain ID ${e}.`);let n=t.transports[r.id];if(!n)throw new Error(`Could not find configured transport for chain ID ${e}.`);let o=R(n),i=G(r),s=ee(r),d=Sn({...X,chain:r,transport:o}),p=g.getState().activeCredential!=null;return{id:"passkey",type:M.type,name:"Passkey",async createPasskey(){let{id:a}=await Je(),c=await q(d,a);this.onAccountsChanged([c.address]),this.onConnect?.({chainId:it(e)})},async reusePasskey(){let{id:a}=await be(),c=await q(d,a);this.onAccountsChanged([c.address]),this.onConnect?.({chainId:it(e)})},hasPasskey(){return Object.keys(g.getState().publicKeys).length>0},async connect(a){if(console.log("connect"),a?.chainId!=null&&a.chainId!==e)throw new Error(`Can't connect to chain ${a.chainId}. Passkey connector is bound to chain ${e}.`);!g.getState().activeCredential&&!a?.isReconnecting&&await be();let c=await this.getAccounts();return p=c.length>0,{accounts:c,chainId:e}},async disconnect(){console.log("disconnect"),p=!1,g.setState({activeCredential:null})},async getAccounts(){console.log("getAccounts");let a=g.getState().activeCredential;if(!a)return[];try{console.log("getting account for credential",a);let c=await q(d,a);return console.log("got account",c),[c.address]}catch{console.log("could not get address for credential ID",a)}return[]},async getChainId(){return e},async isAuthorized(){return console.log("isAuthorized"),p?(await this.getAccounts()).length>0:!1},async switchChain(a){if(a.chainId!==e)throw new Error(`Can't connect to chain ${a.chainId}. Passkey connector is bound to chain ${e}.`);let c=t.chains.find(l=>l.id===a.chainId);if(!c)throw new In(new On);return c},onAccountsChanged(a){console.log("onAccountsChanged"),a.length>0?t.emitter.emit("change",{accounts:a.map(c=>Mn(c))}):this.onDisconnect()},onChainChanged(a){console.log("onChainChanged"),t.emitter.emit("change",{chainId:Number(a)})},async onConnect(a){console.log("onConnect");let c=await this.getAccounts();t.emitter.emit("connect",{accounts:c,chainId:e})},async onDisconnect(a){console.log("onDisconnect"),t.emitter.emit("disconnect"),p=!1},async getClient(a){console.log("passkeyConnector.getClient",a);let c=g.getState().activeCredential;if(!c)throw new Error("Not connected.");let l=await q(d,c);return J({paymasterAddress:i,transport:s,client:d,account:l}).extend(Nn()).extend(En())},async getProvider(a){return Rn({request:d.transport.request})({retryCount:0})}}})}function st(){let t=Hn().find(r=>r.type===M.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 Dn}from"tailwind-merge";import{jsx as ve,jsxs as zn}from"react/jsx-runtime";function k({className:e,...t}){return zn("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 8 8",fill:"currentColor",shapeRendering:"crispEdges",className:Dn("-my-[0.125em] h-[1.25em] w-[1.25em]",e),...t,children:[ve("path",{d:"M0 0h1v1H0zm0 1h1v1H0zm0 1h1v1H0zm0 1h1v1H0zm0 1h1v1H0zm0 1h1v1H0zm0 1h1v1H0zm0 1h1v1H0zm1 0h1v1H1zm1 0h1v1H2zm1 0h1v1H3zm1 0h1v1H4zm1 0h1v1H5zm2-1h1v1H7zm0 1h1v1H7zM6 7h1v1H6zm1-2h1v1H7zm0-1h1v1H7zm0-1h1v1H7z"}),ve("path",{d:"M2 2h1v1H2zm0 1h1v1H2zm0 1h1v1H2zm0 1h1v1H2zm1-3h1v1H3zm1 0h1v1H4zm1 0h1v1H5zm0 1h1v1H5zm0 1h1v1H5zm0 1h1v1H5zM4 5h1v1H4zM3 5h1v1H3z",opacity:".5"}),ve("path",{d:"M7 2h1v1H7zm0-1h1v1H7zM1 0h1v1H1zm1 0h1v1H2zm1 0h1v1H3zm1 0h1v1H4zm1 0h1v1H5zm1 0h1v1H6zm1 0h1v1H7z"})]})}function ct(){let{appInfo:e}=m(),t=e?.name??document.title,r=location.host,n=e?.icon??document.querySelector("link[rel~='icon']")?.getAttribute("href")??"/favico.ico",o=e?.image;return{appName:t,appOrigin:r,appIcon:n,appImage:o}}import{useQuery as qn}from"@tanstack/react-query";function te(e){return qn({enabled:!!e,retry:!1,retryOnMount:!1,refetchOnMount:!1,refetchOnWindowFocus:!1,queryKey:[e],queryFn:()=>new Promise((t,r)=>{if(!e)throw new Error("usePreloadImage: Must provide `url` to preload image.");let n=new Image;n.onload=()=>t(n),n.onerror=()=>r(new Error(`usePreloadImage: Could not load image.
|
|
1426
1426
|
|
|
1427
|
-
URL: ${e}`)),n.src=e})})}import{jsx as re,jsxs as Kn}from"react/jsx-runtime";function dt(){let{appName:e,appIcon:t}=ct(),{data:r,isLoading:n}=te(t);return Kn("div",{className:"flex-grow flex flex-col items-center justify-center gap-2",children:[re("div",{className:"w-16 h-16 m-2",children:n?null:r?re("img",{src:t,className:"w-full h-full object-cover"}):re(k,{className:"w-full h-full text-orange-500 dark:bg-neutral-800"})}),re("div",{className:"text-2xl text-white text-center",children:e})]})}import{twMerge as Bn}from"tailwind-merge";import{jsx as K,jsxs as lt}from"react/jsx-runtime";function ut(){let e=Ln(),{accountModalOpen:t}=w(),{openConnectModal:r,connectModalOpen:n}=Un(),o=st(),i=pt({onError:a=>console.error(a),mutationKey:["createPasskey",o.id,t,n,e.status],mutationFn:()=>o.createPasskey()}),s=pt({onError:a=>console.error(a),mutationKey:["reusePasskey",o.id,t,n,e.status],mutationFn:()=>o.reusePasskey()}),d=o.hasPasskey(),p=[K(b,{variant:d?"secondary":"primary",className:"self-auto flex justify-center",pending:i.status==="pending",onClick:()=>i.mutate(),autoFocus:!d,children:"Create account"},"create"),K(b,{variant:d?"primary":"secondary",className:"self-auto flex justify-center",pending:s.status==="pending",onClick:()=>s.mutate(),autoFocus:d,children:"Sign in"},"signin")];return d&&p.reverse(),lt("div",{className:Bn("flex flex-col gap-6 p-6","animate-in animate-duration-300 fade-in slide-in-from-bottom-8"),children:[K("div",{className:"p-4",children:K(dt,{})}),lt("div",{className:"self-center flex flex-col gap-2 w-60",children:[p,K("button",{className:"text-sm self-center transition text-neutral-500 hover:text-white p-2",disabled:e.status==="connecting",onClick:r,children:"Already have a wallet?"})]})]})}import{useEffect as qo,useMemo as Ko,useRef as Lo,useState as Uo}from"react";import{twMerge as Ie}from"tailwind-merge";import{parseEther as Fn}from"viem";var ne=Fn("0.01");import{useClient as Zn}from"wagmi";import{queryOptions as eo,useQuery as to}from"@tanstack/react-query";import{defineStore as Gn}from"@latticexyz/store";import{parseAbi as _n}from"viem";var Ce=_n(["error SpenderSystem_AlreadyRegistered(address spender, address user)","error SpenderSystem_HasOwnBalance(address spender)","function registerSpender(address spender)"]),Wn=Gn({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:[]}}}}}),oe=Wn.namespaces.root.tables;import{decodeValueArgs as Vn,getKeyTuple as Qn,getSchemaTypes as Yn,getValueSchema as $n}from"@latticexyz/protocol-parser/internal";import{readContract as Xn}from"viem/actions";import{getAction as jn}from"viem/utils";async function M(e,{address:t,table:r,key:n,blockTag:o}){let[i,s,d]=await jn(e,Xn,"readContract")({address:t,abi:Jn,functionName:"getRecord",args:[r.tableId,Qn(r,n)],blockTag:o});return{...n,...Vn(Yn($n(r)),{staticData:i,encodedLengths:s,dynamicData:d})}}var Jn=[{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 mt({client:e,paymasterAddress:t,userAddress:r}){return(await M(e,{address:t,table:oe.Allowance,key:{user:r}})).allowance}function Ae({client:e,paymasterAddress:t,userAddress:r}){let n=["getAllowance",e?.chain.id,t,r];return eo(e&&r?{queryKey:n,queryFn:()=>mt({client:e,paymasterAddress:t,userAddress:r})}:{queryKey:n,enabled:!1})}function ft(e){let{chainId:t,paymasterAddress:r}=m(),n=Zn({chainId:t});return to(Ae({client:n,paymasterAddress:r,userAddress:e}))}import{useClient as Ed}from"wagmi";import{queryOptions as ro,useQuery as Dd}from"@tanstack/react-query";async function yt({client:e,paymasterAddress:t,userAddress:r,sessionAddress:n}){return(await M(e,{address:t,table:oe.Spender,key:{spender:n}})).user.toLowerCase()===r.toLowerCase()}function gt({client:e,paymasterAddress:t,userAddress:r,sessionAddress:n}){let o=["getSpender",e?.chain.id,t,r,n];return ro(e&&r&&n?{queryKey:o,queryFn:()=>yt({client:e,paymasterAddress:t,userAddress:r,sessionAddress:n})}:{queryKey:o,enabled:!1})}import{useClient as Gd}from"wagmi";import{queryOptions as no,useQuery as Wd}from"@tanstack/react-query";async function ht({client:e,worldAddress:t,userAddress:r,sessionAddress:n}){return(await M(e,{address:t,table:Ze.UserDelegationControl,key:{delegator:r,delegatee:n}})).delegationControlId===q}function wt({client:e,worldAddress:t,userAddress:r,sessionAddress:n}){let o=["getDelegation",e?.chain.id,t,r,n];return no(e&&r&&n?{queryKey:o,queryFn:()=>ht({client:e,worldAddress:t,userAddress:r,sessionAddress:n})}:{queryKey:o,enabled:!1})}import{queryOptions as mo,useQuery as fo,useQueryClient as yo}from"@tanstack/react-query";import{useClient as go}from"wagmi";import{useClient as po}from"wagmi";import{queryOptions as lo,useQuery as uo}from"@tanstack/react-query";import{createStore as oo}from"zustand/vanilla";import{persist as ao}from"zustand/middleware";var L=oo(ao(()=>({signers:{}}),{name:"mud:entrykit",partialize:({signers:e})=>({signers:e})}));function io(e){e.key===L.persist.getOptions().name&&L.persist.rehydrate()}window.addEventListener("storage",io);import{generatePrivateKey as so,privateKeyToAccount as co}from"viem/accounts";function bt(e){let t=L.getState().signers[e]??(()=>{let r=so();return L.setState(n=>({signers:{...n.signers,[e]:r}})),r})();return co(t)}async function xt({client:e,userAddress:t}){let r=bt(t);return await Y({client:e,owners:[r]})}function ke({client:e,userAddress:t}){let r=["getSessionAccount",e?.chain.id,t];return lo(e&&t?{queryKey:r,queryFn:()=>xt({client:e,userAddress:t}),staleTime:1/0}:{queryKey:r,enabled:!1})}function ae(e){let{chainId:t}=m(),r=po({chainId:t});return uo(ke({userAddress:e,client:r}))}function ho({queryClient:e,client:t,userAddress:r,paymasterAddress:n,worldAddress:o}){let i=["getPrerequisites",t?.chain.id,r];return mo(t&&r?{queryKey:i,queryFn:async()=>{let{address:s}=await e.fetchQuery(ke({client:t,userAddress:r})),[d,p,a]=await Promise.all([e.fetchQuery(Ae({client:t,paymasterAddress:n,userAddress:r})),e.fetchQuery(gt({client:t,paymasterAddress:n,userAddress:r,sessionAddress:s})),e.fetchQuery(wt({client:t,worldAddress:o,userAddress:r,sessionAddress:s}))]),c=d>=ne;return{hasAllowance:c,isSpender:p,hasDelegation:a,complete:c&&p&&a}}}:{queryKey:i,enabled:!1})}function I(e){let t=yo(),{chainId:r,paymasterAddress:n,worldAddress:o}=m(),i=go({chainId:r});return fo(ho({queryClient:t,client:i,userAddress:e,paymasterAddress:n,worldAddress:o}),t)}import{useDisconnect as xo}from"wagmi";import{useQuery as wo}from"@tanstack/react-query";function ie(e){let t=e?.toLowerCase();return wo({enabled:!!t,queryKey:["ens",t],initialData:{address:void 0,name:void 0,displayName:void 0,avatar:void 0},queryFn:async()=>{let r=await fetch(`https://api.ensideas.com/ens/resolve/${t}`).then(n=>n.json());return{address:r.address??void 0,name:r.name??void 0,displayName:r.displayName??void 0,avatar:r.avatar??void 0}}})}import{jsx as Pe,jsxs as bo}from"react/jsx-runtime";function se({hex:e}){return e.length<=10?Pe("span",{title:e,children:e}):bo("span",{title:e,children:[Pe("span",{className:"after:select-none after:content-['\u2026']",children:e.slice(0,6)}),Pe("span",{className:"tracking-[-1ch] text-transparent",children:e.slice(6,-4)}),e.slice(-4)]})}import{jsx as U,jsxs as Se}from"react/jsx-runtime";function vt({isActive:e,isExpanded:t,userAddress:r}){let{data:n}=ie(r),{disconnect:o,isPending:i}=xo(),{closeAccountModal:s}=w();return Se("div",{className:"flex flex-col gap-4",children:[Se("div",{className:"flex justify-between gap-4",children:[Se("div",{children:[U("div",{children:"Account"}),U("div",{className:"font-mono text-white",children:n.name??U(se,{hex:r})})]}),U(b,{variant:e?"primary":"secondary",className:"flex-shrink-0 text-sm p-1 w-28",pending:i,onClick:()=>{s(),o()},children:"Sign out"})]}),t?U("p",{className:"text-sm",children:"Each of your onchain actions in this app is associated with your account."}):null]})}import{useMutation as Co,useQueryClient as Ao}from"@tanstack/react-query";import{http as vo}from"viem";function Ct(){return({chain:e})=>{if(!e)throw new Error("No chain provided to issuer transport.");let t="quarryPassIssuer"in e.rpcUrls?e.rpcUrls.quarryPassIssuer.http[0]:void 0;if(!t)throw new Error(`No \`quarryPassIssuer\` RPC URL found for chain ${e.id}.`);return vo(t)({chain:e,retryCount:0})}}function At(){let e=Ao(),{chain:t}=m(),r=["claimGasPass",t.id];return Co({mutationKey:r,onError:n=>console.error(n),mutationFn:async n=>{let o=Ct()({chain:t});await o.request({method:"quarry_issuePass",params:["0x01",n]}),await o.request({method:"quarry_claimAllowance",params:["0x01",n]}),await Promise.all([e.invalidateQueries({queryKey:["getAllowance"]}),e.invalidateQueries({queryKey:["getPrerequisites"]})])},retry:0})}import{twMerge as ko}from"tailwind-merge";import{jsx as ce,jsxs as Po}from"react/jsx-runtime";function kt({className:e,...t}){return Po("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 263 428",fill:"currentColor",className:ko("w-[0.6em] h-[1em]",e),...t,children:[ce("path",{d:"M132 321V428L263 243L132 321Z"}),ce("path",{d:"M0 243L132 321V428",fillOpacity:"0.5"}),ce("path",{d:"M132 0V296L263 218"}),ce("path",{d:"M0 218L132 296V0L0 218Z",fillOpacity:"0.5"})]})}import{formatEther as So}from"viem";function Pt(e){let t=So(e),r=Math.floor(parseFloat(t)).toString().length;return parseFloat(t).toLocaleString("en-US",{maximumFractionDigits:Math.max(0,6-r)})}import{jsx as Ro,jsxs as Mo}from"react/jsx-runtime";function St({wei:e}){return Mo("span",{className:"inline-flex items-center gap-1",children:[Pt(e)," ",Ro(kt,{})]})}import{useEffect as Io,useRef as Oo}from"react";import{jsx as O,jsxs as Re}from"react/jsx-runtime";function Rt({isActive:e,isExpanded:t,userAddress:r}){let n=ft(r),o=At(),i=Oo(!1);return Io(()=>{e&&o.status==="idle"&&n.isSuccess&&n.data<ne&&!i.current&&(i.current=!0,o.mutate(r,{onSettled:()=>i.current=!1}))},[n.data,n.isSuccess,o,e,r]),Re("div",{className:"flex flex-col gap-4",children:[Re("div",{className:"flex justify-between gap-4",children:[Re("div",{children:[O("div",{children:"Allowance"}),O("div",{className:"font-mono text-white",children:n.data!=null?O(St,{wei:n.data}):O(A,{className:"text-sm"})})]}),O(b,{variant:e?"primary":"secondary",className:"flex-shrink-0 text-sm p-1 w-28",pending:o.status==="pending",onClick:()=>o.mutate(r),children:"Top up"})]}),t?O("p",{className:"text-sm",children:"Your allowance is used to pay for onchain computation."}):null]})}import{useMutation as To,useQueryClient as No}from"@tanstack/react-query";import{getAction as de}from"viem/utils";import{sendUserOperation as Eo,waitForUserOperationReceipt as Ho}from"viem/account-abstraction";import{writeContract as Mt}from"viem/actions";function It(){let{worldAddress:e,paymasterAddress:t}=m(),r=No();return To({mutationKey:["setupSession"],onError:o=>console.error(o),mutationFn:async({userClient:o,sessionAddress:i,registerSpender:s,registerDelegation:d})=>{o.account.type!=="smart"&&(await de(o,Mt,"writeContract")({chain:o.chain,account:o.account,address:t,abi:Ce,functionName:"registerSpender",args:[i]}),await de(o,Mt,"writeContract")({chain:o.chain,account:o.account,address:e,abi:xe,functionName:"registerDelegation",args:[i,q,"0x"]}));let p=[];if(s&&(console.log("registering spender"),p.push({to:t,abi:Ce,functionName:"registerSpender",args:[i]})),d&&(console.log("registering delegation"),p.push({to:e,abi:xe,functionName:"registerDelegation",args:[i,q,"0x"]})),!p.length)return;console.log("setting up account with",p,o);let a=await de(o,Eo,"sendUserOperation")({calls:p});console.log("got user op hash",a);let c=await de(o,Ho,"waitForUserOperationReceipt")({hash:a});if(console.log("got user op receipt",c),!c.success){console.error("not successful?",c);return}await Promise.all([r.invalidateQueries({queryKey:["getSpender"]}),r.invalidateQueries({queryKey:["getDelegation"]}),r.invalidateQueries({queryKey:["getPrerequisites"]})])},retry:0})}import{useEffect as Do,useRef as zo}from"react";import{jsx as B,jsxs as Me}from"react/jsx-runtime";function Ot({isActive:e,isExpanded:t,userClient:r,registerSpender:n,registerDelegation:o}){let s=ae(r.account.address).data?.address,d=It(),p=!o&&!o,a=zo(!1);return Do(()=>{e&&d.status==="idle"&&s&&!p&&!a.current&&(a.current=!0,d.mutate({userClient:r,sessionAddress:s,registerSpender:n,registerDelegation:o},{onSettled:()=>a.current=!1}))},[e,p,o,n,s,d,r]),Me("div",{className:"flex flex-col gap-4",children:[Me("div",{className:"flex justify-between gap-4",children:[Me("div",{children:[B("div",{children:"Session"}),B("div",{className:"font-mono text-white",children:p?"Enabled":"Set up"})]}),p?B(b,{variant:e?"primary":"secondary",className:"flex-shrink-0 text-sm p-1 w-28",disabled:!0,children:"Enabled"}):B(b,{variant:e?"primary":"secondary",className:"flex-shrink-0 text-sm p-1 w-28",pending:!s||d.status==="pending",onClick:s?()=>d.mutate({userClient:r,sessionAddress:s,registerSpender:n,registerDelegation:o}):void 0,children:"Enable"})]}),t?B("p",{className:"text-sm",children:"You can perform actions in this app without interruptions for approvals."}):null]})}import{jsx as T}from"react/jsx-runtime";function Tt({userClient:e,initialAddress:t}){let r=e.account.address,{data:n}=I(r),{closeAccountModal:o}=w(),i=r!==t,s=Lo(n);qo(()=>{n!=null&&(s.current==null&&(s.current=n),n.complete&&(i||!s.current.complete)&&o())},[o,i,n]);let{hasAllowance:d,isSpender:p,hasDelegation:a}=n??{},c=Ko(()=>r?[{id:"wallet",isComplete:!0,content:y=>T(vt,{...y,userAddress:r})},{id:"allowance",isComplete:!!d,content:y=>T(Rt,{...y,userAddress:r})},{id:"session",isComplete:!!p&&!!a,content:y=>T(Ot,{...y,userClient:e,registerSpender:!p,registerDelegation:!a})}]:[{id:"wallet",isComplete:!1,content:()=>null}],[d,a,p,r,e]),[l]=Uo(null),u=c.find(y=>y.content!=null&&!y.isComplete),f=c.filter(y=>y.isComplete),h=(l!=null?c.find(y=>y.id===l):null)??u??(f.length<c.length?f.at(-1):null),C=h?c.indexOf(h):-1;return T("div",{className:Ie("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:c.map((y,me)=>{let N=y===h,jt=N||f.length===c.length,Jt=!y.isComplete&&C!==-1&&me>C;return T("div",{className:Ie("py-8 flex flex-col justify-center",N?"flex-grow":null),children:T("div",{className:Ie("flex flex-col",Jt?"opacity-30 pointer-events-none":null),children:y.content({isActive:N,isExpanded:jt})})},y.id)})})}import{useRef as Go}from"react";import{jsx as Nt}from"react/jsx-runtime";function Et(){let{chainId:e}=m(),t=Fo({chainId:e}),r=Go(Bo().address);return t.status!=="success"?Nt(ut,{}):Nt(Tt,{userClient:t.data,initialAddress:r.current})}import{useState as Yo}from"react";import{ErrorBoundary as $o}from"react-error-boundary";import{twMerge as _o}from"tailwind-merge";import{BaseError as Wo,UserRejectedRequestError as Vo}from"viem";import{jsx as Ht,jsxs as Qo}from"react/jsx-runtime";function Dt({title:e,error:t}){if(!t||t instanceof Wo&&t.walk(o=>o instanceof Vo)!=null)return null;let r=e??"Error",n=typeof t=="string"?t:t instanceof Error?String(t):"Something unexpected happened.";return Qo("div",{className:_o("text-sm border-l-4 border-red-500","bg-red-100 text-red-900","dark:bg-red-900 dark:text-red-50"),children:[Ht("div",{className:"p-3 font-semibold",children:r}),Ht("div",{className:"px-3 whitespace-break-spaces break-all max-h-32 overflow-y-scroll",children:n})]})}import{wait as Xo}from"@latticexyz/common/utils";import{twMerge as jo}from"tailwind-merge";import{useIsMounted as Jo}from"usehooks-ts";import{jsx as pe,jsxs as zt}from"react/jsx-runtime";function qt({children:e}){let t=Jo(),[r,n]=Yo(1);return pe($o,{fallbackRender:({error:o,resetErrorBoundary:i})=>zt("div",{className:jo("flex-grow flex flex-col justify-center p-5 gap-2"),children:[pe(Dt,{error:o instanceof Error?o.stack??o.message:o}),r>0?zt("button",{type:"button",onClick:async s=>{s.currentTarget.ariaBusy="true",await Xo(1e3),i(),t()&&(n(d=>d-1),s.currentTarget.ariaBusy=null)},className:"group aria-busy:pointer-events-none self-end flex items-center gap-1",children:[pe(A,{className:"transition opacity-0 group-aria-busy:opacity-100 text-xs text-neutral-500 dark:text-neutral-400"}),pe("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 ta,DialogTitle as ra}from"@radix-ui/react-dialog";import{twMerge as Zo}from"tailwind-merge";import{jsx as ea}from"react/jsx-runtime";function Kt({className:e,children:t,...r}){return ea("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",className:Zo("-my-[0.125em] h-[1.25em] w-[1.25em]",e),...r,children:t})}import{jsx as Lt}from"react/jsx-runtime";function Ut(e){return Lt(Kt,{strokeWidth:"2",stroke:"currentColor",...e,children:Lt("path",{d:"M6 18L18 6M6 6L18 18",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})}import{jsx as x,jsxs as Oe}from"react/jsx-runtime";function Ft(){let{accountModalOpen:e,toggleAccountModal:t}=w();return Oe(Ge,{open:e,onOpenChange:t,children:[x(ra,{className:"sr-only",children:"Connect with EntryKit"}),e?Oe("div",{className:Bt("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:[x(qt,{children:x(Et,{})}),Oe("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:[x("span",{className:"block w-4 h-4",children:x(k,{className:"w-full h-full text-orange-500 group-hover:rotate-90 transition duration-300"})}),x("span",{children:"Powered by MUD"})]}),x("div",{className:"absolute top-0 right-0",children:x(ta,{className:Bt("pointer-events-auto leading-none p-2 transition","text-neutral-700 hover:text-neutral-500"),title:"Close",children:x(Ut,{className:"m-0"})})})]}):null]})}import{jsx as oa,jsxs as aa}from"react/jsx-runtime";function na({config:e,children:t}){return aa(Ke,{config:e,children:[t,oa(Ft,{})]})}import{useAccount as sa}from"wagmi";import{twMerge as P}from"tailwind-merge";import{twMerge as Gt}from"tailwind-merge";import{Fragment as ia,jsx as le,jsxs as _t}from"react/jsx-runtime";function Wt({address:e}){let{data:t}=ie(e),{isSuccess:r}=te(t.avatar);return _t(ia,{children:[_t("span",{className:"flex-shrink-0 w-6 h-6 -my-1 -mx-0.5 grid place-items-center",children:[le("img",{src:r?t.avatar:void 0,className:Gt("col-start-1 row-start-1","inline-flex w-full h-full rounded-full bg-black/10 dark:bg-white/10 bg-cover bg-no-repeat bg-center",r?"opacity-100":"opacity-0")}),le(k,{className:Gt("col-start-1 row-start-1 text-orange-500","transition duration-300",r?"opacity-0":"opacity-100")})]}),le("span",{className:"flex-grow",children:t.name??(e?le(se,{hex:e}):null)})]})}import{useRef as ca}from"react";import{jsx as v,jsxs as Qt}from"react/jsx-runtime";var Vt=P("w-48 p-3 inline-flex outline-none transition","border border-transparent","text-base leading-none"),da=P("bg-neutral-100 border-neutral-300 text-black","dark:bg-neutral-800 dark:border-neutral-700 dark:text-white"),pa=P("cursor-pointer outline-none hover:bg-neutral-200 data-[highlighted]:bg-neutral-200 dark:hover:bg-neutral-700");function la(){let{openAccountModal:e,accountModalOpen:t}=w(),{status:r,address:n}=sa(),o=ca(n),i=I(n),s=r==="connected"||r==="reconnecting"&&n,d=n!==o.current,p=i.isSuccess?i.data.complete:d?!1:s,a=(()=>{if(i.isSuccess){if(!i.data.hasAllowance)return"Top up";if(!i.data.hasDelegation||!i.data.isSpender)return"Set up"}return"Sign in"})();return v(G,{mode:"child",children:p?v("button",{type:"button",className:P(Vt,da,pa),onClick:e,children:v("span",{className:"flex-grow inline-flex gap-2.5 items-center text-left font-medium",children:v(Wt,{address:n})})},"connected"):Qt("button",{type:"button",className:P(Vt,"group","items-center justify-center gap-2.5","bg-orange-500 text-white font-medium","hover:bg-orange-400","active:bg-orange-600"),"aria-busy":t,onClick:e,children:[Qt("span",{className:"pointer-events-none inline-grid place-items-center -ml-3",children:[v("span",{className:P("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:v(k,{})}),v("span",{"aria-hidden":!0,className:P("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:v(A,{})})]}),v("span",{className:"font-medium",children:a})]},"sign in")})}import{useConnectorClient as ba}from"wagmi";import{useClient as ya}from"wagmi";import{queryOptions as ga,useQuery as ha}from"@tanstack/react-query";import{smartAccountActions as ua}from"permissionless";import{callFrom as ma}from"@latticexyz/world/internal";import{observer as fa}from"@latticexyz/explorer/observer";async function Yt({client:e,userAddress:t,sessionAccount:r,worldAddress:n,paymasterAddress:o}){let i=ee(e.chain);return j({paymasterAddress:o,transport:i,client:e,account:r}).extend(ua()).extend(ma({worldAddress:n,delegatorAddress:t,publicClient:e})).extend(fa()).extend(()=>({userAddress:t}))}function wa({sessionAccount:e,client:t,userAddress:r,worldAddress:n,paymasterAddress:o}){let i=["getSessionClient",t?.uid,r,e?.address,n];return ga(t&&r&&e?{queryKey:i,queryFn:()=>Yt({sessionAccount:e,client:t,userAddress:r,worldAddress:n,paymasterAddress:o}),staleTime:1/0}:{queryKey:i,enabled:!1})}function $t(e){let{chainId:t,worldAddress:r,paymasterAddress:n}=m(),o=ya({chainId:t}),{data:i}=ae(e);return ha(wa({sessionAccount:i,userAddress:e,client:o,worldAddress:r,paymasterAddress:n}))}function xa(){let{chainId:e}=m(),t=ba({chainId:e});t.error&&console.error("Error retrieving user client",t.error);let r=t.data?.account.address,n=I(r),o=$t(r);return t.isSuccess?!n.isSuccess||!n.data.complete?{...n,data:void 0}:o:{...t,data:void 0}}import{connectorsForWallets as Ca,getDefaultWallets as Aa}from"@rainbow-me/rainbowkit";import{createConfig as ka}from"wagmi";var va=`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>')}`,ue=e=>()=>({id:"passkey",name:"Passkey",iconUrl:va,iconBackground:"#fec",createConnector:t=>r=>({...R(e)(r),...t})});function Pa(e){let{wallets:t}=Aa(),r=[{groupName:"Recommended",wallets:[ue({chainId:e.chainId})]},...t],n=Ca(r,{appName:e.appName,projectId:e.walletConnectProjectId});return ka({connectors:n,chains:e.chains,transports:e.transports,pollingInterval:e.pollingInterval})}function cm(e){return e!=null&&"__isCoinbaseSmartAccount"in e&&e.__isCoinbaseSmartAccount===!0}import{connectorsForWallets as Ra}from"@rainbow-me/rainbowkit";import{getDefaultWallets as Sa}from"@rainbow-me/rainbowkit";function Xt(e){let{wallets:t}=Sa();return[{groupName:"Recommended",wallets:[ue({chainId:e.chainId})]},...t]}function hm({wallets:e,...t}){return Ra(e??Xt(t),{appName:t.appName,projectId:t.walletConnectProjectId})}export{la as AccountButton,na as EntryKitProvider,Q as abi,Pa as createWagmiConfig,Zt as defineConfig,hm as getConnectors,Xt as getWallets,cm as isCoinbaseSmartAccount,R as passkeyConnector,ue as passkeyWallet,V as sign,Y as toCoinbaseSmartAccount,he as toReplaySafeHash,Br as toWebAuthnSignature,w as useAccountModal,m as useEntryKitConfig,xa as useSessionClient,D as wrapSignature};
|
|
1427
|
+
URL: ${e}`)),n.src=e})})}import{jsx as re,jsxs as Kn}from"react/jsx-runtime";function dt(){let{appName:e,appIcon:t}=ct(),{data:r,isLoading:n}=te(t);return Kn("div",{className:"flex-grow flex flex-col items-center justify-center gap-2",children:[re("div",{className:"w-16 h-16 m-2",children:n?null:r?re("img",{src:t,className:"w-full h-full object-cover"}):re(k,{className:"w-full h-full text-orange-500 dark:bg-neutral-800"})}),re("div",{className:"text-2xl text-white text-center",children:e})]})}import{twMerge as Bn}from"tailwind-merge";import{jsx as L,jsxs as lt}from"react/jsx-runtime";function ut(){let e=Ln(),{accountModalOpen:t}=w(),{openConnectModal:r,connectModalOpen:n}=Un(),o=st(),i=pt({onError:a=>console.error(a),mutationKey:["createPasskey",o.id,t,n,e.status],mutationFn:()=>o.createPasskey()}),s=pt({onError:a=>console.error(a),mutationKey:["reusePasskey",o.id,t,n,e.status],mutationFn:()=>o.reusePasskey()}),d=o.hasPasskey(),p=[L(b,{variant:d?"secondary":"primary",className:"self-auto flex justify-center",pending:i.status==="pending",onClick:()=>i.mutate(),autoFocus:!d,children:"Create account"},"create"),L(b,{variant:d?"primary":"secondary",className:"self-auto flex justify-center",pending:s.status==="pending",onClick:()=>s.mutate(),autoFocus:d,children:"Sign in"},"signin")];return d&&p.reverse(),lt("div",{className:Bn("flex flex-col gap-6 p-6","animate-in animate-duration-300 fade-in slide-in-from-bottom-8"),children:[L("div",{className:"p-4",children:L(dt,{})}),lt("div",{className:"self-center flex flex-col gap-2 w-60",children:[p,L("button",{className:"text-sm self-center transition text-neutral-500 hover:text-white p-2",disabled:e.status==="connecting",onClick:r,children:"Already have a wallet?"})]})]})}import{useEffect as qo,useMemo as Ko,useRef as Lo,useState as Uo}from"react";import{twMerge as Ie}from"tailwind-merge";import{parseEther as Fn}from"viem";var ne=Fn("0.01");import{useClient as Zn}from"wagmi";import{queryOptions as eo,useQuery as to}from"@tanstack/react-query";import{defineStore as Gn}from"@latticexyz/store";import{parseAbi as _n}from"viem";var Ce=_n(["error SpenderSystem_AlreadyRegistered(address spender, address user)","error SpenderSystem_HasOwnBalance(address spender)","function registerSpender(address spender)"]),Wn=Gn({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:[]}}}}}),oe=Wn.namespaces.root.tables;import{decodeValueArgs as Vn,getKeyTuple as Qn,getSchemaTypes as Yn,getValueSchema as $n}from"@latticexyz/protocol-parser/internal";import{readContract as jn}from"viem/actions";import{getAction as Xn}from"viem/utils";async function I(e,{address:t,table:r,key:n,blockTag:o}){let[i,s,d]=await Xn(e,jn,"readContract")({address:t,abi:Jn,functionName:"getRecord",args:[r.tableId,Qn(r,n)],blockTag:o});return{...n,...Vn(Yn($n(r)),{staticData:i,encodedLengths:s,dynamicData:d})}}var Jn=[{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 mt({client:e,paymasterAddress:t,userAddress:r}){return(await I(e,{address:t,table:oe.Allowance,key:{user:r}})).allowance}function Ae({client:e,paymasterAddress:t,userAddress:r}){let n=["getAllowance",e?.chain.id,t,r];return eo(e&&r?{queryKey:n,queryFn:()=>mt({client:e,paymasterAddress:t,userAddress:r})}:{queryKey:n,enabled:!1})}function ft(e){let{chainId:t,paymasterAddress:r}=m(),n=Zn({chainId:t});return to(Ae({client:n,paymasterAddress:r,userAddress:e}))}import{useClient as Hd}from"wagmi";import{queryOptions as ro,useQuery as zd}from"@tanstack/react-query";async function yt({client:e,paymasterAddress:t,userAddress:r,sessionAddress:n}){return(await I(e,{address:t,table:oe.Spender,key:{spender:n}})).user.toLowerCase()===r.toLowerCase()}function gt({client:e,paymasterAddress:t,userAddress:r,sessionAddress:n}){let o=["getSpender",e?.chain.id,t,r,n];return ro(e&&r&&n?{queryKey:o,queryFn:()=>yt({client:e,paymasterAddress:t,userAddress:r,sessionAddress:n})}:{queryKey:o,enabled:!1})}import{useClient as _d}from"wagmi";import{queryOptions as no,useQuery as Vd}from"@tanstack/react-query";async function ht({client:e,worldAddress:t,userAddress:r,sessionAddress:n}){return(await I(e,{address:t,table:Ze.UserDelegationControl,key:{delegator:r,delegatee:n}})).delegationControlId===K}function wt({client:e,worldAddress:t,userAddress:r,sessionAddress:n}){let o=["getDelegation",e?.chain.id,t,r,n];return no(e&&r&&n?{queryKey:o,queryFn:()=>ht({client:e,worldAddress:t,userAddress:r,sessionAddress:n})}:{queryKey:o,enabled:!1})}import{queryOptions as mo,useQuery as fo,useQueryClient as yo}from"@tanstack/react-query";import{useClient as go}from"wagmi";import{useClient as po}from"wagmi";import{queryOptions as lo,useQuery as uo}from"@tanstack/react-query";import{createStore as oo}from"zustand/vanilla";import{persist as ao}from"zustand/middleware";var U=oo(ao(()=>({signers:{}}),{name:"mud:entrykit",partialize:({signers:e})=>({signers:e})}));function io(e){e.key===U.persist.getOptions().name&&U.persist.rehydrate()}window.addEventListener("storage",io);import{generatePrivateKey as so,privateKeyToAccount as co}from"viem/accounts";function bt(e){let t=U.getState().signers[e]??(()=>{let r=so();return U.setState(n=>({signers:{...n.signers,[e]:r}})),r})();return co(t)}async function xt({client:e,userAddress:t}){let r=bt(t);return await $({client:e,owners:[r]})}function ke({client:e,userAddress:t}){let r=["getSessionAccount",e?.chain.id,t];return lo(e&&t?{queryKey:r,queryFn:()=>xt({client:e,userAddress:t}),staleTime:1/0}:{queryKey:r,enabled:!1})}function ae(e){let{chainId:t}=m(),r=po({chainId:t});return uo(ke({userAddress:e,client:r}))}function ho({queryClient:e,client:t,userAddress:r,paymasterAddress:n,worldAddress:o}){let i=["getPrerequisites",t?.chain.id,r];return mo(t&&r?{queryKey:i,queryFn:async()=>{let{address:s}=await e.fetchQuery(ke({client:t,userAddress:r})),[d,p,a]=await Promise.all([e.fetchQuery(Ae({client:t,paymasterAddress:n,userAddress:r})),e.fetchQuery(gt({client:t,paymasterAddress:n,userAddress:r,sessionAddress:s})),e.fetchQuery(wt({client:t,worldAddress:o,userAddress:r,sessionAddress:s}))]),c=d>=ne;return{hasAllowance:c,isSpender:p,hasDelegation:a,complete:c&&p&&a}}}:{queryKey:i,enabled:!1})}function O(e){let t=yo(),{chainId:r,paymasterAddress:n,worldAddress:o}=m(),i=go({chainId:r});return fo(ho({queryClient:t,client:i,userAddress:e,paymasterAddress:n,worldAddress:o}),t)}import{useDisconnect as xo}from"wagmi";import{useQuery as wo}from"@tanstack/react-query";function ie(e){let t=e?.toLowerCase();return wo({enabled:!!t,queryKey:["ens",t],initialData:{address:void 0,name:void 0,displayName:void 0,avatar:void 0},queryFn:async()=>{let r=await fetch(`https://api.ensideas.com/ens/resolve/${t}`).then(n=>n.json());return{address:r.address??void 0,name:r.name??void 0,displayName:r.displayName??void 0,avatar:r.avatar??void 0}}})}import{jsx as Pe,jsxs as bo}from"react/jsx-runtime";function se({hex:e}){return e.length<=10?Pe("span",{title:e,children:e}):bo("span",{title:e,children:[Pe("span",{className:"after:select-none after:content-['\u2026']",children:e.slice(0,6)}),Pe("span",{className:"tracking-[-1ch] text-transparent",children:e.slice(6,-4)}),e.slice(-4)]})}import{jsx as B,jsxs as Se}from"react/jsx-runtime";function vt({isActive:e,isExpanded:t,userAddress:r}){let{data:n}=ie(r),{disconnect:o,isPending:i}=xo(),{closeAccountModal:s}=w();return Se("div",{className:"flex flex-col gap-4",children:[Se("div",{className:"flex justify-between gap-4",children:[Se("div",{children:[B("div",{children:"Account"}),B("div",{className:"font-mono text-white",children:n.name??B(se,{hex:r})})]}),B(b,{variant:e?"primary":"secondary",className:"flex-shrink-0 text-sm p-1 w-28",pending:i,onClick:()=>{s(),o()},children:"Sign out"})]}),t?B("p",{className:"text-sm",children:"Each of your onchain actions in this app is associated with your account."}):null]})}import{useMutation as Co,useQueryClient as Ao}from"@tanstack/react-query";import{http as vo}from"viem";function Ct(){return({chain:e})=>{if(!e)throw new Error("No chain provided to issuer transport.");let t="quarryPassIssuer"in e.rpcUrls?e.rpcUrls.quarryPassIssuer.http[0]:void 0;if(!t)throw new Error(`No \`quarryPassIssuer\` RPC URL found for chain ${e.id}.`);return vo(t)({chain:e,retryCount:0})}}function At(){let e=Ao(),{chain:t}=m(),r=["claimGasPass",t.id];return Co({mutationKey:r,onError:n=>console.error(n),mutationFn:async n=>{let o=Ct()({chain:t});await o.request({method:"quarry_issuePass",params:["0x01",n]}),await o.request({method:"quarry_claimAllowance",params:["0x01",n]}),await Promise.all([e.invalidateQueries({queryKey:["getAllowance"]}),e.invalidateQueries({queryKey:["getPrerequisites"]})])},retry:0})}import{twMerge as ko}from"tailwind-merge";import{jsx as ce,jsxs as Po}from"react/jsx-runtime";function kt({className:e,...t}){return Po("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 263 428",fill:"currentColor",className:ko("w-[0.6em] h-[1em]",e),...t,children:[ce("path",{d:"M132 321V428L263 243L132 321Z"}),ce("path",{d:"M0 243L132 321V428",fillOpacity:"0.5"}),ce("path",{d:"M132 0V296L263 218"}),ce("path",{d:"M0 218L132 296V0L0 218Z",fillOpacity:"0.5"})]})}import{formatEther as So}from"viem";function Pt(e){let t=So(e),r=Math.floor(parseFloat(t)).toString().length;return parseFloat(t).toLocaleString("en-US",{maximumFractionDigits:Math.max(0,6-r)})}import{jsx as Ro,jsxs as Mo}from"react/jsx-runtime";function St({wei:e}){return Mo("span",{className:"inline-flex items-center gap-1",children:[Pt(e)," ",Ro(kt,{})]})}import{useEffect as Io,useRef as Oo}from"react";import{jsx as T,jsxs as Re}from"react/jsx-runtime";function Rt({isActive:e,isExpanded:t,userAddress:r}){let n=ft(r),o=At(),i=Oo(!1);return Io(()=>{e&&o.status==="idle"&&n.isSuccess&&n.data<ne&&!i.current&&(i.current=!0,o.mutate(r,{onSettled:()=>i.current=!1}))},[n.data,n.isSuccess,o,e,r]),Re("div",{className:"flex flex-col gap-4",children:[Re("div",{className:"flex justify-between gap-4",children:[Re("div",{children:[T("div",{children:"Allowance"}),T("div",{className:"font-mono text-white",children:n.data!=null?T(St,{wei:n.data}):T(A,{className:"text-sm"})})]}),T(b,{variant:e?"primary":"secondary",className:"flex-shrink-0 text-sm p-1 w-28",pending:o.status==="pending",onClick:()=>o.mutate(r),children:"Top up"})]}),t?T("p",{className:"text-sm",children:"Your allowance is used to pay for onchain computation."}):null]})}import{useMutation as To,useQueryClient as No}from"@tanstack/react-query";import{getAction as de}from"viem/utils";import{sendUserOperation as Eo,waitForUserOperationReceipt as Ho}from"viem/account-abstraction";import{writeContract as Mt}from"viem/actions";function It(){let{worldAddress:e,paymasterAddress:t}=m(),r=No();return To({mutationKey:["setupSession"],onError:o=>console.error(o),mutationFn:async({userClient:o,sessionAddress:i,registerSpender:s,registerDelegation:d})=>{o.account.type!=="smart"&&(await de(o,Mt,"writeContract")({chain:o.chain,account:o.account,address:t,abi:Ce,functionName:"registerSpender",args:[i]}),await de(o,Mt,"writeContract")({chain:o.chain,account:o.account,address:e,abi:xe,functionName:"registerDelegation",args:[i,K,"0x"]}));let p=[];if(s&&(console.log("registering spender"),p.push({to:t,abi:Ce,functionName:"registerSpender",args:[i]})),d&&(console.log("registering delegation"),p.push({to:e,abi:xe,functionName:"registerDelegation",args:[i,K,"0x"]})),!p.length)return;console.log("setting up account with",p,o);let a=await de(o,Eo,"sendUserOperation")({calls:p});console.log("got user op hash",a);let c=await de(o,Ho,"waitForUserOperationReceipt")({hash:a});if(console.log("got user op receipt",c),!c.success){console.error("not successful?",c);return}await Promise.all([r.invalidateQueries({queryKey:["getSpender"]}),r.invalidateQueries({queryKey:["getDelegation"]}),r.invalidateQueries({queryKey:["getPrerequisites"]})])},retry:0})}import{useEffect as Do,useRef as zo}from"react";import{jsx as F,jsxs as Me}from"react/jsx-runtime";function Ot({isActive:e,isExpanded:t,userClient:r,registerSpender:n,registerDelegation:o}){let s=ae(r.account.address).data?.address,d=It(),p=!o&&!o,a=zo(!1);return Do(()=>{e&&d.status==="idle"&&s&&!p&&!a.current&&(a.current=!0,d.mutate({userClient:r,sessionAddress:s,registerSpender:n,registerDelegation:o},{onSettled:()=>a.current=!1}))},[e,p,o,n,s,d,r]),Me("div",{className:"flex flex-col gap-4",children:[Me("div",{className:"flex justify-between gap-4",children:[Me("div",{children:[F("div",{children:"Session"}),F("div",{className:"font-mono text-white",children:p?"Enabled":"Set up"})]}),p?F(b,{variant:e?"primary":"secondary",className:"flex-shrink-0 text-sm p-1 w-28",disabled:!0,children:"Enabled"}):F(b,{variant:e?"primary":"secondary",className:"flex-shrink-0 text-sm p-1 w-28",pending:!s||d.status==="pending",onClick:s?()=>d.mutate({userClient:r,sessionAddress:s,registerSpender:n,registerDelegation:o}):void 0,children:"Enable"})]}),t?F("p",{className:"text-sm",children:"You can perform actions in this app without interruptions for approvals."}):null]})}import{jsx as N}from"react/jsx-runtime";function Tt({userClient:e,initialAddress:t}){let r=e.account.address,{data:n}=O(r),{closeAccountModal:o}=w(),i=r!==t,s=Lo(n);qo(()=>{n!=null&&(s.current==null&&(s.current=n),n.complete&&(i||!s.current.complete)&&o())},[o,i,n]);let{hasAllowance:d,isSpender:p,hasDelegation:a}=n??{},c=Ko(()=>r?[{id:"wallet",isComplete:!0,content:y=>N(vt,{...y,userAddress:r})},{id:"allowance",isComplete:!!d,content:y=>N(Rt,{...y,userAddress:r})},{id:"session",isComplete:!!p&&!!a,content:y=>N(Ot,{...y,userClient:e,registerSpender:!p,registerDelegation:!a})}]:[{id:"wallet",isComplete:!1,content:()=>null}],[d,a,p,r,e]),[l]=Uo(null),u=c.find(y=>y.content!=null&&!y.isComplete),f=c.filter(y=>y.isComplete),h=(l!=null?c.find(y=>y.id===l):null)??u??(f.length<c.length?f.at(-1):null),C=h?c.indexOf(h):-1;return N("div",{className:Ie("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:c.map((y,me)=>{let E=y===h,Xt=E||f.length===c.length,Jt=!y.isComplete&&C!==-1&&me>C;return N("div",{className:Ie("py-8 flex flex-col justify-center",E?"flex-grow":null),children:N("div",{className:Ie("flex flex-col",Jt?"opacity-30 pointer-events-none":null),children:y.content({isActive:E,isExpanded:Xt})})},y.id)})})}import{useRef as Go}from"react";import{jsx as Nt}from"react/jsx-runtime";function Et(){let{chainId:e}=m(),t=Fo({chainId:e}),r=Go(Bo().address);return t.status!=="success"?Nt(ut,{}):Nt(Tt,{userClient:t.data,initialAddress:r.current})}import{useState as Yo}from"react";import{ErrorBoundary as $o}from"react-error-boundary";import{twMerge as _o}from"tailwind-merge";import{BaseError as Wo,UserRejectedRequestError as Vo}from"viem";import{jsx as Ht,jsxs as Qo}from"react/jsx-runtime";function Dt({title:e,error:t}){if(!t||t instanceof Wo&&t.walk(o=>o instanceof Vo)!=null)return null;let r=e??"Error",n=typeof t=="string"?t:t instanceof Error?String(t):"Something unexpected happened.";return Qo("div",{className:_o("text-sm border-l-4 border-red-500","bg-red-100 text-red-900","dark:bg-red-900 dark:text-red-50"),children:[Ht("div",{className:"p-3 font-semibold",children:r}),Ht("div",{className:"px-3 whitespace-break-spaces break-all max-h-32 overflow-y-scroll",children:n})]})}import{wait as jo}from"@latticexyz/common/utils";import{twMerge as Xo}from"tailwind-merge";import{useIsMounted as Jo}from"usehooks-ts";import{jsx as pe,jsxs as zt}from"react/jsx-runtime";function qt({children:e}){let t=Jo(),[r,n]=Yo(1);return pe($o,{fallbackRender:({error:o,resetErrorBoundary:i})=>zt("div",{className:Xo("flex-grow flex flex-col justify-center p-5 gap-2"),children:[pe(Dt,{error:o instanceof Error?o.stack??o.message:o}),r>0?zt("button",{type:"button",onClick:async s=>{s.currentTarget.ariaBusy="true",await jo(1e3),i(),t()&&(n(d=>d-1),s.currentTarget.ariaBusy=null)},className:"group aria-busy:pointer-events-none self-end flex items-center gap-1",children:[pe(A,{className:"transition opacity-0 group-aria-busy:opacity-100 text-xs text-neutral-500 dark:text-neutral-400"}),pe("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 ta,DialogTitle as ra}from"@radix-ui/react-dialog";import{twMerge as Zo}from"tailwind-merge";import{jsx as ea}from"react/jsx-runtime";function Kt({className:e,children:t,...r}){return ea("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",className:Zo("-my-[0.125em] h-[1.25em] w-[1.25em]",e),...r,children:t})}import{jsx as Lt}from"react/jsx-runtime";function Ut(e){return Lt(Kt,{strokeWidth:"2",stroke:"currentColor",...e,children:Lt("path",{d:"M6 18L18 6M6 6L18 18",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})}import{jsx as x,jsxs as Oe}from"react/jsx-runtime";function Ft(){let{accountModalOpen:e,toggleAccountModal:t}=w();return Oe(Ge,{open:e,onOpenChange:t,children:[x(ra,{className:"sr-only",children:"Connect with EntryKit"}),e?Oe("div",{className:Bt("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:[x(qt,{children:x(Et,{})}),Oe("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:[x("span",{className:"block w-4 h-4",children:x(k,{className:"w-full h-full text-orange-500 group-hover:rotate-90 transition duration-300"})}),x("span",{children:"Powered by MUD"})]}),x("div",{className:"absolute top-0 right-0",children:x(ta,{className:Bt("pointer-events-auto leading-none p-2 transition","text-neutral-700 hover:text-neutral-500"),title:"Close",children:x(Ut,{className:"m-0"})})})]}):null]})}import{jsx as oa,jsxs as aa}from"react/jsx-runtime";function na({config:e,children:t}){return aa(Ke,{config:e,children:[t,oa(Ft,{})]})}import{useAccount as sa}from"wagmi";import{twMerge as P}from"tailwind-merge";import{twMerge as Gt}from"tailwind-merge";import{Fragment as ia,jsx as le,jsxs as _t}from"react/jsx-runtime";function Wt({address:e}){let{data:t}=ie(e),{isSuccess:r}=te(t.avatar);return _t(ia,{children:[_t("span",{className:"flex-shrink-0 w-6 h-6 -my-1 -mx-0.5 grid place-items-center",children:[le("img",{src:r?t.avatar:void 0,className:Gt("col-start-1 row-start-1","inline-flex w-full h-full rounded-full bg-black/10 dark:bg-white/10 bg-cover bg-no-repeat bg-center",r?"opacity-100":"opacity-0")}),le(k,{className:Gt("col-start-1 row-start-1 text-orange-500","transition duration-300",r?"opacity-0":"opacity-100")})]}),le("span",{className:"flex-grow",children:t.name??(e?le(se,{hex:e}):null)})]})}import{useRef as ca}from"react";import{jsx as v,jsxs as Qt}from"react/jsx-runtime";var Vt=P("w-48 p-3 inline-flex outline-none transition","border border-transparent","text-base leading-none"),da=P("bg-neutral-100 border-neutral-300 text-black","dark:bg-neutral-800 dark:border-neutral-700 dark:text-white"),pa=P("cursor-pointer outline-none hover:bg-neutral-200 data-[highlighted]:bg-neutral-200 dark:hover:bg-neutral-700");function la(){let{openAccountModal:e,accountModalOpen:t}=w(),{status:r,address:n}=sa(),o=ca(n),i=O(n),s=r==="connected"||r==="reconnecting"&&n,d=n!==o.current,p=i.isSuccess?i.data.complete:d?!1:s,a=(()=>{if(i.isSuccess){if(!i.data.hasAllowance)return"Top up";if(!i.data.hasDelegation||!i.data.isSpender)return"Set up"}return"Sign in"})();return v(_,{mode:"child",children:p?v("button",{type:"button",className:P(Vt,da,pa),onClick:e,children:v("span",{className:"flex-grow inline-flex gap-2.5 items-center text-left font-medium",children:v(Wt,{address:n})})},"connected"):Qt("button",{type:"button",className:P(Vt,"group","items-center justify-center gap-2.5","bg-orange-500 text-white font-medium","hover:bg-orange-400","active:bg-orange-600"),"aria-busy":t,onClick:e,children:[Qt("span",{className:"pointer-events-none inline-grid place-items-center -ml-3",children:[v("span",{className:P("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:v(k,{})}),v("span",{"aria-hidden":!0,className:P("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:v(A,{})})]}),v("span",{className:"font-medium",children:a})]},"sign in")})}import{useConnectorClient as ba}from"wagmi";import{useClient as ya}from"wagmi";import{queryOptions as ga,useQuery as ha}from"@tanstack/react-query";import{smartAccountActions as ua}from"permissionless";import{callFrom as ma}from"@latticexyz/world/internal";import{observer as fa}from"@latticexyz/explorer/observer";async function Yt({client:e,userAddress:t,sessionAccount:r,worldAddress:n,paymasterAddress:o}){let i=ee(e.chain);return J({paymasterAddress:o,transport:i,client:e,account:r}).extend(ua()).extend(ma({worldAddress:n,delegatorAddress:t,publicClient:e})).extend(fa()).extend(()=>({userAddress:t}))}function wa({sessionAccount:e,client:t,userAddress:r,worldAddress:n,paymasterAddress:o}){let i=["getSessionClient",t?.uid,r,e?.address,n];return ga(t&&r&&e?{queryKey:i,queryFn:()=>Yt({sessionAccount:e,client:t,userAddress:r,worldAddress:n,paymasterAddress:o}),staleTime:1/0}:{queryKey:i,enabled:!1})}function $t(e){let{chainId:t,worldAddress:r,paymasterAddress:n}=m(),o=ya({chainId:t}),{data:i}=ae(e);return ha(wa({sessionAccount:i,userAddress:e,client:o,worldAddress:r,paymasterAddress:n}))}function xa(){let{chainId:e}=m(),t=ba({chainId:e});t.error&&console.error("Error retrieving user client",t.error);let r=t.data?.account.address,n=O(r),o=$t(r);return t.isSuccess?!n.isSuccess||!n.data.complete?{...n,data:void 0}:o:{...t,data:void 0}}import{connectorsForWallets as Ca,getDefaultWallets as Aa}from"@rainbow-me/rainbowkit";import{createConfig as ka}from"wagmi";var va=`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>')}`,ue=e=>()=>({id:"passkey",name:"Passkey",iconUrl:va,iconBackground:"#fec",createConnector:t=>r=>({...M(e)(r),...t})});import{mapObject as Pa}from"@latticexyz/common/utils";function Sa(e){let{wallets:t}=Aa(),r=[{groupName:"Recommended",wallets:[ue({chainId:e.chainId})]},...t],n=Ca(r,{appName:e.appName,projectId:e.walletConnectProjectId});return ka({connectors:n,chains:e.chains,transports:Pa(e.transports,o=>R(o)),pollingInterval:e.pollingInterval})}function lm(e){return e!=null&&"__isCoinbaseSmartAccount"in e&&e.__isCoinbaseSmartAccount===!0}import{connectorsForWallets as Ma}from"@rainbow-me/rainbowkit";import{getDefaultWallets as Ra}from"@rainbow-me/rainbowkit";function jt(e){let{wallets:t}=Ra();return[{groupName:"Recommended",wallets:[ue({chainId:e.chainId})]},...t]}function xm({wallets:e,...t}){return Ma(e??jt(t),{appName:t.appName,projectId:t.walletConnectProjectId})}export{la as AccountButton,na as EntryKitProvider,Y as abi,Sa as createWagmiConfig,Zt as defineConfig,xm as getConnectors,jt as getWallets,lm as isCoinbaseSmartAccount,M as passkeyConnector,ue as passkeyWallet,Q as sign,$ as toCoinbaseSmartAccount,he as toReplaySafeHash,Br as toWebAuthnSignature,w as useAccountModal,m as useEntryKitConfig,xa as useSessionClient,R as wiresaw,z as wrapSignature};
|
|
1428
1428
|
//# sourceMappingURL=internal.js.map
|