@embarkai/ui-kit 0.4.113 → 0.4.115

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -11640,12 +11640,6 @@ var init_AuthMenu = __esm({
11640
11640
  setAlert(null);
11641
11641
  };
11642
11642
  }, []);
11643
- if (!isIframeReady) {
11644
- return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(Expandable, { isExpanded: true, className: "w-full p-8 flex flex-col justify-center items-center gap-[var(--ui-kit-gap)]", children: [
11645
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_lucide_react11.Loader, { className: "w-4 h-4 animate-spin" }),
11646
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("span", { className: "text-sm text-[var(--ui-kit-fg-muted)]", children: "Initializing wallet..." })
11647
- ] });
11648
- }
11649
11643
  const stepContent = (0, import_react25.useMemo)(
11650
11644
  () => ({
11651
11645
  "loading": /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(LoadingStep, {}),
@@ -11663,6 +11657,12 @@ var init_AuthMenu = __esm({
11663
11657
  }),
11664
11658
  [onAuthSuccess, goBackToSignIn]
11665
11659
  );
11660
+ if (!isIframeReady) {
11661
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(Expandable, { isExpanded: true, className: "w-full p-8 flex flex-col justify-center items-center gap-[var(--ui-kit-gap)]", children: [
11662
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_lucide_react11.Loader, { className: "w-4 h-4 animate-spin" }),
11663
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("span", { className: "text-sm text-[var(--ui-kit-fg-muted)]", children: "Initializing wallet..." })
11664
+ ] });
11665
+ }
11666
11666
  return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(Expandable, { isExpanded: true, contentClassName: "w-full flex flex-col gap-[var(--ui-kit-gap)]", children: [
11667
11667
  stepContent[step],
11668
11668
  alert2 && /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(Highlight, { type: "error", children: [
@@ -15735,6 +15735,68 @@ var init_wallets = __esm({
15735
15735
  }
15736
15736
  });
15737
15737
 
15738
+ // src/internal/lib/disconnect-guard.ts
15739
+ function waitForReconnect(config) {
15740
+ if (config.state.status !== "reconnecting") return Promise.resolve();
15741
+ return new Promise((resolve) => {
15742
+ const unsubscribe = config.subscribe(
15743
+ (state) => state.status,
15744
+ (status) => {
15745
+ if (status === "reconnecting") return;
15746
+ unsubscribe();
15747
+ resolve();
15748
+ }
15749
+ );
15750
+ });
15751
+ }
15752
+ function hasUnusableCurrentConnector(config) {
15753
+ const { current, connections } = config.state;
15754
+ if (!current) return false;
15755
+ const connector = connections.get(current)?.connector;
15756
+ return !!connector && typeof connector.disconnect !== "function";
15757
+ }
15758
+ var init_disconnect_guard = __esm({
15759
+ "src/internal/lib/disconnect-guard.ts"() {
15760
+ }
15761
+ });
15762
+
15763
+ // src/internal/hooks/useSafeDisconnect.ts
15764
+ function useSafeDisconnect(options) {
15765
+ const config = (0, import_wagmi.useConfig)();
15766
+ const mutation = (0, import_wagmi.useDisconnect)(options);
15767
+ const { mutateAsync } = mutation;
15768
+ const disconnectAsync = (0, import_react40.useCallback)(
15769
+ async (parameters) => {
15770
+ await waitForReconnect(config);
15771
+ if (!parameters?.connector && hasUnusableCurrentConnector(config)) return;
15772
+ await mutateAsync(parameters);
15773
+ },
15774
+ [config, mutateAsync]
15775
+ );
15776
+ const disconnect = (0, import_react40.useCallback)(
15777
+ (parameters) => {
15778
+ disconnectAsync(parameters).catch(() => {
15779
+ });
15780
+ },
15781
+ [disconnectAsync]
15782
+ );
15783
+ return {
15784
+ ...mutation,
15785
+ mutate: disconnect,
15786
+ mutateAsync: disconnectAsync,
15787
+ disconnect,
15788
+ disconnectAsync
15789
+ };
15790
+ }
15791
+ var import_react40, import_wagmi;
15792
+ var init_useSafeDisconnect = __esm({
15793
+ "src/internal/hooks/useSafeDisconnect.ts"() {
15794
+ import_react40 = require("react");
15795
+ import_wagmi = require("wagmi");
15796
+ init_disconnect_guard();
15797
+ }
15798
+ });
15799
+
15738
15800
  // src/internal/lib/connect-errors.ts
15739
15801
  function someInErrorChain(error, predicate) {
15740
15802
  let current = error;
@@ -15866,16 +15928,16 @@ function useLinkedProfiles() {
15866
15928
  }
15867
15929
  });
15868
15930
  const { profiles = [], avatar = null } = data || {};
15869
- const refresh = (0, import_react40.useCallback)(async () => {
15931
+ const refresh = (0, import_react41.useCallback)(async () => {
15870
15932
  await qc.invalidateQueries({ queryKey: [LINKED_PROFILES_QUERY_KEY, address] });
15871
15933
  }, [qc, address]);
15872
15934
  return { profiles, avatar, isLoading, isFetching, error, refresh };
15873
15935
  }
15874
- var import_react_query17, import_react40, LINKED_PROFILES_QUERY_KEY;
15936
+ var import_react_query17, import_react41, LINKED_PROFILES_QUERY_KEY;
15875
15937
  var init_linkedProfiles = __esm({
15876
15938
  "src/modules/linkedProfiles.ts"() {
15877
15939
  import_react_query17 = require("@tanstack/react-query");
15878
- import_react40 = require("react");
15940
+ import_react41 = require("react");
15879
15941
  init_SessionContext();
15880
15942
  init_auth();
15881
15943
  init_common();
@@ -16613,7 +16675,7 @@ function useLinkSocial() {
16613
16675
  } = useProviderConfig();
16614
16676
  const setPage = useLayoutDataStore((st) => st.setPage);
16615
16677
  const { providerType, linkIsLoading, setProviderType, setAlert, setLinkIsLoading } = useManageWalletStore();
16616
- const handleLinkSocialProvider = import_react41.default.useCallback(
16678
+ const handleLinkSocialProvider = import_react42.default.useCallback(
16617
16679
  async (providerIdRaw) => {
16618
16680
  const providerKey = providerIdRaw.toLowerCase();
16619
16681
  const normalizedKey = providerKey === "twitter" ? "x" : providerKey;
@@ -16671,8 +16733,8 @@ function useLinkSocial() {
16671
16733
  },
16672
16734
  [config.social?.providers]
16673
16735
  );
16674
- const [socialLinkStarted, setSocialLinkStarted] = import_react41.default.useState(false);
16675
- (0, import_react41.useEffect)(() => {
16736
+ const [socialLinkStarted, setSocialLinkStarted] = import_react42.default.useState(false);
16737
+ (0, import_react42.useEffect)(() => {
16676
16738
  const key = providerType?.toLowerCase();
16677
16739
  console.log("[useLinkSocial] Effect triggered:", { key, linkIsLoading, socialLinkStarted });
16678
16740
  if (key && key !== "telegram" && key !== "email" && key !== "passkey" && key !== "wallet") {
@@ -16686,7 +16748,7 @@ function useLinkSocial() {
16686
16748
  }
16687
16749
  }, [providerType, linkIsLoading, socialLinkStarted, handleLinkSocialProvider]);
16688
16750
  }
16689
- var import_react_query22, import_react41;
16751
+ var import_react_query22, import_react42;
16690
16752
  var init_useLinkSocial = __esm({
16691
16753
  "src/internal/components/ManageWalletMenu/hooks/useLinkSocial.ts"() {
16692
16754
  init_useLayoutDataStore();
@@ -16694,7 +16756,7 @@ var init_useLinkSocial = __esm({
16694
16756
  init_SessionContext();
16695
16757
  init_linkedProfiles();
16696
16758
  import_react_query22 = require("@tanstack/react-query");
16697
- import_react41 = __toESM(require("react"), 1);
16759
+ import_react42 = __toESM(require("react"), 1);
16698
16760
  init_auth();
16699
16761
  init_telegramBrowser();
16700
16762
  init_useProvidersList();
@@ -16762,7 +16824,7 @@ function useLinkTelegram() {
16762
16824
  const address = useSession((st) => st.address);
16763
16825
  const { providerType, linkIsLoading, setLinkIsLoading, setProviderType, setAlert } = useManageWalletStore();
16764
16826
  const setPage = useLayoutDataStore((st) => st.setPage);
16765
- const handleLinkTelegram = (0, import_react42.useCallback)(async () => {
16827
+ const handleLinkTelegram = (0, import_react43.useCallback)(async () => {
16766
16828
  try {
16767
16829
  if (shouldBlockSocialAuthInTelegram("telegram")) {
16768
16830
  setAlert(buildTelegramBrowserRestriction("Telegram", "linking"));
@@ -16809,8 +16871,8 @@ function useLinkTelegram() {
16809
16871
  setLinkIsLoading(false);
16810
16872
  }
16811
16873
  }, [config.social?.providers]);
16812
- const [telegramLinkStarted, setTelegramLinkStarted] = (0, import_react42.useState)(false);
16813
- (0, import_react42.useEffect)(() => {
16874
+ const [telegramLinkStarted, setTelegramLinkStarted] = (0, import_react43.useState)(false);
16875
+ (0, import_react43.useEffect)(() => {
16814
16876
  console.log("[useLinkTelegram] Effect triggered:", { providerType, linkIsLoading, telegramLinkStarted });
16815
16877
  if (providerType === "telegram" && !linkIsLoading && !telegramLinkStarted) {
16816
16878
  console.log("[useLinkTelegram] Starting Telegram link flow");
@@ -16818,20 +16880,20 @@ function useLinkTelegram() {
16818
16880
  handleLinkTelegram();
16819
16881
  }
16820
16882
  }, [providerType, handleLinkTelegram, linkIsLoading, telegramLinkStarted]);
16821
- (0, import_react42.useEffect)(() => {
16883
+ (0, import_react43.useEffect)(() => {
16822
16884
  if (providerType !== "telegram") {
16823
16885
  setTelegramLinkStarted(false);
16824
16886
  }
16825
16887
  }, [providerType]);
16826
16888
  }
16827
- var import_react_query23, import_react42;
16889
+ var import_react_query23, import_react43;
16828
16890
  var init_useLinkTelegram = __esm({
16829
16891
  "src/internal/components/ManageWalletMenu/hooks/useLinkTelegram.ts"() {
16830
16892
  init_ProviderContext();
16831
16893
  init_SessionContext();
16832
16894
  init_linkedProfiles();
16833
16895
  import_react_query23 = require("@tanstack/react-query");
16834
- import_react42 = require("react");
16896
+ import_react43 = require("react");
16835
16897
  init_telegram2();
16836
16898
  init_useLayoutDataStore();
16837
16899
  init_telegramBrowser();
@@ -16862,7 +16924,7 @@ function getProviderCaption(provider) {
16862
16924
  function ProviderCard(props) {
16863
16925
  const { provider, meta, externalId, disabled } = props;
16864
16926
  const { t } = useT();
16865
- const connections = (0, import_wagmi.useConnections)();
16927
+ const connections = (0, import_wagmi2.useConnections)();
16866
16928
  const {
16867
16929
  mutate: connectExternalWallet,
16868
16930
  disconnect: disconnectExternalWallet,
@@ -16974,14 +17036,14 @@ function ProviderCard(props) {
16974
17036
  ] })
16975
17037
  ] });
16976
17038
  }
16977
- var import_lucide_react30, import_wagmi, import_jsx_runtime71;
17039
+ var import_lucide_react30, import_wagmi2, import_jsx_runtime71;
16978
17040
  var init_ProviderCard = __esm({
16979
17041
  "src/internal/components/ManageWalletMenu/ProviderCard.tsx"() {
16980
17042
  init_useLayoutDataStore();
16981
17043
  init_useT();
16982
17044
  init_wallets();
16983
17045
  import_lucide_react30 = require("lucide-react");
16984
- import_wagmi = require("wagmi");
17046
+ import_wagmi2 = require("wagmi");
16985
17047
  init_types();
16986
17048
  init_cn();
16987
17049
  init_ConnectExternalWalletMenu2();
@@ -17031,7 +17093,7 @@ function ManageWalletMenu() {
17031
17093
  } = useManageWalletStore();
17032
17094
  const configuredProviders = getConfiguredProviders(config.current);
17033
17095
  const { data: providers = [], isLoading: isProvidersLoading, error: providersError } = useProvidersList();
17034
- const renderProviders = (0, import_react43.useMemo)(() => {
17096
+ const renderProviders = (0, import_react44.useMemo)(() => {
17035
17097
  const normalizeProviderName = (name) => {
17036
17098
  if (name === "x") return "twitter";
17037
17099
  return name;
@@ -17156,7 +17218,7 @@ function ManageWalletMenu() {
17156
17218
  ] })
17157
17219
  ] });
17158
17220
  }
17159
- var import_lodash_es11, import_lucide_react31, import_react43, import_jsx_runtime72, POSSIBLE_PROVIDERS, MULTI_PROVIDERS;
17221
+ var import_lodash_es11, import_lucide_react31, import_react44, import_jsx_runtime72, POSSIBLE_PROVIDERS, MULTI_PROVIDERS;
17160
17222
  var init_ManageWallet = __esm({
17161
17223
  "src/internal/components/ManageWalletMenu/ManageWallet.tsx"() {
17162
17224
  init_useLayoutDataStore();
@@ -17165,7 +17227,7 @@ var init_ManageWallet = __esm({
17165
17227
  init_i18n();
17166
17228
  import_lodash_es11 = require("lodash-es");
17167
17229
  import_lucide_react31 = require("lucide-react");
17168
- import_react43 = require("react");
17230
+ import_react44 = require("react");
17169
17231
  init_constants();
17170
17232
  init_telegramBrowser();
17171
17233
  init_Expandable2();
@@ -17198,12 +17260,12 @@ function UnlinkProviderMenu() {
17198
17260
  const qc = (0, import_react_query24.useQueryClient)();
17199
17261
  const address = useSession((st) => st.address);
17200
17262
  const { callbacksRef } = useProviderConfig();
17201
- const { disconnect: disconnectExternalWallet } = (0, import_wagmi2.useDisconnect)();
17263
+ const { disconnect: disconnectExternalWallet } = useSafeDisconnect();
17202
17264
  const isExternalConnected = useExternalWalletStore((st) => st.isExternalConnected);
17203
17265
  const { t } = useT();
17204
17266
  const setPage = useLayoutDataStore((st) => st.setPage);
17205
17267
  const { confirmUnlink, setConfirmUnlink, setAlert } = useManageWalletStore();
17206
- const [confirmInput, setConfirmInput] = (0, import_react44.useState)("");
17268
+ const [confirmInput, setConfirmInput] = (0, import_react45.useState)("");
17207
17269
  const { mutate: handleUnlinkProvider, isPending: isProviderUnlinking } = (0, import_react_query24.useMutation)({
17208
17270
  mutationFn: async () => {
17209
17271
  if (!confirmUnlink) {
@@ -17285,18 +17347,18 @@ function UnlinkProviderMenu() {
17285
17347
  ] })
17286
17348
  ] });
17287
17349
  }
17288
- var import_react_query24, import_lucide_react32, import_react44, import_wagmi2, import_jsx_runtime73;
17350
+ var import_react_query24, import_lucide_react32, import_react45, import_jsx_runtime73;
17289
17351
  var init_UnlinkProviderMenu = __esm({
17290
17352
  "src/internal/components/ManageWalletMenu/UnlinkProviderMenu.tsx"() {
17291
17353
  init_useLayoutDataStore();
17292
17354
  init_ProviderContext();
17293
17355
  init_SessionContext();
17294
17356
  init_useT();
17357
+ init_useSafeDisconnect();
17295
17358
  init_linkedProfiles();
17296
17359
  import_react_query24 = require("@tanstack/react-query");
17297
17360
  import_lucide_react32 = require("lucide-react");
17298
- import_react44 = require("react");
17299
- import_wagmi2 = require("wagmi");
17361
+ import_react45 = require("react");
17300
17362
  init_auth();
17301
17363
  init_useExternalWalletStore();
17302
17364
  init_button();
@@ -17336,8 +17398,8 @@ var init_ManageWalletMenu = __esm({
17336
17398
 
17337
17399
  // src/internal/components/ConnectExternalWalletMenu/useConnectExternalWalletMenuParams.ts
17338
17400
  function useConnectExternalWalletMenuParams() {
17339
- const paramsRef = (0, import_react45.useRef)(null);
17340
- (0, import_react45.useEffect)(() => {
17401
+ const paramsRef = (0, import_react46.useRef)(null);
17402
+ (0, import_react46.useEffect)(() => {
17341
17403
  const { pageParams, setPageParams } = useLayoutDataStore.getState();
17342
17404
  if (!pageParams || !(0, import_lodash_es12.keys)(pageParams).length) return;
17343
17405
  paramsRef.current = pageParams;
@@ -17345,11 +17407,11 @@ function useConnectExternalWalletMenuParams() {
17345
17407
  }, []);
17346
17408
  return paramsRef;
17347
17409
  }
17348
- var import_lodash_es12, import_react45;
17410
+ var import_lodash_es12, import_react46;
17349
17411
  var init_useConnectExternalWalletMenuParams = __esm({
17350
17412
  "src/internal/components/ConnectExternalWalletMenu/useConnectExternalWalletMenuParams.ts"() {
17351
17413
  import_lodash_es12 = require("lodash-es");
17352
- import_react45 = require("react");
17414
+ import_react46 = require("react");
17353
17415
  init_useLayoutDataStore();
17354
17416
  }
17355
17417
  });
@@ -17360,18 +17422,18 @@ function hasInjectedWallet() {
17360
17422
  return mipdStore.getProviders().length > 0 || !!window.ethereum;
17361
17423
  }
17362
17424
  function useHasInjectedWallet() {
17363
- return (0, import_react46.useSyncExternalStore)(
17425
+ return (0, import_react47.useSyncExternalStore)(
17364
17426
  (onStoreChange) => mipdStore?.subscribe(onStoreChange) ?? (() => {
17365
17427
  }),
17366
17428
  hasInjectedWallet,
17367
17429
  () => false
17368
17430
  );
17369
17431
  }
17370
- var import_mipd, import_react46, mipdStore;
17432
+ var import_mipd, import_react47, mipdStore;
17371
17433
  var init_useHasInjectedWallet = __esm({
17372
17434
  "src/internal/components/ConnectExternalWalletMenu/useHasInjectedWallet.ts"() {
17373
17435
  import_mipd = require("mipd");
17374
- import_react46 = require("react");
17436
+ import_react47 = require("react");
17375
17437
  mipdStore = typeof window !== "undefined" ? (0, import_mipd.createStore)() : void 0;
17376
17438
  }
17377
17439
  });
@@ -17394,17 +17456,19 @@ function ConnectExternalWalletMenu() {
17394
17456
  const connectors = (0, import_wagmi3.useConnectors)();
17395
17457
  const hasInjectedWallet2 = useHasInjectedWallet();
17396
17458
  const wagmiConfig3 = (0, import_wagmi3.useConfig)();
17459
+ const chains = (0, import_wagmi3.useChains)();
17397
17460
  const connections = (0, import_wagmi3.useConnections)();
17398
- const { mutate: disconnect, mutateAsync: disconnectAsync } = (0, import_wagmi3.useDisconnect)();
17461
+ const { mutate: disconnect, mutateAsync: disconnectAsync } = useSafeDisconnect();
17399
17462
  const { mutateAsync: signMessageAsync } = (0, import_wagmi3.useSignMessage)();
17400
17463
  const { mutateAsync: switchChainAsync } = (0, import_wagmi3.useSwitchChain)();
17401
17464
  const { mutateAsync: switchConnectionAsync } = (0, import_wagmi3.useSwitchConnection)();
17402
- const [isPreparingConnect, setIsPreparingConnect] = (0, import_react47.useState)(false);
17465
+ const [isPreparingConnect, setIsPreparingConnect] = (0, import_react48.useState)(false);
17403
17466
  const signOnSupportedChain = async (params) => {
17404
17467
  const { connector, account, message } = params;
17405
17468
  const signOnce = async (viaFallback = false) => {
17406
17469
  let chainId = await connector.getChainId();
17407
- if (viaFallback) {
17470
+ const isUnsupportedMetaMaskChain = connector.type === "metaMask" && !chains.some((chain) => chain.id === chainId);
17471
+ if (viaFallback || isUnsupportedMetaMaskChain) {
17408
17472
  await switchChainAsync({ connector, chainId: SIGN_FALLBACK_CHAIN_ID });
17409
17473
  chainId = SIGN_FALLBACK_CHAIN_ID;
17410
17474
  }
@@ -17425,7 +17489,7 @@ function ConnectExternalWalletMenu() {
17425
17489
  queryKey: [PROVIDERS_QUERY_KEY, embarkAiAddress],
17426
17490
  queryFn: async () => getLinkedProviders()
17427
17491
  });
17428
- const [connectError, setConnectError] = (0, import_react47.useState)(null);
17492
+ const [connectError, setConnectError] = (0, import_react48.useState)(null);
17429
17493
  const { mutateAsync: onLinkingComplete } = (0, import_react_query25.useMutation)({
17430
17494
  mutationFn: async (success) => {
17431
17495
  useManageWalletStore.getState().setProviderType(null);
@@ -17579,7 +17643,7 @@ function ConnectExternalWalletMenu() {
17579
17643
  }, 100);
17580
17644
  await dropFailedConnectorSession(error, connector, wagmiConfig3);
17581
17645
  }
17582
- const visibleConnectors = (0, import_react47.useMemo)(() => {
17646
+ const visibleConnectors = (0, import_react48.useMemo)(() => {
17583
17647
  const seen = /* @__PURE__ */ new Set();
17584
17648
  const unique = connectors.filter((connector) => {
17585
17649
  const skipConnector = seen.has(connector.uid);
@@ -17597,7 +17661,7 @@ function ConnectExternalWalletMenu() {
17597
17661
  (connector) => allowed.includes(connector.id.toLowerCase()) || allowed.includes(connector.name.toLowerCase())
17598
17662
  );
17599
17663
  }, [connectors, allowedWallets, hasInjectedWallet2]);
17600
- const getInstructionSteps = (0, import_react47.useCallback)(() => {
17664
+ const getInstructionSteps = (0, import_react48.useCallback)(() => {
17601
17665
  const connectFlowType = getConnectFlowType({
17602
17666
  isEmbarkAI: !!embarkAiAddress,
17603
17667
  connectFlow: menuParams.current?.connectFlowType || "auth"
@@ -17705,7 +17769,7 @@ function ConnectExternalWalletMenu() {
17705
17769
  ] })
17706
17770
  ] });
17707
17771
  }
17708
- var import_react_query25, import_lucide_react33, import_react47, import_wagmi3, import_chains, import_jsx_runtime74, SIGN_FALLBACK_CHAIN_ID;
17772
+ var import_react_query25, import_lucide_react33, import_react48, import_wagmi3, import_chains, import_jsx_runtime74, SIGN_FALLBACK_CHAIN_ID;
17709
17773
  var init_ConnectExternalWalletMenu = __esm({
17710
17774
  "src/internal/components/ConnectExternalWalletMenu/ConnectExternalWalletMenu.tsx"() {
17711
17775
  init_ProviderContext();
@@ -17713,11 +17777,12 @@ var init_ConnectExternalWalletMenu = __esm({
17713
17777
  init_useOpenPage();
17714
17778
  init_i18n();
17715
17779
  init_wallets();
17780
+ init_useSafeDisconnect();
17716
17781
  init_connect_errors();
17717
17782
  init_linkedProfiles();
17718
17783
  import_react_query25 = require("@tanstack/react-query");
17719
17784
  import_lucide_react33 = require("lucide-react");
17720
- import_react47 = require("react");
17785
+ import_react48 = require("react");
17721
17786
  import_wagmi3 = require("wagmi");
17722
17787
  import_chains = require("wagmi/chains");
17723
17788
  init_common();
@@ -17745,13 +17810,13 @@ function useExternalWalletConnnect(options) {
17745
17810
  const connectors = (0, import_wagmi4.useConnectors)();
17746
17811
  const connections = (0, import_wagmi4.useConnections)();
17747
17812
  const { mutate: connect, mutateAsync: connectAsync, ...restUseConnect } = (0, import_wagmi4.useConnect)();
17748
- const { mutateAsync: disconnectAsync } = (0, import_wagmi4.useDisconnect)();
17749
- const disconnectExternalWallet = (0, import_react48.useCallback)(async () => {
17813
+ const { mutateAsync: disconnectAsync } = useSafeDisconnect();
17814
+ const disconnectExternalWallet = (0, import_react49.useCallback)(async () => {
17750
17815
  await disconnectAsync();
17751
17816
  const { externalAddress, clearExternalWallet } = useExternalWalletStore.getState();
17752
17817
  if (!!externalAddress) clearExternalWallet();
17753
17818
  }, [disconnectAsync]);
17754
- const connectExternalWallet = (0, import_react48.useCallback)(
17819
+ const connectExternalWallet = (0, import_react49.useCallback)(
17755
17820
  async (walletConnectorType) => {
17756
17821
  const connector = connectors.find((c) => c.id === walletConnectorType);
17757
17822
  if (!connector) {
@@ -17805,12 +17870,13 @@ function useExternalWalletConnnect(options) {
17805
17870
  ...(0, import_lodash_es13.omit)(restUseConnect, ["mutate", "mutateAsync"])
17806
17871
  };
17807
17872
  }
17808
- var import_lodash_es13, import_react48, import_wagmi4;
17873
+ var import_lodash_es13, import_react49, import_wagmi4;
17809
17874
  var init_useExternalWalletConnect = __esm({
17810
17875
  "src/internal/components/ConnectExternalWalletMenu/useExternalWalletConnect.ts"() {
17811
17876
  init_ProviderContext();
17877
+ init_useSafeDisconnect();
17812
17878
  import_lodash_es13 = require("lodash-es");
17813
- import_react48 = require("react");
17879
+ import_react49 = require("react");
17814
17880
  import_wagmi4 = require("wagmi");
17815
17881
  init_useLayoutStore();
17816
17882
  init_connect_errors();
@@ -17903,8 +17969,8 @@ function getErrorMessage(err) {
17903
17969
  function DeviceLinkScreen() {
17904
17970
  const setPage = useLayoutDataStore((s) => s.setPage);
17905
17971
  const { mutate: link, isPending } = useLinkDevice();
17906
- const [code, setCode] = (0, import_react49.useState)("");
17907
- const [error, setError] = (0, import_react49.useState)(null);
17972
+ const [code, setCode] = (0, import_react50.useState)("");
17973
+ const [error, setError] = (0, import_react50.useState)(null);
17908
17974
  const isValid = code.length === 6 && VALID_CHARS.test(code);
17909
17975
  function handleCodeChange(value) {
17910
17976
  const upper = value.toUpperCase().slice(0, 6);
@@ -17946,11 +18012,11 @@ function DeviceLinkScreen() {
17946
18012
  /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(Button, { variant: "default", size: "large", className: "w-full", disabled: !isValid || isPending, onClick: handleLink, children: isPending ? /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(import_lucide_react34.Loader2, { className: "w-4 h-4 animate-spin" }) : "Link" })
17947
18013
  ] });
17948
18014
  }
17949
- var import_lucide_react34, import_react49, import_jsx_runtime75, VALID_CHARS;
18015
+ var import_lucide_react34, import_react50, import_jsx_runtime75, VALID_CHARS;
17950
18016
  var init_DeviceLinkScreen = __esm({
17951
18017
  "src/internal/components/DevicesMenu/DeviceLinkScreen.tsx"() {
17952
18018
  import_lucide_react34 = require("lucide-react");
17953
- import_react49 = require("react");
18019
+ import_react50 = require("react");
17954
18020
  init_devices();
17955
18021
  init_useLayoutDataStore();
17956
18022
  init_Expandable2();
@@ -18489,19 +18555,19 @@ function DeviceManageScreen() {
18489
18555
  const userId = session?.mpcUserId || "";
18490
18556
  const deviceId = pageParams?.deviceId;
18491
18557
  const deviceName = pageParams?.deviceName;
18492
- const guardianRef = (0, import_react50.useRef)(null);
18493
- const [screen, setScreen] = (0, import_react50.useState)({ step: "connecting" });
18494
- const [actionState, setActionState] = (0, import_react50.useState)(null);
18495
- const [password, setPassword] = (0, import_react50.useState)("");
18496
- const [statusMessage, setStatusMessage] = (0, import_react50.useState)(null);
18497
- const [errorMessage, setErrorMessage] = (0, import_react50.useState)(null);
18498
- const [waitingConfirm, setWaitingConfirm] = (0, import_react50.useState)(false);
18499
- (0, import_react50.useEffect)(() => {
18558
+ const guardianRef = (0, import_react51.useRef)(null);
18559
+ const [screen, setScreen] = (0, import_react51.useState)({ step: "connecting" });
18560
+ const [actionState, setActionState] = (0, import_react51.useState)(null);
18561
+ const [password, setPassword] = (0, import_react51.useState)("");
18562
+ const [statusMessage, setStatusMessage] = (0, import_react51.useState)(null);
18563
+ const [errorMessage, setErrorMessage] = (0, import_react51.useState)(null);
18564
+ const [waitingConfirm, setWaitingConfirm] = (0, import_react51.useState)(false);
18565
+ (0, import_react51.useEffect)(() => {
18500
18566
  if (!statusMessage) return;
18501
18567
  const t = setTimeout(() => setStatusMessage(null), 3e3);
18502
18568
  return () => clearTimeout(t);
18503
18569
  }, [statusMessage]);
18504
- (0, import_react50.useEffect)(() => {
18570
+ (0, import_react51.useEffect)(() => {
18505
18571
  if (!deviceId || !isWebSerialAvailable()) {
18506
18572
  setScreen({ step: "error", message: "WebSerial not available" });
18507
18573
  return;
@@ -18533,7 +18599,7 @@ function DeviceManageScreen() {
18533
18599
  guardianRef.current?.close();
18534
18600
  };
18535
18601
  }, [deviceId]);
18536
- const refreshList = (0, import_react50.useCallback)(async () => {
18602
+ const refreshList = (0, import_react51.useCallback)(async () => {
18537
18603
  const guardian = guardianRef.current;
18538
18604
  if (!guardian || screen.step !== "connected") return;
18539
18605
  try {
@@ -18542,7 +18608,7 @@ function DeviceManageScreen() {
18542
18608
  } catch {
18543
18609
  }
18544
18610
  }, [screen]);
18545
- const handleBackup = (0, import_react50.useCallback)(async () => {
18611
+ const handleBackup = (0, import_react51.useCallback)(async () => {
18546
18612
  const guardian = guardianRef.current;
18547
18613
  const iframe6 = getIframeManager();
18548
18614
  if (!guardian || !iframe6 || !userId) return;
@@ -18566,7 +18632,7 @@ function DeviceManageScreen() {
18566
18632
  setActionState(null);
18567
18633
  }
18568
18634
  }, [password, userId, refreshList]);
18569
- const handleOverwrite = (0, import_react50.useCallback)(async () => {
18635
+ const handleOverwrite = (0, import_react51.useCallback)(async () => {
18570
18636
  const guardian = guardianRef.current;
18571
18637
  const iframe6 = getIframeManager();
18572
18638
  if (!guardian || !iframe6 || !userId) return;
@@ -18586,7 +18652,7 @@ function DeviceManageScreen() {
18586
18652
  setActionState(null);
18587
18653
  }
18588
18654
  }, [password, userId, refreshList]);
18589
- const handleDelete = (0, import_react50.useCallback)(
18655
+ const handleDelete = (0, import_react51.useCallback)(
18590
18656
  async (keyshareId) => {
18591
18657
  const guardian = guardianRef.current;
18592
18658
  if (!guardian) return;
@@ -18773,12 +18839,12 @@ function DeviceManageScreen() {
18773
18839
  ] })
18774
18840
  ] });
18775
18841
  }
18776
- var import_lucide_react35, import_react50, import_jsx_runtime76;
18842
+ var import_lucide_react35, import_react51, import_jsx_runtime76;
18777
18843
  var init_DeviceManageScreen = __esm({
18778
18844
  "src/internal/components/DevicesMenu/DeviceManageScreen.tsx"() {
18779
18845
  init_SessionContext();
18780
18846
  import_lucide_react35 = require("lucide-react");
18781
- import_react50 = require("react");
18847
+ import_react51 = require("react");
18782
18848
  init_guardian_backup();
18783
18849
  init_useLayoutDataStore();
18784
18850
  init_iframe_manager();
@@ -18797,11 +18863,11 @@ function DeviceRestoreScreen() {
18797
18863
  const keyshareId = pageParams?.keyshareId;
18798
18864
  const deviceId = pageParams?.deviceId;
18799
18865
  const deviceName = pageParams?.deviceName;
18800
- const [password, setPassword] = (0, import_react51.useState)("");
18801
- const [isWorking, setIsWorking] = (0, import_react51.useState)(false);
18802
- const [statusMessage, setStatusMessage] = (0, import_react51.useState)(null);
18803
- const [errorMessage, setErrorMessage] = (0, import_react51.useState)(null);
18804
- const handleRestore = (0, import_react51.useCallback)(async () => {
18866
+ const [password, setPassword] = (0, import_react52.useState)("");
18867
+ const [isWorking, setIsWorking] = (0, import_react52.useState)(false);
18868
+ const [statusMessage, setStatusMessage] = (0, import_react52.useState)(null);
18869
+ const [errorMessage, setErrorMessage] = (0, import_react52.useState)(null);
18870
+ const handleRestore = (0, import_react52.useCallback)(async () => {
18805
18871
  if (!password || !keyshareId || !userId) return;
18806
18872
  const iframe6 = getIframeManager();
18807
18873
  if (!iframe6) {
@@ -18881,12 +18947,12 @@ function DeviceRestoreScreen() {
18881
18947
  errorMessage && /* @__PURE__ */ (0, import_jsx_runtime77.jsx)("div", { className: "text-sm text-[var(--ui-kit-bg-error)] p-2 text-center", children: errorMessage })
18882
18948
  ] });
18883
18949
  }
18884
- var import_lucide_react36, import_react51, import_jsx_runtime77;
18950
+ var import_lucide_react36, import_react52, import_jsx_runtime77;
18885
18951
  var init_DeviceRestoreScreen = __esm({
18886
18952
  "src/internal/components/DevicesMenu/DeviceRestoreScreen.tsx"() {
18887
18953
  init_SessionContext();
18888
18954
  import_lucide_react36 = require("lucide-react");
18889
- import_react51 = require("react");
18955
+ import_react52 = require("react");
18890
18956
  init_guardian_backup();
18891
18957
  init_useLayoutDataStore();
18892
18958
  init_iframe_manager();
@@ -18906,8 +18972,8 @@ function truncateAddress(address) {
18906
18972
  return `${address.slice(0, 6)}...${address.slice(-4)}`;
18907
18973
  }
18908
18974
  function DeviceRow({ device }) {
18909
- const [confirmingUnlink, setConfirmingUnlink] = (0, import_react52.useState)(false);
18910
- const [unlinkError, setUnlinkError] = (0, import_react52.useState)(null);
18975
+ const [confirmingUnlink, setConfirmingUnlink] = (0, import_react53.useState)(false);
18976
+ const [unlinkError, setUnlinkError] = (0, import_react53.useState)(null);
18911
18977
  const { mutate: unlink, isPending } = useUnlinkDevice();
18912
18978
  if (confirmingUnlink) {
18913
18979
  return /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)("div", { className: "flex flex-col gap-2 p-3 rounded-lg bg-[var(--ui-kit-bg)]", children: [
@@ -19008,11 +19074,11 @@ function DevicesMenu() {
19008
19074
  ] })
19009
19075
  ] });
19010
19076
  }
19011
- var import_lucide_react37, import_react52, import_jsx_runtime78;
19077
+ var import_lucide_react37, import_react53, import_jsx_runtime78;
19012
19078
  var init_DevicesMenu = __esm({
19013
19079
  "src/internal/components/DevicesMenu/DevicesMenu.tsx"() {
19014
19080
  import_lucide_react37 = require("lucide-react");
19015
- import_react52 = require("react");
19081
+ import_react53 = require("react");
19016
19082
  init_devices();
19017
19083
  init_guardian_backup();
19018
19084
  init_useLayoutDataStore();
@@ -19072,7 +19138,7 @@ function useOnRestoreSuccess() {
19072
19138
  setStatus
19073
19139
  } = useSession();
19074
19140
  const { setError, setSuccess } = useRestoreStore();
19075
- const createSessionWithKeyshare = (0, import_react53.useCallback)(
19141
+ const createSessionWithKeyshare = (0, import_react54.useCallback)(
19076
19142
  async (userId, hasServerKeyshare, isNewUser) => {
19077
19143
  try {
19078
19144
  try {
@@ -19113,7 +19179,7 @@ function useOnRestoreSuccess() {
19113
19179
  },
19114
19180
  [setStatus, usePaymaster, activeChainId, publicClient]
19115
19181
  );
19116
- const onRestoreSuccess = (0, import_react53.useCallback)(async () => {
19182
+ const onRestoreSuccess = (0, import_react54.useCallback)(async () => {
19117
19183
  const { verifyToken: verifyToken2, jwtTokenManager: jwtTokenManager4 } = await Promise.resolve().then(() => (init_auth(), auth_exports));
19118
19184
  const verify = await verifyToken2();
19119
19185
  const hasServerKeyshare = verify?.hasKeyshare ?? jwtTokenManager4.getHasKeyshare() ?? false;
@@ -19179,12 +19245,12 @@ function useOnRestoreSuccess() {
19179
19245
  ]);
19180
19246
  return { onRestoreSuccess };
19181
19247
  }
19182
- var import_react53;
19248
+ var import_react54;
19183
19249
  var init_useOnRestoreSuccess = __esm({
19184
19250
  "src/internal/components/KeyshareRestoreMenu/hooks/useOnRestoreSuccess.ts"() {
19185
19251
  init_ProviderContext();
19186
19252
  init_SessionContext();
19187
- import_react53 = require("react");
19253
+ import_react54 = require("react");
19188
19254
  init_useLayoutDataStore();
19189
19255
  init_useLayoutStore();
19190
19256
  init_useRestoreStore();
@@ -19447,7 +19513,7 @@ function useCreateBackup() {
19447
19513
  const usePasskey = useRestoreStore((st) => st.usePasskey);
19448
19514
  const restorePassword = useRestoreStore((st) => st.restorePassword);
19449
19515
  const selectedCloudProvider = useRestoreStore((st) => st.selectedCloudProvider);
19450
- (0, import_react54.useEffect)(() => {
19516
+ (0, import_react55.useEffect)(() => {
19451
19517
  if (!hasServerVault) {
19452
19518
  useRestoreStore.getState().setMethod("server");
19453
19519
  useLayoutStore.getState().setIsDialogForced(true);
@@ -19455,7 +19521,7 @@ function useCreateBackup() {
19455
19521
  }, [hasServerVault]);
19456
19522
  const recoveryUserId = useSession((st) => st.recoveryUserId);
19457
19523
  const passportUserId = session?.mpcUserId || recoveryUserId || "";
19458
- const onBackupSuccess = (0, import_react54.useCallback)((method) => {
19524
+ const onBackupSuccess = (0, import_react55.useCallback)((method) => {
19459
19525
  console.log(`[EMBARKAI BACKUP] ${method} backup created successfully`);
19460
19526
  if (method !== "server") return;
19461
19527
  const { setIsDialogForced } = useLayoutStore.getState();
@@ -19628,12 +19694,12 @@ function useCreateBackup() {
19628
19694
  createPasskey
19629
19695
  };
19630
19696
  }
19631
- var import_react_query27, import_react54;
19697
+ var import_react_query27, import_react55;
19632
19698
  var init_useCreateBackup = __esm({
19633
19699
  "src/internal/components/KeyshareRestoreMenu/hooks/useCreateBackup.ts"() {
19634
19700
  init_SessionContext();
19635
19701
  import_react_query27 = require("@tanstack/react-query");
19636
- import_react54 = require("react");
19702
+ import_react55 = require("react");
19637
19703
  init_auth();
19638
19704
  init_useLayoutDataStore();
19639
19705
  init_useLayoutStore();
@@ -19770,7 +19836,7 @@ function useValidateFileBackup() {
19770
19836
  const restoreFile = useRestoreStore((st) => st.restoreFile);
19771
19837
  const setError = useRestoreStore((st) => st.setError);
19772
19838
  const setUsePasskey = useRestoreStore((st) => st.setUsePasskey);
19773
- (0, import_react55.useEffect)(() => {
19839
+ (0, import_react56.useEffect)(() => {
19774
19840
  if (!restoreFile) {
19775
19841
  return;
19776
19842
  }
@@ -19791,10 +19857,10 @@ function useValidateFileBackup() {
19791
19857
  reader.readAsText(restoreFile);
19792
19858
  }, [restoreFile]);
19793
19859
  }
19794
- var import_react55;
19860
+ var import_react56;
19795
19861
  var init_useValidateFileBackup = __esm({
19796
19862
  "src/internal/components/KeyshareRestoreMenu/hooks/useValidateFileBackup.ts"() {
19797
- import_react55 = require("react");
19863
+ import_react56 = require("react");
19798
19864
  init_useRestoreStore();
19799
19865
  }
19800
19866
  });
@@ -19822,7 +19888,7 @@ function MethodSelector(props) {
19822
19888
  setError,
19823
19889
  setSuccess
19824
19890
  } = useRestoreStore();
19825
- const recoveryRenderMethods = (0, import_react56.useMemo)(() => {
19891
+ const recoveryRenderMethods = (0, import_react57.useMemo)(() => {
19826
19892
  const methodsWithBackupData = getRecoveryRenderMethods(mode).map((mt) => {
19827
19893
  let data = null;
19828
19894
  switch (true) {
@@ -19837,7 +19903,7 @@ function MethodSelector(props) {
19837
19903
  return methodsWithBackupData;
19838
19904
  }, [mode, serverRecoveryStatus]);
19839
19905
  if (!!selectedRecoveryMethod) return null;
19840
- return /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(import_react56.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
19906
+ return /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(import_react57.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
19841
19907
  "div",
19842
19908
  {
19843
19909
  style: { gridTemplateColumns: `repeat(${recoveryRenderMethods.length}, minmax(0, 1fr))` },
@@ -19871,12 +19937,12 @@ function MethodSelector(props) {
19871
19937
  }
19872
19938
  ) });
19873
19939
  }
19874
- var import_lucide_react38, import_react56, import_jsx_runtime79, getRecoveryRenderMethods;
19940
+ var import_lucide_react38, import_react57, import_jsx_runtime79, getRecoveryRenderMethods;
19875
19941
  var init_MethodSelector = __esm({
19876
19942
  "src/internal/components/KeyshareRestoreMenu/components/MethodSelector.tsx"() {
19877
19943
  init_useT();
19878
19944
  import_lucide_react38 = require("lucide-react");
19879
- import_react56 = require("react");
19945
+ import_react57 = require("react");
19880
19946
  init_icons();
19881
19947
  init_guardian_backup();
19882
19948
  init_button();
@@ -20012,7 +20078,7 @@ function PasswordPasskey(props) {
20012
20078
  onCreatePasskey
20013
20079
  } = props;
20014
20080
  const hasServerVault = useSession((st) => st.hasServerVault);
20015
- const actionRef = (0, import_react57.useRef)(null);
20081
+ const actionRef = (0, import_react58.useRef)(null);
20016
20082
  const {
20017
20083
  showPassword,
20018
20084
  restorePassword,
@@ -20026,7 +20092,7 @@ function PasswordPasskey(props) {
20026
20092
  } = useRestoreStore();
20027
20093
  const { config } = useProviderConfig();
20028
20094
  const isPasskeyEnabled = config.current.passkey.enabled;
20029
- (0, import_react57.useEffect)(() => {
20095
+ (0, import_react58.useEffect)(() => {
20030
20096
  if (!isPasskeyEnabled && usePasskey) setUsePasskey(false);
20031
20097
  }, [isPasskeyEnabled, usePasskey]);
20032
20098
  return /* @__PURE__ */ (0, import_jsx_runtime80.jsxs)(import_jsx_runtime80.Fragment, { children: [
@@ -20190,7 +20256,7 @@ function PasswordPasskey(props) {
20190
20256
  ] })
20191
20257
  ] });
20192
20258
  }
20193
- var import_lucide_react39, import_react57, import_jsx_runtime80;
20259
+ var import_lucide_react39, import_react58, import_jsx_runtime80;
20194
20260
  var init_PasswordPasskey = __esm({
20195
20261
  "src/internal/components/KeyshareRestoreMenu/components/PasswordPasskey.tsx"() {
20196
20262
  init_ProviderContext();
@@ -20198,7 +20264,7 @@ var init_PasswordPasskey = __esm({
20198
20264
  init_i18n();
20199
20265
  init_utils();
20200
20266
  import_lucide_react39 = require("lucide-react");
20201
- import_react57 = require("react");
20267
+ import_react58 = require("react");
20202
20268
  init_icons();
20203
20269
  init_Onboarding();
20204
20270
  init_button();
@@ -20375,7 +20441,7 @@ function Server(props) {
20375
20441
  const usePasskey = useRestoreStore((st) => st.usePasskey);
20376
20442
  const setUsePasskey = useRestoreStore((st) => st.setUsePasskey);
20377
20443
  const serverRecoveryStatus = qc.getQueryData([CHECK_BACKUP_QUERY_KEY, address]);
20378
- (0, import_react58.useEffect)(() => {
20444
+ (0, import_react59.useEffect)(() => {
20379
20445
  if (mode === "backup" || !serverRecoveryStatus?.created?.encryptionMethod) return;
20380
20446
  setUsePasskey(serverRecoveryStatus.created.encryptionMethod === "passkey");
20381
20447
  }, [mode, serverRecoveryStatus, setUsePasskey]);
@@ -20418,7 +20484,7 @@ function Server(props) {
20418
20484
  )
20419
20485
  ] });
20420
20486
  }
20421
- var import_react_query29, import_dayjs4, import_lucide_react42, import_react58, import_jsx_runtime83;
20487
+ var import_react_query29, import_dayjs4, import_lucide_react42, import_react59, import_jsx_runtime83;
20422
20488
  var init_Server = __esm({
20423
20489
  "src/internal/components/KeyshareRestoreMenu/methods/Server.tsx"() {
20424
20490
  init_SessionContext();
@@ -20427,7 +20493,7 @@ var init_Server = __esm({
20427
20493
  import_react_query29 = require("@tanstack/react-query");
20428
20494
  import_dayjs4 = __toESM(require("dayjs"), 1);
20429
20495
  import_lucide_react42 = require("lucide-react");
20430
- import_react58 = require("react");
20496
+ import_react59 = require("react");
20431
20497
  init_Onboarding();
20432
20498
  init_highlight();
20433
20499
  init_PasswordPasskey();
@@ -20591,7 +20657,7 @@ function Cloud2(props) {
20591
20657
  return availableProviders.map((p) => ({ id: p.id, name: p.name, available: p.isAvailable() }));
20592
20658
  }
20593
20659
  });
20594
- (0, import_react59.useEffect)(() => {
20660
+ (0, import_react60.useEffect)(() => {
20595
20661
  if (isCloudProvidersLoading) return;
20596
20662
  if (!!cloudProvidersError) {
20597
20663
  console.error("[KeyshareBackup] Failed to load cloud providers:", cloudProvidersError);
@@ -20655,13 +20721,13 @@ function Cloud2(props) {
20655
20721
  )
20656
20722
  ] });
20657
20723
  }
20658
- var import_react_query30, import_lucide_react44, import_react59, import_jsx_runtime85;
20724
+ var import_react_query30, import_lucide_react44, import_react60, import_jsx_runtime85;
20659
20725
  var init_Cloud = __esm({
20660
20726
  "src/internal/components/KeyshareRestoreMenu/methods/Cloud.tsx"() {
20661
20727
  init_SessionContext();
20662
20728
  import_react_query30 = require("@tanstack/react-query");
20663
20729
  import_lucide_react44 = require("lucide-react");
20664
- import_react59 = require("react");
20730
+ import_react60 = require("react");
20665
20731
  init_button();
20666
20732
  init_select();
20667
20733
  init_PasswordPasskey();
@@ -20678,8 +20744,8 @@ function Guardian(props) {
20678
20744
  const session = useSession((st) => st.session);
20679
20745
  const recoveryUserId = useSession((st) => st.recoveryUserId);
20680
20746
  const { onRestoreSuccess } = useOnRestoreSuccess();
20681
- const [isWorking, setIsWorking] = (0, import_react60.useState)(false);
20682
- const [step, setStep] = (0, import_react60.useState)("idle");
20747
+ const [isWorking, setIsWorking] = (0, import_react61.useState)(false);
20748
+ const [step, setStep] = (0, import_react61.useState)("idle");
20683
20749
  const handleGuardianBackup = async () => {
20684
20750
  if (!restorePassword) {
20685
20751
  setError("Please enter a password");
@@ -20808,11 +20874,11 @@ function Guardian(props) {
20808
20874
  ] })
20809
20875
  ] });
20810
20876
  }
20811
- var import_react60, import_lucide_react45, import_jsx_runtime86;
20877
+ var import_react61, import_lucide_react45, import_jsx_runtime86;
20812
20878
  var init_Guardian = __esm({
20813
20879
  "src/internal/components/KeyshareRestoreMenu/methods/Guardian.tsx"() {
20814
20880
  init_SessionContext();
20815
- import_react60 = require("react");
20881
+ import_react61 = require("react");
20816
20882
  import_lucide_react45 = require("lucide-react");
20817
20883
  init_iframe_manager();
20818
20884
  init_guardian_backup();
@@ -20835,16 +20901,16 @@ var init_methods = __esm({
20835
20901
  });
20836
20902
 
20837
20903
  // src/internal/components/KeyshareRestoreMenu/KeyshareRestoreMenu.tsx
20838
- var import_react_query31, import_lucide_react46, import_react61, import_wagmi5, import_jsx_runtime87, RESTORE_COMPONENTS, KeyshareRestoreMenu;
20904
+ var import_react_query31, import_lucide_react46, import_react62, import_jsx_runtime87, RESTORE_COMPONENTS, KeyshareRestoreMenu;
20839
20905
  var init_KeyshareRestoreMenu = __esm({
20840
20906
  "src/internal/components/KeyshareRestoreMenu/KeyshareRestoreMenu.tsx"() {
20841
20907
  init_ProviderContext();
20842
20908
  init_SessionContext();
20843
20909
  init_i18n();
20910
+ init_useSafeDisconnect();
20844
20911
  import_react_query31 = require("@tanstack/react-query");
20845
20912
  import_lucide_react46 = require("lucide-react");
20846
- import_react61 = require("react");
20847
- import_wagmi5 = require("wagmi");
20913
+ import_react62 = require("react");
20848
20914
  init_useLayoutDataStore();
20849
20915
  init_useLayoutStore();
20850
20916
  init_useExternalWalletStore();
@@ -20873,7 +20939,7 @@ var init_KeyshareRestoreMenu = __esm({
20873
20939
  const error = useRestoreStore((st) => st.error);
20874
20940
  const success = useRestoreStore((st) => st.success);
20875
20941
  const currentRestoreMethod = useRestoreStore((st) => st.method);
20876
- (0, import_react61.useEffect)(() => {
20942
+ (0, import_react62.useEffect)(() => {
20877
20943
  const { setIsDialogForced } = useLayoutStore.getState();
20878
20944
  const { setRestorePassword, setRestoreFile, setShowPassword, setUsePasskey, setMethod } = useRestoreStore.getState();
20879
20945
  setIsDialogForced(true);
@@ -20886,7 +20952,7 @@ var init_KeyshareRestoreMenu = __esm({
20886
20952
  setIsDialogForced(false);
20887
20953
  };
20888
20954
  }, []);
20889
- const { mutate: wagmiDisconnect } = (0, import_wagmi5.useDisconnect)({
20955
+ const { mutate: wagmiDisconnect } = useSafeDisconnect({
20890
20956
  mutation: {
20891
20957
  onSuccess: () => {
20892
20958
  useExternalWalletStore.getState().clearExternalWallet();
@@ -20912,7 +20978,7 @@ var init_KeyshareRestoreMenu = __esm({
20912
20978
  queryFn: async () => await getShareRecoveryStats()
20913
20979
  });
20914
20980
  const hasServerBackup = serverRecoveryStatus?.created || serverRecoveryStatus?.devices?.length > 0;
20915
- (0, import_react61.useEffect)(() => {
20981
+ (0, import_react62.useEffect)(() => {
20916
20982
  if (!!hasServerBackup) useRestoreStore.getState().setMethod("server");
20917
20983
  }, [hasServerBackup]);
20918
20984
  const { mutate: disconnect, isPending: isDisconnecting } = (0, import_react_query31.useMutation)({
@@ -21059,7 +21125,7 @@ function KeyshareBackupMenu() {
21059
21125
  const usePasskey = useRestoreStore((st) => st.usePasskey);
21060
21126
  const error = useRestoreStore((st) => st.error);
21061
21127
  const success = useRestoreStore((st) => st.success);
21062
- (0, import_react62.useEffect)(() => {
21128
+ (0, import_react63.useEffect)(() => {
21063
21129
  const { setSuccess, setError, setRestorePassword, setRestoreFile, setShowPassword, setUsePasskey, setMethod } = useRestoreStore.getState();
21064
21130
  return () => {
21065
21131
  setSuccess(null);
@@ -21079,7 +21145,7 @@ function KeyshareBackupMenu() {
21079
21145
  });
21080
21146
  useOnboardingTourAvailable(!isRecoveryLoading && currentBackupMethod === "server" && !usePasskey);
21081
21147
  const hasRecoveryData2 = serverRecoveryStatus?.created || serverRecoveryStatus?.devices?.length > 0;
21082
- (0, import_react62.useEffect)(() => {
21148
+ (0, import_react63.useEffect)(() => {
21083
21149
  if (!!hasRecoveryData2) useRestoreStore.getState().setMethod("server");
21084
21150
  }, [hasRecoveryData2]);
21085
21151
  const {
@@ -21198,14 +21264,14 @@ function KeyshareBackupMenu() {
21198
21264
  ] })
21199
21265
  ] });
21200
21266
  }
21201
- var import_react_query32, import_lucide_react47, import_react62, import_jsx_runtime88, COMPONENTS;
21267
+ var import_react_query32, import_lucide_react47, import_react63, import_jsx_runtime88, COMPONENTS;
21202
21268
  var init_KeyshareBackupMenu = __esm({
21203
21269
  "src/internal/components/KeyshareRestoreMenu/KeyshareBackupMenu.tsx"() {
21204
21270
  init_SessionContext();
21205
21271
  init_i18n();
21206
21272
  import_react_query32 = require("@tanstack/react-query");
21207
21273
  import_lucide_react47 = require("lucide-react");
21208
- import_react62 = require("react");
21274
+ import_react63 = require("react");
21209
21275
  init_useLayoutDataStore();
21210
21276
  init_vaultClient();
21211
21277
  init_Expandable2();
@@ -21333,13 +21399,13 @@ var init_SumsubIframeManager = __esm({
21333
21399
  function useSumsubIframe({ iframeUrl }) {
21334
21400
  const config = useProviderConfig().config;
21335
21401
  const { colorMode } = useColorMode();
21336
- const iframeRef = (0, import_react63.useRef)(null);
21337
- const [isLoading, setIsLoading] = (0, import_react63.useState)(true);
21338
- const [error, setError] = (0, import_react63.useState)(null);
21339
- const [height, setHeight] = (0, import_react63.useState)(0);
21340
- const [status, setStatus] = (0, import_react63.useState)("");
21402
+ const iframeRef = (0, import_react64.useRef)(null);
21403
+ const [isLoading, setIsLoading] = (0, import_react64.useState)(true);
21404
+ const [error, setError] = (0, import_react64.useState)(null);
21405
+ const [height, setHeight] = (0, import_react64.useState)(0);
21406
+ const [status, setStatus] = (0, import_react64.useState)("");
21341
21407
  const levelName = config.current?.kyc?.options?.levelName;
21342
- (0, import_react63.useEffect)(() => {
21408
+ (0, import_react64.useEffect)(() => {
21343
21409
  setError(null);
21344
21410
  setIsLoading(true);
21345
21411
  setStatus("Preparing verification...");
@@ -21380,12 +21446,12 @@ function useSumsubIframe({ iframeUrl }) {
21380
21446
  status
21381
21447
  };
21382
21448
  }
21383
- var import_react63;
21449
+ var import_react64;
21384
21450
  var init_useSumsubIframe = __esm({
21385
21451
  "src/internal/components/KYC/useSumsubIframe.ts"() {
21386
21452
  init_ProviderContext();
21387
21453
  init_useColorMode();
21388
- import_react63 = require("react");
21454
+ import_react64 = require("react");
21389
21455
  init_sumsub();
21390
21456
  init_SumsubIframeManager();
21391
21457
  }
@@ -21593,11 +21659,11 @@ function useResolvedPublicClient(chainId, logScope = "useResolvedPublicClient")
21593
21659
  const activeChainConfig = useSession((st) => st.chainConfig);
21594
21660
  const resolvedChainId = chainId ?? activeChainId;
21595
21661
  const shouldUseActiveClient = !chainId || chainId === activeChainId;
21596
- const chainConfig = (0, import_react64.useMemo)(() => {
21662
+ const chainConfig = (0, import_react65.useMemo)(() => {
21597
21663
  if (shouldUseActiveClient) return activeChainConfig;
21598
21664
  return (0, import_read16.getChainConfig)(chainId);
21599
21665
  }, [activeChainConfig, chainId, shouldUseActiveClient]);
21600
- const publicClient = (0, import_react64.useMemo)(() => {
21666
+ const publicClient = (0, import_react65.useMemo)(() => {
21601
21667
  if (shouldUseActiveClient) return activePublicClient;
21602
21668
  if (!chainId) return activePublicClient;
21603
21669
  try {
@@ -21614,12 +21680,12 @@ function useResolvedPublicClient(chainId, logScope = "useResolvedPublicClient")
21614
21680
  resolvedChainId
21615
21681
  };
21616
21682
  }
21617
- var import_read16, import_react64, publicClientByChainId;
21683
+ var import_read16, import_react65, publicClientByChainId;
21618
21684
  var init_useResolvedPublicClient = __esm({
21619
21685
  "src/internal/hooks/useResolvedPublicClient.ts"() {
21620
21686
  init_SessionContext();
21621
21687
  import_read16 = require("@embarkai/core/read");
21622
- import_react64 = require("react");
21688
+ import_react65 = require("react");
21623
21689
  publicClientByChainId = /* @__PURE__ */ new Map();
21624
21690
  }
21625
21691
  });
@@ -21683,7 +21749,7 @@ var init_useNativeBalance = __esm({
21683
21749
  function useWatchTokens(options) {
21684
21750
  const { address, chainId, enabled, publicClient } = options;
21685
21751
  const { config } = useProviderConfig();
21686
- const watchTokens = (0, import_react65.useMemo)(() => {
21752
+ const watchTokens = (0, import_react66.useMemo)(() => {
21687
21753
  const allWatchTokens = config.current.watchTokens;
21688
21754
  const tokensForChain = chainId ? allWatchTokens?.[chainId] || [] : [];
21689
21755
  return tokensForChain;
@@ -21751,12 +21817,12 @@ function useWatchTokens(options) {
21751
21817
  }
21752
21818
  });
21753
21819
  }
21754
- var import_react_query35, import_react65, import_viem8;
21820
+ var import_react_query35, import_react66, import_viem8;
21755
21821
  var init_useWatchTokens = __esm({
21756
21822
  "src/internal/hooks/useBlockscoutAssets/useWatchTokens.ts"() {
21757
21823
  init_ProviderContext();
21758
21824
  import_react_query35 = require("@tanstack/react-query");
21759
- import_react65 = require("react");
21825
+ import_react66 = require("react");
21760
21826
  import_viem8 = require("viem");
21761
21827
  init_constants6();
21762
21828
  }
@@ -21905,11 +21971,11 @@ function useBlockscoutAssets(options) {
21905
21971
  tokenBalancesQueryKey: customTokenBalancesQueryKey
21906
21972
  } = useProviderConfig().config?.current?.portfolio || {};
21907
21973
  const blockscoutApiUrl = getBlockscoutApiUrl(chainConfig);
21908
- const blockscoutClient = (0, import_react66.useMemo)(
21974
+ const blockscoutClient = (0, import_react67.useMemo)(
21909
21975
  () => blockscoutApiUrl ? (0, import_core4.createBlockscoutClient)({ baseUrl: blockscoutApiUrl }) : null,
21910
21976
  [blockscoutApiUrl]
21911
21977
  );
21912
- const lastRefreshRef = (0, import_react66.useRef)(0);
21978
+ const lastRefreshRef = (0, import_react67.useRef)(0);
21913
21979
  const {
21914
21980
  data: watchTokenAssets = [],
21915
21981
  isLoading: watchTokensLoading,
@@ -21981,7 +22047,7 @@ function useBlockscoutAssets(options) {
21981
22047
  queryKey: [BLOCKSCOUT_QUERY_KEY, "nfts", resolvedChainId, blockscoutApiUrl, address],
21982
22048
  queryFn: () => blockscoutClient.getNfts(address)
21983
22049
  });
21984
- const erc20TokenAddresses = (0, import_react66.useMemo)(() => {
22050
+ const erc20TokenAddresses = (0, import_react67.useMemo)(() => {
21985
22051
  if (!blockscoutItems) return [];
21986
22052
  return blockscoutItems.filter((tb) => tb.token.type === "ERC-20").map((tb) => tb.token.address_hash);
21987
22053
  }, [blockscoutItems]);
@@ -22026,7 +22092,7 @@ function useBlockscoutAssets(options) {
22026
22092
  // 1 minute
22027
22093
  // gcTime: BLOCKSCOUT_QUERY_GC_TIME,
22028
22094
  });
22029
- const assets = (0, import_react66.useMemo)(() => {
22095
+ const assets = (0, import_react67.useMemo)(() => {
22030
22096
  const result = [];
22031
22097
  const addedAddresses = /* @__PURE__ */ new Set();
22032
22098
  if (nativeBalanceData) {
@@ -22120,7 +22186,7 @@ function useBlockscoutAssets(options) {
22120
22186
  watchTokenAssets,
22121
22187
  chainConfig
22122
22188
  ]);
22123
- const nativeBalance = (0, import_react66.useMemo)(() => {
22189
+ const nativeBalance = (0, import_react67.useMemo)(() => {
22124
22190
  if (!nativeBalanceData) return null;
22125
22191
  return {
22126
22192
  value: nativeBalanceData.value,
@@ -22128,11 +22194,11 @@ function useBlockscoutAssets(options) {
22128
22194
  symbol: nativeBalanceData.symbol
22129
22195
  };
22130
22196
  }, [nativeBalanceData]);
22131
- const error = (0, import_react66.useMemo)(() => {
22197
+ const error = (0, import_react67.useMemo)(() => {
22132
22198
  if (!blockscoutError) return null;
22133
22199
  return createError(blockscoutError);
22134
22200
  }, [blockscoutError]);
22135
- const refreshBalances = (0, import_react66.useCallback)(async () => {
22201
+ const refreshBalances = (0, import_react67.useCallback)(async () => {
22136
22202
  const now = Date.now();
22137
22203
  if (now - lastRefreshRef.current < BLOCKSCOUT_REFRESH_DEBOUNCE) {
22138
22204
  return;
@@ -22148,7 +22214,7 @@ function useBlockscoutAssets(options) {
22148
22214
  qc.invalidateQueries({ queryKey: [WATCH_TOKENS_QUERY_KEY] })
22149
22215
  ]);
22150
22216
  }, [qc, customTokenBalancesQueryKey]);
22151
- const getTokenBalance = (0, import_react66.useCallback)(
22217
+ const getTokenBalance = (0, import_react67.useCallback)(
22152
22218
  (tokenAddress) => {
22153
22219
  return assets.find((a) => a.address?.toLowerCase() === tokenAddress.toLowerCase()) || null;
22154
22220
  },
@@ -22167,13 +22233,13 @@ function useBlockscoutAssets(options) {
22167
22233
  lastUpdated: dataUpdatedAt || null
22168
22234
  };
22169
22235
  }
22170
- var import_core4, import_react_query36, import_react66;
22236
+ var import_core4, import_react_query36, import_react67;
22171
22237
  var init_useBlockscoutAssets = __esm({
22172
22238
  "src/internal/hooks/useBlockscoutAssets/useBlockscoutAssets.ts"() {
22173
22239
  init_ProviderContext();
22174
22240
  import_core4 = require("@embarkai/core");
22175
22241
  import_react_query36 = require("@tanstack/react-query");
22176
- import_react66 = require("react");
22242
+ import_react67 = require("react");
22177
22243
  init_initial();
22178
22244
  init_constants();
22179
22245
  init_useResolvedPublicClient();
@@ -22293,9 +22359,9 @@ function SecurityTokenBadge() {
22293
22359
  }
22294
22360
  function PortfolioItemImage(props) {
22295
22361
  const { asset } = props;
22296
- const [logoError, setLogoError] = (0, import_react67.useState)(false);
22297
- const [nftImageError, setNftImageError] = (0, import_react67.useState)(false);
22298
- const resolvedImage = (0, import_react67.useMemo)(() => {
22362
+ const [logoError, setLogoError] = (0, import_react68.useState)(false);
22363
+ const [nftImageError, setNftImageError] = (0, import_react68.useState)(false);
22364
+ const resolvedImage = (0, import_react68.useMemo)(() => {
22299
22365
  const isNft = isNftAsset(asset);
22300
22366
  const nftImage = getNftImage(asset);
22301
22367
  const isSecurity = isSecurityToken(asset);
@@ -22450,13 +22516,13 @@ function PortfolioItem(props) {
22450
22516
  }
22451
22517
  );
22452
22518
  }
22453
- var import_react_query37, import_lucide_react51, import_react67, import_viem11, import_jsx_runtime94, PORTFOLIO_ASSET_RATE_QUERY_KEY;
22519
+ var import_react_query37, import_lucide_react51, import_react68, import_viem11, import_jsx_runtime94, PORTFOLIO_ASSET_RATE_QUERY_KEY;
22454
22520
  var init_PortfolioItem = __esm({
22455
22521
  "src/internal/components/PortfolioMenu/PortfolioItem.tsx"() {
22456
22522
  init_ProviderContext();
22457
22523
  import_react_query37 = require("@tanstack/react-query");
22458
22524
  import_lucide_react51 = require("lucide-react");
22459
- import_react67 = require("react");
22525
+ import_react68 = require("react");
22460
22526
  import_viem11 = require("viem");
22461
22527
  init_tokens();
22462
22528
  init_base3();
@@ -22488,7 +22554,7 @@ function PortfolioMenu() {
22488
22554
  enabled: !!address
22489
22555
  });
22490
22556
  const shownProjectAssets = projectAssets.filter((asset) => !asset.hideInPortfolio);
22491
- const refreshAllAssetsBalances = (0, import_react68.useCallback)(() => {
22557
+ const refreshAllAssetsBalances = (0, import_react69.useCallback)(() => {
22492
22558
  Promise.all(shownProjectAssets.map((asset) => qc.invalidateQueries({ queryKey: asset.balanceQueryKey })));
22493
22559
  refreshBlockscoutBalances();
22494
22560
  }, [qc, shownProjectAssets, refreshBlockscoutBalances]);
@@ -22534,7 +22600,7 @@ function PortfolioMenu() {
22534
22600
  blockscoutError && /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(Highlight, { type: "error", children: blockscoutError?.message })
22535
22601
  ] });
22536
22602
  }
22537
- var import_react_query38, import_lucide_react52, import_react68, import_jsx_runtime95;
22603
+ var import_react_query38, import_lucide_react52, import_react69, import_jsx_runtime95;
22538
22604
  var init_PortfolioMenu = __esm({
22539
22605
  "src/internal/components/PortfolioMenu/PortfolioMenu.tsx"() {
22540
22606
  init_ProviderContext();
@@ -22542,7 +22608,7 @@ var init_PortfolioMenu = __esm({
22542
22608
  init_i18n();
22543
22609
  import_react_query38 = require("@tanstack/react-query");
22544
22610
  import_lucide_react52 = require("lucide-react");
22545
- import_react68 = require("react");
22611
+ import_react69 = require("react");
22546
22612
  init_useBlockscoutAssets2();
22547
22613
  init_useLayoutDataStore();
22548
22614
  init_Expandable2();
@@ -22853,7 +22919,7 @@ var init_useNicknameStore = __esm({
22853
22919
  function useNicknameAvailability(currentNickname) {
22854
22920
  const { t } = useT();
22855
22921
  const nicknameValue = useNicknameStore((st) => st.nicknameValue);
22856
- (0, import_react69.useEffect)(() => {
22922
+ (0, import_react70.useEffect)(() => {
22857
22923
  if (!currentNickname) return;
22858
22924
  useNicknameStore.getState().setNicknameValue(currentNickname);
22859
22925
  }, [currentNickname]);
@@ -22874,8 +22940,8 @@ function useNicknameAvailability(currentNickname) {
22874
22940
  useNicknameStore.getState().setError(error?.message || "Failed to check nickname availability");
22875
22941
  }
22876
22942
  });
22877
- const debouncedCheckAvailability = (0, import_react69.useCallback)((0, import_lodash_es14.debounce)(checkAvailability, DEBOUNCE_MS), [checkAvailability]);
22878
- (0, import_react69.useEffect)(() => {
22943
+ const debouncedCheckAvailability = (0, import_react70.useCallback)((0, import_lodash_es14.debounce)(checkAvailability, DEBOUNCE_MS), [checkAvailability]);
22944
+ (0, import_react70.useEffect)(() => {
22879
22945
  if (!currentNickname) return;
22880
22946
  const normalizedInputValue = normalizeNickname(nicknameValue);
22881
22947
  const { valid: isNicknameValid } = validateNickname(nicknameValue);
@@ -22889,13 +22955,13 @@ function useNicknameAvailability(currentNickname) {
22889
22955
  }, [nicknameValue, currentNickname, debouncedCheckAvailability]);
22890
22956
  return { isCheckingAvailability };
22891
22957
  }
22892
- var import_react_query39, import_lodash_es14, import_react69, DEBOUNCE_MS;
22958
+ var import_react_query39, import_lodash_es14, import_react70, DEBOUNCE_MS;
22893
22959
  var init_useNicknameAvailability = __esm({
22894
22960
  "src/internal/components/NicknameMenu/useNicknameAvailability.ts"() {
22895
22961
  init_i18n();
22896
22962
  import_react_query39 = require("@tanstack/react-query");
22897
22963
  import_lodash_es14 = require("lodash-es");
22898
- import_react69 = require("react");
22964
+ import_react70 = require("react");
22899
22965
  init_nickname();
22900
22966
  init_nickname_errors();
22901
22967
  init_nickname_validation();
@@ -22916,9 +22982,9 @@ function NicknameEditForm(props) {
22916
22982
  const nicknameValue = useNicknameStore((st) => st.nicknameValue);
22917
22983
  const nicknameAvailability = useNicknameStore((st) => st.availability);
22918
22984
  const { isCheckingAvailability } = useNicknameAvailability(nicknameInfo ? nicknameInfo.handle : "");
22919
- const [isNicknameCopied, setIsNicknameCopied] = (0, import_react70.useState)(false);
22920
- const exitTimerRef = (0, import_react70.useRef)(null);
22921
- (0, import_react70.useEffect)(() => () => {
22985
+ const [isNicknameCopied, setIsNicknameCopied] = (0, import_react71.useState)(false);
22986
+ const exitTimerRef = (0, import_react71.useRef)(null);
22987
+ (0, import_react71.useEffect)(() => () => {
22922
22988
  if (exitTimerRef.current) clearTimeout(exitTimerRef.current);
22923
22989
  }, []);
22924
22990
  const { mutate: changeNickname2, isPending: isNicknameChanging } = (0, import_react_query40.useMutation)({
@@ -22952,7 +23018,7 @@ function NicknameEditForm(props) {
22952
23018
  );
22953
23019
  }
22954
23020
  });
22955
- const handleNicknameInputChange = (0, import_react70.useCallback)(
23021
+ const handleNicknameInputChange = (0, import_react71.useCallback)(
22956
23022
  (e) => {
22957
23023
  const { error, setError, setNicknameValue } = useNicknameStore.getState();
22958
23024
  const nextInputValue = e.target.value;
@@ -22966,7 +23032,7 @@ function NicknameEditForm(props) {
22966
23032
  },
22967
23033
  [t]
22968
23034
  );
22969
- const handleSubmit = (0, import_react70.useCallback)(
23035
+ const handleSubmit = (0, import_react71.useCallback)(
22970
23036
  (e) => {
22971
23037
  const { nicknameValue: nicknameValue2, setError } = useNicknameStore.getState();
22972
23038
  if (!canChange) {
@@ -23058,7 +23124,7 @@ function NicknameEditForm(props) {
23058
23124
  !!canChange && /* @__PURE__ */ (0, import_jsx_runtime98.jsx)("span", { className: "w-full flex items-center leadding-4 text-[10px] text-[var(--ui-kit-fg-muted)]", children: t("passport:nicknameMenu.hint") })
23059
23125
  ] });
23060
23126
  }
23061
- var import_react_query40, import_lucide_react55, import_react70, import_jsx_runtime98;
23127
+ var import_react_query40, import_lucide_react55, import_react71, import_jsx_runtime98;
23062
23128
  var init_NicknameEditForm = __esm({
23063
23129
  "src/internal/components/NicknameMenu/NicknameEditForm.tsx"() {
23064
23130
  init_ProviderContext();
@@ -23066,7 +23132,7 @@ var init_NicknameEditForm = __esm({
23066
23132
  init_i18n();
23067
23133
  import_react_query40 = require("@tanstack/react-query");
23068
23134
  import_lucide_react55 = require("lucide-react");
23069
- import_react70 = require("react");
23135
+ import_react71 = require("react");
23070
23136
  init_icons();
23071
23137
  init_nickname();
23072
23138
  init_profile();
@@ -23102,7 +23168,7 @@ function NicknameMenu() {
23102
23168
  queryFn: async () => await getNicknameInfo()
23103
23169
  });
23104
23170
  const resolvedError = nicknameError || nicknameInfoError?.message || null;
23105
- (0, import_react71.useEffect)(() => () => useNicknameStore.getState().reset(), []);
23171
+ (0, import_react72.useEffect)(() => () => useNicknameStore.getState().reset(), []);
23106
23172
  return /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(Expandable, { isExpanded: true, contentClassName: "w-full flex flex-col gap-[var(--ui-kit-gap)]", children: [
23107
23173
  /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "flex items-center gap-[var(--ui-kit-gap)] ", children: [
23108
23174
  /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
@@ -23169,7 +23235,7 @@ function NicknameMenu() {
23169
23235
  !!resolvedError?.length && /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Highlight, { type: "error", children: resolvedError })
23170
23236
  ] });
23171
23237
  }
23172
- var import_react_query41, import_dayjs5, import_lucide_react56, import_react71, import_jsx_runtime99;
23238
+ var import_react_query41, import_dayjs5, import_lucide_react56, import_react72, import_jsx_runtime99;
23173
23239
  var init_NicknameMenu = __esm({
23174
23240
  "src/internal/components/NicknameMenu/NicknameMenu.tsx"() {
23175
23241
  init_SessionContext();
@@ -23178,7 +23244,7 @@ var init_NicknameMenu = __esm({
23178
23244
  import_react_query41 = require("@tanstack/react-query");
23179
23245
  import_dayjs5 = __toESM(require("dayjs"), 1);
23180
23246
  import_lucide_react56 = require("lucide-react");
23181
- import_react71 = require("react");
23247
+ import_react72 = require("react");
23182
23248
  init_nickname();
23183
23249
  init_profile();
23184
23250
  init_useLayoutDataStore();
@@ -23308,12 +23374,12 @@ function ReceiveMenu() {
23308
23374
  queryKey: [QUERY_KEYS.nicknameInfo, address],
23309
23375
  queryFn: async () => await getNicknameInfo()
23310
23376
  });
23311
- const [qrCodeUrl, setQrCodeUrl] = (0, import_react72.useState)("");
23312
- const [isAddressCopied, setAddressCopied] = (0, import_react72.useState)(false);
23313
- const [isNicknameCopied, setNicknameCopied] = (0, import_react72.useState)(false);
23314
- const [fingerprintCopied, setFingerprintCopied] = (0, import_react72.useState)(false);
23377
+ const [qrCodeUrl, setQrCodeUrl] = (0, import_react73.useState)("");
23378
+ const [isAddressCopied, setAddressCopied] = (0, import_react73.useState)(false);
23379
+ const [isNicknameCopied, setNicknameCopied] = (0, import_react73.useState)(false);
23380
+ const [fingerprintCopied, setFingerprintCopied] = (0, import_react73.useState)(false);
23315
23381
  useOnboardingTourAvailable(true);
23316
- const fingerprint = (0, import_react72.useMemo)(() => {
23382
+ const fingerprint = (0, import_react73.useMemo)(() => {
23317
23383
  if (!session?.ownerAddress) return null;
23318
23384
  try {
23319
23385
  return generateFingerprint(session.ownerAddress);
@@ -23321,7 +23387,7 @@ function ReceiveMenu() {
23321
23387
  return null;
23322
23388
  }
23323
23389
  }, [session?.ownerAddress]);
23324
- (0, import_react72.useEffect)(() => {
23390
+ (0, import_react73.useEffect)(() => {
23325
23391
  if (!address) return;
23326
23392
  import_qrcode.default.toDataURL(address, {
23327
23393
  width: 200,
@@ -23420,7 +23486,7 @@ function ReceiveMenu() {
23420
23486
  ] })
23421
23487
  ] });
23422
23488
  }
23423
- var import_react_query42, import_lucide_react57, import_qrcode, import_react72, import_jsx_runtime100;
23489
+ var import_react_query42, import_lucide_react57, import_qrcode, import_react73, import_jsx_runtime100;
23424
23490
  var init_ReceiveMenu = __esm({
23425
23491
  "src/internal/components/ReceiveMenu/ReceiveMenu.tsx"() {
23426
23492
  init_SessionContext();
@@ -23428,7 +23494,7 @@ var init_ReceiveMenu = __esm({
23428
23494
  import_react_query42 = require("@tanstack/react-query");
23429
23495
  import_lucide_react57 = require("lucide-react");
23430
23496
  import_qrcode = __toESM(require("qrcode"), 1);
23431
- import_react72 = require("react");
23497
+ import_react73 = require("react");
23432
23498
  init_nickname();
23433
23499
  init_profile();
23434
23500
  init_useLayoutDataStore();
@@ -23808,14 +23874,14 @@ var init_ConnectedApps2 = __esm({
23808
23874
  });
23809
23875
 
23810
23876
  // src/internal/components/SecurityMenu/Keyshare/KeyshareStatus.tsx
23811
- var import_lucide_react60, import_react73, import_jsx_runtime103, KeyshareStatus;
23877
+ var import_lucide_react60, import_react74, import_jsx_runtime103, KeyshareStatus;
23812
23878
  var init_KeyshareStatus = __esm({
23813
23879
  "src/internal/components/SecurityMenu/Keyshare/KeyshareStatus.tsx"() {
23814
23880
  import_lucide_react60 = require("lucide-react");
23815
- import_react73 = require("react");
23881
+ import_react74 = require("react");
23816
23882
  init_utils();
23817
23883
  import_jsx_runtime103 = require("react/jsx-runtime");
23818
- KeyshareStatus = (0, import_react73.forwardRef)((props, ref) => {
23884
+ KeyshareStatus = (0, import_react74.forwardRef)((props, ref) => {
23819
23885
  const { isLoading, content, icon: Icon2, children } = props;
23820
23886
  if (isLoading) return /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(import_lucide_react60.Loader, { className: "w-4 h-4 animate-spin" });
23821
23887
  return /* @__PURE__ */ (0, import_jsx_runtime103.jsxs)("div", { ref, className: "group relative w-full h-full", children: [
@@ -24142,10 +24208,10 @@ function updateLimits(patch) {
24142
24208
  usePolicyForm.setState((st) => ({ ...st, limits: { ...st?.limits, ...patch } }));
24143
24209
  }
24144
24210
  function useWatchFormData() {
24145
- const [showFormErrors, setShowFormErrors] = (0, import_react74.useState)(false);
24211
+ const [showFormErrors, setShowFormErrors] = (0, import_react75.useState)(false);
24146
24212
  const formData = usePolicyForm();
24147
24213
  const formState = usePolicyFormValidation();
24148
- (0, import_react74.useEffect)(() => {
24214
+ (0, import_react75.useEffect)(() => {
24149
24215
  if (!formData) return;
24150
24216
  setShowFormErrors(false);
24151
24217
  const errors = {};
@@ -24172,7 +24238,7 @@ function useWatchFormData() {
24172
24238
  }
24173
24239
  usePolicyFormValidation.setState(errors, true);
24174
24240
  }, [formData]);
24175
- (0, import_react74.useEffect)(() => () => usePolicyFormValidation.setState({}, true), []);
24241
+ (0, import_react75.useEffect)(() => () => usePolicyFormValidation.setState({}, true), []);
24176
24242
  const formErrorItem = Object.entries(formState).find(([_, value]) => value?.error);
24177
24243
  const formErrorMessage = formErrorItem ? `${formErrorItem[0].toUpperCase()}: ${formErrorItem[1]?.error}` : "";
24178
24244
  return {
@@ -24183,10 +24249,10 @@ function useWatchFormData() {
24183
24249
  setShowFormErrors
24184
24250
  };
24185
24251
  }
24186
- var import_react74, import_zustand14, usePolicyForm, usePolicyFormValidation;
24252
+ var import_react75, import_zustand14, usePolicyForm, usePolicyFormValidation;
24187
24253
  var init_usePolicyForm = __esm({
24188
24254
  "src/internal/components/SecurityMenu/UserPolicies/usePolicyForm.ts"() {
24189
- import_react74 = require("react");
24255
+ import_react75 = require("react");
24190
24256
  import_zustand14 = require("zustand");
24191
24257
  init_utils10();
24192
24258
  usePolicyForm = (0, import_zustand14.create)(() => null);
@@ -24217,10 +24283,10 @@ var init_useUserAssetsPolicies = __esm({
24217
24283
  // src/internal/components/SecurityMenu/UserPolicies/PolicyForm.tsx
24218
24284
  function AddressListEditor(props) {
24219
24285
  const { label, assets = [], addresses, onChange } = props;
24220
- const [isAssetSelector, setIsAssetSelector] = (0, import_react75.useState)(false);
24221
- const [customAddress, setCustomAddress] = (0, import_react75.useState)("");
24222
- const [customAddressError, setCustomAddressError] = (0, import_react75.useState)(null);
24223
- const handleAddress = (0, import_react75.useCallback)(
24286
+ const [isAssetSelector, setIsAssetSelector] = (0, import_react76.useState)(false);
24287
+ const [customAddress, setCustomAddress] = (0, import_react76.useState)("");
24288
+ const [customAddressError, setCustomAddressError] = (0, import_react76.useState)(null);
24289
+ const handleAddress = (0, import_react76.useCallback)(
24224
24290
  (addressToAdd) => {
24225
24291
  if (!isValidAddress(addressToAdd)) {
24226
24292
  setCustomAddressError("Bad address");
@@ -24447,14 +24513,14 @@ function PolicyForm() {
24447
24513
  showFormErrors && formErrorMessage && /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(Highlight, { type: "error", children: formErrorMessage })
24448
24514
  ] });
24449
24515
  }
24450
- var import_react_query47, import_lucide_react63, import_react75, import_jsx_runtime106;
24516
+ var import_react_query47, import_lucide_react63, import_react76, import_jsx_runtime106;
24451
24517
  var init_PolicyForm = __esm({
24452
24518
  "src/internal/components/SecurityMenu/UserPolicies/PolicyForm.tsx"() {
24453
24519
  init_SessionContext();
24454
24520
  init_useT();
24455
24521
  import_react_query47 = require("@tanstack/react-query");
24456
24522
  import_lucide_react63 = require("lucide-react");
24457
- import_react75 = require("react");
24523
+ import_react76 = require("react");
24458
24524
  init_button();
24459
24525
  init_highlight();
24460
24526
  init_input();
@@ -24536,7 +24602,7 @@ function UserPolicies() {
24536
24602
  const config = useProviderConfig().config;
24537
24603
  const mpcUserId = useSession((st) => st.session?.mpcUserId);
24538
24604
  const activeChainId = useSession((st) => st.activeChainId);
24539
- const [isConfirmingDelete, setIsConfirmingDelete] = (0, import_react76.useState)(false);
24605
+ const [isConfirmingDelete, setIsConfirmingDelete] = (0, import_react77.useState)(false);
24540
24606
  const { data: policyView, isLoading: isPolicyLoading } = useUserAssetsPolicies(activeChainId);
24541
24607
  const { mutate: cancelPending, isPending: isCancellingPending } = (0, import_react_query48.useMutation)({
24542
24608
  mutationFn: async () => {
@@ -24649,7 +24715,7 @@ function UserPolicies() {
24649
24715
  ] })
24650
24716
  ] });
24651
24717
  }
24652
- var import_react_query48, import_clsx3, import_lucide_react64, import_react76, import_jsx_runtime107;
24718
+ var import_react_query48, import_clsx3, import_lucide_react64, import_react77, import_jsx_runtime107;
24653
24719
  var init_UserPolicies = __esm({
24654
24720
  "src/internal/components/SecurityMenu/UserPolicies/UserPolicies.tsx"() {
24655
24721
  init_ProviderContext();
@@ -24658,7 +24724,7 @@ var init_UserPolicies = __esm({
24658
24724
  import_react_query48 = require("@tanstack/react-query");
24659
24725
  import_clsx3 = __toESM(require("clsx"), 1);
24660
24726
  import_lucide_react64 = require("lucide-react");
24661
- import_react76 = require("react");
24727
+ import_react77 = require("react");
24662
24728
  init_button();
24663
24729
  init_highlight();
24664
24730
  init_api4();
@@ -24683,7 +24749,7 @@ var init_UserPolicies2 = __esm({
24683
24749
 
24684
24750
  // src/internal/components/SecurityMenu/useSecurityMenuParams.ts
24685
24751
  function useSecurityMenuParams() {
24686
- (0, import_react77.useEffect)(() => {
24752
+ (0, import_react78.useEffect)(() => {
24687
24753
  const { pageParams, setPageParams } = useLayoutDataStore.getState();
24688
24754
  if (!pageParams || !(0, import_lodash_es15.keys)(pageParams).length) return;
24689
24755
  const { submenu } = pageParams;
@@ -24707,11 +24773,11 @@ function useSecurityMenuParams() {
24707
24773
  setPageParams(null);
24708
24774
  }, []);
24709
24775
  }
24710
- var import_lodash_es15, import_react77;
24776
+ var import_lodash_es15, import_react78;
24711
24777
  var init_useSecurityMenuParams = __esm({
24712
24778
  "src/internal/components/SecurityMenu/useSecurityMenuParams.ts"() {
24713
24779
  import_lodash_es15 = require("lodash-es");
24714
- import_react77 = require("react");
24780
+ import_react78 = require("react");
24715
24781
  init_useLayoutDataStore();
24716
24782
  init_UserPolicies2();
24717
24783
  init_useSecurityStore();
@@ -24726,7 +24792,7 @@ function SecurityMenuContent() {
24726
24792
  const { appToUntrust, showConnectedApps, showAssetsPolicies } = useSecurityStore();
24727
24793
  const policyForm = usePolicyForm();
24728
24794
  useOnboardingTourAvailable(!showConnectedApps && !showAssetsPolicies);
24729
- (0, import_react78.useEffect)(() => {
24795
+ (0, import_react79.useEffect)(() => {
24730
24796
  let securityTitle = "";
24731
24797
  switch (true) {
24732
24798
  case showConnectedApps:
@@ -24747,7 +24813,7 @@ function SecurityMenuContent() {
24747
24813
  return () => {
24748
24814
  };
24749
24815
  }, [t, showConnectedApps, showAssetsPolicies, policyForm]);
24750
- (0, import_react78.useEffect)(
24816
+ (0, import_react79.useEffect)(
24751
24817
  () => () => {
24752
24818
  usePolicyForm.setState(null, true);
24753
24819
  useSecurityStore.setState(
@@ -24841,13 +24907,13 @@ function SecurityMenu() {
24841
24907
  /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(SecurityMenuContent, {})
24842
24908
  ] });
24843
24909
  }
24844
- var import_lucide_react65, import_react78, import_jsx_runtime108;
24910
+ var import_lucide_react65, import_react79, import_jsx_runtime108;
24845
24911
  var init_SecurityMenu = __esm({
24846
24912
  "src/internal/components/SecurityMenu/SecurityMenu.tsx"() {
24847
24913
  init_ProviderContext();
24848
24914
  init_i18n();
24849
24915
  import_lucide_react65 = require("lucide-react");
24850
- import_react78 = require("react");
24916
+ import_react79 = require("react");
24851
24917
  init_useLayoutDataStore();
24852
24918
  init_Expandable2();
24853
24919
  init_Onboarding();
@@ -25051,8 +25117,8 @@ var init_SenderSelector = __esm({
25051
25117
  function useAvailableSenders() {
25052
25118
  const address = useSession((st) => st.address);
25053
25119
  const { profiles } = useLinkedProfiles();
25054
- const lastCalcedSenders = (0, import_react79.useRef)([]);
25055
- (0, import_react79.useEffect)(() => {
25120
+ const lastCalcedSenders = (0, import_react80.useRef)([]);
25121
+ (0, import_react80.useEffect)(() => {
25056
25122
  const sendersAccumulator = [
25057
25123
  {
25058
25124
  type: "embarkai-wallet",
@@ -25086,13 +25152,13 @@ function useAvailableSenders() {
25086
25152
  directWalletProfiles: profiles.filter((p) => p.provider === "wallet")
25087
25153
  };
25088
25154
  }
25089
- var import_react79;
25155
+ var import_react80;
25090
25156
  var init_useAvailableSenders = __esm({
25091
25157
  "src/internal/components/SendMenu/hyperbridge/hooks/useAvailableSenders.ts"() {
25092
25158
  init_SessionContext();
25093
25159
  init_tokens();
25094
25160
  init_linkedProfiles();
25095
- import_react79 = require("react");
25161
+ import_react80 = require("react");
25096
25162
  init_wallets();
25097
25163
  init_useBridgeStore();
25098
25164
  }
@@ -25507,18 +25573,18 @@ function useHyperlaneHistory() {
25507
25573
  getNextPageParam: (lastPage) => lastPage.page < lastPage.pageCount ? lastPage.page + 1 : void 0,
25508
25574
  queryFn: async ({ pageParam }) => await getHyperlaneBridgeHistory({ page: pageParam, pageSize: TX_HISTORY_PAGE_SIZE })
25509
25575
  });
25510
- const txList = (0, import_react80.useMemo)(
25576
+ const txList = (0, import_react81.useMemo)(
25511
25577
  () => query?.data?.pages?.map((p) => p.data).flat(Infinity) || [],
25512
25578
  [query?.data]
25513
25579
  );
25514
25580
  return { query, txList };
25515
25581
  }
25516
- var import_react_query49, import_react80, HYPERLANE_HISTORY_QUERY_KEY, TX_HISTORY_PAGE_SIZE, TX_HISTORY_POLLING_INTERVAL;
25582
+ var import_react_query49, import_react81, HYPERLANE_HISTORY_QUERY_KEY, TX_HISTORY_PAGE_SIZE, TX_HISTORY_POLLING_INTERVAL;
25517
25583
  var init_useHyperlaneHistory = __esm({
25518
25584
  "src/internal/components/SendMenu/hyperbridge/hooks/useHyperlaneHistory.ts"() {
25519
25585
  init_SessionContext();
25520
25586
  import_react_query49 = require("@tanstack/react-query");
25521
- import_react80 = require("react");
25587
+ import_react81 = require("react");
25522
25588
  init_useLayoutDataStore();
25523
25589
  init_useFlowSelector();
25524
25590
  init_api5();
@@ -25548,9 +25614,9 @@ function useBridge() {
25548
25614
  const qc = (0, import_react_query50.useQueryClient)();
25549
25615
  const { t } = useT();
25550
25616
  const address = useSession((st) => st.address);
25551
- const { data: walletClient } = (0, import_wagmi6.useWalletClient)();
25552
- const { mutateAsync: switchChainAsync } = (0, import_wagmi6.useSwitchChain)();
25553
- const swapDirection = (0, import_react81.useCallback)(() => {
25617
+ const { data: walletClient } = (0, import_wagmi5.useWalletClient)();
25618
+ const { mutateAsync: switchChainAsync } = (0, import_wagmi5.useSwitchChain)();
25619
+ const swapDirection = (0, import_react82.useCallback)(() => {
25554
25620
  const {
25555
25621
  // bridgeStep,
25556
25622
  originChain,
@@ -25601,7 +25667,7 @@ function useBridge() {
25601
25667
  useFlowSelectorStore.getState().setError(error instanceof Error ? error.message : String(error));
25602
25668
  }
25603
25669
  });
25604
- const handleQuoteEstimation = (0, import_react81.useCallback)((amnt) => {
25670
+ const handleQuoteEstimation = (0, import_react82.useCallback)((amnt) => {
25605
25671
  const { originChain, destinationChain, bridgeSender } = useBridgeStore.getState();
25606
25672
  if (!amnt || !Number(amnt)) {
25607
25673
  useBridgeStore.getState().setQuote(null);
@@ -25736,14 +25802,14 @@ function useBridge() {
25736
25802
  isAssetBridging
25737
25803
  };
25738
25804
  }
25739
- var import_react_query50, import_react81, import_wagmi6;
25805
+ var import_react_query50, import_react82, import_wagmi5;
25740
25806
  var init_useBridge = __esm({
25741
25807
  "src/internal/components/SendMenu/hyperbridge/hooks/useBridge.ts"() {
25742
25808
  init_SessionContext();
25743
25809
  init_i18n();
25744
25810
  import_react_query50 = require("@tanstack/react-query");
25745
- import_react81 = require("react");
25746
- import_wagmi6 = require("wagmi");
25811
+ import_react82 = require("react");
25812
+ import_wagmi5 = require("wagmi");
25747
25813
  init_useLayoutStore();
25748
25814
  init_useExternalWalletStore();
25749
25815
  init_useFlowSelector();
@@ -25773,7 +25839,7 @@ function useHyperlaneRoutes() {
25773
25839
  queryKey: [HYPERLANE_WARP_ROUTES_QUERY_KEY, address],
25774
25840
  queryFn: async () => await getHyperlaneWarpRoutes()
25775
25841
  });
25776
- (0, import_react82.useEffect)(() => {
25842
+ (0, import_react83.useEffect)(() => {
25777
25843
  if (!errorWarpRoutes) return;
25778
25844
  useFlowSelectorStore.getState().setError(errorWarpRoutes.message);
25779
25845
  const { resetSelections, setRecipient, setOriginChain, setDestinationChain } = useBridgeStore.getState();
@@ -25782,7 +25848,7 @@ function useHyperlaneRoutes() {
25782
25848
  setOriginChain(null);
25783
25849
  setDestinationChain(null);
25784
25850
  }, [errorWarpRoutes]);
25785
- (0, import_react82.useEffect)(() => {
25851
+ (0, import_react83.useEffect)(() => {
25786
25852
  if (!!hyperRoute || !hyperlaneWarpRoutes.length) return;
25787
25853
  let targetHyperRouteToSelect = hyperlaneWarpRoutes.find((route) => route.routeId === hyperRoute);
25788
25854
  if (!targetHyperRouteToSelect) {
@@ -25807,12 +25873,12 @@ function useHyperlaneRoutes() {
25807
25873
  }, [hyperRoute, hyperlaneWarpRoutes]);
25808
25874
  return { hyperlaneWarpRoutes, isLoadingWarpRoutes };
25809
25875
  }
25810
- var import_react_query51, import_react82, HYPERLANE_WARP_ROUTES_QUERY_KEY;
25876
+ var import_react_query51, import_react83, HYPERLANE_WARP_ROUTES_QUERY_KEY;
25811
25877
  var init_useHyperlaneRoutes = __esm({
25812
25878
  "src/internal/components/SendMenu/hyperbridge/hooks/useHyperlaneRoutes.ts"() {
25813
25879
  init_SessionContext();
25814
25880
  import_react_query51 = require("@tanstack/react-query");
25815
- import_react82 = require("react");
25881
+ import_react83 = require("react");
25816
25882
  init_useLayoutDataStore();
25817
25883
  init_useFlowSelector();
25818
25884
  init_api5();
@@ -25828,7 +25894,7 @@ function useMenuTitle(warpRoutes) {
25828
25894
  const bridgeStep = useBridgeStore((st) => st.bridgeStep);
25829
25895
  const hyperRoute = useBridgeStore((st) => st.hyperRoute);
25830
25896
  const hyperRouteMeta = warpRoutes?.length ? warpRoutes.find((route) => route.routeId === hyperRoute) : null;
25831
- (0, import_react83.useEffect)(() => {
25897
+ (0, import_react84.useEffect)(() => {
25832
25898
  const updateMenuTitle = useFlowSelectorStore.getState().setMenuTitle;
25833
25899
  switch (true) {
25834
25900
  case bridgeStep === "sender-selector":
@@ -25856,11 +25922,11 @@ function useMenuTitle(warpRoutes) {
25856
25922
  }
25857
25923
  }, [bridgeStep, hyperRouteMeta, t]);
25858
25924
  }
25859
- var import_react83;
25925
+ var import_react84;
25860
25926
  var init_useMenuTitle = __esm({
25861
25927
  "src/internal/components/SendMenu/hyperbridge/hooks/useMenuTitle.ts"() {
25862
25928
  init_i18n();
25863
- import_react83 = require("react");
25929
+ import_react84 = require("react");
25864
25930
  init_useFlowSelector();
25865
25931
  init_useBridgeStore();
25866
25932
  }
@@ -26030,7 +26096,7 @@ function useBridgeBalance(isLoadingWarpRoutes, hyperlaneWarpRoutes) {
26030
26096
  const activeChainId = useSession((st) => st.activeChainId);
26031
26097
  const directWalletAddress = useExternalWalletStore((st) => st.externalAddress);
26032
26098
  const directWalletChainId = useExternalWalletStore((st) => st.externalChainId);
26033
- const { mutateAsync: switchChainAsync } = (0, import_wagmi7.useSwitchChain)();
26099
+ const { mutateAsync: switchChainAsync } = (0, import_wagmi6.useSwitchChain)();
26034
26100
  const hyperRoute = useBridgeStore((st) => st.hyperRoute);
26035
26101
  const bridgeSender = useBridgeStore((st) => st.bridgeSender);
26036
26102
  const originChain = useBridgeStore((st) => st.originChain);
@@ -26110,7 +26176,7 @@ function useBridgeBalance(isLoadingWarpRoutes, hyperlaneWarpRoutes) {
26110
26176
  };
26111
26177
  }
26112
26178
  });
26113
- const refreshRouteTokenBalance = (0, import_react84.useCallback)(
26179
+ const refreshRouteTokenBalance = (0, import_react85.useCallback)(
26114
26180
  (senderWallet) => {
26115
26181
  switch (true) {
26116
26182
  case senderWallet === "embarkai-wallet":
@@ -26126,7 +26192,7 @@ function useBridgeBalance(isLoadingWarpRoutes, hyperlaneWarpRoutes) {
26126
26192
  },
26127
26193
  [refreshBalances, qc]
26128
26194
  );
26129
- (0, import_react84.useEffect)(() => {
26195
+ (0, import_react85.useEffect)(() => {
26130
26196
  if (!!isLoadingWarpRoutes || !bridgeSender || !originChain) return;
26131
26197
  switch (bridgeSender) {
26132
26198
  case "embarkai-wallet":
@@ -26157,16 +26223,16 @@ function useBridgeBalance(isLoadingWarpRoutes, hyperlaneWarpRoutes) {
26157
26223
  isRouteTokenBalanceLoading: isAssetsLoading || isExternalBalanceLoading || isExternalNativeBalanceLoading
26158
26224
  };
26159
26225
  }
26160
- var import_core8, import_react_query52, import_react84, import_viem15, import_wagmi7, EXTERNAL_WALLET_BRIDGING_BALANCE_QUERY, EXTERNAL_WALLET_BRIDGING_NATIVE_BALANCE_QUERY;
26226
+ var import_core8, import_react_query52, import_react85, import_viem15, import_wagmi6, EXTERNAL_WALLET_BRIDGING_BALANCE_QUERY, EXTERNAL_WALLET_BRIDGING_NATIVE_BALANCE_QUERY;
26161
26227
  var init_useBridgeBalance = __esm({
26162
26228
  "src/internal/components/SendMenu/hyperbridge/hooks/useBridgeBalance.ts"() {
26163
26229
  init_SessionContext();
26164
26230
  init_i18n();
26165
26231
  import_core8 = require("@embarkai/core");
26166
26232
  import_react_query52 = require("@tanstack/react-query");
26167
- import_react84 = require("react");
26233
+ import_react85 = require("react");
26168
26234
  import_viem15 = require("viem");
26169
- import_wagmi7 = require("wagmi");
26235
+ import_wagmi6 = require("wagmi");
26170
26236
  init_useBlockscoutAssets2();
26171
26237
  init_useExternalWalletStore();
26172
26238
  init_BalanceFeedProvider2();
@@ -26293,7 +26359,7 @@ function SelectStep(props) {
26293
26359
  variant: "outline",
26294
26360
  size: "medium",
26295
26361
  className: "bg-[var(--ui-kit-bg)] flex items-center gap-[var(--ui-kit-gap)]",
26296
- children: selectedWarpRoute.chainPair.map((chain, chIdx) => /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(import_react85.Fragment, { children: [
26362
+ children: selectedWarpRoute.chainPair.map((chain, chIdx) => /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(import_react86.Fragment, { children: [
26297
26363
  chIdx > 0 && /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(import_lucide_react67.ArrowLeftRightIcon, { className: "w-4 h-4 " }),
26298
26364
  /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(ResolveChainIcon, { chainName: chain.chainName, className: "w-4 h-4" })
26299
26365
  ] }, `${selectedWarpRoute.id}-icon-${chain.chainID}-${chIdx}`))
@@ -26437,13 +26503,13 @@ function SelectStep(props) {
26437
26503
  )
26438
26504
  ] });
26439
26505
  }
26440
- var import_lucide_react67, import_react85, import_jsx_runtime111;
26506
+ var import_lucide_react67, import_react86, import_jsx_runtime111;
26441
26507
  var init_SelectStep = __esm({
26442
26508
  "src/internal/components/SendMenu/hyperbridge/steps/SelectStep.tsx"() {
26443
26509
  init_tokens();
26444
26510
  init_i18n();
26445
26511
  import_lucide_react67 = require("lucide-react");
26446
- import_react85 = require("react");
26512
+ import_react86 = require("react");
26447
26513
  init_priceFormatter();
26448
26514
  init_utils();
26449
26515
  init_useExternalWalletStore();
@@ -26494,7 +26560,7 @@ var init_checkbox = __esm({
26494
26560
  // src/internal/components/SendMenu/hyperbridge/steps/ConfirmStep.tsx
26495
26561
  function ConfirmStep(props) {
26496
26562
  const { isAssetBridging, bridgeAsset, hyperlaneWarpRoutes } = props;
26497
- const [userConsent, setUserConsent] = (0, import_react86.useState)(false);
26563
+ const [userConsent, setUserConsent] = (0, import_react87.useState)(false);
26498
26564
  const { t } = useT();
26499
26565
  const address = useSession((st) => st.address);
26500
26566
  const bridgeSender = useBridgeStore((st) => st.bridgeSenders.find((s) => s.type === st.bridgeSender));
@@ -26610,13 +26676,13 @@ function ConfirmStep(props) {
26610
26676
  }
26611
26677
  );
26612
26678
  }
26613
- var import_lucide_react69, import_react86, import_jsx_runtime113, P_CN;
26679
+ var import_lucide_react69, import_react87, import_jsx_runtime113, P_CN;
26614
26680
  var init_ConfirmStep = __esm({
26615
26681
  "src/internal/components/SendMenu/hyperbridge/steps/ConfirmStep.tsx"() {
26616
26682
  init_SessionContext();
26617
26683
  init_i18n();
26618
26684
  import_lucide_react69 = require("lucide-react");
26619
- import_react86 = require("react");
26685
+ import_react87 = require("react");
26620
26686
  init_priceFormatter();
26621
26687
  init_utils();
26622
26688
  init_Onboarding();
@@ -26993,7 +27059,7 @@ function SelectAssetRoute(props) {
26993
27059
  const { hyperlaneWarpRoutes } = props;
26994
27060
  const { t } = useT();
26995
27061
  const selectedAssetSymbol = useBridgeStore((st) => st.bridgeAssetSymbol);
26996
- const tokenList = (0, import_react87.useMemo)(() => {
27062
+ const tokenList = (0, import_react88.useMemo)(() => {
26997
27063
  const tokens = hyperlaneWarpRoutes.map((route) => route.symbol);
26998
27064
  const uniqueTokens = Array.from(new Set(tokens));
26999
27065
  return uniqueTokens.map((symbol) => ({
@@ -27070,13 +27136,13 @@ function SelectAssetRoute(props) {
27070
27136
  ] })
27071
27137
  ] });
27072
27138
  }
27073
- var import_lucide_react71, import_react87, import_jsx_runtime116;
27139
+ var import_lucide_react71, import_react88, import_jsx_runtime116;
27074
27140
  var init_SelectAssetRoute = __esm({
27075
27141
  "src/internal/components/SendMenu/hyperbridge/steps/SelectAssetRoute.tsx"() {
27076
27142
  init_tokens();
27077
27143
  init_i18n();
27078
27144
  import_lucide_react71 = require("lucide-react");
27079
- import_react87 = require("react");
27145
+ import_react88 = require("react");
27080
27146
  init_button();
27081
27147
  init_ResolveChainIcon();
27082
27148
  init_useBridgeStore();
@@ -27103,7 +27169,7 @@ function HyperlaneBridge() {
27103
27169
  const { hyperlaneWarpRoutes, isLoadingWarpRoutes } = useHyperlaneRoutes();
27104
27170
  const { directWalletProfiles } = useAvailableSenders();
27105
27171
  useMenuTitle(hyperlaneWarpRoutes);
27106
- (0, import_react88.useEffect)(() => {
27172
+ (0, import_react89.useEffect)(() => {
27107
27173
  return () => {
27108
27174
  useBridgeStore.getState().resetSelections();
27109
27175
  };
@@ -27136,10 +27202,10 @@ function HyperlaneBridge() {
27136
27202
  bridgeStep === "tx-history-details" && /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(HistoryDetailsStep, {})
27137
27203
  ] });
27138
27204
  }
27139
- var import_react88, import_jsx_runtime117;
27205
+ var import_react89, import_jsx_runtime117;
27140
27206
  var init_HyperlaneBridge = __esm({
27141
27207
  "src/internal/components/SendMenu/hyperbridge/HyperlaneBridge.tsx"() {
27142
- import_react88 = require("react");
27208
+ import_react89 = require("react");
27143
27209
  init_SenderSelector();
27144
27210
  init_useAvailableSenders();
27145
27211
  init_useBridge();
@@ -27157,7 +27223,7 @@ function BridgeHistorySwitch(props) {
27157
27223
  const selectorFlow = useFlowSelectorStore((st) => st.flow);
27158
27224
  const isUiLocked = useFlowSelectorStore((st) => st.isUiLocked);
27159
27225
  const bridgeStep = useBridgeStore((st) => st.bridgeStep);
27160
- const lastBridgeStepRef = (0, import_react89.useRef)(null);
27226
+ const lastBridgeStepRef = (0, import_react90.useRef)(null);
27161
27227
  if (selectorFlow !== "bridge" || bridgeStep === "confirm" || bridgeStep === "success" || bridgeStep === "sender-selector" || bridgeStep === "select-token" || bridgeStep === "tx-history-details") {
27162
27228
  return null;
27163
27229
  }
@@ -27176,10 +27242,10 @@ function BridgeHistorySwitch(props) {
27176
27242
  }
27177
27243
  );
27178
27244
  }
27179
- var import_react89, import_jsx_runtime118;
27245
+ var import_react90, import_jsx_runtime118;
27180
27246
  var init_HistorySwitch = __esm({
27181
27247
  "src/internal/components/SendMenu/hyperbridge/components/HistorySwitch.tsx"() {
27182
- import_react89 = require("react");
27248
+ import_react90 = require("react");
27183
27249
  init_switch();
27184
27250
  init_useFlowSelector();
27185
27251
  init_useBridgeStore();
@@ -27205,7 +27271,7 @@ function useErc3643Compliance(options) {
27205
27271
  isLoading,
27206
27272
  error: queryError,
27207
27273
  refetch
27208
- } = (0, import_wagmi8.useReadContract)({
27274
+ } = (0, import_wagmi7.useReadContract)({
27209
27275
  address: tokenAddress,
27210
27276
  abi: ERC3643_CAN_TRANSFER_ABI,
27211
27277
  functionName: "canTransfer",
@@ -27242,10 +27308,10 @@ function useErc3643Compliance(options) {
27242
27308
  refetch
27243
27309
  };
27244
27310
  }
27245
- var import_wagmi8, ERC3643_CAN_TRANSFER_ABI;
27311
+ var import_wagmi7, ERC3643_CAN_TRANSFER_ABI;
27246
27312
  var init_useErc3643Compliance = __esm({
27247
27313
  "src/hooks/useErc3643Compliance.ts"() {
27248
- import_wagmi8 = require("wagmi");
27314
+ import_wagmi7 = require("wagmi");
27249
27315
  ERC3643_CAN_TRANSFER_ABI = [
27250
27316
  {
27251
27317
  type: "function",
@@ -27270,11 +27336,11 @@ function looksLikeNickname(input) {
27270
27336
  }
27271
27337
  function useNicknameResolve(input, options) {
27272
27338
  const { enabled = true, chainId } = options;
27273
- const [debouncedInput, setDebouncedInput] = (0, import_react90.useState)("");
27274
- const [isDebouncing, setIsDebouncing] = (0, import_react90.useState)(false);
27339
+ const [debouncedInput, setDebouncedInput] = (0, import_react91.useState)("");
27340
+ const [isDebouncing, setIsDebouncing] = (0, import_react91.useState)(false);
27275
27341
  const normalized = normalizeNickname(input);
27276
27342
  const isNicknameInput = looksLikeNickname(input) && normalized.length >= 3;
27277
- (0, import_react90.useEffect)(() => {
27343
+ (0, import_react91.useEffect)(() => {
27278
27344
  if (!isNicknameInput || !enabled) {
27279
27345
  setDebouncedInput("");
27280
27346
  setIsDebouncing(false);
@@ -27300,7 +27366,7 @@ function useNicknameResolve(input, options) {
27300
27366
  const isNotFound = query.isError && query.error?.code === "NICKNAME_NOT_FOUND";
27301
27367
  const isWalletNotSetup = !!query.data && query.data.resolvedTarget === null;
27302
27368
  const isFrozen = query.data?.isFrozen ?? false;
27303
- const fingerprintVerification = (0, import_react90.useMemo)(() => {
27369
+ const fingerprintVerification = (0, import_react91.useMemo)(() => {
27304
27370
  if (!query.data?.owner || !query.data?.fingerprint) {
27305
27371
  return null;
27306
27372
  }
@@ -27322,11 +27388,11 @@ function useNicknameResolve(input, options) {
27322
27388
  resolvedAddress
27323
27389
  };
27324
27390
  }
27325
- var import_react_query54, import_react90, DEBOUNCE_MS2;
27391
+ var import_react_query54, import_react91, DEBOUNCE_MS2;
27326
27392
  var init_useNicknameResolve = __esm({
27327
27393
  "src/hooks/useNicknameResolve.ts"() {
27328
27394
  import_react_query54 = require("@tanstack/react-query");
27329
- import_react90 = require("react");
27395
+ import_react91 = require("react");
27330
27396
  init_nickname();
27331
27397
  init_profile();
27332
27398
  init_nickname_fingerprint();
@@ -27339,10 +27405,10 @@ var init_useNicknameResolve = __esm({
27339
27405
  function useSendTransaction() {
27340
27406
  const session = useSession((st) => st.session);
27341
27407
  const address = useSession((st) => st.address);
27342
- const [isLoading, setIsLoading] = (0, import_react91.useState)(false);
27343
- const [error, setError] = (0, import_react91.useState)(null);
27344
- const [userOpHash, setUserOpHash] = (0, import_react91.useState)(null);
27345
- const sendTransaction = (0, import_react91.useCallback)(
27408
+ const [isLoading, setIsLoading] = (0, import_react92.useState)(false);
27409
+ const [error, setError] = (0, import_react92.useState)(null);
27410
+ const [userOpHash, setUserOpHash] = (0, import_react92.useState)(null);
27411
+ const sendTransaction = (0, import_react92.useCallback)(
27346
27412
  async (params) => {
27347
27413
  if (!session || !address) {
27348
27414
  setError("No active session");
@@ -27439,7 +27505,7 @@ function useSendTransaction() {
27439
27505
  },
27440
27506
  [session, address]
27441
27507
  );
27442
- const reset = (0, import_react91.useCallback)(() => {
27508
+ const reset = (0, import_react92.useCallback)(() => {
27443
27509
  setError(null);
27444
27510
  setUserOpHash(null);
27445
27511
  setIsLoading(false);
@@ -27452,10 +27518,10 @@ function useSendTransaction() {
27452
27518
  reset
27453
27519
  };
27454
27520
  }
27455
- var import_react91, import_viem16, ERC20_TRANSFER_ABI, ERC721_SAFE_TRANSFER_ABI, ERC1155_SAFE_TRANSFER_ABI;
27521
+ var import_react92, import_viem16, ERC20_TRANSFER_ABI, ERC721_SAFE_TRANSFER_ABI, ERC1155_SAFE_TRANSFER_ABI;
27456
27522
  var init_useSendTransaction = __esm({
27457
27523
  "src/hooks/useSendTransaction.ts"() {
27458
- import_react91 = require("react");
27524
+ import_react92 = require("react");
27459
27525
  import_viem16 = require("viem");
27460
27526
  init_SessionContext();
27461
27527
  init_account2();
@@ -27606,7 +27672,7 @@ var init_AssetInputIcon = __esm({
27606
27672
 
27607
27673
  // src/internal/components/SendMenu/send/components/NftDisplayCard.tsx
27608
27674
  function NftDisplayCard({ asset }) {
27609
- const [imageError, setImageError] = (0, import_react92.useState)(false);
27675
+ const [imageError, setImageError] = (0, import_react93.useState)(false);
27610
27676
  const nftImage = asset.image || asset.nftMetadata?.image;
27611
27677
  return /* @__PURE__ */ (0, import_jsx_runtime120.jsxs)("div", { className: "flex items-center gap-3 p-3 rounded-[var(--ui-kit-el-bdrs)] bg-[var(--ui-kit-bg-secondary)]", children: [
27612
27678
  nftImage && !imageError ? /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
@@ -27634,11 +27700,11 @@ function NftDisplayCard({ asset }) {
27634
27700
  ] })
27635
27701
  ] });
27636
27702
  }
27637
- var import_lucide_react73, import_react92, import_jsx_runtime120;
27703
+ var import_lucide_react73, import_react93, import_jsx_runtime120;
27638
27704
  var init_NftDisplayCard = __esm({
27639
27705
  "src/internal/components/SendMenu/send/components/NftDisplayCard.tsx"() {
27640
27706
  import_lucide_react73 = require("lucide-react");
27641
- import_react92 = require("react");
27707
+ import_react93 = require("react");
27642
27708
  import_jsx_runtime120 = require("react/jsx-runtime");
27643
27709
  }
27644
27710
  });
@@ -27758,7 +27824,7 @@ function NicknameData(props) {
27758
27824
  isWalletNotSetup,
27759
27825
  isFrozen
27760
27826
  } = resolvedNicknameData;
27761
- (0, import_react93.useEffect)(() => {
27827
+ (0, import_react94.useEffect)(() => {
27762
27828
  if (isResolving) return;
27763
27829
  let errMessage = null;
27764
27830
  switch (true) {
@@ -27813,11 +27879,11 @@ function NicknameData(props) {
27813
27879
  ] })
27814
27880
  ] });
27815
27881
  }
27816
- var import_lucide_react74, import_react93, import_jsx_runtime122;
27882
+ var import_lucide_react74, import_react94, import_jsx_runtime122;
27817
27883
  var init_NicknameData = __esm({
27818
27884
  "src/internal/components/SendMenu/send/components/NicknameData.tsx"() {
27819
27885
  import_lucide_react74 = require("lucide-react");
27820
- import_react93 = require("react");
27886
+ import_react94 = require("react");
27821
27887
  init_no_image();
27822
27888
  init_utils();
27823
27889
  init_useFlowSelector();
@@ -28350,16 +28416,16 @@ function SendMenu() {
28350
28416
  userOpHash,
28351
28417
  reset
28352
28418
  } = useSendTransaction();
28353
- (0, import_react94.useEffect)(() => {
28419
+ (0, import_react95.useEffect)(() => {
28354
28420
  useFlowSelectorStore.getState().setIsUiLocked(isAssetsLoading || isTransactionPending);
28355
28421
  }, [isAssetsLoading, isTransactionPending]);
28356
- (0, import_react94.useEffect)(() => {
28422
+ (0, import_react95.useEffect)(() => {
28357
28423
  useFlowSelectorStore.getState().setError(sendTransactionError || null);
28358
28424
  }, [sendTransactionError]);
28359
28425
  const { txStep, recipient, amount, selectedAsset, setSelectedAsset } = useSendStore();
28360
28426
  const isNft = isNftAsset3(selectedAsset);
28361
28427
  const isSecurity = isSecurityToken2(selectedAsset);
28362
- (0, import_react94.useEffect)(() => {
28428
+ (0, import_react95.useEffect)(() => {
28363
28429
  const shouldDefaultAsset = assets.length > 0 && !selectedAsset;
28364
28430
  if (!shouldDefaultAsset) return;
28365
28431
  const chainNativeCurrency = useSession.getState().chainConfig?.nativeCurrency;
@@ -28369,7 +28435,7 @@ function SendMenu() {
28369
28435
  if (isBalance(erc20)) return setSelectedAsset(erc20);
28370
28436
  setSelectedAsset(assets[0]);
28371
28437
  }, [assets, selectedAsset]);
28372
- (0, import_react94.useEffect)(
28438
+ (0, import_react95.useEffect)(
28373
28439
  () => () => {
28374
28440
  useSendStore.getState().reset();
28375
28441
  reset();
@@ -28379,7 +28445,7 @@ function SendMenu() {
28379
28445
  const isNicknameInput = looksLikeNickname(recipient);
28380
28446
  const resolvedNicknameData = useNicknameResolve(recipient, { enabled: isNicknameInput, chainId: activeChainId });
28381
28447
  const effectiveAddress = isNicknameInput ? resolvedNicknameData?.resolvedAddress : recipient;
28382
- const complianceAmount = (0, import_react94.useMemo)(() => {
28448
+ const complianceAmount = (0, import_react95.useMemo)(() => {
28383
28449
  if (!isSecurity || !amount || !selectedAsset) return void 0;
28384
28450
  try {
28385
28451
  return (0, import_viem21.parseUnits)(amount, selectedAsset.decimals || 18);
@@ -28394,7 +28460,7 @@ function SendMenu() {
28394
28460
  enabled: isSecurity && !!effectiveAddress && !!complianceAmount,
28395
28461
  chainId: activeChainId
28396
28462
  });
28397
- (0, import_react94.useEffect)(() => {
28463
+ (0, import_react95.useEffect)(() => {
28398
28464
  const updateMenuTitle = useFlowSelectorStore.getState().setMenuTitle;
28399
28465
  switch (true) {
28400
28466
  case txStep === "select-asset":
@@ -28464,7 +28530,7 @@ function SendMenu() {
28464
28530
  ] })
28465
28531
  ] });
28466
28532
  }
28467
- var import_lucide_react77, import_react94, import_viem21, import_jsx_runtime125;
28533
+ var import_lucide_react77, import_react95, import_viem21, import_jsx_runtime125;
28468
28534
  var init_SendMenu = __esm({
28469
28535
  "src/internal/components/SendMenu/send/SendMenu.tsx"() {
28470
28536
  init_SessionContext();
@@ -28473,7 +28539,7 @@ var init_SendMenu = __esm({
28473
28539
  init_useSendTransaction();
28474
28540
  init_useT();
28475
28541
  import_lucide_react77 = require("lucide-react");
28476
- import_react94 = require("react");
28542
+ import_react95 = require("react");
28477
28543
  import_viem21 = require("viem");
28478
28544
  init_useBlockscoutAssets2();
28479
28545
  init_useLayoutDataStore();
@@ -28499,7 +28565,7 @@ var init_send = __esm({
28499
28565
  // src/internal/components/SendMenu/useSendMenuParams.ts
28500
28566
  function useSendMenuParams() {
28501
28567
  const { config } = useProviderConfig();
28502
- (0, import_react95.useEffect)(() => {
28568
+ (0, import_react96.useEffect)(() => {
28503
28569
  const { pageParams, setPageParams } = useLayoutDataStore.getState();
28504
28570
  if (!pageParams || !(0, import_lodash_es16.keys)(pageParams).length) return;
28505
28571
  const { sendFlow, send, bridge } = pageParams || {};
@@ -28552,12 +28618,12 @@ function useSendMenuParams() {
28552
28618
  setPageParams(null);
28553
28619
  }, []);
28554
28620
  }
28555
- var import_lodash_es16, import_react95;
28621
+ var import_lodash_es16, import_react96;
28556
28622
  var init_useSendMenuParams = __esm({
28557
28623
  "src/internal/components/SendMenu/useSendMenuParams.ts"() {
28558
28624
  init_ProviderContext();
28559
28625
  import_lodash_es16 = require("lodash-es");
28560
- import_react95 = require("react");
28626
+ import_react96 = require("react");
28561
28627
  init_useLayoutDataStore();
28562
28628
  init_useBridgeStore();
28563
28629
  init_useSendStore();
@@ -28625,17 +28691,17 @@ function SendFlowSelector() {
28625
28691
  const sendStep = useSendStore((st) => st.txStep);
28626
28692
  const bridgeStep = useBridgeStore((st) => st.bridgeStep);
28627
28693
  useOnboardingTourAvailable(sendStep === "input" && bridgeStep === "select");
28628
- (0, import_react96.useEffect)(
28694
+ (0, import_react97.useEffect)(
28629
28695
  () => () => {
28630
28696
  useFlowSelectorStore.getState().setError(null);
28631
28697
  },
28632
28698
  []
28633
28699
  );
28634
- (0, import_react96.useEffect)(() => {
28700
+ (0, import_react97.useEffect)(() => {
28635
28701
  if (!!config?.current?.features?.showAssetBridge) return;
28636
28702
  if (selectorFlow === "bridge") useFlowSelectorStore.getState().setFlow("send");
28637
28703
  }, [selectorFlow]);
28638
- const availableFlows = (0, import_react96.useMemo)(() => {
28704
+ const availableFlows = (0, import_react97.useMemo)(() => {
28639
28705
  const selectorFlows = { send: /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(SendMenu, {}) };
28640
28706
  if (!!config?.current?.features?.showAssetBridge) selectorFlows.bridge = /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(HyperlaneBridge, {});
28641
28707
  return selectorFlows;
@@ -28700,13 +28766,13 @@ function SendFlowSelector() {
28700
28766
  ] })
28701
28767
  ] });
28702
28768
  }
28703
- var import_lucide_react78, import_react96, import_jsx_runtime126;
28769
+ var import_lucide_react78, import_react97, import_jsx_runtime126;
28704
28770
  var init_SendFlowSelector = __esm({
28705
28771
  "src/internal/components/SendMenu/SendFlowSelector.tsx"() {
28706
28772
  init_ProviderContext();
28707
28773
  init_i18n();
28708
28774
  import_lucide_react78 = require("lucide-react");
28709
- import_react96 = require("react");
28775
+ import_react97 = require("react");
28710
28776
  init_useLayoutDataStore();
28711
28777
  init_utils();
28712
28778
  init_Expandable2();
@@ -28769,12 +28835,12 @@ function getServerSnapshot() {
28769
28835
  return false;
28770
28836
  }
28771
28837
  function useProMode() {
28772
- return (0, import_react97.useSyncExternalStore)(subscribe, getSnapshot, getServerSnapshot);
28838
+ return (0, import_react98.useSyncExternalStore)(subscribe, getSnapshot, getServerSnapshot);
28773
28839
  }
28774
- var import_react97, STORAGE_KEY, EVENT_NAME;
28840
+ var import_react98, STORAGE_KEY, EVENT_NAME;
28775
28841
  var init_pro_mode = __esm({
28776
28842
  "src/internal/lib/pro-mode.ts"() {
28777
- import_react97 = require("react");
28843
+ import_react98 = require("react");
28778
28844
  STORAGE_KEY = "embarkai_pro_mode";
28779
28845
  EVENT_NAME = "embarkai-pro-mode-changed";
28780
28846
  }
@@ -29580,7 +29646,7 @@ function TransactionsMenu() {
29580
29646
  const { t } = useT();
29581
29647
  useOnboardingTourAvailable(true);
29582
29648
  const setPage = useLayoutDataStore((st) => st.setPage);
29583
- const [expandedGroups, setExpandedGroups] = (0, import_react98.useState)({});
29649
+ const [expandedGroups, setExpandedGroups] = (0, import_react99.useState)({});
29584
29650
  const historySupported = isTransactionHistorySupported(chainConfig?.id);
29585
29651
  const {
29586
29652
  data: txHistoryGroups = [],
@@ -29593,7 +29659,7 @@ function TransactionsMenu() {
29593
29659
  queryKey: [TRANSACTIONS_HISTORY_QUERY_KEY, chainConfig.id, address],
29594
29660
  queryFn: () => getTransactionsListQuery({ address, chainConfig })
29595
29661
  });
29596
- const refreshTxHistory = (0, import_react98.useCallback)(
29662
+ const refreshTxHistory = (0, import_react99.useCallback)(
29597
29663
  () => qc.invalidateQueries({ queryKey: [TRANSACTIONS_HISTORY_QUERY_KEY, chainConfig.id, address] }),
29598
29664
  [qc, chainConfig.id, address]
29599
29665
  );
@@ -29632,14 +29698,14 @@ function TransactionsMenu() {
29632
29698
  )) })
29633
29699
  ] });
29634
29700
  }
29635
- var import_react_query57, import_lucide_react80, import_react98, import_jsx_runtime128;
29701
+ var import_react_query57, import_lucide_react80, import_react99, import_jsx_runtime128;
29636
29702
  var init_TransactionsMenu = __esm({
29637
29703
  "src/internal/components/TransactionsMenu/TransactionsMenu.tsx"() {
29638
29704
  init_SessionContext();
29639
29705
  init_i18n();
29640
29706
  import_react_query57 = require("@tanstack/react-query");
29641
29707
  import_lucide_react80 = require("lucide-react");
29642
- import_react98 = require("react");
29708
+ import_react99 = require("react");
29643
29709
  init_useLayoutDataStore();
29644
29710
  init_Expandable2();
29645
29711
  init_Onboarding();
@@ -29979,7 +30045,7 @@ var init_PageMap = __esm({
29979
30045
  // src/internal/hooks/usePageMapper.tsx
29980
30046
  function usePageMapper() {
29981
30047
  const page = useLayoutDataStore((st) => st.page);
29982
- const closeDialog = (0, import_react99.useCallback)(() => {
30048
+ const closeDialog = (0, import_react100.useCallback)(() => {
29983
30049
  useLayoutStore.setState({ isDialogAnimating: true });
29984
30050
  setTimeout(() => {
29985
30051
  useLayoutStore.setState({
@@ -29991,14 +30057,14 @@ function usePageMapper() {
29991
30057
  });
29992
30058
  }, CLEAR_DIALOG_TIMEOUT);
29993
30059
  }, []);
29994
- const openDialog = (0, import_react99.useCallback)((pageItem) => {
30060
+ const openDialog = (0, import_react100.useCallback)((pageItem) => {
29995
30061
  useLayoutStore.setState({
29996
30062
  dialogContent: /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(pageItem.component, {}),
29997
30063
  isDialogOpen: true
29998
30064
  // isDialogAnimating: true
29999
30065
  });
30000
30066
  }, []);
30001
- (0, import_react99.useEffect)(() => {
30067
+ (0, import_react100.useEffect)(() => {
30002
30068
  if (page === null) return closeDialog();
30003
30069
  const pageItem = PAGE_MAP[page];
30004
30070
  if (!pageItem) {
@@ -30009,10 +30075,10 @@ function usePageMapper() {
30009
30075
  openDialog(pageItem);
30010
30076
  }, [page, closeDialog, openDialog]);
30011
30077
  }
30012
- var import_react99, import_jsx_runtime130, CLEAR_DIALOG_TIMEOUT;
30078
+ var import_react100, import_jsx_runtime130, CLEAR_DIALOG_TIMEOUT;
30013
30079
  var init_usePageMapper = __esm({
30014
30080
  "src/internal/hooks/usePageMapper.tsx"() {
30015
- import_react99 = require("react");
30081
+ import_react100 = require("react");
30016
30082
  init_PageMap();
30017
30083
  init_constants();
30018
30084
  init_useLayoutDataStore();
@@ -30028,24 +30094,24 @@ function useSettingsNotifications() {
30028
30094
  const providers = import_auth25.jwtTokenManager.getProviders();
30029
30095
  const hasEmail = providers.includes("email");
30030
30096
  const { data: userProfile = null } = useUserProfile();
30031
- (0, import_react100.useEffect)(() => {
30097
+ (0, import_react101.useEffect)(() => {
30032
30098
  const isKYCVerified = userProfile?.kycDetails?.kycStatus === "verified";
30033
30099
  setSettingsNotifications({
30034
30100
  ...COMPLETE_KYC_PROGRESS,
30035
30101
  status: isKYCVerified ? "resolved" : "active"
30036
30102
  });
30037
30103
  }, [userProfile, setSettingsNotifications]);
30038
- (0, import_react100.useEffect)(() => {
30104
+ (0, import_react101.useEffect)(() => {
30039
30105
  setSettingsNotifications({
30040
30106
  ...EMAIL_NOT_CONNECTED_NOTIFICATION,
30041
30107
  status: hasEmail ? "resolved" : "active"
30042
30108
  });
30043
30109
  }, [hasEmail, setSettingsNotifications]);
30044
30110
  }
30045
- var import_react100, EMAIL_NOT_CONNECTED_NOTIFICATION, COMPLETE_KYC_PROGRESS;
30111
+ var import_react101, EMAIL_NOT_CONNECTED_NOTIFICATION, COMPLETE_KYC_PROGRESS;
30046
30112
  var init_useSettingsNotifications = __esm({
30047
30113
  "src/internal/hooks/useSettingsNotifications.ts"() {
30048
- import_react100 = require("react");
30114
+ import_react101 = require("react");
30049
30115
  init_auth();
30050
30116
  init_useLayoutDataStore();
30051
30117
  init_useUserProfile();
@@ -30068,7 +30134,7 @@ var init_package = __esm({
30068
30134
  "package.json"() {
30069
30135
  package_default = {
30070
30136
  name: "@embarkai/ui-kit",
30071
- version: "0.4.113",
30137
+ version: "0.4.115",
30072
30138
  description: "React UI components and hooks for EmbarkAI authentication and Account Abstraction",
30073
30139
  type: "module",
30074
30140
  main: "./dist/index.cjs",
@@ -30179,7 +30245,7 @@ function Footer() {
30179
30245
  const address = useSession((st) => st.address);
30180
30246
  const chainConfig = useSession((st) => st.chainConfig);
30181
30247
  const isDialogForced = useLayoutStore((st) => st.isDialogForced);
30182
- const { mutate: wagmiDisconnect } = (0, import_wagmi9.useDisconnect)({
30248
+ const { mutate: wagmiDisconnect } = useSafeDisconnect({
30183
30249
  mutation: {
30184
30250
  onSuccess: () => {
30185
30251
  useExternalWalletStore.getState().clearExternalWallet();
@@ -30285,7 +30351,7 @@ function Footer() {
30285
30351
  }
30286
30352
  );
30287
30353
  }
30288
- var import_react_query59, import_lucide_react83, import_wagmi9, import_jsx_runtime131, FOOTER_ONBOARDING_CHAIN_BUTTON, FOOTER_ONBOARDING_LOGOUT_BUTTON, FOOTER_TOUR;
30354
+ var import_react_query59, import_lucide_react83, import_jsx_runtime131, FOOTER_ONBOARDING_CHAIN_BUTTON, FOOTER_ONBOARDING_LOGOUT_BUTTON, FOOTER_TOUR;
30289
30355
  var init_Footer = __esm({
30290
30356
  "src/internal/components/Footer/Footer.tsx"() {
30291
30357
  init_package();
@@ -30293,9 +30359,9 @@ var init_Footer = __esm({
30293
30359
  init_ProviderContext();
30294
30360
  init_SessionContext();
30295
30361
  init_i18n();
30362
+ init_useSafeDisconnect();
30296
30363
  import_react_query59 = require("@tanstack/react-query");
30297
30364
  import_lucide_react83 = require("lucide-react");
30298
- import_wagmi9 = require("wagmi");
30299
30365
  init_auth();
30300
30366
  init_base3();
30301
30367
  init_useLayoutDataStore();
@@ -30403,11 +30469,11 @@ function Header() {
30403
30469
  const embarkPage = useLayoutDataStore((st) => st.page);
30404
30470
  const isOnboardingTourAvailable = useOnboardingStore((st) => st.isTourAvailable);
30405
30471
  const proMode = useProMode();
30406
- const [proToast, setProToast] = (0, import_react101.useState)(false);
30407
- const [copied, setCopied] = (0, import_react101.useState)(false);
30408
- const clickCountRef = (0, import_react101.useRef)(0);
30409
- const clickTimerRef = (0, import_react101.useRef)(null);
30410
- const handleAvatarClick = (0, import_react101.useCallback)(() => {
30472
+ const [proToast, setProToast] = (0, import_react102.useState)(false);
30473
+ const [copied, setCopied] = (0, import_react102.useState)(false);
30474
+ const clickCountRef = (0, import_react102.useRef)(0);
30475
+ const clickTimerRef = (0, import_react102.useRef)(null);
30476
+ const handleAvatarClick = (0, import_react102.useCallback)(() => {
30411
30477
  clickCountRef.current += 1;
30412
30478
  if (clickTimerRef.current) {
30413
30479
  clearTimeout(clickTimerRef.current);
@@ -30513,7 +30579,7 @@ function Header() {
30513
30579
  }
30514
30580
  );
30515
30581
  }
30516
- var import_lucide_react84, import_react101, import_jsx_runtime132;
30582
+ var import_lucide_react84, import_react102, import_jsx_runtime132;
30517
30583
  var init_Header = __esm({
30518
30584
  "src/internal/components/Header/Header.tsx"() {
30519
30585
  init_lumia2();
@@ -30521,7 +30587,7 @@ var init_Header = __esm({
30521
30587
  init_ProviderContext();
30522
30588
  init_SessionContext();
30523
30589
  import_lucide_react84 = require("lucide-react");
30524
- import_react101 = require("react");
30590
+ import_react102 = require("react");
30525
30591
  init_icons();
30526
30592
  init_auth();
30527
30593
  init_useLayoutDataStore();
@@ -30556,7 +30622,7 @@ function useDecideContentStyles() {
30556
30622
  style: (0, import_lodash_es17.merge)({}, mobileStyles)
30557
30623
  };
30558
30624
  }
30559
- var DialogPrimitive, import_lodash_es17, import_lucide_react85, import_react102, import_jsx_runtime133, Dialog, DialogPortal, DialogOverlay, CONTENT_BG_SETUP, DialogContent, DialogHeader, DialogFooter, DialogTitle, DialogDescription;
30625
+ var DialogPrimitive, import_lodash_es17, import_lucide_react85, import_react103, import_jsx_runtime133, Dialog, DialogPortal, DialogOverlay, CONTENT_BG_SETUP, DialogContent, DialogHeader, DialogFooter, DialogTitle, DialogDescription;
30560
30626
  var init_dialog = __esm({
30561
30627
  "src/internal/components/ui/dialog.tsx"() {
30562
30628
  init_utils();
@@ -30565,14 +30631,14 @@ var init_dialog = __esm({
30565
30631
  DialogPrimitive = __toESM(require("@radix-ui/react-dialog"), 1);
30566
30632
  import_lodash_es17 = require("lodash-es");
30567
30633
  import_lucide_react85 = require("lucide-react");
30568
- import_react102 = require("react");
30634
+ import_react103 = require("react");
30569
30635
  init_useLayoutDataStore();
30570
30636
  init_useLayoutStore();
30571
30637
  init_button();
30572
30638
  import_jsx_runtime133 = require("react/jsx-runtime");
30573
30639
  Dialog = DialogPrimitive.Root;
30574
30640
  DialogPortal = DialogPrimitive.Portal;
30575
- DialogOverlay = (0, import_react102.forwardRef)(
30641
+ DialogOverlay = (0, import_react103.forwardRef)(
30576
30642
  ({ className, closing, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
30577
30643
  DialogPrimitive.Overlay,
30578
30644
  {
@@ -30594,7 +30660,7 @@ var init_dialog = __esm({
30594
30660
  border: "1px solid var(--ui-kit-bd)",
30595
30661
  boxShadow: "var(--ui-kit-shadow, 0px 4px 10px var(--ui-kit-shadow-c, rgba(0, 0, 0, 0.1)))"
30596
30662
  };
30597
- DialogContent = (0, import_react102.forwardRef)(
30663
+ DialogContent = (0, import_react103.forwardRef)(
30598
30664
  ({ className, children, colorMode, ...props }, ref) => {
30599
30665
  const { t, i18n } = useT();
30600
30666
  const isSessionLoading = useSession((st) => st.isLoading);
@@ -30705,7 +30771,7 @@ var init_dialog = __esm({
30705
30771
  DialogHeader.displayName = "DialogHeader";
30706
30772
  DialogFooter = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime133.jsx)("div", { className: cn2("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2", className), ...props });
30707
30773
  DialogFooter.displayName = "DialogFooter";
30708
- DialogTitle = (0, import_react102.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
30774
+ DialogTitle = (0, import_react103.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
30709
30775
  DialogPrimitive.Title,
30710
30776
  {
30711
30777
  ref,
@@ -30714,7 +30780,7 @@ var init_dialog = __esm({
30714
30780
  }
30715
30781
  ));
30716
30782
  DialogTitle.displayName = DialogPrimitive.Title.displayName;
30717
- DialogDescription = (0, import_react102.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(DialogPrimitive.Description, { ref, className: cn2("text-sm text-muted-foreground", className), ...props }));
30783
+ DialogDescription = (0, import_react103.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(DialogPrimitive.Description, { ref, className: cn2("text-sm text-muted-foreground", className), ...props }));
30718
30784
  DialogDescription.displayName = DialogPrimitive.Description.displayName;
30719
30785
  }
30720
30786
  });
@@ -30737,7 +30803,7 @@ function Dialog2() {
30737
30803
  const { colorMode, maxScrollHeight, isDialogOpen, dialogContent, isDialogForced } = useLayoutStore();
30738
30804
  const page = useLayoutDataStore((st) => st.page);
30739
30805
  const transitionPageHeight = useLayoutDataStore((st) => st.transitionPageHeight);
30740
- (0, import_react104.useEffect)(() => useLayoutStore.setState({ isSettings: !!session }), [session]);
30806
+ (0, import_react105.useEffect)(() => useLayoutStore.setState({ isSettings: !!session }), [session]);
30741
30807
  usePageMapper();
30742
30808
  useAutoConnect();
30743
30809
  useBackupStatusChanges();
@@ -30768,8 +30834,8 @@ function Dialog2() {
30768
30834
  /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(VisuallyHidden, { children: /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(DialogTitle, { children: "embarkAI" }) }),
30769
30835
  /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(DialogDescription, { className: "sr-only", children: "embarkAI wallet" }),
30770
30836
  !isHeaderHidden && /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(Header, {}),
30771
- /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(import_react103.AnimatePresence, { mode: "wait", initial: false, children: /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(
30772
- import_react103.motion.div,
30837
+ /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(import_react104.AnimatePresence, { mode: "wait", initial: false, children: /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(
30838
+ import_react104.motion.div,
30773
30839
  {
30774
30840
  style: { overflow: "hidden" },
30775
30841
  initial: { opacity: 0, height: transitionPageHeight },
@@ -30798,13 +30864,13 @@ function Dialog2() {
30798
30864
  }
30799
30865
  );
30800
30866
  }
30801
- var import_react103, import_react104, import_jsx_runtime135;
30867
+ var import_react104, import_react105, import_jsx_runtime135;
30802
30868
  var init_Dialog = __esm({
30803
30869
  "src/internal/components/Dialog/Dialog.tsx"() {
30804
30870
  init_ProviderContext();
30805
30871
  init_SessionContext();
30806
- import_react103 = require("motion/react");
30807
- import_react104 = require("react");
30872
+ import_react104 = require("motion/react");
30873
+ import_react105 = require("react");
30808
30874
  init_constants();
30809
30875
  init_useAllowExternalModalsScroll();
30810
30876
  init_useAutoConnect();
@@ -30835,47 +30901,56 @@ var init_Dialog2 = __esm({
30835
30901
  function DirectWalletHandler() {
30836
30902
  const walletMode = useProviderConfig().config.current?.wallet?.mode || "both";
30837
30903
  const externalAddress = useExternalWalletStore((st) => st.externalAddress);
30904
+ const externalChainId = useExternalWalletStore((st) => st.externalChainId);
30905
+ const externalConnectorName = useExternalWalletStore((st) => st.connectorName);
30838
30906
  const isExternalConnected = useExternalWalletStore((st) => st.isExternalConnected);
30839
- const { address, isConnected, chain, connector } = (0, import_wagmi10.useConnection)();
30840
- (0, import_react105.useEffect)(() => {
30907
+ const { address, isConnected, chainId, connector } = (0, import_wagmi8.useConnection)();
30908
+ (0, import_react106.useEffect)(() => {
30841
30909
  const { setConfigMode, setActiveMode } = useExternalWalletStore.getState();
30842
30910
  setConfigMode(walletMode);
30843
30911
  if (walletMode !== "both") setActiveMode(walletMode);
30844
30912
  }, [walletMode]);
30845
- (0, import_react105.useEffect)(() => {
30913
+ (0, import_react106.useEffect)(() => {
30846
30914
  if ((!!externalAddress || isExternalConnected) && !isConnected) {
30847
30915
  useExternalWalletStore.getState().clearExternalWallet();
30848
30916
  return;
30849
30917
  }
30850
- if (isConnected && address && connector && chain?.id && externalAddress !== address) {
30851
- useExternalWalletStore.getState().setExternalWallet({
30852
- address,
30853
- chainId: chain.id,
30854
- connectorName: connector.name || "Unknown Wallet"
30855
- });
30918
+ if (!isConnected || !address || !connector || !chainId) return;
30919
+ const connectorName = connector.name || "Unknown Wallet";
30920
+ if (externalAddress !== address || externalChainId !== chainId || externalConnectorName !== connectorName) {
30921
+ useExternalWalletStore.getState().setExternalWallet({ address, chainId, connectorName });
30856
30922
  }
30857
- }, [isConnected, address, isExternalConnected, externalAddress, connector, chain]);
30923
+ }, [
30924
+ isConnected,
30925
+ address,
30926
+ isExternalConnected,
30927
+ externalAddress,
30928
+ externalChainId,
30929
+ externalConnectorName,
30930
+ connector,
30931
+ chainId
30932
+ ]);
30858
30933
  return null;
30859
30934
  }
30860
- var import_react105, import_wagmi10;
30935
+ var import_react106, import_wagmi8;
30861
30936
  var init_DirectWalletHandler = __esm({
30862
30937
  "src/internal/components/DirectWalletHandler.tsx"() {
30863
- import_react105 = require("react");
30864
- import_wagmi10 = require("wagmi");
30938
+ import_react106 = require("react");
30939
+ import_wagmi8 = require("wagmi");
30865
30940
  init_ProviderContext();
30866
30941
  init_useExternalWalletStore();
30867
30942
  }
30868
30943
  });
30869
30944
 
30870
30945
  // src/internal/components/TssManager.tsx
30871
- var import_react106, TssManagerWithRef;
30946
+ var import_react107, TssManagerWithRef;
30872
30947
  var init_TssManager = __esm({
30873
30948
  "src/internal/components/TssManager.tsx"() {
30874
30949
  init_SessionContext();
30875
- import_react106 = __toESM(require("react"), 1);
30950
+ import_react107 = __toESM(require("react"), 1);
30876
30951
  init_auth();
30877
30952
  init_clients();
30878
- TssManagerWithRef = import_react106.default.forwardRef((props, ref) => {
30953
+ TssManagerWithRef = import_react107.default.forwardRef((props, ref) => {
30879
30954
  const { mpcPin } = props;
30880
30955
  const usePaymaster = useSession((st) => st.usePaymaster);
30881
30956
  const publicClient = useSession((st) => st.publicClient);
@@ -30883,14 +30958,14 @@ var init_TssManager = __esm({
30883
30958
  const setStatus = useSession((st) => st.setStatus);
30884
30959
  const setSession = useSession((st) => st.setSession);
30885
30960
  const setAddress = useSession((st) => st.setAddress);
30886
- const onSessionCreated = (0, import_react106.useCallback)(
30961
+ const onSessionCreated = (0, import_react107.useCallback)(
30887
30962
  (session, address) => {
30888
30963
  setSession(session);
30889
30964
  setAddress(address);
30890
30965
  },
30891
30966
  [setSession, setAddress]
30892
30967
  );
30893
- const createSessionWithKeyshare = import_react106.default.useCallback(
30968
+ const createSessionWithKeyshare = import_react107.default.useCallback(
30894
30969
  async (userId, hasServerKeyshare, isNewUser) => {
30895
30970
  setStatus("checking key management setup...");
30896
30971
  await ensureKeyshare(userId, hasServerKeyshare, setStatus, isNewUser);
@@ -30915,7 +30990,7 @@ var init_TssManager = __esm({
30915
30990
  },
30916
30991
  [setStatus, usePaymaster, activeChainId, publicClient, mpcPin]
30917
30992
  );
30918
- import_react106.default.useImperativeHandle(ref, () => ({ createSessionWithKeyshare }), [createSessionWithKeyshare]);
30993
+ import_react107.default.useImperativeHandle(ref, () => ({ createSessionWithKeyshare }), [createSessionWithKeyshare]);
30919
30994
  return null;
30920
30995
  });
30921
30996
  }
@@ -30939,7 +31014,7 @@ function waitForStoreHydration() {
30939
31014
  }
30940
31015
  function SessionProvider({ children }) {
30941
31016
  const config = useProviderConfig().config;
30942
- return /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)(import_react107.Fragment, {
31017
+ return /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)(import_react108.Fragment, {
30943
31018
  /** dApp's router might have its own error boundaries setup via imported @embarkai/ui-kitErrorBoundary */
30944
31019
  children: [
30945
31020
  children,
@@ -30959,11 +31034,11 @@ function SessionProvider({ children }) {
30959
31034
  ]
30960
31035
  });
30961
31036
  }
30962
- var import_read22, import_react107, import_zustand19, import_middleware5, import_jsx_runtime136, useSession, requireActiveChainId;
31037
+ var import_read22, import_react108, import_zustand19, import_middleware5, import_jsx_runtime136, useSession, requireActiveChainId;
30963
31038
  var init_SessionContext = __esm({
30964
31039
  "src/context/SessionContext.tsx"() {
30965
31040
  import_read22 = require("@embarkai/core/read");
30966
- import_react107 = require("react");
31041
+ import_react108 = require("react");
30967
31042
  import_zustand19 = require("zustand");
30968
31043
  import_middleware5 = require("zustand/middleware");
30969
31044
  init_ErrorBoundary2();
@@ -32313,7 +32388,7 @@ var init_iframe_manager = __esm({
32313
32388
  */
32314
32389
  handleMessage(event) {
32315
32390
  const message = event.data;
32316
- if (!message || typeof message !== "object" || !message.type) {
32391
+ if (!message || typeof message !== "object" || typeof message.type !== "string" || !message.type) {
32317
32392
  return;
32318
32393
  }
32319
32394
  message.type = this.normalizeMessageType(message.type);
@@ -33418,11 +33493,11 @@ function clearLegacyWagmiStorage() {
33418
33493
  }
33419
33494
  function Provider(props) {
33420
33495
  const { children, projectId, initialConfig = {}, callbacks } = props;
33421
- const callbacksRef = (0, import_react108.useRef)(callbacks);
33422
- (0, import_react108.useEffect)(() => notifyNoProjetctId(projectId), [projectId]);
33423
- const config = (0, import_react108.useRef)((0, import_lodash_es18.merge)({}, DEFAULT_PROVIDER_CONFIG, { projectId }, initialConfig));
33424
- const wagmiConfig3 = (0, import_react108.useRef)((0, import_core9.getWagmiConfig)(config.current?.wallet?.walletConnectId || null));
33425
- const updateConfig = (0, import_react108.useCallback)((updates) => {
33496
+ const callbacksRef = (0, import_react109.useRef)(callbacks);
33497
+ (0, import_react109.useEffect)(() => notifyNoProjetctId(projectId), [projectId]);
33498
+ const config = (0, import_react109.useRef)((0, import_lodash_es18.merge)({}, DEFAULT_PROVIDER_CONFIG, { projectId }, initialConfig));
33499
+ const wagmiConfig3 = (0, import_react109.useRef)((0, import_core9.getWagmiConfig)(config.current?.wallet?.walletConnectId || null));
33500
+ const updateConfig = (0, import_react109.useCallback)((updates) => {
33426
33501
  const prev = config.current;
33427
33502
  const next = { ...prev };
33428
33503
  if (updates.projectId !== void 0) next.projectId = updates.projectId;
@@ -33456,12 +33531,12 @@ function Provider(props) {
33456
33531
  if (updates.translations) next.translations = { ...next.translations, ...updates.translations };
33457
33532
  config.current = next;
33458
33533
  }, []);
33459
- const updateCallbacks = (0, import_react108.useCallback)((updates) => {
33534
+ const updateCallbacks = (0, import_react109.useCallback)((updates) => {
33460
33535
  const prev = callbacksRef.current;
33461
33536
  const next = updates ? { ...prev, ...updates } : void 0;
33462
33537
  callbacksRef.current = next;
33463
33538
  }, []);
33464
- (0, import_react108.useEffect)(() => {
33539
+ (0, import_react109.useEffect)(() => {
33465
33540
  if (typeof window === "undefined" || !projectId) return;
33466
33541
  const mergedConfig = (0, import_lodash_es18.merge)(DEFAULT_PROVIDER_CONFIG, initialConfig);
33467
33542
  updateConfig(mergedConfig);
@@ -33481,7 +33556,7 @@ function Provider(props) {
33481
33556
  useSession.getState().setActiveChainId(mergedConfig.network.chainId);
33482
33557
  }
33483
33558
  }, [projectId, initialConfig]);
33484
- (0, import_react108.useEffect)(() => {
33559
+ (0, import_react109.useEffect)(() => {
33485
33560
  if (typeof window === "undefined" || !projectId) return;
33486
33561
  try {
33487
33562
  (0, import_error_tracking4.initSdkErrorTracking)();
@@ -33510,7 +33585,7 @@ function Provider(props) {
33510
33585
  console.error("[PROVIDER] Error setting up iframe manager:", error);
33511
33586
  }
33512
33587
  }, [projectId]);
33513
- const contextValue = (0, import_react108.useMemo)(
33588
+ const contextValue = (0, import_react109.useMemo)(
33514
33589
  () => ({
33515
33590
  config,
33516
33591
  updateConfig,
@@ -33521,24 +33596,24 @@ function Provider(props) {
33521
33596
  }),
33522
33597
  [config, updateConfig, callbacks, updateCallbacks]
33523
33598
  );
33524
- return /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(UIContext.Provider, { value: contextValue, children: /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(import_wagmi11.WagmiProvider, { config: wagmiConfig3.current, children: /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(SessionProvider, { children }) }) });
33599
+ return /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(UIContext.Provider, { value: contextValue, children: /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(import_wagmi9.WagmiProvider, { config: wagmiConfig3.current, children: /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(SessionProvider, { children }) }) });
33525
33600
  }
33526
- var import_core9, import_error_tracking4, import_lodash_es18, import_react108, import_wagmi11, import_jsx_runtime137, UIContext, useProviderConfig;
33601
+ var import_core9, import_error_tracking4, import_lodash_es18, import_react109, import_wagmi9, import_jsx_runtime137, UIContext, useProviderConfig;
33527
33602
  var init_ProviderContext = __esm({
33528
33603
  "src/context/ProviderContext.tsx"() {
33529
33604
  import_core9 = require("@embarkai/core");
33530
33605
  import_error_tracking4 = require("@embarkai/core/internal/error-tracking");
33531
33606
  import_lodash_es18 = require("lodash-es");
33532
- import_react108 = require("react");
33533
- import_wagmi11 = require("wagmi");
33607
+ import_react109 = require("react");
33608
+ import_wagmi9 = require("wagmi");
33534
33609
  init_initial();
33535
33610
  init_iframe_manager();
33536
33611
  init_SessionContext();
33537
33612
  init_utils14();
33538
33613
  import_jsx_runtime137 = require("react/jsx-runtime");
33539
- UIContext = (0, import_react108.createContext)(void 0);
33614
+ UIContext = (0, import_react109.createContext)(void 0);
33540
33615
  useProviderConfig = () => {
33541
- const ctx = (0, import_react108.useContext)(UIContext);
33616
+ const ctx = (0, import_react109.useContext)(UIContext);
33542
33617
  if (!ctx) throw new Error("useProviderConfig must be used within a Provider");
33543
33618
  return ctx;
33544
33619
  };
@@ -33661,7 +33736,7 @@ init_ErrorBoundary2();
33661
33736
  init_lumia2();
33662
33737
  init_embarkAI2();
33663
33738
  var import_lucide_react86 = require("lucide-react");
33664
- var import_react109 = require("react");
33739
+ var import_react110 = require("react");
33665
33740
  init_SessionContext();
33666
33741
  init_auth();
33667
33742
  init_BalanceView2();
@@ -33694,10 +33769,10 @@ function ConnectWalletButton(props) {
33694
33769
  const colorMode = useLayoutStore((st) => st.colorMode);
33695
33770
  const { session, address, hasServerVault, isLoading, isIframeReady, status, setUsePaymaster } = useSession();
33696
33771
  const connectButtonLabel = getFormattedStatus(label || "Connect", status, isIframeReady);
33697
- (0, import_react109.useEffect)(() => setUsePaymaster(usePaymaster), [setUsePaymaster, usePaymaster]);
33772
+ (0, import_react110.useEffect)(() => setUsePaymaster(usePaymaster), [setUsePaymaster, usePaymaster]);
33698
33773
  const { data: profile, isLoading: isProfileLoading } = useUserProfile();
33699
33774
  const displayName = profile?.nicknameDisplay || profile?.displayName || import_auth25.jwtTokenManager.getDisplayName();
33700
- const indicators = (0, import_react109.useMemo)(() => {
33775
+ const indicators = (0, import_react110.useMemo)(() => {
33701
33776
  const userId = session?.mpcUserId;
33702
33777
  if (!userId) return { server: false, local: false, backup: false };
33703
33778
  const server = import_auth25.jwtTokenManager.getHasKeyshare() ?? false;
@@ -34336,14 +34411,14 @@ var Hash = ({
34336
34411
  };
34337
34412
 
34338
34413
  // src/internal/components/TransactionsMenu/TransactionsList.tsx
34339
- var import_react110 = require("react");
34414
+ var import_react111 = require("react");
34340
34415
  init_base3();
34341
34416
  var import_jsx_runtime144 = require("react/jsx-runtime");
34342
34417
  var TransactionsList = ({ address, itemsCount = 10 }) => {
34343
- const [transactions, setTransactions] = (0, import_react110.useState)([]);
34344
- const [loading, setLoading] = (0, import_react110.useState)(true);
34345
- const [error, setError] = (0, import_react110.useState)(null);
34346
- (0, import_react110.useEffect)(() => {
34418
+ const [transactions, setTransactions] = (0, import_react111.useState)([]);
34419
+ const [loading, setLoading] = (0, import_react111.useState)(true);
34420
+ const [error, setError] = (0, import_react111.useState)(null);
34421
+ (0, import_react111.useEffect)(() => {
34347
34422
  const fetchTransactions2 = async () => {
34348
34423
  try {
34349
34424
  setLoading(true);
@@ -34634,13 +34709,13 @@ function useUserOpStatus(options = {}) {
34634
34709
  init_useErc3643Compliance();
34635
34710
 
34636
34711
  // src/hooks/useWalletMode.ts
34637
- var import_react111 = require("react");
34712
+ var import_react112 = require("react");
34638
34713
  init_useExternalWalletStore();
34639
34714
  function useWalletMode() {
34640
34715
  const configMode = useExternalWalletStore((st) => st.configMode);
34641
34716
  const activeMode = useExternalWalletStore((st) => st.activeMode);
34642
34717
  const setActiveMode = useExternalWalletStore((st) => st.setActiveMode);
34643
- const switchMode = (0, import_react111.useCallback)(
34718
+ const switchMode = (0, import_react112.useCallback)(
34644
34719
  (mode) => {
34645
34720
  if (configMode !== "both") return;
34646
34721
  setActiveMode(mode);
@@ -34657,8 +34732,8 @@ function useWalletMode() {
34657
34732
 
34658
34733
  // src/hooks/useDirectWallet.ts
34659
34734
  init_useOpenPage();
34660
- var import_react112 = require("react");
34661
- var import_wagmi12 = require("wagmi");
34735
+ init_useSafeDisconnect();
34736
+ var import_react113 = require("react");
34662
34737
  init_useExternalWalletStore();
34663
34738
  function useDirectWallet() {
34664
34739
  const address = useExternalWalletStore((st) => st.externalAddress);
@@ -34666,11 +34741,11 @@ function useDirectWallet() {
34666
34741
  const isConnected = useExternalWalletStore((st) => st.isExternalConnected);
34667
34742
  const connectorName = useExternalWalletStore((st) => st.connectorName);
34668
34743
  const { open: openEmbarkAI } = useOpenPage();
34669
- const { mutate: wagmiDisconnect } = (0, import_wagmi12.useDisconnect)();
34670
- const connect = (0, import_react112.useCallback)((connectFlowType = "connect") => {
34744
+ const { mutate: wagmiDisconnect } = useSafeDisconnect();
34745
+ const connect = (0, import_react113.useCallback)((connectFlowType = "connect") => {
34671
34746
  openEmbarkAI("connect-external-wallet" /* CONNECT_EXTERNAL_WALLET */, { connectFlowType });
34672
34747
  }, []);
34673
- const disconnect = (0, import_react112.useCallback)(() => {
34748
+ const disconnect = (0, import_react113.useCallback)(() => {
34674
34749
  wagmiDisconnect();
34675
34750
  useExternalWalletStore.getState().clearExternalWallet();
34676
34751
  }, [wagmiDisconnect]);
@@ -34686,63 +34761,89 @@ function useDirectWallet() {
34686
34761
  }
34687
34762
 
34688
34763
  // src/hooks/useSendDirectTransaction.ts
34689
- var import_react113 = require("react");
34764
+ var import_react114 = require("react");
34690
34765
  var import_viem23 = require("viem");
34691
- var import_wagmi13 = require("wagmi");
34766
+ var import_wagmi10 = require("wagmi");
34767
+
34768
+ // src/internal/lib/direct-transaction.ts
34769
+ async function submitDirectTransaction(request, deps) {
34770
+ const { connector, switchChain, send } = deps;
34771
+ if (request.chainId) {
34772
+ const walletChainId = await connector.getChainId();
34773
+ if (walletChainId !== request.chainId) {
34774
+ await switchChain({ connector, chainId: request.chainId });
34775
+ }
34776
+ }
34777
+ return send({ ...request, connector });
34778
+ }
34779
+
34780
+ // src/hooks/useSendDirectTransaction.ts
34692
34781
  init_useExternalWalletStore();
34693
34782
  function useSendDirectTransaction() {
34694
34783
  const isConnected = useExternalWalletStore((st) => st.isExternalConnected);
34695
- const externalChainId = useExternalWalletStore((st) => st.externalChainId);
34696
- const { sendTransactionAsync } = (0, import_wagmi13.useSendTransaction)();
34697
- const { switchChainAsync } = (0, import_wagmi13.useSwitchChain)();
34698
- const [isPending, setIsPending] = (0, import_react113.useState)(false);
34699
- const [error, setError] = (0, import_react113.useState)(null);
34700
- const [txHash, setTxHash] = (0, import_react113.useState)(null);
34701
- const sendTransaction = (0, import_react113.useCallback)(
34784
+ const { connector } = (0, import_wagmi10.useConnection)();
34785
+ const { sendTransactionAsync: sendWagmiTransactionAsync } = (0, import_wagmi10.useSendTransaction)();
34786
+ const { switchChainAsync } = (0, import_wagmi10.useSwitchChain)();
34787
+ const [isPending, setIsPending] = (0, import_react114.useState)(false);
34788
+ const [error, setError] = (0, import_react114.useState)(null);
34789
+ const [txHash, setTxHash] = (0, import_react114.useState)(null);
34790
+ const sendTransactionAsync = (0, import_react114.useCallback)(
34702
34791
  async (params) => {
34703
- if (!isConnected) {
34704
- setError("No external wallet connected");
34705
- return null;
34792
+ if (!isConnected || !connector) {
34793
+ const message = "No external wallet connected";
34794
+ setError(message);
34795
+ throw new Error(message);
34706
34796
  }
34707
34797
  if (!(0, import_viem23.isAddress)(params.to)) {
34708
- setError("Invalid recipient address");
34709
- return null;
34798
+ const message = "Invalid recipient address";
34799
+ setError(message);
34800
+ throw new Error(message);
34710
34801
  }
34711
34802
  setIsPending(true);
34712
34803
  setError(null);
34713
34804
  setTxHash(null);
34714
34805
  try {
34715
- if (params.chainId && params.chainId !== externalChainId) {
34716
- await switchChainAsync({ chainId: params.chainId });
34717
- }
34718
- const hash = await sendTransactionAsync({
34719
- to: params.to,
34720
- value: (0, import_viem23.parseEther)(params.value),
34721
- data: params.data,
34722
- gas: params.gas
34723
- });
34806
+ const hash = await submitDirectTransaction(
34807
+ {
34808
+ to: params.to,
34809
+ value: (0, import_viem23.parseEther)(params.value),
34810
+ data: params.data,
34811
+ chainId: params.chainId,
34812
+ gas: params.gas
34813
+ },
34814
+ { connector, switchChain: switchChainAsync, send: sendWagmiTransactionAsync }
34815
+ );
34724
34816
  setTxHash(hash);
34725
34817
  return hash;
34726
34818
  } catch (err) {
34727
- const message = err instanceof Error ? err.message : "Transaction failed";
34728
- setError(message);
34729
- return null;
34819
+ setError(err instanceof Error ? err.message : "Transaction failed");
34820
+ throw err;
34730
34821
  } finally {
34731
34822
  setIsPending(false);
34732
34823
  }
34733
34824
  },
34734
- [isConnected, externalChainId, sendTransactionAsync, switchChainAsync]
34825
+ [isConnected, connector, sendWagmiTransactionAsync, switchChainAsync]
34735
34826
  );
34736
- const reset = (0, import_react113.useCallback)(() => {
34827
+ const sendTransaction = (0, import_react114.useCallback)(
34828
+ async (params) => {
34829
+ try {
34830
+ return await sendTransactionAsync(params);
34831
+ } catch {
34832
+ return null;
34833
+ }
34834
+ },
34835
+ [sendTransactionAsync]
34836
+ );
34837
+ const reset = (0, import_react114.useCallback)(() => {
34737
34838
  setError(null);
34738
34839
  setTxHash(null);
34739
34840
  setIsPending(false);
34740
34841
  }, []);
34741
- return { sendTransaction, isPending, error, txHash, reset };
34842
+ return { sendTransaction, sendTransactionAsync, isPending, error, txHash, reset };
34742
34843
  }
34743
34844
 
34744
34845
  // src/hooks/useTransferToLinkedWallet.ts
34745
- var import_react114 = require("react");
34846
+ var import_react115 = require("react");
34746
34847
  var import_viem24 = require("viem");
34747
34848
  init_SessionContext();
34748
34849
  init_account2();
@@ -34761,14 +34862,14 @@ var ERC20_TRANSFER_ABI2 = [
34761
34862
  function useTransferToLinkedWallet() {
34762
34863
  const session = useSession((st) => st.session);
34763
34864
  const { profiles } = useLinkedProfiles();
34764
- const [isPending, setIsPending] = (0, import_react114.useState)(false);
34765
- const [error, setError] = (0, import_react114.useState)(null);
34766
- const [userOpHash, setUserOpHash] = (0, import_react114.useState)(null);
34767
- const linkedWallets = (0, import_react114.useMemo)(
34865
+ const [isPending, setIsPending] = (0, import_react115.useState)(false);
34866
+ const [error, setError] = (0, import_react115.useState)(null);
34867
+ const [userOpHash, setUserOpHash] = (0, import_react115.useState)(null);
34868
+ const linkedWallets = (0, import_react115.useMemo)(
34768
34869
  () => (profiles || []).filter((p) => p.provider === "wallet" && p.externalId).map((p) => p.externalId),
34769
34870
  [profiles]
34770
34871
  );
34771
- const transfer = (0, import_react114.useCallback)(
34872
+ const transfer = (0, import_react115.useCallback)(
34772
34873
  async (params) => {
34773
34874
  if (!session) {
34774
34875
  setError("No active session");
@@ -34819,7 +34920,7 @@ function useTransferToLinkedWallet() {
34819
34920
  },
34820
34921
  [session, linkedWallets]
34821
34922
  );
34822
- const reset = (0, import_react114.useCallback)(() => {
34923
+ const reset = (0, import_react115.useCallback)(() => {
34823
34924
  setError(null);
34824
34925
  setUserOpHash(null);
34825
34926
  setIsPending(false);
@@ -34828,11 +34929,11 @@ function useTransferToLinkedWallet() {
34828
34929
  }
34829
34930
 
34830
34931
  // src/hooks/useNativeWalletSignature.ts
34831
- var import_wagmi14 = require("wagmi");
34932
+ var import_wagmi11 = require("wagmi");
34832
34933
  init_providers();
34833
34934
  function useNativeWalletSignature() {
34834
- const signMessage = (0, import_wagmi14.useSignMessage)();
34835
- const signTypedMessage = (0, import_wagmi14.useSignTypedData)();
34935
+ const signMessage = (0, import_wagmi11.useSignMessage)();
34936
+ const signTypedMessage = (0, import_wagmi11.useSignTypedData)();
34836
34937
  return {
34837
34938
  signMessage,
34838
34939
  /** EIP-712 signature */
@@ -34842,16 +34943,16 @@ function useNativeWalletSignature() {
34842
34943
  }
34843
34944
 
34844
34945
  // src/hooks/useLogout.ts
34946
+ init_useSafeDisconnect();
34845
34947
  var import_auth27 = require("@embarkai/core/auth");
34846
- var import_react115 = require("react");
34847
- var import_wagmi15 = require("wagmi");
34948
+ var import_react116 = require("react");
34848
34949
  init_ProviderContext();
34849
34950
  init_SessionContext();
34850
34951
  init_useExternalWalletStore();
34851
34952
  function useLogout() {
34852
34953
  const { callbacksRef } = useProviderConfig();
34853
34954
  const address = useSession((st) => st.address);
34854
- const { mutate: wagmiDisconnect } = (0, import_wagmi15.useDisconnect)({
34955
+ const { mutate: wagmiDisconnect } = useSafeDisconnect({
34855
34956
  mutation: {
34856
34957
  onSuccess: () => {
34857
34958
  useExternalWalletStore.getState().clearExternalWallet();
@@ -34862,7 +34963,7 @@ function useLogout() {
34862
34963
  }
34863
34964
  }
34864
34965
  });
34865
- const logout2 = (0, import_react115.useCallback)(async () => {
34966
+ const logout2 = (0, import_react116.useCallback)(async () => {
34866
34967
  const { setSession, setIsLoading, setAddress, setStatus, setError } = useSession.getState();
34867
34968
  const prevAddress = address;
34868
34969
  let userId = null;
@@ -34917,13 +35018,13 @@ init_useBlockscoutAssets2();
34917
35018
  init_SessionContext();
34918
35019
  var import_read24 = require("@embarkai/core/read");
34919
35020
  var import_viem25 = require("viem");
34920
- var import_wagmi16 = require("wagmi");
35021
+ var import_wagmi12 = require("wagmi");
34921
35022
  function useTransactions() {
34922
35023
  const chainId = requireActiveChainId();
34923
35024
  const viemChain = (0, import_read24.getViemChain)(chainId);
34924
- const publicClient = (0, import_wagmi16.usePublicClient)({ chainId });
34925
- const { data: walletClient } = (0, import_wagmi16.useWalletClient)();
34926
- const { address } = (0, import_wagmi16.useAccount)();
35025
+ const publicClient = (0, import_wagmi12.usePublicClient)({ chainId });
35026
+ const { data: walletClient } = (0, import_wagmi12.useWalletClient)();
35027
+ const { address } = (0, import_wagmi12.useAccount)();
34927
35028
  const sendTransaction = async (params) => {
34928
35029
  if (!walletClient) {
34929
35030
  throw new Error("Wallet not connected");
@@ -34981,9 +35082,9 @@ function useTransactions() {
34981
35082
 
34982
35083
  // src/modules/assets.ts
34983
35084
  init_SessionContext();
34984
- var import_react116 = __toESM(require("react"), 1);
35085
+ var import_react117 = __toESM(require("react"), 1);
34985
35086
  var import_viem26 = require("viem");
34986
- var import_wagmi17 = require("wagmi");
35087
+ var import_wagmi13 = require("wagmi");
34987
35088
  var COMMON_TOKENS = [
34988
35089
  // Add real token addresses here when available
34989
35090
  // {
@@ -35000,7 +35101,7 @@ function useAssets(address) {
35000
35101
  data: nativeBalance,
35001
35102
  isLoading: nativeBalanceLoading,
35002
35103
  refetch: refetchNativeBalance
35003
- } = (0, import_wagmi17.useBalance)({
35104
+ } = (0, import_wagmi13.useBalance)({
35004
35105
  address,
35005
35106
  chainId,
35006
35107
  query: {
@@ -35018,7 +35119,7 @@ function useAssets(address) {
35018
35119
  data: tokenBalances,
35019
35120
  isLoading: tokenBalancesLoading,
35020
35121
  refetch: refetchTokenBalances
35021
- } = (0, import_wagmi17.useReadContracts)({
35122
+ } = (0, import_wagmi13.useReadContracts)({
35022
35123
  contracts: tokenContracts,
35023
35124
  query: {
35024
35125
  enabled: !!address && COMMON_TOKENS.length > 0
@@ -35094,7 +35195,7 @@ function useAssets(address) {
35094
35195
  }
35095
35196
  function useTokenInfo(tokenAddress) {
35096
35197
  const chainId = requireActiveChainId();
35097
- const readContractsResult = (0, import_wagmi17.useReadContracts)({
35198
+ const readContractsResult = (0, import_wagmi13.useReadContracts)({
35098
35199
  contracts: [
35099
35200
  { address: tokenAddress, abi: import_viem26.erc20Abi, functionName: "name", chainId },
35100
35201
  { address: tokenAddress, abi: import_viem26.erc20Abi, functionName: "symbol", chainId },
@@ -35125,7 +35226,7 @@ function useTokenBalance2(tokenAddress, userAddress) {
35125
35226
  data: balance,
35126
35227
  isLoading,
35127
35228
  refetch
35128
- } = (0, import_wagmi17.useReadContract)({
35229
+ } = (0, import_wagmi13.useReadContract)({
35129
35230
  address: tokenAddress,
35130
35231
  abi: import_viem26.erc20Abi,
35131
35232
  functionName: "balanceOf",
@@ -35136,7 +35237,7 @@ function useTokenBalance2(tokenAddress, userAddress) {
35136
35237
  }
35137
35238
  });
35138
35239
  const { tokenInfo } = useTokenInfo(tokenAddress);
35139
- const formattedBalance = import_react116.default.useMemo(() => {
35240
+ const formattedBalance = import_react117.default.useMemo(() => {
35140
35241
  if (!balance || !tokenInfo) return "0";
35141
35242
  return (0, import_viem26.formatUnits)(balance, tokenInfo.decimals);
35142
35243
  }, [balance, tokenInfo]);