@latticexyz/entrykit 2.2.22-daa34f06d070200c1aaf0bba78ba9f2dd8662a76 → 2.2.22-f4bb5b5d7d9abbbea0fc57591b58dbd94c85d3aa

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.
@@ -188,21 +188,168 @@ function userOpExecutor({ executor }) {
188
188
  };
189
189
  }
190
190
 
191
+ // src/quarry/transports/methods/getUserOperationReceipt.ts
192
+ import {
193
+ decodeEventLog,
194
+ encodeEventTopics,
195
+ numberToHex as numberToHex2,
196
+ parseEventLogs as parseEventLogs2,
197
+ zeroAddress
198
+ } from "viem";
199
+ import { entryPoint07Abi as entryPoint07Abi2 } from "viem/account-abstraction";
200
+ var userOperationRevertReasonAbi = [
201
+ entryPoint07Abi2.find(
202
+ (item) => item.type === "event" && item.name === "UserOperationRevertReason"
203
+ )
204
+ ];
205
+ var userOperationEventTopic = encodeEventTopics({
206
+ abi: entryPoint07Abi2,
207
+ eventName: "UserOperationEvent"
208
+ });
209
+ function getUserOperationReceipt(userOpHash, receipt) {
210
+ const userOperationRevertReasonTopicEvent = encodeEventTopics({
211
+ abi: userOperationRevertReasonAbi
212
+ })[0];
213
+ let entryPoint = zeroAddress;
214
+ let revertReason = void 0;
215
+ let startIndex = -1;
216
+ let endIndex = -1;
217
+ receipt.logs.forEach((log, index) => {
218
+ if (log?.topics[0] === userOperationEventTopic[0]) {
219
+ if (log.topics[1] === userOpHash) {
220
+ endIndex = index;
221
+ entryPoint = log.address;
222
+ } else if (endIndex === -1) {
223
+ startIndex = index;
224
+ }
225
+ }
226
+ if (log?.topics[0] === userOperationRevertReasonTopicEvent) {
227
+ if (log.topics[1] === userOpHash) {
228
+ const decodedLog = decodeEventLog({
229
+ abi: userOperationRevertReasonAbi,
230
+ data: log.data,
231
+ topics: log.topics
232
+ });
233
+ revertReason = decodedLog.args.revertReason;
234
+ }
235
+ }
236
+ });
237
+ if (endIndex === -1) {
238
+ throw new Error("fatal: no UserOperationEvent in logs");
239
+ }
240
+ const logs = receipt.logs.slice(startIndex + 1, endIndex);
241
+ const userOperationEvent = parseEventLogs2({
242
+ abi: entryPoint07Abi2,
243
+ eventName: "UserOperationEvent",
244
+ args: {
245
+ userOpHash
246
+ },
247
+ logs: receipt.logs
248
+ })[0];
249
+ let paymaster = userOperationEvent.args.paymaster;
250
+ paymaster = paymaster === zeroAddress ? void 0 : paymaster;
251
+ return {
252
+ userOpHash,
253
+ entryPoint,
254
+ sender: userOperationEvent.args.sender,
255
+ nonce: numberToHex2(userOperationEvent.args.nonce),
256
+ paymaster,
257
+ actualGasUsed: numberToHex2(userOperationEvent.args.actualGasUsed),
258
+ actualGasCost: numberToHex2(userOperationEvent.args.actualGasCost),
259
+ success: userOperationEvent.args.success,
260
+ reason: revertReason,
261
+ logs,
262
+ receipt
263
+ };
264
+ }
265
+
266
+ // src/quarry/transports/wiresaw.ts
267
+ function wiresaw(transport) {
268
+ return (opts) => {
269
+ const { request: originalRequest, ...rest } = transport.wiresaw(opts);
270
+ let chainId = null;
271
+ const transactionHashes = {};
272
+ const transactionReceipts = {};
273
+ return {
274
+ ...rest,
275
+ async request(req) {
276
+ if (req.method === "eth_chainId") {
277
+ if (chainId != null) return chainId;
278
+ return chainId = await originalRequest(req);
279
+ }
280
+ if (req.method === "eth_estimateGas") {
281
+ return originalRequest({ ...req, method: "wiresaw_estimateGas" });
282
+ }
283
+ if (req.method === "eth_call") {
284
+ return originalRequest({ ...req, method: "wiresaw_call" });
285
+ }
286
+ if (req.method === "eth_getTransactionCount") {
287
+ return originalRequest({ ...req, method: "wiresaw_getTransactionCount" });
288
+ }
289
+ if (req.method === "eth_getTransactionReceipt") {
290
+ const transactionHash = req.params[0];
291
+ const receipt = transactionReceipts[transactionHash] ?? await originalRequest(req);
292
+ transactionReceipts[transactionHash] ??= receipt;
293
+ return receipt;
294
+ }
295
+ if (req.method === "eth_sendUserOperation") {
296
+ const { userOpHash, txHash } = await originalRequest({
297
+ ...req,
298
+ method: "wiresaw_sendUserOperation"
299
+ });
300
+ transactionHashes[userOpHash] = txHash;
301
+ return userOpHash;
302
+ }
303
+ if (req.method === "eth_getUserOperationReceipt") {
304
+ const userOpHash = req.params[0];
305
+ const knownTransactionHash = transactionHashes[userOpHash];
306
+ if (knownTransactionHash) {
307
+ const transactionReceipt = transactionReceipts[knownTransactionHash] ?? await originalRequest({
308
+ ...req,
309
+ params: [knownTransactionHash],
310
+ method: "wiresaw_getTransactionReceipt"
311
+ });
312
+ transactionReceipts[knownTransactionHash] ??= transactionReceipt;
313
+ return transactionReceipt && getUserOperationReceipt(userOpHash, transactionReceipt);
314
+ }
315
+ const { request: fallbackRequest } = transport.fallbackBundler(opts);
316
+ return fallbackRequest(req);
317
+ }
318
+ if (req.method === "eth_estimateUserOperationGas") {
319
+ const { request: fallbackRequest } = transport.fallbackBundler(opts);
320
+ return fallbackRequest(req);
321
+ }
322
+ return originalRequest(req);
323
+ }
324
+ };
325
+ };
326
+ }
327
+
191
328
  // src/getBundlerTransport.ts
