@solana/connector 0.1.8 → 0.1.10

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/README.md +97 -0
  2. package/dist/chunk-4JT24DIX.js +466 -0
  3. package/dist/chunk-4JT24DIX.js.map +1 -0
  4. package/dist/chunk-4KD6HQQG.js +69 -0
  5. package/dist/chunk-4KD6HQQG.js.map +1 -0
  6. package/dist/{chunk-DSUCH44G.js → chunk-64LV76OK.js} +2 -67
  7. package/dist/chunk-64LV76OK.js.map +1 -0
  8. package/dist/{chunk-FTXIXM43.js → chunk-6AJJJG5B.js} +614 -138
  9. package/dist/chunk-6AJJJG5B.js.map +1 -0
  10. package/dist/chunk-7XHVZW2L.mjs +460 -0
  11. package/dist/chunk-7XHVZW2L.mjs.map +1 -0
  12. package/dist/{chunk-K3BNIGPX.js → chunk-ATYK5OKR.js} +81 -33
  13. package/dist/chunk-ATYK5OKR.js.map +1 -0
  14. package/dist/{chunk-J7DHGLW6.mjs → chunk-DKCZA2QI.mjs} +3 -61
  15. package/dist/chunk-DKCZA2QI.mjs.map +1 -0
  16. package/dist/chunk-FVA4TUI4.mjs +178 -0
  17. package/dist/chunk-FVA4TUI4.mjs.map +1 -0
  18. package/dist/chunk-HO6QNKFM.mjs +61 -0
  19. package/dist/chunk-HO6QNKFM.mjs.map +1 -0
  20. package/dist/chunk-MN7XNCYI.js +230 -0
  21. package/dist/chunk-MN7XNCYI.js.map +1 -0
  22. package/dist/{chunk-6F6M6L7R.mjs → chunk-QOIQBWMP.mjs} +524 -56
  23. package/dist/chunk-QOIQBWMP.mjs.map +1 -0
  24. package/dist/{chunk-TTOKQAPX.mjs → chunk-WGZYKDXF.mjs} +57 -11
  25. package/dist/chunk-WGZYKDXF.mjs.map +1 -0
  26. package/dist/compat.js +10 -9
  27. package/dist/compat.js.map +1 -1
  28. package/dist/compat.mjs +2 -1
  29. package/dist/compat.mjs.map +1 -1
  30. package/dist/headless.d.mts +217 -100
  31. package/dist/headless.d.ts +217 -100
  32. package/dist/headless.js +190 -168
  33. package/dist/headless.mjs +5 -3
  34. package/dist/index.d.mts +3 -3
  35. package/dist/index.d.ts +3 -3
  36. package/dist/index.js +233 -203
  37. package/dist/index.mjs +6 -4
  38. package/dist/react.d.mts +72 -4
  39. package/dist/react.d.ts +72 -4
  40. package/dist/react.js +52 -36
  41. package/dist/react.mjs +2 -2
  42. package/dist/{standard-shim-CT49DM5l.d.mts → standard-shim-BTUm7cur.d.mts} +280 -1
  43. package/dist/{standard-shim-D9guL5fz.d.ts → standard-shim-LsQ97i9T.d.ts} +280 -1
  44. package/dist/walletconnect-D4JN6H2O.js +28 -0
  45. package/dist/walletconnect-D4JN6H2O.js.map +1 -0
  46. package/dist/walletconnect-I3PZUBTA.mjs +3 -0
  47. package/dist/walletconnect-I3PZUBTA.mjs.map +1 -0
  48. package/package.json +6 -2
  49. package/dist/chunk-6F6M6L7R.mjs.map +0 -1
  50. package/dist/chunk-AOIXHVRH.js +0 -535
  51. package/dist/chunk-AOIXHVRH.js.map +0 -1
  52. package/dist/chunk-DSUCH44G.js.map +0 -1
  53. package/dist/chunk-FTXIXM43.js.map +0 -1
  54. package/dist/chunk-G575OAT4.mjs +0 -476
  55. package/dist/chunk-G575OAT4.mjs.map +0 -1
  56. package/dist/chunk-J7DHGLW6.mjs.map +0 -1
  57. package/dist/chunk-K3BNIGPX.js.map +0 -1
  58. package/dist/chunk-TTOKQAPX.mjs.map +0 -1
@@ -1,12 +1,15 @@
1
1
  'use strict';
2
2
 
3
- var chunkDSUCH44G_js = require('./chunk-DSUCH44G.js');
3
+ var chunk4KD6HQQG_js = require('./chunk-4KD6HQQG.js');
4
+ var chunk64LV76OK_js = require('./chunk-64LV76OK.js');
4
5
  var react = require('react');
5
6
  var jsxRuntime = require('react/jsx-runtime');
6
7
  var webcryptoEd25519Polyfill = require('@solana/webcrypto-ed25519-polyfill');
8
+ var core = require('@wallet-ui/core');
7
9
  var addresses = require('@solana/addresses');
8
- var transactions = require('@solana/transactions');
10
+ var v4 = require('zod/v4');
9
11
  var codecs = require('@solana/codecs');
12
+ var transactions = require('@solana/transactions');
10
13
 
11
14
  // src/lib/wallet/standard-shim.ts
