@bounded-sh/client 0.0.114 → 0.0.116

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.
Files changed (58) hide show
  1. package/dist/auth/providers/injected-wallet-types.d.ts +11 -2
  2. package/dist/auth/providers/wallet-standard-discovery.d.ts +2 -0
  3. package/dist/auth/turnkey-signer-window.d.ts +19 -0
  4. package/dist/auth/turnkey-signing-capability.d.ts +5 -1
  5. package/dist/{email-auth-provider-Cr66GaKw.js → email-auth-provider-3tuw_aDK.js} +2 -2
  6. package/dist/{email-auth-provider-Cr66GaKw.js.map → email-auth-provider-3tuw_aDK.js.map} +1 -1
  7. package/dist/{email-auth-provider-DeORQbTK.js → email-auth-provider-BFOw9iI9.js} +2 -2
  8. package/dist/{email-auth-provider-DeORQbTK.js.map → email-auth-provider-BFOw9iI9.js.map} +1 -1
  9. package/dist/{email-auth-provider-Bk5GSpYT.mjs → email-auth-provider-C5bYKzpN.mjs} +2 -2
  10. package/dist/{email-auth-provider-Bk5GSpYT.mjs.map → email-auth-provider-C5bYKzpN.mjs.map} +1 -1
  11. package/dist/{email-auth-provider-nDZjRDpj.mjs → email-auth-provider-CmbRj-_I.mjs} +2 -2
  12. package/dist/{email-auth-provider-nDZjRDpj.mjs.map → email-auth-provider-CmbRj-_I.mjs.map} +1 -1
  13. package/dist/{guest-auth-provider-ejUTbjCC.mjs → guest-auth-provider-Bvoaq-zC.mjs} +2 -2
  14. package/dist/{guest-auth-provider-DDudqqxY.mjs.map → guest-auth-provider-Bvoaq-zC.mjs.map} +1 -1
  15. package/dist/{guest-auth-provider-DDudqqxY.mjs → guest-auth-provider-CsM_SuGH.mjs} +2 -2
  16. package/dist/{guest-auth-provider-ejUTbjCC.mjs.map → guest-auth-provider-CsM_SuGH.mjs.map} +1 -1
  17. package/dist/{guest-auth-provider-5bX-xt6K.js → guest-auth-provider-DJD3zkBU.js} +2 -2
  18. package/dist/{guest-auth-provider-5bX-xt6K.js.map → guest-auth-provider-DJD3zkBU.js.map} +1 -1
  19. package/dist/{guest-auth-provider-CUNkZVFK.js → guest-auth-provider-_jdqZKUo.js} +2 -2
  20. package/dist/{guest-auth-provider-CUNkZVFK.js.map → guest-auth-provider-_jdqZKUo.js.map} +1 -1
  21. package/dist/{index-BAiLpNEQ.mjs → index-BmBLsYn2.mjs} +797 -73
  22. package/dist/index-BmBLsYn2.mjs.map +1 -0
  23. package/dist/{index-BZ0X1Z9X.js → index-C2xAP67N.js} +801 -71
  24. package/dist/index-C2xAP67N.js.map +1 -0
  25. package/dist/index.d.ts +3 -1
  26. package/dist/index.js +6 -1
  27. package/dist/index.js.map +1 -1
  28. package/dist/index.mjs +1 -1
  29. package/dist/{index.native-DJSOqyKQ.js → index.native-CMNMw3Pe.js} +83 -22
  30. package/dist/index.native-CMNMw3Pe.js.map +1 -0
  31. package/dist/{index.native-DcW2klyn.mjs → index.native-DfDVa7MG.mjs} +85 -24
  32. package/dist/index.native-DfDVa7MG.mjs.map +1 -0
  33. package/dist/index.native.js +1 -1
  34. package/dist/index.native.mjs +1 -1
  35. package/dist/{injected-evm-wallet-provider-C4aKa2v1.mjs → injected-evm-wallet-provider-B2xteR2I.mjs} +2 -2
  36. package/dist/{injected-evm-wallet-provider-C4aKa2v1.mjs.map → injected-evm-wallet-provider-B2xteR2I.mjs.map} +1 -1
  37. package/dist/{injected-evm-wallet-provider-D06arDQD.js → injected-evm-wallet-provider-CL_FBjLe.js} +2 -2
  38. package/dist/{injected-evm-wallet-provider-D06arDQD.js.map → injected-evm-wallet-provider-CL_FBjLe.js.map} +1 -1
  39. package/dist/{injected-evm-wallet-provider-BDYWjIOQ.js → injected-evm-wallet-provider-CUNTCT-a.js} +2 -2
  40. package/dist/{injected-evm-wallet-provider-BDYWjIOQ.js.map → injected-evm-wallet-provider-CUNTCT-a.js.map} +1 -1
  41. package/dist/{injected-evm-wallet-provider-BQ_kG1vI.mjs → injected-evm-wallet-provider-E7eCpvLr.mjs} +2 -2
  42. package/dist/{injected-evm-wallet-provider-BQ_kG1vI.mjs.map → injected-evm-wallet-provider-E7eCpvLr.mjs.map} +1 -1
  43. package/dist/{injected-wallet-provider-B9jvzDM5.js → injected-wallet-provider-Bc_xtyRd.js} +11 -5
  44. package/dist/{injected-wallet-provider-B9jvzDM5.js.map → injected-wallet-provider-Bc_xtyRd.js.map} +1 -1
  45. package/dist/{injected-wallet-provider-DxPcYxP-.mjs → injected-wallet-provider-BoRoxrEl.mjs} +59 -34
  46. package/dist/injected-wallet-provider-BoRoxrEl.mjs.map +1 -0
  47. package/dist/{injected-wallet-provider-Dqmk-m4V.js → injected-wallet-provider-BqYJQDGu.js} +59 -34
  48. package/dist/injected-wallet-provider-BqYJQDGu.js.map +1 -0
  49. package/dist/{injected-wallet-provider-Dj-F69gb.mjs → injected-wallet-provider-DwozZ926.mjs} +11 -5
  50. package/dist/{injected-wallet-provider-Dj-F69gb.mjs.map → injected-wallet-provider-DwozZ926.mjs.map} +1 -1
  51. package/dist/venue-escrow.d.ts +113 -0
  52. package/package.json +2 -2
  53. package/dist/index-BAiLpNEQ.mjs.map +0 -1
  54. package/dist/index-BZ0X1Z9X.js.map +0 -1
  55. package/dist/index.native-DJSOqyKQ.js.map +0 -1
  56. package/dist/index.native-DcW2klyn.mjs.map +0 -1
  57. package/dist/injected-wallet-provider-Dqmk-m4V.js.map +0 -1
  58. package/dist/injected-wallet-provider-DxPcYxP-.mjs.map +0 -1