192
329
  function getBundlerTransport(chain) {
193
330
  const bundlerHttpUrl = chain.rpcUrls.bundler?.http[0];
194
- const bundlerTransport = bundlerHttpUrl ? http(bundlerHttpUrl) : chain.id === 31337 ? userOpExecutor({
195
- executor: createClient({
196
- chain,
197
- transport: fallback([webSocket(), http()]),
198
- account: privateKeyToAccount(keccak256(stringToHex("local user op executor"))),
199
- pollingInterval: 10
200
- }).extend(transactionQueue())
201
- }) : null;
202
- if (!bundlerTransport) {
203
- throw new Error(`Chain ${chain.id} config did not include a bundler RPC URL.`);
331
+ const wiresawWebSocketUrl = chain.rpcUrls.wiresaw?.webSocket?.[0];
332
+ if (wiresawWebSocketUrl) {
333
+ return wiresaw({ wiresaw: webSocket(wiresawWebSocketUrl), fallbackBundler: http(bundlerHttpUrl) });
334
+ }
335
+ const wiresawHttpUrl = chain.rpcUrls.wiresaw?.http[0];
336
+ if (wiresawHttpUrl) {
337
+ return wiresaw({ wiresaw: http(wiresawHttpUrl), fallbackBundler: http(bundlerHttpUrl) });
338
+ }
339
+ if (bundlerHttpUrl) {
340
+ return http(bundlerHttpUrl);
341
+ }
342
+ if (chain.id === 31337) {
343
+ return userOpExecutor({
344
+ executor: createClient({
345
+ chain,
346
+ transport: fallback([webSocket(), http()]),
347
+ account: privateKeyToAccount(keccak256(stringToHex("local user op executor"))),
348
+ pollingInterval: 10
349
+ }).extend(transactionQueue())
350
+ });
204
351
  }
205
- return bundlerTransport;
352
+ throw new Error(`Chain ${chain.id} config did not include a bundler RPC URL.`);
206
353
  }
207
354
 
208
355
  // src/EntryKitConfigProvider.tsx
@@ -550,7 +697,7 @@ function ConnectWallet() {
550
697
  }
551
698
 
552
699
  // src/onboarding/ConnectedSteps.tsx
553
- import { useEffect as useEffect13, useMemo as useMemo4, useRef as useRef4, useState as useState6 } from "react";
700
+ import { useEffect as useEffect15, useMemo as useMemo4, useRef as useRef4, useState as useState6 } from "react";
554
701
  import { twMerge as twMerge17 } from "tailwind-merge";
555
702
 
556
703
  // src/onboarding/usePrerequisites.ts
@@ -585,7 +732,7 @@ import { useClient } from "wagmi";
585
732
  import { queryOptions, skipToken, useQuery as useQuery2 } from "@tanstack/react-query";
586
733
 
587
734
  // src/quarry/getAllowance.ts
588
- import { numberToHex as numberToHex2 } from "viem";
735
+ import { numberToHex as numberToHex3 } from "viem";
589
736
 
590
737
  // src/quarry/common.ts
591
738
  import { defineStore } from "@latticexyz/store";
@@ -689,7 +836,7 @@ async function setAllowanceSlot({ client, userAddress, allowance }) {
689
836
  {
690
837
  address: paymaster.address,
691
838
  index: slot,
692
- value: numberToHex2(allowance, { size: 32 })
839
+ value: numberToHex3(allowance, { size: 32 })
693
840
  }
694
841
  );
695
842
  }
