@pooflabs/web 0.0.80 → 0.0.81-rc2

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 (82) hide show
  1. package/dist/auth/providers/phantom-wallet-provider.d.ts +20 -0
  2. package/dist/index-Bdcc5821.js +2375 -0
  3. package/dist/index-Bdcc5821.js.map +1 -0
  4. package/dist/{index-BhfNMrC0.js → index-BjlCinic.js} +25 -883
  5. package/dist/index-BjlCinic.js.map +1 -0
  6. package/dist/{index-Db0NqU8R.esm.js → index-Bx_lLXRT.esm.js} +342 -277
  7. package/dist/index-Bx_lLXRT.esm.js.map +1 -0
  8. package/dist/{index-COIUWugk.esm.js → index-CHqM9n4K.esm.js} +24 -881
  9. package/dist/index-CHqM9n4K.esm.js.map +1 -0
  10. package/dist/{index-BVi7fTm2.js → index-CL4JIAAR.js} +24 -882
  11. package/dist/index-CL4JIAAR.js.map +1 -0
  12. package/dist/index-CrOVJFX9.esm.js +2373 -0
  13. package/dist/index-CrOVJFX9.esm.js.map +1 -0
  14. package/dist/{index-BbtYb8sE.esm.js → index-DCo85UGg.esm.js} +23 -882
  15. package/dist/index-DCo85UGg.esm.js.map +1 -0
  16. package/dist/{index-BNyxZ82q.js → index-DHm4usay.js} +342 -276
  17. package/dist/index-DHm4usay.js.map +1 -0
  18. package/dist/{index.browser-BuHl80dp.esm.js → index.browser-7dDfRU5G.esm.js} +1367 -1697
  19. package/dist/index.browser-7dDfRU5G.esm.js.map +1 -0
  20. package/dist/index.browser-Bg_-PAgT.esm.js +1250 -0
  21. package/dist/index.browser-Bg_-PAgT.esm.js.map +1 -0
  22. package/dist/index.browser-C-_FEr5M.esm.js +1134 -0
  23. package/dist/index.browser-C-_FEr5M.esm.js.map +1 -0
  24. package/dist/{index.browser-8hyi2LOX.js → index.browser-CmlqbyPr.js} +1367 -1697
  25. package/dist/index.browser-CmlqbyPr.js.map +1 -0
  26. package/dist/index.browser-CxXQ2RhF.js +122 -0
  27. package/dist/index.browser-CxXQ2RhF.js.map +1 -0
  28. package/dist/index.browser-DjEZSiqI.js +1137 -0
  29. package/dist/index.browser-DjEZSiqI.js.map +1 -0
  30. package/dist/index.browser-DuVkpEzB.js +1253 -0
  31. package/dist/index.browser-DuVkpEzB.js.map +1 -0
  32. package/dist/index.browser-xJkO73vw.esm.js +119 -0
  33. package/dist/index.browser-xJkO73vw.esm.js.map +1 -0
  34. package/dist/index.esm.js +1 -1
  35. package/dist/index.js +1 -1
  36. package/dist/{index.native-DUnE51Mx.js → index.native-DJA9_K3i.js} +186 -2669
  37. package/dist/index.native-DJA9_K3i.js.map +1 -0
  38. package/dist/{index.native-DuKhZcus.esm.js → index.native-TLhfXfe6.esm.js} +187 -2669
  39. package/dist/index.native-TLhfXfe6.esm.js.map +1 -0
  40. package/dist/index.native.esm.js +1 -1
  41. package/dist/index.native.js +1 -1
  42. package/dist/{phantom-wallet-provider-Cg-srwP4.js → phantom-wallet-provider-BegJFoWW.js} +141 -12
  43. package/dist/{phantom-wallet-provider-Cg-srwP4.js.map → phantom-wallet-provider-BegJFoWW.js.map} +1 -1
  44. package/dist/{phantom-wallet-provider--BJjVUA1.esm.js → phantom-wallet-provider-DzUAMhbm.esm.js} +141 -12
  45. package/dist/{phantom-wallet-provider--BJjVUA1.esm.js.map → phantom-wallet-provider-DzUAMhbm.esm.js.map} +1 -1
  46. package/dist/{privy-wallet-provider-BLcur3Ue.esm.js → privy-wallet-provider-BspbiyOr.esm.js} +3 -3
  47. package/dist/privy-wallet-provider-BspbiyOr.esm.js.map +1 -0
  48. package/dist/{privy-wallet-provider-DpNVyaXa.js → privy-wallet-provider-Du-QHaaG.js} +3 -3
  49. package/dist/privy-wallet-provider-Du-QHaaG.js.map +1 -0
  50. package/dist/{solana-mobile-wallet-provider-CFaubssb.esm.js → solana-mobile-wallet-provider-Bh7SBFpQ.esm.js} +53 -4
  51. package/dist/{solana-mobile-wallet-provider-CFaubssb.esm.js.map → solana-mobile-wallet-provider-Bh7SBFpQ.esm.js.map} +1 -1
  52. package/dist/{solana-mobile-wallet-provider-zXAk2tfS.js → solana-mobile-wallet-provider-DPp4SYem.js} +53 -4
  53. package/dist/{solana-mobile-wallet-provider-zXAk2tfS.js.map → solana-mobile-wallet-provider-DPp4SYem.js.map} +1 -1
  54. package/package.json +1 -1
  55. package/dist/index-BNyxZ82q.js.map +0 -1
  56. package/dist/index-BVi7fTm2.js.map +0 -1
  57. package/dist/index-BbtYb8sE.esm.js.map +0 -1
  58. package/dist/index-BhfNMrC0.js.map +0 -1
  59. package/dist/index-CKIoDkjJ.esm.js +0 -6
  60. package/dist/index-CKIoDkjJ.esm.js.map +0 -1
  61. package/dist/index-COIUWugk.esm.js.map +0 -1
  62. package/dist/index-CSraUgD6.js +0 -8
  63. package/dist/index-CSraUgD6.js.map +0 -1
  64. package/dist/index-Db0NqU8R.esm.js.map +0 -1
  65. package/dist/index.browser-8hyi2LOX.js.map +0 -1
  66. package/dist/index.browser-B4zXnffD.esm.js +0 -225
  67. package/dist/index.browser-B4zXnffD.esm.js.map +0 -1
  68. package/dist/index.browser-BJ_TdUVA.js +0 -228
  69. package/dist/index.browser-BJ_TdUVA.js.map +0 -1
  70. package/dist/index.browser-BkNaRRVe.js +0 -1222
  71. package/dist/index.browser-BkNaRRVe.js.map +0 -1
  72. package/dist/index.browser-BuHl80dp.esm.js.map +0 -1
  73. package/dist/index.browser-CnbxBj3-.esm.js +0 -1219
  74. package/dist/index.browser-CnbxBj3-.esm.js.map +0 -1
  75. package/dist/index.browser-OvGNsMPu.esm.js +0 -1002
  76. package/dist/index.browser-OvGNsMPu.esm.js.map +0 -1
  77. package/dist/index.browser-vuTr40so.js +0 -1008
  78. package/dist/index.browser-vuTr40so.js.map +0 -1
  79. package/dist/index.native-DUnE51Mx.js.map +0 -1
  80. package/dist/index.native-DuKhZcus.esm.js.map +0 -1
  81. package/dist/privy-wallet-provider-BLcur3Ue.esm.js.map +0 -1
  82. package/dist/privy-wallet-provider-DpNVyaXa.js.map +0 -1