@@ -1,4 +1,4 @@
1
- import { getConfig, getActiveSessionManager, WebSessionManager, ReactNativeSessionManager, revokeSession, reconnectWithNewAuth, init as init$1, deriveUserIdentityFromIdToken, onSessionCleared, subscribe, getFreshAuthToken, getSessionGeneration, getIdToken as getIdToken$1, genAuthNonce, genSolanaMessage, createSessionWithSignature } from '@bounded-sh/core';
1
+ import { getConfig, getActiveSessionManager, WebSessionManager, ReactNativeSessionManager, revokeSession, reconnectWithNewAuth, init as init$1, deriveUserIdentityFromIdToken, onSessionCleared, onSessionChange, subscribe, getFreshAuthToken, getSessionGeneration, getIdToken as getIdToken$1, genAuthNonce, genSolanaMessage, createSessionWithSignature } from '@bounded-sh/core';
2
2
  import * as React from 'react';
3
3
 
4
4
  function walletContextFromClaims(claims, baseUrl, expectedAppId, tenantOrigin) {
@@ -4379,6 +4379,47 @@ async function openHiddenSignerFrame(page) {
4379
4379
  };
4380
4380
  }
4381
4381
 
4382
+ // turnkey-signer-window.ts - the top-level Bounded signer window: opening it, and reserving it
4383
+ // inside a click for an approval that is reached only after awaits.
4384
+ //
4385
+ // A cross-app Turnkey signature (the capability says `transport: 'popup'`) cannot run in the
4386
+ // in-app frame, so it opens in its own window, and a browser opens a window only inside the
4387
+ // user's click. The click handler therefore calls `reserveSignerPopup()` first, before any
4388
+ // `await`, and the exchange in turnkey-signer-bridge.ts navigates that window to the signer later.
4389
+ //
4390
+ // Kept out of the bridge on purpose: the bridge is loaded lazily as a whole module, so a bundler
4391
+ // keeps every one of its exports in every app that signs, while this reservation is needed only
4392
+ // by an app that funds an escrow.
4393
+ function openSignerWindow(url, w = 420, h = 620) {
4394
+ const left = window.screenX + Math.max(0, (window.outerWidth - w) / 2);
4395
+ const top = window.screenY + Math.max(0, (window.outerHeight - h) / 2);
4396
+ return window.open(url, 'bounded-turnkey-signer', `width=${w},height=${h},left=${left},top=${top}`);
4397
+ }
4398
+ // One slot: the next popup exchange takes it, and a new reservation replaces an unused earlier one.
4399
+ // A property of a const rather than a reassigned `let`, which a bundler would keep every assignment
4400
+ // to, dragging the reservation into apps that never reserve.
4401
+ const reserved = { popup: null };
4402
+ /** Hand the reserved window, if one is held, to an exchange: navigated to the signer page at `url`. */
4403
+ function takeReservedPopup(url) {
4404
+ const popup = reserved.popup;
4405
+ reserved.popup = null;
4406
+ if (!popup)
4407
+ return null;
4408
+ if (popup.closed)
4409
+ throw new Error('Wallet approval window was closed before it completed.');
4410
+ try {
4411
+ popup.location.replace(url);
4412
+ }
4413
+ catch (_a) {
4414
+ try {
4415
+ popup.close();
4416
+ }
4417
+ catch ( /* ignore */_b) { /* ignore */ }
4418
+ throw new Error('Wallet approval window could not open the signer - retry from a click.');
4419
+ }
4420
+ return popup;
4421
+ }
4422
+
4382
4423
  // turnkey-signing-capability.ts - the pure AS-02 (DS2-0112) signing-capability logic,
