@solana/connector 0.1.10 → 0.2.0

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 (55) hide show
  1. package/README.md +344 -88
  2. package/dist/{chunk-MN7XNCYI.js → chunk-BJAVJQLK.js} +6 -6
  3. package/dist/{chunk-MN7XNCYI.js.map → chunk-BJAVJQLK.js.map} +1 -1
  4. package/dist/{chunk-6AJJJG5B.js → chunk-BZ2VBJCZ.js} +618 -415
  5. package/dist/chunk-BZ2VBJCZ.js.map +1 -0
  6. package/dist/{chunk-ATYK5OKR.js → chunk-EM4KNOKG.js} +614 -194
  7. package/dist/chunk-EM4KNOKG.js.map +1 -0
  8. package/dist/{chunk-4JT24DIX.js → chunk-HN5AJF7F.js} +61 -20
  9. package/dist/chunk-HN5AJF7F.js.map +1 -0
  10. package/dist/{chunk-FVA4TUI4.mjs → chunk-HPQ5T32K.mjs} +4 -4
  11. package/dist/{chunk-FVA4TUI4.mjs.map → chunk-HPQ5T32K.mjs.map} +1 -1
  12. package/dist/{chunk-QOIQBWMP.mjs → chunk-IDTUFDNB.mjs} +531 -339
  13. package/dist/chunk-IDTUFDNB.mjs.map +1 -0
  14. package/dist/{chunk-WGZYKDXF.mjs → chunk-RTXUS5KG.mjs} +529 -115
  15. package/dist/chunk-RTXUS5KG.mjs.map +1 -0
  16. package/dist/{chunk-64LV76OK.js → chunk-SITQ4JWM.js} +23 -2
  17. package/dist/chunk-SITQ4JWM.js.map +1 -0
  18. package/dist/{chunk-7XHVZW2L.mjs → chunk-UCISIAOG.mjs} +60 -19
  19. package/dist/chunk-UCISIAOG.mjs.map +1 -0
  20. package/dist/{chunk-DKCZA2QI.mjs → chunk-ZZTY3O4N.mjs} +21 -3
  21. package/dist/chunk-ZZTY3O4N.mjs.map +1 -0
  22. package/dist/compat.d.mts +1 -1
  23. package/dist/compat.d.ts +1 -1
  24. package/dist/compat.js +2 -2
  25. package/dist/compat.mjs +1 -1
  26. package/dist/headless.d.mts +25 -7
  27. package/dist/headless.d.ts +25 -7
  28. package/dist/headless.js +196 -132
  29. package/dist/headless.mjs +4 -4
  30. package/dist/index.d.mts +4 -4
  31. package/dist/index.d.ts +4 -4
  32. package/dist/index.js +255 -175
  33. package/dist/index.mjs +5 -5
  34. package/dist/react.d.mts +230 -8
  35. package/dist/react.d.ts +230 -8
  36. package/dist/react.js +78 -42
  37. package/dist/react.mjs +2 -2
  38. package/dist/{standard-shim-BTUm7cur.d.mts → standard-shim-CGB88PPO.d.mts} +396 -54
  39. package/dist/{standard-shim-LsQ97i9T.d.ts → standard-shim-tmnQelaJ.d.ts} +396 -54
  40. package/dist/{transaction-signer-T-KVQFi8.d.ts → transaction-signer-7NaYmP5w.d.mts} +1 -0
  41. package/dist/{transaction-signer-T-KVQFi8.d.mts → transaction-signer-7NaYmP5w.d.ts} +1 -0
  42. package/dist/{walletconnect-D4JN6H2O.js → walletconnect-447EY3OJ.js} +8 -8
  43. package/dist/{walletconnect-D4JN6H2O.js.map → walletconnect-447EY3OJ.js.map} +1 -1
  44. package/dist/walletconnect-U455PO4I.mjs +3 -0
  45. package/dist/{walletconnect-I3PZUBTA.mjs.map → walletconnect-U455PO4I.mjs.map} +1 -1
  46. package/package.json +1 -1
  47. package/dist/chunk-4JT24DIX.js.map +0 -1
  48. package/dist/chunk-64LV76OK.js.map +0 -1
  49. package/dist/chunk-6AJJJG5B.js.map +0 -1
  50. package/dist/chunk-7XHVZW2L.mjs.map +0 -1
  51. package/dist/chunk-ATYK5OKR.js.map +0 -1
  52. package/dist/chunk-DKCZA2QI.mjs.map +0 -1
  53. package/dist/chunk-QOIQBWMP.mjs.map +0 -1
  54. package/dist/chunk-WGZYKDXF.mjs.map +0 -1
  55. package/dist/walletconnect-I3PZUBTA.mjs +0 -3
@@ -1,7 +1,5 @@
1
1
  import { tryCatchSync, isWeb3jsTransaction, prepareTransactionForWallet, convertSignedTransaction } from './chunk-HO6QNKFM.mjs';
2
- import { createLogger, getPublicSolanaRpcUrl, getExplorerLink, __publicField, TransactionError, Errors, ValidationError, isConnectorError } from './chunk-DKCZA2QI.mjs';
3
- import { Component, useTransition, useState, useCallback, useMemo } from 'react';
4
- import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import { createLogger, getPublicSolanaRpcUrl, getExplorerLink, __publicField, TransactionError, Errors, ValidationError } from './chunk-ZZTY3O4N.mjs';
5
3
  import { install } from '@solana/webcrypto-ed25519-polyfill';
6
4
  import { Storage, createSolanaMainnet, createSolanaDevnet, createSolanaTestnet, createSolanaLocalnet } from '@wallet-ui/core';
7
5
  import { isAddress, address } from '@solana/addresses';
@@ -9,6 +7,49 @@ import { z } from 'zod/v4';
9
7
  import { getBase58Decoder } from '@solana/codecs';
10
8
  import { getTransactionDecoder, assertIsTransactionWithinSizeLimit } from '@solana/transactions';
11
9
 
10
+ // src/types/session.ts
11
+ function createConnectorId(walletName) {
12
+ return `wallet-standard:${walletName.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "")}`;
13
+ }
14
+ function isWalletConnectorId(value) {
15
+ return typeof value == "string" && (value.startsWith("wallet-standard:") || value === "walletconnect" || value.startsWith("mwa:"));
16
+ }
17
+ function getWalletNameFromConnectorId(connectorId) {
18
+ return connectorId === "walletconnect" ? "WalletConnect" : connectorId.startsWith("mwa:") ? connectorId.slice(4) : connectorId.startsWith("wallet-standard:") ? connectorId.slice(16).split("-").map((word) => word.charAt(0).toUpperCase() + word.slice(1)).join(" ") : connectorId;
19
+ }
20
+ function isDisconnected(status) {
21
+ return status.status === "disconnected";
22
+ }
23
+ function isConnecting(status) {
24
+ return status.status === "connecting";
25
+ }
26
+ function isConnected(status) {
27
+ return status.status === "connected";
28
+ }
29
+ function isStatusError(status) {
30
+ return status.status === "error";
31
+ }
32
+ var isWalletStatusError = isStatusError, INITIAL_WALLET_STATUS = {
33
+ status: "disconnected"
34
+ };
35
+ function toLegacyWalletState(wallet) {
36
+ switch (wallet.status) {
37
+ case "disconnected":
38
+ return { connected: false, connecting: false, selectedAccount: null, accounts: [] };
39
+ case "connecting":
40
+ return { connected: false, connecting: true, selectedAccount: null, accounts: [] };
41
+ case "connected":
42
+ return {
43
+ connected: true,
44
+ connecting: false,
45
+ selectedAccount: wallet.session.selectedAccount.address,
46
+ accounts: wallet.session.accounts.map((a) => ({ address: a.address, label: a.label }))
47
+ };
48
+ case "error":
49
+ return { connected: false, connecting: false, selectedAccount: null, accounts: [] };
50
+ }
51
+ }
52
+
12
53
  // src/lib/wallet/standard-shim.ts