@@ -4,21 +4,6 @@ import * as anchor from '@coral-xyz/anchor';
4
4
  import { Program } from '@coral-xyz/anchor';
5
5
  import * as React$2 from 'react';
6
6
 
7
- function _mergeNamespaces(n, m) {
8
- m.forEach(function (e) {
9
- e && typeof e !== 'string' && !Array.isArray(e) && Object.keys(e).forEach(function (k) {
10
- if (k !== 'default' && !(k in n)) {
11
- var d = Object.getOwnPropertyDescriptor(e, k);
12
- Object.defineProperty(n, k, d.get ? d : {
13
- enumerable: true,
14
- get: function () { return e[k]; }
15
- });
16
- }
17
- });
18
- });
19
- return Object.freeze(n);
20
- }
21
-
22
7
  function getDefaultExportFromCjs$1 (x) {
23
8
  return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
24
9
  }
@@ -9252,15 +9237,15 @@ function requireBuffer$1 () {
9252
9237
 
9253
9238
  var bufferExports$1 = requireBuffer$1();
9254
9239
 
9255
- var safeBuffer$1 = {exports: {}};
9240
+ var safeBuffer = {exports: {}};
9256
9241
 
9257
9242
  /*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */
9258
9243
 
9259
- var hasRequiredSafeBuffer$1;
9244
+ var hasRequiredSafeBuffer;
9260
9245
 
9261
- function requireSafeBuffer$1 () {
9262
- if (hasRequiredSafeBuffer$1) return safeBuffer$1.exports;
9263
- hasRequiredSafeBuffer$1 = 1;
9246
+ function requireSafeBuffer () {
9247
+ if (hasRequiredSafeBuffer) return safeBuffer.exports;
9248
+ hasRequiredSafeBuffer = 1;
9264
9249
  (function (module, exports$1) {
9265
9250
  /* eslint-disable node/no-deprecated-api */
9266
9251
  var buffer = requireBuffer$1();
@@ -9326,23 +9311,23 @@ function requireSafeBuffer$1 () {
9326
9311
  }
9327
9312
  return buffer.SlowBuffer(size)
9328
9313
  };
9329
- } (safeBuffer$1, safeBuffer$1.exports));
9330
- return safeBuffer$1.exports;
9314
+ } (safeBuffer, safeBuffer.exports));
9315
+ return safeBuffer.exports;
9331
9316
  }
9332
9317
 
9333
- var src$1;
9334
- var hasRequiredSrc$1;
9318
+ var src;
9319
+ var hasRequiredSrc;
9335
9320
 
9336
- function requireSrc$1 () {
9337
- if (hasRequiredSrc$1) return src$1;
9338
- hasRequiredSrc$1 = 1;
9321
+ function requireSrc () {
9322
+ if (hasRequiredSrc) return src;
9323
+ hasRequiredSrc = 1;
9339
9324
  // base-x encoding / decoding
9340
9325
  // Copyright (c) 2018 base-x contributors
9341
9326
  // Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)
9342
9327
  // Distributed under the MIT software license, see the accompanying
9343
9328
  // file LICENSE or http://www.opensource.org/licenses/mit-license.php.
9344
9329
  // @ts-ignore
9345
- var _Buffer = requireSafeBuffer$1().Buffer;
9330
+ var _Buffer = requireSafeBuffer().Buffer;
9346
9331
  function base (ALPHABET) {
9347
9332
  if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }
9348
9333
  var BASE_MAP = new Uint8Array(256);
@@ -9457,25 +9442,25 @@ function requireSrc$1 () {
9457
9442
  decode: decode
9458
9443
  }
9459
9444
  }
9460
- src$1 = base;
9461
- return src$1;
9445
+ src = base;
9446
+ return src;
9462
9447
  }
9463
9448
 
9464
- var bs58$1$1;
9465
- var hasRequiredBs58$1;
9449
+ var bs58$1;
9450
+ var hasRequiredBs58;
9466
9451
 
