@bounded-sh/client 0.0.17 → 0.0.18

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 (37) hide show
  1. package/README.md +2 -1
  2. package/dist/auth/index.d.ts +2 -4
  3. package/dist/auth/providers/phantom-wallet-provider.d.ts +3 -2
  4. package/dist/auth/providers/privy-wallet-provider.d.ts +10 -7
  5. package/dist/auth/providers/solana-mobile-wallet-provider.d.ts +3 -2
  6. package/dist/auth/solana-rpc.d.ts +8 -0
  7. package/dist/index.js +246 -188
  8. package/dist/index.js.map +1 -1
  9. package/dist/index.mjs +246 -188
  10. package/dist/index.mjs.map +1 -1
  11. package/dist/{index.native-DlMO7aHv.mjs → index.native-DahSrHrM.mjs} +138 -62
  12. package/dist/index.native-DahSrHrM.mjs.map +1 -0
  13. package/dist/{index.native-DoiNBZlU.js → index.native-Dr3FOz16.js} +141 -64
  14. package/dist/index.native-Dr3FOz16.js.map +1 -0
  15. package/dist/index.native.js +1 -1
  16. package/dist/index.native.mjs +1 -1
  17. package/dist/{phantom-wallet-provider-DUdnFoyb.js → phantom-wallet-provider-CeLJEdcL.js} +7 -18
  18. package/dist/phantom-wallet-provider-CeLJEdcL.js.map +1 -0
  19. package/dist/{phantom-wallet-provider-DWG1LVJf.mjs → phantom-wallet-provider-l-CNnHPs.mjs} +7 -18
  20. package/dist/phantom-wallet-provider-l-CNnHPs.mjs.map +1 -0
  21. package/dist/{privy-wallet-provider-Kv6H3xcS.js → privy-wallet-provider-BSwx78fY.js} +69 -90
  22. package/dist/privy-wallet-provider-BSwx78fY.js.map +1 -0
  23. package/dist/{privy-wallet-provider-CyNLekvY.mjs → privy-wallet-provider-BWM8TNO9.mjs} +68 -89
  24. package/dist/privy-wallet-provider-BWM8TNO9.mjs.map +1 -0
  25. package/dist/{solana-mobile-wallet-provider-BfHBucO0.js → solana-mobile-wallet-provider-BvCrAgk8.js} +39 -25
  26. package/dist/solana-mobile-wallet-provider-BvCrAgk8.js.map +1 -0
  27. package/dist/{solana-mobile-wallet-provider-CKOSbLRd.mjs → solana-mobile-wallet-provider-C78VWmM-.mjs} +39 -25
  28. package/dist/solana-mobile-wallet-provider-C78VWmM-.mjs.map +1 -0
  29. package/package.json +2 -2
  30. package/dist/index.native-DlMO7aHv.mjs.map +0 -1
  31. package/dist/index.native-DoiNBZlU.js.map +0 -1
  32. package/dist/phantom-wallet-provider-DUdnFoyb.js.map +0 -1
  33. package/dist/phantom-wallet-provider-DWG1LVJf.mjs.map +0 -1
  34. package/dist/privy-wallet-provider-CyNLekvY.mjs.map +0 -1
  35. package/dist/privy-wallet-provider-Kv6H3xcS.js.map +0 -1
  36. package/dist/solana-mobile-wallet-provider-BfHBucO0.js.map +0 -1
  37. package/dist/solana-mobile-wallet-provider-CKOSbLRd.mjs.map +0 -1
@@ -6670,6 +6670,50 @@ const MODAL_CSS = `
6670
6670
  #bounded-auth-modal .hidden{display:none;}
6671
6671
  @media (max-width:480px){#bounded-auth-modal .ba-card{max-width:none;border-radius:16px;}}`;
6672
6672
 