@@ -927,13 +1074,13 @@ function getPrequisitesQueryOptions({
927
1074
  const hasAllowance = allowance == null || allowance > 0n;
928
1075
  const isSpender = spender == null ? true : spender;
929
1076
  const hasGasBalance = sessionBalance == null || sessionBalance.value > 0n;
930
- const hasQuarryBalance = quarryBalance == null || quarryBalance > 0n;
1077
+ const hasQuarryGasBalance = quarryBalance == null || quarryBalance > 0n;
931
1078
  return {
932
1079
  sessionAddress,
933
1080
  hasAllowance,
934
1081
  isSpender,
935
1082
  hasGasBalance,
936
- hasQuarryBalance,
1083
+ hasQuarryGasBalance,
937
1084
  hasDelegation,
938
1085
  // we intentionally don't enforce an allowance/gas balance here
939
1086
  complete: isSpender && hasDelegation
@@ -1235,6 +1382,9 @@ function Allowance({ isActive, isExpanded, userAddress }) {
1235
1382
  ] });
1236
1383
  }
1237
1384
 
1385
+ // src/onboarding/Session.tsx
1386
+ import { useEffect as useEffect7 } from "react";
1387
+
1238
1388
  // src/onboarding/useSetupSession.ts
1239
1389
  import { encodeFunctionData } from "viem";
1240
1390
  import { useMutation as useMutation2, useQueryClient as useQueryClient3 } from "@tanstack/react-query";
@@ -1431,9 +1581,6 @@ function useSetupSession({ userClient }) {
1431
1581
  });
1432
1582
  }
1433
1583
 
1434
- // src/onboarding/Session.tsx
1435
- import { useEffect as useEffect7 } from "react";
1436
-
1437
1584
  // src/useSessionClient.ts
1438
1585
  import { useClient as useClient9 } from "wagmi";
