@solana/connector 0.1.9 → 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-5HRJKCIL.js → chunk-6AJJJG5B.js} +567 -133
  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-WDXEP4AJ.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-MAXA3HEP.mjs → chunk-QOIQBWMP.mjs} +477 -51
  23. package/dist/chunk-QOIQBWMP.mjs.map +1 -0
  24. package/dist/{chunk-P5LXUDP6.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-5HRJKCIL.js.map +0 -1
  50. package/dist/chunk-DSUCH44G.js.map +0 -1
  51. package/dist/chunk-I6TJLYNA.js +0 -535
  52. package/dist/chunk-I6TJLYNA.js.map +0 -1
  53. package/dist/chunk-J7DHGLW6.mjs.map +0 -1
  54. package/dist/chunk-JOBLG62A.mjs +0 -476
  55. package/dist/chunk-JOBLG62A.mjs.map +0 -1
  56. package/dist/chunk-MAXA3HEP.mjs.map +0 -1
  57. package/dist/chunk-P5LXUDP6.mjs.map +0 -1
  58. package/dist/chunk-WDXEP4AJ.js.map +0 -1
@@ -1,10 +1,13 @@
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');
10
+ var v4 = require('zod/v4');
8
11
  var codecs = require('@solana/codecs');
9
12
  var transactions = require('@solana/transactions');
10
13
 
@@ -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,10 +2497,10 @@ 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
- var logger9 = chunkDSUCH44G_js.createLogger("TransactionSigner");
2503
+ var logger11 = chunk64LV76OK_js.createLogger("TransactionSigner");
2084
2504
  function signatureBytesToBase58(bytes) {
2085
2505
  if (bytes.length !== 64)
2086
2506
  throw new Error(`Invalid signature length: expected 64 bytes, got ${bytes.length}`);
@@ -2115,14 +2535,14 @@ function createTransactionSigner(config) {
2115
2535
  address,
2116
2536
  async signTransaction(transaction) {
2117
2537
  if (!capabilities.canSign)
2118
- throw chunkDSUCH44G_js.Errors.featureNotSupported("transaction signing");
2538
+ throw chunk64LV76OK_js.Errors.featureNotSupported("transaction signing");
2119
2539
  let validation = TransactionValidator.validate(transaction);
2120
2540
  if (!validation.valid)
2121
- throw logger9.error("Transaction validation failed", { errors: validation.errors }), chunkDSUCH44G_js.Errors.invalidTransaction(validation.errors.join(", "));
2122
- 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 });
2123
2543
  try {
2124
- let signFeature = features["solana:signTransaction"], { serialized, wasWeb3js } = chunkDSUCH44G_js.prepareTransactionForWallet(transaction);
2125
- logger9.debug("Signing transaction", {
2544
+ let signFeature = features["solana:signTransaction"], { serialized, wasWeb3js } = chunk4KD6HQQG_js.prepareTransactionForWallet(transaction);
2545
+ logger11.debug("Signing transaction", {
2126
2546
  wasWeb3js,
2127
2547
  serializedLength: serialized.length,
2128
2548
  serializedType: serialized.constructor.name,
@@ -2131,26 +2551,26 @@ function createTransactionSigner(config) {
2131
2551
  });
2132
2552
  let result, usedFormat = "";
2133
2553
  try {
2134
- logger9.debug("Trying array format: transactions: [Uint8Array]"), result = await signFeature.signTransaction({
2554
+ logger11.debug("Trying array format: transactions: [Uint8Array]"), result = await signFeature.signTransaction({
2135
2555
  account,
2136
2556
  transactions: [serialized],
2137
2557
  ...cluster ? { chain: cluster.id } : {}
2138
2558
  }), usedFormat = "array";
2139
2559
  } catch (err1) {
2140
2560
  let error1 = err1 instanceof Error ? err1 : new Error(String(err1));
2141
- logger9.debug("Array format failed, trying singular format", { error: error1.message });
2561
+ logger11.debug("Array format failed, trying singular format", { error: error1.message });
2142
2562
  try {
2143
- logger9.debug("Trying singular format: transaction: Uint8Array"), result = await signFeature.signTransaction({
2563
+ logger11.debug("Trying singular format: transaction: Uint8Array"), result = await signFeature.signTransaction({
2144
2564
  account,
2145
2565
  transaction: serialized,
2146
2566
  ...cluster ? { chain: cluster.id } : {}
2147
2567
  }), usedFormat = "singular";
2148
2568
  } catch (err2) {
2149
2569
  let error2 = err2 instanceof Error ? err2 : new Error(String(err2));
2150
- 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;
2151
2571
  }
2152
2572
  }
2153
- logger9.debug("Wallet signed successfully", { format: usedFormat });
2573
+ logger11.debug("Wallet signed successfully", { format: usedFormat });
2154
2574
  let signedTx;
2155
2575
  if (Array.isArray(result.signedTransactions) && result.signedTransactions[0])
2156
2576
  signedTx = result.signedTransactions[0];
@@ -2162,31 +2582,31 @@ function createTransactionSigner(config) {
2162
2582
  signedTx = result;
2163
2583
  else
2164
2584
  throw new Error(`Unexpected wallet response format: ${JSON.stringify(Object.keys(result))}`);
2165
- if (logger9.debug("Extracted signed transaction", {
2585
+ if (logger11.debug("Extracted signed transaction", {
2166
2586
  hasSignedTx: !!signedTx,
2167
2587
  signedTxType: signedTx?.constructor?.name,
2168
2588
  signedTxLength: signedTx?.length,
2169
2589
  isUint8Array: signedTx instanceof Uint8Array,
2170
2590
  hasSerialize: typeof signedTx?.serialize == "function"
2171
2591
  }), signedTx && typeof signedTx.serialize == "function")
2172
- 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;
2173
2593
  if (signedTx && signedTx.signedTransaction) {
2174
- logger9.debug("Found signedTransaction property");
2594
+ logger11.debug("Found signedTransaction property");
2175
2595
  let bytes = signedTx.signedTransaction;
2176
2596
  if (bytes instanceof Uint8Array)
2177
- return await chunkDSUCH44G_js.convertSignedTransaction(bytes, wasWeb3js);
2597
+ return await chunk4KD6HQQG_js.convertSignedTransaction(bytes, wasWeb3js);
2178
2598
  }
2179
2599
  if (signedTx instanceof Uint8Array)
2180
- return await chunkDSUCH44G_js.convertSignedTransaction(signedTx, wasWeb3js);
2181
- throw logger9.error("Unexpected wallet response format", {
2600
+ return await chunk4KD6HQQG_js.convertSignedTransaction(signedTx, wasWeb3js);
2601
+ throw logger11.error("Unexpected wallet response format", {
2182
2602
  type: typeof signedTx,
2183
2603
  constructor: signedTx?.constructor?.name
2184
- }), new chunkDSUCH44G_js.ValidationError(
2604
+ }), new chunk64LV76OK_js.ValidationError(
2185
2605
  "INVALID_FORMAT",
2186
2606
  "Wallet returned unexpected format - not a Transaction or Uint8Array"
2187
2607
  );
2188
2608
  } catch (error) {
2189
- throw chunkDSUCH44G_js.Errors.signingFailed(error);
2609
+ throw chunk64LV76OK_js.Errors.signingFailed(error);
2190
2610
  }
2191
2611
  },
2192
2612
  async signAllTransactions(transactions) {
@@ -2194,18 +2614,24 @@ function createTransactionSigner(config) {
2194
2614
  return [];
2195
2615
  if (capabilities.supportsBatchSigning)
2196
2616
  try {
2197
- 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({
2198
2618
  account,
2199
2619
  transactions: serializedTxs,
2200
2620
  ...cluster ? { chain: cluster.id } : {}
2201
- });
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");
2202
2628
  return await Promise.all(
2203
- result.signedTransactions.map(
2204
- (signedBytes) => chunkDSUCH44G_js.convertSignedTransaction(signedBytes, wasWeb3js)
2629
+ signedBytesArray.map(
2630
+ (signedBytes) => chunk4KD6HQQG_js.convertSignedTransaction(signedBytes, wasWeb3js)
2205
2631
  )
2206
2632
  );
2207
2633
  } catch (error) {
2208
- throw new chunkDSUCH44G_js.TransactionError(
2634
+ throw new chunk64LV76OK_js.TransactionError(
2209
2635
  "SIGNING_FAILED",
2210
2636
  "Failed to sign transactions in batch",
2211
2637
  { count: transactions.length },
@@ -2213,14 +2639,14 @@ function createTransactionSigner(config) {
2213
2639
  );
2214
2640
  }
2215
2641
  if (!capabilities.canSign)
2216
- throw chunkDSUCH44G_js.Errors.featureNotSupported("transaction signing");
2642
+ throw chunk64LV76OK_js.Errors.featureNotSupported("transaction signing");
2217
2643
  let signed = [];
2218
2644
  for (let i = 0; i < transactions.length; i++)
2219
2645
  try {
2220
2646
  let signedTx = await signer.signTransaction(transactions[i]);
2221
2647
  signed.push(signedTx);
2222
2648
  } catch (error) {
2223
- throw new chunkDSUCH44G_js.TransactionError(
2649
+ throw new chunk64LV76OK_js.TransactionError(
2224
2650
  "SIGNING_FAILED",
2225
2651
  `Failed to sign transaction ${i + 1} of ${transactions.length}`,
2226
2652
  { index: i, total: transactions.length },
@@ -2231,9 +2657,9 @@ function createTransactionSigner(config) {
2231
2657
  },
2232
2658
  async signAndSendTransaction(transaction, options) {
2233
2659
  if (!capabilities.canSend)
2234
- throw chunkDSUCH44G_js.Errors.featureNotSupported("sending transactions");
2660
+ throw chunk64LV76OK_js.Errors.featureNotSupported("sending transactions");
2235
2661
  try {
2236
- let sendFeature = features["solana:signAndSendTransaction"], { serialized } = chunkDSUCH44G_js.prepareTransactionForWallet(transaction);
2662
+ let sendFeature = features["solana:signAndSendTransaction"], { serialized } = chunk4KD6HQQG_js.prepareTransactionForWallet(transaction);
2237
2663
  eventEmitter && eventEmitter.emit({
2238
2664
  type: "transaction:preparing",
2239
2665
  transaction: serialized,
@@ -2268,21 +2694,21 @@ function createTransactionSigner(config) {
2268
2694
  timestamp: (/* @__PURE__ */ new Date()).toISOString()
2269
2695
  }), signature;
2270
2696
  } catch (error) {
2271
- 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);
2272
2698
  }
2273
2699
  },
2274
2700
  async signAndSendTransactions(transactions, options) {
2275
2701
  if (transactions.length === 0)
2276
2702
  return [];
2277
2703
  if (!capabilities.canSend)
2278
- throw chunkDSUCH44G_js.Errors.featureNotSupported("sending transactions");
2704
+ throw chunk64LV76OK_js.Errors.featureNotSupported("sending transactions");
2279
2705
  let signatures = [];
2280
2706
  for (let i = 0; i < transactions.length; i++)
2281
2707
  try {
2282
2708
  let sig = await signer.signAndSendTransaction(transactions[i], options);
2283
2709
  signatures.push(sig);
2284
2710
  } catch (error) {
2285
- throw new chunkDSUCH44G_js.TransactionError(
2711
+ throw new chunk64LV76OK_js.TransactionError(
2286
2712
  "SEND_FAILED",
2287
2713
  `Failed to send transaction ${i + 1} of ${transactions.length}`,
2288
2714
  { index: i, total: transactions.length },
@@ -2300,7 +2726,7 @@ function createTransactionSigner(config) {
2300
2726
  ...cluster ? { chain: cluster.id } : {}
2301
2727
  })).signature;
2302
2728
  } catch (error) {
2303
- 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);
2304
2730
  }
2305
2731
  }
2306
2732
  },
@@ -2310,16 +2736,16 @@ function createTransactionSigner(config) {
2310
2736
  };
2311
2737
  return signer;
2312
2738
  }
2313
- var TransactionSignerError = class extends chunkDSUCH44G_js.TransactionError {
2739
+ var TransactionSignerError = class extends chunk64LV76OK_js.TransactionError {
2314
2740
  constructor(message, code, originalError) {
2315
2741
  let newCode = code === "WALLET_NOT_CONNECTED" ? "FEATURE_NOT_SUPPORTED" : code;
2316
2742
  super(newCode, message, void 0, originalError), this.name = "TransactionSignerError";
2317
2743
  }
2318
2744
  };
2319
2745
  function isTransactionSignerError(error) {
2320
- return error instanceof TransactionSignerError || error instanceof chunkDSUCH44G_js.TransactionError;
2746
+ return error instanceof TransactionSignerError || error instanceof chunk64LV76OK_js.TransactionError;
2321
2747
  }
2322
- var logger10 = chunkDSUCH44G_js.createLogger("KitTransactionSigner");
2748
+ var logger12 = chunk64LV76OK_js.createLogger("KitTransactionSigner");
2323
2749
  function encodeShortVecLength(value) {
2324
2750
  let bytes = [], remaining = value;
2325
2751
  for (; remaining >= 128; )
@@ -2374,7 +2800,7 @@ function extractSignature(signedTx) {
2374
2800
  let signatureStart = bytesConsumed;
2375
2801
  return signedTx.slice(signatureStart, signatureStart + 64);
2376
2802
  }
2377
- if (chunkDSUCH44G_js.isWeb3jsTransaction(signedTx)) {
2803
+ if (chunk4KD6HQQG_js.isWeb3jsTransaction(signedTx)) {
2378
2804
  let signatures = signedTx.signatures;
2379
2805
  if (!signatures || signatures.length === 0)
2380
2806
  throw new Error("No signatures found in web3.js transaction");
@@ -2394,7 +2820,7 @@ function createKitTransactionSigner(connectorSigner) {
2394
2820
  async modifyAndSignTransactions(transactions$1) {
2395
2821
  let transactionData = transactions$1.map((tx) => {
2396
2822
  let messageBytes = new Uint8Array(tx.messageBytes), { numSigners } = parseMessageSigners(messageBytes), wireFormat = createTransactionBytesForSigning(messageBytes, numSigners);
2397
- return logger10.debug("Preparing wire format for wallet", {
2823
+ return logger12.debug("Preparing wire format for wallet", {
2398
2824
  signerAddress,
2399
2825
  messageBytesLength: messageBytes.length,
2400
2826
  wireFormatLength: wireFormat.length,
@@ -2415,7 +2841,7 @@ function createKitTransactionSigner(connectorSigner) {
2415
2841
  let signedTxBytes;
2416
2842
  if (signedTx instanceof Uint8Array)
2417
2843
  signedTxBytes = signedTx;
2418
- else if (chunkDSUCH44G_js.isWeb3jsTransaction(signedTx)) {
2844
+ else if (chunk4KD6HQQG_js.isWeb3jsTransaction(signedTx)) {
2419
2845
  let txObj = signedTx;
2420
2846
  if (typeof txObj.serialize == "function")
2421
2847
  signedTxBytes = txObj.serialize();
@@ -2423,14 +2849,14 @@ function createKitTransactionSigner(connectorSigner) {
2423
2849
  throw new Error("Web3.js transaction without serialize method");
2424
2850
  } else
2425
2851
  throw new Error("Unknown signed transaction format");
2426
- if (logger10.debug("Wallet returned signed transaction", {
2852
+ if (logger12.debug("Wallet returned signed transaction", {
2427
2853
  returnedLength: signedTxBytes.length,
2428
2854
  sentLength: wireFormat.length,
2429
2855
  lengthsMatch: signedTxBytes.length === wireFormat.length,
2430
2856
  signedFirstBytes: Array.from(signedTxBytes.slice(0, 20)),
2431
2857
  sentFirstBytes: Array.from(wireFormat.slice(0, 20))
2432
2858
  }), signedTxBytes.length !== wireFormat.length) {
2433
- logger10.warn("Wallet modified transaction! Using wallet version", {
2859
+ logger12.warn("Wallet modified transaction! Using wallet version", {
2434
2860
  originalLength: wireFormat.length,
2435
2861
  modifiedLength: signedTxBytes.length,
2436
2862
  difference: signedTxBytes.length - wireFormat.length
@@ -2441,13 +2867,13 @@ function createKitTransactionSigner(connectorSigner) {
2441
2867
  lifetimeConstraint: originalWithLifetime.lifetimeConstraint
2442
2868
  } : {}
2443
2869
  };
2444
- return logger10.debug("Using modified transaction from wallet", {
2870
+ return logger12.debug("Using modified transaction from wallet", {
2445
2871
  modifiedMessageBytesLength: walletTransaction.messageBytes.length,
2446
2872
  signatures: Object.keys(walletTransaction.signatures)
2447
2873
  }), transactions.assertIsTransactionWithinSizeLimit(result), result;
2448
2874
  }
2449
2875
  let extractedSignatureBytes = extractSignature(signedTxBytes), signatureBase58 = codecs.getBase58Decoder().decode(extractedSignatureBytes);
2450
- logger10.debug("Extracted signature from wallet (unmodified)", {
2876
+ logger12.debug("Extracted signature from wallet (unmodified)", {
2451
2877
  signerAddress,
2452
2878
  signatureLength: extractedSignatureBytes.length,
2453
2879
  signatureBase58
@@ -2462,7 +2888,7 @@ function createKitTransactionSigner(connectorSigner) {
2462
2888
  };
2463
2889
  return transactions.assertIsTransactionWithinSizeLimit(signedTransaction), signedTransaction;
2464
2890
  } catch (error) {
2465
- 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;
2466
2892
  }
2467
2893
  });
2468
2894
  }
@@ -2473,13 +2899,17 @@ var createGillTransactionSigner = createKitTransactionSigner;
2473
2899
  exports.ClipboardErrorType = ClipboardErrorType;
2474
2900
  exports.ConnectorClient = ConnectorClient;
2475
2901
  exports.ConnectorErrorBoundary = ConnectorErrorBoundary;
2476
- exports.DEFAULT_MAX_RETRIES = DEFAULT_MAX_RETRIES;
2902
+ exports.EnhancedStorage = EnhancedStorage;
2903
+ exports.EnhancedStorageAdapter = EnhancedStorageAdapter;
2477
2904
  exports.PUBLIC_RPC_ENDPOINTS = PUBLIC_RPC_ENDPOINTS;
2478
2905
  exports.TransactionSignerError = TransactionSignerError;
2479
2906
  exports.WalletErrorType = WalletErrorType;
2480
2907
  exports.copyAddressToClipboard = copyAddressToClipboard;
2481
2908
  exports.copySignatureToClipboard = copySignatureToClipboard;
2482
2909
  exports.copyToClipboard = copyToClipboard;
2910
+ exports.createEnhancedStorageAccount = createEnhancedStorageAccount;
2911
+ exports.createEnhancedStorageCluster = createEnhancedStorageCluster;
2912
+ exports.createEnhancedStorageWallet = createEnhancedStorageWallet;
2483
2913
  exports.createGillTransactionSigner = createGillTransactionSigner;
2484
2914
  exports.createKitTransactionSigner = createKitTransactionSigner;
2485
2915
  exports.createTransactionSigner = createTransactionSigner;
@@ -2499,6 +2929,8 @@ exports.getClusterExplorerUrl = getClusterExplorerUrl;
2499
2929
  exports.getClusterName = getClusterName;
2500
2930
  exports.getClusterRpcUrl = getClusterRpcUrl;
2501
2931
  exports.getClusterType = getClusterType;
2932
+ exports.getDefaultConfig = getDefaultConfig;
2933
+ exports.getDefaultMobileConfig = getDefaultMobileConfig;
2502
2934
  exports.getDefaultRpcUrl = getDefaultRpcUrl;
2503
2935
  exports.getNetworkDisplayName = getNetworkDisplayName;
2504
2936
  exports.getPolyfillStatus = getPolyfillStatus;
@@ -2519,9 +2951,11 @@ exports.isTestnet = isTestnet;
2519
2951
  exports.isTestnetCluster = isTestnetCluster;
2520
2952
  exports.isTransactionSignerError = isTransactionSignerError;
2521
2953
  exports.normalizeNetwork = normalizeNetwork;
2954
+ exports.parseConfigOptions = parseConfigOptions;
2522
2955
  exports.ready = ready;
2523
2956
  exports.toClusterId = toClusterId;
2524
2957
  exports.truncate = truncate;
2958
+ exports.validateConfigOptions = validateConfigOptions;
2525
2959
  exports.withErrorBoundary = withErrorBoundary;
2526
- //# sourceMappingURL=chunk-5HRJKCIL.js.map
2527
- //# sourceMappingURL=chunk-5HRJKCIL.js.map
2960
+ //# sourceMappingURL=chunk-6AJJJG5B.js.map
2961
+ //# sourceMappingURL=chunk-6AJJJG5B.js.map