@volr/react 0.1.134 → 0.2.0

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.js CHANGED
@@ -18956,6 +18956,28 @@ function normalizeCall(call2) {
18956
18956
  function normalizeCalls(calls) {
18957
18957
  return calls.map(normalizeCall);
18958
18958
  }
18959
+
18960
+ // src/errors/wallet-errors.ts
18961
+ var WalletRequiredError = class _WalletRequiredError extends Error {
18962
+ constructor(action, message) {
18963
+ super(
18964
+ message || "Wallet is required for this action. Please create a Volr account (passkey/MPC) or provide a wallet provider."
18965
+ );
18966
+ this.code = "WALLET_REQUIRED";
18967
+ this.name = "WalletRequiredError";
18968
+ this.action = action;
18969
+ Object.setPrototypeOf(this, _WalletRequiredError.prototype);
18970
+ }
18971
+ };
18972
+ function isWalletRequiredError(error) {
18973
+ if (error instanceof WalletRequiredError) return true;
18974
+ if (error && typeof error === "object" && error.code === "WALLET_REQUIRED") {
18975
+ return true;
18976
+ }
18977
+ return false;
18978
+ }
18979
+
18980
+ // src/wallet/signer.ts
18959
18981
  async function resolveSigner(input) {
18960
18982
  const { explicitSigner, provider, chainId, client, user, setProvider } = input;
18961
18983
  if (explicitSigner) {
@@ -19014,8 +19036,9 @@ async function resolveSigner(input) {
19014
19036
  const signer = await selectSigner(signerContext);
19015
19037
  return { signer, activeProvider: restoredProvider };
19016
19038
  }
19017
- throw new Error(
19018
- "No wallet provider configured. Please set up a Passkey provider to sign transactions. SIWE is authentication-only."
19039
+ throw new WalletRequiredError(
19040
+ "send_transaction",
19041
+ "No wallet provider available. Please create a Volr wallet (passkey/MPC) first."
19019
19042
  );
19020
19043
  }
19021
19044
 
@@ -19181,11 +19204,6 @@ async function sendCalls(args) {
19181
19204
  const normalizedFrom = normalizeHex(from14);
19182
19205
  const normalizedCalls = normalizeCalls(calls);
19183
19206
  validateCalls2(normalizedCalls);
19184
- if (!deps.provider && deps.user?.keyStorageType !== "passkey") {
19185
- throw new Error(
19186
- "No wallet provider configured. Please set up a Passkey provider to sign transactions. SIWE is authentication-only."
19187
- );
19188
- }
19189
19207
  let currentUser = deps.user;
19190
19208
  if (deps.user?.keyStorageType === "passkey" && !deps.provider) {
19191
19209
  try {
@@ -19257,15 +19275,52 @@ async function sendCalls(args) {
19257
19275
  let signer;
19258
19276
  let activeProvider = null;
19259
19277
  try {
19260
- const resolved = await resolveSigner({
19261
- explicitSigner: void 0,
19262
- // Always resolve internally
19263
- provider: deps.provider,
19264
- chainId,
19265
- client: deps.client,
19266
- user: currentUser,
19267
- setProvider: deps.setProvider
19268
- });
19278
+ let resolved = null;
19279
+ try {
19280
+ resolved = await resolveSigner({
19281
+ explicitSigner: void 0,
19282
+ // Always resolve internally
19283
+ provider: deps.provider,
19284
+ chainId,
19285
+ client: deps.client,
19286
+ user: currentUser,
19287
+ setProvider: deps.setProvider
19288
+ });
19289
+ } catch (err) {
19290
+ if (isWalletRequiredError(err) && deps.onWalletRequired) {
19291
+ const maybeProvider = await deps.onWalletRequired({
19292
+ type: "transaction",
19293
+ chainId
19294
+ });
19295
+ if (!maybeProvider) {
19296
+ throw err;
19297
+ }
19298
+ await deps.setProvider(maybeProvider);
19299
+ try {
19300
+ const refreshedUser = await deps.client.refreshSession();
19301
+ if (refreshedUser) {
19302
+ currentUser = refreshedUser;
19303
+ }
19304
+ } catch {
19305
+ }
19306
+ resolved = await resolveSigner({
19307
+ explicitSigner: void 0,
19308
+ provider: maybeProvider,
19309
+ chainId,
19310
+ client: deps.client,
19311
+ user: currentUser,
19312
+ setProvider: deps.setProvider
19313
+ });
19314
+ } else {
19315
+ throw err;
19316
+ }
19317
+ }
19318
+ if (!resolved) {
19319
+ throw new WalletRequiredError(
19320
+ "send_transaction",
19321
+ "No wallet provider available. Please create a Volr wallet (passkey/MPC) first."
19322
+ );
19323
+ }
19269
19324
  signer = resolved.signer;
19270
19325
  activeProvider = resolved.activeProvider;
19271
19326
  const result = await deps.relay(
@@ -19298,61 +19353,77 @@ function useVolr() {
19298
19353
  const { relay } = useRelay();
19299
19354
  const { client: apiClient } = useInternalAuth();
19300
19355
  const restoringRef = useRef(null);
19356
+ const userRef = useRef(user);
19357
+ const providerRef = useRef(provider);
19358
+ useEffect(() => {
19359
+ userRef.current = user;
19360
+ }, [user]);
19361
+ useEffect(() => {
19362
+ providerRef.current = provider;
19363
+ }, [provider]);
19301
19364
  const getRpcUrl = useCallback(
19302
19365
  createGetRpcUrl({ client: apiClient, rpcOverrides: config.rpcOverrides }),
19303
19366
  [apiClient, config.rpcOverrides]
19304
19367
  );
19305
- const ensureProvider = useCallback(async () => {
19306
- if (provider) {
19307
- return provider;
19308
- }
19309
- if (!user?.keyStorageType || user.keyStorageType !== "passkey") {
19310
- throw new Error(
19311
- "No wallet provider available. Please complete passkey enrollment first."
19312
- );
19313
- }
19314
- if (!user.id) {
19315
- throw new Error(
19316
- "Missing passkey data. Please re-enroll your passkey."
19317
- );
19318
- }
19319
- const currentRpId = typeof window !== "undefined" ? window.location.hostname : "localhost";
19320
- const domainPasskey = user.registeredPasskeys?.find((p) => p.rpId === currentRpId) ?? null;
19321
- const blobUrl = domainPasskey?.blobUrl ?? user.blobUrl;
19322
- const prfInput = domainPasskey?.prfInput ?? user.prfInput;
19323
- const credentialId = domainPasskey?.credentialId ?? user.credentialId;
19324
- if (user.registeredPasskeys?.length && !domainPasskey) {
19325
- throw new Error(
19326
- `PASSKEY_DOMAIN_MISMATCH: No passkey registered for rpId=${currentRpId}`
19327
- );
19328
- }
19329
- if (!blobUrl || !prfInput) {
19330
- throw new Error("Missing passkey data. Please re-enroll your passkey.");
19331
- }
19332
- if (restoringRef.current) {
19368
+ const ensureProvider = useCallback(
19369
+ async (args) => {
19370
+ if (providerRef.current) {
19371
+ return providerRef.current;
19372
+ }
19373
+ const currentUser = userRef.current;
19374
+ if (!currentUser?.keyStorageType || currentUser.keyStorageType !== "passkey") {
19375
+ if (config.onWalletRequired) {
19376
+ const maybeProvider = await config.onWalletRequired(args.request);
19377
+ if (maybeProvider) {
19378
+ await setProvider(maybeProvider);
19379
+ return maybeProvider;
19380
+ }
19381
+ }
19382
+ throw new WalletRequiredError(args.action);
19383
+ }
19384
+ if (!currentUser.id) {
19385
+ throw new Error("Missing user id. Please login again.");
19386
+ }
19387
+ const currentRpId = typeof window !== "undefined" ? window.location.hostname : "localhost";
19388
+ const domainPasskey = currentUser.registeredPasskeys?.find((p) => p.rpId === currentRpId) ?? null;
19389
+ const blobUrl = domainPasskey?.blobUrl ?? currentUser.blobUrl;
19390
+ const prfInput = domainPasskey?.prfInput ?? currentUser.prfInput;
19391
+ const credentialId = domainPasskey?.credentialId ?? currentUser.credentialId;
19392
+ if (currentUser.registeredPasskeys?.length && !domainPasskey) {
19393
+ throw new Error(
19394
+ `PASSKEY_DOMAIN_MISMATCH: No passkey registered for rpId=${currentRpId}`
19395
+ );
19396
+ }
19397
+ if (!blobUrl || !prfInput) {
19398
+ throw new Error("Missing passkey data. Please re-enroll your passkey.");
19399
+ }
19400
+ if (restoringRef.current) {
19401
+ return restoringRef.current;
19402
+ }
19403
+ restoringRef.current = restorePasskey({
19404
+ client: apiClient,
19405
+ userId: currentUser.id,
19406
+ blobUrl,
19407
+ prfInput,
19408
+ credentialId
19409
+ }).then(async ({ provider: restoredProvider }) => {
19410
+ await setProvider(restoredProvider);
19411
+ restoringRef.current = null;
19412
+ return restoredProvider;
19413
+ }).catch((err) => {
19414
+ restoringRef.current = null;
19415
+ throw err;
19416
+ });
19333
19417
  return restoringRef.current;
19334
- }
19335
- console.log("[useVolr] Auto-restoring passkey provider...");
19336
- restoringRef.current = restorePasskey({
19337
- client: apiClient,
19338
- userId: user.id,
19339
- blobUrl,
19340
- prfInput,
19341
- credentialId
19342
- }).then(async ({ provider: restoredProvider }) => {
19343
- await setProvider(restoredProvider);
19344
- console.log("[useVolr] Passkey provider restored successfully");
19345
- restoringRef.current = null;
19346
- return restoredProvider;
19347
- }).catch((err) => {
19348
- restoringRef.current = null;
19349
- throw err;
19350
- });
19351
- return restoringRef.current;
19352
- }, [provider, user, apiClient, setProvider]);
19418
+ },
19419
+ [apiClient, config.onWalletRequired, setProvider]
19420
+ );
19353
19421
  const signMessage = useCallback(
19354
19422
  async (message) => {
19355
- const activeProvider = await ensureProvider();
19423
+ const activeProvider = await ensureProvider({
19424
+ request: { type: "message" },
19425
+ action: "sign_message"
19426
+ });
19356
19427
  if (config.onSignRequest) {
19357
19428
  await config.onSignRequest({ type: "message", message });
19358
19429
  }
@@ -19376,7 +19447,10 @@ function useVolr() {
19376
19447
  );
19377
19448
  const signTypedData = useCallback(
19378
19449
  async (typedData) => {
19379
- const activeProvider = await ensureProvider();
19450
+ const activeProvider = await ensureProvider({
19451
+ request: { type: "typedData" },
19452
+ action: "sign_typed_data"
19453
+ });
19380
19454
  if (config.onSignRequest) {
19381
19455
  await config.onSignRequest({ type: "typedData", typedData });
19382
19456
  }
@@ -19413,10 +19487,30 @@ function useVolr() {
19413
19487
  },
19414
19488
  sendTransaction: async (tx, opts = {}) => {
19415
19489
  const { publicClient: publicClient2, extendedRpcClient: rpcClient } = await ensureRpcClient();
19416
- const from14 = opts.from ?? user?.evmAddress;
19490
+ let from14 = opts.from ?? userRef.current?.evmAddress;
19491
+ let providerForDeps = providerRef.current ?? null;
19492
+ if (!from14 && config.onWalletRequired) {
19493
+ const maybeProvider = await config.onWalletRequired({
19494
+ type: "transaction",
19495
+ chainId
19496
+ });
19497
+ if (maybeProvider) {
19498
+ providerForDeps = maybeProvider;
19499
+ await setProvider(maybeProvider);
19500
+ try {
19501
+ const refreshed = await apiClient.refreshSession();
19502
+ if (refreshed?.evmAddress) {
19503
+ from14 = refreshed.evmAddress;
19504
+ }
19505
+ } catch {
19506
+ }
19507
+ from14 = from14 ?? userRef.current?.evmAddress;
19508
+ }
19509
+ }
19417
19510
  if (!from14) {
19418
- throw new Error(
19419
- "from address is required. Provide it in opts.from or ensure user is logged in."
19511
+ throw new WalletRequiredError(
19512
+ "send_transaction",
19513
+ "Wallet address is required. Please create a Volr wallet (passkey/MPC) first."
19420
19514
  );
19421
19515
  }
19422
19516
  const call2 = {
@@ -19436,18 +19530,39 @@ function useVolr() {
19436
19530
  precheck,
19437
19531
  relay,
19438
19532
  client: apiClient,
19439
- user: user ?? null,
19440
- provider: provider ?? null,
19441
- setProvider
19533
+ user: userRef.current ?? null,
19534
+ provider: providerForDeps,
19535
+ setProvider,
19536
+ onWalletRequired: config.onWalletRequired
19442
19537
  }
19443
19538
  });
19444
19539
  },
19445
19540
  sendBatch: (async (calls, opts = {}) => {
19446
19541
  const { publicClient: publicClient2, extendedRpcClient: rpcClient } = await ensureRpcClient();
19447
- const from14 = opts.from ?? user?.evmAddress;
19542
+ let from14 = opts.from ?? userRef.current?.evmAddress;
19543
+ let providerForDeps = providerRef.current ?? null;
19544
+ if (!from14 && config.onWalletRequired) {
19545
+ const maybeProvider = await config.onWalletRequired({
19546
+ type: "transaction",
19547
+ chainId
19548
+ });
19549
+ if (maybeProvider) {
19550
+ providerForDeps = maybeProvider;
19551
+ await setProvider(maybeProvider);
19552
+ try {
19553
+ const refreshed = await apiClient.refreshSession();
19554
+ if (refreshed?.evmAddress) {
19555
+ from14 = refreshed.evmAddress;
19556
+ }
19557
+ } catch {
19558
+ }
19559
+ from14 = from14 ?? userRef.current?.evmAddress;
19560
+ }
19561
+ }
19448
19562
  if (!from14) {
19449
- throw new Error(
19450
- "from address is required. Provide it in opts.from or ensure user is logged in."
19563
+ throw new WalletRequiredError(
19564
+ "send_transaction",
19565
+ "Wallet address is required. Please create a Volr wallet (passkey/MPC) first."
19451
19566
  );
19452
19567
  }
19453
19568
  const isCallArray = (calls2) => {
@@ -19470,15 +19585,16 @@ function useVolr() {
19470
19585
  precheck,
19471
19586
  relay,
19472
19587
  client: apiClient,
19473
- user: user ?? null,
19474
- provider: provider ?? null,
19475
- setProvider
19588
+ user: userRef.current ?? null,
19589
+ provider: providerForDeps,
19590
+ setProvider,
19591
+ onWalletRequired: config.onWalletRequired
19476
19592
  }
19477
19593
  });
19478
19594
  })
19479
19595
  };
19480
19596
  },
19481
- [user, provider, precheck, relay, getRpcUrl, setProvider, apiClient]
19597
+ [precheck, relay, getRpcUrl, setProvider, apiClient, config.onWalletRequired]
19482
19598
  );
19483
19599
  const evm = useMemo(
19484
19600
  () => ({
@@ -19496,11 +19612,101 @@ function useVolr() {
19496
19612
  email: user?.email,
19497
19613
  isLoggedIn: user !== null,
19498
19614
  signerType: user?.signerType,
19615
+ hasWallet: Boolean(user?.evmAddress),
19499
19616
  logout,
19500
19617
  isLoading,
19501
19618
  error
19502
19619
  };
19503
19620
  }
19621
+
19622
+ // src/utils/session-broadcast.ts
19623
+ function broadcastSessionEvent(event) {
19624
+ if (typeof window === "undefined") return;
19625
+ if (!("BroadcastChannel" in window)) return;
19626
+ const channel = new BroadcastChannel(STORAGE_CHANNELS.session);
19627
+ channel.postMessage(event);
19628
+ channel.close();
19629
+ }
19630
+
19631
+ // src/hooks/useVolrSession.ts
19632
+ function toVolrUser(u) {
19633
+ return {
19634
+ id: u.id,
19635
+ projectId: u.projectId,
19636
+ projectName: u.projectName,
19637
+ email: u.email,
19638
+ authWallet: u.authWallet ?? void 0,
19639
+ evmAddress: u.evmAddress,
19640
+ keyStorageType: u.keyStorageType ?? void 0,
19641
+ signerType: u.signerType ?? void 0,
19642
+ walletConnector: u.walletConnector ?? void 0,
19643
+ lastWalletChainId: u.lastWalletChainId ?? void 0,
19644
+ blobUrl: u.blobUrl ?? void 0,
19645
+ prfInput: u.prfInput ?? void 0,
19646
+ credentialId: u.credentialId ?? void 0,
19647
+ registeredPasskeys: u.registeredPasskeys ?? void 0
19648
+ };
19649
+ }
19650
+ function useVolrSession() {
19651
+ const { setUser, logout } = useVolrContext();
19652
+ const { client, setAccessToken, setRefreshToken } = useInternalAuth();
19653
+ const setSession = useCallback(
19654
+ async (session) => {
19655
+ setAccessToken(session.accessToken);
19656
+ setRefreshToken(session.refreshToken);
19657
+ const refreshedUser = await client.refreshSession();
19658
+ if (!refreshedUser) {
19659
+ throw new Error("Failed to refresh session. Please try logging in again.");
19660
+ }
19661
+ const nextUser = toVolrUser(refreshedUser);
19662
+ setUser(nextUser);
19663
+ const nextAccess = client.getAccessToken();
19664
+ const nextRefresh = client.getRefreshToken();
19665
+ if (nextAccess) setAccessToken(nextAccess);
19666
+ if (nextRefresh) setRefreshToken(nextRefresh);
19667
+ if (nextAccess && nextRefresh) {
19668
+ broadcastSessionEvent({
19669
+ type: "LOGIN",
19670
+ payload: { accessToken: nextAccess, refreshToken: nextRefresh, user: refreshedUser }
19671
+ });
19672
+ }
19673
+ return nextUser;
19674
+ },
19675
+ [client, setAccessToken, setRefreshToken, setUser]
19676
+ );
19677
+ const clearSession = useCallback(async () => {
19678
+ await logout();
19679
+ broadcastSessionEvent({ type: "LOGOUT" });
19680
+ }, [logout]);
19681
+ const exchangeOidc = useCallback(
19682
+ async (idToken) => {
19683
+ const response = await client.post("/auth/oidc/exchange", {
19684
+ idToken
19685
+ });
19686
+ setAccessToken(response.accessToken);
19687
+ setRefreshToken(response.refreshToken);
19688
+ const nextUser = toVolrUser(response.user);
19689
+ setUser(nextUser);
19690
+ broadcastSessionEvent({
19691
+ type: "LOGIN",
19692
+ payload: {
19693
+ accessToken: response.accessToken,
19694
+ refreshToken: response.refreshToken,
19695
+ user: response.user
19696
+ }
19697
+ });
19698
+ return {
19699
+ userId: response.user?.id || "",
19700
+ isNewUser: response.isNewUser,
19701
+ keyStorageType: response.user?.keyStorageType ?? null,
19702
+ signerType: response.user?.signerType ?? null,
19703
+ accessToken: response.accessToken
19704
+ };
19705
+ },
19706
+ [client, setAccessToken, setRefreshToken, setUser]
19707
+ );
19708
+ return { setSession, clearSession, exchangeOidc };
19709
+ }
19504
19710
  init_sha3();
19505
19711
  init_utils2();
19506
19712
  function toChecksumAddress(address) {
@@ -19519,7 +19725,7 @@ function toChecksumAddress(address) {
19519
19725
  function useVolrLogin() {
19520
19726
  const { config, setUser } = useVolrContext();
19521
19727
  const { setAccessToken, setRefreshToken, client } = useInternalAuth();
19522
- const toVolrUser = useCallback((u) => {
19728
+ const toVolrUser2 = useCallback((u) => {
19523
19729
  return {
19524
19730
  id: u.id,
19525
19731
  projectId: u.projectId,
@@ -19578,7 +19784,7 @@ function useVolrLogin() {
19578
19784
  );
19579
19785
  }
19580
19786
  if (userFromServer) {
19581
- setUser(toVolrUser(userFromServer));
19787
+ setUser(toVolrUser2(userFromServer));
19582
19788
  } else {
19583
19789
  setUser({ id: "", email: normalizedEmail });
19584
19790
  }
@@ -19590,7 +19796,7 @@ function useVolrLogin() {
19590
19796
  accessToken
19591
19797
  };
19592
19798
  },
19593
- [client, setAccessToken, setRefreshToken, setUser, toVolrUser]
19799
+ [client, setAccessToken, setRefreshToken, setUser, toVolrUser2]
19594
19800
  );
19595
19801
  const handleSocialLogin = useCallback(
19596
19802
  async (provider) => {
@@ -19628,7 +19834,7 @@ function useVolrLogin() {
19628
19834
  setRefreshToken(refreshToken);
19629
19835
  }
19630
19836
  if (userFromServer) {
19631
- setUser(toVolrUser(userFromServer));
19837
+ setUser(toVolrUser2(userFromServer));
19632
19838
  }
19633
19839
  return {
19634
19840
  userId: userFromServer?.id || "",
@@ -19646,7 +19852,7 @@ function useVolrLogin() {
19646
19852
  throw error;
19647
19853
  }
19648
19854
  },
19649
- [client, setAccessToken, setRefreshToken, setUser, toVolrUser]
19855
+ [client, setAccessToken, setRefreshToken, setUser, toVolrUser2]
19650
19856
  );
19651
19857
  const signWithWallet = useCallback(
19652
19858
  async (walletAddress, options) => {
@@ -19693,11 +19899,11 @@ Issued At: ${issuedAt}`;
19693
19899
  if (response.status === "completed" && response.tokens && response.user) {
19694
19900
  setAccessToken(response.tokens.accessToken);
19695
19901
  setRefreshToken(response.tokens.refreshToken);
19696
- setUser(toVolrUser(response.user));
19902
+ setUser(toVolrUser2(response.user));
19697
19903
  }
19698
19904
  return response;
19699
19905
  },
19700
- [client, setAccessToken, setRefreshToken, setUser, toVolrUser]
19906
+ [client, setAccessToken, setRefreshToken, setUser, toVolrUser2]
19701
19907
  );
19702
19908
  const getSiweSignUrl = useCallback(
19703
19909
  (sessionId) => {
@@ -19737,7 +19943,7 @@ function useVolrAuthCallback(options = {}) {
19737
19943
  const [isNewUser, setIsNewUser] = useState(false);
19738
19944
  const [user, setLocalUser] = useState(null);
19739
19945
  const hasProcessed = useRef(false);
19740
- const toVolrUser = useCallback((u) => {
19946
+ const toVolrUser2 = useCallback((u) => {
19741
19947
  return {
19742
19948
  id: u.id,
19743
19949
  projectId: u.projectId,
@@ -19797,7 +20003,7 @@ function useVolrAuthCallback(options = {}) {
19797
20003
  if (refreshToken) {
19798
20004
  setRefreshToken(refreshToken);
19799
20005
  }
19800
- const volrUser = toVolrUser(userData);
20006
+ const volrUser = toVolrUser2(userData);
19801
20007
  setUser(volrUser);
19802
20008
  setLocalUser(volrUser);
19803
20009
  if (clearUrlParams && typeof window !== "undefined") {
@@ -21340,6 +21546,6 @@ function detectWalletConnector(provider, providerInfo) {
21340
21546
  (*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) *)
21341
21547
  */
21342
21548
 
21343
- export { DEFAULT_EXPIRES_IN_SEC, DEFAULT_MODE, InAppBrowserNotSupportedError, PasskeyNotFoundError, PrfNotSupportedError, UserCancelledError, VolrProvider, WebAuthnBusyError, analyzeContractForEIP7702, buildCall, buildCalls, checkPrfCompatibility, checkPrfExtensionAvailable, checkPrfSupport, compareERC20Balances, compareWalletStates, completeMigration, createGetNetworkInfo, createPasskeyAdapter, debugTransactionFailure, decryptEntropyForMigration, defaultIdempotencyKey, detectWalletConnector, diagnoseTransactionFailure, getBrowserVersion, getERC20Balance, getIOSVersion, getPasskeyAuthGuidance, getPlatformHint, getUserCredentials, getWalletState, isEIP7702Delegated, isInAppBrowser, isInAppBrowserNotSupportedError, isUserCancelledError, isWebAuthnBusyError, listenForSeedRequests, normalizeHex, normalizeHexArray, openMigrationPopup, requestMigration, requestSeedFromOpener, sendSeedToPopup, uploadBlobViaPresign, useDepositListener, useEIP6963, useInternalAuth, useMpcConnection, usePasskeyEnrollment, usePrecheck, useRelay, useUserBalances, useVolr, useVolrAuthCallback, useVolrContext, useVolrLogin, useVolrPaymentApi, useWithdraw };
21549
+ export { DEFAULT_EXPIRES_IN_SEC, DEFAULT_MODE, InAppBrowserNotSupportedError, PasskeyNotFoundError, PrfNotSupportedError, UserCancelledError, VolrProvider, WalletRequiredError, WebAuthnBusyError, analyzeContractForEIP7702, buildCall, buildCalls, checkPrfCompatibility, checkPrfExtensionAvailable, checkPrfSupport, compareERC20Balances, compareWalletStates, completeMigration, createGetNetworkInfo, createPasskeyAdapter, debugTransactionFailure, decryptEntropyForMigration, defaultIdempotencyKey, detectWalletConnector, diagnoseTransactionFailure, getBrowserVersion, getERC20Balance, getIOSVersion, getPasskeyAuthGuidance, getPlatformHint, getUserCredentials, getWalletState, isEIP7702Delegated, isInAppBrowser, isInAppBrowserNotSupportedError, isUserCancelledError, isWalletRequiredError, isWebAuthnBusyError, listenForSeedRequests, normalizeHex, normalizeHexArray, openMigrationPopup, requestMigration, requestSeedFromOpener, sendSeedToPopup, uploadBlobViaPresign, useDepositListener, useEIP6963, useInternalAuth, useMpcConnection, usePasskeyEnrollment, usePrecheck, useRelay, useUserBalances, useVolr, useVolrAuthCallback, useVolrContext, useVolrLogin, useVolrPaymentApi, useVolrSession, useWithdraw };
21344
21550
  //# sourceMappingURL=index.js.map
21345
21551
  //# sourceMappingURL=index.js.map