12
15
  var registry = null, registryInitPromise = null, registryInitResolve = null, ready = new Promise((resolve, reject) => {
@@ -96,7 +99,7 @@ function toClusterId(network) {
96
99
  function getDefaultRpcUrl(network) {
97
100
  let normalized = normalizeNetwork(network);
98
101
  try {
99
- return chunkDSUCH44G_js.getPublicSolanaRpcUrl(normalized);
102
+ return chunk64LV76OK_js.getPublicSolanaRpcUrl(normalized);
100
103
  } catch {
101
104
  return PUBLIC_RPC_ENDPOINTS[normalized] ?? PUBLIC_RPC_ENDPOINTS.localnet;
102
105
  }
@@ -151,14 +154,14 @@ function getClusterExplorerUrl(cluster, path) {
151
154
  }
152
155
  function getTransactionUrl(signature, cluster) {
153
156
  let clusterType = getClusterType(cluster), explorerCluster = clusterType === "custom" || clusterType === "localnet" ? "devnet" : clusterType;
154
- return chunkDSUCH44G_js.getExplorerLink({
157
+ return chunk64LV76OK_js.getExplorerLink({
155
158
  transaction: signature,
156
159
  cluster: explorerCluster === "mainnet" ? "mainnet" : explorerCluster
157
160
  });
158
161
  }
159
162
  function getAddressUrl(address, cluster) {
160
163
  let clusterType = getClusterType(cluster), explorerCluster = clusterType === "custom" || clusterType === "localnet" ? "devnet" : clusterType;
161
- return chunkDSUCH44G_js.getExplorerLink({
164
+ return chunk64LV76OK_js.getExplorerLink({
162
165
  address,
163
166
  cluster: explorerCluster === "mainnet" ? "mainnet" : explorerCluster
164
167
  });
@@ -221,9 +224,9 @@ var POLL_INTERVALS_MS = [1e3, 2e3, 3e3, 5e3, 5e3], DEFAULT_MAX_RETRIES = 3, DEFA
221
224
  // src/lib/core/state-manager.ts
222
225
  var StateManager = class {
223
226
  constructor(initialState) {
224
- chunkDSUCH44G_js.__publicField(this, "state");
225
- chunkDSUCH44G_js.__publicField(this, "listeners", /* @__PURE__ */ new Set());
226
- chunkDSUCH44G_js.__publicField(this, "notifyTimeout");
227
+ chunk64LV76OK_js.__publicField(this, "state");
228
+ chunk64LV76OK_js.__publicField(this, "listeners", /* @__PURE__ */ new Set());
229
+ chunk64LV76OK_js.__publicField(this, "notifyTimeout");
227
230
  this.state = initialState;
228
231
  }
229
232
  /**
@@ -282,10 +285,10 @@ var StateManager = class {
282
285
  };
283
286
 
284
287
  // src/lib/core/event-emitter.ts
285
- var logger = chunkDSUCH44G_js.createLogger("EventEmitter"), EventEmitter = class {
288
+ var logger = chunk64LV76OK_js.createLogger("EventEmitter"), EventEmitter = class {
286
289
  constructor(debug = false) {
287
- chunkDSUCH44G_js.__publicField(this, "listeners", /* @__PURE__ */ new Set());
288
- chunkDSUCH44G_js.__publicField(this, "debug");
290
+ chunk64LV76OK_js.__publicField(this, "listeners", /* @__PURE__ */ new Set());
291
+ chunk64LV76OK_js.__publicField(this, "debug");
289
292
  this.debug = debug;
290
293
  }
291
294
  /**
@@ -341,12 +344,12 @@ var logger = chunkDSUCH44G_js.createLogger("EventEmitter"), EventEmitter = class
341
344
  // src/lib/core/debug-metrics.ts
342
345
  var DebugMetrics = class {
343
346
  constructor() {
344
- chunkDSUCH44G_js.__publicField(this, "stateUpdates", 0);
345
- chunkDSUCH44G_js.__publicField(this, "noopUpdates", 0);
346
- chunkDSUCH44G_js.__publicField(this, "updateTimes", []);
347
- chunkDSUCH44G_js.__publicField(this, "lastUpdateTime", 0);
348
- chunkDSUCH44G_js.__publicField(this, "eventListenerCount", 0);
349
- chunkDSUCH44G_js.__publicField(this, "subscriptionCount", 0);
347
+ chunk64LV76OK_js.__publicField(this, "stateUpdates", 0);
348
+ chunk64LV76OK_js.__publicField(this, "noopUpdates", 0);
349
+ chunk64LV76OK_js.__publicField(this, "updateTimes", []);
350
+ chunk64LV76OK_js.__publicField(this, "lastUpdateTime", 0);
351
+ chunk64LV76OK_js.__publicField(this, "eventListenerCount", 0);
352
+ chunk64LV76OK_js.__publicField(this, "subscriptionCount", 0);
350
353
  }
351
354
  /**
352
355
  * Record a state update attempt
@@ -386,11 +389,11 @@ var DebugMetrics = class {
386
389
  // src/lib/core/base-collaborator.ts
387
390
  var BaseCollaborator = class {
388
391
  constructor(config, loggerPrefix) {
389
- chunkDSUCH44G_js.__publicField(this, "stateManager");
390
- chunkDSUCH44G_js.__publicField(this, "eventEmitter");
391
- chunkDSUCH44G_js.__publicField(this, "debug");
392
- chunkDSUCH44G_js.__publicField(this, "logger");
393
- this.stateManager = config.stateManager, this.eventEmitter = config.eventEmitter, this.debug = config.debug ?? false, this.logger = chunkDSUCH44G_js.createLogger(loggerPrefix);
392
+ chunk64LV76OK_js.__publicField(this, "stateManager");
393
+ chunk64LV76OK_js.__publicField(this, "eventEmitter");
394
+ chunk64LV76OK_js.__publicField(this, "debug");
395
+ chunk64LV76OK_js.__publicField(this, "logger");
396
+ this.stateManager = config.stateManager, this.eventEmitter = config.eventEmitter, this.debug = config.debug ?? false, this.logger = chunk64LV76OK_js.createLogger(loggerPrefix);
394
397
  }
395
398
  /**
396
399
  * Log debug message if debug mode is enabled
@@ -413,7 +416,7 @@ var BaseCollaborator = class {
413
416
  };
414
417
 
415
418
  // src/lib/wallet/authenticity-verifier.ts
416
- var logger2 = chunkDSUCH44G_js.createLogger("WalletAuthenticity"), WalletAuthenticityVerifier = class {
419
+ var logger2 = chunk64LV76OK_js.createLogger("WalletAuthenticity"), WalletAuthenticityVerifier = class {
417
420
  /**
418
421
  * Verify a wallet's authenticity using dynamic heuristics
419
422
  *
@@ -622,8 +625,40 @@ var logger2 = chunkDSUCH44G_js.createLogger("WalletAuthenticity"), WalletAuthent
622
625
  }
623
626
  };
624
627
 
628
+ // src/lib/wallet/wallet-icon-overrides.ts
629
+ var PHANTOM_ICON = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cmVjdCB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHJ4PSIxMiIgZmlsbD0iIzk3ODZFNCIvPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF80NF82MTApIj48cGF0aCBkPSJNNS43NjU1IDE1Ljc5N0M1Ljc2NTUgMTcuMjIyIDYuNDk4NzkgMTcuNTUgNy4yNjE0MSAxNy41NUM4Ljg3NDYzIDE3LjU1IDEwLjA4NyAxNi4wODQxIDEwLjgxMDUgMTQuOTI1NkMxMC43MjI1IDE1LjE4MTkgMTAuNjczNiAxNS40MzgyIDEwLjY3MzYgMTUuNjg0MkMxMC42NzM2IDE2LjM2MDkgMTEuMDQ1MiAxNi44NDI3IDExLjc3ODUgMTYuODQyN0MxMi43ODU1IDE2Ljg0MjcgMTMuODYxIDE1LjkyIDE0LjQxODMgMTQuOTI1NkMxNC4zNzkyIDE1LjA2OTIgMTQuMzU5NiAxNS4yMDI0IDE0LjM1OTYgMTUuMzI1NEMxNC4zNTk2IDE1Ljc5NyAxNC42MTM4IDE2LjA5NDMgMTUuMTMyIDE2LjA5NDNDMTYuNzY0OCAxNi4wOTQzIDE4LjQwNzQgMTMuMDcwMSAxOC40MDc0IDEwLjQyNTJDMTguNDA3NCA4LjM2NDU5IDE3LjQxMDEgNi41NTAwNSAxNC45MDcxIDYuNTUwMDVDMTAuNTA3NCA2LjU1MDA1IDUuNzY1NSAxMi4xNjc5IDUuNzY1NSAxNS43OTdaTTEzLjM5MTcgMTAuMTk5NkMxMy4zOTE3IDkuNjg3MDUgMTMuNjY1NCA5LjMyODI1IDE0LjA2NjMgOS4zMjgyNUMxNC40NTc0IDkuMzI4MjUgMTQuNzMxMiA5LjY4NzA1IDE0LjczMTIgMTAuMTk5NkMxNC43MzEyIDEwLjcxMjIgMTQuNDU3NCAxMS4wODEzIDE0LjA2NjMgMTEuMDgxM0MxMy42NjU0IDExLjA4MTMgMTMuMzkxNyAxMC43MTIyIDEzLjM5MTcgMTAuMTk5NlpNMTUuNDg0IDEwLjE5OTZDMTUuNDg0IDkuNjg3MDUgMTUuNzU3OCA5LjMyODI1IDE2LjE1ODYgOS4zMjgyNUMxNi41NDk3IDkuMzI4MjUgMTYuODIzNSA5LjY4NzA1IDE2LjgyMzUgMTAuMTk5NkMxNi44MjM1IDEwLjcxMjIgMTYuNTQ5NyAxMS4wODEzIDE2LjE1ODYgMTEuMDgxM0MxNS43NTc4IDExLjA4MTMgMTUuNDg0IDEwLjcxMjIgMTUuNDg0IDEwLjE5OTZaIiBmaWxsPSIjRkVGREY4Ii8+PC9nPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDBfNDRfNjEwIj48cmVjdCB3aWR0aD0iMTIuNzYiIGhlaWdodD0iMTEiIGZpbGw9IndoaXRlIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1LjcwNjQyIDYuNTQ5OTMpIi8+PC9jbGlwUGF0aD48L2RlZnM+PC9zdmc+", SOLFLARE_ICON = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cmVjdCB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHJ4PSIxMiIgZmlsbD0iI0ZGRUY0NiIvPjxwYXRoIGQ9Ik0xMi4xMjg1IDEyLjUyNjZMMTIuOTU1NiAxMS43Mjc2TDE0LjQ5NzYgMTIuMjMyM0MxNS41MDcgMTIuNTY4NyAxNi4wMTE3IDEzLjE4NTUgMTYuMDExNyAxNC4wNTQ3QzE2LjAxMTcgMTQuNzEzNiAxNS43NTkzIDE1LjE0ODIgMTUuMjU0NyAxNS43MDg5TDE1LjEwMDUgMTUuODc3MUwxNS4xNTY1IDE1LjQ4NDZDMTUuMzgwOCAxNC4wNTQ3IDE0Ljk2MDMgMTMuNDM3OSAxMy41NzI0IDEyLjk4OTJMMTIuMTI4NSAxMi41MjY2Wk0xMC4wNTM3IDcuNjM0MTRMMTQuMjU5MyA5LjAzNkwxMy4zNDgxIDkuOTA1MTdMMTEuMTYxMiA5LjE3NjE5QzEwLjQwNDIgOC45MjM4NSAxMC4xNTE4IDguNTE3MzEgMTAuMDUzNyA3LjY2MjE3VjcuNjM0MTRaTTkuODAxMzUgMTQuNzU1NkwxMC43NTQ2IDEzLjg0NDRMMTIuNTQ5MSAxNC40MzMyQzEzLjQ4ODMgMTQuNzQxNiAxMy44MTA3IDE1LjE0ODIgMTMuNzEyNiAxNi4xNzE1TDkuODAxMzUgMTQuNzU1NlpNOC41OTU3NyAxMC42OTAyQzguNTk1NzcgMTAuNDIzOSA4LjczNTk1IDEwLjE3MTUgOC45NzQyNyA5Ljk2MTIyQzkuMjI2NjEgMTAuMzI1NyA5LjY2MTE4IDEwLjY0ODEgMTAuMzQ4MSAxMC44NzI1TDExLjgzNDEgMTEuMzYzMUwxMS4wMDcgMTIuMTYyMkw5LjU0OTAzIDExLjY4NTVDOC44NzYxNCAxMS40NjEyIDguNTk1NzcgMTEuMTI0OCA4LjU5NTc3IDEwLjY5MDJaTTEyLjk5NzYgMTguMDVDMTYuMDgxNyAxNi4wMDMzIDE3LjczNTkgMTQuNjE1NCAxNy43MzU5IDEyLjkwNTJDMTcuNzM1OSAxMS43Njk2IDE3LjA2MyAxMS4xMzg4IDE1LjU3NzEgMTAuNjQ4MUwxNC40NTU2IDEwLjI2OTZMMTcuNTI1NyA3LjMyNTcyTDE2LjkwODggNi42NjY4NEwxNS45OTc2IDcuNDY1OUwxMS42OTM5IDYuMDUwMDJDMTAuMzYyMSA2LjQ4NDYgOC42Nzk4OCA3Ljc2MDMgOC42Nzk4OCA5LjAzNkM4LjY3OTg4IDkuMTc2MTggOC42OTM5IDkuMzE2MzcgOC43MzU5NSA5LjQ3MDU5QzcuNjI4NDcgMTAuMTAxNCA3LjE3OTg4IDEwLjY5MDIgNy4xNzk4OCAxMS40MTkxQzcuMTc5ODggMTIuMTA2MSA3LjU0NDM2IDEyLjc5MyA4LjcwNzkyIDEzLjE3MTVMOS42MzMxNCAxMy40Nzk5TDYuNDM2ODkgMTYuNTVMNy4wNTM3MSAxNy4yMDg5TDguMDQ5MDQgMTYuMjk3N0wxMi45OTc2IDE4LjA1WiIgZmlsbD0iIzAyMDUwQSIvPjwvc3ZnPg==", BACKPACK_ICON = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cmVjdCB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHJ4PSIxMiIgZmlsbD0iI0UzM0UzRiIvPjxwYXRoIGQ9Ik0xNS41MTg2IDEzLjkyNzJDMTUuOTgxMSAxMy45MjcyIDE2LjIxMjcgMTMuOTI3MSAxNi4zNTY0IDE0LjA3MDhDMTYuNTAwMiAxNC4yMTQ1IDE2LjUgMTQuNDQ2MiAxNi41IDE0LjkwODdWMTUuNTY0QzE2LjUgMTYuNDg5MyAxNi41MDAyIDE2Ljk1MjIgMTYuMjEyOSAxNy4yMzk3QzE1LjkyNTMgMTcuNTI3MyAxNS40NjE4IDE3LjUyNzggMTQuNTM2MSAxNy41Mjc4SDkuNDYzODdDOC41Mzg0MiAxNy41Mjc4IDguMDc1NjcgMTcuNTI3MSA3Ljc4ODA5IDE3LjIzOTdDNy41MDA1NCAxNi45NTIyIDcuNSAxNi40ODk0IDcuNSAxNS41NjRWMTQuOTA4N0M3LjUgMTQuNDQ2MiA3LjQ5OTgyIDE0LjIxNDUgNy42NDM1NSAxNC4wNzA4QzcuNzg3MyAxMy45MjcxIDguMDE4OTEgMTMuOTI3MiA4LjQ4MTQ1IDEzLjkyNzJIMTUuNTE4NlpNMTIgNi4zNTg4OUMxNi41NjUzIDYuMzU4ODkgMTYuNSA5LjQwMjM4IDE2LjUgMTAuODU4OVYxMi40OTU2QzE2LjQ5OTkgMTIuNzY2NyAxNi4yNzk5IDEyLjk4NjggMTYuMDA4OCAxMi45ODY4SDcuOTkxMjFDNy43MjAxMiAxMi45ODY4IDcuNTAwMDYgMTIuNzY2NyA3LjUgMTIuNDk1NkM3LjUgMTIuNDk1NiA3LjUgMTIuMzE1MyA3LjUgMTAuODU4OUM3LjQ5OTk5IDkuNDAyMzkgNy40MzQ3OCA2LjM1ODkzIDEyIDYuMzU4ODlaTTEyIDcuNTE5MDRDMTEuMjMxOSA3LjUxOTEgMTAuNjA5NCA4LjE0MTU1IDEwLjYwOTQgOC45MDk2N0MxMC42MDk0IDkuNjc3NzggMTEuMjMxOSAxMC4zMDAyIDEyIDEwLjMwMDNDMTIuNzY4MiAxMC4zMDAzIDEzLjM5MDYgOS42Nzc4MiAxMy4zOTA2IDguOTA5NjdDMTMuMzkwNiA4LjE0MTUxIDEyLjc2ODIgNy41MTkwNCAxMiA3LjUxOTA0Wk0xMS45OTkgNC40NzIxN0MxMi45ODQxIDQuNDcyMjIgMTMuODQ2MiA0LjgxNjczIDE0LjA3NDIgNS4zNzc0NEMxNC4xMDg1IDUuNDczODcgMTQuMTI1OCA1LjUyMjIyIDE0LjA5NTcgNS41NTgxMUMxNC4wNjUyIDUuNTk0MDIgMTQuMDA1OCA1LjU4MzQyIDEzLjg4NzcgNS41NjIwMUMxMy41ODIyIDUuNTA2NjUgMTMuMTQ5MyA1LjQ2ODc3IDEyLjc2ODYgNS40NTc1MkMxMi41MjU4IDUuNDQ0NDggMTIuMjY5NSA1LjQzNzk5IDEyIDUuNDM3OTlDMTEuNzMwNSA1LjQzNzk5IDExLjQ3NDIgNS40NDQ0OCAxMS4yMzE0IDUuNDU3NTJDMTAuODQ5IDUuNDY4NzcgMTAuNDE0OSA1LjUwNjU4IDEwLjEwODQgNS41NjAwNkM5Ljk5MzM1IDUuNTgwMTMgOS45MzU2NSA1LjU5MDQ3IDkuOTA1MjcgNS41NTUxOEM5Ljg3NDk3IDUuNTE5MzUgOS44OTEyOCA1LjQ3MTQ0IDkuOTI0OCA1LjM3NjQ2QzEwLjE1MSA0LjgxNzQ4IDExLjAxNDIgNC40NzIxNyAxMS45OTkgNC40NzIxN1oiIGZpbGw9IndoaXRlIi8+PC9zdmc+", WALLET_ICON_OVERRIDES = {
630
+ Phantom: PHANTOM_ICON,
631
+ Solflare: SOLFLARE_ICON,
632
+ Backpack: BACKPACK_ICON
633
+ }, ICON_PROXY_CACHE = /* @__PURE__ */ new WeakMap();
634
+ function getWalletIconOverride(walletName) {
635
+ return WALLET_ICON_OVERRIDES[walletName];
636
+ }
637
+ function createIconProxy(wallet, icon) {
638
+ let cached = ICON_PROXY_CACHE.get(wallet);
639
+ if (cached) return cached;
640
+ let proxy = new Proxy(wallet, {
641
+ get(target, prop) {
642
+ if (prop === "icon") return icon;
643
+ let value = Reflect.get(target, prop, target);
644
+ return typeof value == "function" ? value.bind(target) : value;
645
+ }
646
+ });
647
+ return ICON_PROXY_CACHE.set(wallet, proxy), proxy;
648
+ }
649
+ function applyWalletIconOverride(wallet) {
650
+ let override = getWalletIconOverride(wallet.name);
651
+ if (!override || wallet.icon === override) return wallet;
652
+ if (Object.isExtensible(wallet))
653
+ try {
654
+ return wallet.icon = override, wallet;
655
+ } catch {
656
+ }
657
+ return createIconProxy(wallet, override);
658
+ }
659
+
625
660
  // src/lib/wallet/detector.ts
626
- var logger3 = chunkDSUCH44G_js.createLogger("WalletDetector");
661
+ var logger3 = chunk64LV76OK_js.createLogger("WalletDetector");
627
662
  function hasFeature(wallet, featureName) {
628
663
  return wallet.features != null && wallet.features[featureName] !== void 0;
629
664
  }
@@ -645,7 +680,7 @@ function verifyWalletName(wallet, requestedName) {
645
680
  var WalletDetector = class extends BaseCollaborator {
646
681
  constructor(stateManager, eventEmitter, debug = false) {
647
682
  super({ stateManager, eventEmitter, debug }, "WalletDetector");
648
- chunkDSUCH44G_js.__publicField(this, "unsubscribers", []);
683
+ chunk64LV76OK_js.__publicField(this, "unsubscribers", []);
649
684
  }
650
685
  /**
651
686
  * Initialize wallet detection (synchronous)
@@ -752,9 +787,9 @@ var WalletDetector = class extends BaseCollaborator {
752
787
  * Convert a Wallet Standard wallet to WalletInfo with capability checks
753
788
  */
754
789
  mapToWalletInfo(wallet) {
755
- let hasConnect = hasFeature(wallet, "standard:connect"), hasDisconnect = hasFeature(wallet, "standard:disconnect"), isSolana = Array.isArray(wallet.chains) && wallet.chains.some((c) => typeof c == "string" && c.includes("solana"));
790
+ let walletWithIcon = applyWalletIconOverride(wallet), hasConnect = hasFeature(walletWithIcon, "standard:connect"), hasDisconnect = hasFeature(walletWithIcon, "standard:disconnect"), isSolana = Array.isArray(walletWithIcon.chains) && walletWithIcon.chains.some((c) => typeof c == "string" && c.includes("solana"));
756
791
  return {
757
- wallet,
792
+ wallet: walletWithIcon,
758
793
  installed: true,
759
794
  connectable: hasConnect && hasDisconnect && isSolana
760
795
  };
@@ -795,10 +830,13 @@ function getEventsFeature(wallet) {
795
830
  var ConnectionManager = class extends BaseCollaborator {
796
831
  constructor(stateManager, eventEmitter, walletStorage, debug = false) {
797
832
  super({ stateManager, eventEmitter, debug }, "ConnectionManager");
798
- chunkDSUCH44G_js.__publicField(this, "walletStorage");
799
- chunkDSUCH44G_js.__publicField(this, "walletChangeUnsub", null);
800
- chunkDSUCH44G_js.__publicField(this, "pollTimer", null);
801
- chunkDSUCH44G_js.__publicField(this, "pollAttempts", 0);
833
+ chunk64LV76OK_js.__publicField(this, "walletStorage");
834
+ chunk64LV76OK_js.__publicField(this, "walletChangeUnsub", null);
835
+ chunk64LV76OK_js.__publicField(this, "pollTimer", null);
836
+ chunk64LV76OK_js.__publicField(this, "pollAttempts", 0);
837
+ chunk64LV76OK_js.__publicField(this, "connectAttemptId", 0);
838
+ chunk64LV76OK_js.__publicField(this, "pendingWallet", null);
839
+ chunk64LV76OK_js.__publicField(this, "pendingWalletName", null);
802
840
  this.walletStorage = walletStorage;
803
841
  }
804
842
  /**
@@ -806,8 +844,8 @@ var ConnectionManager = class extends BaseCollaborator {
806
844
  */
807
845
  async connect(wallet, walletName) {
808
846
  if (typeof window > "u") return;
809
- let name = walletName || wallet.name;
810
- this.eventEmitter.emit({
847
+ let name = walletName || wallet.name, attemptId = ++this.connectAttemptId;
848
+ this.pendingWallet = wallet, this.pendingWalletName = name, this.eventEmitter.emit({
811
849
  type: "connecting",
812
850
  wallet: name,
813
851
  timestamp: (/* @__PURE__ */ new Date()).toISOString()
@@ -815,7 +853,10 @@ var ConnectionManager = class extends BaseCollaborator {
815
853
  try {
816
854
  let connect = getConnectFeature(wallet);
817
855
  if (!connect) throw new Error(`Wallet ${name} does not support standard connect`);
818
- let result = await connect({ silent: false }), walletAccounts = wallet.accounts, accountMap = /* @__PURE__ */ new Map();
856
+ let result = await connect({ silent: false });
857
+ if (attemptId !== this.connectAttemptId)
858
+ throw new Error("Connection cancelled");
859
+ let walletAccounts = wallet.accounts, accountMap = /* @__PURE__ */ new Map();
819
860
  for (let a of [...walletAccounts, ...result.accounts]) accountMap.set(a.address, a);
820
861
  let accounts = Array.from(accountMap.values()).map((a) => this.toAccountInfo(a)), state = this.getState(), previouslySelected = state.selectedAccount, previousAddresses = new Set(state.accounts.map((a) => a.address)), selected = accounts.find((a) => !previousAddresses.has(a.address))?.address ?? previouslySelected ?? accounts[0]?.address ?? null;
821
862
  this.stateManager.updateState(
@@ -842,6 +883,8 @@ var ConnectionManager = class extends BaseCollaborator {
842
883
  accountsCount: accounts.length
843
884
  }), this.walletStorage && (!("isAvailable" in this.walletStorage) || typeof this.walletStorage.isAvailable != "function" || this.walletStorage.isAvailable() ? this.walletStorage.set(name) : this.log("Storage not available (private browsing?), skipping wallet persistence")), this.subscribeToWalletEvents();
844
885
  } catch (e) {
886
+ if (attemptId !== this.connectAttemptId)
887
+ throw e;
845
888
  let errorMessage = e instanceof Error ? e.message : String(e);
846
889
  throw this.eventEmitter.emit({
847
890
  type: "connection:failed",
@@ -863,22 +906,21 @@ var ConnectionManager = class extends BaseCollaborator {
863
906
  },
864
907
  true
865
908
  ), e;
909
+ } finally {
910
+ this.pendingWallet === wallet && this.pendingWalletName === name && (this.pendingWallet = null, this.pendingWalletName = null);
866
911
  }
867
912
  }
868
913
  /**
869
914
  * Disconnect from wallet
870
915
  */
871
916
  async disconnect() {
872
- this.walletChangeUnsub && (this.walletChangeUnsub(), this.walletChangeUnsub = null), this.stopPollingWalletAccounts();
873
- let wallet = this.getState().selectedWallet;
874
- if (wallet) {
875
- let disconnect = getDisconnectFeature(wallet);
876
- disconnect && await disconnect();
877
- }
878
- this.stateManager.updateState(
917
+ this.connectAttemptId++, this.walletChangeUnsub && (this.walletChangeUnsub(), this.walletChangeUnsub = null), this.stopPollingWalletAccounts();
918
+ let wallet = this.getState().selectedWallet ?? this.pendingWallet;
919
+ if (this.pendingWallet = null, this.pendingWalletName = null, this.stateManager.updateState(
879
920
  {
880
921
  selectedWallet: null,
881
922
  connected: false,
923
+ connecting: false,
882
924
  accounts: [],
883
925
  selectedAccount: null
884
926
  },
@@ -886,7 +928,14 @@ var ConnectionManager = class extends BaseCollaborator {
886
928
  ), this.eventEmitter.emit({
887
929
  type: "wallet:disconnected",
888
930
  timestamp: (/* @__PURE__ */ new Date()).toISOString()
889
- }), this.walletStorage && "clear" in this.walletStorage && typeof this.walletStorage.clear == "function" ? this.walletStorage.clear() : this.walletStorage?.set(void 0);
931
+ }), this.walletStorage && "clear" in this.walletStorage && typeof this.walletStorage.clear == "function" ? this.walletStorage.clear() : this.walletStorage?.set(void 0), wallet) {
932
+ let disconnect = getDisconnectFeature(wallet);
933
+ if (disconnect)
934
+ try {
935
+ await disconnect();
936
+ } catch {
937
+ }
938
+ }
890
939
  }
891
940
  /**
892
941
  * Select a different account
@@ -993,13 +1042,13 @@ var ConnectionManager = class extends BaseCollaborator {
993
1042
  };
994
1043
 
995
1044
  // src/lib/wallet/auto-connector.ts
996
- var logger4 = chunkDSUCH44G_js.createLogger("AutoConnector"), MIN_ADDRESS_LENGTH = 30, AutoConnector = class {
1045
+ var logger4 = chunk64LV76OK_js.createLogger("AutoConnector"), MIN_ADDRESS_LENGTH = 30, AutoConnector = class {
997
1046
  constructor(walletDetector, connectionManager, stateManager, walletStorage, debug = false) {
998
- chunkDSUCH44G_js.__publicField(this, "walletDetector");
999
- chunkDSUCH44G_js.__publicField(this, "connectionManager");
1000
- chunkDSUCH44G_js.__publicField(this, "stateManager");
1001
- chunkDSUCH44G_js.__publicField(this, "walletStorage");
1002
- chunkDSUCH44G_js.__publicField(this, "debug");
1047
+ chunk64LV76OK_js.__publicField(this, "walletDetector");
1048
+ chunk64LV76OK_js.__publicField(this, "connectionManager");
1049
+ chunk64LV76OK_js.__publicField(this, "stateManager");
1050
+ chunk64LV76OK_js.__publicField(this, "walletStorage");
1051
+ chunk64LV76OK_js.__publicField(this, "debug");
1003
1052
  this.walletDetector = walletDetector, this.connectionManager = connectionManager, this.stateManager = stateManager, this.walletStorage = walletStorage, this.debug = debug;
1004
1053
  }
1005
1054
  async attemptAutoConnect() {
@@ -1094,12 +1143,12 @@ var logger4 = chunkDSUCH44G_js.createLogger("AutoConnector"), MIN_ADDRESS_LENGTH
1094
1143
  ],
1095
1144
  features,
1096
1145
  accounts: []
1097
- };
1146
+ }, walletWithIcon = applyWalletIconOverride(wallet);
1098
1147
  this.stateManager.updateState(
1099
1148
  {
1100
1149
  wallets: [
1101
1150
  {
1102
- wallet,
1151
+ wallet: walletWithIcon,
1103
1152
  installed: true,
1104
1153
  connectable: true
1105
1154
  }
@@ -1107,7 +1156,7 @@ var logger4 = chunkDSUCH44G_js.createLogger("AutoConnector"), MIN_ADDRESS_LENGTH
1107
1156
  },
1108
1157
  true
1109
1158
  ), await ready;
1110
- let walletsApi = getWalletsRegistry(), registryWallet = walletsApi.get().find((w) => w.name === storedWalletName), walletToUse = registryWallet || wallet;
1159
+ let walletsApi = getWalletsRegistry(), registryWallet = walletsApi.get().find((w) => w.name === storedWalletName), walletToUse = applyWalletIconOverride(registryWallet || walletWithIcon);
1111
1160
  return this.debug && logger4.info("Attempting to connect via instant auto-connect", {
1112
1161
  walletName: storedWalletName,
1113
1162
  usingRegistry: !!registryWallet
@@ -1153,7 +1202,7 @@ var logger4 = chunkDSUCH44G_js.createLogger("AutoConnector"), MIN_ADDRESS_LENGTH
1153
1202
  var ClusterManager = class extends BaseCollaborator {
1154
1203
  constructor(stateManager, eventEmitter, clusterStorage, config, debug = false) {
1155
1204
  super({ stateManager, eventEmitter, debug }, "ClusterManager");
1156
- chunkDSUCH44G_js.__publicField(this, "clusterStorage");
1205
+ chunk64LV76OK_js.__publicField(this, "clusterStorage");
1157
1206
  if (this.clusterStorage = clusterStorage, config) {
1158
1207
  let clusters = config.clusters ?? [], initialClusterId = this.clusterStorage?.get() ?? config.initialCluster ?? "solana:mainnet", initialCluster = clusters.find((c) => c.id === initialClusterId) ?? clusters[0] ?? null;
1159
1208
  this.stateManager.updateState({
@@ -1168,7 +1217,7 @@ var ClusterManager = class extends BaseCollaborator {
1168
1217
  async setCluster(clusterId) {
1169
1218
  let state = this.getState(), previousClusterId = state.cluster?.id || null, cluster = state.clusters.find((c) => c.id === clusterId);
1170
1219
  if (!cluster)
1171
- throw chunkDSUCH44G_js.Errors.clusterNotFound(
1220
+ throw chunk64LV76OK_js.Errors.clusterNotFound(
1172
1221
  clusterId,
1173
1222
  state.clusters.map((c) => c.id)
1174
1223
  );
@@ -1197,9 +1246,9 @@ var ClusterManager = class extends BaseCollaborator {
1197
1246
  var TransactionTracker = class extends BaseCollaborator {
1198
1247
  constructor(stateManager, eventEmitter, maxTransactions = 20, debug = false) {
1199
1248
  super({ stateManager, eventEmitter, debug }, "TransactionTracker");
1200
- chunkDSUCH44G_js.__publicField(this, "transactions", []);
1201
- chunkDSUCH44G_js.__publicField(this, "totalTransactions", 0);
1202
- chunkDSUCH44G_js.__publicField(this, "maxTransactions");
1249
+ chunk64LV76OK_js.__publicField(this, "transactions", []);
1250
+ chunk64LV76OK_js.__publicField(this, "totalTransactions", 0);
1251
+ chunk64LV76OK_js.__publicField(this, "maxTransactions");
1203
1252
  this.maxTransactions = maxTransactions;
1204
1253
  }
1205
1254
  /**
@@ -1253,10 +1302,10 @@ var TransactionTracker = class extends BaseCollaborator {
1253
1302
  // src/lib/health/health-monitor.ts
1254
1303
  var HealthMonitor = class {
1255
1304
  constructor(stateManager, walletStorage, clusterStorage, isInitialized) {
1256
- chunkDSUCH44G_js.__publicField(this, "stateManager");
1257
- chunkDSUCH44G_js.__publicField(this, "walletStorage");
1258
- chunkDSUCH44G_js.__publicField(this, "clusterStorage");
1259
- chunkDSUCH44G_js.__publicField(this, "isInitialized");
1305
+ chunk64LV76OK_js.__publicField(this, "stateManager");
1306
+ chunk64LV76OK_js.__publicField(this, "walletStorage");
1307
+ chunk64LV76OK_js.__publicField(this, "clusterStorage");
1308
+ chunk64LV76OK_js.__publicField(this, "isInitialized");
1260
1309
  this.stateManager = stateManager, this.walletStorage = walletStorage, this.clusterStorage = clusterStorage, this.isInitialized = isInitialized ?? (() => true);
1261
1310
  }
1262
1311
  /**
@@ -1308,19 +1357,20 @@ var HealthMonitor = class {
1308
1357
  };
1309
1358
 
1310
1359
  // src/lib/core/connector-client.ts
1311
- var logger5 = chunkDSUCH44G_js.createLogger("ConnectorClient"), ConnectorClient = class {
1360
+ var logger5 = chunk64LV76OK_js.createLogger("ConnectorClient"), ConnectorClient = class {
1312
1361
  constructor(config = {}) {
1313
- chunkDSUCH44G_js.__publicField(this, "stateManager");
1314
- chunkDSUCH44G_js.__publicField(this, "eventEmitter");
1315
- chunkDSUCH44G_js.__publicField(this, "walletDetector");
1316
- chunkDSUCH44G_js.__publicField(this, "connectionManager");
1317
- chunkDSUCH44G_js.__publicField(this, "autoConnector");
1318
- chunkDSUCH44G_js.__publicField(this, "clusterManager");
1319
- chunkDSUCH44G_js.__publicField(this, "transactionTracker");
1320
- chunkDSUCH44G_js.__publicField(this, "debugMetrics");
1321
- chunkDSUCH44G_js.__publicField(this, "healthMonitor");
1322
- chunkDSUCH44G_js.__publicField(this, "initialized", false);
1323
- chunkDSUCH44G_js.__publicField(this, "config");
1362
+ chunk64LV76OK_js.__publicField(this, "stateManager");
1363
+ chunk64LV76OK_js.__publicField(this, "eventEmitter");
1364
+ chunk64LV76OK_js.__publicField(this, "walletDetector");
1365
+ chunk64LV76OK_js.__publicField(this, "connectionManager");
1366
+ chunk64LV76OK_js.__publicField(this, "autoConnector");
1367
+ chunk64LV76OK_js.__publicField(this, "clusterManager");
1368
+ chunk64LV76OK_js.__publicField(this, "transactionTracker");
1369
+ chunk64LV76OK_js.__publicField(this, "debugMetrics");
1370
+ chunk64LV76OK_js.__publicField(this, "healthMonitor");
1371
+ chunk64LV76OK_js.__publicField(this, "initialized", false);
1372
+ chunk64LV76OK_js.__publicField(this, "config");
1373
+ chunk64LV76OK_js.__publicField(this, "walletConnectRegistration", null);
1324
1374
  this.config = config;
1325
1375
  let initialState = {
1326
1376
  wallets: [],
@@ -1363,8 +1413,10 @@ var logger5 = chunkDSUCH44G_js.createLogger("ConnectorClient"), ConnectorClient
1363
1413
  }
1364
1414
  initialize() {
1365
1415
  if (typeof window > "u" || this.initialized) return;
1366
- let { error } = chunkDSUCH44G_js.tryCatchSync(() => {
1367
- this.walletDetector.initialize(), this.config.autoConnect && setTimeout(() => {
1416
+ let { error } = chunk4KD6HQQG_js.tryCatchSync(() => {
1417
+ this.walletDetector.initialize(), this.config.walletConnect?.enabled && this.initializeWalletConnect().catch((err) => {
1418
+ this.config.debug && logger5.error("WalletConnect initialization failed", { error: err });
1419
+ }), this.config.autoConnect && setTimeout(() => {
1368
1420
  this.autoConnector.attemptAutoConnect().catch((err) => {
1369
1421
  this.config.debug && logger5.error("Auto-connect error", { error: err });
1370
1422
  });
@@ -1372,6 +1424,19 @@ var logger5 = chunkDSUCH44G_js.createLogger("ConnectorClient"), ConnectorClient
1372
1424
  });
1373
1425
  error && this.config.debug && logger5.error("Connector initialization failed", { error });
1374
1426
  }
1427
+ /**
1428
+ * Initialize WalletConnect integration
1429
+ * Dynamically imports and registers the WalletConnect wallet
1430
+ */
1431
+ async initializeWalletConnect() {
1432
+ if (this.config.walletConnect?.enabled)
1433
+ try {
1434
+ let { registerWalletConnectWallet } = await import('./walletconnect-D4JN6H2O.js');
1435
+ this.walletConnectRegistration = await registerWalletConnectWallet(this.config.walletConnect), this.config.debug && logger5.info("WalletConnect wallet registered successfully");
1436
+ } catch (error) {
1437
+ this.config.debug && logger5.error("Failed to register WalletConnect wallet", { error });
1438
+ }
1439
+ }
1375
1440
  async select(walletName) {
1376
1441
  let wallet = this.stateManager.getSnapshot().wallets.find((w) => w.wallet.name === walletName)?.wallet;
1377
1442
  if (!wallet) throw new Error(`Wallet ${walletName} not found`);
@@ -1395,7 +1460,7 @@ var logger5 = chunkDSUCH44G_js.createLogger("ConnectorClient"), ConnectorClient
1395
1460
  getRpcUrl() {
1396
1461
  let cluster = this.clusterManager.getCluster();
1397
1462
  if (!cluster) return null;
1398
- let { data, error } = chunkDSUCH44G_js.tryCatchSync(() => getClusterRpcUrl(cluster));
1463
+ let { data, error } = chunk4KD6HQQG_js.tryCatchSync(() => getClusterRpcUrl(cluster));
1399
1464
  return error ? (this.config.debug && logger5.error("Failed to get RPC URL", { error }), null) : data;
1400
1465
  }
1401
1466
  subscribe(listener) {
@@ -1410,7 +1475,7 @@ var logger5 = chunkDSUCH44G_js.createLogger("ConnectorClient"), ConnectorClient
1410
1475
  for (let key of storageKeys) {
1411
1476
  let storage = this.config.storage?.[key];
1412
1477
  if (storage && "reset" in storage && typeof storage.reset == "function") {
1413
- let resetFn = storage.reset, { error } = chunkDSUCH44G_js.tryCatchSync(() => resetFn());
1478
+ let resetFn = storage.reset, { error } = chunk4KD6HQQG_js.tryCatchSync(() => resetFn());
1414
1479
  error ? this.config.debug && logger5.error("Failed to reset storage", { key, error }) : this.config.debug && logger5.debug("Reset storage", { key });
1415
1480
  }
1416
1481
  }
@@ -1464,11 +1529,17 @@ var logger5 = chunkDSUCH44G_js.createLogger("ConnectorClient"), ConnectorClient
1464
1529
  this.debugMetrics.resetMetrics();
1465
1530
  }
1466
1531
  destroy() {
1532
+ if (this.walletConnectRegistration)
1533
+ try {
1534
+ this.walletConnectRegistration.unregister(), this.walletConnectRegistration = null;
1535
+ } catch (error) {
1536
+ this.config.debug && logger5.warn("Error unregistering WalletConnect wallet", { error });
1537
+ }
1467
1538
  this.connectionManager.disconnect().catch(() => {
1468
1539
  }), this.walletDetector.destroy(), this.eventEmitter.offAll(), this.stateManager.clear();
1469
1540
  }
1470
1541
  };
1471
- var logger6 = chunkDSUCH44G_js.createLogger("ErrorBoundary"), WalletErrorType = /* @__PURE__ */ ((WalletErrorType2) => (WalletErrorType2.CONNECTION_FAILED = "CONNECTION_FAILED", WalletErrorType2.TRANSACTION_FAILED = "TRANSACTION_FAILED", WalletErrorType2.NETWORK_ERROR = "NETWORK_ERROR", WalletErrorType2.WALLET_NOT_FOUND = "WALLET_NOT_FOUND", WalletErrorType2.USER_REJECTED = "USER_REJECTED", WalletErrorType2.INSUFFICIENT_FUNDS = "INSUFFICIENT_FUNDS", WalletErrorType2.UNKNOWN_ERROR = "UNKNOWN_ERROR", WalletErrorType2))(WalletErrorType || {}), ErrorLogger = class {
1542
+ var logger6 = chunk64LV76OK_js.createLogger("ErrorBoundary"), WalletErrorType = /* @__PURE__ */ ((WalletErrorType2) => (WalletErrorType2.CONNECTION_FAILED = "CONNECTION_FAILED", WalletErrorType2.TRANSACTION_FAILED = "TRANSACTION_FAILED", WalletErrorType2.NETWORK_ERROR = "NETWORK_ERROR", WalletErrorType2.WALLET_NOT_FOUND = "WALLET_NOT_FOUND", WalletErrorType2.USER_REJECTED = "USER_REJECTED", WalletErrorType2.INSUFFICIENT_FUNDS = "INSUFFICIENT_FUNDS", WalletErrorType2.UNKNOWN_ERROR = "UNKNOWN_ERROR", WalletErrorType2))(WalletErrorType || {}), ErrorLogger = class {
1472
1543
  static log(error, errorInfo, context) {
1473
1544
  if (process.env.NODE_ENV === "development" && logger6.error(error.message, {
1474
1545
  error,
@@ -1487,7 +1558,7 @@ var logger6 = chunkDSUCH44G_js.createLogger("ErrorBoundary"), WalletErrorType =
1487
1558
  }
1488
1559
  };
1489
1560
  function classifyError(error) {
1490
- if (chunkDSUCH44G_js.isConnectorError(error))
1561
+ if (chunk64LV76OK_js.isConnectorError(error))
1491
1562
  return {
1492
1563
  ...error,
1493
1564
  type: {
@@ -1516,8 +1587,8 @@ function classifyError(error) {
1516
1587
  var ConnectorErrorBoundary = class extends react.Component {
1517
1588
  constructor(props) {
1518
1589
  super(props);
1519
- chunkDSUCH44G_js.__publicField(this, "retryTimeouts", /* @__PURE__ */ new Set());
1520
- chunkDSUCH44G_js.__publicField(this, "retry", () => {
1590
+ chunk64LV76OK_js.__publicField(this, "retryTimeouts", /* @__PURE__ */ new Set());
1591
+ chunk64LV76OK_js.__publicField(this, "retry", () => {
1521
1592
  let { maxRetries = 3 } = this.props;
1522
1593
  this.state.retryCount >= maxRetries || this.setState((prevState) => ({
1523
1594
  hasError: false,
@@ -1739,7 +1810,7 @@ function withErrorBoundary(Component2, errorBoundaryProps) {
1739
1810
  let WrappedComponent = (props) => /* @__PURE__ */ jsxRuntime.jsx(ConnectorErrorBoundary, { ...errorBoundaryProps, children: /* @__PURE__ */ jsxRuntime.jsx(Component2, { ...props }) });
1740
1811
  return WrappedComponent.displayName = `withErrorBoundary(${Component2.displayName || Component2.name})`, WrappedComponent;
1741
1812
  }
1742
- var logger7 = chunkDSUCH44G_js.createLogger("Polyfills"), installed = false;
1813
+ var logger7 = chunk64LV76OK_js.createLogger("Polyfills"), installed = false;
1743
1814
  function installPolyfills() {
1744
1815
  if (!(installed || typeof window > "u"))
1745
1816
  try {
@@ -1766,6 +1837,355 @@ function getPolyfillStatus() {
1766
1837
  environment: typeof window < "u" ? "browser" : "server"
1767
1838
  };
1768
1839
  }
1840
+ var logger8 = chunk64LV76OK_js.createLogger("EnhancedStorage"), STORAGE_VERSION = "v1", EnhancedStorage = class extends core.Storage {
1841
+ constructor(key, initial, options) {
1842
+ super(key, initial);
1843
+ this.options = options;
1844
+ chunk64LV76OK_js.__publicField(this, "errorHandlers", /* @__PURE__ */ new Set());
1845
+ chunk64LV76OK_js.__publicField(this, "validators", []);
1846
+ chunk64LV76OK_js.__publicField(this, "memoryFallback");
1847
+ this.memoryFallback = initial, options?.onError && this.errorHandlers.add(options.onError), options?.validator && this.validators.push(options.validator);
1848
+ }
1849
+ set(value) {
1850
+ try {
1851
+ return this.validate(value) ? (super.set(value), this.memoryFallback = value, true) : (logger8.warn("Validation failed", { key: this.key }), false);
1852
+ } catch (error) {
1853
+ return this.handleError(error), this.options?.useMemoryFallback ? (this.memoryFallback = value, true) : false;
1854
+ }
1855
+ }
1856
+ get() {
1857
+ try {
1858
+ return super.get();
1859
+ } catch (error) {
1860
+ return this.handleError(error), this.options?.useMemoryFallback ? this.memoryFallback : this.initial;
1861
+ }
1862
+ }
1863
+ validate(value) {
1864
+ return this.validators.every((validator) => validator(value));
1865
+ }
1866
+ addValidator(validator) {
1867
+ return this.validators.push(validator), this;
1868
+ }
1869
+ onError(handler) {
1870
+ return this.errorHandlers.add(handler), this;
1871
+ }
1872
+ transform(transformer) {
1873
+ return transformer(this.get());
1874
+ }
1875
+ reset() {
1876
+ this.set(this.initial);
1877
+ }
1878
+ clear() {
1879
+ try {
1880
+ typeof window < "u" && window.localStorage && window.localStorage.removeItem(this.key), this.reset();
1881
+ } catch (error) {
1882
+ this.handleError(error);
1883
+ }
1884
+ }
1885
+ isAvailable() {
1886
+ try {
1887
+ if (typeof window > "u") return false;
1888
+ let testKey = `__storage_test_${this.key}__`;
1889
+ return window.localStorage.setItem(testKey, "test"), window.localStorage.removeItem(testKey), true;
1890
+ } catch {
1891
+ return false;
1892
+ }
1893
+ }
1894
+ static migrate(oldKey, newStorage) {
1895
+ try {
1896
+ if (typeof window > "u") return false;
1897
+ let oldValue = window.localStorage.getItem(oldKey);
1898
+ if (oldValue) {
1899
+ let parsed = JSON.parse(oldValue);
1900
+ return newStorage.set(parsed), window.localStorage.removeItem(oldKey), true;
1901
+ }
1902
+ return false;
1903
+ } catch {
1904
+ return false;
1905
+ }
1906
+ }
1907
+ handleError(error) {
1908
+ logger8.error("Storage error", { key: this.key, error }), this.errorHandlers.forEach((handler) => {
1909
+ try {
1910
+ handler(error);
1911
+ } catch (err) {
1912
+ logger8.error("Error in error handler", { error: err });
1913
+ }
1914
+ });
1915
+ }
1916
+ };
1917
+ function createEnhancedStorageAccount(options) {
1918
+ let key = options?.key ?? `connector-kit:${STORAGE_VERSION}:account`;
1919
+ return new EnhancedStorage(key, options?.initial, {
1920
+ validator: options?.validator,
1921
+ onError: options?.onError,
1922
+ useMemoryFallback: true
1923
+ // Always fallback for SSR
1924
+ });
1925
+ }
1926
+ function createEnhancedStorageCluster(options) {
1927
+ let key = options?.key ?? `connector-kit:${STORAGE_VERSION}:cluster`, storage = new EnhancedStorage(key, options?.initial ?? "solana:mainnet", {
1928
+ onError: options?.onError,
1929
+ useMemoryFallback: true
1930
+ });
1931
+ return options?.validClusters && storage.addValidator((clusterId) => options.validClusters.includes(clusterId)), storage;
1932
+ }
1933
+ function createEnhancedStorageWallet(options) {
1934
+ let key = options?.key ?? `connector-kit:${STORAGE_VERSION}:wallet`;
1935
+ return new EnhancedStorage(key, options?.initial, {
1936
+ onError: options?.onError,
1937
+ useMemoryFallback: true
1938
+ });
1939
+ }
1940
+ var EnhancedStorageAdapter = class {
1941
+ constructor(storage) {
1942
+ this.storage = storage;
1943
+ }
1944
+ get() {
1945
+ return this.storage.get();
1946
+ }
1947
+ set(value) {
1948
+ this.storage.set(value);
1949
+ }
1950
+ subscribe(callback) {
1951
+ return this.storage.value.subscribe(callback);
1952
+ }
1953
+ validate(value) {
1954
+ return this.storage.validate(value);
1955
+ }
1956
+ reset() {
1957
+ this.storage.reset();
1958
+ }
1959
+ clear() {
1960
+ this.storage.clear();
1961
+ }
1962
+ isAvailable() {
1963
+ return this.storage.isAvailable();
1964
+ }
1965
+ transform(transformer) {
1966
+ return this.storage.transform(transformer);
1967
+ }
1968
+ addValidator(validator) {
1969
+ return this.storage.addValidator(validator), this;
1970
+ }
1971
+ onError(handler) {
1972
+ return this.storage.onError(handler), this;
1973
+ }
1974
+ };
1975
+ var logger9 = chunk64LV76OK_js.createLogger("DefaultConfig");
1976
+ function getDefaultConfig(options) {
1977
+ let {
1978
+ appName,
1979
+ appUrl,
1980
+ autoConnect = true,
1981
+ debug,
1982
+ network = "mainnet-beta",
1983
+ enableMobile = true,
1984
+ storage,
1985
+ clusters,
1986
+ customClusters = [],
1987
+ persistClusterSelection = true,
1988
+ clusterStorageKey,
1989
+ enableErrorBoundary = true,
1990
+ maxRetries = DEFAULT_MAX_RETRIES,
1991
+ onError,
1992
+ imageProxy,
1993
+ programLabels,
1994
+ coingecko,
1995
+ walletConnect
1996
+ } = options, defaultClusters = clusters ?? [
1997
+ core.createSolanaMainnet(),
1998
+ core.createSolanaDevnet(),
1999
+ core.createSolanaTestnet(),
2000
+ ...network === "localnet" ? [core.createSolanaLocalnet()] : [],
2001
+ ...customClusters || []
2002
+ ], validClusterIds = defaultClusters.map((c) => c.id), accountStorage = createEnhancedStorageAccount({
2003
+ validator: (address) => address ? addresses.isAddress(address) : true,
2004
+ onError: (error) => {
2005
+ debug && logger9.error("Account Storage error", { error }), onError && onError(error, {
2006
+ componentStack: "account-storage"
2007
+ });
2008
+ }
2009
+ }), clusterStorage = createEnhancedStorageCluster({
2010
+ key: clusterStorageKey,
2011
+ initial: getInitialCluster(network),
2012
+ validClusters: persistClusterSelection ? validClusterIds : void 0,
2013
+ onError: (error) => {
2014
+ debug && logger9.error("Cluster Storage error", { error }), onError && onError(error, {
2015
+ componentStack: "cluster-storage"
2016
+ });
2017
+ }
2018
+ }), walletStorage = createEnhancedStorageWallet({
2019
+ onError: (error) => {
2020
+ debug && logger9.error("Wallet Storage error", { error }), onError && onError(error, {
2021
+ componentStack: "wallet-storage"
2022
+ });
2023
+ }
2024
+ });
2025
+ if (typeof window < "u") {
2026
+ let oldAccountKey = "connector-kit:account", oldWalletKey = "connector-kit:wallet", oldClusterKey = clusterStorageKey || "connector-kit:cluster";
2027
+ EnhancedStorage.migrate(oldAccountKey, accountStorage), EnhancedStorage.migrate(oldWalletKey, walletStorage), EnhancedStorage.migrate(oldClusterKey, clusterStorage);
2028
+ }
2029
+ let defaultStorage = storage ?? {
2030
+ account: new EnhancedStorageAdapter(accountStorage),
2031
+ cluster: new EnhancedStorageAdapter(clusterStorage),
2032
+ wallet: new EnhancedStorageAdapter(walletStorage)
2033
+ }, walletConnectConfig = buildWalletConnectConfig(walletConnect, appName, appUrl, clusterStorageKey ?? "connector-kit:v1:cluster");
2034
+ return {
2035
+ autoConnect,
2036
+ debug: debug ?? process.env.NODE_ENV === "development",
2037
+ storage: defaultStorage,
2038
+ appName,
2039
+ appUrl,
2040
+ enableMobile,
2041
+ network,
2042
+ cluster: {
2043
+ clusters: defaultClusters,
2044
+ persistSelection: persistClusterSelection,
2045
+ initialCluster: getInitialCluster(network)
2046
+ },
2047
+ errorBoundary: {
2048
+ enabled: enableErrorBoundary,
2049
+ maxRetries,
2050
+ onError
2051
+ },
2052
+ imageProxy,
2053
+ programLabels,
2054
+ coingecko,
2055
+ walletConnect: walletConnectConfig
2056
+ };
2057
+ }
2058
+ function buildWalletConnectConfig(walletConnect, appName, appUrl, clusterStorageKey) {
2059
+ if (!walletConnect) return;
2060
+ let configProjectId = typeof walletConnect == "object" ? walletConnect.projectId : void 0, envProjectId = typeof process < "u" ? process.env.NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID : void 0, projectId = configProjectId || envProjectId;
2061
+ if (!projectId) {
2062
+ (typeof walletConnect == "object" || walletConnect === true) && logger9.warn("WalletConnect enabled but no project ID found. Set NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID or provide projectId in config.");
2063
+ return;
2064
+ }
2065
+ let origin = appUrl || (typeof window < "u" ? window.location.origin : "http://localhost:3000"), customMetadata = typeof walletConnect == "object" ? walletConnect.metadata : void 0, customDefaultChain = typeof walletConnect == "object" ? walletConnect.defaultChain : void 0, customRelayUrl = typeof walletConnect == "object" ? walletConnect.relayUrl : void 0;
2066
+ return {
2067
+ enabled: true,
2068
+ projectId,
2069
+ metadata: {
2070
+ name: customMetadata?.name ?? appName,
2071
+ description: customMetadata?.description ?? `${appName} - Powered by ConnectorKit`,
2072
+ url: customMetadata?.url ?? origin,
2073
+ icons: customMetadata?.icons ?? [`${origin}/icon.svg`]
2074
+ },
2075
+ defaultChain: customDefaultChain ?? "solana:mainnet",
2076
+ relayUrl: customRelayUrl,
2077
+ // Auto-sync with cluster storage
2078
+ getCurrentChain: () => {
2079
+ if (typeof window > "u") return "solana:mainnet";
2080
+ let storageKey = clusterStorageKey || "connector-kit:v1:cluster";
2081
+ try {
2082
+ let stored = localStorage.getItem(storageKey);
2083
+ if (stored) {
2084
+ let id = JSON.parse(stored);
2085
+ if (id === "solana:mainnet" || id === "solana:devnet" || id === "solana:testnet")
2086
+ return id;
2087
+ }
2088
+ } catch {
2089
+ }
2090
+ return customDefaultChain ?? "solana:mainnet";
2091
+ }
2092
+ // Note: onDisplayUri, onSessionEstablished, onSessionDisconnected are auto-wired by AppProvider
2093
+ };
2094
+ }
2095
+ function getInitialCluster(network = "mainnet-beta") {
2096
+ return toClusterId(network);
2097
+ }
2098
+ function getDefaultMobileConfig(options) {
2099
+ let baseUrl = options.appUrl || (typeof window < "u" ? window.location.origin : "https://localhost:3000");
2100
+ return {
2101
+ appIdentity: {
2102
+ name: options.appName,
2103
+ uri: baseUrl,
2104
+ icon: `${baseUrl}/favicon.ico`
2105
+ },
2106
+ cluster: options.network || "mainnet-beta"
2107
+ };
2108
+ }
2109
+ var solanaNetworkSchema = v4.z.enum(["mainnet", "mainnet-beta", "devnet", "testnet", "localnet"]), solanaClusterIdSchema = v4.z.string().regex(/^solana:(mainnet|devnet|testnet|localnet|[a-zA-Z0-9-]+)$/, {
2110
+ message: 'Cluster ID must be in format "solana:<network>" (e.g., "solana:mainnet")'
2111
+ }), urlSchema = v4.z.string().url("Invalid URL format"), optionalUrlSchema = urlSchema.optional(), coinGeckoConfigSchema = v4.z.strictObject({
2112
+ apiKey: v4.z.string().optional(),
2113
+ isPro: v4.z.boolean().optional(),
2114
+ maxRetries: v4.z.number().int().positive().max(10).optional(),
2115
+ baseDelay: v4.z.number().int().positive().max(3e4).optional(),
2116
+ maxTimeout: v4.z.number().int().positive().max(12e4).optional()
2117
+ }).optional(), walletConnectMetadataSchema = v4.z.object({
2118
+ name: v4.z.string().min(1, "WalletConnect app name is required"),
2119
+ description: v4.z.string(),
2120
+ url: urlSchema,
2121
+ icons: v4.z.array(v4.z.string())
2122
+ }), walletConnectObjectConfigSchema = v4.z.object({
2123
+ enabled: v4.z.boolean().optional(),
2124
+ projectId: v4.z.string().min(1, "WalletConnect projectId is required"),
2125
+ metadata: walletConnectMetadataSchema,
2126
+ defaultChain: v4.z.enum(["solana:mainnet", "solana:devnet", "solana:testnet"]).optional(),
2127
+ onDisplayUri: v4.z.custom((val) => typeof val == "function").optional(),
2128
+ onSessionEstablished: v4.z.custom((val) => typeof val == "function").optional(),
2129
+ onSessionDisconnected: v4.z.custom((val) => typeof val == "function").optional(),
2130
+ relayUrl: urlSchema.optional()
2131
+ }), walletConnectConfigSchema = v4.z.union([v4.z.literal(true), walletConnectObjectConfigSchema]).optional(), storageAdapterSchema = v4.z.looseObject({
2132
+ get: v4.z.custom((val) => typeof val == "function"),
2133
+ set: v4.z.custom((val) => typeof val == "function")
2134
+ }), storageConfigSchema = v4.z.object({
2135
+ account: storageAdapterSchema,
2136
+ cluster: storageAdapterSchema,
2137
+ wallet: storageAdapterSchema
2138
+ }).optional(), solanaClusterSchema = v4.z.object({
2139
+ id: solanaClusterIdSchema,
2140
+ label: v4.z.string().min(1, "Cluster label cannot be empty"),
2141
+ url: urlSchema,
2142
+ urlWs: urlSchema.optional()
2143
+ }), clusterConfigSchema = v4.z.object({
2144
+ clusters: v4.z.array(solanaClusterSchema).optional(),
2145
+ persistSelection: v4.z.boolean().optional(),
2146
+ initialCluster: solanaClusterIdSchema.optional()
2147
+ }).optional(), defaultConfigOptionsSchema = v4.z.object({
2148
+ // Required
2149
+ appName: v4.z.string().min(1, "Application name is required"),
2150
+ // Optional strings
2151
+ appUrl: optionalUrlSchema,
2152
+ imageProxy: v4.z.string().optional(),
2153
+ clusterStorageKey: v4.z.string().optional(),
2154
+ // Optional booleans
2155
+ autoConnect: v4.z.boolean().optional(),
2156
+ debug: v4.z.boolean().optional(),
2157
+ enableMobile: v4.z.boolean().optional(),
2158
+ persistClusterSelection: v4.z.boolean().optional(),
2159
+ enableErrorBoundary: v4.z.boolean().optional(),
2160
+ // Network
2161
+ network: solanaNetworkSchema.optional(),
2162
+ // Numbers
2163
+ maxRetries: v4.z.number().int().positive().max(10).optional(),
2164
+ // Complex types
2165
+ storage: storageConfigSchema,
2166
+ clusters: v4.z.array(solanaClusterSchema).optional(),
2167
+ customClusters: v4.z.array(solanaClusterSchema).optional(),
2168
+ programLabels: v4.z.record(v4.z.string(), v4.z.string()).optional(),
2169
+ coingecko: coinGeckoConfigSchema,
2170
+ walletConnect: walletConnectConfigSchema,
2171
+ // Functions (can't validate implementation, just existence)
2172
+ onError: v4.z.custom((val) => typeof val == "function").optional()
2173
+ }); v4.z.strictObject({
2174
+ autoConnect: v4.z.boolean().optional(),
2175
+ debug: v4.z.boolean().optional(),
2176
+ storage: storageConfigSchema,
2177
+ cluster: clusterConfigSchema,
2178
+ imageProxy: v4.z.string().optional(),
2179
+ programLabels: v4.z.record(v4.z.string(), v4.z.string()).optional(),
2180
+ coingecko: coinGeckoConfigSchema,
2181
+ walletConnect: walletConnectConfigSchema
2182
+ }).optional();
2183
+ function validateConfigOptions(options) {
2184
+ return defaultConfigOptionsSchema.safeParse(options);
2185
+ }
2186
+ function parseConfigOptions(options) {
2187
+ return defaultConfigOptionsSchema.parse(options);
2188
+ }
1769
2189
 
1770
2190
  // src/utils/formatting.ts
1771
2191
  function formatAddress(address, options = {}) {
@@ -1977,7 +2397,7 @@ async function copySignatureToClipboard(signature, options) {
1977
2397
  }
1978
2398
 
1979
2399
  // src/lib/transaction/transaction-validator.ts
1980
- var logger8 = chunkDSUCH44G_js.createLogger("TransactionValidator"), MAX_TRANSACTION_SIZE = 1232, MIN_TRANSACTION_SIZE = 64, TransactionValidator = class {
2400
+ var logger10 = chunk64LV76OK_js.createLogger("TransactionValidator"), MAX_TRANSACTION_SIZE = 1232, MIN_TRANSACTION_SIZE = 64, TransactionValidator = class {
1981
2401
  /**
1982
2402
  * Validate a transaction before signing
1983
2403
  *
@@ -2000,7 +2420,7 @@ var logger8 = chunkDSUCH44G_js.createLogger("TransactionValidator"), MAX_TRANSAC
2000
2420
  try {
2001
2421
  serialized = transaction.serialize();
2002
2422
  } catch (serializeError) {
2003
- logger8.debug("Transaction not yet serializable (may need signing)", {
2423
+ logger10.debug("Transaction not yet serializable (may need signing)", {
2004
2424
  error: serializeError instanceof Error ? serializeError.message : String(serializeError)
2005
2425
  });
2006
2426
  }
@@ -2010,10 +2430,10 @@ var logger8 = chunkDSUCH44G_js.createLogger("TransactionValidator"), MAX_TRANSAC
2010
2430
  return errors.push(
2011
2431
  "Transaction type not recognized - must be a Transaction object with serialize() or Uint8Array"
2012
2432
  ), { valid: false, errors, warnings };
2013
- serialized && (size = serialized.length, size > maxSize && (errors.push(`Transaction too large: ${size} bytes (max ${maxSize} bytes)`), logger8.warn("Transaction exceeds maximum size", { size, maxSize })), size < minSize && warnings.push(`Transaction is very small: ${size} bytes (min recommended ${minSize} bytes)`), size === 0 && errors.push("Transaction is empty (0 bytes)"), this.hasSuspiciousPattern(serialized) && warnings.push("Transaction contains unusual patterns - please review carefully"));
2433
+ serialized && (size = serialized.length, size > maxSize && (errors.push(`Transaction too large: ${size} bytes (max ${maxSize} bytes)`), logger10.warn("Transaction exceeds maximum size", { size, maxSize })), size < minSize && warnings.push(`Transaction is very small: ${size} bytes (min recommended ${minSize} bytes)`), size === 0 && errors.push("Transaction is empty (0 bytes)"), this.hasSuspiciousPattern(serialized) && warnings.push("Transaction contains unusual patterns - please review carefully"));
2014
2434
  } catch (error) {
2015
2435
  let errorMessage = error instanceof Error ? error.message : String(error);
2016
- errors.push(`Transaction validation failed: ${errorMessage}`), logger8.error("Validation error", { error: errorMessage });
2436
+ errors.push(`Transaction validation failed: ${errorMessage}`), logger10.error("Validation error", { error: errorMessage });
2017
2437
  }
2018
2438
  if (checkDuplicateSignatures && typeof transaction == "object" && "signatures" in transaction) {
2019
2439
  let signatures = transaction.signatures;
@@ -2026,7 +2446,7 @@ var logger8 = chunkDSUCH44G_js.createLogger("TransactionValidator"), MAX_TRANSAC
2026
2446
  }
2027
2447
  strict && warnings.length > 0 && (errors.push(...warnings.map((w) => `Strict mode: ${w}`)), warnings.length = 0);
2028
2448
  let valid = errors.length === 0;
2029
- return valid ? warnings.length > 0 ? logger8.debug("Transaction validation passed with warnings", { warnings, size }) : logger8.debug("Transaction validation passed", { size }) : logger8.warn("Transaction validation failed", { errors, size }), {
2449
+ return valid ? warnings.length > 0 ? logger10.debug("Transaction validation passed with warnings", { warnings, size }) : logger10.debug("Transaction validation passed", { size }) : logger10.warn("Transaction validation failed", { errors, size }), {
2030
2450
  valid,
2031
2451
  errors,
2032
2452
  warnings,
@@ -2066,7 +2486,7 @@ var logger8 = chunkDSUCH44G_js.createLogger("TransactionValidator"), MAX_TRANSAC
2066
2486
  let result = this.validate(transaction, options);
2067
2487
  if (!result.valid)
2068
2488
  throw new Error(`Transaction validation failed: ${result.errors.join(", ")}`);
2069
- result.warnings.length > 0 && logger8.warn("Transaction validation warnings", { warnings: result.warnings });
2489
+ result.warnings.length > 0 && logger10.warn("Transaction validation warnings", { warnings: result.warnings });
2070
2490
  }
2071
2491
  /**
2072
2492
  * Batch validate multiple transactions
@@ -2077,12 +2497,31 @@ var logger8 = chunkDSUCH44G_js.createLogger("TransactionValidator"), MAX_TRANSAC
2077
2497
  * @returns Array of validation results
2078
2498
  */
2079
2499
  static validateBatch(transactions, options) {
2080
- return transactions.map((tx, index) => (logger8.debug(`Validating transaction ${index + 1}/${transactions.length}`), this.validate(tx, options)));
2500
+ return transactions.map((tx, index) => (logger10.debug(`Validating transaction ${index + 1}/${transactions.length}`), this.validate(tx, options)));
2081
2501
  }
2082
2502
  };
2083
-
2084
- // src/lib/transaction/transaction-signer.ts
2085
- var logger9 = chunkDSUCH44G_js.createLogger("TransactionSigner");
2503
+ var logger11 = chunk64LV76OK_js.createLogger("TransactionSigner");
2504
+ function signatureBytesToBase58(bytes) {
2505
+ if (bytes.length !== 64)
2506
+ throw new Error(`Invalid signature length: expected 64 bytes, got ${bytes.length}`);
2507
+ return codecs.getBase58Decoder().decode(bytes);
2508
+ }
2509
+ function extractSignatureString(result) {
2510
+ if (typeof result == "string")
2511
+ return result;
2512
+ if (result instanceof Uint8Array)
2513
+ return signatureBytesToBase58(result);
2514
+ if (Array.isArray(result) && result.length > 0)
2515
+ return extractSignatureString(result[0]);
2516
+ if (result && typeof result == "object") {
2517
+ let record = result;
2518
+ if ("signature" in record)
2519
+ return extractSignatureString(record.signature);
2520
+ if (Array.isArray(record.signatures) && record.signatures.length > 0)
2521
+ return extractSignatureString(record.signatures[0]);
2522
+ }
2523
+ throw new Error("Unexpected wallet response format for signAndSendTransaction");
2524
+ }
2086
2525
  function createTransactionSigner(config) {
2087
2526
  let { wallet, account, cluster, eventEmitter } = config;
2088
2527
  if (!wallet || !account)
@@ -2096,14 +2535,14 @@ function createTransactionSigner(config) {
2096
2535
  address,
2097
2536
  async signTransaction(transaction) {
2098
2537
  if (!capabilities.canSign)
2099
- throw chunkDSUCH44G_js.Errors.featureNotSupported("transaction signing");
2538
+ throw chunk64LV76OK_js.Errors.featureNotSupported("transaction signing");
2100
2539
  let validation = TransactionValidator.validate(transaction);
2101
2540
  if (!validation.valid)
2102
- throw logger9.error("Transaction validation failed", { errors: validation.errors }), chunkDSUCH44G_js.Errors.invalidTransaction(validation.errors.join(", "));
2103
- validation.warnings.length > 0 && logger9.warn("Transaction validation warnings", { warnings: validation.warnings });
2541
+ throw logger11.error("Transaction validation failed", { errors: validation.errors }), chunk64LV76OK_js.Errors.invalidTransaction(validation.errors.join(", "));
2542
+ validation.warnings.length > 0 && logger11.warn("Transaction validation warnings", { warnings: validation.warnings });
2104
2543
  try {
2105
- let signFeature = features["solana:signTransaction"], { serialized, wasWeb3js } = chunkDSUCH44G_js.prepareTransactionForWallet(transaction);
2106
- logger9.debug("Signing transaction", {
2544
+ let signFeature = features["solana:signTransaction"], { serialized, wasWeb3js } = chunk4KD6HQQG_js.prepareTransactionForWallet(transaction);
2545
+ logger11.debug("Signing transaction", {
2107
2546
  wasWeb3js,
2108
2547
  serializedLength: serialized.length,
2109
2548
  serializedType: serialized.constructor.name,
@@ -2112,26 +2551,26 @@ function createTransactionSigner(config) {
2112
2551
  });
2113
2552
  let result, usedFormat = "";
2114
2553
  try {
2115
- logger9.debug("Trying array format: transactions: [Uint8Array]"), result = await signFeature.signTransaction({
2554
+ logger11.debug("Trying array format: transactions: [Uint8Array]"), result = await signFeature.signTransaction({
2116
2555
  account,
2117
2556
  transactions: [serialized],
2118
2557
  ...cluster ? { chain: cluster.id } : {}
2119
2558
  }), usedFormat = "array";
2120
2559
  } catch (err1) {
2121
2560
  let error1 = err1 instanceof Error ? err1 : new Error(String(err1));
2122
- logger9.debug("Array format failed, trying singular format", { error: error1.message });
2561
+ logger11.debug("Array format failed, trying singular format", { error: error1.message });
2123
2562
  try {
2124
- logger9.debug("Trying singular format: transaction: Uint8Array"), result = await signFeature.signTransaction({
2563
+ logger11.debug("Trying singular format: transaction: Uint8Array"), result = await signFeature.signTransaction({
2125
2564
  account,
2126
2565
  transaction: serialized,
2127
2566
  ...cluster ? { chain: cluster.id } : {}
2128
2567
  }), usedFormat = "singular";
2129
2568
  } catch (err2) {
2130
2569
  let error2 = err2 instanceof Error ? err2 : new Error(String(err2));
2131
- throw logger9.error("Both array and singular formats failed", { error: error2.message }), error2;
2570
+ throw logger11.error("Both array and singular formats failed", { error: error2.message }), error2;
2132
2571
  }
2133
2572
  }
2134
- logger9.debug("Wallet signed successfully", { format: usedFormat });
2573
+ logger11.debug("Wallet signed successfully", { format: usedFormat });
2135
2574
  let signedTx;
2136
2575
  if (Array.isArray(result.signedTransactions) && result.signedTransactions[0])
2137
2576
  signedTx = result.signedTransactions[0];
@@ -2143,31 +2582,31 @@ function createTransactionSigner(config) {
2143
2582
  signedTx = result;
2144
2583
  else
2145
2584
  throw new Error(`Unexpected wallet response format: ${JSON.stringify(Object.keys(result))}`);
2146
- if (logger9.debug("Extracted signed transaction", {
2585
+ if (logger11.debug("Extracted signed transaction", {
2147
2586
  hasSignedTx: !!signedTx,
2148
2587
  signedTxType: signedTx?.constructor?.name,
2149
2588
  signedTxLength: signedTx?.length,
2150
2589
  isUint8Array: signedTx instanceof Uint8Array,
2151
2590
  hasSerialize: typeof signedTx?.serialize == "function"
2152
2591
  }), signedTx && typeof signedTx.serialize == "function")
2153
- return logger9.debug("Wallet returned web3.js object directly, no conversion needed"), signedTx;
2592
+ return logger11.debug("Wallet returned web3.js object directly, no conversion needed"), signedTx;
2154
2593
  if (signedTx && signedTx.signedTransaction) {
2155
- logger9.debug("Found signedTransaction property");
2594
+ logger11.debug("Found signedTransaction property");
2156
2595
  let bytes = signedTx.signedTransaction;
2157
2596
  if (bytes instanceof Uint8Array)
2158
- return await chunkDSUCH44G_js.convertSignedTransaction(bytes, wasWeb3js);
2597
+ return await chunk4KD6HQQG_js.convertSignedTransaction(bytes, wasWeb3js);
2159
2598
  }
2160
2599
  if (signedTx instanceof Uint8Array)
2161
- return await chunkDSUCH44G_js.convertSignedTransaction(signedTx, wasWeb3js);
2162
- throw logger9.error("Unexpected wallet response format", {
2600
+ return await chunk4KD6HQQG_js.convertSignedTransaction(signedTx, wasWeb3js);
2601
+ throw logger11.error("Unexpected wallet response format", {
2163
2602
  type: typeof signedTx,
2164
2603
  constructor: signedTx?.constructor?.name
2165
- }), new chunkDSUCH44G_js.ValidationError(
2604
+ }), new chunk64LV76OK_js.ValidationError(
2166
2605
  "INVALID_FORMAT",
2167
2606
  "Wallet returned unexpected format - not a Transaction or Uint8Array"
2168
2607
  );
2169
2608
  } catch (error) {
2170
- throw chunkDSUCH44G_js.Errors.signingFailed(error);
2609
+ throw chunk64LV76OK_js.Errors.signingFailed(error);
2171
2610
  }
2172
2611
  },
2173
2612
  async signAllTransactions(transactions) {
@@ -2175,18 +2614,24 @@ function createTransactionSigner(config) {
2175
2614
  return [];
2176
2615
  if (capabilities.supportsBatchSigning)
2177
2616
  try {
2178
- let signFeature = features["solana:signAllTransactions"], prepared = transactions.map((tx) => chunkDSUCH44G_js.prepareTransactionForWallet(tx)), serializedTxs = prepared.map((p) => p.serialized), wasWeb3js = prepared[0].wasWeb3js, result = await signFeature.signAllTransactions({
2617
+ let signFeature = features["solana:signAllTransactions"], prepared = transactions.map((tx) => chunk4KD6HQQG_js.prepareTransactionForWallet(tx)), serializedTxs = prepared.map((p) => p.serialized), wasWeb3js = prepared[0].wasWeb3js, result = await signFeature.signAllTransactions({
2179
2618
  account,
2180
2619
  transactions: serializedTxs,
2181
2620
  ...cluster ? { chain: cluster.id } : {}
2182
- });
2621
+ }), signedBytesArray;
2622
+ if (Array.isArray(result))
2623
+ signedBytesArray = result.map((item) => item.signedTransaction);
2624
+ else if ("signedTransactions" in result)
2625
+ signedBytesArray = result.signedTransactions;
2626
+ else
2627
+ throw new Error("Unexpected signAllTransactions response format");
2183
2628
  return await Promise.all(
2184
- result.signedTransactions.map(
2185
- (signedBytes) => chunkDSUCH44G_js.convertSignedTransaction(signedBytes, wasWeb3js)
2629
+ signedBytesArray.map(
2630
+ (signedBytes) => chunk4KD6HQQG_js.convertSignedTransaction(signedBytes, wasWeb3js)
2186
2631
  )
2187
2632
  );
2188
2633
  } catch (error) {
2189
- throw new chunkDSUCH44G_js.TransactionError(
2634
+ throw new chunk64LV76OK_js.TransactionError(
2190
2635
  "SIGNING_FAILED",
2191
2636
  "Failed to sign transactions in batch",
2192
2637
  { count: transactions.length },
@@ -2194,14 +2639,14 @@ function createTransactionSigner(config) {
2194
2639
  );
2195
2640
  }
2196
2641
  if (!capabilities.canSign)
2197
- throw chunkDSUCH44G_js.Errors.featureNotSupported("transaction signing");
2642
+ throw chunk64LV76OK_js.Errors.featureNotSupported("transaction signing");
2198
2643
  let signed = [];
2199
2644
  for (let i = 0; i < transactions.length; i++)
2200
2645
  try {
2201
2646
  let signedTx = await signer.signTransaction(transactions[i]);
2202
2647
  signed.push(signedTx);
2203
2648
  } catch (error) {
2204
- throw new chunkDSUCH44G_js.TransactionError(
2649
+ throw new chunk64LV76OK_js.TransactionError(
2205
2650
  "SIGNING_FAILED",
2206
2651
  `Failed to sign transaction ${i + 1} of ${transactions.length}`,
2207
2652
  { index: i, total: transactions.length },
@@ -2212,9 +2657,9 @@ function createTransactionSigner(config) {
2212
2657
  },
2213
2658
  async signAndSendTransaction(transaction, options) {
2214
2659
  if (!capabilities.canSend)
2215
- throw chunkDSUCH44G_js.Errors.featureNotSupported("sending transactions");
2660
+ throw chunk64LV76OK_js.Errors.featureNotSupported("sending transactions");
2216
2661
  try {
2217
- let sendFeature = features["solana:signAndSendTransaction"], { serialized } = chunkDSUCH44G_js.prepareTransactionForWallet(transaction);
2662
+ let sendFeature = features["solana:signAndSendTransaction"], { serialized } = chunk4KD6HQQG_js.prepareTransactionForWallet(transaction);
2218
2663
  eventEmitter && eventEmitter.emit({
2219
2664
  type: "transaction:preparing",
2220
2665
  transaction: serialized,
@@ -2242,28 +2687,28 @@ function createTransactionSigner(config) {
2242
2687
  transaction: serialized
2243
2688
  });
2244
2689
  }
2245
- let signature = typeof result == "object" && result.signature ? result.signature : String(result);
2690
+ let signature = extractSignatureString(result);
2246
2691
  return eventEmitter && eventEmitter.emit({
2247
2692
  type: "transaction:sent",
2248
2693
  signature,
2249
2694
  timestamp: (/* @__PURE__ */ new Date()).toISOString()
2250
2695
  }), signature;
2251
2696
  } catch (error) {
2252
- throw new chunkDSUCH44G_js.TransactionError("SEND_FAILED", "Failed to send transaction", void 0, error);
2697
+ throw new chunk64LV76OK_js.TransactionError("SEND_FAILED", "Failed to send transaction", void 0, error);
2253
2698
  }
2254
2699
  },
2255
2700
  async signAndSendTransactions(transactions, options) {
2256
2701
  if (transactions.length === 0)
2257
2702
  return [];
2258
2703
  if (!capabilities.canSend)
2259
- throw chunkDSUCH44G_js.Errors.featureNotSupported("sending transactions");
2704
+ throw chunk64LV76OK_js.Errors.featureNotSupported("sending transactions");
2260
2705
  let signatures = [];
2261
2706
  for (let i = 0; i < transactions.length; i++)
2262
2707
  try {
2263
2708
  let sig = await signer.signAndSendTransaction(transactions[i], options);
2264
2709
  signatures.push(sig);
2265
2710
  } catch (error) {
2266
- throw new chunkDSUCH44G_js.TransactionError(
2711
+ throw new chunk64LV76OK_js.TransactionError(
2267
2712
  "SEND_FAILED",
2268
2713
  `Failed to send transaction ${i + 1} of ${transactions.length}`,
2269
2714
  { index: i, total: transactions.length },
@@ -2281,7 +2726,7 @@ function createTransactionSigner(config) {
2281
2726
  ...cluster ? { chain: cluster.id } : {}
2282
2727
  })).signature;
2283
2728
  } catch (error) {
2284
- throw new chunkDSUCH44G_js.TransactionError("SIGNING_FAILED", "Failed to sign message", void 0, error);
2729
+ throw new chunk64LV76OK_js.TransactionError("SIGNING_FAILED", "Failed to sign message", void 0, error);
2285
2730
  }
2286
2731
  }
2287
2732
  },
@@ -2291,16 +2736,16 @@ function createTransactionSigner(config) {
2291
2736
  };
2292
2737
  return signer;
2293
2738
  }
2294
- var TransactionSignerError = class extends chunkDSUCH44G_js.TransactionError {
2739
+ var TransactionSignerError = class extends chunk64LV76OK_js.TransactionError {
2295
2740
  constructor(message, code, originalError) {
2296
2741
  let newCode = code === "WALLET_NOT_CONNECTED" ? "FEATURE_NOT_SUPPORTED" : code;
2297
2742
  super(newCode, message, void 0, originalError), this.name = "TransactionSignerError";
2298
2743
  }
2299
2744
  };
2300
2745
  function isTransactionSignerError(error) {
2301
- return error instanceof TransactionSignerError || error instanceof chunkDSUCH44G_js.TransactionError;
2746
+ return error instanceof TransactionSignerError || error instanceof chunk64LV76OK_js.TransactionError;
2302
2747
  }
2303
- var logger10 = chunkDSUCH44G_js.createLogger("KitTransactionSigner");
2748
+ var logger12 = chunk64LV76OK_js.createLogger("KitTransactionSigner");
2304
2749
  function encodeShortVecLength(value) {
2305
2750
  let bytes = [], remaining = value;
2306
2751
  for (; remaining >= 128; )
@@ -2320,6 +2765,29 @@ function decodeShortVecLength(data) {
2320
2765
  }
2321
2766
  return { length, bytesConsumed: size };
2322
2767
  }
2768
+ function parseMessageSigners(messageBytes) {
2769
+ let offset = 0;
2770
+ if (messageBytes.length < 4)
2771
+ throw new Error("Invalid message: too short for header");
2772
+ if (messageBytes[0] === 128 && (offset = 1), offset + 3 > messageBytes.length)
2773
+ throw new Error("Invalid message: incomplete header");
2774
+ let numSignerAccounts = messageBytes[offset];
2775
+ if (offset += 3, offset >= messageBytes.length)
2776
+ throw new Error("Invalid message: no static accounts section");
2777
+ let { length: numStaticAccounts, bytesConsumed } = decodeShortVecLength(messageBytes.subarray(offset));
2778
+ offset += bytesConsumed;
2779
+ let staticAccounts = [], base58Decoder = codecs.getBase58Decoder();
2780
+ for (let i = 0; i < numStaticAccounts && i < numSignerAccounts; i++) {
2781
+ if (offset + 32 > messageBytes.length)
2782
+ throw new Error(`Invalid message: incomplete account ${i}`);
2783
+ let accountBytes = messageBytes.subarray(offset, offset + 32), accountAddress = base58Decoder.decode(accountBytes);
2784
+ staticAccounts.push(accountAddress), offset += 32;
2785
+ }
2786
+ return {
2787
+ numSigners: numSignerAccounts,
2788
+ staticAccounts
2789
+ };
2790
+ }
2323
2791
  function createTransactionBytesForSigning(messageBytes, numSigners) {
2324
2792
  let numSignaturesBytes = encodeShortVecLength(numSigners), signatureSlots = new Uint8Array(numSigners * 64), totalLength = numSignaturesBytes.length + signatureSlots.length + messageBytes.length, transactionBytes = new Uint8Array(totalLength), offset = 0;
2325
2793
  return transactionBytes.set(numSignaturesBytes, offset), offset += numSignaturesBytes.length, transactionBytes.set(signatureSlots, offset), offset += signatureSlots.length, transactionBytes.set(messageBytes, offset), transactionBytes;
@@ -2332,7 +2800,7 @@ function extractSignature(signedTx) {
2332
2800
  let signatureStart = bytesConsumed;
2333
2801
  return signedTx.slice(signatureStart, signatureStart + 64);
2334
2802
  }
2335
- if (chunkDSUCH44G_js.isWeb3jsTransaction(signedTx)) {
2803
+ if (chunk4KD6HQQG_js.isWeb3jsTransaction(signedTx)) {
2336
2804
  let signatures = signedTx.signatures;
2337
2805
  if (!signatures || signatures.length === 0)
2338
2806
  throw new Error("No signatures found in web3.js transaction");
@@ -2351,8 +2819,8 @@ function createKitTransactionSigner(connectorSigner) {
2351
2819
  address: signerAddress,
2352
2820
  async modifyAndSignTransactions(transactions$1) {
2353
2821
  let transactionData = transactions$1.map((tx) => {
2354
- let messageBytes = new Uint8Array(tx.messageBytes), numSigners = Object.keys(tx.signatures).length, wireFormat = createTransactionBytesForSigning(messageBytes, numSigners);
2355
- return logger10.debug("Preparing wire format for wallet", {
2822
+ let messageBytes = new Uint8Array(tx.messageBytes), { numSigners } = parseMessageSigners(messageBytes), wireFormat = createTransactionBytesForSigning(messageBytes, numSigners);
2823
+ return logger12.debug("Preparing wire format for wallet", {
2356
2824
  signerAddress,
2357
2825
  messageBytesLength: messageBytes.length,
2358
2826
  wireFormatLength: wireFormat.length,
@@ -2373,7 +2841,7 @@ function createKitTransactionSigner(connectorSigner) {
2373
2841
  let signedTxBytes;
2374
2842
  if (signedTx instanceof Uint8Array)
2375
2843
  signedTxBytes = signedTx;
2376
- else if (chunkDSUCH44G_js.isWeb3jsTransaction(signedTx)) {
2844
+ else if (chunk4KD6HQQG_js.isWeb3jsTransaction(signedTx)) {
2377
2845
  let txObj = signedTx;
2378
2846
  if (typeof txObj.serialize == "function")
2379
2847
  signedTxBytes = txObj.serialize();
@@ -2381,14 +2849,14 @@ function createKitTransactionSigner(connectorSigner) {
2381
2849
  throw new Error("Web3.js transaction without serialize method");
2382
2850
  } else
2383
2851
  throw new Error("Unknown signed transaction format");
2384
- if (logger10.debug("Wallet returned signed transaction", {
2852
+ if (logger12.debug("Wallet returned signed transaction", {
2385
2853
  returnedLength: signedTxBytes.length,
2386
2854
  sentLength: wireFormat.length,
2387
2855
  lengthsMatch: signedTxBytes.length === wireFormat.length,
2388
2856
  signedFirstBytes: Array.from(signedTxBytes.slice(0, 20)),
2389
2857
  sentFirstBytes: Array.from(wireFormat.slice(0, 20))
2390
2858
  }), signedTxBytes.length !== wireFormat.length) {
2391
- logger10.warn("Wallet modified transaction! Using wallet version", {
2859
+ logger12.warn("Wallet modified transaction! Using wallet version", {
2392
2860
  originalLength: wireFormat.length,
2393
2861
  modifiedLength: signedTxBytes.length,
2394
2862
  difference: signedTxBytes.length - wireFormat.length
@@ -2399,13 +2867,13 @@ function createKitTransactionSigner(connectorSigner) {
2399
2867
  lifetimeConstraint: originalWithLifetime.lifetimeConstraint
2400
2868
  } : {}
2401
2869
  };
2402
- return logger10.debug("Using modified transaction from wallet", {
2870
+ return logger12.debug("Using modified transaction from wallet", {
2403
2871
  modifiedMessageBytesLength: walletTransaction.messageBytes.length,
2404
2872
  signatures: Object.keys(walletTransaction.signatures)
2405
2873
  }), transactions.assertIsTransactionWithinSizeLimit(result), result;
2406
2874
  }
2407
2875
  let extractedSignatureBytes = extractSignature(signedTxBytes), signatureBase58 = codecs.getBase58Decoder().decode(extractedSignatureBytes);
2408
- logger10.debug("Extracted signature from wallet (unmodified)", {
2876
+ logger12.debug("Extracted signature from wallet (unmodified)", {
2409
2877
  signerAddress,
2410
2878
  signatureLength: extractedSignatureBytes.length,
2411
2879
  signatureBase58
@@ -2420,7 +2888,7 @@ function createKitTransactionSigner(connectorSigner) {
2420
2888
  };
2421
2889
  return transactions.assertIsTransactionWithinSizeLimit(signedTransaction), signedTransaction;
2422
2890
  } catch (error) {
2423
- return logger10.error("Failed to decode signed transaction", { error }), transactions.assertIsTransactionWithinSizeLimit(originalTransaction), originalTransaction;
2891
+ return logger12.error("Failed to decode signed transaction", { error }), transactions.assertIsTransactionWithinSizeLimit(originalTransaction), originalTransaction;
2424
2892
  }
2425
2893
  });
2426
2894
  }
@@ -2431,13 +2899,17 @@ var createGillTransactionSigner = createKitTransactionSigner;
2431
2899
  exports.ClipboardErrorType = ClipboardErrorType;
2432
2900
  exports.ConnectorClient = ConnectorClient;
2433
2901
  exports.ConnectorErrorBoundary = ConnectorErrorBoundary;
2434
- exports.DEFAULT_MAX_RETRIES = DEFAULT_MAX_RETRIES;
2902
+ exports.EnhancedStorage = EnhancedStorage;
2903
+ exports.EnhancedStorageAdapter = EnhancedStorageAdapter;
2435
2904
  exports.PUBLIC_RPC_ENDPOINTS = PUBLIC_RPC_ENDPOINTS;
2436
2905
  exports.TransactionSignerError = TransactionSignerError;
2437
2906
  exports.WalletErrorType = WalletErrorType;
2438
2907
  exports.copyAddressToClipboard = copyAddressToClipboard;
2439
2908
  exports.copySignatureToClipboard = copySignatureToClipboard;
2440
2909
  exports.copyToClipboard = copyToClipboard;
2910
+ exports.createEnhancedStorageAccount = createEnhancedStorageAccount;
2911
+ exports.createEnhancedStorageCluster = createEnhancedStorageCluster;
2912
+ exports.createEnhancedStorageWallet = createEnhancedStorageWallet;
2441
2913
  exports.createGillTransactionSigner = createGillTransactionSigner;
2442
2914
  exports.createKitTransactionSigner = createKitTransactionSigner;
2443
2915
  exports.createTransactionSigner = createTransactionSigner;
@@ -2457,6 +2929,8 @@ exports.getClusterExplorerUrl = getClusterExplorerUrl;
2457
2929
  exports.getClusterName = getClusterName;
2458
2930
  exports.getClusterRpcUrl = getClusterRpcUrl;
2459
2931
  exports.getClusterType = getClusterType;
2932
+ exports.getDefaultConfig = getDefaultConfig;
2933
+ exports.getDefaultMobileConfig = getDefaultMobileConfig;
2460
2934
  exports.getDefaultRpcUrl = getDefaultRpcUrl;
2461
2935
  exports.getNetworkDisplayName = getNetworkDisplayName;
2462
2936
  exports.getPolyfillStatus = getPolyfillStatus;
@@ -2477,9 +2951,11 @@ exports.isTestnet = isTestnet;
2477
2951
  exports.isTestnetCluster = isTestnetCluster;
2478
2952
  exports.isTransactionSignerError = isTransactionSignerError;
2479
2953
  exports.normalizeNetwork = normalizeNetwork;
2954
+ exports.parseConfigOptions = parseConfigOptions;
2480
2955
  exports.ready = ready;
2481
2956
  exports.toClusterId = toClusterId;
2482
2957
  exports.truncate = truncate;
2958
+ exports.validateConfigOptions = validateConfigOptions;
2483
2959
  exports.withErrorBoundary = withErrorBoundary;
2484
- //# sourceMappingURL=chunk-FTXIXM43.js.map
2485
- //# sourceMappingURL=chunk-FTXIXM43.js.map
2960
+ //# sourceMappingURL=chunk-6AJJJG5B.js.map
2961
+ //# sourceMappingURL=chunk-6AJJJG5B.js.map