13
54
  var registry = null, registryInitPromise = null, registryInitResolve = null, ready = new Promise((resolve, reject) => {
14
55
  if (typeof window > "u") {
@@ -624,7 +665,7 @@ var logger2 = createLogger("WalletAuthenticity"), WalletAuthenticityVerifier = c
624
665
  };
625
666
 
626
667
  // src/lib/wallet/wallet-icon-overrides.ts
627
- 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 = {
668
+ var PHANTOM_ICON = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiBmaWxsPSIjOTc4NkU0Ii8+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF80NF82MTApIj4KPHBhdGggZD0iTTUuNzY1NSAxNS43OTdDNS43NjU1IDE3LjIyMiA2LjQ5ODc5IDE3LjU1IDcuMjYxNDEgMTcuNTVDOC44NzQ2MyAxNy41NSAxMC4wODcgMTYuMDg0MSAxMC44MTA1IDE0LjkyNTZDMTAuNzIyNSAxNS4xODE5IDEwLjY3MzYgMTUuNDM4MiAxMC42NzM2IDE1LjY4NDJDMTAuNjczNiAxNi4zNjA5IDExLjA0NTIgMTYuODQyNyAxMS43Nzg1IDE2Ljg0MjdDMTIuNzg1NSAxNi44NDI3IDEzLjg2MSAxNS45MiAxNC40MTgzIDE0LjkyNTZDMTQuMzc5MiAxNS4wNjkyIDE0LjM1OTYgMTUuMjAyNCAxNC4zNTk2IDE1LjMyNTRDMTQuMzU5NiAxNS43OTcgMTQuNjEzOCAxNi4wOTQzIDE1LjEzMiAxNi4wOTQzQzE2Ljc2NDggMTYuMDk0MyAxOC40MDc0IDEzLjA3MDEgMTguNDA3NCAxMC40MjUyQzE4LjQwNzQgOC4zNjQ1OSAxNy40MTAxIDYuNTUwMDUgMTQuOTA3MSA2LjU1MDA1QzEwLjUwNzQgNi41NTAwNSA1Ljc2NTUgMTIuMTY3OSA1Ljc2NTUgMTUuNzk3Wk0xMy4zOTE3IDEwLjE5OTZDMTMuMzkxNyA5LjY4NzA1IDEzLjY2NTQgOS4zMjgyNSAxNC4wNjYzIDkuMzI4MjVDMTQuNDU3NCA5LjMyODI1IDE0LjczMTIgOS42ODcwNSAxNC43MzEyIDEwLjE5OTZDMTQuNzMxMiAxMC43MTIyIDE0LjQ1NzQgMTEuMDgxMyAxNC4wNjYzIDExLjA4MTNDMTMuNjY1NCAxMS4wODEzIDEzLjM5MTcgMTAuNzEyMiAxMy4zOTE3IDEwLjE5OTZaTTE1LjQ4NCAxMC4xOTk2QzE1LjQ4NCA5LjY4NzA1IDE1Ljc1NzggOS4zMjgyNSAxNi4xNTg2IDkuMzI4MjVDMTYuNTQ5NyA5LjMyODI1IDE2LjgyMzUgOS42ODcwNSAxNi44MjM1IDEwLjE5OTZDMTYuODIzNSAxMC43MTIyIDE2LjU0OTcgMTEuMDgxMyAxNi4xNTg2IDExLjA4MTNDMTUuNzU3OCAxMS4wODEzIDE1LjQ4NCAxMC43MTIyIDE1LjQ4NCAxMC4xOTk2WiIgZmlsbD0iI0ZFRkRGOCIvPgo8L2c+CjxkZWZzPgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzQ0XzYxMCI+CjxyZWN0IHdpZHRoPSIxMi43NiIgaGVpZ2h0PSIxMSIgZmlsbD0id2hpdGUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDUuNzA2NDIgNi41NDk5MykiLz4KPC9jbGlwUGF0aD4KPC9kZWZzPgo8L3N2Zz4=", SOLFLARE_ICON = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiBmaWxsPSIjRkZFRjQ2Ii8+CjxwYXRoIGQ9Ik0xMi4xMjg1IDEyLjUyNjZMMTIuOTU1NiAxMS43Mjc2TDE0LjQ5NzYgMTIuMjMyM0MxNS41MDcgMTIuNTY4NyAxNi4wMTE3IDEzLjE4NTUgMTYuMDExNyAxNC4wNTQ3QzE2LjAxMTcgMTQuNzEzNiAxNS43NTkzIDE1LjE0ODIgMTUuMjU0NyAxNS43MDg5TDE1LjEwMDUgMTUuODc3MUwxNS4xNTY1IDE1LjQ4NDZDMTUuMzgwOCAxNC4wNTQ3IDE0Ljk2MDMgMTMuNDM3OSAxMy41NzI0IDEyLjk4OTJMMTIuMTI4NSAxMi41MjY2Wk0xMC4wNTM3IDcuNjM0MTRMMTQuMjU5MyA5LjAzNkwxMy4zNDgxIDkuOTA1MTdMMTEuMTYxMiA5LjE3NjE5QzEwLjQwNDIgOC45MjM4NSAxMC4xNTE4IDguNTE3MzEgMTAuMDUzNyA3LjY2MjE3VjcuNjM0MTRaTTkuODAxMzUgMTQuNzU1NkwxMC43NTQ2IDEzLjg0NDRMMTIuNTQ5MSAxNC40MzMyQzEzLjQ4ODMgMTQuNzQxNiAxMy44MTA3IDE1LjE0ODIgMTMuNzEyNiAxNi4xNzE1TDkuODAxMzUgMTQuNzU1NlpNOC41OTU3NyAxMC42OTAyQzguNTk1NzcgMTAuNDIzOSA4LjczNTk1IDEwLjE3MTUgOC45NzQyNyA5Ljk2MTIyQzkuMjI2NjEgMTAuMzI1NyA5LjY2MTE4IDEwLjY0ODEgMTAuMzQ4MSAxMC44NzI1TDExLjgzNDEgMTEuMzYzMUwxMS4wMDcgMTIuMTYyMkw5LjU0OTAzIDExLjY4NTVDOC44NzYxNCAxMS40NjEyIDguNTk1NzcgMTEuMTI0OCA4LjU5NTc3IDEwLjY5MDJaTTEyLjk5NzYgMTguMDVDMTYuMDgxNyAxNi4wMDMzIDE3LjczNTkgMTQuNjE1NCAxNy43MzU5IDEyLjkwNTJDMTcuNzM1OSAxMS43Njk2IDE3LjA2MyAxMS4xMzg4IDE1LjU3NzEgMTAuNjQ4MUwxNC40NTU2IDEwLjI2OTZMMTcuNTI1NyA3LjMyNTcyTDE2LjkwODggNi42NjY4NEwxNS45OTc2IDcuNDY1OUwxMS42OTM5IDYuMDUwMDJDMTAuMzYyMSA2LjQ4NDYgOC42Nzk4OCA3Ljc2MDMgOC42Nzk4OCA5LjAzNkM4LjY3OTg4IDkuMTc2MTggOC42OTM5IDkuMzE2MzcgOC43MzU5NSA5LjQ3MDU5QzcuNjI4NDcgMTAuMTAxNCA3LjE3OTg4IDEwLjY5MDIgNy4xNzk4OCAxMS40MTkxQzcuMTc5ODggMTIuMTA2MSA3LjU0NDM2IDEyLjc5MyA4LjcwNzkyIDEzLjE3MTVMOS42MzMxNCAxMy40Nzk5TDYuNDM2ODkgMTYuNTVMNy4wNTM3MSAxNy4yMDg5TDguMDQ5MDQgMTYuMjk3N0wxMi45OTc2IDE4LjA1WiIgZmlsbD0iIzAyMDUwQSIvPgo8L3N2Zz4=", BACKPACK_ICON = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiBmaWxsPSIjRTMzRTNGIi8+CjxwYXRoIGQ9Ik0xNS41MTg2IDEzLjkyNzJDMTUuOTgxMSAxMy45MjcyIDE2LjIxMjcgMTMuOTI3MSAxNi4zNTY0IDE0LjA3MDhDMTYuNTAwMiAxNC4yMTQ1IDE2LjUgMTQuNDQ2MiAxNi41IDE0LjkwODdWMTUuNTY0QzE2LjUgMTYuNDg5MyAxNi41MDAyIDE2Ljk1MjIgMTYuMjEyOSAxNy4yMzk3QzE1LjkyNTMgMTcuNTI3MyAxNS40NjE4IDE3LjUyNzggMTQuNTM2MSAxNy41Mjc4SDkuNDYzODdDOC41Mzg0MiAxNy41Mjc4IDguMDc1NjcgMTcuNTI3MSA3Ljc4ODA5IDE3LjIzOTdDNy41MDA1NCAxNi45NTIyIDcuNSAxNi40ODk0IDcuNSAxNS41NjRWMTQuOTA4N0M3LjUgMTQuNDQ2MiA3LjQ5OTgyIDE0LjIxNDUgNy42NDM1NSAxNC4wNzA4QzcuNzg3MyAxMy45MjcxIDguMDE4OTEgMTMuOTI3MiA4LjQ4MTQ1IDEzLjkyNzJIMTUuNTE4NlpNMTIgNi4zNTg4OUMxNi41NjUzIDYuMzU4ODkgMTYuNSA5LjQwMjM4IDE2LjUgMTAuODU4OVYxMi40OTU2QzE2LjQ5OTkgMTIuNzY2NyAxNi4yNzk5IDEyLjk4NjggMTYuMDA4OCAxMi45ODY4SDcuOTkxMjFDNy43MjAxMiAxMi45ODY4IDcuNTAwMDYgMTIuNzY2NyA3LjUgMTIuNDk1NkM3LjUgMTIuNDk1NiA3LjUgMTIuMzE1MyA3LjUgMTAuODU4OUM3LjQ5OTk5IDkuNDAyMzkgNy40MzQ3OCA2LjM1ODkzIDEyIDYuMzU4ODlaTTEyIDcuNTE5MDRDMTEuMjMxOSA3LjUxOTEgMTAuNjA5NCA4LjE0MTU1IDEwLjYwOTQgOC45MDk2N0MxMC42MDk0IDkuNjc3NzggMTEuMjMxOSAxMC4zMDAyIDEyIDEwLjMwMDNDMTIuNzY4MiAxMC4zMDAzIDEzLjM5MDYgOS42Nzc4MiAxMy4zOTA2IDguOTA5NjdDMTMuMzkwNiA4LjE0MTUxIDEyLjc2ODIgNy41MTkwNCAxMiA3LjUxOTA0Wk0xMS45OTkgNC40NzIxN0MxMi45ODQxIDQuNDcyMjIgMTMuODQ2MiA0LjgxNjczIDE0LjA3NDIgNS4zNzc0NEMxNC4xMDg1IDUuNDczODcgMTQuMTI1OCA1LjUyMjIyIDE0LjA5NTcgNS41NTgxMUMxNC4wNjUyIDUuNTk0MDIgMTQuMDA1OCA1LjU4MzQyIDEzLjg4NzcgNS41NjIwMUMxMy41ODIyIDUuNTA2NjUgMTMuMTQ5MyA1LjQ2ODc3IDEyLjc2ODYgNS40NTc1MkMxMi41MjU4IDUuNDQ0NDggMTIuMjY5NSA1LjQzNzk5IDEyIDUuNDM3OTlDMTEuNzMwNSA1LjQzNzk5IDExLjQ3NDIgNS40NDQ0OCAxMS4yMzE0IDUuNDU3NTJDMTAuODQ5IDUuNDY4NzcgMTAuNDE0OSA1LjUwNjU4IDEwLjEwODQgNS41NjAwNkM5Ljk5MzM1IDUuNTgwMTMgOS45MzU2NSA1LjU5MDQ3IDkuOTA1MjcgNS41NTUxOEM5Ljg3NDk3IDUuNTE5MzUgOS44OTEyOCA1LjQ3MTQ0IDkuOTI0OCA1LjM3NjQ2QzEwLjE1MSA0LjgxNzQ4IDExLjAxNDIgNC40NzIxNyAxMS45OTkgNC40NzIxN1oiIGZpbGw9IndoaXRlIi8+Cjwvc3ZnPg==", WALLET_ICON_OVERRIDES = {
628
669
  Phantom: PHANTOM_ICON,
629
670
  Solflare: SOLFLARE_ICON,
630
671
  Backpack: BACKPACK_ICON
@@ -657,6 +698,9 @@ function applyWalletIconOverride(wallet) {
657
698
 
658
699
  // src/lib/wallet/detector.ts
659
700
  var logger3 = createLogger("WalletDetector");
701
+ function isSolanaWallet(wallet) {
702
+ return Array.isArray(wallet.chains) && wallet.chains.some((chain) => typeof chain == "string" && chain.startsWith("solana:"));
703
+ }
660
704
  function hasFeature(wallet, featureName) {
661
705
  return wallet.features != null && wallet.features[featureName] !== void 0;
662
706
  }
@@ -679,6 +723,8 @@ var WalletDetector = class extends BaseCollaborator {
679
723
  constructor(stateManager, eventEmitter, debug = false) {
680
724
  super({ stateManager, eventEmitter, debug }, "WalletDetector");
681
725
  __publicField(this, "unsubscribers", []);
726
+ /** Map from stable connector ID to Wallet reference (not stored in state) */
727
+ __publicField(this, "connectorRegistry", /* @__PURE__ */ new Map());
682
728
  }
683
729
  /**
684
730
  * Initialize wallet detection (synchronous)
@@ -694,11 +740,10 @@ var WalletDetector = class extends BaseCollaborator {
694
740
  if (!(typeof window > "u"))
695
741
  try {
696
742
  let walletsApi = getWalletsRegistry(), update = () => {
697
- let ws = walletsApi.get(), previousCount = this.getState().wallets.length, newCount = ws.length;
698
- newCount !== previousCount && this.log("\u{1F50D} WalletDetector: found wallets:", newCount);
699
- let unique = this.deduplicateWallets(ws);
700
- this.stateManager.updateState({
701
- wallets: unique.map((w) => this.mapToWalletInfo(w))
743
+ let solanaWallets = walletsApi.get().filter(isSolanaWallet), unique = this.deduplicateWallets(solanaWallets), previousCount = this.getState().wallets.length, newCount = unique.length;
744
+ newCount !== previousCount && this.log("\u{1F50D} WalletDetector: found wallets:", newCount), this.updateConnectorRegistry(unique), this.stateManager.updateState({
745
+ wallets: unique.map((w) => this.mapToWalletInfo(w)),
746
+ connectors: unique.map((w) => this.mapToConnectorMetadata(w))
702
747
  }), newCount !== previousCount && newCount > 0 && this.eventEmitter.emit({
703
748
  type: "wallets:detected",
704
749
  count: newCount,
@@ -776,20 +821,64 @@ var WalletDetector = class extends BaseCollaborator {
776
821
  return null;
777
822
  }
778
823
  /**
779
- * Get currently detected wallets
824
+ * Get currently detected wallets (legacy)
825
+ * @deprecated Use getConnectors() for vNext API
780
826
  */
781
827
  getDetectedWallets() {
782
828
  return this.getState().wallets;
783
829
  }
784
830
  /**
785
- * Convert a Wallet Standard wallet to WalletInfo with capability checks
831
+ * Get all available connectors (vNext API)
832
+ */
833
+ getConnectors() {
834
+ return this.getState().connectors;
835
+ }
836
+ /**
837
+ * Get a wallet by its stable connector ID (vNext API)
838
+ * Returns the Wallet reference for connection operations
839
+ */
840
+ getConnectorById(connectorId) {
841
+ return this.connectorRegistry.get(connectorId);
842
+ }
843
+ /**
844
+ * Get connector metadata by ID
845
+ */
846
+ getConnectorMetadata(connectorId) {
847
+ return this.getState().connectors.find((c) => c.id === connectorId);
848
+ }
849
+ /**
850
+ * Update the connector registry map
851
+ */
852
+ updateConnectorRegistry(wallets) {
853
+ this.connectorRegistry.clear();
854
+ for (let wallet of wallets) {
855
+ let connectorId = createConnectorId(wallet.name);
856
+ this.connectorRegistry.set(connectorId, wallet);
857
+ }
858
+ }
859
+ /**
860
+ * Convert a Wallet Standard wallet to WalletConnectorMetadata (serializable)
861
+ */
862
+ mapToConnectorMetadata(wallet) {
863
+ let walletWithIcon = applyWalletIconOverride(wallet), hasConnect = hasFeature(walletWithIcon, "standard:connect"), isSolana = isSolanaWallet(walletWithIcon), ready2 = hasConnect && isSolana;
864
+ return {
865
+ id: createConnectorId(wallet.name),
866
+ name: wallet.name,
867
+ icon: typeof walletWithIcon.icon == "string" ? walletWithIcon.icon : "",
868
+ ready: ready2,
869
+ chains: walletWithIcon.chains ?? [],
870
+ features: Object.keys(walletWithIcon.features ?? {})
871
+ };
872
+ }
873
+ /**
874
+ * Convert a Wallet Standard wallet to WalletInfo with capability checks (legacy)
786
875
  */
787
876
  mapToWalletInfo(wallet) {
788
- 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"));
877
+ let walletWithIcon = applyWalletIconOverride(wallet), hasConnect = hasFeature(walletWithIcon, "standard:connect"), isSolana = isSolanaWallet(walletWithIcon);
789
878
  return {
790
879
  wallet: walletWithIcon,
791
880
  installed: true,
792
- connectable: hasConnect && hasDisconnect && isSolana
881
+ connectable: hasConnect && isSolana
793
882
  };
794
883
  }
795
884
  /**
@@ -837,16 +926,232 @@ var ConnectionManager = class extends BaseCollaborator {
837
926
  __publicField(this, "pendingWalletName", null);
838
927
  this.walletStorage = walletStorage;
839
928
  }
929
+ // ========================================================================
930
+ // vNext Connection Methods (connector-id based, silent-first)
931
+ // ========================================================================
932
+ /**
933
+ * Connect to a wallet using the vNext API with silent-first support.
934
+ *
935
+ * @param wallet - Wallet Standard wallet instance
936
+ * @param connectorId - Stable connector identifier
937
+ * @param options - Connection options (silent mode, preferred account, etc.)
938
+ */
939
+ async connectWallet(wallet, connectorId, options) {
940
+ if (typeof window > "u") return;
941
+ let attemptId = ++this.connectAttemptId;
942
+ this.pendingWallet = wallet, this.pendingWalletName = wallet.name;
943
+ let { silent = false, allowInteractiveFallback = true, preferredAccount } = options ?? {};
944
+ this.updateWalletStatus({
945
+ status: "connecting",
946
+ connectorId
947
+ }), this.stateManager.updateState({ connecting: true }, true), this.eventEmitter.emit({
948
+ type: "connecting",
949
+ wallet: wallet.name,
950
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
951
+ });
952
+ try {
953
+ let connect = getConnectFeature(wallet);
954
+ if (!connect) throw new Error(`Wallet ${wallet.name} does not support standard connect`);
955
+ let result;
956
+ if (silent)
957
+ try {
958
+ if (result = await connect({ silent: true }), attemptId !== this.connectAttemptId) throw new Error("Connection cancelled");
959
+ let hasAccounts = result.accounts.length > 0 || wallet.accounts.length > 0;
960
+ if (!hasAccounts && allowInteractiveFallback)
961
+ this.log("Silent connect returned no accounts, trying interactive..."), result = await connect({ silent: false });
962
+ else if (!hasAccounts)
963
+ throw new Error("Silent connection failed: no accounts returned");
964
+ } catch (silentError) {
965
+ if (attemptId !== this.connectAttemptId) throw new Error("Connection cancelled");
966
+ if (allowInteractiveFallback)
967
+ this.log("Silent connect failed, trying interactive...", silentError), result = await connect({ silent: false });
968
+ else
969
+ throw silentError;
970
+ }
971
+ else
972
+ result = await connect({ silent: false });
973
+ if (attemptId !== this.connectAttemptId) throw new Error("Connection cancelled");
974
+ let walletAccounts = wallet.accounts, accountMap = /* @__PURE__ */ new Map();
975
+ for (let a of [...walletAccounts, ...result.accounts]) accountMap.set(a.address, a);
976
+ let sessionAccounts = Array.from(accountMap.values()).map((a) => ({
977
+ address: a.address,
978
+ label: a.label,
979
+ account: a
980
+ })), legacyAccounts = sessionAccounts.map((a) => this.toAccountInfo(a.account)), selectedAccount = sessionAccounts[0];
981
+ if (preferredAccount) {
982
+ let preferred = sessionAccounts.find((a) => a.address === preferredAccount);
983
+ preferred && (selectedAccount = preferred);
984
+ }
985
+ let session = this.createSession(wallet, connectorId, sessionAccounts, selectedAccount);
986
+ this.updateWalletStatus({
987
+ status: "connected",
988
+ session
989
+ }), this.stateManager.updateState(
990
+ {
991
+ selectedWallet: wallet,
992
+ connected: true,
993
+ connecting: false,
994
+ accounts: legacyAccounts,
995
+ selectedAccount: selectedAccount?.address ?? null
996
+ },
997
+ true
998
+ ), this.log("\u2705 Connection successful (vNext)", {
999
+ connectorId,
1000
+ selectedAccount: selectedAccount?.address,
1001
+ accountsCount: sessionAccounts.length
1002
+ }), selectedAccount && this.eventEmitter.emit({
1003
+ type: "wallet:connected",
1004
+ wallet: wallet.name,
1005
+ account: selectedAccount.address,
1006
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
1007
+ }), this.walletStorage && (!("isAvailable" in this.walletStorage) || typeof this.walletStorage.isAvailable != "function" || this.walletStorage.isAvailable()) && this.walletStorage.set(wallet.name), this.subscribeToWalletEventsVNext(wallet, connectorId);
1008
+ } catch (e) {
1009
+ if (attemptId !== this.connectAttemptId) throw e;
1010
+ let errorMessage = e instanceof Error ? e.message : String(e), error = e instanceof Error ? e : new Error(errorMessage);
1011
+ throw this.updateWalletStatus({
1012
+ status: "error",
1013
+ error,
1014
+ connectorId,
1015
+ recoverable: this.isRecoverableError(error)
1016
+ }), this.stateManager.updateState(
1017
+ {
1018
+ selectedWallet: null,
1019
+ connected: false,
1020
+ connecting: false,
1021
+ accounts: [],
1022
+ selectedAccount: null
1023
+ },
1024
+ true
1025
+ ), this.eventEmitter.emit({
1026
+ type: "connection:failed",
1027
+ wallet: wallet.name,
1028
+ error: errorMessage,
1029
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
1030
+ }), e;
1031
+ } finally {
1032
+ this.pendingWallet === wallet && (this.pendingWallet = null, this.pendingWalletName = null);
1033
+ }
1034
+ }
1035
+ /**
1036
+ * Create a WalletSession object
1037
+ */
1038
+ createSession(wallet, connectorId, accounts, selectedAccount) {
1039
+ let listeners = /* @__PURE__ */ new Set();
1040
+ return {
1041
+ connectorId,
1042
+ accounts,
1043
+ selectedAccount,
1044
+ onAccountsChanged: (listener) => (listeners.add(listener), () => listeners.delete(listener)),
1045
+ selectAccount: async (address) => {
1046
+ if (accounts.find((a) => a.address === address))
1047
+ return this.selectAccount(address);
1048
+ }
1049
+ };
1050
+ }
840
1051
  /**
841
- * Connect to a wallet
1052
+ * Update wallet status in state
1053
+ */
1054
+ updateWalletStatus(status) {
1055
+ this.stateManager.updateState({ wallet: status });
1056
+ }
1057
+ /**
1058
+ * Subscribe to wallet events (vNext version with improved account change handling)
1059
+ */
1060
+ subscribeToWalletEventsVNext(wallet, connectorId) {
1061
+ this.walletChangeUnsub && (this.walletChangeUnsub(), this.walletChangeUnsub = null), this.stopPollingWalletAccounts();
1062
+ let eventsOn = getEventsFeature(wallet);
1063
+ if (!eventsOn) {
1064
+ this.startPollingWalletAccountsVNext(wallet, connectorId);
1065
+ return;
1066
+ }
1067
+ try {
1068
+ this.walletChangeUnsub = eventsOn("change", (properties) => {
1069
+ let changeAccounts = properties?.accounts ?? [];
1070
+ this.handleAccountsChanged(changeAccounts, connectorId, wallet);
1071
+ });
1072
+ } catch {
1073
+ this.startPollingWalletAccountsVNext(wallet, connectorId);
1074
+ }
1075
+ }
1076
+ /**
1077
+ * Handle accounts changed event with proper validation
1078
+ */
1079
+ handleAccountsChanged(newAccounts, connectorId, wallet) {
1080
+ let state = this.getState();
1081
+ if (newAccounts.length === 0) {
1082
+ this.log("No accounts available, disconnecting..."), this.disconnect();
1083
+ return;
1084
+ }
1085
+ let sessionAccounts = newAccounts.map((a) => ({
1086
+ address: a.address,
1087
+ label: a.label,
1088
+ account: a
1089
+ })), legacyAccounts = sessionAccounts.map((a) => this.toAccountInfo(a.account)), currentSelected = state.selectedAccount, selectedAccount = sessionAccounts.find((a) => a.address === currentSelected);
1090
+ if (selectedAccount || (selectedAccount = sessionAccounts[0], this.eventEmitter.emit({
1091
+ type: "account:changed",
1092
+ account: selectedAccount.address,
1093
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
1094
+ })), state.wallet.status === "connected") {
1095
+ let session = this.createSession(wallet, connectorId, sessionAccounts, selectedAccount);
1096
+ this.updateWalletStatus({
1097
+ status: "connected",
1098
+ session
1099
+ });
1100
+ }
1101
+ this.stateManager.updateState({
1102
+ accounts: legacyAccounts,
1103
+ selectedAccount: selectedAccount.address
1104
+ });
1105
+ }
1106
+ /**
1107
+ * Start polling wallet accounts (vNext version)
1108
+ */
1109
+ startPollingWalletAccountsVNext(wallet, connectorId) {
1110
+ if (this.pollTimer) return;
1111
+ this.pollAttempts = 0;
1112
+ let poll = () => {
1113
+ if (this.pollAttempts >= 20) {
1114
+ this.stopPollingWalletAccounts(), this.log("Stopped wallet polling after max attempts");
1115
+ return;
1116
+ }
1117
+ try {
1118
+ let walletAccounts = wallet.accounts;
1119
+ walletAccounts.length > 0 && (this.handleAccountsChanged(walletAccounts, connectorId, wallet), this.pollAttempts = 0);
1120
+ } catch (error) {
1121
+ this.log("Wallet polling error:", error);
1122
+ }
1123
+ this.pollAttempts++;
1124
+ let intervalIndex = Math.min(this.pollAttempts, POLL_INTERVALS_MS.length - 1), interval = POLL_INTERVALS_MS[intervalIndex];
1125
+ this.pollTimer = setTimeout(poll, interval);
1126
+ };
1127
+ poll();
1128
+ }
1129
+ /**
1130
+ * Check if an error is recoverable
1131
+ */
1132
+ isRecoverableError(error) {
1133
+ let message = error.message.toLowerCase();
1134
+ return message.includes("user rejected") || message.includes("user denied") || message.includes("cancelled") || message.includes("canceled");
1135
+ }
1136
+ // ========================================================================
1137
+ // Legacy Connection Methods (kept for backwards compatibility)
1138
+ // ========================================================================
1139
+ /**
1140
+ * Connect to a wallet (legacy API)
1141
+ * @deprecated Use connectWallet() instead
842
1142
  */
843
1143
  async connect(wallet, walletName) {
844
1144
  if (typeof window > "u") return;
845
1145
  let name = walletName || wallet.name, attemptId = ++this.connectAttemptId;
846
- this.pendingWallet = wallet, this.pendingWalletName = name, this.eventEmitter.emit({
1146
+ this.pendingWallet = wallet, this.pendingWalletName = name;
1147
+ let connectorId = createConnectorId(name);
1148
+ this.eventEmitter.emit({
847
1149
  type: "connecting",
848
1150
  wallet: name,
849
1151
  timestamp: (/* @__PURE__ */ new Date()).toISOString()
1152
+ }), this.updateWalletStatus({
1153
+ status: "connecting",
1154
+ connectorId
850
1155
  }), this.stateManager.updateState({ connecting: true }, true);
851
1156
  try {
852
1157
  let connect = getConnectFeature(wallet);
@@ -856,8 +1161,18 @@ var ConnectionManager = class extends BaseCollaborator {
856
1161
  throw new Error("Connection cancelled");
857
1162
  let walletAccounts = wallet.accounts, accountMap = /* @__PURE__ */ new Map();
858
1163
  for (let a of [...walletAccounts, ...result.accounts]) accountMap.set(a.address, a);
859
- 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;
860
- this.stateManager.updateState(
1164
+ let sessionAccounts = Array.from(accountMap.values()).map((a) => ({
1165
+ address: a.address,
1166
+ label: a.label,
1167
+ account: a
1168
+ }));
1169
+ if (sessionAccounts.length === 0)
1170
+ throw new Error(`Wallet ${name} connected but returned no accounts`);
1171
+ let accounts = sessionAccounts.map((a) => this.toAccountInfo(a.account)), 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, selectedSessionAccount = (selected ? sessionAccounts.find((a) => a.address === selected) : void 0) ?? sessionAccounts[0], session = this.createSession(wallet, connectorId, sessionAccounts, selectedSessionAccount);
1172
+ this.updateWalletStatus({
1173
+ status: "connected",
1174
+ session
1175
+ }), this.stateManager.updateState(
861
1176
  {
862
1177
  selectedWallet: wallet,
863
1178
  connected: true,
@@ -883,7 +1198,7 @@ var ConnectionManager = class extends BaseCollaborator {
883
1198
  } catch (e) {
884
1199
  if (attemptId !== this.connectAttemptId)
885
1200
  throw e;
886
- let errorMessage = e instanceof Error ? e.message : String(e);
1201
+ let errorMessage = e instanceof Error ? e.message : String(e), error = e instanceof Error ? e : new Error(errorMessage);
887
1202
  throw this.eventEmitter.emit({
888
1203
  type: "connection:failed",
889
1204
  wallet: name,
@@ -891,9 +1206,14 @@ var ConnectionManager = class extends BaseCollaborator {
891
1206
  timestamp: (/* @__PURE__ */ new Date()).toISOString()
892
1207
  }), this.eventEmitter.emit({
893
1208
  type: "error",
894
- error: e instanceof Error ? e : new Error(errorMessage),
1209
+ error,
895
1210
  context: "wallet-connection",
896
1211
  timestamp: (/* @__PURE__ */ new Date()).toISOString()
1212
+ }), this.updateWalletStatus({
1213
+ status: "error",
1214
+ error,
1215
+ connectorId,
1216
+ recoverable: this.isRecoverableError(error)
897
1217
  }), this.stateManager.updateState(
898
1218
  {
899
1219
  selectedWallet: null,
@@ -914,7 +1234,7 @@ var ConnectionManager = class extends BaseCollaborator {
914
1234
  async disconnect() {
915
1235
  this.connectAttemptId++, this.walletChangeUnsub && (this.walletChangeUnsub(), this.walletChangeUnsub = null), this.stopPollingWalletAccounts();
916
1236
  let wallet = this.getState().selectedWallet ?? this.pendingWallet;
917
- if (this.pendingWallet = null, this.pendingWalletName = null, this.stateManager.updateState(
1237
+ if (this.pendingWallet = null, this.pendingWalletName = null, this.updateWalletStatus(INITIAL_WALLET_STATUS), this.stateManager.updateState(
918
1238
  {
919
1239
  selectedWallet: null,
920
1240
  connected: false,
@@ -1041,16 +1361,49 @@ var ConnectionManager = class extends BaseCollaborator {
1041
1361
 
1042
1362
  // src/lib/wallet/auto-connector.ts
1043
1363
  var logger4 = createLogger("AutoConnector"), MIN_ADDRESS_LENGTH = 30, AutoConnector = class {
1044
- constructor(walletDetector, connectionManager, stateManager, walletStorage, debug = false) {
1364
+ constructor(walletDetector, connectionManager, stateManager, walletStorage, debug = false, walletStateStorage) {
1045
1365
  __publicField(this, "walletDetector");
1046
1366
  __publicField(this, "connectionManager");
1047
1367
  __publicField(this, "stateManager");
1368
+ /** Legacy wallet name storage */
1048
1369
  __publicField(this, "walletStorage");
1370
+ /** vNext wallet state storage (connector ID + account) */
1371
+ __publicField(this, "walletStateStorage");
1049
1372
  __publicField(this, "debug");
1050
- this.walletDetector = walletDetector, this.connectionManager = connectionManager, this.stateManager = stateManager, this.walletStorage = walletStorage, this.debug = debug;
1373
+ this.walletDetector = walletDetector, this.connectionManager = connectionManager, this.stateManager = stateManager, this.walletStorage = walletStorage, this.walletStateStorage = walletStateStorage, this.debug = debug;
1051
1374
  }
1052
1375
  async attemptAutoConnect() {
1053
- return await this.attemptInstantConnect() ? true : (await this.attemptStandardConnect(), this.stateManager.getSnapshot().connected);
1376
+ return this.walletStateStorage && await this.attemptVNextAutoConnect() || await this.attemptInstantConnect() ? true : (await this.attemptStandardConnect(), this.stateManager.getSnapshot().connected);
1377
+ }
1378
+ /**
1379
+ * vNext auto-connect using stored connector ID with silent-first approach.
1380
+ * This won't prompt the user unless they explicitly initiated the connect.
1381
+ */
1382
+ async attemptVNextAutoConnect() {
1383
+ let walletState = this.walletStateStorage?.get();
1384
+ if (!walletState || !walletState.autoConnect)
1385
+ return this.debug && logger4.debug("vNext auto-connect: No stored wallet state or autoConnect disabled"), false;
1386
+ let { connectorId, lastAccount } = walletState;
1387
+ await ready;
1388
+ let wallet = this.walletDetector.getConnectorById(connectorId);
1389
+ if (!wallet)
1390
+ return this.debug && logger4.debug("vNext auto-connect: Connector not found", { connectorId }), false;
1391
+ try {
1392
+ return this.debug && logger4.info("vNext auto-connect: Attempting silent connect", {
1393
+ connectorId,
1394
+ lastAccount
1395
+ }), await this.connectionManager.connectWallet(wallet, connectorId, {
1396
+ silent: true,
1397
+ allowInteractiveFallback: false,
1398
+ // Don't prompt on auto-connect
1399
+ preferredAccount: lastAccount
1400
+ }), this.debug && logger4.info("vNext auto-connect: Silent connect successful", { connectorId }), true;
1401
+ } catch (error) {
1402
+ return this.debug && logger4.debug("vNext auto-connect: Silent connect failed (expected for first-time or revoked)", {
1403
+ connectorId,
1404
+ error: error instanceof Error ? error.message : error
1405
+ }), false;
1406
+ }
1054
1407
  }
1055
1408
  async attemptInstantConnect() {
1056
1409
  let storedWalletName = this.walletStorage?.get();
@@ -1371,6 +1724,10 @@ var logger5 = createLogger("ConnectorClient"), ConnectorClient = class {
1371
1724
  __publicField(this, "walletConnectRegistration", null);
1372
1725
  this.config = config;
1373
1726
  let initialState = {
1727
+ // vNext wallet status
1728
+ wallet: INITIAL_WALLET_STATUS,
1729
+ connectors: [],
1730
+ // Legacy fields (for backwards compatibility)
1374
1731
  wallets: [],
1375
1732
  selectedWallet: null,
1376
1733
  connected: false,
@@ -1429,17 +1786,55 @@ var logger5 = createLogger("ConnectorClient"), ConnectorClient = class {
1429
1786
  async initializeWalletConnect() {
1430
1787
  if (this.config.walletConnect?.enabled)
1431
1788
  try {
1432
- let { registerWalletConnectWallet } = await import('./walletconnect-I3PZUBTA.mjs');
1789
+ let { registerWalletConnectWallet } = await import('./walletconnect-U455PO4I.mjs');
1433
1790
  this.walletConnectRegistration = await registerWalletConnectWallet(this.config.walletConnect), this.config.debug && logger5.info("WalletConnect wallet registered successfully");
1434
1791
  } catch (error) {
1435
1792
  this.config.debug && logger5.error("Failed to register WalletConnect wallet", { error });
1436
1793
  }
1437
1794
  }
1795
+ // ========================================================================
1796
+ // vNext Wallet Actions (connector-id based)
1797
+ // ========================================================================
1798
+ /**
1799
+ * Connect to a wallet using its stable connector ID.
1800
+ * This is the recommended way to connect in vNext.
1801
+ *
1802
+ * @param connectorId - Stable connector identifier
1803
+ * @param options - Connection options (silent mode, preferred account, etc.)
1804
+ */
1805
+ async connectWallet(connectorId, options) {
1806
+ let connector = this.walletDetector.getConnectorById(connectorId);
1807
+ if (!connector)
1808
+ throw new Error(`Connector ${connectorId} not found`);
1809
+ await this.connectionManager.connectWallet(connector, connectorId, options);
1810
+ }
1811
+ /**
1812
+ * Disconnect the current wallet session.
1813
+ * This is the vNext equivalent of disconnect().
1814
+ */
1815
+ async disconnectWallet() {
1816
+ await this.connectionManager.disconnect();
1817
+ }
1818
+ /**
1819
+ * Get a connector by its ID (for advanced use cases).
1820
+ */
1821
+ getConnector(connectorId) {
1822
+ return this.walletDetector.getConnectorById(connectorId);
1823
+ }
1824
+ // ========================================================================
1825
+ // Legacy Actions (kept for backwards compatibility)
1826
+ // ========================================================================
1827
+ /**
1828
+ * @deprecated Use `connectWallet(connectorId)` instead.
1829
+ */
1438
1830
  async select(walletName) {
1439
1831
  let wallet = this.stateManager.getSnapshot().wallets.find((w) => w.wallet.name === walletName)?.wallet;
1440
1832
  if (!wallet) throw new Error(`Wallet ${walletName} not found`);
1441
1833
  await this.connectionManager.connect(wallet, walletName);
1442
1834
  }
1835
+ /**
1836
+ * @deprecated Use `disconnectWallet()` instead.
1837
+ */
1443
1838
  async disconnect() {
1444
1839
  await this.connectionManager.disconnect();
1445
1840
  }
@@ -1537,284 +1932,13 @@ var logger5 = createLogger("ConnectorClient"), ConnectorClient = class {
1537
1932
  }), this.walletDetector.destroy(), this.eventEmitter.offAll(), this.stateManager.clear();
1538
1933
  }
1539
1934
  };
1540
- var logger6 = 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 {
1541
- static log(error, errorInfo, context) {
1542
- if (process.env.NODE_ENV === "development" && logger6.error(error.message, {
1543
- error,
1544
- errorInfo,
1545
- context
1546
- }), process.env.NODE_ENV === "production" && typeof window < "u")
1547
- try {
1548
- let gtag = window.gtag;
1549
- typeof gtag == "function" && gtag("event", "exception", {
1550
- description: error.message,
1551
- fatal: false,
1552
- custom_map: { error_type: "wallet_error", ...context }
1553
- });
1554
- } catch {
1555
- }
1556
- }
1557
- };
1558
- function classifyError(error) {
1559
- if (isConnectorError(error))
1560
- return {
1561
- ...error,
1562
- type: {
1563
- WALLET_NOT_CONNECTED: "CONNECTION_FAILED" /* CONNECTION_FAILED */,
1564
- WALLET_NOT_FOUND: "WALLET_NOT_FOUND" /* WALLET_NOT_FOUND */,
1565
- CONNECTION_FAILED: "CONNECTION_FAILED" /* CONNECTION_FAILED */,
1566
- USER_REJECTED: "USER_REJECTED" /* USER_REJECTED */,
1567
- RPC_ERROR: "NETWORK_ERROR" /* NETWORK_ERROR */,
1568
- NETWORK_TIMEOUT: "NETWORK_ERROR" /* NETWORK_ERROR */,
1569
- SIGNING_FAILED: "TRANSACTION_FAILED" /* TRANSACTION_FAILED */,
1570
- SEND_FAILED: "TRANSACTION_FAILED" /* TRANSACTION_FAILED */
1571
- }[error.code] || "UNKNOWN_ERROR" /* UNKNOWN_ERROR */,
1572
- recoverable: error.recoverable,
1573
- context: error.context
1574
- };
1575
- let walletError = error;
1576
- if (walletError.type) return walletError;
1577
- let type = "UNKNOWN_ERROR" /* UNKNOWN_ERROR */, recoverable = false;
1578
- return error.message.includes("User rejected") || error.message.includes("User denied") ? (type = "USER_REJECTED" /* USER_REJECTED */, recoverable = true) : error.message.includes("Insufficient funds") ? (type = "INSUFFICIENT_FUNDS" /* INSUFFICIENT_FUNDS */, recoverable = false) : error.message.includes("Network") || error.message.includes("fetch") ? (type = "NETWORK_ERROR" /* NETWORK_ERROR */, recoverable = true) : error.message.includes("Wallet not found") || error.message.includes("not installed") ? (type = "WALLET_NOT_FOUND" /* WALLET_NOT_FOUND */, recoverable = true) : (error.message.includes("Failed to connect") || error.message.includes("Connection")) && (type = "CONNECTION_FAILED" /* CONNECTION_FAILED */, recoverable = true), {
1579
- ...error,
1580
- type,
1581
- recoverable,
1582
- context: { originalMessage: error.message }
1583
- };
1584
- }
1585
- var ConnectorErrorBoundary = class extends Component {
1586
- constructor(props) {
1587
- super(props);
1588
- __publicField(this, "retryTimeouts", /* @__PURE__ */ new Set());
1589
- __publicField(this, "retry", () => {
1590
- let { maxRetries = 3 } = this.props;
1591
- this.state.retryCount >= maxRetries || this.setState((prevState) => ({
1592
- hasError: false,
1593
- error: null,
1594
- errorInfo: null,
1595
- retryCount: prevState.retryCount + 1
1596
- }));
1597
- });
1598
- this.state = {
1599
- hasError: false,
1600
- error: null,
1601
- errorInfo: null,
1602
- errorId: "",
1603
- retryCount: 0
1604
- };
1605
- }
1606
- static getDerivedStateFromError(error) {
1607
- return {
1608
- hasError: true,
1609
- error,
1610
- errorId: `error_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`
1611
- };
1612
- }
1613
- componentDidCatch(error, errorInfo) {
1614
- this.setState({ errorInfo }), ErrorLogger.log(error, errorInfo, {
1615
- retryCount: this.state.retryCount,
1616
- errorId: this.state.errorId,
1617
- timestamp: (/* @__PURE__ */ new Date()).toISOString()
1618
- }), this.props.onError?.(error, errorInfo);
1619
- }
1620
- componentWillUnmount() {
1621
- this.retryTimeouts.forEach((timeout) => clearTimeout(timeout));
1622
- }
1623
- render() {
1624
- if (this.state.hasError && this.state.error) {
1625
- let walletError = classifyError(this.state.error);
1626
- return this.props.fallback ? this.props.fallback(walletError, this.retry) : /* @__PURE__ */ jsx(DefaultErrorFallback, { error: walletError, onRetry: this.retry });
1627
- }
1628
- return this.props.children;
1629
- }
1630
- };
1631
- function DefaultErrorFallback({ error, onRetry }) {
1632
- let [isPending, startTransition] = useTransition(), [isRetrying, setIsRetrying] = useState(false), handleRetry = useCallback(() => {
1633
- setIsRetrying(true), startTransition(() => {
1634
- setTimeout(() => {
1635
- onRetry(), setIsRetrying(false);
1636
- }, 500);
1637
- });
1638
- }, [onRetry]), { title, message, actionText, showRetry } = useMemo(() => {
1639
- switch (error.type) {
1640
- case "USER_REJECTED" /* USER_REJECTED */:
1641
- return {
1642
- title: "Transaction Cancelled",
1643
- message: "You cancelled the transaction. No problem!",
1644
- actionText: "Try Again",
1645
- showRetry: true
1646
- };
1647
- case "WALLET_NOT_FOUND" /* WALLET_NOT_FOUND */:
1648
- return {
1649
- title: "Wallet Not Found",
1650
- message: "Please install a supported Solana wallet to continue.",
1651
- actionText: "Check Wallets",
1652
- showRetry: true
1653
- };
1654
- case "NETWORK_ERROR" /* NETWORK_ERROR */:
1655
- return {
1656
- title: "Network Error",
1657
- message: "Having trouble connecting. Please check your internet connection.",
1658
- actionText: "Retry",
1659
- showRetry: true
1660
- };
1661
- case "INSUFFICIENT_FUNDS" /* INSUFFICIENT_FUNDS */:
1662
- return {
1663
- title: "Insufficient Funds",
1664
- message: "You don't have enough SOL for this transaction.",
1665
- actionText: "Add Funds",
1666
- showRetry: false
1667
- };
1668
- default:
1669
- return {
1670
- title: "Something went wrong",
1671
- message: "An unexpected error occurred. Please try again.",
1672
- actionText: "Retry",
1673
- showRetry: error.recoverable
1674
- };
1675
- }
1676
- }, [error.type, error.recoverable]);
1677
- return /* @__PURE__ */ jsxs(
1678
- "div",
1679
- {
1680
- style: {
1681
- display: "flex",
1682
- flexDirection: "column",
1683
- alignItems: "center",
1684
- justifyContent: "center",
1685
- padding: "2rem",
1686
- textAlign: "center",
1687
- borderRadius: "12px",
1688
- border: "1px solid #e5e7eb",
1689
- backgroundColor: "#fafafa",
1690
- maxWidth: "400px",
1691
- margin: "0 auto"
1692
- },
1693
- children: [
1694
- /* @__PURE__ */ jsx(
1695
- "div",
1696
- {
1697
- style: {
1698
- width: "48px",
1699
- height: "48px",
1700
- borderRadius: "50%",
1701
- backgroundColor: "#fee2e2",
1702
- display: "flex",
1703
- alignItems: "center",
1704
- justifyContent: "center",
1705
- marginBottom: "1rem"
1706
- },
1707
- children: /* @__PURE__ */ jsx("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "#dc2626", children: /* @__PURE__ */ jsx("path", { d: "M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.007v.008H12v-.008z" }) })
1708
- }
1709
- ),
1710
- /* @__PURE__ */ jsx(
1711
- "h3",
1712
- {
1713
- style: {
1714
- margin: "0 0 0.5rem 0",
1715
- fontSize: "1.125rem",
1716
- fontWeight: "600",
1717
- color: "#111827"
1718
- },
1719
- children: title
1720
- }
1721
- ),
1722
- /* @__PURE__ */ jsx(
1723
- "p",
1724
- {
1725
- style: {
1726
- margin: "0 0 1.5rem 0",
1727
- fontSize: "0.875rem",
1728
- color: "#6b7280",
1729
- lineHeight: "1.5"
1730
- },
1731
- children: message
1732
- }
1733
- ),
1734
- /* @__PURE__ */ jsxs("div", { style: { display: "flex", gap: "0.75rem", flexWrap: "wrap" }, children: [
1735
- showRetry && /* @__PURE__ */ jsx(
1736
- "button",
1737
- {
1738
- onClick: handleRetry,
1739
- disabled: isPending || isRetrying,
1740
- style: {
1741
- padding: "0.5rem 1rem",
1742
- backgroundColor: "#3b82f6",
1743
- color: "white",
1744
- border: "none",
1745
- borderRadius: "6px",
1746
- fontSize: "0.875rem",
1747
- fontWeight: "500",
1748
- cursor: isPending || isRetrying ? "wait" : "pointer",
1749
- opacity: isPending || isRetrying ? 0.7 : 1,
1750
- transition: "all 0.2s"
1751
- },
1752
- children: isRetrying ? "Retrying..." : actionText
1753
- }
1754
- ),
1755
- /* @__PURE__ */ jsx(
1756
- "button",
1757
- {
1758
- onClick: () => window.location.reload(),
1759
- style: {
1760
- padding: "0.5rem 1rem",
1761
- backgroundColor: "transparent",
1762
- color: "#6b7280",
1763
- border: "1px solid #d1d5db",
1764
- borderRadius: "6px",
1765
- fontSize: "0.875rem",
1766
- fontWeight: "500",
1767
- cursor: "pointer",
1768
- transition: "all 0.2s"
1769
- },
1770
- children: "Refresh Page"
1771
- }
1772
- )
1773
- ] }),
1774
- process.env.NODE_ENV === "development" && /* @__PURE__ */ jsxs(
1775
- "details",
1776
- {
1777
- style: {
1778
- marginTop: "1rem",
1779
- fontSize: "0.75rem",
1780
- color: "#6b7280",
1781
- width: "100%"
1782
- },
1783
- children: [
1784
- /* @__PURE__ */ jsx("summary", { style: { cursor: "pointer", marginBottom: "0.5rem" }, children: "Error Details" }),
1785
- /* @__PURE__ */ jsx(
1786
- "pre",
1787
- {
1788
- style: {
1789
- whiteSpace: "pre-wrap",
1790
- wordBreak: "break-all",
1791
- backgroundColor: "#f3f4f6",
1792
- padding: "0.5rem",
1793
- borderRadius: "4px",
1794
- overflow: "auto",
1795
- maxHeight: "200px"
1796
- },
1797
- children: error.message
1798
- }
1799
- )
1800
- ]
1801
- }
1802
- )
1803
- ]
1804
- }
1805
- );
1806
- }
1807
- function withErrorBoundary(Component2, errorBoundaryProps) {
1808
- let WrappedComponent = (props) => /* @__PURE__ */ jsx(ConnectorErrorBoundary, { ...errorBoundaryProps, children: /* @__PURE__ */ jsx(Component2, { ...props }) });
1809
- return WrappedComponent.displayName = `withErrorBoundary(${Component2.displayName || Component2.name})`, WrappedComponent;
1810
- }
1811
- var logger7 = createLogger("Polyfills"), installed = false;
1935
+ var logger6 = createLogger("Polyfills"), installed = false;
1812
1936
  function installPolyfills() {
1813
1937
  if (!(installed || typeof window > "u"))
1814
1938
  try {
1815
- install(), installed = true, logger7.info("Browser compatibility polyfills installed");
1939
+ install(), installed = true, logger6.info("Browser compatibility polyfills installed");
1816
1940
  } catch (error) {
1817
- logger7 && logger7.warn("Failed to install polyfills", { error }), installed = true;
1941
+ logger6 && logger6.warn("Failed to install polyfills", { error }), installed = true;
1818
1942
  }
1819
1943
  }
1820
1944
  function isPolyfillInstalled() {
@@ -1835,7 +1959,7 @@ function getPolyfillStatus() {
1835
1959
  environment: typeof window < "u" ? "browser" : "server"
1836
1960
  };
1837
1961
  }
1838
- var logger8 = createLogger("EnhancedStorage"), STORAGE_VERSION = "v1", EnhancedStorage = class extends Storage {
1962
+ var logger7 = createLogger("EnhancedStorage"), STORAGE_VERSION = "v1", EnhancedStorage = class extends Storage {
1839
1963
  constructor(key, initial, options) {
1840
1964
  super(key, initial);
1841
1965
  this.options = options;
@@ -1846,7 +1970,7 @@ var logger8 = createLogger("EnhancedStorage"), STORAGE_VERSION = "v1", EnhancedS
1846
1970
  }
1847
1971
  set(value) {
1848
1972
  try {
1849
- return this.validate(value) ? (super.set(value), this.memoryFallback = value, true) : (logger8.warn("Validation failed", { key: this.key }), false);
1973
+ return this.validate(value) ? (super.set(value), this.memoryFallback = value, true) : (logger7.warn("Validation failed", { key: this.key }), false);
1850
1974
  } catch (error) {
1851
1975
  return this.handleError(error), this.options?.useMemoryFallback ? (this.memoryFallback = value, true) : false;
1852
1976
  }
@@ -1903,11 +2027,11 @@ var logger8 = createLogger("EnhancedStorage"), STORAGE_VERSION = "v1", EnhancedS
1903
2027
  }
1904
2028
  }
1905
2029
  handleError(error) {
1906
- logger8.error("Storage error", { key: this.key, error }), this.errorHandlers.forEach((handler) => {
2030
+ logger7.error("Storage error", { key: this.key, error }), this.errorHandlers.forEach((handler) => {
1907
2031
  try {
1908
2032
  handler(error);
1909
2033
  } catch (err) {
1910
- logger8.error("Error in error handler", { error: err });
2034
+ logger7.error("Error in error handler", { error: err });
1911
2035
  }
1912
2036
  });
1913
2037
  }
@@ -1935,6 +2059,53 @@ function createEnhancedStorageWallet(options) {
1935
2059
  useMemoryFallback: true
1936
2060
  });
1937
2061
  }
2062
+ var WALLET_STATE_VERSION = 1;
2063
+ function createEnhancedStorageWalletState(options) {
2064
+ let key = options?.key ?? `connector-kit:${STORAGE_VERSION}:wallet-state`, legacyKey = `connector-kit:${STORAGE_VERSION}:wallet`, storage = new EnhancedStorage(key, options?.initial ?? null, {
2065
+ onError: options?.onError,
2066
+ useMemoryFallback: true
2067
+ });
2068
+ if (typeof window < "u" && storage.isAvailable())
2069
+ try {
2070
+ if (!storage.get()) {
2071
+ let legacyValue = window.localStorage.getItem(legacyKey);
2072
+ if (legacyValue) {
2073
+ let legacyWalletName = JSON.parse(legacyValue);
2074
+ if (legacyWalletName && typeof legacyWalletName == "string") {
2075
+ let connectorId = options?.migrateLegacy ? options.migrateLegacy(legacyWalletName) : createConnectorId(legacyWalletName);
2076
+ if (connectorId) {
2077
+ let migratedState = {
2078
+ version: WALLET_STATE_VERSION,
2079
+ connectorId,
2080
+ autoConnect: true,
2081
+ lastConnected: (/* @__PURE__ */ new Date()).toISOString()
2082
+ };
2083
+ storage.set(migratedState), logger7.info("Migrated legacy wallet storage", {
2084
+ from: legacyWalletName,
2085
+ to: connectorId
2086
+ }), window.localStorage.removeItem(legacyKey);
2087
+ }
2088
+ }
2089
+ }
2090
+ }
2091
+ } catch (error) {
2092
+ logger7.warn("Failed to migrate legacy wallet storage", { error });
2093
+ }
2094
+ return storage;
2095
+ }
2096
+ function saveWalletState(storage, connectorId, account, autoConnect = true) {
2097
+ let state = {
2098
+ version: WALLET_STATE_VERSION,
2099
+ connectorId,
2100
+ lastAccount: account,
2101
+ autoConnect,
2102
+ lastConnected: (/* @__PURE__ */ new Date()).toISOString()
2103
+ };
2104
+ storage.set(state);
2105
+ }
2106
+ function clearWalletState(storage) {
2107
+ storage.set(null);
2108
+ }
1938
2109
  var EnhancedStorageAdapter = class {
1939
2110
  constructor(storage) {
1940
2111
  this.storage = storage;
@@ -1970,7 +2141,7 @@ var EnhancedStorageAdapter = class {
1970
2141
  return this.storage.onError(handler), this;
1971
2142
  }
1972
2143
  };
1973
- var logger9 = createLogger("DefaultConfig");
2144
+ var logger8 = createLogger("DefaultConfig");
1974
2145
  function getDefaultConfig(options) {
1975
2146
  let {
1976
2147
  appName,
@@ -2000,7 +2171,7 @@ function getDefaultConfig(options) {
2000
2171
  ], validClusterIds = defaultClusters.map((c) => c.id), accountStorage = createEnhancedStorageAccount({
2001
2172
  validator: (address) => address ? isAddress(address) : true,
2002
2173
  onError: (error) => {
2003
- debug && logger9.error("Account Storage error", { error }), onError && onError(error, {
2174
+ debug && logger8.error("Account Storage error", { error }), onError && onError(error, {
2004
2175
  componentStack: "account-storage"
2005
2176
  });
2006
2177
  }
@@ -2009,13 +2180,13 @@ function getDefaultConfig(options) {
2009
2180
  initial: getInitialCluster(network),
2010
2181
  validClusters: persistClusterSelection ? validClusterIds : void 0,
2011
2182
  onError: (error) => {
2012
- debug && logger9.error("Cluster Storage error", { error }), onError && onError(error, {
2183
+ debug && logger8.error("Cluster Storage error", { error }), onError && onError(error, {
2013
2184
  componentStack: "cluster-storage"
2014
2185
  });
2015
2186
  }
2016
2187
  }), walletStorage = createEnhancedStorageWallet({
2017
2188
  onError: (error) => {
2018
- debug && logger9.error("Wallet Storage error", { error }), onError && onError(error, {
2189
+ debug && logger8.error("Wallet Storage error", { error }), onError && onError(error, {
2019
2190
  componentStack: "wallet-storage"
2020
2191
  });
2021
2192
  }
@@ -2057,7 +2228,9 @@ function buildWalletConnectConfig(walletConnect, appName, appUrl, clusterStorage
2057
2228
  if (!walletConnect) return;
2058
2229
  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;
2059
2230
  if (!projectId) {
2060
- (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.");
2231
+ (typeof walletConnect == "object" || walletConnect === true) && logger8.warn(
2232
+ "WalletConnect enabled but no project ID found. Set NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID or provide projectId in config."
2233
+ );
2061
2234
  return;
2062
2235
  }
2063
2236
  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;
@@ -2395,7 +2568,7 @@ async function copySignatureToClipboard(signature, options) {
2395
2568
  }
2396
2569
 
2397
2570
  // src/lib/transaction/transaction-validator.ts
2398
- var logger10 = createLogger("TransactionValidator"), MAX_TRANSACTION_SIZE = 1232, MIN_TRANSACTION_SIZE = 64, TransactionValidator = class {
2571
+ var logger9 = createLogger("TransactionValidator"), MAX_TRANSACTION_SIZE = 1232, MIN_TRANSACTION_SIZE = 64, TransactionValidator = class {
2399
2572
  /**
2400
2573
  * Validate a transaction before signing
2401
2574
  *
@@ -2418,7 +2591,7 @@ var logger10 = createLogger("TransactionValidator"), MAX_TRANSACTION_SIZE = 1232
2418
2591
  try {
2419
2592
  serialized = transaction.serialize();
2420
2593
  } catch (serializeError) {
2421
- logger10.debug("Transaction not yet serializable (may need signing)", {
2594
+ logger9.debug("Transaction not yet serializable (may need signing)", {
2422
2595
  error: serializeError instanceof Error ? serializeError.message : String(serializeError)
2423
2596
  });
2424
2597
  }
@@ -2428,10 +2601,10 @@ var logger10 = createLogger("TransactionValidator"), MAX_TRANSACTION_SIZE = 1232
2428
2601
  return errors.push(
2429
2602
  "Transaction type not recognized - must be a Transaction object with serialize() or Uint8Array"
2430
2603
  ), { valid: false, errors, warnings };
2431
- 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"));
2604
+ serialized && (size = serialized.length, size > maxSize && (errors.push(`Transaction too large: ${size} bytes (max ${maxSize} bytes)`), logger9.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"));
2432
2605
  } catch (error) {
2433
2606
  let errorMessage = error instanceof Error ? error.message : String(error);
2434
- errors.push(`Transaction validation failed: ${errorMessage}`), logger10.error("Validation error", { error: errorMessage });
2607
+ errors.push(`Transaction validation failed: ${errorMessage}`), logger9.error("Validation error", { error: errorMessage });
2435
2608
  }
2436
2609
  if (checkDuplicateSignatures && typeof transaction == "object" && "signatures" in transaction) {
2437
2610
  let signatures = transaction.signatures;
@@ -2444,7 +2617,7 @@ var logger10 = createLogger("TransactionValidator"), MAX_TRANSACTION_SIZE = 1232
2444
2617
  }
2445
2618
  strict && warnings.length > 0 && (errors.push(...warnings.map((w) => `Strict mode: ${w}`)), warnings.length = 0);
2446
2619
  let valid = errors.length === 0;
2447
- 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 }), {
2620
+ return valid ? warnings.length > 0 ? logger9.debug("Transaction validation passed with warnings", { warnings, size }) : logger9.debug("Transaction validation passed", { size }) : logger9.warn("Transaction validation failed", { errors, size }), {
2448
2621
  valid,
2449
2622
  errors,
2450
2623
  warnings,
@@ -2484,7 +2657,7 @@ var logger10 = createLogger("TransactionValidator"), MAX_TRANSACTION_SIZE = 1232
2484
2657
  let result = this.validate(transaction, options);
2485
2658
  if (!result.valid)
2486
2659
  throw new Error(`Transaction validation failed: ${result.errors.join(", ")}`);
2487
- result.warnings.length > 0 && logger10.warn("Transaction validation warnings", { warnings: result.warnings });
2660
+ result.warnings.length > 0 && logger9.warn("Transaction validation warnings", { warnings: result.warnings });
2488
2661
  }
2489
2662
  /**
2490
2663
  * Batch validate multiple transactions
@@ -2495,10 +2668,10 @@ var logger10 = createLogger("TransactionValidator"), MAX_TRANSACTION_SIZE = 1232
2495
2668
  * @returns Array of validation results
2496
2669
  */
2497
2670
  static validateBatch(transactions, options) {
2498
- return transactions.map((tx, index) => (logger10.debug(`Validating transaction ${index + 1}/${transactions.length}`), this.validate(tx, options)));
2671
+ return transactions.map((tx, index) => (logger9.debug(`Validating transaction ${index + 1}/${transactions.length}`), this.validate(tx, options)));
2499
2672
  }
2500
2673
  };
2501
- var logger11 = createLogger("TransactionSigner");
2674
+ var logger10 = createLogger("TransactionSigner");
2502
2675
  function signatureBytesToBase58(bytes) {
2503
2676
  if (bytes.length !== 64)
2504
2677
  throw new Error(`Invalid signature length: expected 64 bytes, got ${bytes.length}`);
@@ -2520,6 +2693,24 @@ function extractSignatureString(result) {
2520
2693
  }
2521
2694
  throw new Error("Unexpected wallet response format for signAndSendTransaction");
2522
2695
  }
2696
+ function extractSignatureBytes(result) {
2697
+ if (result instanceof Uint8Array)
2698
+ return result;
2699
+ if (Array.isArray(result)) {
2700
+ let [first] = result;
2701
+ if (!first)
2702
+ throw new Error("Wallet returned empty results array");
2703
+ return extractSignatureBytes(first);
2704
+ }
2705
+ if (result && typeof result == "object") {
2706
+ let record = result;
2707
+ if ("signature" in record)
2708
+ return extractSignatureBytes(record.signature);
2709
+ if (Array.isArray(record.signatures) && record.signatures.length > 0)
2710
+ return extractSignatureBytes(record.signatures[0]);
2711
+ }
2712
+ throw new Error("Unexpected wallet response format for signMessage");
2713
+ }
2523
2714
  function createTransactionSigner(config) {
2524
2715
  let { wallet, account, cluster, eventEmitter } = config;
2525
2716
  if (!wallet || !account)
@@ -2536,11 +2727,11 @@ function createTransactionSigner(config) {
2536
2727
  throw Errors.featureNotSupported("transaction signing");
2537
2728
  let validation = TransactionValidator.validate(transaction);
2538
2729
  if (!validation.valid)
2539
- throw logger11.error("Transaction validation failed", { errors: validation.errors }), Errors.invalidTransaction(validation.errors.join(", "));
2540
- validation.warnings.length > 0 && logger11.warn("Transaction validation warnings", { warnings: validation.warnings });
2730
+ throw logger10.error("Transaction validation failed", { errors: validation.errors }), Errors.invalidTransaction(validation.errors.join(", "));
2731
+ validation.warnings.length > 0 && logger10.warn("Transaction validation warnings", { warnings: validation.warnings });
2541
2732
  try {
2542
2733
  let signFeature = features["solana:signTransaction"], { serialized, wasWeb3js } = prepareTransactionForWallet(transaction);
2543
- logger11.debug("Signing transaction", {
2734
+ logger10.debug("Signing transaction", {
2544
2735
  wasWeb3js,
2545
2736
  serializedLength: serialized.length,
2546
2737
  serializedType: serialized.constructor.name,
@@ -2549,26 +2740,26 @@ function createTransactionSigner(config) {
2549
2740
  });
2550
2741
  let result, usedFormat = "";
2551
2742
  try {
2552
- logger11.debug("Trying array format: transactions: [Uint8Array]"), result = await signFeature.signTransaction({
2743
+ logger10.debug("Trying array format: transactions: [Uint8Array]"), result = await signFeature.signTransaction({
2553
2744
  account,
2554
2745
  transactions: [serialized],
2555
2746
  ...cluster ? { chain: cluster.id } : {}
2556
2747
  }), usedFormat = "array";
2557
2748
  } catch (err1) {
2558
2749
  let error1 = err1 instanceof Error ? err1 : new Error(String(err1));
2559
- logger11.debug("Array format failed, trying singular format", { error: error1.message });
2750
+ logger10.debug("Array format failed, trying singular format", { error: error1.message });
2560
2751
  try {
2561
- logger11.debug("Trying singular format: transaction: Uint8Array"), result = await signFeature.signTransaction({
2752
+ logger10.debug("Trying singular format: transaction: Uint8Array"), result = await signFeature.signTransaction({
2562
2753
  account,
2563
2754
  transaction: serialized,
2564
2755
  ...cluster ? { chain: cluster.id } : {}
2565
2756
  }), usedFormat = "singular";
2566
2757
  } catch (err2) {
2567
2758
  let error2 = err2 instanceof Error ? err2 : new Error(String(err2));
2568
- throw logger11.error("Both array and singular formats failed", { error: error2.message }), error2;
2759
+ throw logger10.error("Both array and singular formats failed", { error: error2.message }), error2;
2569
2760
  }
2570
2761
  }
2571
- logger11.debug("Wallet signed successfully", { format: usedFormat });
2762
+ logger10.debug("Wallet signed successfully", { format: usedFormat });
2572
2763
  let signedTx;
2573
2764
  if (Array.isArray(result.signedTransactions) && result.signedTransactions[0])
2574
2765
  signedTx = result.signedTransactions[0];
@@ -2580,23 +2771,23 @@ function createTransactionSigner(config) {
2580
2771
  signedTx = result;
2581
2772
  else
2582
2773
  throw new Error(`Unexpected wallet response format: ${JSON.stringify(Object.keys(result))}`);
2583
- if (logger11.debug("Extracted signed transaction", {
2774
+ if (logger10.debug("Extracted signed transaction", {
2584
2775
  hasSignedTx: !!signedTx,
2585
2776
  signedTxType: signedTx?.constructor?.name,
2586
2777
  signedTxLength: signedTx?.length,
2587
2778
  isUint8Array: signedTx instanceof Uint8Array,
2588
2779
  hasSerialize: typeof signedTx?.serialize == "function"
2589
2780
  }), signedTx && typeof signedTx.serialize == "function")
2590
- return logger11.debug("Wallet returned web3.js object directly, no conversion needed"), signedTx;
2781
+ return logger10.debug("Wallet returned web3.js object directly, no conversion needed"), signedTx;
2591
2782
  if (signedTx && signedTx.signedTransaction) {
2592
- logger11.debug("Found signedTransaction property");
2783
+ logger10.debug("Found signedTransaction property");
2593
2784
  let bytes = signedTx.signedTransaction;
2594
2785
  if (bytes instanceof Uint8Array)
2595
2786
  return await convertSignedTransaction(bytes, wasWeb3js);
2596
2787
  }
2597
2788
  if (signedTx instanceof Uint8Array)
2598
2789
  return await convertSignedTransaction(signedTx, wasWeb3js);
2599
- throw logger11.error("Unexpected wallet response format", {
2790
+ throw logger10.error("Unexpected wallet response format", {
2600
2791
  type: typeof signedTx,
2601
2792
  constructor: signedTx?.constructor?.name
2602
2793
  }), new ValidationError(
@@ -2718,11 +2909,12 @@ function createTransactionSigner(config) {
2718
2909
  ...capabilities.canSignMessage && {
2719
2910
  async signMessage(message) {
2720
2911
  try {
2721
- return (await features["solana:signMessage"].signMessage({
2912
+ let result = await features["solana:signMessage"].signMessage({
2722
2913
  account,
2723
2914
  message,
2724
2915
  ...cluster ? { chain: cluster.id } : {}
2725
- })).signature;
2916
+ });
2917
+ return extractSignatureBytes(result);
2726
2918
  } catch (error) {
2727
2919
  throw new TransactionError("SIGNING_FAILED", "Failed to sign message", void 0, error);
2728
2920
  }
@@ -2743,7 +2935,7 @@ var TransactionSignerError = class extends TransactionError {
2743
2935
  function isTransactionSignerError(error) {
2744
2936
  return error instanceof TransactionSignerError || error instanceof TransactionError;
2745
2937
  }
2746
- var logger12 = createLogger("KitTransactionSigner");
2938
+ var logger11 = createLogger("KitTransactionSigner");
2747
2939
  function encodeShortVecLength(value) {
2748
2940
  let bytes = [], remaining = value;
2749
2941
  for (; remaining >= 128; )
@@ -2818,7 +3010,7 @@ function createKitTransactionSigner(connectorSigner) {
2818
3010
  async modifyAndSignTransactions(transactions) {
2819
3011
  let transactionData = transactions.map((tx) => {
2820
3012
  let messageBytes = new Uint8Array(tx.messageBytes), { numSigners } = parseMessageSigners(messageBytes), wireFormat = createTransactionBytesForSigning(messageBytes, numSigners);
2821
- return logger12.debug("Preparing wire format for wallet", {
3013
+ return logger11.debug("Preparing wire format for wallet", {
2822
3014
  signerAddress,
2823
3015
  messageBytesLength: messageBytes.length,
2824
3016
  wireFormatLength: wireFormat.length,
@@ -2847,14 +3039,14 @@ function createKitTransactionSigner(connectorSigner) {
2847
3039
  throw new Error("Web3.js transaction without serialize method");
2848
3040
  } else
2849
3041
  throw new Error("Unknown signed transaction format");
2850
- if (logger12.debug("Wallet returned signed transaction", {
3042
+ if (logger11.debug("Wallet returned signed transaction", {
2851
3043
  returnedLength: signedTxBytes.length,
2852
3044
  sentLength: wireFormat.length,
2853
3045
  lengthsMatch: signedTxBytes.length === wireFormat.length,
2854
3046
  signedFirstBytes: Array.from(signedTxBytes.slice(0, 20)),
2855
3047
  sentFirstBytes: Array.from(wireFormat.slice(0, 20))
2856
3048
  }), signedTxBytes.length !== wireFormat.length) {
2857
- logger12.warn("Wallet modified transaction! Using wallet version", {
3049
+ logger11.warn("Wallet modified transaction! Using wallet version", {
2858
3050
  originalLength: wireFormat.length,
2859
3051
  modifiedLength: signedTxBytes.length,
2860
3052
  difference: signedTxBytes.length - wireFormat.length
@@ -2865,13 +3057,13 @@ function createKitTransactionSigner(connectorSigner) {
2865
3057
  lifetimeConstraint: originalWithLifetime.lifetimeConstraint
2866
3058
  } : {}
2867
3059
  };
2868
- return logger12.debug("Using modified transaction from wallet", {
3060
+ return logger11.debug("Using modified transaction from wallet", {
2869
3061
  modifiedMessageBytesLength: walletTransaction.messageBytes.length,
2870
3062
  signatures: Object.keys(walletTransaction.signatures)
2871
3063
  }), assertIsTransactionWithinSizeLimit(result), result;
2872
3064
  }
2873
3065
  let extractedSignatureBytes = extractSignature(signedTxBytes), signatureBase58 = getBase58Decoder().decode(extractedSignatureBytes);
2874
- logger12.debug("Extracted signature from wallet (unmodified)", {
3066
+ logger11.debug("Extracted signature from wallet (unmodified)", {
2875
3067
  signerAddress,
2876
3068
  signatureLength: extractedSignatureBytes.length,
2877
3069
  signatureBase58
@@ -2886,7 +3078,7 @@ function createKitTransactionSigner(connectorSigner) {
2886
3078
  };
2887
3079
  return assertIsTransactionWithinSizeLimit(signedTransaction), signedTransaction;
2888
3080
  } catch (error) {
2889
- return logger12.error("Failed to decode signed transaction", { error }), assertIsTransactionWithinSizeLimit(originalTransaction), originalTransaction;
3081
+ return logger11.error("Failed to decode signed transaction", { error }), assertIsTransactionWithinSizeLimit(originalTransaction), originalTransaction;
2890
3082
  }
2891
3083
  });
2892
3084
  }
@@ -2894,6 +3086,6 @@ function createKitTransactionSigner(connectorSigner) {
2894
3086
  }
2895
3087
  var createGillTransactionSigner = createKitTransactionSigner;
2896
3088
 
2897
- export { ClipboardErrorType, ConnectorClient, ConnectorErrorBoundary, EnhancedStorage, EnhancedStorageAdapter, PUBLIC_RPC_ENDPOINTS, TransactionSignerError, WalletErrorType, copyAddressToClipboard, copySignatureToClipboard, copyToClipboard, createEnhancedStorageAccount, createEnhancedStorageCluster, createEnhancedStorageWallet, createGillTransactionSigner, createKitTransactionSigner, createTransactionSigner, formatAddress, formatBigIntBalance, formatBigIntUsd, formatLamportsToSolSafe, formatNumber, formatSOL, formatTokenAmount, formatTokenBalanceSafe, getAddressUrl, getBlockUrl, getChainIdForWalletStandard, getClusterChainId, getClusterExplorerUrl, getClusterName, getClusterRpcUrl, getClusterType, getDefaultConfig, getDefaultMobileConfig, getDefaultRpcUrl, getNetworkDisplayName, getPolyfillStatus, getTokenUrl, getTransactionUrl, getWalletsRegistry, installPolyfills, isClipboardAvailable, isCryptoAvailable, isDevnet, isDevnetCluster, isLocalCluster, isLocalnet, isMainnet, isMainnetCluster, isPolyfillInstalled, isTestnet, isTestnetCluster, isTransactionSignerError, normalizeNetwork, parseConfigOptions, ready, toClusterId, truncate, validateConfigOptions, withErrorBoundary };
2898
- //# sourceMappingURL=chunk-QOIQBWMP.mjs.map
2899
- //# sourceMappingURL=chunk-QOIQBWMP.mjs.map
3089
+ export { ClipboardErrorType, ConnectorClient, EnhancedStorage, EnhancedStorageAdapter, INITIAL_WALLET_STATUS, PUBLIC_RPC_ENDPOINTS, TransactionSignerError, WALLET_STATE_VERSION, clearWalletState, copyAddressToClipboard, copySignatureToClipboard, copyToClipboard, createConnectorId, createEnhancedStorageAccount, createEnhancedStorageCluster, createEnhancedStorageWallet, createEnhancedStorageWalletState, createGillTransactionSigner, createKitTransactionSigner, createTransactionSigner, formatAddress, formatBigIntBalance, formatBigIntUsd, formatLamportsToSolSafe, formatNumber, formatSOL, formatTokenAmount, formatTokenBalanceSafe, getAddressUrl, getBlockUrl, getChainIdForWalletStandard, getClusterChainId, getClusterExplorerUrl, getClusterName, getClusterRpcUrl, getClusterType, getDefaultConfig, getDefaultMobileConfig, getDefaultRpcUrl, getNetworkDisplayName, getPolyfillStatus, getTokenUrl, getTransactionUrl, getWalletNameFromConnectorId, getWalletsRegistry, installPolyfills, isClipboardAvailable, isConnected, isConnecting, isCryptoAvailable, isDevnet, isDevnetCluster, isDisconnected, isLocalCluster, isLocalnet, isMainnet, isMainnetCluster, isPolyfillInstalled, isStatusError, isTestnet, isTestnetCluster, isTransactionSignerError, isWalletConnectorId, isWalletStatusError, normalizeNetwork, parseConfigOptions, ready, saveWalletState, toClusterId, toLegacyWalletState, truncate, validateConfigOptions };
3090
+ //# sourceMappingURL=chunk-IDTUFDNB.mjs.map
3091
+ //# sourceMappingURL=chunk-IDTUFDNB.mjs.map