6673
+ const SURFNET_RPC_URL = "https://surfpool.fly.dev";
6674
+ const SUPPORTED_SOLANA_NETWORKS = new Set([
6675
+ "solana_devnet",
6676
+ "solana_mainnet",
6677
+ "surfnet",
6678
+ ]);
6679
+ function normalizeSolanaRpcUrl(rpcUrl) {
6680
+ if (typeof rpcUrl !== "string")
6681
+ return null;
6682
+ const trimmed = rpcUrl.trim();
6683
+ return trimmed.length > 0 ? trimmed : null;
6684
+ }
6685
+ function isSupportedSolanaRpcNetwork(network) {
6686
+ return typeof network === "string" && SUPPORTED_SOLANA_NETWORKS.has(network);
6687
+ }
6688
+ function resolveSolanaWalletStandardChain(network, context) {
6689
+ switch (network) {
6690
+ case "solana_devnet":
6691
+ return "solana:devnet";
6692
+ case "solana_mainnet":
6693
+ return "solana:mainnet";
6694
+ case "surfnet":
6695
+ return "solana:localnet";
6696
+ case undefined:
6697
+ case null:
6698
+ case "":
6699
+ throw new Error(`${context} requires an explicit Solana network. ` +
6700
+ `Provide one of: solana_devnet, solana_mainnet, surfnet.`);
6701
+ default:
6702
+ throw new Error(`${context} does not support Solana network "${network}". ` +
6703
+ `Expected one of: solana_devnet, solana_mainnet, surfnet.`);
6704
+ }
6705
+ }
6706
+ function resolveSolanaRpcUrl(explicitRpcUrl, network, context) {
6707
+ if (network != null && network !== "" && !isSupportedSolanaRpcNetwork(network)) {
6708
+ throw new Error(`${context} does not support Solana network "${network}". ` +
6709
+ `Expected one of: solana_devnet, solana_mainnet, surfnet.`);
6710
+ }
6711
+ const rpcUrl = normalizeSolanaRpcUrl(explicitRpcUrl);
6712
+ if (rpcUrl)
6713
+ return rpcUrl;
6714
+ throw new Error(`${context} requires an explicit Solana RPC URL. Pass config.rpcUrl before signing or submitting onchain transactions.`);
6715
+ }
6716
+
6673
6717
  const PKCE_STORE_KEY = 'bounded.oidc.pkce';
6674
6718
  // Active session store (Web on web, RN on React Native) — selected by config,
6675
6719
  // not by `typeof window` (truthy on RN). OIDC redirect/popup is web-only, but the
