@latticexyz/entrykit 2.2.18-e6e01e39ebe88b0bd37d3ce4184d9753c0b9d9f0 → 2.2.18-ebe1aea8d4afb690ce1c7c2bcb42dc0f1faf6e77

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- function Gt(e){return{...e,appName:e.appName??document.title,appIcon:e.appIcon??document.querySelector("link[rel~='icon']")?.getAttribute("href")??"/favico.ico"}}import{Root as ir,DialogPortal as sr,DialogContent as lr}from"@radix-ui/react-dialog";import{forwardRef as Jt,useEffect as er,useRef as Re,useState as Ee}from"react";import tr from"react-dom";var Ce=`*, ::before, ::after {
1
+ function Vt(e){return{...e,appName:e.appName??document.title,appIcon:e.appIcon??document.querySelector("link[rel~='icon']")?.getAttribute("href")??"/favico.ico"}}import{Root as sr,DialogPortal as lr,DialogContent as dr}from"@radix-ui/react-dialog";import{forwardRef as er,useEffect as tr,useRef as Me,useState as Te}from"react";import rr from"react-dom";var Ce=`*, ::before, ::after {
2
2
  --tw-border-spacing-x: 0;
3
3
  --tw-border-spacing-y: 0;
4
4
  --tw-translate-x: 0;
@@ -1392,7 +1392,7 @@ video {
1392
1392
  --tw-text-opacity: 1;
1393
1393
  color: rgb(255 255 255 / var(--tw-text-opacity));
1394
1394
  }
1395
- `;import{useResizeObserver as rr}from"usehooks-ts";import{mergeRefs as or}from"react-merge-refs";import{createContext as Vt,useContext as Wt}from"react";import{jsx as _t}from"react/jsx-runtime";var ke=Vt(null);function Se({frame:e,children:t}){if(Wt(ke))throw new Error("`FrameProvider` can only be used once.");return _t(ke.Provider,{value:{frame:e},children:t})}import{useMediaQuery as Zt}from"usehooks-ts";import"@rainbow-me/rainbowkit/styles.css";import{createContext as Yt,useContext as Pe}from"react";import{RainbowKitProvider as Xt,midnightTheme as jt}from"@rainbow-me/rainbowkit";import{useChains as $t}from"wagmi";import{jsx as Ae}from"react/jsx-runtime";var ae=Yt(null);function Ue({config:e,children:t}){if(Pe(ae))throw new Error("`EntryKitProvider` can only be used once.");let n=$t().find(({id:a})=>a===e.chainId);if(!n)throw new Error(`Could not find configured chain for chain ID ${e.chainId}.`);return Ae(Xt,{initialChain:0,appInfo:{appName:e.appName},theme:jt({borderRadius:"none"}),children:Ae(ae.Provider,{value:{...e,chain:n},children:t})})}function l(){let e=Pe(ae);if(!e)throw new Error("`useEntryKitConfig` can only be used within a `EntryKitProvider`.");return e}function Ne(){let{theme:e}=l(),t=Zt("(prefers-color-scheme: dark)");return e??(t?"dark":"light")}import{jsx as O,jsxs as ar}from"react/jsx-runtime";function nr({onSize:e,...t}){let r=Re(null);return rr({ref:r,onResize:e}),O("div",{ref:r,...t,style:{...t.style,display:"inline-grid"}})}var Q=Jt(function({mode:t,children:r},o){let n=Re(null),[a,i]=Ee(!1),s=a?n.current:null,[c,g]=Ee({width:void 0,height:void 0}),m=s?.contentDocument,d=Ne();er(()=>{m&&m.body.setAttribute("data-theme",d)},[m,d]);let p=t==="modal"?{all:"unset",display:"block",position:"fixed",inset:"0",width:"100%",height:"100%",zIndex:"2147483646"}:c.width&&c.height?{all:"unset",display:"inline-grid",width:`${c.width}px`,height:`${c.height}px`}:{all:"unset",display:"block",position:"fixed",inset:"0",width:"100%",height:"100%",opacity:0,pointerEvents:"none"};return O("iframe",{ref:or([o,n]),style:p,onLoad:()=>i(!0),srcDoc:"<!doctype html><title>\u2026</title>",children:m?tr.createPortal(ar(Se,{frame:s,children:[O("div",{children:t==="modal"?r:O(nr,{onSize:g,children:r})}),O("style",{dangerouslySetInnerHTML:{__html:Ce}})]}),m.body):null})});import{twMerge as Te}from"tailwind-merge";import{jsx as E,jsxs as dr}from"react/jsx-runtime";function Me({open:e,onOpenChange:t,children:r}){return E(ir,{open:e,onOpenChange:t,children:E(sr,{children:dr(Q,{mode:"modal",children:[E("div",{className:Te("fixed inset-0","bg-neutral-800/85","animate-in animate-duration-300 fade-in")}),E("div",{className:Te("fixed inset-0","grid items-end sm:items-center","animate-in animate-duration-300 fade-in slide-in-from-bottom-16"),children:E("div",{children:E(lr,{className:"outline-none w-full max-w-[26rem] mx-auto","aria-describedby":void 0,onOpenAutoFocus:o=>{o.preventDefault()},children:r})})})]})})})}import{useCallback as ie,useMemo as cr}from"react";import{useStore as pr}from"zustand";import{createStore as mr}from"zustand/vanilla";var V=mr(()=>({open:!1}));function v(){let e=pr(V,n=>n.open),t=ie(()=>{V.setState({open:!0})},[]),r=ie(()=>{V.setState({open:!1})},[]),o=ie(n=>{V.setState({open:n})},[]);return cr(()=>({accountModalOpen:e,openAccountModal:t,closeAccountModal:r,toggleAccountModal:o}),[e,t,r,o])}import{twMerge as It}from"tailwind-merge";import{useAccount as En,useConnectorClient as Rn}from"wagmi";import{useAccount as vr}from"wagmi";import{twMerge as q}from"tailwind-merge";import{twMerge as ur}from"tailwind-merge";import{jsx as Ie,jsxs as gr}from"react/jsx-runtime";function b({className:e,...t}){return gr("svg",{className:ur("-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:[Ie("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),Ie("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 z,jsxs as hr}from"react/jsx-runtime";var fr=({variant:e="secondary"}={})=>q("group/button 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:q("bg-orange-600 text-white focus:border-yellow-400"),secondary:q("bg-neutral-700 text-white focus:border-orange-500"),tertiary:q("bg-neutral-800 text-white focus:border-orange-500")}[e]),y=({pending:e,variant:t,type:r,className:o,children:n,disabled:a,...i})=>z("button",{type:r||"button",className:q(fr({variant:t,pending:e}),o),"aria-busy":e,"aria-disabled":a,disabled:a||e,...i,children:hr("span",{className:"grid grid-cols-[1fr_auto_1fr] gap-2",children:[z("span",{className:"flex items-center justify-end text-[.75em]",children:z("span",{className:"transition opacity-0 translate-x-2 group-aria-busy/button:opacity-100 group-aria-busy/button:translate-x-0 duration-100 group-aria-busy/button:duration-300",children:z(b,{})})}),z("span",{children:n})]})});import{useConnectModal as Cr}from"@rainbow-me/rainbowkit";import{twMerge as yr}from"tailwind-merge";import{jsx as se,jsxs as br}from"react/jsx-runtime";function S({className:e,...t}){return br("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 8 8",fill:"currentColor",shapeRendering:"crispEdges",className:yr("-my-[0.125em] h-[1.25em] w-[1.25em]",e),...t,children:[se("path",{d:"M0 0h1v1H0zm0 1h1v1H0zm0 1h1v1H0zm0 1h1v1H0zm0 1h1v1H0zm0 1h1v1H0zm0 1h1v1H0zm0 1h1v1H0zm1 0h1v1H1zm1 0h1v1H2zm1 0h1v1H3zm1 0h1v1H4zm1 0h1v1H5zm2-1h1v1H7zm0 1h1v1H7zM6 7h1v1H6zm1-2h1v1H7zm0-1h1v1H7zm0-1h1v1H7z"}),se("path",{d:"M2 2h1v1H2zm0 1h1v1H2zm0 1h1v1H2zm0 1h1v1H2zm1-3h1v1H3zm1 0h1v1H4zm1 0h1v1H5zm0 1h1v1H5zm0 1h1v1H5zm0 1h1v1H5zM4 5h1v1H4zM3 5h1v1H3z",opacity:".5"}),se("path",{d:"M7 2h1v1H7zm0-1h1v1H7zM1 0h1v1H1zm1 0h1v1H2zm1 0h1v1H3zm1 0h1v1H4zm1 0h1v1H5zm1 0h1v1H6zm1 0h1v1H7z"})]})}import{useQuery as wr}from"@tanstack/react-query";function W(e){return wr({enabled:!!e,retry:!1,retryOnMount:!1,refetchOnMount:!1,refetchOnWindowFocus:!1,queryKey:["preloadImage",e],queryFn:()=>new Promise((t,r)=>{if(!e)throw new Error("usePreloadImage: Must provide `url` to preload image.");let o=new Image;o.onload=()=>t(o),o.onerror=()=>r(new Error(`usePreloadImage: Could not load image.
1395
+ `;import{useResizeObserver as or}from"usehooks-ts";import{mergeRefs as nr}from"react-merge-refs";import{createContext as _t,useContext as Yt}from"react";import{jsx as Xt}from"react/jsx-runtime";var ke=_t(null);function Se({frame:e,children:t}){if(Yt(ke))throw new Error("`FrameProvider` can only be used once.");return Xt(ke.Provider,{value:{frame:e},children:t})}import{useMediaQuery as Jt}from"usehooks-ts";import"@rainbow-me/rainbowkit/styles.css";import{createContext as jt,useContext as Ne}from"react";import{RainbowKitProvider as $t,lightTheme as Ae,midnightTheme as Pe}from"@rainbow-me/rainbowkit";import{useChains as Zt}from"wagmi";import{jsx as Ue}from"react/jsx-runtime";var ae=jt(null);function Ee({config:e,children:t}){if(Ne(ae))throw new Error("`EntryKitProvider` can only be used once.");let n=Zt().find(({id:a})=>a===e.chainId);if(!n)throw new Error(`Could not find configured chain for chain ID ${e.chainId}.`);return Ue($t,{initialChain:0,appInfo:{appName:e.appName},theme:e.theme==="light"?Ae({borderRadius:"none"}):e.theme==="dark"?Pe({borderRadius:"none"}):{lightMode:Ae({borderRadius:"none"}),darkMode:Pe({borderRadius:"none"})},children:Ue(ae.Provider,{value:{...e,chain:n},children:t})})}function l(){let e=Ne(ae);if(!e)throw new Error("`useEntryKitConfig` can only be used within a `EntryKitProvider`.");return e}function Re(){let{theme:e}=l(),t=Jt("(prefers-color-scheme: dark)");return e??(t?"dark":"light")}import{jsx as O,jsxs as ir}from"react/jsx-runtime";function ar({onSize:e,...t}){let r=Me(null);return or({ref:r,onResize:e}),O("div",{ref:r,...t,style:{...t.style,display:"inline-grid"}})}var Q=er(function({mode:t,children:r},o){let n=Me(null),[a,i]=Te(!1),s=a?n.current:null,[c,g]=Te({width:void 0,height:void 0}),m=s?.contentDocument,d=Re();tr(()=>{m&&m.body.setAttribute("data-theme",d)},[m,d]);let p=t==="modal"?{all:"unset",display:"block",position:"fixed",inset:"0",width:"100%",height:"100%",zIndex:"2147483646"}:c.width&&c.height?{all:"unset",display:"inline-grid",width:`${c.width}px`,height:`${c.height}px`}:{all:"unset",display:"block",position:"fixed",inset:"0",width:"100%",height:"100%",opacity:0,pointerEvents:"none"};return O("iframe",{ref:nr([o,n]),style:p,onLoad:()=>i(!0),srcDoc:"<!doctype html><title>\u2026</title>",children:m?rr.createPortal(ir(Se,{frame:s,children:[O("div",{children:t==="modal"?r:O(ar,{onSize:g,children:r})}),O("style",{dangerouslySetInnerHTML:{__html:Ce}})]}),m.body):null})});import{twMerge as Ie}from"tailwind-merge";import{jsx as E,jsxs as cr}from"react/jsx-runtime";function He({open:e,onOpenChange:t,children:r}){return E(sr,{open:e,onOpenChange:t,children:E(lr,{children:cr(Q,{mode:"modal",children:[E("div",{className:Ie("fixed inset-0","bg-neutral-800/85","animate-in animate-duration-300 fade-in")}),E("div",{className:Ie("fixed inset-0","grid items-end sm:items-center","animate-in animate-duration-300 fade-in slide-in-from-bottom-16"),children:E("div",{children:E(dr,{className:"outline-none w-full max-w-[26rem] mx-auto","aria-describedby":void 0,onOpenAutoFocus:o=>{o.preventDefault()},children:r})})})]})})})}import{useCallback as ie,useMemo as pr}from"react";import{useStore as mr}from"zustand";import{createStore as ur}from"zustand/vanilla";var V=ur(()=>({open:!1}));function v(){let e=mr(V,n=>n.open),t=ie(()=>{V.setState({open:!0})},[]),r=ie(()=>{V.setState({open:!1})},[]),o=ie(n=>{V.setState({open:n})},[]);return pr(()=>({accountModalOpen:e,openAccountModal:t,closeAccountModal:r,toggleAccountModal:o}),[e,t,r,o])}import{twMerge as Ot}from"tailwind-merge";import{useAccount as Rn,useConnectorClient as Tn}from"wagmi";import{useAccount as Cr}from"wagmi";import{twMerge as q}from"tailwind-merge";import{twMerge as gr}from"tailwind-merge";import{jsx as Oe,jsxs as fr}from"react/jsx-runtime";function b({className:e,...t}){return fr("svg",{className:gr("-my-[0.125em] h-[1.25em] w-[1.25em] animate-spin",e),xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",...t,children:[Oe("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),Oe("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]})}import{jsx as z,jsxs as yr}from"react/jsx-runtime";var hr=({variant:e="secondary"}={})=>q("group/button 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:q("bg-orange-600 text-white focus:border-yellow-400"),secondary:q("bg-neutral-700 text-white focus:border-orange-500"),tertiary:q("bg-neutral-800 text-white focus:border-orange-500")}[e]),y=({pending:e,variant:t,type:r,className:o,children:n,disabled:a,...i})=>z("button",{type:r||"button",className:q(hr({variant:t,pending:e}),o),"aria-busy":e,"aria-disabled":a,disabled:a||e,...i,children:yr("span",{className:"grid grid-cols-[1fr_auto_1fr] gap-2",children:[z("span",{className:"flex items-center justify-end text-[.75em]",children:z("span",{className:"transition opacity-0 translate-x-2 group-aria-busy/button:opacity-100 group-aria-busy/button:translate-x-0 duration-100 group-aria-busy/button:duration-300",children:z(b,{})})}),z("span",{children:n})]})});import{useConnectModal as kr}from"@rainbow-me/rainbowkit";import{twMerge as br}from"tailwind-merge";import{jsx as se,jsxs as wr}from"react/jsx-runtime";function S({className:e,...t}){return wr("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 8 8",fill:"currentColor",shapeRendering:"crispEdges",className:br("-my-[0.125em] h-[1.25em] w-[1.25em]",e),...t,children:[se("path",{d:"M0 0h1v1H0zm0 1h1v1H0zm0 1h1v1H0zm0 1h1v1H0zm0 1h1v1H0zm0 1h1v1H0zm0 1h1v1H0zm0 1h1v1H0zm1 0h1v1H1zm1 0h1v1H2zm1 0h1v1H3zm1 0h1v1H4zm1 0h1v1H5zm2-1h1v1H7zm0 1h1v1H7zM6 7h1v1H6zm1-2h1v1H7zm0-1h1v1H7zm0-1h1v1H7z"}),se("path",{d:"M2 2h1v1H2zm0 1h1v1H2zm0 1h1v1H2zm0 1h1v1H2zm1-3h1v1H3zm1 0h1v1H4zm1 0h1v1H5zm0 1h1v1H5zm0 1h1v1H5zm0 1h1v1H5zM4 5h1v1H4zM3 5h1v1H3z",opacity:".5"}),se("path",{d:"M7 2h1v1H7zm0-1h1v1H7zM1 0h1v1H1zm1 0h1v1H2zm1 0h1v1H3zm1 0h1v1H4zm1 0h1v1H5zm1 0h1v1H6zm1 0h1v1H7z"})]})}import{useQuery as xr}from"@tanstack/react-query";function W(e){return xr({enabled:!!e,retry:!1,retryOnMount:!1,refetchOnMount:!1,refetchOnWindowFocus:!1,queryKey:["preloadImage",e],queryFn:()=>new Promise((t,r)=>{if(!e)throw new Error("usePreloadImage: Must provide `url` to preload image.");let o=new Image;o.onload=()=>t(o),o.onerror=()=>r(new Error(`usePreloadImage: Could not load image.
1396
1396
 
1397
- URL: ${e}`)),o.src=e})})}import{jsx as _,jsxs as xr}from"react/jsx-runtime";function He(){let{appName:e,appIcon:t}=l(),{data:r,isLoading:o}=W(t);return xr("div",{className:"flex-grow flex flex-col items-center justify-center gap-2",children:[_("div",{className:"w-16 h-16 m-2",children:o?null:r?_("img",{src:t,className:"w-full h-full object-cover"}):_(S,{className:"w-full h-full text-orange-500 dark:bg-neutral-800"})}),_("div",{className:"text-2xl text-white text-center",children:e})]})}import{twMerge as kr}from"tailwind-merge";import{useEffect as Sr,useState as Ar}from"react";import{jsx as Y,jsxs as Pr}from"react/jsx-runtime";function Oe(){let e=vr(),{openConnectModal:t,connectModalOpen:r}=Cr(),[o,n]=Ar(!1);return Sr(()=>{!r&&!o&&(t?.(),n(!0))},[r,o,t]),Pr("div",{className:kr("flex flex-col gap-6 p-6","animate-in animate-duration-300 fade-in slide-in-from-bottom-8"),children:[Y("div",{className:"p-4",children:Y(He,{})}),Y("div",{className:"self-center flex flex-col gap-2 w-60",children:Y(y,{variant:"secondary",className:"self-auto flex justify-center",disabled:e.status==="connecting",onClick:t,autoFocus:!0,children:"Connect wallet"},"create")})]})}import{useEffect as Ct,useMemo as Pn,useRef as Un,useState as Nn}from"react";import{twMerge as be}from"tailwind-merge";import{parseEther as Ur}from"viem";var P=Ur("0.01");import{useClient as zr}from"wagmi";import{queryOptions as qr,useQuery as Br}from"@tanstack/react-query";import{numberToHex as Tr}from"viem";import{defineStore as Nr}from"@latticexyz/store";import{parseAbi as Er}from"viem";var le=Er(["error SpenderSystem_AlreadyRegistered(address spender, address user)","error SpenderSystem_HasOwnBalance(address spender)","function registerSpender(address spender)"]),Rr=Nr({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:[]}}}}}),R=Rr.namespaces.root.tables;import{getRecord as Mr,getStaticDataLocation as Ir}from"@latticexyz/store/internal";import{getKeyTuple as Hr}from"@latticexyz/protocol-parser/internal";import{setStorageAt as Or}from"viem/actions";function h(e){let t=e.contracts??{};if("quarryPaymaster"in t&&t.quarryPaymaster!=null&&"address"in t.quarryPaymaster)return{type:"quarry",address:t.quarryPaymaster.address};if("paymaster"in t&&t.paymaster!=null&&"address"in t.paymaster)return{type:"simple",address:t.paymaster.address}}async function ze({client:e,userAddress:t}){let r=h(e.chain);return r?.type!=="quarry"?null:(await Mr(e,{address:r.address,table:R.Allowance,key:{user:t},blockTag:"pending"})).allowance}async function qe({client:e,userAddress:t,allowance:r}){let o=h(e.chain);if(o?.type!=="quarry")return;let n=Ir(R.Allowance.tableId,Hr(R.Allowance,{user:t}));await Or(e.extend(()=>({mode:"anvil"})),{address:o.address,index:n,value:Tr(r,{size:32})})}function de({client:e,userAddress:t}){let r=["getAllowance",e?.chain.id,t];return qr(e&&t?{queryKey:r,queryFn:()=>ze({client:e,userAddress:t})}:{queryKey:r,enabled:!1})}function Be(e){let{chainId:t}=l(),r=zr({chainId:t});return Br(de({client:r,userAddress:e}))}import{useClient as Di}from"wagmi";import{queryOptions as Fr,useQuery as Qi}from"@tanstack/react-query";import{getRecord as Lr}from"@latticexyz/store/internal";async function Le({client:e,userAddress:t,sessionAddress:r}){let o=h(e.chain);return o?.type!=="quarry"?null:(await Lr(e,{address:o.address,table:R.Spender,key:{spender:r},blockTag:"pending"})).user.toLowerCase()===t.toLowerCase()}function Fe({client:e,userAddress:t,sessionAddress:r}){let o=["getSpender",e?.chain.id,t,r];return Fr(e&&t&&r?{queryKey:o,queryFn:()=>Le({client:e,userAddress:t,sessionAddress:r})}:{queryKey:o,enabled:!1})}import{useClient as ls}from"wagmi";import{queryOptions as Vr,useQuery as cs}from"@tanstack/react-query";import{getRecord as Qr}from"@latticexyz/store/internal";import{resourceToHex as Kr}from"@latticexyz/common";import{parseAbi as Dr}from"viem";import Gr from"@latticexyz/world/mud.config";var Ke={pollingInterval:250},B=Kr({type:"system",namespace:"",name:"unlimited"}),De=Gr.namespaces.world.tables,Ge=Dr(["function registerDelegation(address delegatee, bytes32 delegationControlId, bytes initCallData)"]);async function Qe({client:e,worldAddress:t,userAddress:r,sessionAddress:o}){return(await Qr(e,{address:t,table:De.UserDelegationControl,key:{delegator:r,delegatee:o},blockTag:"pending"})).delegationControlId===B}function Ve({client:e,worldAddress:t,userAddress:r,sessionAddress:o}){let n=["getDelegation",e?.chain.id,t,r,o];return Vr(e&&r&&o?{queryKey:n,queryFn:()=>Qe({client:e,worldAddress:t,userAddress:r,sessionAddress:o})}:{queryKey:n,enabled:!1})}import{queryOptions as ro,useQuery as oo,useQueryClient as no}from"@tanstack/react-query";import{useClient as ao,useConfig as io}from"wagmi";import{useClient as Jr}from"wagmi";import{queryOptions as eo,useQuery as to}from"@tanstack/react-query";import{toSimpleSmartAccount as Zr}from"permissionless/accounts";import{isHex as Xr}from"viem";import{createStore as Wr}from"zustand/vanilla";import{persist as _r}from"zustand/middleware";var L=Wr(_r(()=>({signers:{}}),{name:"mud:entrykit",partialize:({signers:e})=>({signers:e})}));function Yr(e){e.key===L.persist.getOptions().name&&L.persist.rehydrate()}window.addEventListener("storage",Yr);import{generatePrivateKey as jr,privateKeyToAccount as $r}from"viem/accounts";function We(e){let t=e.toLowerCase(),r=L.getState().signers[t]??(()=>{let o=localStorage.getItem(`mud:appSigner:privateKey:${e.toLowerCase()}`)?.replace(/^"(.*)"$/,"$1"),n=Xr(o)?o:jr();return L.setState(a=>({signers:{...a.signers,[t]:n}})),n})();return $r(r)}async function _e({client:e,userAddress:t}){let r=We(t);return await Zr({client:e,owner:r})}function ce({client:e,userAddress:t}){let r=["getSessionAccount",e?.chain.id,t];return eo(e&&t?{queryKey:r,queryFn:()=>_e({client:e,userAddress:t}),staleTime:1/0}:{queryKey:r,enabled:!1})}function Ye(e){let{chainId:t}=l(),r=Jr({chainId:t});return to(ce({userAddress:e,client:r}))}import{getBalanceQueryOptions as so}from"wagmi/query";function lo({queryClient:e,config:t,client:r,userAddress:o,worldAddress:n}){let a=["getPrerequisites",r?.chain.id,o];return ro(r&&o?{queryKey:a,queryFn:async()=>{let i=h(r.chain),{address:s}=await e.fetchQuery(ce({client:r,userAddress:o})),[c,g,m,d]=await Promise.all([i?null:e.fetchQuery(so(t,{chainId:r.chain.id,address:s})),i?.type==="quarry"?e.fetchQuery(de({client:r,userAddress:o})):null,i?.type==="quarry"?e.fetchQuery(Fe({client:r,userAddress:o,sessionAddress:s})):null,e.fetchQuery(Ve({client:r,worldAddress:n,userAddress:o,sessionAddress:s}))]),p=g==null||g>=P,f=m??!0,G=c==null||c.value>=P;return{sessionAddress:s,hasAllowance:p,isSpender:f,hasGasBalance:G,hasDelegation:d,complete:p&&f&&d}}}:{queryKey:a,enabled:!1})}function T(e){let t=no(),{chainId:r,worldAddress:o}=l(),n=io(),a=ao({chainId:r});return oo(lo({config:n,queryClient:t,client:a,userAddress:e,worldAddress:o}),t)}import{useDisconnect as mo}from"wagmi";import{useQuery as co}from"@tanstack/react-query";function X(e){let t=e?.toLowerCase();return co({enabled:!!t,queryKey:["ens",t],queryFn:async()=>{let r=await fetch(`https://api.ensideas.com/ens/resolve/${t}`).then(o=>o.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 po}from"react/jsx-runtime";function M({hex:e}){return e.length<=10?pe("span",{title:e,children:e}):po("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{useEffect as uo}from"react";import{jsx as F,jsxs as me}from"react/jsx-runtime";function Xe({isActive:e,isExpanded:t,userAddress:r}){let{data:o,error:n}=X(r);uo(()=>{n&&console.log("Could not get ENS",n)},[n]);let{disconnect:a,isPending:i}=mo(),{closeAccountModal:s}=v();return me("div",{className:"flex flex-col gap-4",children:[me("div",{className:"flex justify-between gap-4",children:[me("div",{children:[F("div",{children:"Account"}),F("div",{className:"font-mono text-white",children:o?.name??F(M,{hex:r})})]}),F(y,{variant:e?"primary":"tertiary",className:"flex-shrink-0 text-sm p-1 w-28",autoFocus:e,pending:i,onClick:()=>{s(),a()},children:"Sign out"})]}),t?F("p",{className:"text-sm",children:"Each of your onchain actions in this app is associated with your account."}):null]})}import{parseEther as ho}from"viem";import{useMutation as yo,useQueryClient as bo}from"@tanstack/react-query";import{http as go}from"viem";function je(){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 go(t)({chain:e,retryCount:0})}}import $e from"debug";var ue=$e("mud:entrykit"),fo=$e("mud:entrykit");ue.log=console.debug.bind(console);fo.log=console.error.bind(console);var I=ue.extend("quarry");async function Ze({chain:e,userAddress:t}){let r=je()({chain:e});I("Issuing gas pass to",t),await r.request({method:"quarry_issuePass",params:["0x01",t]}),I("Claiming gas allowance for",t),await r.request({method:"quarry_claimAllowance",params:["0x01",t]})}import{useClient as wo}from"wagmi";function Je(){let e=bo(),{chain:t}=l(),r=wo({chainId:t.id}),o=["claimGasPass",t.id];return yo({mutationKey:o,onError:n=>console.error(n),mutationFn:async n=>{if(t.id===31337){if(!r)throw new Error("No client?");await qe({client:r,userAddress:n,allowance:ho("1")})}else await Ze({chain:t,userAddress:n});await Promise.all([e.invalidateQueries({queryKey:["getAllowance"]}),e.invalidateQueries({queryKey:["getPrerequisites"]})])},retry:0})}import{twMerge as xo}from"tailwind-merge";import{jsx as j,jsxs as vo}from"react/jsx-runtime";function et({className:e,...t}){return vo("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 263 428",fill:"currentColor",className:xo("w-[0.6em] h-[1em]",e),...t,children:[j("path",{d:"M132 321V428L263 243L132 321Z"}),j("path",{d:"M0 243L132 321V428",fillOpacity:"0.5"}),j("path",{d:"M132 0V296L263 218"}),j("path",{d:"M0 218L132 296V0L0 218Z",fillOpacity:"0.5"})]})}import{formatEther as Co}from"viem";function tt(e){let t=Co(e),r=Math.floor(parseFloat(t)).toString().length;return parseFloat(t).toLocaleString("en-US",{maximumFractionDigits:Math.max(0,6-r)})}import{formatEther as ko}from"viem";import{jsx as So,jsxs as Ao}from"react/jsx-runtime";function $({wei:e}){return Ao("span",{className:"inline-flex items-center gap-1",title:ko(e),children:[tt(e)," ",So(et,{})]})}import{useEffect as Po}from"react";import{jsx as H,jsxs as ge}from"react/jsx-runtime";function rt({isActive:e,isExpanded:t,userAddress:r}){let o=Be(r),n=Je();return Po(()=>{let a=setTimeout(()=>{e&&n.status==="idle"&&o.isSuccess&&o.data!=null&&o.data<P&&n.mutate(r)});return()=>clearTimeout(a)},[o.data,o.isSuccess,n,e,r]),ge("div",{className:"flex flex-col gap-4",children:[ge("div",{className:"flex justify-between gap-4",children:[ge("div",{children:[H("div",{children:"Allowance"}),H("div",{className:"font-mono text-white",children:o.data!=null?H($,{wei:o.data}):H(b,{className:"text-sm"})})]}),H(y,{variant:e?"primary":"tertiary",className:"flex-shrink-0 text-sm p-1 w-28",autoFocus:e||t,pending:o.status==="pending"||n.status==="pending",onClick:()=>n.mutate(r),children:"Top up"})]}),t?H("p",{className:"text-sm",children:"Your allowance is used to pay for onchain computation."}):null]})}import{encodeFunctionData as nt}from"viem";import{useMutation as qo,useQueryClient as Bo}from"@tanstack/react-query";import{getAction as he}from"viem/utils";import{sendUserOperation as Lo,waitForUserOperationReceipt as Fo}from"viem/account-abstraction";import{waitForTransactionReceipt as Ko}from"viem/actions";import{useClient as Do}from"wagmi";import{resourceToHex as at}from"@latticexyz/common";import Go from"@latticexyz/world/out/IBaseWorld.sol/IBaseWorld.abi.json";import{writeContract as Ho}from"viem/actions";import{getAction as Oo}from"viem/utils";import{toHex as Uo}from"viem";import{signTypedData as No}from"viem/actions";import{callWithSignatureTypes as Eo}from"@latticexyz/world-module-callwithsignature/internal";import{getRecord as Ro}from"@latticexyz/store/internal";import To from"@latticexyz/world-module-callwithsignature/mud.config";import{hexToResource as Mo}from"@latticexyz/common";import{getAction as Io}from"viem/utils";async function ot({userClient:e,worldAddress:t,systemId:r,callData:o,nonce:n,client:a}){let i=n??(a?(await Ro(a,{address:t,table:To.tables.CallWithSignatureNonces,key:{signer:e.account.address},blockTag:"pending"})).nonce:0n),{namespace:s,name:c}=Mo(r);return await Io(e,No,"signTypedData")({account:e.account,domain:{verifyingContract:t,salt:Uo(e.chain.id,{size:32})},types:Eo,primaryType:"Call",message:{signer:e.account.address,systemNamespace:s,systemName:c,callData:o,nonce:i}})}import zo from"@latticexyz/world-module-callwithsignature/out/CallWithSignatureSystem.sol/CallWithSignatureSystem.abi.json";async function fe({sessionClient:e,...t}){let r=await ot(t);return Oo(e,Ho,"writeContract")({address:t.worldAddress,abi:zo,functionName:"callWithSignature",args:[t.userClient.account.address,t.systemId,t.callData,r]})}function it({userClient:e}){let t=Bo(),{chainId:r,worldAddress:o}=l(),n=Do({chainId:r}),a=["setupSession",n?.chain.id,e.account.address];return qo({mutationKey:a,onError:i=>console.error(i),mutationFn:async({sessionClient:i,registerSpender:s,registerDelegation:c})=>{if(!n)throw new Error("Client not ready.");let g=h(n.chain),m=i.account.address;if(console.log("setting up session"),e.account.type==="smart"){let d=[];if(s&&g?.type==="quarry"&&(console.log("registering spender"),d.push({to:g.address,abi:le,functionName:"registerSpender",args:[m]})),c&&(console.log("registering delegation"),d.push({to:o,abi:Ge,functionName:"registerDelegation",args:[m,B,"0x"]})),!d.length)return;console.log("setting up account with",d,e);let p=await he(e,Lo,"sendUserOperation")({calls:d});console.log("got user op hash",p);let f=await he(e,Fo,"waitForUserOperationReceipt")({hash:p});console.log("got user op receipt",f),f.success||console.error("not successful?",f)}else{let d=[];if(s&&g?.type==="quarry"){console.log("registering spender");let p=await fe({client:n,userClient:e,sessionClient:i,worldAddress:g.address,systemId:at({type:"system",namespace:"",name:"SpenderSystem"}),callData:nt({abi:le,functionName:"registerSpender",args:[m]})});console.log("got spender tx",p),d.push(p)}if(c){console.log("registering delegation");let p=await fe({client:n,userClient:e,sessionClient:i,worldAddress:o,systemId:at({type:"system",namespace:"",name:"Registration"}),callData:nt({abi:Go,functionName:"registerDelegation",args:[m,B,"0x"]})});console.log("got delegation tx",p),d.push(p)}if(!d.length)return;console.log("waiting for",d.length,"receipts");for(let p of d){let f=await he(n,Ko,"waitForTransactionReceipt")({hash:p});console.log("got tx receipt",f),f.status==="reverted"&&console.error("tx reverted?",f)}}await Promise.all([t.invalidateQueries({queryKey:["getSpender"]}),t.invalidateQueries({queryKey:["getDelegation"]}),t.invalidateQueries({queryKey:["getPrerequisites"]})])},retry:0})}import{useEffect as bn}from"react";import{useClient as un}from"wagmi";import{queryOptions as gn,useQuery as fn}from"@tanstack/react-query";import{smartAccountActions as pn}from"permissionless";import{callFrom as mn}from"@latticexyz/world/internal";import{createBundlerClient as Qo}from"viem/account-abstraction";var Vo=new Set([31337,17420,17069,690]);function st(e){let t=e.chain??e.client?.chain,r=t?h(t):void 0;return Qo({...Ke,paymaster:r?{getPaymasterData:async()=>({paymaster:r.address,paymasterData:"0x"})}:void 0,userOperation:{estimateFeesPerGas:t&&Vo.has(t.id)?async()=>({maxFeePerGas:100000n,maxPriorityFeePerGas:0n}):void 0},...e})}import{transactionQueue as on}from"@latticexyz/common/actions";import{createClient as nn,fallback as an,http as ft,keccak256 as sn,stringToHex as ln,webSocket as dn}from"viem";import{privateKeyToAccount as cn}from"viem/accounts";import{createTransport as Jo,numberToHex as en,parseEther as tn}from"viem";import{entryPoint07Address as ut}from"viem/account-abstraction";import{formatUserOperationRequest as Wo}from"viem/account-abstraction";async function lt(e){return Wo({callGasLimit:20000000n,preVerificationGas:200000n,verificationGasLimit:2000000n,paymasterVerificationGasLimit:200000n,paymasterPostOpGasLimit:200000n})}import{parseEventLogs as _o}from"viem";import{formatUserOperation as Yo,toPackedUserOperation as Xo,getUserOperationHash as jo,entryPoint07Address as dt,entryPoint07Abi as ct}from"viem/account-abstraction";import{waitForTransactionReceipt as $o,writeContract as Zo}from"viem/actions";import{getAction as pt}from"viem/utils";async function mt({executor:e,rpcUserOp:t}){let r=Yo(t),o=Xo(r),n=jo({userOperation:r,chainId:e.chain.id,entryPointVersion:"0.7",entryPointAddress:dt}),a=await pt(e,Zo,"writeContract")({abi:ct,address:dt,functionName:"handleOps",args:[[o],e.account.address],chain:e.chain,account:e.account}),i=await pt(e,$o,"waitForTransactionReceipt")({hash:a});return{success:_o({logs:i.logs,abi:ct,eventName:"UserOperationEvent"})[0].args.success,userOpHash:n,receipt:i}}import{setBalance as rn}from"viem/actions";function gt({executor:e}){return()=>{I("using a local user op executor",e.account.address),e.chain.id===31337&&(I("setting executor balance"),rn(e.extend(()=>({mode:"anvil"})),{address:e.account.address,value:tn("100")}));let t=new Map;return Jo({key:"userOpExecutor",type:"userOpExecutor",name:"User Operation Executor Transport",request:async({method:o,params:n})=>{if(o==="eth_chainId")return en(e.chain.id);if(o==="eth_supportedEntryPoints")return[ut];if(o==="eth_sendUserOperation"){let[a,i]=n;if(i===ut){let s=await mt({executor:e,rpcUserOp:a});return t.set(s.userOpHash,s),s.userOpHash}}if(o==="eth_getUserOperationReceipt"){let[a]=n;return t.get(a)??null}if(o==="eth_estimateUserOperationGas")return await lt(n);throw new Error("Method not implemented.")}})}}function ht(e){let t=e.rpcUrls.bundler?.http[0],r=t?ft(t):e.id===31337?gt({executor:nn({chain:e,transport:an([dn(),ft()]),account:cn(sn(ln("local user op executor"))),pollingInterval:10}).extend(on())}):null;if(!r)throw new Error(`Chain ${e.id} config did not include a bundler RPC URL.`);return r}async function yt({client:e,userAddress:t,sessionAccount:r,worldAddress:o}){let n=ht(e.chain);return st({transport:n,client:e,account:r}).extend(pn).extend(mn({worldAddress:o,delegatorAddress:t,publicClient:e})).extend(()=>({userAddress:t}))}import{useEffect as hn}from"react";function yn({sessionAccount:e,client:t,userAddress:r,worldAddress:o}){let n=["getSessionClient",t?.uid,r,e?.address,o];return gn(t&&r&&e?{queryKey:n,queryFn:()=>yt({sessionAccount:e,client:t,userAddress:r,worldAddress:o}),staleTime:1/0}:{queryKey:n,enabled:!1})}function Z(e){let{chainId:t,worldAddress:r}=l(),o=un({chainId:t}),{data:n,error:a}=Ye(e);return hn(()=>{a&&console.error("Could not get session account",a)},[a]),fn(yn({sessionAccount:n,userAddress:e,client:o,worldAddress:r}))}import{jsx as K,jsxs as ye}from"react/jsx-runtime";function bt({isActive:e,isExpanded:t,userClient:r,registerSpender:o,registerDelegation:n}){let a=Z(r.account.address),i=it({userClient:r}),s=!n&&!n;return bn(()=>{let c=setTimeout(()=>{e&&i.status==="idle"&&a.data&&!s&&i.mutate({sessionClient:a.data,registerSpender:o,registerDelegation:n})});return()=>clearTimeout(c)},[s,e,n,o,a,i]),ye("div",{className:"flex flex-col gap-4",children:[ye("div",{className:"flex justify-between gap-4",children:[ye("div",{children:[K("div",{children:"Session"}),K("div",{className:"font-mono text-white",children:s?"Enabled":"Set up"})]}),s?K(y,{variant:"tertiary",className:"flex-shrink-0 text-sm p-1 w-28",autoFocus:e,disabled:!0,children:"Enabled"}):K(y,{variant:e?"primary":"tertiary",className:"flex-shrink-0 text-sm p-1 w-28",autoFocus:e,pending:!a.data||i.status==="pending",onClick:a.data?()=>i.mutate({sessionClient:a.data,registerSpender:o,registerDelegation:n}):void 0,children:"Enable"})]}),t?K("p",{className:"text-sm",children:"You can perform actions in this app without interruptions for approvals."}):null]})}import{useBalance as Sn}from"wagmi";var wt={"1":{bridgeUrl:"https://relay.link/bridge/ethereum"},"10":{bridgeUrl:"https://relay.link/bridge/optimism"},"56":{bridgeUrl:"https://relay.link/bridge/bnb"},"100":{bridgeUrl:"https://relay.link/bridge/gnosis"},"111":{bridgeUrl:"https://testnets.relay.link/bridge/bob"},"137":{bridgeUrl:"https://relay.link/bridge/polygon"},"185":{bridgeUrl:"https://relay.link/bridge/mint"},"288":{bridgeUrl:"https://relay.link/bridge/boba"},"324":{bridgeUrl:"https://relay.link/bridge/zksync"},"360":{bridgeUrl:"https://relay.link/bridge/shape"},"480":{bridgeUrl:"https://relay.link/bridge/world-chain"},"690":{bridgeUrl:"https://relay.link/bridge/redstone"},"919":{bridgeUrl:"https://testnets.relay.link/bridge/mode-testnet"},"1101":{bridgeUrl:"https://relay.link/bridge/polygon-zkevm"},"1135":{bridgeUrl:"https://relay.link/bridge/lisk"},"1301":{bridgeUrl:"https://testnets.relay.link/bridge/unichain-sepolia"},"1329":{bridgeUrl:"https://relay.link/bridge/sei"},"1625":{bridgeUrl:"https://relay.link/bridge/gravity"},"1868":{bridgeUrl:"https://relay.link/bridge/soneium"},"1993":{bridgeUrl:"https://testnets.relay.link/bridge/b3"},"1996":{bridgeUrl:"https://relay.link/bridge/sanko"},"2741":{bridgeUrl:"https://relay.link/bridge/abstract"},"2911":{bridgeUrl:"https://relay.link/bridge/hychain"},"4202":{bridgeUrl:"https://testnets.relay.link/bridge/lisk-sepolia"},"4321":{bridgeUrl:"https://relay.link/bridge/echos"},"5000":{bridgeUrl:"https://relay.link/bridge/mantle"},"5112":{bridgeUrl:"https://relay.link/bridge/ham"},"7560":{bridgeUrl:"https://relay.link/bridge/cyber"},"7865":{bridgeUrl:"https://relay.link/bridge/powerloom"},"7897":{bridgeUrl:"https://relay.link/bridge/arena-z"},"8333":{bridgeUrl:"https://relay.link/bridge/B3"},"8453":{bridgeUrl:"https://relay.link/bridge/base"},"9897":{bridgeUrl:"https://testnets.relay.link/bridge/arena-z-testnet"},"11011":{bridgeUrl:"https://testnets.relay.link/bridge/shape-sepolia"},"11124":{bridgeUrl:"https://testnets.relay.link/bridge/abstract"},"13746":{bridgeUrl:"https://testnets.relay.link/bridge/game7-testnet"},"17000":{bridgeUrl:"https://testnets.relay.link/bridge/holesky"},"17069":{bridgeUrl:"https://testnets.relay.link/bridge/garnet"},"17071":{bridgeUrl:"https://relay.link/bridge/onchain-points"},"33139":{bridgeUrl:"https://relay.link/bridge/apechain"},"33979":{bridgeUrl:"https://relay.link/bridge/funki"},"34443":{bridgeUrl:"https://relay.link/bridge/mode"},"42161":{bridgeUrl:"https://relay.link/bridge/arbitrum"},"42170":{bridgeUrl:"https://relay.link/bridge/arbitrum-nova"},"43114":{bridgeUrl:"https://relay.link/bridge/avalanche"},"55244":{bridgeUrl:"https://relay.link/bridge/superposition"},"57073":{bridgeUrl:"https://relay.link/bridge/ink"},"59144":{bridgeUrl:"https://relay.link/bridge/linea"},"60808":{bridgeUrl:"https://relay.link/bridge/bob"},"70700":{bridgeUrl:"https://relay.link/bridge/apex"},"70701":{bridgeUrl:"https://relay.link/bridge/boss"},"70800":{bridgeUrl:"https://testnets.relay.link/bridge/apex-testnet"},"70805":{bridgeUrl:"https://testnets.relay.link/bridge/cloud"},"80002":{bridgeUrl:"https://testnets.relay.link/bridge/amoy"},"81457":{bridgeUrl:"https://relay.link/bridge/blast"},"84532":{bridgeUrl:"https://testnets.relay.link/bridge/base-sepolia"},"167009":{bridgeUrl:"https://testnets.relay.link/bridge/hekla"},"421614":{bridgeUrl:"https://testnets.relay.link/bridge/arbitrum-sepolia"},"534352":{bridgeUrl:"https://relay.link/bridge/scroll"},"543210":{bridgeUrl:"https://relay.link/bridge/zero-network"},"660279":{bridgeUrl:"https://relay.link/bridge/xai"},"911867":{bridgeUrl:"https://testnets.relay.link/bridge/odyssey"},"984122":{bridgeUrl:"https://relay.link/bridge/forma"},"1118190":{bridgeUrl:"https://testnets.relay.link/bridge/eclipse-testnet"},"3397901":{bridgeUrl:"https://testnets.relay.link/bridge/funki-testnet"},"4457845":{bridgeUrl:"https://testnets.relay.link/bridge/zero-sepolia"},"7777777":{bridgeUrl:"https://relay.link/bridge/zora"},"8253038":{bridgeUrl:"https://relay.link/bridge/bitcoin"},"9092725":{bridgeUrl:"https://testnets.relay.link/bridge/bitcoin-testnet4"},"9286185":{bridgeUrl:"https://relay.link/bridge/eclipse"},"11155111":{bridgeUrl:"https://testnets.relay.link/bridge/sepolia"},"11155420":{bridgeUrl:"https://testnets.relay.link/bridge/op-sepolia"},"666666666":{bridgeUrl:"https://relay.link/bridge/degen"},"792703809":{bridgeUrl:"https://relay.link/bridge/solana"},"888888888":{bridgeUrl:"https://relay.link/bridge/ancient8"},"999999999":{bridgeUrl:"https://testnets.relay.link/bridge/zora-sepolia"},"1380012617":{bridgeUrl:"https://relay.link/bridge/rari"},"1936682084":{bridgeUrl:"https://testnets.relay.link/bridge/solana-devnet"},"88153591557":{bridgeUrl:"https://testnets.relay.link/bridge/arbitrum-blueberry"}};import{useQueryClient as xn,useMutation as vn}from"@tanstack/react-query";import{setBalance as Cn}from"viem/actions";import{useClient as kn}from"wagmi";function xt(){let e=xn(),{chainId:t}=l(),r=kn({chainId:t});return vn({mutationKey:["setBalance",t],onError:o=>console.error(o),mutationFn:async o=>(r&&(await Cn({...r,mode:"anvil"},o),await Promise.all([e.invalidateQueries({queryKey:["balance"]}),e.invalidateQueries({queryKey:["getPrerequisites"]})])),null),retry:0})}import{Fragment as An,jsx as w,jsxs as D}from"react/jsx-runtime";function vt({isActive:e,isExpanded:t,sessionAddress:r}){let{chain:o}=l(),n=Sn({chainId:o.id,address:r,query:{refetchInterval:2e3}}),a=xt(),i=wt[o.id];return D("div",{className:"flex flex-col gap-4",children:[D("div",{className:"flex justify-between gap-4",children:[D("div",{children:[w("div",{children:"Gas balance"}),w("div",{className:"font-mono text-white",children:n.data!=null?w($,{wei:n.data.value}):w(b,{className:"text-sm"})})]}),o.id===31337?w(y,{variant:e?"primary":"tertiary",className:"flex-shrink-0 text-sm p-1 w-28",autoFocus:e||t,pending:n.status==="pending"||a.status==="pending",onClick:()=>a.mutate({address:r,value:P+(n.data?.value??0n)}),children:"Top up"}):i!=null?w("a",{href:`${i.bridgeUrl}?${new URLSearchParams({toAddress:r})}`,target:"_blank",rel:"noopener noreferrer",children:w(y,{variant:e?"primary":"tertiary",className:"flex-shrink-0 text-sm p-1 w-28",autoFocus:e||t,pending:n.status==="pending",children:"Top up"})}):null]}),t?D(An,{children:[w("p",{className:"text-sm",children:"Your session's gas balance is used to pay for onchain computation."}),D("p",{className:"text-sm",children:["Send funds to"," ",w("span",{className:"font-mono text-white",children:w(M,{hex:r})})," ","on ",o.name," to top up your session balance."]})]}):null]})}import{jsx as U}from"react/jsx-runtime";function kt({userClient:e,initialUserAddress:t}){let{chain:r}=l(),o=h(r),n=e.account.address,{data:a,error:i}=T(n);Ct(()=>{i&&console.error("Could not get prerequisites",i)},[i]);let{closeAccountModal:s}=v(),c=n!==t,g=Un(a);Ct(()=>{a!=null&&(g.current==null&&(g.current=a),a.complete&&(c||!g.current.complete)&&s())},[s,c,a]);let{sessionAddress:m,hasAllowance:d,isSpender:p,hasDelegation:f,hasGasBalance:G}=a??{},A=Pn(()=>{if(!n)return[{id:"wallet",isComplete:!1,content:()=>null}];let u=[{id:"wallet",isComplete:!0,content:x=>U(Xe,{...x,userAddress:n})}];return o?o.type==="quarry"&&u.push({id:"allowance",isComplete:!!d,content:x=>U(rt,{...x,userAddress:n})}):m!=null&&u.push({id:"gasBalance",isComplete:!!G,content:x=>U(vt,{...x,sessionAddress:m})}),u.push({id:"session",isComplete:!!p&&!!f,content:x=>U(bt,{...x,userClient:e,registerSpender:!p,registerDelegation:!f})}),u},[d,f,G,p,o,m,n,e]),[xe]=Nn(null),Ft=A.find(u=>u.content!=null&&!u.isComplete),re=A.filter(u=>u.isComplete),oe=(xe!=null?A.find(u=>u.id===xe):null)??Ft??(re.length<A.length?re.at(-1):null),ve=oe?A.indexOf(oe):-1;return U("div",{className:be("px-8 flex flex-col divide-y divide-neutral-800","animate-in animate-duration-300 fade-in slide-in-from-bottom-8"),children:A.map((u,x)=>{let ne=u===oe,Kt=ne||re.length===A.length,Dt=!u.isComplete&&ve!==-1&&x>ve;return U("div",{className:be("py-8 flex flex-col justify-center",ne?"flex-grow":null),children:U("div",{className:be("flex flex-col",Dt?"opacity-30 pointer-events-none":null),children:u.content({isActive:ne,isExpanded:Kt})})},u.id)})})}import{useRef as Tn}from"react";import{jsx as St}from"react/jsx-runtime";function At(){let{chainId:e}=l(),t=Rn({chainId:e}),{address:r}=En(),o=Tn(r);return t.status!=="success"?St(Oe,{}):St(kt,{userClient:t.data,initialUserAddress:o.current})}import{useState as zn}from"react";import{ErrorBoundary as qn}from"react-error-boundary";import{twMerge as Mn}from"tailwind-merge";import{BaseError as In,UserRejectedRequestError as Hn}from"viem";import{jsx as Pt,jsxs as On}from"react/jsx-runtime";function Ut({title:e,error:t}){if(!t||t instanceof In&&t.walk(n=>n instanceof Hn)!=null)return null;let r=e??"Error",o=typeof t=="string"?t:t instanceof Error?String(t):"Something unexpected happened.";return On("div",{className:Mn("text-sm border-l-4 border-red-500","bg-red-100 text-red-900","dark:bg-red-900 dark:text-red-50"),children:[Pt("div",{className:"p-3 font-semibold",children:r}),Pt("div",{className:"px-3 whitespace-break-spaces break-all max-h-32 overflow-y-scroll",children:o})]})}import{wait as Bn}from"@latticexyz/common/utils";import{twMerge as Ln}from"tailwind-merge";import{useIsMounted as Fn}from"usehooks-ts";import{jsx as J,jsxs as Nt}from"react/jsx-runtime";function Et({children:e}){let t=Fn(),[r,o]=zn(1);return J(qn,{fallbackRender:({error:n,resetErrorBoundary:a})=>Nt("div",{className:Ln("flex-grow flex flex-col justify-center p-5 gap-2"),children:[J(Ut,{error:n instanceof Error?n.stack??n.message:n}),r>0?Nt("button",{type:"button",onClick:async i=>{i.currentTarget.ariaBusy="true",await Bn(1e3),a(),t()&&(o(s=>s-1),i.currentTarget.ariaBusy=null)},className:"group aria-busy:pointer-events-none self-end flex items-center gap-1",children:[J(b,{className:"transition opacity-0 group-aria-busy:opacity-100 text-xs text-neutral-500 dark:text-neutral-400"}),J("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 Gn,DialogTitle as Qn}from"@radix-ui/react-dialog";import{twMerge as Kn}from"tailwind-merge";import{jsx as Dn}from"react/jsx-runtime";function Rt({className:e,children:t,...r}){return Dn("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",className:Kn("-my-[0.125em] h-[1.25em] w-[1.25em]",e),...r,children:t})}import{jsx as Tt}from"react/jsx-runtime";function Mt(e){return Tt(Rt,{strokeWidth:"2",stroke:"currentColor",...e,children:Tt("path",{d:"M6 18L18 6M6 6L18 18",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})}import{jsx as C,jsxs as we}from"react/jsx-runtime";function Ht(){let{accountModalOpen:e,toggleAccountModal:t}=v();return we(Me,{open:e,onOpenChange:t,children:[C(Qn,{className:"sr-only",children:"Connect with EntryKit"}),e?we("div",{className:It("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:[C(Et,{children:C(At,{})}),we("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:[C("span",{className:"block w-4 h-4",children:C(S,{className:"w-full h-full text-orange-500 group-hover:rotate-90 transition duration-300"})}),C("span",{children:"Powered by MUD"})]}),C("div",{className:"absolute top-0 right-0",children:C(Gn,{className:It("pointer-events-auto leading-none p-2 transition","text-neutral-700 hover:text-neutral-500"),title:"Close",children:C(Mt,{className:"m-0"})})})]}):null]})}import{jsx as Wn,jsxs as _n}from"react/jsx-runtime";function Vn({config:e,children:t}){return _n(Ue,{config:e,children:[t,Wn(Ht,{})]})}import{useAccount as jn}from"wagmi";import{twMerge as N}from"tailwind-merge";import{twMerge as Ot}from"tailwind-merge";import{useEffect as Yn}from"react";import{Fragment as Xn,jsx as ee,jsxs as zt}from"react/jsx-runtime";function qt({address:e}){let{data:t,error:r}=X(e),o=W(t?.avatar);return Yn(()=>{r&&console.log("Could not get ENS",r)},[r]),zt(Xn,{children:[zt("span",{className:"flex-shrink-0 w-6 h-6 -my-1 -mx-0.5 grid place-items-center",children:[ee("img",{src:t?.avatar&&o.isSuccess?t.avatar:void 0,className:Ot("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","transtion duration-300",o.isSuccess?"opacity-100":"opacity-0")}),ee(S,{className:Ot("col-start-1 row-start-1 text-orange-500","transition duration-300",t&&(!t.avatar||o.isError)?"opacity-100":"opacity-0")})]}),ee("span",{className:"flex-grow",children:t?.name??ee(M,{hex:e})})]})}import{useRef as $n}from"react";import{jsx as k,jsxs as Lt}from"react/jsx-runtime";var Bt=N("w-48 p-3 inline-flex outline-none transition","border border-transparent","text-base leading-none"),Zn=N("bg-neutral-100 border-neutral-300 text-black","dark:bg-neutral-800 dark:border-neutral-700 dark:text-white"),Jn=N("cursor-pointer outline-none hover:bg-neutral-200 data-[highlighted]:bg-neutral-200 dark:hover:bg-neutral-700");function ea(){let{openAccountModal:e,accountModalOpen:t}=v(),{status:r,address:o}=jn(),n=$n(o),a=T(o),i=r==="connected"||r==="reconnecting"&&o,s=o!==n.current,c=a.isSuccess?a.data.complete:s?!1:i,g=(()=>{if(a.isSuccess){if(!a.data.hasAllowance)return"Top up";if(!a.data.hasDelegation||!a.data.isSpender)return"Set up"}return"Sign in"})();return k(Q,{mode:"child",children:c?k("button",{type:"button",className:N(Bt,Zn,Jn),onClick:e,children:k("span",{className:"flex-grow inline-flex gap-2.5 items-center text-left font-medium",children:o?k(qt,{address:o}):null})},"connected"):Lt("button",{type:"button",className:N(Bt,"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:[Lt("span",{className:"pointer-events-none inline-grid place-items-center -ml-3",children:[k("span",{className:N("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:k(S,{})}),k("span",{"aria-hidden":!0,className:N("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:k(b,{})})]}),k("span",{className:"font-medium",children:g})]},"sign in")})}import{useConnectorClient as ta}from"wagmi";function ra(){let{chainId:e}=l(),t=ta({chainId:e});t.error&&console.error("Error retrieving user client",t.error);let r=t.data?.account.address,o=T(r),n=Z(r);return t.isSuccess?!o.isSuccess||!o.data.complete?{...o,data:void 0}:n:{...t,data:void 0}}import{connectorsForWallets as na}from"@rainbow-me/rainbowkit";import{createConfig as aa}from"wagmi";import{getDefaultWallets as oa}from"@rainbow-me/rainbowkit";function te(e){let{wallets:t}=oa();return[...t]}function ia(e){let t=te(e),r=na(t,{appName:e.appName,projectId:e.walletConnectProjectId});return aa({connectors:r,chains:e.chains,transports:e.transports,pollingInterval:e.pollingInterval})}import{connectorsForWallets as sa}from"@rainbow-me/rainbowkit";function Am({wallets:e,...t}){return sa(e??te(t),{appName:t.appName,projectId:t.walletConnectProjectId})}export{ea as AccountButton,Vn as EntryKitProvider,ia as createWagmiConfig,Gt as defineConfig,Am as getConnectors,te as getWallets,v as useAccountModal,l as useEntryKitConfig,ra as useSessionClient};
1397
+ URL: ${e}`)),o.src=e})})}import{jsx as _,jsxs as vr}from"react/jsx-runtime";function ze(){let{appName:e,appIcon:t}=l(),{data:r,isLoading:o}=W(t);return vr("div",{className:"flex-grow flex flex-col items-center justify-center gap-2",children:[_("div",{className:"w-16 h-16 m-2",children:o?null:r?_("img",{src:t,className:"w-full h-full object-cover"}):_(S,{className:"w-full h-full text-orange-500 dark:bg-neutral-800"})}),_("div",{className:"text-2xl text-white text-center",children:e})]})}import{twMerge as Sr}from"tailwind-merge";import{useEffect as Ar,useState as Pr}from"react";import{jsx as Y,jsxs as Ur}from"react/jsx-runtime";function qe(){let e=Cr(),{openConnectModal:t,connectModalOpen:r}=kr(),[o,n]=Pr(!1);return Ar(()=>{!r&&!o&&(t?.(),n(!0))},[r,o,t]),Ur("div",{className:Sr("flex flex-col gap-6 p-6","animate-in animate-duration-300 fade-in slide-in-from-bottom-8"),children:[Y("div",{className:"p-4",children:Y(ze,{})}),Y("div",{className:"self-center flex flex-col gap-2 w-60",children:Y(y,{variant:"secondary",className:"self-auto flex justify-center",disabled:e.status==="connecting",onClick:t,autoFocus:!0,children:"Connect wallet"},"create")})]})}import{useEffect as St,useMemo as Un,useRef as Nn,useState as En}from"react";import{twMerge as be}from"tailwind-merge";import{parseEther as Nr}from"viem";var P=Nr("0.01");import{useClient as qr}from"wagmi";import{queryOptions as Br,useQuery as Lr}from"@tanstack/react-query";import{numberToHex as Mr}from"viem";import{defineStore as Er}from"@latticexyz/store";import{parseAbi as Rr}from"viem";var le=Rr(["error SpenderSystem_AlreadyRegistered(address spender, address user)","error SpenderSystem_HasOwnBalance(address spender)","function registerSpender(address spender)"]),Tr=Er({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:[]}}}}}),R=Tr.namespaces.root.tables;import{getRecord as Ir,getStaticDataLocation as Hr}from"@latticexyz/store/internal";import{getKeyTuple as Or}from"@latticexyz/protocol-parser/internal";import{setStorageAt as zr}from"viem/actions";function h(e){let t=e.contracts??{};if("quarryPaymaster"in t&&t.quarryPaymaster!=null&&"address"in t.quarryPaymaster)return{type:"quarry",address:t.quarryPaymaster.address};if("paymaster"in t&&t.paymaster!=null&&"address"in t.paymaster)return{type:"simple",address:t.paymaster.address}}async function Be({client:e,userAddress:t}){let r=h(e.chain);return r?.type!=="quarry"?null:(await Ir(e,{address:r.address,table:R.Allowance,key:{user:t},blockTag:"pending"})).allowance}async function Le({client:e,userAddress:t,allowance:r}){let o=h(e.chain);if(o?.type!=="quarry")return;let n=Hr(R.Allowance.tableId,Or(R.Allowance,{user:t}));await zr(e.extend(()=>({mode:"anvil"})),{address:o.address,index:n,value:Mr(r,{size:32})})}function de({client:e,userAddress:t}){let r=["getAllowance",e?.chain.id,t];return Br(e&&t?{queryKey:r,queryFn:()=>Be({client:e,userAddress:t})}:{queryKey:r,enabled:!1})}function Fe(e){let{chainId:t}=l(),r=qr({chainId:t});return Lr(de({client:r,userAddress:e}))}import{useClient as Gi}from"wagmi";import{queryOptions as Kr,useQuery as Vi}from"@tanstack/react-query";import{getRecord as Fr}from"@latticexyz/store/internal";async function Ke({client:e,userAddress:t,sessionAddress:r}){let o=h(e.chain);return o?.type!=="quarry"?null:(await Fr(e,{address:o.address,table:R.Spender,key:{spender:r},blockTag:"pending"})).user.toLowerCase()===t.toLowerCase()}function De({client:e,userAddress:t,sessionAddress:r}){let o=["getSpender",e?.chain.id,t,r];return Kr(e&&t&&r?{queryKey:o,queryFn:()=>Ke({client:e,userAddress:t,sessionAddress:r})}:{queryKey:o,enabled:!1})}import{useClient as ds}from"wagmi";import{queryOptions as Wr,useQuery as ps}from"@tanstack/react-query";import{getRecord as Vr}from"@latticexyz/store/internal";import{resourceToHex as Dr}from"@latticexyz/common";import{parseAbi as Gr}from"viem";import Qr from"@latticexyz/world/mud.config";var Ge={pollingInterval:250},B=Dr({type:"system",namespace:"",name:"unlimited"}),Qe=Qr.namespaces.world.tables,Ve=Gr(["function registerDelegation(address delegatee, bytes32 delegationControlId, bytes initCallData)"]);async function We({client:e,worldAddress:t,userAddress:r,sessionAddress:o}){return(await Vr(e,{address:t,table:Qe.UserDelegationControl,key:{delegator:r,delegatee:o},blockTag:"pending"})).delegationControlId===B}function _e({client:e,worldAddress:t,userAddress:r,sessionAddress:o}){let n=["getDelegation",e?.chain.id,t,r,o];return Wr(e&&r&&o?{queryKey:n,queryFn:()=>We({client:e,worldAddress:t,userAddress:r,sessionAddress:o})}:{queryKey:n,enabled:!1})}import{queryOptions as oo,useQuery as no,useQueryClient as ao}from"@tanstack/react-query";import{useClient as io,useConfig as so}from"wagmi";import{useClient as eo}from"wagmi";import{queryOptions as to,useQuery as ro}from"@tanstack/react-query";import{toSimpleSmartAccount as Jr}from"permissionless/accounts";import{isHex as jr}from"viem";import{createStore as _r}from"zustand/vanilla";import{persist as Yr}from"zustand/middleware";var L=_r(Yr(()=>({signers:{}}),{name:"mud:entrykit",partialize:({signers:e})=>({signers:e})}));function Xr(e){e.key===L.persist.getOptions().name&&L.persist.rehydrate()}window.addEventListener("storage",Xr);import{generatePrivateKey as $r,privateKeyToAccount as Zr}from"viem/accounts";function Ye(e){let t=e.toLowerCase(),r=L.getState().signers[t]??(()=>{let o=localStorage.getItem(`mud:appSigner:privateKey:${e.toLowerCase()}`)?.replace(/^"(.*)"$/,"$1"),n=jr(o)?o:$r();return L.setState(a=>({signers:{...a.signers,[t]:n}})),n})();return Zr(r)}async function Xe({client:e,userAddress:t}){let r=Ye(t);return await Jr({client:e,owner:r})}function ce({client:e,userAddress:t}){let r=["getSessionAccount",e?.chain.id,t];return to(e&&t?{queryKey:r,queryFn:()=>Xe({client:e,userAddress:t}),staleTime:1/0}:{queryKey:r,enabled:!1})}function je(e){let{chainId:t}=l(),r=eo({chainId:t});return ro(ce({userAddress:e,client:r}))}import{getBalanceQueryOptions as lo}from"wagmi/query";function co({queryClient:e,config:t,client:r,userAddress:o,worldAddress:n}){let a=["getPrerequisites",r?.chain.id,o];return oo(r&&o?{queryKey:a,queryFn:async()=>{let i=h(r.chain),{address:s}=await e.fetchQuery(ce({client:r,userAddress:o})),[c,g,m,d]=await Promise.all([i?null:e.fetchQuery(lo(t,{chainId:r.chain.id,address:s})),i?.type==="quarry"?e.fetchQuery(de({client:r,userAddress:o})):null,i?.type==="quarry"?e.fetchQuery(De({client:r,userAddress:o,sessionAddress:s})):null,e.fetchQuery(_e({client:r,worldAddress:n,userAddress:o,sessionAddress:s}))]),p=g==null||g>=P,f=m??!0,G=c==null||c.value>=P;return{sessionAddress:s,hasAllowance:p,isSpender:f,hasGasBalance:G,hasDelegation:d,complete:p&&f&&d}}}:{queryKey:a,enabled:!1})}function T(e){let t=ao(),{chainId:r,worldAddress:o}=l(),n=so(),a=io({chainId:r});return no(co({config:n,queryClient:t,client:a,userAddress:e,worldAddress:o}),t)}import{useDisconnect as uo}from"wagmi";import{useQuery as po}from"@tanstack/react-query";function X(e){let t=e?.toLowerCase();return po({enabled:!!t,queryKey:["ens",t],queryFn:async()=>{let r=await fetch(`https://api.ensideas.com/ens/resolve/${t}`).then(o=>o.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 mo}from"react/jsx-runtime";function M({hex:e}){return e.length<=10?pe("span",{title:e,children:e}):mo("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{useEffect as go}from"react";import{jsx as F,jsxs as me}from"react/jsx-runtime";function $e({isActive:e,isExpanded:t,userAddress:r}){let{data:o,error:n}=X(r);go(()=>{n&&console.log("Could not get ENS",n)},[n]);let{disconnect:a,isPending:i}=uo(),{closeAccountModal:s}=v();return me("div",{className:"flex flex-col gap-4",children:[me("div",{className:"flex justify-between gap-4",children:[me("div",{children:[F("div",{children:"Account"}),F("div",{className:"font-mono text-white",children:o?.name??F(M,{hex:r})})]}),F(y,{variant:e?"primary":"tertiary",className:"flex-shrink-0 text-sm p-1 w-28",autoFocus:e,pending:i,onClick:()=>{s(),a()},children:"Sign out"})]}),t?F("p",{className:"text-sm",children:"Each of your onchain actions in this app is associated with your account."}):null]})}import{parseEther as yo}from"viem";import{useMutation as bo,useQueryClient as wo}from"@tanstack/react-query";import{http as fo}from"viem";function Ze(){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 fo(t)({chain:e,retryCount:0})}}import Je from"debug";var ue=Je("mud:entrykit"),ho=Je("mud:entrykit");ue.log=console.debug.bind(console);ho.log=console.error.bind(console);var I=ue.extend("quarry");async function et({chain:e,userAddress:t}){let r=Ze()({chain:e});I("Issuing gas pass to",t),await r.request({method:"quarry_issuePass",params:["0x01",t]}),I("Claiming gas allowance for",t),await r.request({method:"quarry_claimAllowance",params:["0x01",t]})}import{useClient as xo}from"wagmi";function tt(){let e=wo(),{chain:t}=l(),r=xo({chainId:t.id}),o=["claimGasPass",t.id];return bo({mutationKey:o,onError:n=>console.error(n),mutationFn:async n=>{if(t.id===31337){if(!r)throw new Error("No client?");await Le({client:r,userAddress:n,allowance:yo("1")})}else await et({chain:t,userAddress:n});await Promise.all([e.invalidateQueries({queryKey:["getAllowance"]}),e.invalidateQueries({queryKey:["getPrerequisites"]})])},retry:0})}import{twMerge as vo}from"tailwind-merge";import{jsx as j,jsxs as Co}from"react/jsx-runtime";function rt({className:e,...t}){return Co("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 263 428",fill:"currentColor",className:vo("w-[0.6em] h-[1em]",e),...t,children:[j("path",{d:"M132 321V428L263 243L132 321Z"}),j("path",{d:"M0 243L132 321V428",fillOpacity:"0.5"}),j("path",{d:"M132 0V296L263 218"}),j("path",{d:"M0 218L132 296V0L0 218Z",fillOpacity:"0.5"})]})}import{formatEther as ko}from"viem";function ot(e){let t=ko(e),r=Math.floor(parseFloat(t)).toString().length;return parseFloat(t).toLocaleString("en-US",{maximumFractionDigits:Math.max(0,6-r)})}import{formatEther as So}from"viem";import{jsx as Ao,jsxs as Po}from"react/jsx-runtime";function $({wei:e}){return Po("span",{className:"inline-flex items-center gap-1",title:So(e),children:[ot(e)," ",Ao(rt,{})]})}import{useEffect as Uo}from"react";import{jsx as H,jsxs as ge}from"react/jsx-runtime";function nt({isActive:e,isExpanded:t,userAddress:r}){let o=Fe(r),n=tt();return Uo(()=>{let a=setTimeout(()=>{e&&n.status==="idle"&&o.isSuccess&&o.data!=null&&o.data<P&&n.mutate(r)});return()=>clearTimeout(a)},[o.data,o.isSuccess,n,e,r]),ge("div",{className:"flex flex-col gap-4",children:[ge("div",{className:"flex justify-between gap-4",children:[ge("div",{children:[H("div",{children:"Allowance"}),H("div",{className:"font-mono text-white",children:o.data!=null?H($,{wei:o.data}):H(b,{className:"text-sm"})})]}),H(y,{variant:e?"primary":"tertiary",className:"flex-shrink-0 text-sm p-1 w-28",autoFocus:e||t,pending:o.status==="pending"||n.status==="pending",onClick:()=>n.mutate(r),children:"Top up"})]}),t?H("p",{className:"text-sm",children:"Your allowance is used to pay for onchain computation."}):null]})}import{encodeFunctionData as it}from"viem";import{useMutation as Bo,useQueryClient as Lo}from"@tanstack/react-query";import{getAction as he}from"viem/utils";import{sendUserOperation as Fo,waitForUserOperationReceipt as Ko}from"viem/account-abstraction";import{waitForTransactionReceipt as Do}from"viem/actions";import{useClient as Go}from"wagmi";import{resourceToHex as st}from"@latticexyz/common";import Qo from"@latticexyz/world/out/IBaseWorld.sol/IBaseWorld.abi.json";import{writeContract as Oo}from"viem/actions";import{getAction as zo}from"viem/utils";import{toHex as No}from"viem";import{signTypedData as Eo}from"viem/actions";import{callWithSignatureTypes as Ro}from"@latticexyz/world-module-callwithsignature/internal";import{getRecord as To}from"@latticexyz/store/internal";import Mo from"@latticexyz/world-module-callwithsignature/mud.config";import{hexToResource as Io}from"@latticexyz/common";import{getAction as Ho}from"viem/utils";async function at({userClient:e,worldAddress:t,systemId:r,callData:o,nonce:n,client:a}){let i=n??(a?(await To(a,{address:t,table:Mo.tables.CallWithSignatureNonces,key:{signer:e.account.address},blockTag:"pending"})).nonce:0n),{namespace:s,name:c}=Io(r);return await Ho(e,Eo,"signTypedData")({account:e.account,domain:{verifyingContract:t,salt:No(e.chain.id,{size:32})},types:Ro,primaryType:"Call",message:{signer:e.account.address,systemNamespace:s,systemName:c,callData:o,nonce:i}})}import qo from"@latticexyz/world-module-callwithsignature/out/CallWithSignatureSystem.sol/CallWithSignatureSystem.abi.json";async function fe({sessionClient:e,...t}){let r=await at(t);return zo(e,Oo,"writeContract")({address:t.worldAddress,abi:qo,functionName:"callWithSignature",args:[t.userClient.account.address,t.systemId,t.callData,r]})}function lt({userClient:e}){let t=Lo(),{chainId:r,worldAddress:o}=l(),n=Go({chainId:r}),a=["setupSession",n?.chain.id,e.account.address];return Bo({mutationKey:a,onError:i=>console.error(i),mutationFn:async({sessionClient:i,registerSpender:s,registerDelegation:c})=>{if(!n)throw new Error("Client not ready.");let g=h(n.chain),m=i.account.address;if(console.log("setting up session"),e.account.type==="smart"){let d=[];if(s&&g?.type==="quarry"&&(console.log("registering spender"),d.push({to:g.address,abi:le,functionName:"registerSpender",args:[m]})),c&&(console.log("registering delegation"),d.push({to:o,abi:Ve,functionName:"registerDelegation",args:[m,B,"0x"]})),!d.length)return;console.log("setting up account with",d,e);let p=await he(e,Fo,"sendUserOperation")({calls:d});console.log("got user op hash",p);let f=await he(e,Ko,"waitForUserOperationReceipt")({hash:p});console.log("got user op receipt",f),f.success||console.error("not successful?",f)}else{let d=[];if(s&&g?.type==="quarry"){console.log("registering spender");let p=await fe({client:n,userClient:e,sessionClient:i,worldAddress:g.address,systemId:st({type:"system",namespace:"",name:"SpenderSystem"}),callData:it({abi:le,functionName:"registerSpender",args:[m]})});console.log("got spender tx",p),d.push(p)}if(c){console.log("registering delegation");let p=await fe({client:n,userClient:e,sessionClient:i,worldAddress:o,systemId:st({type:"system",namespace:"",name:"Registration"}),callData:it({abi:Qo,functionName:"registerDelegation",args:[m,B,"0x"]})});console.log("got delegation tx",p),d.push(p)}if(!d.length)return;console.log("waiting for",d.length,"receipts");for(let p of d){let f=await he(n,Do,"waitForTransactionReceipt")({hash:p});console.log("got tx receipt",f),f.status==="reverted"&&console.error("tx reverted?",f)}}await Promise.all([t.invalidateQueries({queryKey:["getSpender"]}),t.invalidateQueries({queryKey:["getDelegation"]}),t.invalidateQueries({queryKey:["getPrerequisites"]})])},retry:0})}import{useEffect as wn}from"react";import{useClient as gn}from"wagmi";import{queryOptions as fn,useQuery as hn}from"@tanstack/react-query";import{smartAccountActions as mn}from"permissionless";import{callFrom as un}from"@latticexyz/world/internal";import{createBundlerClient as Vo}from"viem/account-abstraction";var Wo=new Set([31337,17420,17069,690]);function dt(e){let t=e.chain??e.client?.chain,r=t?h(t):void 0;return Vo({...Ge,paymaster:r?{getPaymasterData:async()=>({paymaster:r.address,paymasterData:"0x"})}:void 0,userOperation:{estimateFeesPerGas:t&&Wo.has(t.id)?async()=>({maxFeePerGas:100000n,maxPriorityFeePerGas:0n}):void 0},...e})}import{transactionQueue as nn}from"@latticexyz/common/actions";import{createClient as an,fallback as sn,http as yt,keccak256 as ln,stringToHex as dn,webSocket as cn}from"viem";import{privateKeyToAccount as pn}from"viem/accounts";import{createTransport as en,numberToHex as tn,parseEther as rn}from"viem";import{entryPoint07Address as ft}from"viem/account-abstraction";import{formatUserOperationRequest as _o}from"viem/account-abstraction";async function ct(e){return _o({callGasLimit:20000000n,preVerificationGas:200000n,verificationGasLimit:2000000n,paymasterVerificationGasLimit:200000n,paymasterPostOpGasLimit:200000n})}import{parseEventLogs as Yo}from"viem";import{formatUserOperation as Xo,toPackedUserOperation as jo,getUserOperationHash as $o,entryPoint07Address as pt,entryPoint07Abi as mt}from"viem/account-abstraction";import{waitForTransactionReceipt as Zo,writeContract as Jo}from"viem/actions";import{getAction as ut}from"viem/utils";async function gt({executor:e,rpcUserOp:t}){let r=Xo(t),o=jo(r),n=$o({userOperation:r,chainId:e.chain.id,entryPointVersion:"0.7",entryPointAddress:pt}),a=await ut(e,Jo,"writeContract")({abi:mt,address:pt,functionName:"handleOps",args:[[o],e.account.address],chain:e.chain,account:e.account}),i=await ut(e,Zo,"waitForTransactionReceipt")({hash:a});return{success:Yo({logs:i.logs,abi:mt,eventName:"UserOperationEvent"})[0].args.success,userOpHash:n,receipt:i}}import{setBalance as on}from"viem/actions";function ht({executor:e}){return()=>{I("using a local user op executor",e.account.address),e.chain.id===31337&&(I("setting executor balance"),on(e.extend(()=>({mode:"anvil"})),{address:e.account.address,value:rn("100")}));let t=new Map;return en({key:"userOpExecutor",type:"userOpExecutor",name:"User Operation Executor Transport",request:async({method:o,params:n})=>{if(o==="eth_chainId")return tn(e.chain.id);if(o==="eth_supportedEntryPoints")return[ft];if(o==="eth_sendUserOperation"){let[a,i]=n;if(i===ft){let s=await gt({executor:e,rpcUserOp:a});return t.set(s.userOpHash,s),s.userOpHash}}if(o==="eth_getUserOperationReceipt"){let[a]=n;return t.get(a)??null}if(o==="eth_estimateUserOperationGas")return await ct(n);throw new Error("Method not implemented.")}})}}function bt(e){let t=e.rpcUrls.bundler?.http[0],r=t?yt(t):e.id===31337?ht({executor:an({chain:e,transport:sn([cn(),yt()]),account:pn(ln(dn("local user op executor"))),pollingInterval:10}).extend(nn())}):null;if(!r)throw new Error(`Chain ${e.id} config did not include a bundler RPC URL.`);return r}async function wt({client:e,userAddress:t,sessionAccount:r,worldAddress:o}){let n=bt(e.chain);return dt({transport:n,client:e,account:r}).extend(mn).extend(un({worldAddress:o,delegatorAddress:t,publicClient:e})).extend(()=>({userAddress:t}))}import{useEffect as yn}from"react";function bn({sessionAccount:e,client:t,userAddress:r,worldAddress:o}){let n=["getSessionClient",t?.uid,r,e?.address,o];return fn(t&&r&&e?{queryKey:n,queryFn:()=>wt({sessionAccount:e,client:t,userAddress:r,worldAddress:o}),staleTime:1/0}:{queryKey:n,enabled:!1})}function Z(e){let{chainId:t,worldAddress:r}=l(),o=gn({chainId:t}),{data:n,error:a}=je(e);return yn(()=>{a&&console.error("Could not get session account",a)},[a]),hn(bn({sessionAccount:n,userAddress:e,client:o,worldAddress:r}))}import{jsx as K,jsxs as ye}from"react/jsx-runtime";function xt({isActive:e,isExpanded:t,userClient:r,registerSpender:o,registerDelegation:n}){let a=Z(r.account.address),i=lt({userClient:r}),s=!n&&!n;return wn(()=>{let c=setTimeout(()=>{e&&i.status==="idle"&&a.data&&!s&&i.mutate({sessionClient:a.data,registerSpender:o,registerDelegation:n})});return()=>clearTimeout(c)},[s,e,n,o,a,i]),ye("div",{className:"flex flex-col gap-4",children:[ye("div",{className:"flex justify-between gap-4",children:[ye("div",{children:[K("div",{children:"Session"}),K("div",{className:"font-mono text-white",children:s?"Enabled":"Set up"})]}),s?K(y,{variant:"tertiary",className:"flex-shrink-0 text-sm p-1 w-28",autoFocus:e,disabled:!0,children:"Enabled"}):K(y,{variant:e?"primary":"tertiary",className:"flex-shrink-0 text-sm p-1 w-28",autoFocus:e,pending:!a.data||i.status==="pending",onClick:a.data?()=>i.mutate({sessionClient:a.data,registerSpender:o,registerDelegation:n}):void 0,children:"Enable"})]}),t?K("p",{className:"text-sm",children:"You can perform actions in this app without interruptions for approvals."}):null]})}import{useBalance as An}from"wagmi";var vt={"1":{bridgeUrl:"https://relay.link/bridge/ethereum"},"10":{bridgeUrl:"https://relay.link/bridge/optimism"},"56":{bridgeUrl:"https://relay.link/bridge/bnb"},"100":{bridgeUrl:"https://relay.link/bridge/gnosis"},"111":{bridgeUrl:"https://testnets.relay.link/bridge/bob"},"137":{bridgeUrl:"https://relay.link/bridge/polygon"},"185":{bridgeUrl:"https://relay.link/bridge/mint"},"288":{bridgeUrl:"https://relay.link/bridge/boba"},"324":{bridgeUrl:"https://relay.link/bridge/zksync"},"360":{bridgeUrl:"https://relay.link/bridge/shape"},"480":{bridgeUrl:"https://relay.link/bridge/world-chain"},"690":{bridgeUrl:"https://relay.link/bridge/redstone"},"919":{bridgeUrl:"https://testnets.relay.link/bridge/mode-testnet"},"1101":{bridgeUrl:"https://relay.link/bridge/polygon-zkevm"},"1135":{bridgeUrl:"https://relay.link/bridge/lisk"},"1301":{bridgeUrl:"https://testnets.relay.link/bridge/unichain-sepolia"},"1329":{bridgeUrl:"https://relay.link/bridge/sei"},"1625":{bridgeUrl:"https://relay.link/bridge/gravity"},"1868":{bridgeUrl:"https://relay.link/bridge/soneium"},"1993":{bridgeUrl:"https://testnets.relay.link/bridge/b3"},"1996":{bridgeUrl:"https://relay.link/bridge/sanko"},"2741":{bridgeUrl:"https://relay.link/bridge/abstract"},"2911":{bridgeUrl:"https://relay.link/bridge/hychain"},"4202":{bridgeUrl:"https://testnets.relay.link/bridge/lisk-sepolia"},"4321":{bridgeUrl:"https://relay.link/bridge/echos"},"5000":{bridgeUrl:"https://relay.link/bridge/mantle"},"5112":{bridgeUrl:"https://relay.link/bridge/ham"},"7560":{bridgeUrl:"https://relay.link/bridge/cyber"},"7865":{bridgeUrl:"https://relay.link/bridge/powerloom"},"7897":{bridgeUrl:"https://relay.link/bridge/arena-z"},"8333":{bridgeUrl:"https://relay.link/bridge/B3"},"8453":{bridgeUrl:"https://relay.link/bridge/base"},"9897":{bridgeUrl:"https://testnets.relay.link/bridge/arena-z-testnet"},"11011":{bridgeUrl:"https://testnets.relay.link/bridge/shape-sepolia"},"11124":{bridgeUrl:"https://testnets.relay.link/bridge/abstract"},"13746":{bridgeUrl:"https://testnets.relay.link/bridge/game7-testnet"},"17000":{bridgeUrl:"https://testnets.relay.link/bridge/holesky"},"17069":{bridgeUrl:"https://testnets.relay.link/bridge/garnet"},"17071":{bridgeUrl:"https://relay.link/bridge/onchain-points"},"33139":{bridgeUrl:"https://relay.link/bridge/apechain"},"33979":{bridgeUrl:"https://relay.link/bridge/funki"},"34443":{bridgeUrl:"https://relay.link/bridge/mode"},"42161":{bridgeUrl:"https://relay.link/bridge/arbitrum"},"42170":{bridgeUrl:"https://relay.link/bridge/arbitrum-nova"},"43114":{bridgeUrl:"https://relay.link/bridge/avalanche"},"55244":{bridgeUrl:"https://relay.link/bridge/superposition"},"57073":{bridgeUrl:"https://relay.link/bridge/ink"},"59144":{bridgeUrl:"https://relay.link/bridge/linea"},"60808":{bridgeUrl:"https://relay.link/bridge/bob"},"70700":{bridgeUrl:"https://relay.link/bridge/apex"},"70701":{bridgeUrl:"https://relay.link/bridge/boss"},"70800":{bridgeUrl:"https://testnets.relay.link/bridge/apex-testnet"},"70805":{bridgeUrl:"https://testnets.relay.link/bridge/cloud"},"80002":{bridgeUrl:"https://testnets.relay.link/bridge/amoy"},"81457":{bridgeUrl:"https://relay.link/bridge/blast"},"84532":{bridgeUrl:"https://testnets.relay.link/bridge/base-sepolia"},"167009":{bridgeUrl:"https://testnets.relay.link/bridge/hekla"},"421614":{bridgeUrl:"https://testnets.relay.link/bridge/arbitrum-sepolia"},"534352":{bridgeUrl:"https://relay.link/bridge/scroll"},"543210":{bridgeUrl:"https://relay.link/bridge/zero-network"},"660279":{bridgeUrl:"https://relay.link/bridge/xai"},"911867":{bridgeUrl:"https://testnets.relay.link/bridge/odyssey"},"984122":{bridgeUrl:"https://relay.link/bridge/forma"},"1118190":{bridgeUrl:"https://testnets.relay.link/bridge/eclipse-testnet"},"3397901":{bridgeUrl:"https://testnets.relay.link/bridge/funki-testnet"},"4457845":{bridgeUrl:"https://testnets.relay.link/bridge/zero-sepolia"},"7777777":{bridgeUrl:"https://relay.link/bridge/zora"},"8253038":{bridgeUrl:"https://relay.link/bridge/bitcoin"},"9092725":{bridgeUrl:"https://testnets.relay.link/bridge/bitcoin-testnet4"},"9286185":{bridgeUrl:"https://relay.link/bridge/eclipse"},"11155111":{bridgeUrl:"https://testnets.relay.link/bridge/sepolia"},"11155420":{bridgeUrl:"https://testnets.relay.link/bridge/op-sepolia"},"666666666":{bridgeUrl:"https://relay.link/bridge/degen"},"792703809":{bridgeUrl:"https://relay.link/bridge/solana"},"888888888":{bridgeUrl:"https://relay.link/bridge/ancient8"},"999999999":{bridgeUrl:"https://testnets.relay.link/bridge/zora-sepolia"},"1380012617":{bridgeUrl:"https://relay.link/bridge/rari"},"1936682084":{bridgeUrl:"https://testnets.relay.link/bridge/solana-devnet"},"88153591557":{bridgeUrl:"https://testnets.relay.link/bridge/arbitrum-blueberry"}};import{useQueryClient as vn,useMutation as Cn}from"@tanstack/react-query";import{setBalance as kn}from"viem/actions";import{useClient as Sn}from"wagmi";function Ct(){let e=vn(),{chainId:t}=l(),r=Sn({chainId:t});return Cn({mutationKey:["setBalance",t],onError:o=>console.error(o),mutationFn:async o=>(r&&(await kn({...r,mode:"anvil"},o),await Promise.all([e.invalidateQueries({queryKey:["balance"]}),e.invalidateQueries({queryKey:["getPrerequisites"]})])),null),retry:0})}import{Fragment as Pn,jsx as w,jsxs as D}from"react/jsx-runtime";function kt({isActive:e,isExpanded:t,sessionAddress:r}){let{chain:o}=l(),n=An({chainId:o.id,address:r,query:{refetchInterval:2e3}}),a=Ct(),i=vt[o.id];return D("div",{className:"flex flex-col gap-4",children:[D("div",{className:"flex justify-between gap-4",children:[D("div",{children:[w("div",{children:"Gas balance"}),w("div",{className:"font-mono text-white",children:n.data!=null?w($,{wei:n.data.value}):w(b,{className:"text-sm"})})]}),o.id===31337?w(y,{variant:e?"primary":"tertiary",className:"flex-shrink-0 text-sm p-1 w-28",autoFocus:e||t,pending:n.status==="pending"||a.status==="pending",onClick:()=>a.mutate({address:r,value:P+(n.data?.value??0n)}),children:"Top up"}):i!=null?w("a",{href:`${i.bridgeUrl}?${new URLSearchParams({toAddress:r})}`,target:"_blank",rel:"noopener noreferrer",children:w(y,{variant:e?"primary":"tertiary",className:"flex-shrink-0 text-sm p-1 w-28",autoFocus:e||t,pending:n.status==="pending",children:"Top up"})}):null]}),t?D(Pn,{children:[w("p",{className:"text-sm",children:"Your session's gas balance is used to pay for onchain computation."}),D("p",{className:"text-sm",children:["Send funds to"," ",w("span",{className:"font-mono text-white",children:w(M,{hex:r})})," ","on ",o.name," to top up your session balance."]})]}):null]})}import{jsx as U}from"react/jsx-runtime";function At({userClient:e,initialUserAddress:t}){let{chain:r}=l(),o=h(r),n=e.account.address,{data:a,error:i}=T(n);St(()=>{i&&console.error("Could not get prerequisites",i)},[i]);let{closeAccountModal:s}=v(),c=n!==t,g=Nn(a);St(()=>{a!=null&&(g.current==null&&(g.current=a),a.complete&&(c||!g.current.complete)&&s())},[s,c,a]);let{sessionAddress:m,hasAllowance:d,isSpender:p,hasDelegation:f,hasGasBalance:G}=a??{},A=Un(()=>{if(!n)return[{id:"wallet",isComplete:!1,content:()=>null}];let u=[{id:"wallet",isComplete:!0,content:x=>U($e,{...x,userAddress:n})}];return o?o.type==="quarry"&&u.push({id:"allowance",isComplete:!!d,content:x=>U(nt,{...x,userAddress:n})}):m!=null&&u.push({id:"gasBalance",isComplete:!!G,content:x=>U(kt,{...x,sessionAddress:m})}),u.push({id:"session",isComplete:!!p&&!!f,content:x=>U(xt,{...x,userClient:e,registerSpender:!p,registerDelegation:!f})}),u},[d,f,G,p,o,m,n,e]),[xe]=En(null),Dt=A.find(u=>u.content!=null&&!u.isComplete),re=A.filter(u=>u.isComplete),oe=(xe!=null?A.find(u=>u.id===xe):null)??Dt??(re.length<A.length?re.at(-1):null),ve=oe?A.indexOf(oe):-1;return U("div",{className:be("px-8 flex flex-col divide-y divide-neutral-800","animate-in animate-duration-300 fade-in slide-in-from-bottom-8"),children:A.map((u,x)=>{let ne=u===oe,Gt=ne||re.length===A.length,Qt=!u.isComplete&&ve!==-1&&x>ve;return U("div",{className:be("py-8 flex flex-col justify-center",ne?"flex-grow":null),children:U("div",{className:be("flex flex-col",Qt?"opacity-30 pointer-events-none":null),children:u.content({isActive:ne,isExpanded:Gt})})},u.id)})})}import{useRef as Mn}from"react";import{jsx as Pt}from"react/jsx-runtime";function Ut(){let{chainId:e}=l(),t=Tn({chainId:e}),{address:r}=Rn(),o=Mn(r);return t.status!=="success"?Pt(qe,{}):Pt(At,{userClient:t.data,initialUserAddress:o.current})}import{useState as qn}from"react";import{ErrorBoundary as Bn}from"react-error-boundary";import{twMerge as In}from"tailwind-merge";import{BaseError as Hn,UserRejectedRequestError as On}from"viem";import{jsx as Nt,jsxs as zn}from"react/jsx-runtime";function Et({title:e,error:t}){if(!t||t instanceof Hn&&t.walk(n=>n instanceof On)!=null)return null;let r=e??"Error",o=typeof t=="string"?t:t instanceof Error?String(t):"Something unexpected happened.";return zn("div",{className:In("text-sm border-l-4 border-red-500","bg-red-100 text-red-900","dark:bg-red-900 dark:text-red-50"),children:[Nt("div",{className:"p-3 font-semibold",children:r}),Nt("div",{className:"px-3 whitespace-break-spaces break-all max-h-32 overflow-y-scroll",children:o})]})}import{wait as Ln}from"@latticexyz/common/utils";import{twMerge as Fn}from"tailwind-merge";import{useIsMounted as Kn}from"usehooks-ts";import{jsx as J,jsxs as Rt}from"react/jsx-runtime";function Tt({children:e}){let t=Kn(),[r,o]=qn(1);return J(Bn,{fallbackRender:({error:n,resetErrorBoundary:a})=>Rt("div",{className:Fn("flex-grow flex flex-col justify-center p-5 gap-2"),children:[J(Et,{error:n instanceof Error?n.stack??n.message:n}),r>0?Rt("button",{type:"button",onClick:async i=>{i.currentTarget.ariaBusy="true",await Ln(1e3),a(),t()&&(o(s=>s-1),i.currentTarget.ariaBusy=null)},className:"group aria-busy:pointer-events-none self-end flex items-center gap-1",children:[J(b,{className:"transition opacity-0 group-aria-busy:opacity-100 text-xs text-neutral-500 dark:text-neutral-400"}),J("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 Qn,DialogTitle as Vn}from"@radix-ui/react-dialog";import{twMerge as Dn}from"tailwind-merge";import{jsx as Gn}from"react/jsx-runtime";function Mt({className:e,children:t,...r}){return Gn("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",className:Dn("-my-[0.125em] h-[1.25em] w-[1.25em]",e),...r,children:t})}import{jsx as It}from"react/jsx-runtime";function Ht(e){return It(Mt,{strokeWidth:"2",stroke:"currentColor",...e,children:It("path",{d:"M6 18L18 6M6 6L18 18",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})}import{jsx as C,jsxs as we}from"react/jsx-runtime";function zt(){let{accountModalOpen:e,toggleAccountModal:t}=v();return we(He,{open:e,onOpenChange:t,children:[C(Vn,{className:"sr-only",children:"Connect with EntryKit"}),e?we("div",{className:Ot("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:[C(Tt,{children:C(Ut,{})}),we("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:[C("span",{className:"block w-4 h-4",children:C(S,{className:"w-full h-full text-orange-500 group-hover:rotate-90 transition duration-300"})}),C("span",{children:"Powered by MUD"})]}),C("div",{className:"absolute top-0 right-0",children:C(Qn,{className:Ot("pointer-events-auto leading-none p-2 transition","text-neutral-700 hover:text-neutral-500"),title:"Close",children:C(Ht,{className:"m-0"})})})]}):null]})}import{jsx as _n,jsxs as Yn}from"react/jsx-runtime";function Wn({config:e,children:t}){return Yn(Ee,{config:e,children:[t,_n(zt,{})]})}import{useAccount as $n}from"wagmi";import{twMerge as N}from"tailwind-merge";import{twMerge as qt}from"tailwind-merge";import{useEffect as Xn}from"react";import{Fragment as jn,jsx as ee,jsxs as Bt}from"react/jsx-runtime";function Lt({address:e}){let{data:t,error:r}=X(e),o=W(t?.avatar);return Xn(()=>{r&&console.log("Could not get ENS",r)},[r]),Bt(jn,{children:[Bt("span",{className:"flex-shrink-0 w-6 h-6 -my-1 -mx-0.5 grid place-items-center",children:[ee("img",{src:t?.avatar&&o.isSuccess?t.avatar:void 0,className:qt("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","transtion duration-300",o.isSuccess?"opacity-100":"opacity-0")}),ee(S,{className:qt("col-start-1 row-start-1 text-orange-500","transition duration-300",t&&(!t.avatar||o.isError)?"opacity-100":"opacity-0")})]}),ee("span",{className:"flex-grow",children:t?.name??ee(M,{hex:e})})]})}import{useRef as Zn}from"react";import{jsx as k,jsxs as Kt}from"react/jsx-runtime";var Ft=N("w-48 p-3 inline-flex outline-none transition","border border-transparent","text-base leading-none"),Jn=N("bg-neutral-100 border-neutral-300 text-black","dark:bg-neutral-800 dark:border-neutral-700 dark:text-white"),ea=N("cursor-pointer outline-none hover:bg-neutral-200 data-[highlighted]:bg-neutral-200 dark:hover:bg-neutral-700");function ta(){let{openAccountModal:e,accountModalOpen:t}=v(),{status:r,address:o}=$n(),n=Zn(o),a=T(o),i=r==="connected"||r==="reconnecting"&&o,s=o!==n.current,c=a.isSuccess?a.data.complete:s?!1:i,g=(()=>{if(a.isSuccess){if(!a.data.hasAllowance)return"Top up";if(!a.data.hasDelegation||!a.data.isSpender)return"Set up"}return"Sign in"})();return k(Q,{mode:"child",children:c?k("button",{type:"button",className:N(Ft,Jn,ea),onClick:e,children:k("span",{className:"flex-grow inline-flex gap-2.5 items-center text-left font-medium",children:o?k(Lt,{address:o}):null})},"connected"):Kt("button",{type:"button",className:N(Ft,"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:[Kt("span",{className:"pointer-events-none inline-grid place-items-center -ml-3",children:[k("span",{className:N("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:k(S,{})}),k("span",{"aria-hidden":!0,className:N("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:k(b,{})})]}),k("span",{className:"font-medium",children:g})]},"sign in")})}import{useConnectorClient as ra}from"wagmi";function oa(){let{chainId:e}=l(),t=ra({chainId:e});t.error&&console.error("Error retrieving user client",t.error);let r=t.data?.account.address,o=T(r),n=Z(r);return t.isSuccess?!o.isSuccess||!o.data.complete?{...o,data:void 0}:n:{...t,data:void 0}}import{connectorsForWallets as aa}from"@rainbow-me/rainbowkit";import{createConfig as ia}from"wagmi";import{getDefaultWallets as na}from"@rainbow-me/rainbowkit";function te(e){let{wallets:t}=na();return[...t]}function sa(e){let t=te(e),r=aa(t,{appName:e.appName,projectId:e.walletConnectProjectId});return ia({connectors:r,chains:e.chains,transports:e.transports,pollingInterval:e.pollingInterval})}import{connectorsForWallets as la}from"@rainbow-me/rainbowkit";function Pm({wallets:e,...t}){return la(e??te(t),{appName:t.appName,projectId:t.walletConnectProjectId})}export{ta as AccountButton,Wn as EntryKitProvider,sa as createWagmiConfig,Vt as defineConfig,Pm as getConnectors,te as getWallets,v as useAccountModal,l as useEntryKitConfig,oa as useSessionClient};
1398
1398
  //# sourceMappingURL=internal.js.map