1439
1586
  import {
@@ -1562,9 +1709,11 @@ function Session({ isActive, isExpanded, userClient, registerSpender, registerDe
1562
1709
  const sessionClient = useShowQueryError(useSessionClient(userClient.account.address));
1563
1710
  const setup = useShowMutationError(useSetupSession({ userClient }));
1564
1711
  const hasSession = !registerDelegation && !registerDelegation;
1712
+ const { data: prerequisites } = usePrerequisites(userClient.account.address);
1713
+ const { hasAllowance, hasGasBalance, hasQuarryGasBalance } = prerequisites ?? {};
1565
1714
  useEffect7(() => {
1566
1715
  const timer = setTimeout(() => {
1567
- if (isActive && setup.status === "idle" && sessionClient.data && !hasSession) {
1716
+ if (isActive && setup.status === "idle" && sessionClient.data && !hasSession && (hasAllowance || hasGasBalance || hasQuarryGasBalance)) {
1568
1717
  setup.mutate({
1569
1718
  sessionClient: sessionClient.data,
1570
1719
  registerSpender,
@@ -1573,7 +1722,17 @@ function Session({ isActive, isExpanded, userClient, registerSpender, registerDe
1573
1722
  }
1574
1723
  });
1575
1724
  return () => clearTimeout(timer);
1576
- }, [hasSession, isActive, registerDelegation, registerSpender, sessionClient, setup]);
1725
+ }, [
1726
+ hasSession,
1727
+ isActive,
1728
+ registerDelegation,
1729
+ registerSpender,
1730
+ sessionClient,
1731
+ setup,
1732
+ hasAllowance,
1733
+ hasGasBalance,
1734
+ hasQuarryGasBalance
1735
+ ]);
1577
1736
  return /* @__PURE__ */ jsxs13("div", { className: "flex flex-col gap-4", children: [
1578
1737
  /* @__PURE__ */ jsxs13("div", { className: "flex justify-between gap-4", children: [
1579
1738
  /* @__PURE__ */ jsxs13("div", { children: [
@@ -1601,8 +1760,9 @@ function Session({ isActive, isExpanded, userClient, registerSpender, registerDe
1601
1760
  }
1602
1761
 
1603
1762
  // src/onboarding/GasBalance.tsx
1604
- import { useState as useState3 } from "react";
1763
+ import { useEffect as useEffect9, useState as useState3 } from "react";
1605
1764
  import { parseEther as parseEther4 } from "viem";
1765
+ import { useQueryClient as useQueryClient6 } from "@tanstack/react-query";
1606
1766
  import { useBalance as useBalance2, useWatchBlockNumber } from "wagmi";
1607
1767
 
1608
1768
  // src/data/relayChains.json
@@ -1908,6 +2068,16 @@ function useSetBalance() {
1908
2068
  });
1909
2069
  }
1910
2070
 
2071
+ // src/errors/usePrevious.ts
2072
+ import { useEffect as useEffect8, useRef as useRef2 } from "react";
2073
+ function usePrevious(value, initialValue) {
2074
+ const ref = useRef2();
2075
+ useEffect8(() => {
2076
+ ref.current = { value };
2077
+ }, [value]);
2078
+ return ref.current ? ref.current.value : initialValue;
2079
+ }
2080
+
1911
2081
  // src/icons/IconSVG.tsx
1912
2082
  import { twMerge as twMerge7 } from "tailwind-merge";
1913
2083
  import { jsx as jsx16 } from "react/jsx-runtime";
@@ -1960,9 +2130,11 @@ function CheckIcon(props) {
1960
2130
  // src/onboarding/GasBalance.tsx
1961
2131
  import { Fragment, jsx as jsx19, jsxs as jsxs14 } from "react/jsx-runtime";
1962
2132
  function GasBalance({ isActive, isExpanded, sessionAddress }) {
2133
+ const queryClient = useQueryClient6();
1963
2134
  const { chain } = useEntryKitConfig();
1964
2135
  const [copied, setCopied] = useState3(false);
1965
2136
  const balance = useShowQueryError(useBalance2({ chainId: chain.id, address: sessionAddress }));
2137
+ const prevBalance = usePrevious(balance.data);
1966
2138
  useWatchBlockNumber({ onBlockNumber: () => balance.refetch() });
1967
2139
  const setBalance3 = useShowMutationError(useSetBalance());
1968
2140
  const relayChain = relayChains_default[chain.id];
@@ -1971,6 +2143,11 @@ function GasBalance({ isActive, isExpanded, sessionAddress }) {
1971
2143
  setCopied(true);
1972
2144
  setTimeout(() => setCopied(false), 2e3);
1973
2145
  };
2146
+ useEffect9(() => {
2147
+ if (balance.data != null && prevBalance?.value === 0n && balance.data.value > 0n) {
2148
+ queryClient.invalidateQueries({ queryKey: ["getPrerequisites"] });
2149
+ }
2150
+ }, [balance.data, prevBalance, setBalance3, sessionAddress, queryClient]);
1974
2151
  return /* @__PURE__ */ jsxs14("div", { className: "flex flex-col gap-4", children: [
1975
2152
  /* @__PURE__ */ jsxs14("div", { className: "flex justify-between gap-4", children: [
1976
2153
  /* @__PURE__ */ jsxs14("div", { children: [
@@ -2041,7 +2218,7 @@ function GasBalance({ isActive, isExpanded, sessionAddress }) {
2041
2218
 
2042
2219
  // src/onboarding/deposit/DepositFormContainer.tsx
2043
2220
  import { useState as useState5 } from "react";
2044
- import { useChains as useChains5, useChainId } from "wagmi";
2221
+ import { useChains as useChains4, useChainId } from "wagmi";
2045
2222
 
2046
2223
  // src/onboarding/deposit/DepositViaTransferForm.tsx
2047
2224
  import { useAccount as useAccount5, useWriteContract, usePrepareTransactionRequest, usePublicClient } from "wagmi";
@@ -2049,16 +2226,16 @@ import { encodeFunctionData as encodeFunctionData2 } from "viem";
2049
2226
  import { useMutation as useMutation4, useQuery as useQuery11 } from "@tanstack/react-query";
2050
2227
 
2051
2228
  // src/onboarding/deposit/DepositForm.tsx
2052
- import { useEffect as useEffect8, useRef as useRef2 } from "react";
2229
+ import { useEffect as useEffect11, useRef as useRef3 } from "react";
2053
2230
  import { useAccount as useAccount4, useBalance as useBalance5, useWatchBlockNumber as useWatchBlockNumber2 } from "wagmi";
2054
2231
  import { useIsMounted } from "usehooks-ts";
2055
2232
  import { twMerge as twMerge15 } from "tailwind-merge";
2056
2233
 
2057
2234
  // src/onboarding/deposit/ChainSelect.tsx
2058
- import { useMemo as useMemo2 } from "react";
2235
+ import { useEffect as useEffect10, useMemo as useMemo2 } from "react";
2236
+ import { useAccount as useAccount2, useSwitchChain } from "wagmi";
2059
2237
  import { twMerge as twMerge12 } from "tailwind-merge";
2060
2238
  import * as Select from "@radix-ui/react-select";
2061
- import { useAccount as useAccount2, useChains as useChains2 } from "wagmi";
2062
2239
 
2063
2240
  // src/icons/ChevronUpIcon.tsx
2064
2241
  import { jsx as jsx20 } from "react/jsx-runtime";
@@ -2215,7 +2392,7 @@ function ChainSelect({ value, onChange }) {
2215
2392
  const theme = useTheme();
2216
2393
  const { frame } = useFrame();
2217
2394
  const userAccount = useAccount2();
2218
- const chains = useChains2();
2395
+ const { chains, switchChain } = useSwitchChain();
2219
2396
  const relay = useRelay();
2220
2397
  const relayChains = relay.data?.chains;
2221
2398
  const sourceChains = useMemo2(() => {
@@ -2228,6 +2405,13 @@ function ChainSelect({ value, onChange }) {
2228
2405
  }).filter((c) => c.relayChain);
2229
2406
  }, [chains, relayChains]);
2230
2407
  const selectedChain = sourceChains.find((c) => c.id === value);
2408
+ useEffect10(() => {
2409
+ if (sourceChains.length > 0 && !selectedChain) {
2410
+ const defaultChain = sourceChains[0];
2411
+ onChange(defaultChain.id);
2412
+ switchChain({ chainId: defaultChain.id });
2413
+ }
2414
+ }, [value, selectedChain, sourceChains, onChange, switchChain]);
2231
2415
  return /* @__PURE__ */ jsxs15(
2232
2416
  Select.Root,
2233
2417
  {
@@ -2342,7 +2526,7 @@ var AmountInput = forwardRef3(function AmountInput2({ initialAmount, onChange },
2342
2526
  });
2343
2527
 
2344
2528
  // src/onboarding/deposit/SubmitButton.tsx
2345
- import { useAccount as useAccount3, useBalance as useBalance4, useSwitchChain } from "wagmi";
2529
+ import { useAccount as useAccount3, useBalance as useBalance4, useSwitchChain as useSwitchChain2 } from "wagmi";
2346
2530
  import { twMerge as twMerge14 } from "tailwind-merge";
2347
2531
  import { parseEther as parseEther6 } from "viem";
2348
2532
  import { jsx as jsx28, jsxs as jsxs17 } from "react/jsx-runtime";
@@ -2351,12 +2535,13 @@ function SubmitButton({ amount, chainId, className, ...buttonProps }) {
2351
2535
  const { chainId: userChainId, address: userAddress } = useAccount3();
2352
2536
  const { data: userBalance } = useBalance4({ address: userAddress });
2353
2537
  const shouldSwitchChain = chainId != null && chainId !== userChainId;
2354
- const switchChain = useSwitchChain();
2538
+ const switchChain = useSwitchChain2();
2355
2539
  if (shouldSwitchChain) {
2356
2540
  return /* @__PURE__ */ jsx28(
2357
2541
  Button,
2358
2542
  {
2359
2543
  type: "button",
2544
+ variant: "primary",
2360
2545
  className: twMerge14("w-full", className),
2361
2546
  pending: switchChain.isPending,
2362
2547
  onClick: () => switchChain.switchChain({ chainId }),
@@ -2412,7 +2597,7 @@ function DepositForm({
2412
2597
  onSubmit,
2413
2598
  submitButton
2414
2599
  }) {
2415
- const amountInputRef = useRef2(null);
2600
+ const amountInputRef = useRef3(null);
2416
2601
  const isMounted = useIsMounted();
2417
2602
  const { address: userAddress, chainId: userChainId } = useAccount4();
2418
2603
  const balance = useShowQueryError(useBalance5({ chainId: sourceChain.id, address: userAddress }));
@@ -2425,7 +2610,7 @@ function DepositForm({
2425
2610
  });
2426
2611
  const minimumBalance = amount != null ? amount + (estimatedFee?.fee ?? 0n) : void 0;
2427
2612
  const hasMinimumBalance = balance.data != null ? balance.data.value > (minimumBalance ?? 0n) : void 0;
2428
- useEffect8(() => {
2613
+ useEffect11(() => {
2429
2614
  amountInputRef.current?.focus();
2430
2615
  }, [userChainId]);
2431
2616
  return /* @__PURE__ */ jsxs18(
@@ -2752,14 +2937,14 @@ function DepositViaRelayForm({ amount, setAmount, sourceChain, setSourceChainId
2752
2937
  }
2753
2938
 
2754
2939
  // src/onboarding/deposit/Deposits.tsx
2755
- import { useEffect as useEffect10 } from "react";
2756
- import { useQuery as useQuery15, useQueryClient as useQueryClient6 } from "@tanstack/react-query";
2940
+ import { useEffect as useEffect13 } from "react";
2941
+ import { useQuery as useQuery15, useQueryClient as useQueryClient7 } from "@tanstack/react-query";
2757
2942
 
2758
2943
  // src/onboarding/deposit/TransferDepositStatus.tsx
2759
2944
  import { useQuery as useQuery13 } from "@tanstack/react-query";
2760
2945
 
2761
2946
  // src/onboarding/deposit/DepositStatus.tsx
2762
- import { useEffect as useEffect9, useState as useState4 } from "react";
2947
+ import { useEffect as useEffect12, useState as useState4 } from "react";
2763
2948
  import { twMerge as twMerge16 } from "tailwind-merge";
2764
2949
 
2765
2950
  // src/icons/CloseIcon.tsx
@@ -2782,7 +2967,7 @@ function CloseIcon(props) {
2782
2967
  import { jsx as jsx34, jsxs as jsxs19 } from "react/jsx-runtime";
2783
2968
  function DepositStatus({ status, progress, children, onDismiss }) {
2784
2969
  const [appear, setAppear] = useState4(false);
2785
- useEffect9(() => {
2970
+ useEffect12(() => {
2786
2971
  setAppear(true);
2787
2972
  }, []);
2788
2973
  return /* @__PURE__ */ jsxs19("div", { className: "group bg-white dark:bg-neutral-900 flex flex-col animate-in fade-in slide-in-from-bottom-2 animate-out fade-out", children: [
@@ -2827,7 +3012,7 @@ function DepositStatus({ status, progress, children, onDismiss }) {
2827
3012
  }
2828
3013
 
2829
3014
  // src/onboarding/deposit/TransferDepositStatus.tsx
2830
- import { useChains as useChains3 } from "wagmi";
3015
+ import { useChains as useChains2 } from "wagmi";
2831
3016
  import { Fragment as Fragment5, jsx as jsx35, jsxs as jsxs20 } from "react/jsx-runtime";
2832
3017
  function TransferDepositStatus({
2833
3018
  amount,
@@ -2838,7 +3023,7 @@ function TransferDepositStatus({
2838
3023
  estimatedTime,
2839
3024
  onDismiss
2840
3025
  }) {
2841
- const chains = useChains3();
3026
+ const chains = useChains2();
2842
3027
  const chain = chains.find((chain2) => chain2.id === chainL1Id);
2843
3028
  const receipt = useQuery13({
2844
3029
  queryKey: ["transferDepositStatus", hash],
@@ -2900,8 +3085,7 @@ function TransferDepositStatus({
2900
3085
  }
2901
3086
  ),
2902
3087
  " ",
2903
- /* @__PURE__ */ jsx35(Balance, { wei: amount }),
2904
- " !"
3088
+ /* @__PURE__ */ jsx35(Balance, { wei: amount })
2905
3089
  ] });
2906
3090
  })()
2907
3091
  }
@@ -2910,7 +3094,7 @@ function TransferDepositStatus({
2910
3094
 
2911
3095
  // src/onboarding/deposit/RelayDepositStatus.tsx
2912
3096
  import { useQuery as useQuery14 } from "@tanstack/react-query";
2913
- import { useChains as useChains4 } from "wagmi";
3097
+ import { useChains as useChains3 } from "wagmi";
2914
3098
  import { Fragment as Fragment6, jsx as jsx36, jsxs as jsxs21 } from "react/jsx-runtime";
2915
3099
  function RelayDepositStatus({
2916
3100
  amount,
@@ -2921,7 +3105,7 @@ function RelayDepositStatus({
2921
3105
  depositPromise,
2922
3106
  onDismiss
2923
3107
  }) {
2924
- const chains = useChains4();
3108
+ const chains = useChains3();
2925
3109
  const chainL1 = chains.find((chain) => chain.id === chainL1Id);
2926
3110
  const chainL2 = chains.find((chain) => chain.id === chainL2Id);
2927
3111
  const deposit = useQuery14({
@@ -2968,7 +3152,7 @@ function RelayDepositStatus({
2968
3152
  import { useAccount as useAccount7, useClient as useClient11 } from "wagmi";
2969
3153
  import { jsx as jsx37 } from "react/jsx-runtime";
2970
3154
  function Deposits() {
2971
- const queryClient = useQueryClient6();
3155
+ const queryClient = useQueryClient7();
2972
3156
  const { chainId } = useEntryKitConfig();
2973
3157
  const client = useClient11({ chainId });
2974
3158
  const { address: userAddress } = useAccount7();
@@ -2981,7 +3165,7 @@ function Deposits() {
2981
3165
  return true;
2982
3166
  }
2983
3167
  });
2984
- useEffect10(() => {
3168
+ useEffect13(() => {
2985
3169
  if (isComplete) {
2986
3170
  queryClient.invalidateQueries({ queryKey: ["balance"] });
2987
3171
  queryClient.invalidateQueries({ queryKey: ["getBalance", client?.uid, userAddress] });
@@ -3002,7 +3186,7 @@ import { jsx as jsx38, jsxs as jsxs22 } from "react/jsx-runtime";
3002
3186
  function DepositFormContainer() {
3003
3187
  const { chainId: destinationChainId } = useEntryKitConfig();
3004
3188
  const chainId = useChainId();
3005
- const chains = useChains5();
3189
+ const chains = useChains4();
3006
3190
  const [amount, setAmount] = useState5(void 0);
3007
3191
  const [sourceChainId, setSourceChainId] = useState5(chainId);
3008
3192
  const sourceChain = chains.find(({ id }) => id === sourceChainId);
@@ -3045,33 +3229,18 @@ function ArrowLeftIcon(props) {
3045
3229
  }
3046
3230
 
3047
3231
  // src/onboarding/quarry/GasBalance.tsx
3048
- import { useEffect as useEffect12 } from "react";
3049
- import { useQueryClient as useQueryClient7 } from "@tanstack/react-query";
3050
-
3051
- // src/errors/usePrevious.ts
3052
- import { useEffect as useEffect11, useRef as useRef3 } from "react";
3053
- function usePrevious(value, initialValue) {
3054
- const ref = useRef3();
3055
- useEffect11(() => {
3056
- ref.current = { value };
3057
- }, [value]);
3058
- return ref.current ? ref.current.value : initialValue;
3059
- }
3060
-
3061
- // src/onboarding/quarry/GasBalance.tsx
3232
+ import { useEffect as useEffect14 } from "react";
3233
+ import { useQueryClient as useQueryClient8 } from "@tanstack/react-query";
3062
3234
  import { Fragment as Fragment7, jsx as jsx40, jsxs as jsxs23 } from "react/jsx-runtime";
3063
3235
  function GasBalance2({ isActive, isExpanded, isFocused, setFocused, userAddress }) {
3064
- const queryClient = useQueryClient7();
3236
+ const queryClient = useQueryClient8();
3065
3237
  const balance = useShowQueryError(useBalance(userAddress));
3066
3238
  const prevBalance = usePrevious(balance.data || 0n);
3067
- useEffect12(() => {
3068
- const checkBalance = async () => {
3069
- if (balance.data != null && prevBalance === 0n && balance.data > 0n) {
3070
- await queryClient.invalidateQueries({ queryKey: ["getPrerequisites"] });
3071
- setFocused(false);
3072
- }
3073
- };
3074
- checkBalance();
3239
+ useEffect14(() => {
3240
+ if (balance.data != null && prevBalance === 0n && balance.data > 0n) {
3241
+ queryClient.invalidateQueries({ queryKey: ["getPrerequisites"] });
3242
+ setFocused(false);
3243
+ }
3075
3244
  }, [balance.data, prevBalance, setFocused, queryClient, userAddress]);
3076
3245
  if (isFocused) {
3077
3246
  return /* @__PURE__ */ jsxs23(Fragment7, { children: [
@@ -3116,7 +3285,7 @@ function ConnectedSteps({ userClient, initialUserAddress }) {
3116
3285
  const [focusedId, setFocusedId] = useState6(null);
3117
3286
  const userAddress = userClient.account.address;
3118
3287
  const { data: prerequisites, error: prerequisitesError } = usePrerequisites(userAddress);
3119
- useEffect13(() => {
3288
+ useEffect15(() => {
3120
3289
  if (prerequisitesError) {
3121
3290
  console.error("Could not get prerequisites", prerequisitesError);
3122
3291
  }
@@ -3124,7 +3293,7 @@ function ConnectedSteps({ userClient, initialUserAddress }) {
3124
3293
  const { closeAccountModal } = useAccountModal();
3125
3294
  const isNewConnection = userAddress !== initialUserAddress;
3126
3295
  const initialPrerequisites = useRef4(prerequisites);
3127
- useEffect13(() => {
3296
+ useEffect15(() => {
3128
3297
  if (prerequisites == null) return;
3129
3298
  if (initialPrerequisites.current == null) {
3130
3299
  initialPrerequisites.current = prerequisites;
@@ -3135,7 +3304,7 @@ function ConnectedSteps({ userClient, initialUserAddress }) {
3135
3304
  }
3136
3305
  }
3137
3306
  }, [closeAccountModal, isNewConnection, prerequisites]);
3138
- const { sessionAddress, hasAllowance, isSpender, hasDelegation, hasGasBalance, hasQuarryBalance } = prerequisites ?? {};
3307
+ const { sessionAddress, hasAllowance, isSpender, hasDelegation, hasGasBalance, hasQuarryGasBalance } = prerequisites ?? {};
3139
3308
  const steps = useMemo4(() => {
3140
3309
  if (!userAddress) {
3141
3310
  return [
@@ -3171,7 +3340,7 @@ function ConnectedSteps({ userClient, initialUserAddress }) {
3171
3340
  } else {
3172
3341
  steps2.push({
3173
3342
  id: "gasBalanceQuarry",
3174
- isComplete: !!hasQuarryBalance,
3343
+ isComplete: !!hasQuarryGasBalance,
3175
3344
  content: (props) => /* @__PURE__ */ jsx41(GasBalance2, { ...props, userAddress })
3176
3345
  });
3177
3346
  }
@@ -3186,7 +3355,7 @@ function ConnectedSteps({ userClient, initialUserAddress }) {
3186
3355
  hasAllowance,
3187
3356
  hasDelegation,
3188
3357
  hasGasBalance,
3189
- hasQuarryBalance,
3358
+ hasQuarryGasBalance,
3190
3359
  isSpender,
3191
3360
  paymaster,
3192
3361
  sessionAddress,
@@ -3249,11 +3418,11 @@ import { ErrorBoundary } from "react-error-boundary";
3249
3418
 
3250
3419
  // src/errors/ErrorOverlay.tsx
3251
3420
  import { wait } from "@latticexyz/common/utils";
3252
- import { useEffect as useEffect14 } from "react";
3421
+ import { useEffect as useEffect16 } from "react";
3253
3422
  import { twMerge as twMerge18 } from "tailwind-merge";
3254
3423
  import { Fragment as Fragment8, jsx as jsx43, jsxs as jsxs24 } from "react/jsx-runtime";
3255
3424
  function ErrorOverlay({ error: error2, retry, dismiss }) {
3256
- useEffect14(() => {
3425
+ useEffect16(() => {
3257
3426
  if (error2) {
3258
3427
  console.error(error2);
3259
3428
  }