@@ -6976,7 +7020,7 @@ async function exchangeCode(code, verifier, redirectUri) {
6976
7020
  let currentAuthProvider = null;
6977
7021
  let currentAuthMethod = null;
6978
7022
  let initConfig = null;
6979
- // --- localStorage helpers: track which auth method the user last logged in with ---
7023
+ // --- localStorage helpers: track which auth method created the active session ---
6980
7024
  const STORED_AUTH_METHOD_KEY = 'bounded_last_auth_method';
6981
7025
  function getStoredAuthMethod() {
6982
7026
  try {
@@ -7000,7 +7044,7 @@ function setStoredAuthMethod(method) {
7000
7044
  }
7001
7045
  }
7002
7046
  /**
7003
- * Clears the session if it was created before auth method tracking (legacy session).
7047
+ * Clears the session if it was created by a different auth method.
7004
7048
  * Returns true if the session was cleared, false if the session is compatible.
7005
7049
  *
7006
7050
  * Dispatches to the correct session manager based on the current auth method
@@ -7008,47 +7052,96 @@ function setStoredAuthMethod(method) {
7008
7052
  * are properly cleared.
7009
7053
  */
7010
7054
  function clearIncompatibleSession() {
7011
- if (getStoredAuthMethod() !== null) {
7012
- return false; // Auth method is tracked — session is compatible
7055
+ if (getStoredAuthMethod() === currentAuthMethod) {
7056
+ return false;
7013
7057
  }
7014
- // Legacy session (no stored auth method) — clear it so the user re-authenticates
7015
- // with the correct provider.
7016
- // Clear both managers — on web the RN manager is a no-op (not configured),
7017
- // on RN the web manager is a no-op (no localStorage).
7058
+ // Clear both managers: on web the RN manager is a no-op (not configured),
7059
+ // and on RN the web manager is a no-op (no localStorage).
7018
7060
  WebSessionManager.clearSession();
7019
7061
  try {
7020
7062
  ReactNativeSessionManager.clearSession();
7021
7063
  }
7022
7064
  catch ( /* not configured on web */_a) { /* not configured on web */ }
7065
+ setStoredAuthMethod(null);
7023
7066
  return true;
7024
7067
  }
7025
7068
  // Lazy loaders for web-only providers.
7026
7069
  // Using dynamic import() ensures Metro (RN) never resolves these modules.
7027
7070
  async function loadPhantomWalletProvider() {
7028
- const mod = await import('./phantom-wallet-provider-DWG1LVJf.mjs');
7071
+ const mod = await import('./phantom-wallet-provider-l-CNnHPs.mjs');
7029
7072
  return { PhantomWalletProvider: mod.PhantomWalletProvider };
7030
7073
  }
7031
7074
  // Web Privy provider (depends on react-dom + @privy-io/react-auth). Lazy so Metro
7032
7075
  // never bundles it into the RN build — RN uses the @privy-io/expo provider instead.
7033
7076
  async function loadPrivyWalletProvider() {
7034
- const mod = await import('./privy-wallet-provider-CyNLekvY.mjs');
7077
+ const mod = await import('./privy-wallet-provider-BWM8TNO9.mjs');
7035
7078
  return mod.PrivyWalletProvider;
7036
7079
  }
7037
7080
  async function loadSolanaMobileWalletProvider() {
7038
- const mod = await import('./solana-mobile-wallet-provider-CKOSbLRd.mjs');
7081
+ const mod = await import('./solana-mobile-wallet-provider-C78VWmM-.mjs');
7039
7082
  return mod.SolanaMobileWalletProvider;
7040
7083
  }
7084
+ function requireWebPrivyConfig(config) {
7085
+ if (!config.privyConfig || typeof config.privyConfig.appId !== 'string' || config.privyConfig.appId.trim() === '') {
7086
+ throw new Error('Privy auth requires config.privyConfig.appId; no default Privy app is used.');
7087
+ }
7088
+ if (!config.privyConfig.config || typeof config.privyConfig.config !== 'object') {
7089
+ throw new Error('Privy auth requires config.privyConfig.config for the app-scoped Privy provider.');
7090
+ }
7091
+ return config.privyConfig;
7092
+ }
7093
+ function getConfiguredSolanaNetwork(config) {
7094
+ if (typeof config.chain !== 'string')
7095
+ return null;
7096
+ const chain = config.chain.trim();
7097
+ if (chain === '' || chain === 'offchain')
7098
+ return null;
7099
+ return chain;
7100
+ }
7101
+ function mobileWalletClusterFromNetwork(network) {
7102
+ switch (network) {
7103
+ case "solana_devnet":
7104
+ return "devnet";
7105
+ case "solana_mainnet":
7106
+ return "mainnet-beta";
7107
+ case "surfnet":
7108
+ return "localnet";
7109
+ case null:
7110
+ return null;
7111
+ default:
7112
+ resolveSolanaWalletStandardChain(network, "Mobile wallet auth");
7113
+ return null;
7114
+ }
7115
+ }
7116
+ function requireMobileWalletConfig(config) {
7117
+ var _a, _b, _c;
7118
+ const configuredNetwork = getConfiguredSolanaNetwork(config);
7119
+ const cluster = (_b = (_a = config.mobileWalletConfig) === null || _a === void 0 ? void 0 : _a.cluster) !== null && _b !== void 0 ? _b : mobileWalletClusterFromNetwork(configuredNetwork);
7120
+ if (!cluster) {
7121
+ throw new Error("Mobile wallet auth requires an explicit Solana network. " +
7122
+ "Pass config.chain as solana_devnet, solana_mainnet, or surfnet, " +
7123
+ "or pass mobileWalletConfig.cluster.");
7124
+ }
7125
+ return Object.assign(Object.assign({}, ((_c = config.mobileWalletConfig) !== null && _c !== void 0 ? _c : {})), { cluster });
7126
+ }
7041
7127
  async function hotSwapToMWAProvider(config) {
7042
- var _a, _b;
7043
- const rpcUrl = (_a = config.rpcUrl) !== null && _a !== void 0 ? _a : null;
7128
+ var _a;
7129
+ const rpcUrl = normalizeSolanaRpcUrl(config.rpcUrl);
7130
+ const configuredNetwork = getConfiguredSolanaNetwork(config);
7044
7131
  const SolanaMobileWalletProvider = await loadSolanaMobileWalletProvider();
7045
- const mwaConfig = (_b = config.mobileWalletConfig) !== null && _b !== void 0 ? _b : {
7046
- appIdentity: {
7047
- name: config.name || undefined,
7048
- uri: getPlatform().getLocationOrigin(),
7049
- },
7050
- };
7051
- const mwaProvider = new SolanaMobileWalletProvider(rpcUrl, mwaConfig);
7132
+ const mwaConfig = config.mobileWalletConfig
7133
+ ? requireMobileWalletConfig(config)
7134
+ : {
7135
+ appIdentity: {
7136
+ name: config.name || undefined,
7137
+ uri: getPlatform().getLocationOrigin(),
7138
+ },
7139
+ cluster: (_a = mobileWalletClusterFromNetwork(configuredNetwork)) !== null && _a !== void 0 ? _a : undefined,
7140
+ };
7141
+ if (!mwaConfig.cluster) {
7142
+ throw new Error("Mobile wallet auth requires config.chain or mobileWalletConfig.cluster before switching providers.");
7143
+ }
7144
+ const mwaProvider = new SolanaMobileWalletProvider(rpcUrl, mwaConfig, configuredNetwork);
7052
7145
  let provider = mwaProvider;
7053
7146
  if (config.chain === "offchain") {
7054
7147
  provider = new OffchainAuthProvider(mwaProvider);
@@ -7063,11 +7156,8 @@ async function hotSwapToMWAProvider(config) {
7063
7156
  setAuthProviderInstance(provider);
7064
7157
  return provider;
7065
7158
  }
7066
- const SOLANA_DEVNET_RPC_URL = "https://idelle-8nxsep-fast-devnet.helius-rpc.com";
7067
- const SOLANA_MAINNET_RPC_URL = "https://celestia-cegncv-fast-mainnet.helius-rpc.com";
7068
- const SURFNET_RPC_URL$1 = "https://surfpool.fly.dev";
7069
7159
  async function getAuthProvider(config) {
7070
- var _a, _b, _c;
7160
+ var _a, _b;
7071
7161
  if (currentAuthProvider) {
7072
7162
  return currentAuthProvider;
7073
7163
  }
@@ -7081,17 +7171,12 @@ async function getAuthProvider(config) {
7081
7171
  currentAuthProvider = new MockAuthProvider();
7082
7172
  return currentAuthProvider;
7083
7173
  }
7084
- // If the user previously logged in with a specific method, use that instead
7085
- const validAuthMethods = ['email', 'phantom', 'wallet', 'rainbowkit', 'coinbase-smart-wallet', 'onboard', 'mobile-wallet-adapter', 'guest', 'privy', 'privy-expo', 'none'];
7086
- const storedMethod = getStoredAuthMethod();
7087
- const authMethod = (storedMethod && validAuthMethods.includes(storedMethod))
7088
- ? storedMethod
7089
- : (config.authMethod || "email");
7090
- if (storedMethod && !validAuthMethods.includes(storedMethod)) {
7091
- // Invalid stored value — clear it
7092
- setStoredAuthMethod(null);
7093
- }
7094
- const rpcUrl = (_a = config.rpcUrl) !== null && _a !== void 0 ? _a : null;
7174
+ const authMethod = config.authMethod;
7175
+ if (!authMethod) {
7176
+ throw new Error("authMethod is required to initialize auth provider; configure the single intended auth method explicitly.");
7177
+ }
7178
+ const rpcUrl = normalizeSolanaRpcUrl(config.rpcUrl);
7179
+ const configuredNetwork = getConfiguredSolanaNetwork(config);
7095
7180
  currentAuthMethod = authMethod;
7096
7181
  // Clear, actionable error when the BROWSER build (`bounded-sh`) is loaded in a
7097
7182
  // non-browser (Node) runtime. The wallet providers below need `window`; without
@@ -7121,7 +7206,7 @@ async function getAuthProvider(config) {
7121
7206
  break;
7122
7207
  case "phantom": {
7123
7208
  const { PhantomWalletProvider } = await loadPhantomWalletProvider();
7124
- currentAuthProvider = new PhantomWalletProvider(rpcUrl, config.phantomConfig);
7209
+ currentAuthProvider = new PhantomWalletProvider(rpcUrl, config.phantomConfig, configuredNetwork);
7125
7210
  // MWA hot-swap is always available (custom modal shows MWA button on Android)
7126
7211
  currentAuthProvider.onSwitchToMWA =
7127
7212
  () => hotSwapToMWAProvider(config);
@@ -7131,8 +7216,9 @@ async function getAuthProvider(config) {
7131
7216
  // Web Privy: a co-equal login route alongside email/phantom/guest. The
7132
7217
  // Privy embedded/external Solana wallet signs the SIWS challenge, so the
7133
7218
  // session is minted through the same wallet path as Phantom.
7219
+ const privyConfig = requireWebPrivyConfig(config);
7134
7220
  const PrivyWalletProvider = await loadPrivyWalletProvider();
7135
- currentAuthProvider = new PrivyWalletProvider((_b = config.name) !== null && _b !== void 0 ? _b : null, (_c = config.logoUrl) !== null && _c !== void 0 ? _c : null, config.privyConfig, rpcUrl);
7221
+ currentAuthProvider = new PrivyWalletProvider((_a = config.name) !== null && _a !== void 0 ? _a : null, (_b = config.logoUrl) !== null && _b !== void 0 ? _b : null, privyConfig, rpcUrl, configuredNetwork);
7136
7222
  break;
7137
7223
  }
7138
7224
  case "privy-expo":
@@ -7147,7 +7233,7 @@ async function getAuthProvider(config) {
7147
7233
  break;
7148
7234
  case "mobile-wallet-adapter": {
7149
7235
  const SolanaMobileWalletProvider = await loadSolanaMobileWalletProvider();
7150
- currentAuthProvider = new SolanaMobileWalletProvider(rpcUrl, config.mobileWalletConfig);
7236
+ currentAuthProvider = new SolanaMobileWalletProvider(rpcUrl, requireMobileWalletConfig(config), configuredNetwork);
7151
7237
  break;
7152
7238
  }
7153
7239
  case "onboard":
@@ -7217,13 +7303,14 @@ async function signInAnonymously() {
7217
7303
  * (web localStorage / RN storage) and identity model. `init()` must have run first.
7218
7304
  */
7219
7305
  async function loginWithPrivy(options) {
7220
- var _a, _b, _c;
7306
+ var _a, _b;
7221
7307
  assertBrowserAuthEnv('loginWithPrivy');
7222
7308
  const coreConfig = await getConfig();
7223
7309
  let provider;
7224
7310
  if (getPlatform().hasDOM) {
7311
+ const privyConfig = requireWebPrivyConfig(coreConfig);
7225
7312
  const PrivyWalletProvider = await loadPrivyWalletProvider();
7226
- provider = new PrivyWalletProvider((_a = coreConfig.name) !== null && _a !== void 0 ? _a : null, (_b = coreConfig.logoUrl) !== null && _b !== void 0 ? _b : null, coreConfig.privyConfig, (_c = coreConfig.rpcUrl) !== null && _c !== void 0 ? _c : null);
7313
+ provider = new PrivyWalletProvider((_a = coreConfig.name) !== null && _a !== void 0 ? _a : null, (_b = coreConfig.logoUrl) !== null && _b !== void 0 ? _b : null, privyConfig, normalizeSolanaRpcUrl(coreConfig.rpcUrl), getConfiguredSolanaNetwork(coreConfig));
7227
7314
  currentAuthMethod = 'privy';
7228
7315
  }
7229
7316
  else {
@@ -7369,15 +7456,13 @@ async function logout$1() {
7369
7456
  throw new Error("Auth provider not initialized. Please call init() first.");
7370
7457
  }
7371
7458
  // Revoke the refresh-token family server-side BEFORE the provider clears the
7372
- // local session (so we still have the token + issuer to revoke). Best-effort:
7373
- // revokeSession swallows errors so logout never hangs/fails on a network blip.
7374
- try {
7375
- const sm = getActiveSessionManager();
7376
- const refreshToken = sm.getRefreshToken();
7377
- if (refreshToken)
7378
- await revokeSession(refreshToken, (_a = sm.getIssuer()) !== null && _a !== void 0 ? _a : undefined);
7379
- }
7380
- catch ( /* proceed with local logout regardless */_b) { /* proceed with local logout regardless */ }
7459
+ // local session (so we still have the token + issuer to revoke). If revoke
7460
+ // fails, surface the error and leave local state intact so callers do not
7461
+ // mistake a local-only logout for server revocation.
7462
+ const sm = getActiveSessionManager();
7463
+ const refreshToken = sm.getRefreshToken();
7464
+ if (refreshToken)
7465
+ await revokeSession(refreshToken, (_a = sm.getIssuer()) !== null && _a !== void 0 ? _a : undefined);
7381
7466
  await currentAuthProvider.logout();
7382
7467
  setStoredAuthMethod(null);
7383
7468
  currentAuthProvider = null;
@@ -7708,7 +7793,6 @@ async function confirmAndCheckTransaction(connection, signature) {
7708
7793
  * to host Privy's React context, this provider expects the RN app itself
7709
7794
  * to render <PrivyProvider> and then bridge the hooks via setPrivyMethods().
7710
7795
  */
7711
- const SURFNET_RPC_URL = 'https://surfpool.fly.dev';
7712
7796
  // -----------------------------------------------------------------------
7713
7797
  // Provider implementation
7714
7798
  // -----------------------------------------------------------------------
@@ -7716,7 +7800,7 @@ class PrivyExpoProvider {
7716
7800
  constructor(appId, networkUrl = null) {
7717
7801
  this.privyMethods = null;
7718
7802
  this.appId = appId;
7719
- this.networkUrl = networkUrl;
7803
+ this.networkUrl = normalizeSolanaRpcUrl(networkUrl);
7720
7804
  }
7721
7805
  /**
7722
7806
  * Bridge Privy hooks from the app's React tree into this provider.
@@ -8001,15 +8085,7 @@ class PrivyExpoProvider {
8001
8085
  return { signature, txInfo };
8002
8086
  }
8003
8087
  getRpcUrl(network) {
8004
- if (this.networkUrl)
8005
- return this.networkUrl;
8006
- if (network === 'solana_devnet')
8007
- return SOLANA_DEVNET_RPC_URL;
8008
- if (network === 'solana_mainnet')
8009
- return SOLANA_MAINNET_RPC_URL;
8010
- if (network === 'surfnet')
8011
- return SURFNET_RPC_URL;
8012
- return SOLANA_MAINNET_RPC_URL;
8088
+ return resolveSolanaRpcUrl(this.networkUrl, network, "Privy Expo Solana transaction");
8013
8089
  }
8014
8090
  async ensureReady(timeoutMs = 15000) {
8015
8091
  if (!this.privyMethods) {
@@ -8037,5 +8113,5 @@ class PrivyExpoProvider {
8037
8113
  }
8038
8114
  }
8039
8115
 
8040
- export { linkWithRedirect as A, completeLoginFromRedirect as B, loginWithPopup as C, completeLoginInPopup as D, useAuth as E, deserializeTransaction as F, getIdToken as G, setPlatform as H, DEFAULT_TEST_ADDRESS as I, index as J, MockAuthProvider as M, OffchainAuthProvider as O, PrivyExpoProvider as P, SOLANA_DEVNET_RPC_URL as S, SOLANA_MAINNET_RPC_URL as a, bufferExports as b, confirmAndCheckTransaction as c, SURFNET_RPC_URL$1 as d, detectMobile as e, detectAndroid as f, getPlatform as g, setAuthLoading as h, bs58 as i, init as j, getCurrentUser as k, onAuthLoadingChanged as l, getAuthLoading as m, login as n, onAuthStateChanged as o, logout as p, getAuthProvider as q, signInAnonymously as r, setCurrentUser as s, sendEmailOtp as t, sendTextOtp as u, verifyEmailOtp as v, verifyTextOtp as w, linkEmail as x, loginWithPrivy as y, loginWithRedirect as z };
8041
- //# sourceMappingURL=index.native-DlMO7aHv.mjs.map
8116
+ export { loginWithRedirect as A, linkWithRedirect as B, completeLoginFromRedirect as C, loginWithPopup as D, completeLoginInPopup as E, useAuth as F, deserializeTransaction as G, getIdToken as H, setPlatform as I, DEFAULT_TEST_ADDRESS as J, index as K, MockAuthProvider as M, OffchainAuthProvider as O, PrivyExpoProvider as P, SURFNET_RPC_URL as S, detectAndroid as a, bufferExports as b, confirmAndCheckTransaction as c, detectMobile as d, setAuthLoading as e, resolveSolanaWalletStandardChain as f, getPlatform as g, bs58 as h, init as i, getCurrentUser as j, onAuthLoadingChanged as k, getAuthLoading as l, login as m, normalizeSolanaRpcUrl as n, onAuthStateChanged as o, logout as p, getAuthProvider as q, resolveSolanaRpcUrl as r, setCurrentUser as s, signInAnonymously as t, sendEmailOtp as u, sendTextOtp as v, verifyEmailOtp as w, verifyTextOtp as x, linkEmail as y, loginWithPrivy as z };
8117
+ //# sourceMappingURL=index.native-DahSrHrM.mjs.map