9467
- function requireBs58$1 () {
9468
- if (hasRequiredBs58$1) return bs58$1$1;
9469
- hasRequiredBs58$1 = 1;
9470
- var basex = requireSrc$1();
9452
+ function requireBs58 () {
9453
+ if (hasRequiredBs58) return bs58$1;
9454
+ hasRequiredBs58 = 1;
9455
+ var basex = requireSrc();
9471
9456
  var ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
9472
9457
 
9473
- bs58$1$1 = basex(ALPHABET);
9474
- return bs58$1$1;
9458
+ bs58$1 = basex(ALPHABET);
9459
+ return bs58$1;
9475
9460
  }
9476
9461
 
9477
- var bs58Exports$1 = requireBs58$1();
9478
- var bs58$2 = /*@__PURE__*/getDefaultExportFromCjs(bs58Exports$1);
9462
+ var bs58Exports = requireBs58();
9463
+ var bs58$2 = /*@__PURE__*/getDefaultExportFromCjs(bs58Exports);
9479
9464
 
9480
9465
  // ─────────────────────────────────────────────────────────────
9481
9466
  // Local implementation of getSimulationComputeUnits
@@ -15663,7 +15648,7 @@ async function loadDependencies() {
15663
15648
  const [reactModule, reactDomModule, phantomModule] = await Promise.all([
15664
15649
  import('react'),
15665
15650
  import('react-dom/client'),
15666
- import('./index-COIUWugk.esm.js')
15651
+ import('./index-DCo85UGg.esm.js')
15667
15652
  ]);
15668
15653
  // Extract default export from ESM module namespace
15669
15654
  // Dynamic import() returns { default: Module, ...exports }, not the module directly
@@ -15706,8 +15691,13 @@ class PhantomWalletProvider {
15706
15691
  async initializeAsync() {
15707
15692
  // Lazy load dependencies only when actually instantiating
15708
15693
  await loadDependencies();
15709
- // Initialize React component
15710
- this.initialize();
15694
+ // Initialize React component eagerly only when there's a real reason to
15695
+ // (URL callback to consume, prior session to restore, in-page wallet,
15696
+ // or non-Android). Otherwise defer until ensureReady() is reached from
15697
+ // a user-gesture flow. See shouldMountEagerly() for the rationale.
15698
+ if (this.shouldMountEagerly()) {
15699
+ this.initialize();
15700
+ }
15711
15701
  }
15712
15702
  /**
15713
15703
  * Check if social login providers are configured (non-injected providers).
@@ -15715,6 +15705,69 @@ class PhantomWalletProvider {
15715
15705
  hasSocialProviders() {
15716
15706
  return this.resolvedProviders.some(p => p !== 'injected');
15717
15707
  }
15708
+ /**
15709
+ * Decide whether to mount the @phantom/react-sdk <PhantomProvider> tree
15710
+ * eagerly during init() or defer until the first user-triggered call
15711
+ * (login / sign / etc.) reaches ensureReady().
15712
+ *
15713
+ * Mounting the React tree synchronously constructs BrowserSDK, which runs
15714
+ * wallet-standard discovery in its constructor and fires sdk.autoConnect()
15715
+ * in a useEffect on mount. On Solana Seeker (Android Chrome PWA), both
15716
+ * pathways probe the Android intent surface to discover the Phantom mobile
15717
+ * app, which surfaces Chrome's system "wants to access other apps and
15718
+ * services" permission dialog *before* the PWA activity has window focus.
15719
+ * The dialog renders with grayed-out buttons until the user backgrounds
15720
+ * and resumes the app.
15721
+ *
15722
+ * Returns true when eager mount is needed (callback to handle, prior
15723
+ * session, in-page wallet present, or non-Android). Otherwise returns
15724
+ * false — the React tree is mounted lazily inside ensureReady() once a
15725
+ * user gesture brings us there.
15726
+ */
15727
+ shouldMountEagerly() {
15728
+ if (typeof window === 'undefined')
15729
+ return false;
15730
+ // Preserve desktop behavior: always mount eagerly.
15731
+ if (!detectAndroid())
15732
+ return true;
15733
+ // In-page wallet present (Phantom in-app browser / desktop extension on
15734
+ // a desktop-mode Android UA): no Android intent probe needed, mount free.
15735
+ // Tighten beyond truthy `window.phantom` since arbitrary stubs can land
15736
+ // on that key — require a wallet-shaped surface.
15737
+ const ph = window.phantom;
15738
+ if (ph && (ph.solana || ph.ethereum || ph.app))
15739
+ return true;
15740
+ // Returning from a Phantom redirect (OAuth or deeplink hop). SDK must
15741
+ // be live to read these URL params via urlParamsAccessor.
15742
+ const callbackKeys = ['session_id', 'wallet_id', 'selected_account_index', 'error', 'error_description'];
15743
+ try {
15744
+ const params = new URLSearchParams(window.location.search);
15745
+ if (callbackKeys.some(k => params.has(k)))
15746
+ return true;
15747
+ }
15748
+ catch (_a) {
15749
+ return true; // conservative on URL access failure
15750
+ }
15751
+ // Returning user with a stored Phantom session. They've already
15752
+ // approved the Android intent permission for this origin on first
15753
+ // login, so the dialog is typically pre-granted by Chrome — eager
15754
+ // mount lets autoConnect silently restore the wallet handshake.
15755
+ // Require BOTH the marker AND a session storage entry so a stale
15756
+ // orphaned marker doesn't keep eager-mounting forever. Note
15757
+ // isAuthenticated() is a raw key-existence check, not a validity
15758
+ // check — restoreSession() above clears the marker on the next load
15759
+ // if the session is unusable, so the bug self-corrects after at
15760
+ // most one further cold start.
15761
+ try {
15762
+ const stored = getPlatform().storage.getItem('tarobase_last_auth_method');
15763
+ if (stored === 'phantom' && WebSessionManager.isAuthenticated())
15764
+ return true;
15765
+ }
15766
+ catch (_b) {
15767
+ return true;
15768
+ }
15769
+ return false;
15770
+ }
15718
15771
  static getInstance(networkUrl, config) {
15719
15772
  if (!PhantomWalletProvider.instance) {
15720
15773
  new PhantomWalletProvider(networkUrl, config);
@@ -16075,11 +16128,20 @@ class PhantomWalletProvider {
16075
16128
  const handleMobileWalletClick = async () => {
16076
16129
  that.loginInProgress = false;
16077
16130
  walletClickedRef.current = true;
16078
- setShowWalletModal(false);
16131
+ // Don't close the wallet modal yet. On Android Chrome PWA,
16132
+ // closing the modal here triggers a React commit and a focus
16133
+ // transition that races MWA's transact() opening a localhost
16134
+ // WebSocket. Chrome's "Apps on Device" / Local Network Access
16135
+ // permission dialog spawns inheriting the activity's focus
16136
+ // state at that moment — and the in-transit focus produces a
16137
+ // dialog with grayed-out Allow/Block buttons. Keep the modal
16138
+ // mounted through MWA login so focus is stable when the
16139
+ // system dialog spawns; close it after login resolves.
16079
16140
  if (that.onSwitchToMWA) {
16080
16141
  try {
16081
16142
  const mwaProvider = await that.onSwitchToMWA();
16082
16143
  const user = await mwaProvider.login();
16144
+ setShowWalletModal(false);
16083
16145
  if (that.pendingLogin && user) {
16084
16146
  that.pendingLogin.resolve(user);
16085
16147
  that.pendingLogin = null;
@@ -16090,12 +16152,16 @@ class PhantomWalletProvider {
16090
16152
  }
16091
16153
  }
16092
16154
  catch (error) {
16155
+ setShowWalletModal(false);
16093
16156
  if (that.pendingLogin) {
16094
16157
  that.pendingLogin.reject(error);
16095
16158
  that.pendingLogin = null;
16096
16159
  }
16097
16160
  }
16098
16161
  }
16162
+ else {
16163
+ setShowWalletModal(false);
16164
+ }
16099
16165
  };
16100
16166
  const handleCloseModal = () => {
16101
16167
  setShowWalletModal(false);
@@ -16391,6 +16457,13 @@ class PhantomWalletProvider {
16391
16457
  if (this.initPromise) {
16392
16458
  await this.initPromise;
16393
16459
  }
16460
+ // Lazy-mount path: if initializeAsync deferred the React mount (e.g.
16461
+ // first-time visitor on Android Chrome PWA), do it now. We're being
16462
+ // called from a user-gesture flow like login(), so any Android intent
16463
+ // dialog that surfaces will appear with the activity already focused.
16464
+ if (!this.containerElement) {
16465
+ this.initialize();
16466
+ }
16394
16467
  // Wait for SDK to be ready
16395
16468
  await new Promise((resolve) => {
16396
16469
  const check = () => {
@@ -16500,12 +16573,53 @@ class PhantomWalletProvider {
16500
16573
  });
16501
16574
  }
16502
16575
  async restoreSession() {
16503
- await this.ensureReady();
16504
- const session = await WebSessionManager.getSession();
16505
- if (session) {
16506
- return { provider: this, address: session.address };
16576
+ // Read from storage directly. Do NOT ensureReady() here — that would
16577
+ // mount @phantom/react-sdk's <PhantomProvider> during init(), which
16578
+ // synchronously constructs BrowserSDK (running wallet-standard discovery)
16579
+ // and fires sdk.autoConnect() both probing the Android intent surface
16580
+ // before the PWA activity has window focus on Solana Seeker. The
16581
+ // resulting "access other apps and services" system dialog renders
16582
+ // with grayed-out buttons.
16583
+ //
16584
+ // Wrap getSession() in try/catch: WebSessionManager.getSession() runs
16585
+ // JSON.parse on the stored session *outside* its internal try/catch,
16586
+ // so genuinely malformed JSON in localStorage would propagate through
16587
+ // restoreSession() and break init() entirely. Treat any throw as
16588
+ // "no session" and fall through to the cleanup path so corrupted
16589
+ // storage is recoverable on next load.
16590
+ let session;
16591
+ try {
16592
+ session = await WebSessionManager.getSession();
16507
16593
  }
16508
- return null;
16594
+ catch (_a) {
16595
+ session = null;
16596
+ }
16597
+ if (!session) {
16598
+ // Tidy up storage so we don't leave junk behind:
16599
+ // (a) clearSession() removes any stale or unparseable session
16600
+ // storage entry. WebSessionManager.getSession() can't reach
16601
+ // its own clearSession() if JSON.parse threw. Idempotent —
16602
+ // safe to call unconditionally here.
16603
+ // (b) Drop the auth-method marker if it's stale.
16604
+ // WebSessionManager.clearSession() only removes the session
16605
+ // storage key, not the marker — so without this cleanup
16606
+ // shouldMountEagerly() would keep eager-mounting on every
16607
+ // future cold start.
16608
+ try {
16609
+ WebSessionManager.clearSession();
16610
+ }
16611
+ catch ( /* best-effort */_b) { /* best-effort */ }
16612
+ try {
16613
+ if (getPlatform().storage.getItem('tarobase_last_auth_method') === 'phantom') {
16614
+ getPlatform().storage.removeItem('tarobase_last_auth_method');
16615
+ }
16616
+ }
16617
+ catch (_c) {
16618
+ // storage unavailable — best-effort cleanup
16619
+ }
16620
+ return null;
16621
+ }
16622
+ return { provider: this, address: session.address };
16509
16623
  }
16510
16624
  async address() {
16511
16625
  var _a, _b, _c, _d;
@@ -19996,235 +20110,137 @@ function createSolanaRpcSubscriptionsFromTransport(transport) {
19996
20110
  });
19997
20111
  }
19998
20112
 
19999
- var safeBuffer = {exports: {}};
20000
-
20001
- /*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */
20002
-
20003
- var hasRequiredSafeBuffer;
20004
-
20005
- function requireSafeBuffer () {
20006
- if (hasRequiredSafeBuffer) return safeBuffer.exports;
20007
- hasRequiredSafeBuffer = 1;
20008
- (function (module, exports$1) {
20009
- /* eslint-disable node/no-deprecated-api */
20010
- var buffer = requireBuffer();
20011
- var Buffer = buffer.Buffer;
20012
-
20013
- // alternative to using Object.keys for old browsers
20014
- function copyProps (src, dst) {
20015
- for (var key in src) {
20016
- dst[key] = src[key];
20017
- }
20018
- }
20019
- if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {
20020
- module.exports = buffer;
20021
- } else {
20022
- // Copy properties from require('buffer')
20023
- copyProps(buffer, exports$1);
20024
- exports$1.Buffer = SafeBuffer;
20025
- }
20026
-
20027
- function SafeBuffer (arg, encodingOrOffset, length) {
20028
- return Buffer(arg, encodingOrOffset, length)
20029
- }
20030
-
20031
- SafeBuffer.prototype = Object.create(Buffer.prototype);
20032
-
20033
- // Copy static methods from Buffer
20034
- copyProps(Buffer, SafeBuffer);
20035
-
20036
- SafeBuffer.from = function (arg, encodingOrOffset, length) {
20037
- if (typeof arg === 'number') {
20038
- throw new TypeError('Argument must not be a number')
20039
- }
20040
- return Buffer(arg, encodingOrOffset, length)
20041
- };
20042
-
20043
- SafeBuffer.alloc = function (size, fill, encoding) {
20044
- if (typeof size !== 'number') {
20045
- throw new TypeError('Argument must be a number')
20046
- }
20047
- var buf = Buffer(size);
20048
- if (fill !== undefined) {
20049
- if (typeof encoding === 'string') {
20050
- buf.fill(fill, encoding);
20051
- } else {
20052
- buf.fill(fill);
20053
- }
20054
- } else {
20055
- buf.fill(0);
20056
- }
20057
- return buf
20058
- };
20059
-
20060
- SafeBuffer.allocUnsafe = function (size) {
20061
- if (typeof size !== 'number') {
20062
- throw new TypeError('Argument must be a number')
20063
- }
20064
- return Buffer(size)
20065
- };
20066
-
20067
- SafeBuffer.allocUnsafeSlow = function (size) {
20068
- if (typeof size !== 'number') {
20069
- throw new TypeError('Argument must be a number')
20070
- }
20071
- return buffer.SlowBuffer(size)
20072
- };
20073
- } (safeBuffer, safeBuffer.exports));
20074
- return safeBuffer.exports;
20075
- }
20076
-
20077
- var src;
20078
- var hasRequiredSrc;
20079
-
20080
- function requireSrc () {
20081
- if (hasRequiredSrc) return src;
20082
- hasRequiredSrc = 1;
20083
- // base-x encoding / decoding
20084
- // Copyright (c) 2018 base-x contributors
20085
- // Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)
20086
- // Distributed under the MIT software license, see the accompanying
20087
- // file LICENSE or http://www.opensource.org/licenses/mit-license.php.
20088
- // @ts-ignore
20089
- var _Buffer = requireSafeBuffer().Buffer;
20090
- function base (ALPHABET) {
20091
- if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }
20092
- var BASE_MAP = new Uint8Array(256);
20093
- for (var j = 0; j < BASE_MAP.length; j++) {
20094
- BASE_MAP[j] = 255;
20095
- }
20096
- for (var i = 0; i < ALPHABET.length; i++) {
20097
- var x = ALPHABET.charAt(i);
20098
- var xc = x.charCodeAt(0);
20099
- if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }
20100
- BASE_MAP[xc] = i;
20101
- }
20102
- var BASE = ALPHABET.length;
20103
- var LEADER = ALPHABET.charAt(0);
20104
- var FACTOR = Math.log(BASE) / Math.log(256); // log(BASE) / log(256), rounded up
20105
- var iFACTOR = Math.log(256) / Math.log(BASE); // log(256) / log(BASE), rounded up
20106
- function encode (source) {
20107
- if (Array.isArray(source) || source instanceof Uint8Array) { source = _Buffer.from(source); }
20108
- if (!_Buffer.isBuffer(source)) { throw new TypeError('Expected Buffer') }
20109
- if (source.length === 0) { return '' }
20110
- // Skip & count leading zeroes.
20111
- var zeroes = 0;
20112
- var length = 0;
20113
- var pbegin = 0;
20114
- var pend = source.length;
20115
- while (pbegin !== pend && source[pbegin] === 0) {
20116
- pbegin++;
20117
- zeroes++;
20118
- }
20119
- // Allocate enough space in big-endian base58 representation.
20120
- var size = ((pend - pbegin) * iFACTOR + 1) >>> 0;
20121
- var b58 = new Uint8Array(size);
20122
- // Process the bytes.
20123
- while (pbegin !== pend) {
20124
- var carry = source[pbegin];
20125
- // Apply "b58 = b58 * 256 + ch".
20126
- var i = 0;
20127
- for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {
20128
- carry += (256 * b58[it1]) >>> 0;
20129
- b58[it1] = (carry % BASE) >>> 0;
20130
- carry = (carry / BASE) >>> 0;
20131
- }
20132
- if (carry !== 0) { throw new Error('Non-zero carry') }
20133
- length = i;
20134
- pbegin++;
20135
- }
20136
- // Skip leading zeroes in base58 result.
20137
- var it2 = size - length;
20138
- while (it2 !== size && b58[it2] === 0) {
20139
- it2++;
20140
- }
20141
- // Translate the result into a string.
20142
- var str = LEADER.repeat(zeroes);
20143
- for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]); }
20144
- return str
20145
- }
20146
- function decodeUnsafe (source) {
20147
- if (typeof source !== 'string') { throw new TypeError('Expected String') }
20148
- if (source.length === 0) { return _Buffer.alloc(0) }
20149
- var psz = 0;
20150
- // Skip and count leading '1's.
20151
- var zeroes = 0;
20152
- var length = 0;
20153
- while (source[psz] === LEADER) {
20154
- zeroes++;
20155
- psz++;
20156
- }
20157
- // Allocate enough space in big-endian base256 representation.
20158
- var size = (((source.length - psz) * FACTOR) + 1) >>> 0; // log(58) / log(256), rounded up.
20159
- var b256 = new Uint8Array(size);
20160
- // Process the characters.
20161
- while (psz < source.length) {
20162
- // Find code of next character
20163
- var charCode = source.charCodeAt(psz);
20164
- // Base map can not be indexed using char code
20165
- if (charCode > 255) { return }
20166
- // Decode character
20167
- var carry = BASE_MAP[charCode];
20168
- // Invalid character
20169
- if (carry === 255) { return }
20170
- var i = 0;
20171
- for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {
20172
- carry += (BASE * b256[it3]) >>> 0;
20173
- b256[it3] = (carry % 256) >>> 0;
20174
- carry = (carry / 256) >>> 0;
20175
- }
20176
- if (carry !== 0) { throw new Error('Non-zero carry') }
20177
- length = i;
20178
- psz++;
20179
- }
20180
- // Skip leading zeroes in b256.
20181
- var it4 = size - length;
20182
- while (it4 !== size && b256[it4] === 0) {
20183
- it4++;
20184
- }
20185
- var vch = _Buffer.allocUnsafe(zeroes + (size - it4));
20186
- vch.fill(0x00, 0, zeroes);
20187
- var j = zeroes;
20188
- while (it4 !== size) {
20189
- vch[j++] = b256[it4++];
20190
- }
20191
- return vch
20192
- }
20193
- function decode (string) {
20194
- var buffer = decodeUnsafe(string);
20195
- if (buffer) { return buffer }
20196
- throw new Error('Non-base' + BASE + ' character')
20197
- }
20198
- return {
20199
- encode: encode,
20200
- decodeUnsafe: decodeUnsafe,
20201
- decode: decode
20202
- }
20203
- }
20204
- src = base;
20205
- return src;
20206
- }
20207
-
20208
- var bs58$1;
20209
- var hasRequiredBs58;
20210
-
20211
- function requireBs58 () {
20212
- if (hasRequiredBs58) return bs58$1;
20213
- hasRequiredBs58 = 1;
20214
- var basex = requireSrc();
20215
- var ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
20216
-
20217
- bs58$1 = basex(ALPHABET);
20218
- return bs58$1;
20113
+ // base-x encoding / decoding
20114
+ // Copyright (c) 2018 base-x contributors
20115
+ // Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)
20116
+ // Distributed under the MIT software license, see the accompanying
20117
+ // file LICENSE or http://www.opensource.org/licenses/mit-license.php.
20118
+ function base (ALPHABET) {
20119
+ if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }
20120
+ const BASE_MAP = new Uint8Array(256);
20121
+ for (let j = 0; j < BASE_MAP.length; j++) {
20122
+ BASE_MAP[j] = 255;
20123
+ }
20124
+ for (let i = 0; i < ALPHABET.length; i++) {
20125
+ const x = ALPHABET.charAt(i);
20126
+ const xc = x.charCodeAt(0);
20127
+ if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }
20128
+ BASE_MAP[xc] = i;
20129
+ }
20130
+ const BASE = ALPHABET.length;
20131
+ const LEADER = ALPHABET.charAt(0);
20132
+ const FACTOR = Math.log(BASE) / Math.log(256); // log(BASE) / log(256), rounded up
20133
+ const iFACTOR = Math.log(256) / Math.log(BASE); // log(256) / log(BASE), rounded up
20134
+ function encode (source) {
20135
+ // eslint-disable-next-line no-empty
20136
+ if (source instanceof Uint8Array) ; else if (ArrayBuffer.isView(source)) {
20137
+ source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);
20138
+ } else if (Array.isArray(source)) {
20139
+ source = Uint8Array.from(source);
20140
+ }
20141
+ if (!(source instanceof Uint8Array)) { throw new TypeError('Expected Uint8Array') }
20142
+ if (source.length === 0) { return '' }
20143
+ // Skip & count leading zeroes.
20144
+ let zeroes = 0;
20145
+ let length = 0;
20146
+ let pbegin = 0;
20147
+ const pend = source.length;
20148
+ while (pbegin !== pend && source[pbegin] === 0) {
20149
+ pbegin++;
20150
+ zeroes++;
20151
+ }
20152
+ // Allocate enough space in big-endian base58 representation.
20153
+ const size = ((pend - pbegin) * iFACTOR + 1) >>> 0;
20154
+ const b58 = new Uint8Array(size);
20155
+ // Process the bytes.
20156
+ while (pbegin !== pend) {
20157
+ let carry = source[pbegin];
20158
+ // Apply "b58 = b58 * 256 + ch".
20159
+ let i = 0;
20160
+ for (let it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {
20161
+ carry += (256 * b58[it1]) >>> 0;
20162
+ b58[it1] = (carry % BASE) >>> 0;
20163
+ carry = (carry / BASE) >>> 0;
20164
+ }
20165
+ if (carry !== 0) { throw new Error('Non-zero carry') }
20166
+ length = i;
20167
+ pbegin++;
20168
+ }
20169
+ // Skip leading zeroes in base58 result.
20170
+ let it2 = size - length;
20171
+ while (it2 !== size && b58[it2] === 0) {
20172
+ it2++;
20173
+ }
20174
+ // Translate the result into a string.
20175
+ let str = LEADER.repeat(zeroes);
20176
+ for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]); }
20177
+ return str
20178
+ }
20179
+ function decodeUnsafe (source) {
20180
+ if (typeof source !== 'string') { throw new TypeError('Expected String') }
20181
+ if (source.length === 0) { return new Uint8Array() }
20182
+ let psz = 0;
20183
+ // Skip and count leading '1's.
20184
+ let zeroes = 0;
20185
+ let length = 0;
20186
+ while (source[psz] === LEADER) {
20187
+ zeroes++;
20188
+ psz++;
20189
+ }
20190
+ // Allocate enough space in big-endian base256 representation.
20191
+ const size = (((source.length - psz) * FACTOR) + 1) >>> 0; // log(58) / log(256), rounded up.
20192
+ const b256 = new Uint8Array(size);
20193
+ // Process the characters.
20194
+ while (psz < source.length) {
20195
+ // Find code of next character
20196
+ const charCode = source.charCodeAt(psz);
20197
+ // Base map can not be indexed using char code
20198
+ if (charCode > 255) { return }
20199
+ // Decode character
20200
+ let carry = BASE_MAP[charCode];
20201
+ // Invalid character
20202
+ if (carry === 255) { return }
20203
+ let i = 0;
20204
+ for (let it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {
20205
+ carry += (BASE * b256[it3]) >>> 0;
20206
+ b256[it3] = (carry % 256) >>> 0;
20207
+ carry = (carry / 256) >>> 0;
20208
+ }
20209
+ if (carry !== 0) { throw new Error('Non-zero carry') }
20210
+ length = i;
20211
+ psz++;
20212
+ }
20213
+ // Skip leading zeroes in b256.
20214
+ let it4 = size - length;
20215
+ while (it4 !== size && b256[it4] === 0) {
20216
+ it4++;
20217
+ }
20218
+ const vch = new Uint8Array(zeroes + (size - it4));
20219
+ let j = zeroes;
20220
+ while (it4 !== size) {
20221
+ vch[j++] = b256[it4++];
20222
+ }
20223
+ return vch
20224
+ }
20225
+ function decode (string) {
20226
+ const buffer = decodeUnsafe(string);
20227
+ if (buffer) { return buffer }
20228
+ throw new Error('Non-base' + BASE + ' character')
20229
+ }
20230
+ return {
20231
+ encode,
20232
+ decodeUnsafe,
20233
+ decode
20234
+ }
20219
20235
  }
20220
20236
 
20221
- var bs58Exports = requireBs58();
20222
- var bs58 = /*@__PURE__*/getDefaultExportFromCjs$1(bs58Exports);
20237
+ var ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
20238
+ var bs58 = base(ALPHABET);
20223
20239
 
20224
- var index = /*#__PURE__*/_mergeNamespaces({
20240
+ var index = /*#__PURE__*/Object.freeze({
20225
20241
  __proto__: null,
20226
20242
  default: bs58
20227
- }, [bs58Exports]);
20243
+ });
20228
20244
 
20229
20245
  const SURFNET_RPC_URL$1 = "https://surfpool.fly.dev";
20230
20246
  let React;
@@ -21126,6 +21142,46 @@ function isMobileWalletAvailable() {
21126
21142
  return detectAndroid();
21127
21143
  }
21128
21144
  const ED25519_SIGNATURE_LENGTH = 64;
21145
+ /**
21146
+ * On Android Chrome PWA (e.g. Solana Seeker in standalone mode), MWA's
21147
+ * transact() opens a WebSocket to ws://localhost:<port>/solana-wallet to
21148
+ * handshake with the wallet app on the device. Chrome guards localhost
21149
+ * connections behind the Local Network Access ("Apps on Device") permission
21150
+ * dialog. The dialog inherits the activity's window-focus state at spawn
21151
+ * time — so if focus is in transit (e.g. just after a Phantom-modal close
21152
+ * triggers a React commit), the dialog renders with grayed-out Allow/Block
21153
+ * buttons and only becomes interactive after a manual background→resume
21154
+ * (which forces an onPause→onResume cycle on the activity).
21155
+ *
21156
+ * Wait for window focus to settle, then yield one frame, before opening
21157
+ * the WebSocket. This makes the system dialog spawn into a focused activity
21158
+ * so its buttons are immediately tappable.
21159
+ */
21160
+ async function awaitActivityFocus() {
21161
+ if (typeof document === 'undefined' || typeof window === 'undefined')
21162
+ return;
21163
+ if (!document.hasFocus()) {
21164
+ await new Promise((resolve) => {
21165
+ const onFocus = () => {
21166
+ window.removeEventListener('focus', onFocus);
21167
+ resolve();
21168
+ };
21169
+ window.addEventListener('focus', onFocus);
21170
+ // Fallback in case the focus event never fires (e.g. activity
21171
+ // already focused but document.hasFocus() momentarily lies during
21172
+ // a React commit). 600ms is a perceptual ceiling — beyond this
21173
+ // the user notices a stall, so we'd rather take the focus race
21174
+ // than block forever.
21175
+ setTimeout(() => {
21176
+ window.removeEventListener('focus', onFocus);
21177
+ resolve();
21178
+ }, 600);
21179
+ });
21180
+ }
21181
+ // Yield to next paint so any pending React commits / focus changes have
21182
+ // flushed before the WebSocket open spawns the system dialog.
21183
+ await new Promise((r) => requestAnimationFrame(() => r()));
21184
+ }
21129
21185
  // Dynamically imported MWA protocol module
21130
21186
  let mwaProtocolModule = null;
21131
21187
  let mwaProtocolLoadPromise = null;
@@ -21138,7 +21194,7 @@ async function loadMwaProtocol() {
21138
21194
  return mwaProtocolLoadPromise;
21139
21195
  mwaProtocolLoadPromise = (async () => {
21140
21196
  try {
21141
- mwaProtocolModule = await import('./index.browser-B4zXnffD.esm.js');
21197
+ mwaProtocolModule = await import('./index.browser-xJkO73vw.esm.js');
21142
21198
  }
21143
21199
  catch (e) {
21144
21200
  console.warn('[SolanaMobileWallet] @solana-mobile/mobile-wallet-adapter-protocol-web3js not installed. Install it to enable Seeker wallet support.');
@@ -21160,7 +21216,7 @@ async function registerMobileWalletAdapter(config) {
21160
21216
  if (typeof window === 'undefined')
21161
21217
  return;
21162
21218
  try {
21163
- const walletStandardMobile = await import('./index.browser-BuHl80dp.esm.js');
21219
+ const walletStandardMobile = await import('./index.browser-7dDfRU5G.esm.js');
21164
21220
  const registerMwa = walletStandardMobile.registerMwa || ((_a = walletStandardMobile.default) === null || _a === void 0 ? void 0 : _a.registerMwa);
21165
21221
  if (!registerMwa) {
21166
21222
  console.warn('[SolanaMobileWallet] registerMwa not found in @solana-mobile/wallet-standard-mobile');
@@ -21304,6 +21360,7 @@ class SolanaMobileWalletProvider {
21304
21360
  }
21305
21361
  // Pre-fetch nonce from server while wallet is not yet connected
21306
21362
  const nonce = await genAuthNonce();
21363
+ await awaitActivityFocus();
21307
21364
  // Single transact() call: authorize + signMessages — one wallet popup
21308
21365
  const result = await transact(async (wallet) => {
21309
21366
  // Step 1: Authorize — user approves the dApp
@@ -21392,6 +21449,7 @@ class SolanaMobileWalletProvider {
21392
21449
  await loadMwaProtocol();
21393
21450
  const { transact } = mwaProtocolModule;
21394
21451
  const authToken = this.authToken;
21452
+ await awaitActivityFocus();
21395
21453
  await transact(async (wallet) => {
21396
21454
  await wallet.deauthorize({ auth_token: authToken });
21397
21455
  }, this.getAssociationConfig());
@@ -21417,6 +21475,7 @@ class SolanaMobileWalletProvider {
21417
21475
  const { transact } = mwaProtocolModule;
21418
21476
  const base64Addr = this.base64Address;
21419
21477
  try {
21478
+ await awaitActivityFocus();
21420
21479
  const signedMessages = await transact(async (wallet) => {
21421
21480
  await this.reauthorizeWallet(wallet);
21422
21481
  const messageBytes = getPlatform().textEncode(message);
@@ -21470,6 +21529,7 @@ class SolanaMobileWalletProvider {
21470
21529
  }
21471
21530
  }
21472
21531
  try {
21532
+ await awaitActivityFocus();
21473
21533
  const signedTransactions = await transact(async (wallet) => {
21474
21534
  await this.reauthorizeWallet(wallet);
21475
21535
  return wallet.signTransactions({ transactions: [transaction] });
@@ -21517,6 +21577,7 @@ class SolanaMobileWalletProvider {
21517
21577
  }
21518
21578
  if (isSurfnet) {
21519
21579
  // Surfnet: sign-only, then submit to our specific RPC
21580
+ await awaitActivityFocus();
21520
21581
  const signedTransactions = await transact(async (wallet) => {
21521
21582
  await this.reauthorizeWallet(wallet);
21522
21583
  return wallet.signTransactions({ transactions: [transaction] });
@@ -21536,6 +21597,7 @@ class SolanaMobileWalletProvider {
21536
21597
  return signature;
21537
21598
  }
21538
21599
  // Non-surfnet: use signAndSendTransactions for wallet-optimized submission
21600
+ await awaitActivityFocus();
21539
21601
  const signatures = await transact(async (wallet) => {
21540
21602
  await this.reauthorizeWallet(wallet);
21541
21603
  return wallet.signAndSendTransactions({
@@ -21619,6 +21681,7 @@ class SolanaMobileWalletProvider {
21619
21681
  tx = result.tx;
21620
21682
  }
21621
21683
  if ((options === null || options === void 0 ? void 0 : options.shouldSubmitTx) === false) {
21684
+ await awaitActivityFocus();
21622
21685
  const [signedTx] = await transact(async (wallet) => {
21623
21686
  await this.reauthorizeWallet(wallet);
21624
21687
  return wallet.signTransactions({ transactions: [tx] });
@@ -21632,6 +21695,7 @@ class SolanaMobileWalletProvider {
21632
21695
  }
21633
21696
  if (isSurfnet) {
21634
21697
  // Surfnet: sign then submit manually to our RPC
21698
+ await awaitActivityFocus();
21635
21699
  const [signedTx] = await transact(async (wallet) => {
21636
21700
  await this.reauthorizeWallet(wallet);
21637
21701
  return wallet.signTransactions({ transactions: [tx] });
@@ -21660,6 +21724,7 @@ class SolanaMobileWalletProvider {
21660
21724
  };
21661
21725
  }
21662
21726
  // Non-surfnet: use signAndSendTransactions
21727
+ await awaitActivityFocus();
21663
21728
  const signatures = await transact(async (wallet) => {
21664
21729
  await this.reauthorizeWallet(wallet);
21665
21730
  return wallet.signAndSendTransactions({
@@ -22068,5 +22133,5 @@ class PrivyExpoProvider {
22068
22133
  }
22069
22134
  }
22070
22135
 
22071
- export { getMany as $, useAuth as A, deserializeTransaction as B, getIdToken as C, setPlatform as D, getPlatform as E, PrivyWalletProvider as F, DEFAULT_TEST_ADDRESS as G, isMobileWalletAvailable as H, registerMobileWalletAdapter as I, PrivyExpoProvider as J, InsufficientBalanceError as K, ServerSessionManager as L, MockAuthProvider as M, buildSetDocumentsTransaction as N, OffchainAuthProvider as O, PhantomWalletProvider as P, clearCache as Q, ReactNativeSessionManager as R, SolanaMobileWalletProvider as S, closeAllSubscriptions as T, convertRemainingAccounts as U, createSessionWithPrivy as V, WebSessionManager as W, createSessionWithSignature as X, genAuthNonce as Y, genSolanaMessage as Z, getCachedData as _, getCurrentUser as a, reconnectWithNewAuth as a0, refreshSession as a1, signSessionCreateMessage as a2, bufferExports as b, onAuthLoadingChanged as c, getAuthLoading as d, logout as e, getConfig as f, getDefaultExportFromCjs$1 as g, getAuthProvider as h, init as i, get as j, setMany as k, login as l, setFile as m, getFiles as n, onAuthStateChanged as o, runQueryMany as p, runExpression as q, runQuery as r, set as s, runExpressionMany as t, signMessage as u, signTransaction as v, signAndSubmitTransaction as w, count as x, aggregate as y, subscribe as z };
22072
- //# sourceMappingURL=index-Db0NqU8R.esm.js.map
22136
+ export { getCachedData as $, subscribe as A, useAuth as B, deserializeTransaction as C, getIdToken as D, setPlatform as E, getPlatform as F, PrivyWalletProvider as G, DEFAULT_TEST_ADDRESS as H, isMobileWalletAvailable as I, registerMobileWalletAdapter as J, PrivyExpoProvider as K, InsufficientBalanceError as L, MockAuthProvider as M, ServerSessionManager as N, OffchainAuthProvider as O, PhantomWalletProvider as P, buildSetDocumentsTransaction as Q, ReactNativeSessionManager as R, SolanaMobileWalletProvider as S, clearCache as T, closeAllSubscriptions as U, convertRemainingAccounts as V, WebSessionManager as W, createSessionWithPrivy as X, createSessionWithSignature as Y, genAuthNonce as Z, genSolanaMessage as _, bs58 as a, getMany as a0, reconnectWithNewAuth as a1, refreshSession as a2, signSessionCreateMessage as a3, bufferExports as b, getCurrentUser as c, onAuthLoadingChanged as d, getAuthLoading as e, logout as f, getDefaultExportFromCjs$1 as g, getConfig as h, init as i, getAuthProvider as j, get as k, login as l, setMany as m, setFile as n, onAuthStateChanged as o, getFiles as p, runQueryMany as q, runQuery as r, set as s, runExpression as t, runExpressionMany as u, signMessage as v, signTransaction as w, signAndSubmitTransaction as x, count as y, aggregate as z };
22137
+ //# sourceMappingURL=index-Bx_lLXRT.esm.js.map