4383
4424
  // kept import-free (no DOM, no session, no @bounded-sh/core) so it is unit-testable.
4384
4425
  //
@@ -4390,9 +4431,10 @@ async function openHiddenSignerFrame(page) {
4390
4431
  // so a regression here (a dropped capability, a wrong route, a swallowed error) is
4391
4432
  // caught without a browser.
4392
4433
  // POST the Bounded id token + payload hash to the issuer's capability mint route and
4393
- // return the issuer-signed capability for exactly these bytes. Credential-free: identity
4394
- // is proven with the id token in the body (not an ambient cookie the cross-origin fetch
4395
- // would not carry). Throws with the same stable messages the bridge relied on inline.
4434
+ // return the issuer-signed capability for exactly these bytes, with the transport the
4435
+ // issuer requires for them. Credential-free: identity is proven with the id token in the
4436
+ // body (not an ambient cookie the cross-origin fetch would not carry). Throws with the same
4437
+ // stable messages the bridge relied on inline.
4396
4438
  async function requestTurnkeySigningCapability(opts) {
4397
4439
  const base = opts.baseUrl.replace(/\/$/, '');
4398
4440
  let res;
@@ -4422,7 +4464,7 @@ async function requestTurnkeySigningCapability(opts) {
4422
4464
  if (!d || typeof d.capability !== 'string' || !d.capability) {
4423
4465
  throw new Error('Turnkey signing capability was malformed.');
4424
4466
  }
4425
- return d.capability;
4467
+ return d.transport === 'popup' ? { capability: d.capability, transport: 'popup' } : { capability: d.capability };
4426
4468
  }
4427
4469
  // Assemble the `bounded:turnkey:sign` postMessage request, carrying the issuer-signed
4428
4470
  // capability for the same bytes. Without the capability the hosted signer refuses
@@ -4501,12 +4543,16 @@ function hasDOM$2() {
4501
4543
  // when we cannot embed (no DOM, or the frame never mounts/loads). Nothing in the
4502
4544
  // email-session flow needs a popup by preference: the code entry and the approval
4503
4545
  // click both run fine inside a cross-origin iframe on every engine (the old
4504
- // Safari popup preference existed only for in-iframe WebAuthn CREATE).
4546
+ // Safari popup preference existed only for in-iframe WebAuthn CREATE). The one
4547
+ // exception is a signature the issuer marks `transport: 'popup'` (a cross-app
4548
+ // write): the hosted signer refuses it inside any frame, so it never touches the widget.
4505
4549
  async function deliver(url, origin, ex) {
4506
4550
  var _a, _b;
4507
4551
  const popup = () => runPopup(url, origin, ex);
4508
4552
  (_a = ex.assertCurrent) === null || _a === void 0 ? void 0 : _a.call(ex);
4509
- const result = await runWidget(url, origin, { request: ex.request, onResult: ex.onResult, context: ex.context, assertCurrent: ex.assertCurrent }, popup);
4553
+ const result = ex.transport === 'popup'
4554
+ ? await popup()
4555
+ : await runWidget(url, origin, { request: ex.request, onResult: ex.onResult, context: ex.context, assertCurrent: ex.assertCurrent }, popup);
4510
4556
  (_b = ex.assertCurrent) === null || _b === void 0 ? void 0 : _b.call(ex);
4511
4557
  return result;
4512
4558
  }
@@ -4571,14 +4617,12 @@ function activeTurnkeyAddress() {
4571
4617
  : null;
4572
4618
  }
4573
4619
  let requestSeq = 0;
4574
- // Shared popup driver: open the signer page, do the ready/postMessage handshake, and
4575
- // resolve when `onResult` accepts a result message. Origin + source are pinned.
4620
+ // Shared popup driver: open the signer page (in the reserved window when one is held), do the
4621
+ // ready/postMessage handshake, and resolve when `onResult` accepts a result message. Origin +
4622
+ // source are pinned.
4576
4623
  async function runPopup(url, signerOrigin, ex) {
4577
- var _a, _b;
4578
- const w = (_a = ex.width) !== null && _a !== void 0 ? _a : 420, h = (_b = ex.height) !== null && _b !== void 0 ? _b : 620;
4579
- const left = window.screenX + Math.max(0, (window.outerWidth - w) / 2);
4580
- const top = window.screenY + Math.max(0, (window.outerHeight - h) / 2);
4581
- const popup = window.open(url, 'bounded-turnkey-signer', `width=${w},height=${h},left=${left},top=${top}`);
4624
+ var _a;
4625
+ const popup = (_a = takeReservedPopup(url)) !== null && _a !== void 0 ? _a : openSignerWindow(url, ex.width, ex.height);
4582
4626
  if (!popup) {
4583
4627
  throw new Error('Popup blocked - call this from a user gesture (e.g. a click handler) so the wallet approval window can open.');
4584
4628
  }
@@ -4756,7 +4800,7 @@ async function signSolanaMessageViaTurnkey(message) {
4756
4800
  const messageHex = toHex(message);
4757
4801
  // AS-02: obtain the issuer-signed capability for THESE exact bytes first; the signer will
4758
4802
  // refuse (capability_required) without it. Fetched per signature (each is single-payload).
4759
- const capability = await fetchSigningCapability(messageHex, context);
4803
+ const { capability, transport } = await fetchSigningCapability(messageHex, context);
4760
4804
  // Inline (authMode:"turnkey") sessions plant no Better Auth cookie on the issuer, so the
4761
4805
  // signer's same-origin status/create fetches need a bearer session proof: attach the
4762
4806
  // createWallet action authorization (it covers the sign flow's get-or-create too). Minted
@@ -4765,11 +4809,20 @@ async function signSolanaMessageViaTurnkey(message) {
4765
4809
  return await deliver(url, origin, {
4766
4810
  context: context.key, assertCurrent: context.assertCurrent,
4767
4811
  request: buildTurnkeySignRequest({ requestId, messageHex, capability, authorization }),
4812
+ transport,
4768
4813
  onResult: (d) => {
4769
4814
  if (d.ok && typeof d.signatureHex === 'string' && typeof d.address === 'string') {
4770
- setWalletSessionState(context.key, { expiresAt: Number(d.signingSessionExpiresAt) });
4815
+ // A top-level popup keeps its signing session in the signer origin's own storage, which the
4816
+ // warm in-app frame (a partitioned context) cannot see, so it says nothing about that frame.
4817
+ if (transport !== 'popup')
4818
+ setWalletSessionState(context.key, { expiresAt: Number(d.signingSessionExpiresAt) });
4771
4819
  return { done: true, value: { signature: fromHex(d.signatureHex), address: d.address, subOrgId: String(d.subOrgId || '') } };
4772
4820
  }
4821
+ // The hosted signer refuses a cross-app signature inside a frame. Never retry it from here:
4822
+ // the top-level window needs the user's own click.
4823
+ if (d.error === 'top_level_required') {
4824
+ return { error: 'top_level_required: an approval that writes to another app must open in its own window. Start it from a click handler.' };
4825
+ }
4773
4826
  return { error: String(d.error || 'Turnkey signing failed') };
4774
4827
  },
4775
4828
  });
@@ -6015,7 +6068,7 @@ async function getAuthProvider(config, fromStorage = false) {
6015
6068
  // manager as legacy email sessions. Human login should be started
6016
6069
  // with loginWithRedirect(); this provider is kept as the restore and
6017
6070
  // logout surface for those sessions.
6018
- currentAuthProvider = new (await import('./email-auth-provider-Bk5GSpYT.mjs')).EmailAuthProvider();
6071
+ currentAuthProvider = new (await import('./email-auth-provider-C5bYKzpN.mjs')).EmailAuthProvider();
6019
6072
  break;
6020
6073
  case "phantom": {
6021
6074
  // First-class Solana WALLET LOGIN (the poof/TaroBase-style "connect
@@ -6057,7 +6110,7 @@ async function getAuthProvider(config, fromStorage = false) {
6057
6110
  // (bounded-login-widget.ts), so registration never counts as
6058
6111
  // evidence the user has a wallet.
6059
6112
  await ensureSolanaMobileWalletRegistered(config, configuredNetwork);
6060
- const { InjectedWalletProvider } = await import('./injected-wallet-provider-DxPcYxP-.mjs');
6113
+ const { InjectedWalletProvider } = await import('./injected-wallet-provider-BoRoxrEl.mjs');
6061
6114
  currentAuthProvider = new InjectedWalletProvider(resolveInjectedWalletConfig(config), rpcUrl, configuredNetwork);
6062
6115
  break;
6063
6116
  }
@@ -6070,7 +6123,7 @@ async function getAuthProvider(config, fromStorage = false) {
6070
6123
  // Selecting authMethod:'evm-wallet' IS the opt-in — pass evmWalletConfig
6071
6124
  // to point at a specific wallet or set chainId/domain.
6072
6125
  const evmWalletConfig = ((_a = config.evmWalletConfig) !== null && _a !== void 0 ? _a : {});
6073
- const { InjectedEvmWalletProvider } = await import('./injected-evm-wallet-provider-BQ_kG1vI.mjs');
6126
+ const { InjectedEvmWalletProvider } = await import('./injected-evm-wallet-provider-E7eCpvLr.mjs');
6074
6127
  currentAuthProvider = new InjectedEvmWalletProvider(evmWalletConfig);
6075
6128
  break;
6076
6129
  }
@@ -6095,7 +6148,7 @@ async function getAuthProvider(config, fromStorage = false) {
6095
6148
  break;
6096
6149
  case "guest":
6097
6150
  // Anonymous auth: a device-local ed25519 keypair signs the challenge.
6098
- currentAuthProvider = new (await import('./guest-auth-provider-DDudqqxY.mjs')).GuestAuthProvider();
6151
+ currentAuthProvider = new (await import('./guest-auth-provider-CsM_SuGH.mjs')).GuestAuthProvider();
6099
6152
  break;
6100
6153
  }
6101
6154
  if (!currentAuthProvider) {
@@ -6157,7 +6210,7 @@ async function signInAnonymously() {
6157
6210
  // Lazy-load the guest provider so its ed25519/web3 dependencies stay out of
6158
6211
  // the main bundle for data-only apps. Specifier is a static string literal
6159
6212
  // so bundle-splitting can see it.
6160
- const provider = new (await import('./guest-auth-provider-DDudqqxY.mjs')).GuestAuthProvider();
6213
+ const provider = new (await import('./guest-auth-provider-CsM_SuGH.mjs')).GuestAuthProvider();
6161
6214
  setAuthLoading(true); // reflect "signing in…" while the guest keypair session is minted
6162
6215
  // adoptSessionProvider awaits only getConfig() (already resolved here) and then
6163
6216
  // runs every write - provider/method/config/marker/user - in one synchronous
@@ -6328,7 +6381,7 @@ function ensureSharedWalletLoginReady() {
6328
6381
  if (!sharedWalletReady) {
6329
6382
  sharedWalletReady = (async () => {
6330
6383
  await getConfig();
6331
- await import('./injected-wallet-provider-DxPcYxP-.mjs');
6384
+ await import('./injected-wallet-provider-BoRoxrEl.mjs');
6332
6385
  })().catch((error) => {
6333
6386
  sharedWalletReady = null;
6334
6387
  throw error;
@@ -6639,6 +6692,14 @@ function registerStorageBridge() {
6639
6692
  return;
6640
6693
  void syncStoredSession().catch((error) => console.warn('Bounded session synchronization failed:', error));
6641
6694
  });
6695
+ // `storage` fires only in other tabs. Another SDK copy in THIS tab (the hosted widget beside
6696
+ // the app, or the app beside the widget) announces its sign-in and sign-out on the session
6697
+ // channel instead; the nudge carries no authority, the record is re-read the same way.
6698
+ onSessionChange(() => {
6699
+ if (!initializedConfig)
6700
+ return;
6701
+ void syncStoredSession().catch((error) => console.warn('Bounded session synchronization failed:', error));
6702
+ });
6642
6703
  }
6643
6704
  function sameSessionIdentity(next, previous) {
6644
6705
  if (!next || !previous)
@@ -8826,5 +8887,5 @@ class PrivyExpoProvider {
8826
8887
  }
8827
8888
  }
8828
8889
 
8829
- export { PARK_REASONS as $, waitForAuthReady as A, login as B, logout as C, getAuthProvider as D, signInAnonymously as E, loginWithPrivy as F, loginWithRedirect as G, completeLoginFromRedirect as H, getLoginReturnError as I, loginWithPopup as J, useAuth as K, useQuery as L, useBuildRun as M, apps as N, getIdToken as O, onramp as P, onrampQuote as Q, onrampStatus as R, setPlatform as S, OffchainAuthProvider as T, PrivyExpoProvider as U, builds as V, BuildsApiError as W, mediaAgentTools as X, NON_TERMINAL_STATES as Y, TERMINAL_STATES as Z, RUN_STATES as _, signMessageWithTurnkey as a, FAILURE_REASONS as a0, BUILD_REVIEW_CAPABILITY_SCHEMA as a1, BUILD_REVIEW_CAPABILITY_REFRESH_SCHEMA as a2, BUILD_DELEGATED_REVIEW_CAPABILITY_SCHEMA as a3, signTransactionWithTurnkey as b, signTransactionV1WithTurnkey as c, signAndSubmitTransactionWithTurnkey as d, bs58 as e, getWallets as f, getPlatform as g, hasTurnkeyWallet as h, isSolanaMobileWallet as i, solanaMobileWalletLeavesPage as j, solanaMobileWalletAnswersSignInFromCache as k, setAuthLoading as l, bufferExports as m, normalizeSolanaRpcUrl as n, setStoredAuthMethod as o, confirmAndCheckTransaction as p, resolveSolanaRpcUrl as q, resolveSolanaWalletStandardChain as r, setCurrentUser as s, transactionHasSignature as t, init as u, getCurrentUser as v, walletStandardFeatureName as w, onAuthStateChanged as x, onAuthLoadingChanged as y, getAuthLoading as z };
8830
- //# sourceMappingURL=index.native-DcW2klyn.mjs.map
8890
+ export { PARK_REASONS as $, waitForAuthReady as A, login as B, logout as C, getAuthProvider as D, signInAnonymously as E, loginWithPrivy as F, loginWithRedirect as G, completeLoginFromRedirect as H, getLoginReturnError as I, loginWithPopup as J, useAuth as K, useQuery as L, useBuildRun as M, apps as N, getIdToken as O, onramp as P, onrampQuote as Q, onrampStatus as R, setPlatform as S, OffchainAuthProvider as T, PrivyExpoProvider as U, builds as V, BuildsApiError as W, mediaAgentTools as X, NON_TERMINAL_STATES as Y, TERMINAL_STATES as Z, RUN_STATES as _, signMessageWithTurnkey as a, FAILURE_REASONS as a0, BUILD_REVIEW_CAPABILITY_SCHEMA as a1, BUILD_REVIEW_CAPABILITY_REFRESH_SCHEMA as a2, BUILD_DELEGATED_REVIEW_CAPABILITY_SCHEMA as a3, signTransactionWithTurnkey as b, signTransactionV1WithTurnkey as c, signAndSubmitTransactionWithTurnkey as d, bs58 as e, getWallets as f, getPlatform as g, hasTurnkeyWallet as h, solanaMobileWalletLeavesPage as i, solanaMobileWalletAnswersSignInFromCache as j, isSolanaMobileWallet as k, setAuthLoading as l, bufferExports as m, normalizeSolanaRpcUrl as n, setStoredAuthMethod as o, confirmAndCheckTransaction as p, resolveSolanaRpcUrl as q, resolveSolanaWalletStandardChain as r, setCurrentUser as s, transactionHasSignature as t, init as u, getCurrentUser as v, walletStandardFeatureName as w, onAuthStateChanged as x, onAuthLoadingChanged as y, getAuthLoading as z };
8891
+ //# sourceMappingURL=index.native-DfDVa7MG.mjs.map