@solana/connector 0.2.1 → 0.2.3

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 (79) hide show
  1. package/README.md +17 -0
  2. package/dist/{chunk-UCISIAOG.mjs → chunk-A7WQ3K75.mjs} +3 -3
  3. package/dist/{chunk-UCISIAOG.mjs.map → chunk-A7WQ3K75.mjs.map} +1 -1
  4. package/dist/{chunk-4Z2F6ERB.js → chunk-B6YBZB6H.js} +49 -48
  5. package/dist/chunk-B6YBZB6H.js.map +1 -0
  6. package/dist/{chunk-SITQ4JWM.js → chunk-BF67LVVM.js} +17 -21
  7. package/dist/chunk-BF67LVVM.js.map +1 -0
  8. package/dist/{chunk-IDTUFDNB.mjs → chunk-DFKGCW7K.mjs} +98 -12
  9. package/dist/chunk-DFKGCW7K.mjs.map +1 -0
  10. package/dist/chunk-E3DAIOYS.mjs +22 -0
  11. package/dist/chunk-E3DAIOYS.mjs.map +1 -0
  12. package/dist/chunk-FG7HTQTV.mjs +7 -0
  13. package/dist/chunk-FG7HTQTV.mjs.map +1 -0
  14. package/dist/chunk-L5FWMNWO.js +9 -0
  15. package/dist/chunk-L5FWMNWO.js.map +1 -0
  16. package/dist/{chunk-HN5AJF7F.js → chunk-NLPEO5GT.js} +5 -5
  17. package/dist/{chunk-HN5AJF7F.js.map → chunk-NLPEO5GT.js.map} +1 -1
  18. package/dist/chunk-QST7XLMB.js +26 -0
  19. package/dist/chunk-QST7XLMB.js.map +1 -0
  20. package/dist/{chunk-ZZTY3O4N.mjs → chunk-SJCQ3KZE.mjs} +4 -7
  21. package/dist/chunk-SJCQ3KZE.mjs.map +1 -0
  22. package/dist/{chunk-BZ2VBJCZ.js → chunk-ULEPN4NL.js} +181 -95
  23. package/dist/chunk-ULEPN4NL.js.map +1 -0
  24. package/dist/{chunk-HPQ5T32K.mjs → chunk-UOML5ULB.mjs} +4 -4
  25. package/dist/{chunk-HPQ5T32K.mjs.map → chunk-UOML5ULB.mjs.map} +1 -1
  26. package/dist/{chunk-MDR4Y37Z.mjs → chunk-WPDCSFX2.mjs} +5 -4
  27. package/dist/chunk-WPDCSFX2.mjs.map +1 -0
  28. package/dist/{chunk-BJAVJQLK.js → chunk-X2X5TFXS.js} +6 -6
  29. package/dist/{chunk-BJAVJQLK.js.map → chunk-X2X5TFXS.js.map} +1 -1
  30. package/dist/compat.js +2 -2
  31. package/dist/compat.mjs +1 -1
  32. package/dist/fireblocks-FLKRTJU3.js +67 -0
  33. package/dist/fireblocks-FLKRTJU3.js.map +1 -0
  34. package/dist/fireblocks-KCJV3GEK.mjs +65 -0
  35. package/dist/fireblocks-KCJV3GEK.mjs.map +1 -0
  36. package/dist/headless.d.mts +11 -11
  37. package/dist/headless.d.ts +11 -11
  38. package/dist/headless.js +147 -147
  39. package/dist/headless.mjs +4 -4
  40. package/dist/index.d.mts +1 -1
  41. package/dist/index.d.ts +1 -1
  42. package/dist/index.js +188 -188
  43. package/dist/index.mjs +5 -5
  44. package/dist/privy-6LYDE24Z.mjs +64 -0
  45. package/dist/privy-6LYDE24Z.mjs.map +1 -0
  46. package/dist/privy-ID4YFTKR.js +66 -0
  47. package/dist/privy-ID4YFTKR.js.map +1 -0
  48. package/dist/protocol-G-z1lRqo.d.mts +166 -0
  49. package/dist/protocol-G-z1lRqo.d.ts +166 -0
  50. package/dist/react.d.mts +3 -3
  51. package/dist/react.d.ts +3 -3
  52. package/dist/react.js +49 -49
  53. package/dist/react.mjs +2 -2
  54. package/dist/remote.d.mts +46 -0
  55. package/dist/remote.d.ts +46 -0
  56. package/dist/remote.js +212 -0
  57. package/dist/remote.js.map +1 -0
  58. package/dist/remote.mjs +198 -0
  59. package/dist/remote.mjs.map +1 -0
  60. package/dist/server.d.mts +141 -0
  61. package/dist/server.d.ts +141 -0
  62. package/dist/server.js +189 -0
  63. package/dist/server.js.map +1 -0
  64. package/dist/server.mjs +187 -0
  65. package/dist/server.mjs.map +1 -0
  66. package/dist/{standard-shim-tmnQelaJ.d.ts → standard-shim-BB0Lkg_C.d.ts} +44 -1
  67. package/dist/{standard-shim-CGB88PPO.d.mts → standard-shim-n5phZB1d.d.mts} +44 -1
  68. package/dist/{walletconnect-447EY3OJ.js → walletconnect-F2M3PAAN.js} +8 -8
  69. package/dist/{walletconnect-447EY3OJ.js.map → walletconnect-F2M3PAAN.js.map} +1 -1
  70. package/dist/walletconnect-Z6LPGALR.mjs +3 -0
  71. package/dist/{walletconnect-U455PO4I.mjs.map → walletconnect-Z6LPGALR.mjs.map} +1 -1
  72. package/package.json +27 -2
  73. package/dist/chunk-4Z2F6ERB.js.map +0 -1
  74. package/dist/chunk-BZ2VBJCZ.js.map +0 -1
  75. package/dist/chunk-IDTUFDNB.mjs.map +0 -1
  76. package/dist/chunk-MDR4Y37Z.mjs.map +0 -1
  77. package/dist/chunk-SITQ4JWM.js.map +0 -1
  78. package/dist/chunk-ZZTY3O4N.mjs.map +0 -1
  79. package/dist/walletconnect-U455PO4I.mjs +0 -3
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var chunkBZ2VBJCZ_js = require('./chunk-BZ2VBJCZ.js');
4
- var chunkSITQ4JWM_js = require('./chunk-SITQ4JWM.js');
3
+ var chunkULEPN4NL_js = require('./chunk-ULEPN4NL.js');
4
+ var chunkBF67LVVM_js = require('./chunk-BF67LVVM.js');
5
5
  var core = require('@wallet-ui/core');
6
6
  var signers = require('@solana/signers');
7
7
  var addresses = require('@solana/addresses');
@@ -63,7 +63,7 @@ var SOLANA_CHAIN_IDS = {
63
63
  "solana:testnet": SOLANA_CHAIN_IDS.testnet
64
64
  };
65
65
  function getChainIdFromCluster(cluster) {
66
- let clusterType = chunkBZ2VBJCZ_js.getClusterType(cluster);
66
+ let clusterType = chunkULEPN4NL_js.getClusterType(cluster);
67
67
  return clusterType === "localnet" || clusterType === "custom" ? null : getChainIdFromClusterType(clusterType);
68
68
  }
69
69
  function getChainIdFromClusterId(clusterId) {
@@ -140,7 +140,7 @@ function getSolanaExplorerUrl(signature, options = {}) {
140
140
  if (normalizedCluster === "localnet")
141
141
  return `https://explorer.solana.com/tx/${signature}?cluster=custom&customUrl=${encodeURIComponent(customUrl || "http://localhost:8899")}`;
142
142
  let explorerCluster = ["mainnet", "devnet", "testnet"].includes(normalizedCluster) ? normalizedCluster : "devnet";
143
- return chunkSITQ4JWM_js.getExplorerLink({
143
+ return chunkBF67LVVM_js.getExplorerLink({
144
144
  transaction: signature,
145
145
  cluster: explorerCluster
146
146
  });
@@ -226,5 +226,5 @@ exports.isSolanaChain = isSolanaChain;
226
226
  exports.isWalletName = isWalletName;
227
227
  exports.sendRawTransaction = sendRawTransaction;
228
228
  exports.validateKnownSolanaChain = validateKnownSolanaChain;
229
- //# sourceMappingURL=chunk-BJAVJQLK.js.map
230
- //# sourceMappingURL=chunk-BJAVJQLK.js.map
229
+ //# sourceMappingURL=chunk-X2X5TFXS.js.map
230
+ //# sourceMappingURL=chunk-X2X5TFXS.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/types/wallets.ts","../src/lib/connection/types.ts","../src/lib/connection/helpers.ts","../src/utils/chain.ts","../src/lib/utils/explorer-urls.ts"],"names":["getClusterType","getExplorerLink"],"mappings":"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","file":"chunk-BJAVJQLK.js","sourcesContent":["/**\n * Wallet-related types\n * Re-exports from @wallet-standard/base and custom wallet types\n */\n\nimport type { Wallet, WalletAccount } from '@wallet-standard/base';\n\n// Re-export standard types\nexport type { Wallet, WalletAccount };\n\n/**\n * Wallet name as a branded string for type safety\n * Represents the unique identifier for a wallet (e.g., \"Phantom\", \"Solflare\")\n */\nexport type WalletName = string & { readonly __brand: 'WalletName' };\n\n/**\n * Account address as a branded string for type safety\n * Represents a Solana address (base58-encoded public key)\n *\n * @deprecated Use `Address` from '@solana/addresses' instead for consistent address typing\n */\nexport type AccountAddress = string & { readonly __brand: 'AccountAddress' };\n\n/**\n * Type guard to check if a string is a valid wallet name\n */\nexport function isWalletName(value: string): value is WalletName {\n return typeof value === 'string' && value.length > 0;\n}\n\n/**\n * Type guard to check if a string is a valid account address\n *\n * @deprecated Use `isAddress` from '@solana/addresses' instead for proper address validation\n */\nexport function isAccountAddress(value: string): value is AccountAddress {\n // Basic validation: Solana addresses are typically 32-44 characters\n return typeof value === 'string' && value.length >= 32 && value.length <= 44;\n}\n\n/**\n * Extended wallet information with capability metadata\n */\nexport interface WalletInfo {\n /** The Wallet Standard wallet object */\n wallet: Wallet;\n /** Whether the wallet extension is installed */\n installed: boolean;\n /** Precomputed capability flag for UI convenience */\n connectable?: boolean;\n}\n","import type { Connection } from '@solana/web3.js';\n\nexport type Commitment = 'processed' | 'confirmed' | 'finalized';\n\nexport interface KitSendTransactionOptions {\n commitment?: Commitment;\n skipPreflight?: boolean;\n maxRetries?: number;\n}\n\nexport type KitRpc = {\n getLatestBlockhash(options?: { commitment?: Commitment }): {\n send(): Promise<{ value: { blockhash: string; lastValidBlockHeight: number } }>;\n };\n sendTransaction(\n bytes: Uint8Array | string,\n options?: KitSendTransactionOptions,\n ): {\n send(): Promise<string>;\n };\n send?: () => unknown;\n};\n\nexport type DualConnection = Connection | KitRpc;\n\nexport function isLegacyConnection(conn: DualConnection): conn is Connection {\n return 'rpcEndpoint' in conn && typeof (conn as Connection).rpcEndpoint === 'string';\n}\n\nexport function isKitConnection(conn: DualConnection): conn is KitRpc {\n if ('rpcEndpoint' in conn) {\n return false;\n }\n\n const asKitRpc = conn as KitRpc;\n return typeof asKitRpc.getLatestBlockhash === 'function' && typeof asKitRpc.sendTransaction === 'function';\n}\n","/**\n * @solana/connector - Connection Helpers\n *\n * Abstraction layer for working with both legacy @solana/web3.js Connection\n * and modern Kit/gill Rpc objects.\n */\n\nimport type { SendOptions } from '@solana/web3.js';\nimport type { DualConnection, Commitment, KitRpc } from './types';\nimport { isLegacyConnection, isKitConnection } from './types';\n\n/**\n * Get latest blockhash from either legacy Connection or Kit Rpc\n *\n * Abstracts the differences between web3.js 1.x and Kit/gill APIs.\n *\n * @param connection - Legacy Connection or Kit Rpc\n * @param commitment - Optional commitment level (default: 'confirmed')\n * @returns Latest blockhash and last valid block height\n *\n * @example\n * ```typescript\n * // Works with both Connection and Rpc\n * const { blockhash, lastValidBlockHeight } = await getLatestBlockhash(connection);\n * ```\n */\nexport async function getLatestBlockhash(\n connection: DualConnection,\n commitment: Commitment = 'confirmed',\n): Promise<{ blockhash: string; lastValidBlockHeight: number }> {\n if (isLegacyConnection(connection)) {\n // Legacy Connection API\n return await connection.getLatestBlockhash(commitment);\n }\n\n if (isKitConnection(connection)) {\n // Kit/gill Rpc API - returns { value: { blockhash, lastValidBlockHeight } }\n const rpc = connection as KitRpc;\n const result = await rpc.getLatestBlockhash({ commitment }).send();\n return result.value;\n }\n\n throw new Error('Unsupported connection type');\n}\n\n/**\n * Send raw transaction bytes to either legacy Connection or Kit Rpc\n *\n * Abstracts the differences between web3.js 1.x and Kit/gill APIs.\n *\n * @param connection - Legacy Connection or Kit Rpc\n * @param bytes - Raw transaction bytes\n * @param options - Optional send options (skipPreflight, maxRetries, etc.)\n * @returns Transaction signature string\n *\n * @example\n * ```typescript\n * // Works with both Connection and Rpc\n * const signature = await sendRawTransaction(connection, transactionBytes, {\n * skipPreflight: false,\n * maxRetries: 3\n * });\n * ```\n */\nexport async function sendRawTransaction(\n connection: DualConnection,\n bytes: Uint8Array,\n options?: SendOptions & { commitment?: Commitment },\n): Promise<string> {\n if (isLegacyConnection(connection)) {\n // Legacy Connection API\n return await connection.sendRawTransaction(bytes, options);\n }\n\n if (isKitConnection(connection)) {\n // Kit/gill Rpc API\n // Note: gill's sendTransaction expects different options format\n const rpc = connection as KitRpc;\n // Convert Uint8Array to base64 string\n const base64String = Buffer.from(bytes).toString('base64');\n const result = await rpc\n .sendTransaction(base64String as Uint8Array | string, {\n ...(options?.commitment ? { commitment: options.commitment } : {}),\n ...(options?.skipPreflight !== undefined ? { skipPreflight: options.skipPreflight } : {}),\n ...(options?.maxRetries !== undefined ? { maxRetries: options.maxRetries } : {}),\n })\n .send();\n\n // Kit Rpc returns signature string directly\n return result;\n }\n\n throw new Error('Unsupported connection type');\n}\n","import type { SolanaCluster, SolanaClusterId } from '@wallet-ui/core';\nimport type { Connection } from '@solana/web3.js';\nimport type { ClusterType } from './cluster';\nimport { getClusterType, isMainnetCluster, isDevnetCluster, isTestnetCluster } from './cluster';\n\nexport const SOLANA_CHAIN_IDS = {\n mainnet: 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp',\n devnet: 'solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1',\n testnet: 'solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z',\n} as const;\n\nconst CHAIN_ID_TO_CLUSTER_TYPE: Record<string, ClusterType> = {\n [SOLANA_CHAIN_IDS.mainnet]: 'mainnet',\n [SOLANA_CHAIN_IDS.devnet]: 'devnet',\n [SOLANA_CHAIN_IDS.testnet]: 'testnet',\n};\n\nconst CLUSTER_ID_TO_CHAIN_ID: Partial<Record<SolanaClusterId, string>> = {\n 'solana:mainnet': SOLANA_CHAIN_IDS.mainnet,\n 'solana:mainnet-beta': SOLANA_CHAIN_IDS.mainnet,\n 'solana:devnet': SOLANA_CHAIN_IDS.devnet,\n 'solana:testnet': SOLANA_CHAIN_IDS.testnet,\n};\n\nexport function getChainIdFromCluster(cluster: SolanaCluster): `solana:${string}` | null {\n const clusterType = getClusterType(cluster);\n\n if (clusterType === 'localnet' || clusterType === 'custom') {\n return null;\n }\n\n return getChainIdFromClusterType(clusterType);\n}\n\nexport function getChainIdFromClusterId(clusterId: SolanaClusterId): `solana:${string}` | null {\n return (CLUSTER_ID_TO_CHAIN_ID[clusterId] as `solana:${string}` | undefined) || null;\n}\n\nexport function getChainIdFromClusterType(type: ClusterType): `solana:${string}` | null {\n switch (type) {\n case 'mainnet':\n return SOLANA_CHAIN_IDS.mainnet;\n case 'devnet':\n return SOLANA_CHAIN_IDS.devnet;\n case 'testnet':\n return SOLANA_CHAIN_IDS.testnet;\n case 'localnet':\n case 'custom':\n return null;\n }\n}\n\nexport function getClusterTypeFromChainId(chainId: string): ClusterType | null {\n return CHAIN_ID_TO_CLUSTER_TYPE[chainId] || null;\n}\n\nexport function getClusterIdFromChainId(chainId: string): SolanaClusterId | null {\n const clusterType = getClusterTypeFromChainId(chainId);\n if (!clusterType) {\n return null;\n }\n\n switch (clusterType) {\n case 'mainnet':\n return 'solana:mainnet';\n case 'devnet':\n return 'solana:devnet';\n case 'testnet':\n return 'solana:testnet';\n default:\n return null;\n }\n}\n\nexport function isSolanaChain(chain: string): chain is `solana:${string}` {\n return chain.startsWith('solana:');\n}\n\nexport function isKnownSolanaChain(chain: string): boolean {\n return (\n chain === SOLANA_CHAIN_IDS.mainnet || chain === SOLANA_CHAIN_IDS.devnet || chain === SOLANA_CHAIN_IDS.testnet\n );\n}\n\nexport function validateKnownSolanaChain(chain: string): asserts chain is `solana:${string}` {\n if (!isSolanaChain(chain)) {\n throw new Error(`Invalid chain format: expected 'solana:...', got '${chain}'`);\n }\n\n if (!isKnownSolanaChain(chain)) {\n throw new Error(`Unknown Solana chain: ${chain}. Known chains: ${Object.values(SOLANA_CHAIN_IDS).join(', ')}`);\n }\n}\n\nexport function getClusterTypeFromConnection(connection: Connection | null): ClusterType | null {\n if (!connection) {\n return null;\n }\n\n const rpcUrl = connection.rpcEndpoint || '';\n\n if (rpcUrl.includes('mainnet') || rpcUrl.includes('api.mainnet-beta')) {\n return 'mainnet';\n }\n\n if (rpcUrl.includes('testnet')) {\n return 'testnet';\n }\n\n if (rpcUrl.includes('devnet')) {\n return 'devnet';\n }\n\n if (rpcUrl.includes('localhost') || rpcUrl.includes('127.0.0.1')) {\n return 'localnet';\n }\n\n return 'custom';\n}\n\nexport function getChainIdFromConnection(\n connection: Connection | null,\n network?: 'mainnet' | 'devnet' | 'testnet',\n): `solana:${string}` | null {\n if (network) {\n return getChainIdFromClusterType(network);\n }\n\n const clusterType = getClusterTypeFromConnection(connection);\n if (!clusterType) {\n return null;\n }\n\n return getChainIdFromClusterType(clusterType);\n}\n\nexport function clusterToChainId(cluster: SolanaCluster): `solana:${string}` | null {\n return getChainIdFromCluster(cluster);\n}\n\nexport function chainIdToClusterType(chainId: string): ClusterType | null {\n return getClusterTypeFromChainId(chainId);\n}\n\nexport function chainIdToClusterId(chainId: string): SolanaClusterId | null {\n return getClusterIdFromChainId(chainId);\n}\n","/**\n * @solana/connector - Explorer URL Utilities\n *\n * Generate URLs for various Solana block explorers to view transactions,\n * accounts, and other on-chain data.\n */\n\nimport { getExplorerLink } from '../kit';\n\nexport type ExplorerType = 'solana-explorer' | 'solscan' | 'xray' | 'solana-fm';\n\nexport interface ExplorerOptions {\n /** Cluster to use for the explorer link */\n cluster?: string;\n /** Custom RPC URL for localnet */\n customUrl?: string;\n}\n\n/**\n * Generate Solana Explorer URL for a transaction signature\n */\nexport function getSolanaExplorerUrl(signature: string, options: ExplorerOptions = {}): string {\n const { cluster = 'mainnet', customUrl } = options;\n const normalizedCluster = cluster === 'mainnet-beta' ? 'mainnet' : cluster;\n\n // Handle localnet with custom URL - gill doesn't support this specific case\n if (normalizedCluster === 'localnet') {\n const url = customUrl || 'http://localhost:8899';\n return `https://explorer.solana.com/tx/${signature}?cluster=custom&customUrl=${encodeURIComponent(url)}`;\n }\n\n // Map to valid gill cluster types (custom clusters default to devnet)\n const validClusters = ['mainnet', 'devnet', 'testnet'] as const;\n const explorerCluster = validClusters.includes(normalizedCluster as 'mainnet' | 'devnet' | 'testnet')\n ? (normalizedCluster as 'mainnet' | 'devnet' | 'testnet')\n : 'devnet';\n\n // Use gill's getExplorerLink for standard clusters\n return getExplorerLink({\n transaction: signature,\n cluster: explorerCluster,\n });\n}\n\n/**\n * Generate Solscan URL for a transaction signature\n */\nexport function getSolscanUrl(signature: string, options: ExplorerOptions = {}): string {\n const { cluster = 'mainnet' } = options;\n const normalizedCluster = cluster === 'mainnet-beta' ? 'mainnet' : cluster;\n\n if (normalizedCluster === 'mainnet') {\n return `https://solscan.io/tx/${signature}`;\n }\n\n if (normalizedCluster === 'localnet') {\n return `https://solscan.io/tx/${signature}?cluster=custom`;\n }\n\n return `https://solscan.io/tx/${signature}?cluster=${normalizedCluster}`;\n}\n\n/**\n * Generate XRAY (Helius) URL for a transaction signature\n * Note: XRAY works best with mainnet transactions\n */\nexport function getXrayUrl(signature: string): string {\n return `https://xray.helius.xyz/tx/${signature}`;\n}\n\n/**\n * Generate SolanaFM URL for a transaction signature\n */\nexport function getSolanaFmUrl(signature: string, options: ExplorerOptions = {}): string {\n const { cluster = 'mainnet' } = options;\n const normalizedCluster = cluster === 'mainnet-beta' ? 'mainnet' : cluster;\n\n if (normalizedCluster === 'mainnet') {\n return `https://solana.fm/tx/${signature}`;\n }\n\n return `https://solana.fm/tx/${signature}?cluster=${normalizedCluster}`;\n}\n\n/**\n * Get all explorer URLs for a transaction\n */\nexport function getAllExplorerUrls(signature: string, options: ExplorerOptions = {}): Record<ExplorerType, string> {\n return {\n 'solana-explorer': getSolanaExplorerUrl(signature, options),\n solscan: getSolscanUrl(signature, options),\n xray: getXrayUrl(signature),\n 'solana-fm': getSolanaFmUrl(signature, options),\n };\n}\n\n/**\n * Format a transaction signature for display (truncated)\n */\nexport function formatSignature(signature: string, chars = 8): string {\n if (signature.length <= chars * 2) return signature;\n return `${signature.slice(0, chars)}...${signature.slice(-chars)}`;\n}\n\n/**\n * Copy signature to clipboard with enhanced error handling\n *\n * @deprecated Use copySignatureToClipboard from utils/clipboard instead\n * This is maintained for backwards compatibility but will be removed in a future version\n */\nexport async function copySignature(signature: string): Promise<boolean> {\n try {\n await navigator.clipboard.writeText(signature);\n return true;\n } catch {\n return false;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/types/wallets.ts","../src/lib/connection/types.ts","../src/lib/connection/helpers.ts","../src/utils/chain.ts","../src/lib/utils/explorer-urls.ts"],"names":["getClusterType","getExplorerLink"],"mappings":"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","file":"chunk-X2X5TFXS.js","sourcesContent":["/**\n * Wallet-related types\n * Re-exports from @wallet-standard/base and custom wallet types\n */\n\nimport type { Wallet, WalletAccount } from '@wallet-standard/base';\n\n// Re-export standard types\nexport type { Wallet, WalletAccount };\n\n/**\n * Wallet name as a branded string for type safety\n * Represents the unique identifier for a wallet (e.g., \"Phantom\", \"Solflare\")\n */\nexport type WalletName = string & { readonly __brand: 'WalletName' };\n\n/**\n * Account address as a branded string for type safety\n * Represents a Solana address (base58-encoded public key)\n *\n * @deprecated Use `Address` from '@solana/addresses' instead for consistent address typing\n */\nexport type AccountAddress = string & { readonly __brand: 'AccountAddress' };\n\n/**\n * Type guard to check if a string is a valid wallet name\n */\nexport function isWalletName(value: string): value is WalletName {\n return typeof value === 'string' && value.length > 0;\n}\n\n/**\n * Type guard to check if a string is a valid account address\n *\n * @deprecated Use `isAddress` from '@solana/addresses' instead for proper address validation\n */\nexport function isAccountAddress(value: string): value is AccountAddress {\n // Basic validation: Solana addresses are typically 32-44 characters\n return typeof value === 'string' && value.length >= 32 && value.length <= 44;\n}\n\n/**\n * Extended wallet information with capability metadata\n */\nexport interface WalletInfo {\n /** The Wallet Standard wallet object */\n wallet: Wallet;\n /** Whether the wallet extension is installed */\n installed: boolean;\n /** Precomputed capability flag for UI convenience */\n connectable?: boolean;\n}\n","import type { Connection } from '@solana/web3.js';\n\nexport type Commitment = 'processed' | 'confirmed' | 'finalized';\n\nexport interface KitSendTransactionOptions {\n commitment?: Commitment;\n skipPreflight?: boolean;\n maxRetries?: number;\n}\n\nexport type KitRpc = {\n getLatestBlockhash(options?: { commitment?: Commitment }): {\n send(): Promise<{ value: { blockhash: string; lastValidBlockHeight: number } }>;\n };\n sendTransaction(\n bytes: Uint8Array | string,\n options?: KitSendTransactionOptions,\n ): {\n send(): Promise<string>;\n };\n send?: () => unknown;\n};\n\nexport type DualConnection = Connection | KitRpc;\n\nexport function isLegacyConnection(conn: DualConnection): conn is Connection {\n return 'rpcEndpoint' in conn && typeof (conn as Connection).rpcEndpoint === 'string';\n}\n\nexport function isKitConnection(conn: DualConnection): conn is KitRpc {\n if ('rpcEndpoint' in conn) {\n return false;\n }\n\n const asKitRpc = conn as KitRpc;\n return typeof asKitRpc.getLatestBlockhash === 'function' && typeof asKitRpc.sendTransaction === 'function';\n}\n","/**\n * @solana/connector - Connection Helpers\n *\n * Abstraction layer for working with both legacy @solana/web3.js Connection\n * and modern Kit/gill Rpc objects.\n */\n\nimport type { SendOptions } from '@solana/web3.js';\nimport type { DualConnection, Commitment, KitRpc } from './types';\nimport { isLegacyConnection, isKitConnection } from './types';\n\n/**\n * Get latest blockhash from either legacy Connection or Kit Rpc\n *\n * Abstracts the differences between web3.js 1.x and Kit/gill APIs.\n *\n * @param connection - Legacy Connection or Kit Rpc\n * @param commitment - Optional commitment level (default: 'confirmed')\n * @returns Latest blockhash and last valid block height\n *\n * @example\n * ```typescript\n * // Works with both Connection and Rpc\n * const { blockhash, lastValidBlockHeight } = await getLatestBlockhash(connection);\n * ```\n */\nexport async function getLatestBlockhash(\n connection: DualConnection,\n commitment: Commitment = 'confirmed',\n): Promise<{ blockhash: string; lastValidBlockHeight: number }> {\n if (isLegacyConnection(connection)) {\n // Legacy Connection API\n return await connection.getLatestBlockhash(commitment);\n }\n\n if (isKitConnection(connection)) {\n // Kit/gill Rpc API - returns { value: { blockhash, lastValidBlockHeight } }\n const rpc = connection as KitRpc;\n const result = await rpc.getLatestBlockhash({ commitment }).send();\n return result.value;\n }\n\n throw new Error('Unsupported connection type');\n}\n\n/**\n * Send raw transaction bytes to either legacy Connection or Kit Rpc\n *\n * Abstracts the differences between web3.js 1.x and Kit/gill APIs.\n *\n * @param connection - Legacy Connection or Kit Rpc\n * @param bytes - Raw transaction bytes\n * @param options - Optional send options (skipPreflight, maxRetries, etc.)\n * @returns Transaction signature string\n *\n * @example\n * ```typescript\n * // Works with both Connection and Rpc\n * const signature = await sendRawTransaction(connection, transactionBytes, {\n * skipPreflight: false,\n * maxRetries: 3\n * });\n * ```\n */\nexport async function sendRawTransaction(\n connection: DualConnection,\n bytes: Uint8Array,\n options?: SendOptions & { commitment?: Commitment },\n): Promise<string> {\n if (isLegacyConnection(connection)) {\n // Legacy Connection API\n return await connection.sendRawTransaction(bytes, options);\n }\n\n if (isKitConnection(connection)) {\n // Kit/gill Rpc API\n // Note: gill's sendTransaction expects different options format\n const rpc = connection as KitRpc;\n // Convert Uint8Array to base64 string\n const base64String = Buffer.from(bytes).toString('base64');\n const result = await rpc\n .sendTransaction(base64String as Uint8Array | string, {\n ...(options?.commitment ? { commitment: options.commitment } : {}),\n ...(options?.skipPreflight !== undefined ? { skipPreflight: options.skipPreflight } : {}),\n ...(options?.maxRetries !== undefined ? { maxRetries: options.maxRetries } : {}),\n })\n .send();\n\n // Kit Rpc returns signature string directly\n return result;\n }\n\n throw new Error('Unsupported connection type');\n}\n","import type { SolanaCluster, SolanaClusterId } from '@wallet-ui/core';\nimport type { Connection } from '@solana/web3.js';\nimport type { ClusterType } from './cluster';\nimport { getClusterType, isMainnetCluster, isDevnetCluster, isTestnetCluster } from './cluster';\n\nexport const SOLANA_CHAIN_IDS = {\n mainnet: 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp',\n devnet: 'solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1',\n testnet: 'solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z',\n} as const;\n\nconst CHAIN_ID_TO_CLUSTER_TYPE: Record<string, ClusterType> = {\n [SOLANA_CHAIN_IDS.mainnet]: 'mainnet',\n [SOLANA_CHAIN_IDS.devnet]: 'devnet',\n [SOLANA_CHAIN_IDS.testnet]: 'testnet',\n};\n\nconst CLUSTER_ID_TO_CHAIN_ID: Partial<Record<SolanaClusterId, string>> = {\n 'solana:mainnet': SOLANA_CHAIN_IDS.mainnet,\n 'solana:mainnet-beta': SOLANA_CHAIN_IDS.mainnet,\n 'solana:devnet': SOLANA_CHAIN_IDS.devnet,\n 'solana:testnet': SOLANA_CHAIN_IDS.testnet,\n};\n\nexport function getChainIdFromCluster(cluster: SolanaCluster): `solana:${string}` | null {\n const clusterType = getClusterType(cluster);\n\n if (clusterType === 'localnet' || clusterType === 'custom') {\n return null;\n }\n\n return getChainIdFromClusterType(clusterType);\n}\n\nexport function getChainIdFromClusterId(clusterId: SolanaClusterId): `solana:${string}` | null {\n return (CLUSTER_ID_TO_CHAIN_ID[clusterId] as `solana:${string}` | undefined) || null;\n}\n\nexport function getChainIdFromClusterType(type: ClusterType): `solana:${string}` | null {\n switch (type) {\n case 'mainnet':\n return SOLANA_CHAIN_IDS.mainnet;\n case 'devnet':\n return SOLANA_CHAIN_IDS.devnet;\n case 'testnet':\n return SOLANA_CHAIN_IDS.testnet;\n case 'localnet':\n case 'custom':\n return null;\n }\n}\n\nexport function getClusterTypeFromChainId(chainId: string): ClusterType | null {\n return CHAIN_ID_TO_CLUSTER_TYPE[chainId] || null;\n}\n\nexport function getClusterIdFromChainId(chainId: string): SolanaClusterId | null {\n const clusterType = getClusterTypeFromChainId(chainId);\n if (!clusterType) {\n return null;\n }\n\n switch (clusterType) {\n case 'mainnet':\n return 'solana:mainnet';\n case 'devnet':\n return 'solana:devnet';\n case 'testnet':\n return 'solana:testnet';\n default:\n return null;\n }\n}\n\nexport function isSolanaChain(chain: string): chain is `solana:${string}` {\n return chain.startsWith('solana:');\n}\n\nexport function isKnownSolanaChain(chain: string): boolean {\n return (\n chain === SOLANA_CHAIN_IDS.mainnet || chain === SOLANA_CHAIN_IDS.devnet || chain === SOLANA_CHAIN_IDS.testnet\n );\n}\n\nexport function validateKnownSolanaChain(chain: string): asserts chain is `solana:${string}` {\n if (!isSolanaChain(chain)) {\n throw new Error(`Invalid chain format: expected 'solana:...', got '${chain}'`);\n }\n\n if (!isKnownSolanaChain(chain)) {\n throw new Error(`Unknown Solana chain: ${chain}. Known chains: ${Object.values(SOLANA_CHAIN_IDS).join(', ')}`);\n }\n}\n\nexport function getClusterTypeFromConnection(connection: Connection | null): ClusterType | null {\n if (!connection) {\n return null;\n }\n\n const rpcUrl = connection.rpcEndpoint || '';\n\n if (rpcUrl.includes('mainnet') || rpcUrl.includes('api.mainnet-beta')) {\n return 'mainnet';\n }\n\n if (rpcUrl.includes('testnet')) {\n return 'testnet';\n }\n\n if (rpcUrl.includes('devnet')) {\n return 'devnet';\n }\n\n if (rpcUrl.includes('localhost') || rpcUrl.includes('127.0.0.1')) {\n return 'localnet';\n }\n\n return 'custom';\n}\n\nexport function getChainIdFromConnection(\n connection: Connection | null,\n network?: 'mainnet' | 'devnet' | 'testnet',\n): `solana:${string}` | null {\n if (network) {\n return getChainIdFromClusterType(network);\n }\n\n const clusterType = getClusterTypeFromConnection(connection);\n if (!clusterType) {\n return null;\n }\n\n return getChainIdFromClusterType(clusterType);\n}\n\nexport function clusterToChainId(cluster: SolanaCluster): `solana:${string}` | null {\n return getChainIdFromCluster(cluster);\n}\n\nexport function chainIdToClusterType(chainId: string): ClusterType | null {\n return getClusterTypeFromChainId(chainId);\n}\n\nexport function chainIdToClusterId(chainId: string): SolanaClusterId | null {\n return getClusterIdFromChainId(chainId);\n}\n","/**\n * @solana/connector - Explorer URL Utilities\n *\n * Generate URLs for various Solana block explorers to view transactions,\n * accounts, and other on-chain data.\n */\n\nimport { getExplorerLink } from '../kit';\n\nexport type ExplorerType = 'solana-explorer' | 'solscan' | 'xray' | 'solana-fm';\n\nexport interface ExplorerOptions {\n /** Cluster to use for the explorer link */\n cluster?: string;\n /** Custom RPC URL for localnet */\n customUrl?: string;\n}\n\n/**\n * Generate Solana Explorer URL for a transaction signature\n */\nexport function getSolanaExplorerUrl(signature: string, options: ExplorerOptions = {}): string {\n const { cluster = 'mainnet', customUrl } = options;\n const normalizedCluster = cluster === 'mainnet-beta' ? 'mainnet' : cluster;\n\n // Handle localnet with custom URL - gill doesn't support this specific case\n if (normalizedCluster === 'localnet') {\n const url = customUrl || 'http://localhost:8899';\n return `https://explorer.solana.com/tx/${signature}?cluster=custom&customUrl=${encodeURIComponent(url)}`;\n }\n\n // Map to valid gill cluster types (custom clusters default to devnet)\n const validClusters = ['mainnet', 'devnet', 'testnet'] as const;\n const explorerCluster = validClusters.includes(normalizedCluster as 'mainnet' | 'devnet' | 'testnet')\n ? (normalizedCluster as 'mainnet' | 'devnet' | 'testnet')\n : 'devnet';\n\n // Use gill's getExplorerLink for standard clusters\n return getExplorerLink({\n transaction: signature,\n cluster: explorerCluster,\n });\n}\n\n/**\n * Generate Solscan URL for a transaction signature\n */\nexport function getSolscanUrl(signature: string, options: ExplorerOptions = {}): string {\n const { cluster = 'mainnet' } = options;\n const normalizedCluster = cluster === 'mainnet-beta' ? 'mainnet' : cluster;\n\n if (normalizedCluster === 'mainnet') {\n return `https://solscan.io/tx/${signature}`;\n }\n\n if (normalizedCluster === 'localnet') {\n return `https://solscan.io/tx/${signature}?cluster=custom`;\n }\n\n return `https://solscan.io/tx/${signature}?cluster=${normalizedCluster}`;\n}\n\n/**\n * Generate XRAY (Helius) URL for a transaction signature\n * Note: XRAY works best with mainnet transactions\n */\nexport function getXrayUrl(signature: string): string {\n return `https://xray.helius.xyz/tx/${signature}`;\n}\n\n/**\n * Generate SolanaFM URL for a transaction signature\n */\nexport function getSolanaFmUrl(signature: string, options: ExplorerOptions = {}): string {\n const { cluster = 'mainnet' } = options;\n const normalizedCluster = cluster === 'mainnet-beta' ? 'mainnet' : cluster;\n\n if (normalizedCluster === 'mainnet') {\n return `https://solana.fm/tx/${signature}`;\n }\n\n return `https://solana.fm/tx/${signature}?cluster=${normalizedCluster}`;\n}\n\n/**\n * Get all explorer URLs for a transaction\n */\nexport function getAllExplorerUrls(signature: string, options: ExplorerOptions = {}): Record<ExplorerType, string> {\n return {\n 'solana-explorer': getSolanaExplorerUrl(signature, options),\n solscan: getSolscanUrl(signature, options),\n xray: getXrayUrl(signature),\n 'solana-fm': getSolanaFmUrl(signature, options),\n };\n}\n\n/**\n * Format a transaction signature for display (truncated)\n */\nexport function formatSignature(signature: string, chars = 8): string {\n if (signature.length <= chars * 2) return signature;\n return `${signature.slice(0, chars)}...${signature.slice(-chars)}`;\n}\n\n/**\n * Copy signature to clipboard with enhanced error handling\n *\n * @deprecated Use copySignatureToClipboard from utils/clipboard instead\n * This is maintained for backwards compatibility but will be removed in a future version\n */\nexport async function copySignature(signature: string): Promise<boolean> {\n try {\n await navigator.clipboard.writeText(signature);\n return true;\n } catch {\n return false;\n }\n}\n"]}
package/dist/compat.js CHANGED
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
 
3
3
  var chunk4KD6HQQG_js = require('./chunk-4KD6HQQG.js');
4
- var chunkSITQ4JWM_js = require('./chunk-SITQ4JWM.js');
4
+ var chunkBF67LVVM_js = require('./chunk-BF67LVVM.js');
5
5
  var react = require('react');
6
6
 
7
- var logger = chunkSITQ4JWM_js.createLogger("WalletAdapterCompat");
7
+ var logger = chunkBF67LVVM_js.createLogger("WalletAdapterCompat");
8
8
  function createWalletAdapterCompat(signer, options) {
9
9
  let { disconnect, transformTransaction, onError } = options, handleError = (error, operation) => {
10
10
  onError ? onError(error, operation) : logger.error("Wallet adapter compat error", { operation, error });
package/dist/compat.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  import { tryCatch, isWeb3jsTransaction } from './chunk-HO6QNKFM.mjs';
2
- import { createLogger } from './chunk-ZZTY3O4N.mjs';
2
+ import { createLogger } from './chunk-SJCQ3KZE.mjs';
3
3
  import { useMemo } from 'react';
4
4
 
5
5
  var logger = createLogger("WalletAdapterCompat");
@@ -0,0 +1,67 @@
1
+ 'use strict';
2
+
3
+ // src/server/providers/fireblocks.ts
4
+ async function loadFireblocksSigner(config) {
5
+ let FireblocksSigner;
6
+ try {
7
+ FireblocksSigner = (await import('@solana/keychain-fireblocks')).FireblocksSigner;
8
+ } catch {
9
+ throw new Error(
10
+ "@solana/keychain-fireblocks is not installed. Install it with: npm install @solana/keychain-fireblocks"
11
+ );
12
+ }
13
+ if (!FireblocksSigner)
14
+ throw new Error("@solana/keychain-fireblocks does not export FireblocksSigner");
15
+ let signer = new FireblocksSigner({
16
+ apiKey: config.apiKey,
17
+ privateKeyPem: config.privateKeyPem,
18
+ vaultAccountId: config.vaultAccountId,
19
+ assetId: config.assetId,
20
+ apiBaseUrl: config.apiBaseUrl
21
+ });
22
+ return await signer.init(), {
23
+ get address() {
24
+ return signer.address;
25
+ },
26
+ async signTransaction(transactionBytes) {
27
+ return await signWithFireblocks(signer, transactionBytes);
28
+ },
29
+ async signAllTransactions(transactions) {
30
+ let results = [];
31
+ for (let txBytes of transactions) {
32
+ let signed = await signWithFireblocks(signer, txBytes);
33
+ results.push(signed);
34
+ }
35
+ return results;
36
+ },
37
+ async signMessage(message) {
38
+ let signableMessage = {
39
+ content: message,
40
+ signatures: {}
41
+ }, signature = (await signer.signMessages([signableMessage]))[0][signer.address];
42
+ if (!signature)
43
+ throw new Error("No signature returned from Fireblocks");
44
+ return signature;
45
+ },
46
+ async isAvailable() {
47
+ return signer.isAvailable();
48
+ }
49
+ };
50
+ }
51
+ async function signWithFireblocks(signer, transactionBytes) {
52
+ let { getTransactionDecoder, getTransactionEncoder } = await import('@solana/transactions'), transaction = getTransactionDecoder().decode(transactionBytes), signature = (await signer.signTransactions([transaction]))[0][signer.address];
53
+ if (!signature)
54
+ throw new Error("No signature returned from Fireblocks");
55
+ let encoder = getTransactionEncoder(), signedTx = {
56
+ ...transaction,
57
+ signatures: {
58
+ ...transaction.signatures,
59
+ [signer.address]: signature
60
+ }
61
+ }, encoded = encoder.encode(signedTx);
62
+ return new Uint8Array(encoded);
63
+ }
64
+
65
+ exports.loadFireblocksSigner = loadFireblocksSigner;
66
+ //# sourceMappingURL=fireblocks-FLKRTJU3.js.map
67
+ //# sourceMappingURL=fireblocks-FLKRTJU3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/server/providers/fireblocks.ts"],"names":[],"mappings":";;;AA2BA,eAAsB,qBAAqB,MAAA,EAAyD;AAGhG,EAAA,IAAI,gBAAA;AAEJ,EAAA,IAAI;AAEA,IAAA,gBAAA,GAAA,CADgB,MAAM,OAAO,6BAA6B,CAAA,EAChC,gBAAA;AAAA,EAC9B,CAAA,CAAA,MAAgB;AACZ,IAAA,MAAM,IAAI,KAAA;AAAA,MACN;AAAA,KAEJ;AAAA,EACJ;AAEA,EAAA,IAAI,CAAC,gBAAA;AACD,IAAA,MAAM,IAAI,MAAM,8DAA8D,CAAA;AAIlF,EAAA,IAAM,MAAA,GAAS,IAAI,gBAAA,CAAiB;AAAA,IAChC,QAAQ,MAAA,CAAO,MAAA;AAAA,IACf,eAAe,MAAA,CAAO,aAAA;AAAA,IACtB,gBAAgB,MAAA,CAAO,cAAA;AAAA,IACvB,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,YAAY,MAAA,CAAO;AAAA,GACtB,CAAA;AAGD,EAAA,OAAA,MAAM,MAAA,CAAO,MAAK,EAGX;AAAA,IACH,IAAI,OAAA,GAAU;AACV,MAAA,OAAO,MAAA,CAAO,OAAA;AAAA,IAClB,CAAA;AAAA,IAEA,MAAM,gBAAgB,gBAAA,EAAmD;AAQrE,MAAA,OADe,MAAM,kBAAA,CAAmB,MAAA,EAAQ,gBAAgB,CAAA;AAAA,IAEpE,CAAA;AAAA,IAEA,MAAM,oBAAoB,YAAA,EAAmD;AAEzE,MAAA,IAAM,UAAwB,EAAC;AAC/B,MAAA,KAAA,IAAW,WAAW,YAAA,EAAc;AAChC,QAAA,IAAM,MAAA,GAAS,MAAM,kBAAA,CAAmB,MAAA,EAAQ,OAAO,CAAA;AACvD,QAAA,OAAA,CAAQ,KAAK,MAAM,CAAA;AAAA,MACvB;AACA,MAAA,OAAO,OAAA;AAAA,IACX,CAAA;AAAA,IAEA,MAAM,YAAY,OAAA,EAA0C;AAGxD,MAAA,IAAM,eAAA,GAAkB;AAAA,QACpB,OAAA,EAAS,OAAA;AAAA,QACT,YAAY;AAAC,OACjB,EAMM,SAAA,GAAA,CAJU,MAAM,MAAA,CAAO,YAAA,CAAa,CAAC,eAA6C,CAAC,CAAA,EAGjE,CAAC,CAAA,CACC,MAAA,CAAO,OAAO,CAAA;AAExC,MAAA,IAAI,CAAC,SAAA;AACD,QAAA,MAAM,IAAI,MAAM,uCAAuC,CAAA;AAG3D,MAAA,OAAO,SAAA;AAAA,IACX,CAAA;AAAA,IAEA,MAAM,WAAA,GAAgC;AAClC,MAAA,OAAO,OAAO,WAAA,EAAY;AAAA,IAC9B;AAAA,GACJ;AACJ;AAKA,eAAe,kBAAA,CAAmB,QAA8B,gBAAA,EAAmD;AAE/G,EAAA,IAAM,EAAE,qBAAA,EAAuB,qBAAA,EAAsB,GAAI,MAAM,OAAO,sBAAsB,CAAA,EAItF,WAAA,GADU,qBAAA,EAAsB,CACV,MAAA,CAAO,gBAAgB,CAAA,EAO7C,SAAA,GAAA,CAJU,MAAM,MAAA,CAAO,gBAAA,CAAiB,CAAC,WAAsB,CAAC,CAAA,EAG9C,CAAC,CAAA,CACC,MAAA,CAAO,OAAO,CAAA;AAExC,EAAA,IAAI,CAAC,SAAA;AACD,IAAA,MAAM,IAAI,MAAM,uCAAuC,CAAA;AAI3D,EAAA,IAAM,OAAA,GAAU,qBAAA,EAAsB,EAChC,QAAA,GAAW;AAAA,IACb,GAAG,WAAA;AAAA,IACH,UAAA,EAAY;AAAA,MACR,GAAG,WAAA,CAAY,UAAA;AAAA,MACf,CAAC,MAAA,CAAO,OAAO,GAAG;AAAA;AACtB,GACJ,EAEM,OAAA,GAAU,OAAA,CAAQ,MAAA,CAAO,QAAgD,CAAA;AAC/E,EAAA,OAAO,IAAI,WAAW,OAAO,CAAA;AACjC","file":"fireblocks-FLKRTJU3.js","sourcesContent":["/**\n * @solana/connector/server - Fireblocks Provider\n *\n * Dynamically loads @solana/keychain and adapts the Fireblocks signer to the RemoteSigner interface.\n * This file is only imported server-side when Fireblocks is configured.\n */\n\nimport type { RemoteSigner, FireblocksProviderConfig } from '../route-handlers';\nimport type { SignableMessage } from '@solana/signers';\n\ninterface KeychainSignerLike {\n address: string;\n isAvailable: () => Promise<boolean>;\n signMessages: (messages: SignableMessage[]) => Promise<Record<string, Uint8Array>[]>;\n signTransactions: (transactions: unknown[]) => Promise<Record<string, Uint8Array>[]>;\n}\n\ninterface FireblocksSignerLike extends KeychainSignerLike {\n init: () => Promise<void>;\n}\n\n/**\n * Load and initialize a Fireblocks signer\n *\n * @param config - Fireblocks provider configuration\n * @returns RemoteSigner implementation backed by Fireblocks\n */\nexport async function loadFireblocksSigner(config: FireblocksProviderConfig): Promise<RemoteSigner> {\n // Dynamically import @solana/keychain\n // This keeps the dependency optional and only loaded when needed\n let FireblocksSigner: (new (args: unknown) => FireblocksSignerLike) | undefined;\n\n try {\n const module = (await import('@solana/keychain-fireblocks')) as unknown as { FireblocksSigner?: unknown };\n FireblocksSigner = module.FireblocksSigner as (new (args: unknown) => FireblocksSignerLike) | undefined;\n } catch (error) {\n throw new Error(\n '@solana/keychain-fireblocks is not installed. ' +\n 'Install it with: npm install @solana/keychain-fireblocks',\n );\n }\n\n if (!FireblocksSigner) {\n throw new Error('@solana/keychain-fireblocks does not export FireblocksSigner');\n }\n\n // Create and initialize the Fireblocks signer\n const signer = new FireblocksSigner({\n apiKey: config.apiKey,\n privateKeyPem: config.privateKeyPem,\n vaultAccountId: config.vaultAccountId,\n assetId: config.assetId,\n apiBaseUrl: config.apiBaseUrl,\n });\n\n // Initialize to fetch the public key\n await signer.init();\n\n // Adapt to RemoteSigner interface\n return {\n get address() {\n return signer.address;\n },\n\n async signTransaction(transactionBytes: Uint8Array): Promise<Uint8Array> {\n // Fireblocks signer expects Kit transactions, but we have raw bytes\n // We need to decode, sign, and re-encode\n // For now, use the raw signing approach\n\n // The keychain signer's signTransactions expects Transaction objects\n // We'll use a workaround: create a minimal transaction-like object\n const result = await signWithFireblocks(signer, transactionBytes);\n return result;\n },\n\n async signAllTransactions(transactions: Uint8Array[]): Promise<Uint8Array[]> {\n // Sign each transaction sequentially\n const results: Uint8Array[] = [];\n for (const txBytes of transactions) {\n const signed = await signWithFireblocks(signer, txBytes);\n results.push(signed);\n }\n return results;\n },\n\n async signMessage(message: Uint8Array): Promise<Uint8Array> {\n // Use the signer's signMessages method\n // Create a SignableMessage\n const signableMessage = {\n content: message,\n signatures: {} as Record<string, Uint8Array>,\n };\n\n const results = await signer.signMessages([signableMessage as unknown as SignableMessage]);\n\n // Extract the signature from the first result\n const sigDict = results[0];\n const signature = sigDict[signer.address];\n\n if (!signature) {\n throw new Error('No signature returned from Fireblocks');\n }\n\n return signature;\n },\n\n async isAvailable(): Promise<boolean> {\n return signer.isAvailable();\n },\n };\n}\n\n/**\n * Sign transaction bytes using the Fireblocks signer\n */\nasync function signWithFireblocks(signer: FireblocksSignerLike, transactionBytes: Uint8Array): Promise<Uint8Array> {\n // Import transaction utilities\n const { getTransactionDecoder, getTransactionEncoder } = await import('@solana/transactions');\n\n // Decode the transaction\n const decoder = getTransactionDecoder();\n const transaction = decoder.decode(transactionBytes);\n\n // Sign the transaction\n const results = await signer.signTransactions([transaction as unknown]);\n\n // Get the signature\n const sigDict = results[0];\n const signature = sigDict[signer.address];\n\n if (!signature) {\n throw new Error('No signature returned from Fireblocks');\n }\n\n // Re-encode the transaction with the signature\n const encoder = getTransactionEncoder();\n const signedTx = {\n ...transaction,\n signatures: {\n ...transaction.signatures,\n [signer.address]: signature,\n },\n };\n\n const encoded = encoder.encode(signedTx as Parameters<typeof encoder.encode>[0]);\n return new Uint8Array(encoded);\n}\n"]}
@@ -0,0 +1,65 @@
1
+ // src/server/providers/fireblocks.ts
2
+ async function loadFireblocksSigner(config) {
3
+ let FireblocksSigner;
4
+ try {
5
+ FireblocksSigner = (await import('@solana/keychain-fireblocks')).FireblocksSigner;
6
+ } catch {
7
+ throw new Error(
8
+ "@solana/keychain-fireblocks is not installed. Install it with: npm install @solana/keychain-fireblocks"
9
+ );
10
+ }
11
+ if (!FireblocksSigner)
12
+ throw new Error("@solana/keychain-fireblocks does not export FireblocksSigner");
13
+ let signer = new FireblocksSigner({
14
+ apiKey: config.apiKey,
15
+ privateKeyPem: config.privateKeyPem,
16
+ vaultAccountId: config.vaultAccountId,
17
+ assetId: config.assetId,
18
+ apiBaseUrl: config.apiBaseUrl
19
+ });
20
+ return await signer.init(), {
21
+ get address() {
22
+ return signer.address;
23
+ },
24
+ async signTransaction(transactionBytes) {
25
+ return await signWithFireblocks(signer, transactionBytes);
26
+ },
27
+ async signAllTransactions(transactions) {
28
+ let results = [];
29
+ for (let txBytes of transactions) {
30
+ let signed = await signWithFireblocks(signer, txBytes);
31
+ results.push(signed);
32
+ }
33
+ return results;
34
+ },
35
+ async signMessage(message) {
36
+ let signableMessage = {
37
+ content: message,
38
+ signatures: {}
39
+ }, signature = (await signer.signMessages([signableMessage]))[0][signer.address];
40
+ if (!signature)
41
+ throw new Error("No signature returned from Fireblocks");
42
+ return signature;
43
+ },
44
+ async isAvailable() {
45
+ return signer.isAvailable();
46
+ }
47
+ };
48
+ }
49
+ async function signWithFireblocks(signer, transactionBytes) {
50
+ let { getTransactionDecoder, getTransactionEncoder } = await import('@solana/transactions'), transaction = getTransactionDecoder().decode(transactionBytes), signature = (await signer.signTransactions([transaction]))[0][signer.address];
51
+ if (!signature)
52
+ throw new Error("No signature returned from Fireblocks");
53
+ let encoder = getTransactionEncoder(), signedTx = {
54
+ ...transaction,
55
+ signatures: {
56
+ ...transaction.signatures,
57
+ [signer.address]: signature
58
+ }
59
+ }, encoded = encoder.encode(signedTx);
60
+ return new Uint8Array(encoded);
61
+ }
62
+
63
+ export { loadFireblocksSigner };
64
+ //# sourceMappingURL=fireblocks-KCJV3GEK.mjs.map
65
+ //# sourceMappingURL=fireblocks-KCJV3GEK.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/server/providers/fireblocks.ts"],"names":[],"mappings":";AA2BA,eAAsB,qBAAqB,MAAA,EAAyD;AAGhG,EAAA,IAAI,gBAAA;AAEJ,EAAA,IAAI;AAEA,IAAA,gBAAA,GAAA,CADgB,MAAM,OAAO,6BAA6B,CAAA,EAChC,gBAAA;AAAA,EAC9B,CAAA,CAAA,MAAgB;AACZ,IAAA,MAAM,IAAI,KAAA;AAAA,MACN;AAAA,KAEJ;AAAA,EACJ;AAEA,EAAA,IAAI,CAAC,gBAAA;AACD,IAAA,MAAM,IAAI,MAAM,8DAA8D,CAAA;AAIlF,EAAA,IAAM,MAAA,GAAS,IAAI,gBAAA,CAAiB;AAAA,IAChC,QAAQ,MAAA,CAAO,MAAA;AAAA,IACf,eAAe,MAAA,CAAO,aAAA;AAAA,IACtB,gBAAgB,MAAA,CAAO,cAAA;AAAA,IACvB,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,YAAY,MAAA,CAAO;AAAA,GACtB,CAAA;AAGD,EAAA,OAAA,MAAM,MAAA,CAAO,MAAK,EAGX;AAAA,IACH,IAAI,OAAA,GAAU;AACV,MAAA,OAAO,MAAA,CAAO,OAAA;AAAA,IAClB,CAAA;AAAA,IAEA,MAAM,gBAAgB,gBAAA,EAAmD;AAQrE,MAAA,OADe,MAAM,kBAAA,CAAmB,MAAA,EAAQ,gBAAgB,CAAA;AAAA,IAEpE,CAAA;AAAA,IAEA,MAAM,oBAAoB,YAAA,EAAmD;AAEzE,MAAA,IAAM,UAAwB,EAAC;AAC/B,MAAA,KAAA,IAAW,WAAW,YAAA,EAAc;AAChC,QAAA,IAAM,MAAA,GAAS,MAAM,kBAAA,CAAmB,MAAA,EAAQ,OAAO,CAAA;AACvD,QAAA,OAAA,CAAQ,KAAK,MAAM,CAAA;AAAA,MACvB;AACA,MAAA,OAAO,OAAA;AAAA,IACX,CAAA;AAAA,IAEA,MAAM,YAAY,OAAA,EAA0C;AAGxD,MAAA,IAAM,eAAA,GAAkB;AAAA,QACpB,OAAA,EAAS,OAAA;AAAA,QACT,YAAY;AAAC,OACjB,EAMM,SAAA,GAAA,CAJU,MAAM,MAAA,CAAO,YAAA,CAAa,CAAC,eAA6C,CAAC,CAAA,EAGjE,CAAC,CAAA,CACC,MAAA,CAAO,OAAO,CAAA;AAExC,MAAA,IAAI,CAAC,SAAA;AACD,QAAA,MAAM,IAAI,MAAM,uCAAuC,CAAA;AAG3D,MAAA,OAAO,SAAA;AAAA,IACX,CAAA;AAAA,IAEA,MAAM,WAAA,GAAgC;AAClC,MAAA,OAAO,OAAO,WAAA,EAAY;AAAA,IAC9B;AAAA,GACJ;AACJ;AAKA,eAAe,kBAAA,CAAmB,QAA8B,gBAAA,EAAmD;AAE/G,EAAA,IAAM,EAAE,qBAAA,EAAuB,qBAAA,EAAsB,GAAI,MAAM,OAAO,sBAAsB,CAAA,EAItF,WAAA,GADU,qBAAA,EAAsB,CACV,MAAA,CAAO,gBAAgB,CAAA,EAO7C,SAAA,GAAA,CAJU,MAAM,MAAA,CAAO,gBAAA,CAAiB,CAAC,WAAsB,CAAC,CAAA,EAG9C,CAAC,CAAA,CACC,MAAA,CAAO,OAAO,CAAA;AAExC,EAAA,IAAI,CAAC,SAAA;AACD,IAAA,MAAM,IAAI,MAAM,uCAAuC,CAAA;AAI3D,EAAA,IAAM,OAAA,GAAU,qBAAA,EAAsB,EAChC,QAAA,GAAW;AAAA,IACb,GAAG,WAAA;AAAA,IACH,UAAA,EAAY;AAAA,MACR,GAAG,WAAA,CAAY,UAAA;AAAA,MACf,CAAC,MAAA,CAAO,OAAO,GAAG;AAAA;AACtB,GACJ,EAEM,OAAA,GAAU,OAAA,CAAQ,MAAA,CAAO,QAAgD,CAAA;AAC/E,EAAA,OAAO,IAAI,WAAW,OAAO,CAAA;AACjC","file":"fireblocks-KCJV3GEK.mjs","sourcesContent":["/**\n * @solana/connector/server - Fireblocks Provider\n *\n * Dynamically loads @solana/keychain and adapts the Fireblocks signer to the RemoteSigner interface.\n * This file is only imported server-side when Fireblocks is configured.\n */\n\nimport type { RemoteSigner, FireblocksProviderConfig } from '../route-handlers';\nimport type { SignableMessage } from '@solana/signers';\n\ninterface KeychainSignerLike {\n address: string;\n isAvailable: () => Promise<boolean>;\n signMessages: (messages: SignableMessage[]) => Promise<Record<string, Uint8Array>[]>;\n signTransactions: (transactions: unknown[]) => Promise<Record<string, Uint8Array>[]>;\n}\n\ninterface FireblocksSignerLike extends KeychainSignerLike {\n init: () => Promise<void>;\n}\n\n/**\n * Load and initialize a Fireblocks signer\n *\n * @param config - Fireblocks provider configuration\n * @returns RemoteSigner implementation backed by Fireblocks\n */\nexport async function loadFireblocksSigner(config: FireblocksProviderConfig): Promise<RemoteSigner> {\n // Dynamically import @solana/keychain\n // This keeps the dependency optional and only loaded when needed\n let FireblocksSigner: (new (args: unknown) => FireblocksSignerLike) | undefined;\n\n try {\n const module = (await import('@solana/keychain-fireblocks')) as unknown as { FireblocksSigner?: unknown };\n FireblocksSigner = module.FireblocksSigner as (new (args: unknown) => FireblocksSignerLike) | undefined;\n } catch (error) {\n throw new Error(\n '@solana/keychain-fireblocks is not installed. ' +\n 'Install it with: npm install @solana/keychain-fireblocks',\n );\n }\n\n if (!FireblocksSigner) {\n throw new Error('@solana/keychain-fireblocks does not export FireblocksSigner');\n }\n\n // Create and initialize the Fireblocks signer\n const signer = new FireblocksSigner({\n apiKey: config.apiKey,\n privateKeyPem: config.privateKeyPem,\n vaultAccountId: config.vaultAccountId,\n assetId: config.assetId,\n apiBaseUrl: config.apiBaseUrl,\n });\n\n // Initialize to fetch the public key\n await signer.init();\n\n // Adapt to RemoteSigner interface\n return {\n get address() {\n return signer.address;\n },\n\n async signTransaction(transactionBytes: Uint8Array): Promise<Uint8Array> {\n // Fireblocks signer expects Kit transactions, but we have raw bytes\n // We need to decode, sign, and re-encode\n // For now, use the raw signing approach\n\n // The keychain signer's signTransactions expects Transaction objects\n // We'll use a workaround: create a minimal transaction-like object\n const result = await signWithFireblocks(signer, transactionBytes);\n return result;\n },\n\n async signAllTransactions(transactions: Uint8Array[]): Promise<Uint8Array[]> {\n // Sign each transaction sequentially\n const results: Uint8Array[] = [];\n for (const txBytes of transactions) {\n const signed = await signWithFireblocks(signer, txBytes);\n results.push(signed);\n }\n return results;\n },\n\n async signMessage(message: Uint8Array): Promise<Uint8Array> {\n // Use the signer's signMessages method\n // Create a SignableMessage\n const signableMessage = {\n content: message,\n signatures: {} as Record<string, Uint8Array>,\n };\n\n const results = await signer.signMessages([signableMessage as unknown as SignableMessage]);\n\n // Extract the signature from the first result\n const sigDict = results[0];\n const signature = sigDict[signer.address];\n\n if (!signature) {\n throw new Error('No signature returned from Fireblocks');\n }\n\n return signature;\n },\n\n async isAvailable(): Promise<boolean> {\n return signer.isAvailable();\n },\n };\n}\n\n/**\n * Sign transaction bytes using the Fireblocks signer\n */\nasync function signWithFireblocks(signer: FireblocksSignerLike, transactionBytes: Uint8Array): Promise<Uint8Array> {\n // Import transaction utilities\n const { getTransactionDecoder, getTransactionEncoder } = await import('@solana/transactions');\n\n // Decode the transaction\n const decoder = getTransactionDecoder();\n const transaction = decoder.decode(transactionBytes);\n\n // Sign the transaction\n const results = await signer.signTransactions([transaction as unknown]);\n\n // Get the signature\n const sigDict = results[0];\n const signature = sigDict[signer.address];\n\n if (!signature) {\n throw new Error('No signature returned from Fireblocks');\n }\n\n // Re-encode the transaction with the signature\n const encoder = getTransactionEncoder();\n const signedTx = {\n ...transaction,\n signatures: {\n ...transaction.signatures,\n [signer.address]: signature,\n },\n };\n\n const encoded = encoder.encode(signedTx as Parameters<typeof encoder.encode>[0]);\n return new Uint8Array(encoded);\n}\n"]}
@@ -1,5 +1,8 @@
1
- import { t as ClusterType, ad as StorageOptions, ac as StorageAdapter, ae as EnhancedStorageAccountOptions, af as EnhancedStorageClusterOptions, ag as EnhancedStorageWalletOptions, ah as EnhancedStorageWalletStateOptions, ai as PersistedWalletState, _ as WalletConnectConfig, a0 as WalletConnectTransport } from './standard-shim-CGB88PPO.mjs';
2
- export { a2 as AccountAddress, A as AccountInfo, as as ClipboardErrorType, at as ClipboardResult, a5 as CoinGeckoConfig, n as ConnectOptions, v as ConnectorClient, d as ConnectorConfig, a7 as ConnectorDebugMetrics, a8 as ConnectorDebugState, aa as ConnectorEvent, ab as ConnectorEventListener, a6 as ConnectorHealth, e as ConnectorState, au as CopyOptions, Z as CreateSolanaClientArgs, D as DefaultConfigOptions, E as ExtendedConnectorConfig, I as INITIAL_WALLET_STATUS, a9 as Listener, M as MobileWalletAdapterConfig, X as ModifiedClusterUrl, R as RegisterMwaConfig, m as SessionAccount, Y as SolanaClient, V as SolanaClusterMoniker, $ as WalletConnectMetadata, ao as WalletConnectSignAllTransactionsParams, ap as WalletConnectSignAllTransactionsResult, aq as WalletConnectSignAndSendTransactionParams, ar as WalletConnectSignAndSendTransactionResult, ak as WalletConnectSignMessageParams, al as WalletConnectSignMessageResult, am as WalletConnectSignTransactionParams, an as WalletConnectSignTransactionResult, aj as WalletConnectSolanaAccount, G as WalletConnector, i as WalletConnectorId, j as WalletConnectorMetadata, Q as WalletError, N as WalletErrorType, W as WalletInfo, a1 as WalletName, k as WalletSession, h as WalletStandardAccount, f as WalletStandardWallet, l as WalletStatus, K as WalletStatusConnected, J as WalletStatusConnecting, H as WalletStatusDisconnected, L as WalletStatusError, ax as copyAddressToClipboard, ay as copySignatureToClipboard, aw as copyToClipboard, o as createConnectorId, U as createSolanaClient, P as createWalletError, aC as getAddressUrl, aE as getBlockUrl, aM as getChainIdForWalletStandard, aL as getClusterChainId, aA as getClusterExplorerUrl, aJ as getClusterName, az as getClusterRpcUrl, aK as getClusterType, g as getDefaultConfig, b as getDefaultMobileConfig, T as getPublicSolanaRpcUrl, aD as getTokenUrl, aB as getTransactionUrl, y as getWalletNameFromConnectorId, w as getWalletsRegistry, a4 as isAccountAddress, av as isClipboardAvailable, q as isConnected, r as isConnecting, aG as isDevnetCluster, s as isDisconnected, aI as isLocalCluster, aF as isMainnetCluster, z as isStatusError, aH as isTestnetCluster, p as isWalletConnectorId, O as isWalletError, a3 as isWalletName, B as isWalletStatusError, x as ready, F as toLegacyWalletState } from './standard-shim-CGB88PPO.mjs';
1
+ import { v as ClusterType, ae as StorageOptions, ad as StorageAdapter, af as EnhancedStorageAccountOptions, ag as EnhancedStorageClusterOptions, ah as EnhancedStorageWalletOptions, ai as EnhancedStorageWalletStateOptions, aj as PersistedWalletState, $ as WalletConnectConfig, a1 as WalletConnectTransport } from './standard-shim-n5phZB1d.mjs';
2
+ export { a3 as AccountAddress, A as AccountInfo, at as ClipboardErrorType, au as ClipboardResult, a6 as CoinGeckoConfig, o as ConnectOptions, w as ConnectorClient, d as ConnectorConfig, a8 as ConnectorDebugMetrics, a9 as ConnectorDebugState, ab as ConnectorEvent, ac as ConnectorEventListener, a7 as ConnectorHealth, e as ConnectorState, av as CopyOptions, _ as CreateSolanaClientArgs, D as DefaultConfigOptions, E as ExtendedConnectorConfig, I as INITIAL_WALLET_STATUS, aa as Listener, M as MobileWalletAdapterConfig, Y as ModifiedClusterUrl, R as RegisterMwaConfig, n as SessionAccount, Z as SolanaClient, X as SolanaClusterMoniker, a0 as WalletConnectMetadata, ap as WalletConnectSignAllTransactionsParams, aq as WalletConnectSignAllTransactionsResult, ar as WalletConnectSignAndSendTransactionParams, as as WalletConnectSignAndSendTransactionResult, al as WalletConnectSignMessageParams, am as WalletConnectSignMessageResult, an as WalletConnectSignTransactionParams, ao as WalletConnectSignTransactionResult, ak as WalletConnectSolanaAccount, H as WalletConnector, j as WalletConnectorId, k as WalletConnectorMetadata, f as WalletDisplayConfig, T as WalletError, O as WalletErrorType, W as WalletInfo, a2 as WalletName, l as WalletSession, i as WalletStandardAccount, h as WalletStandardWallet, m as WalletStatus, L as WalletStatusConnected, K as WalletStatusConnecting, J as WalletStatusDisconnected, N as WalletStatusError, ay as copyAddressToClipboard, az as copySignatureToClipboard, ax as copyToClipboard, p as createConnectorId, V as createSolanaClient, Q as createWalletError, aD as getAddressUrl, aF as getBlockUrl, aN as getChainIdForWalletStandard, aM as getClusterChainId, aB as getClusterExplorerUrl, aK as getClusterName, aA as getClusterRpcUrl, aL as getClusterType, g as getDefaultConfig, b as getDefaultMobileConfig, U as getPublicSolanaRpcUrl, aE as getTokenUrl, aC as getTransactionUrl, z as getWalletNameFromConnectorId, x as getWalletsRegistry, a5 as isAccountAddress, aw as isClipboardAvailable, r as isConnected, s as isConnecting, aH as isDevnetCluster, t as isDisconnected, aJ as isLocalCluster, aG as isMainnetCluster, B as isStatusError, aI as isTestnetCluster, q as isWalletConnectorId, P as isWalletError, a4 as isWalletName, F as isWalletStatusError, y as ready, G as toLegacyWalletState } from './standard-shim-n5phZB1d.mjs';
3
+ import * as _wallet_standard_base from '@wallet-standard/base';
4
+ import { Wallet, WalletAccount } from '@wallet-standard/base';
5
+ export { Wallet, WalletAccount } from '@wallet-standard/base';
3
6
  import { z } from 'zod/v4';
4
7
  import { a as TransactionSigner } from './transaction-signer-7NaYmP5w.mjs';
5
8
  export { d as ConfigurationError, p as ConfigurationErrorCode, b as ConnectionError, n as ConnectionErrorCode, C as ConnectorError, E as Errors, N as NetworkError, q as NetworkErrorCode, u as SignedTransaction, S as SolanaTransaction, w as TransactionActivity, x as TransactionActivityStatus, e as TransactionError, r as TransactionErrorCode, z as TransactionMetadata, y as TransactionMethod, v as TransactionSignerCapabilities, s as TransactionSignerConfig, T as TransactionSignerError, V as ValidationError, o as ValidationErrorCode, c as createTransactionSigner, m as getUserFriendlyMessage, j as isConfigurationError, g as isConnectionError, f as isConnectorError, k as isNetworkError, l as isTransactionError, i as isTransactionSignerError, h as isValidationError, t as toConnectorError } from './transaction-signer-7NaYmP5w.mjs';
@@ -15,20 +18,11 @@ import { SignatureBytes } from '@solana/keys';
15
18
  export { SignatureBytes } from '@solana/keys';
16
19
  import { Transaction } from '@solana/transactions';
17
20
  export { Transaction } from '@solana/transactions';
18
- import { Wallet, WalletAccount } from '@wallet-standard/base';
19
- export { Wallet, WalletAccount } from '@wallet-standard/base';
20
21
  import 'react/jsx-runtime';
21
22
  import 'react';
22
23
  import '@solana-mobile/wallet-standard-mobile';
23
24
  import '@solana/transaction-messages';
24
25
 
25
- /**
26
- * @solana/connector - Configuration Schemas
27
- *
28
- * Zod schemas for runtime validation of configuration options.
29
- * These schemas provide type-safe validation with helpful error messages.
30
- */
31
-
32
26
  declare const defaultConfigOptionsSchema: z.ZodObject<{
33
27
  appName: z.ZodString;
34
28
  appUrl: z.ZodOptional<z.ZodString>;
@@ -100,6 +94,12 @@ declare const defaultConfigOptionsSchema: z.ZodObject<{
100
94
  onSessionDisconnected: z.ZodOptional<z.ZodCustom<() => void, () => void>>;
101
95
  relayUrl: z.ZodOptional<z.ZodString>;
102
96
  }, z.core.$strip>]>>;
97
+ additionalWallets: z.ZodOptional<z.ZodArray<z.ZodCustom<_wallet_standard_base.Wallet, _wallet_standard_base.Wallet>>>;
98
+ wallets: z.ZodOptional<z.ZodObject<{
99
+ allowList: z.ZodOptional<z.ZodArray<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>>;
100
+ denyList: z.ZodOptional<z.ZodArray<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>>;
101
+ featured: z.ZodOptional<z.ZodArray<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>>;
102
+ }, z.core.$strip>>;
103
103
  onError: z.ZodOptional<z.ZodCustom<(...args: unknown[]) => unknown, (...args: unknown[]) => unknown>>;
104
104
  }, z.core.$strip>;
105
105
  type DefaultConfigOptionsInput = z.input<typeof defaultConfigOptionsSchema>;
@@ -1,5 +1,8 @@
1
- import { t as ClusterType, ad as StorageOptions, ac as StorageAdapter, ae as EnhancedStorageAccountOptions, af as EnhancedStorageClusterOptions, ag as EnhancedStorageWalletOptions, ah as EnhancedStorageWalletStateOptions, ai as PersistedWalletState, _ as WalletConnectConfig, a0 as WalletConnectTransport } from './standard-shim-tmnQelaJ.js';
2
- export { a2 as AccountAddress, A as AccountInfo, as as ClipboardErrorType, at as ClipboardResult, a5 as CoinGeckoConfig, n as ConnectOptions, v as ConnectorClient, d as ConnectorConfig, a7 as ConnectorDebugMetrics, a8 as ConnectorDebugState, aa as ConnectorEvent, ab as ConnectorEventListener, a6 as ConnectorHealth, e as ConnectorState, au as CopyOptions, Z as CreateSolanaClientArgs, D as DefaultConfigOptions, E as ExtendedConnectorConfig, I as INITIAL_WALLET_STATUS, a9 as Listener, M as MobileWalletAdapterConfig, X as ModifiedClusterUrl, R as RegisterMwaConfig, m as SessionAccount, Y as SolanaClient, V as SolanaClusterMoniker, $ as WalletConnectMetadata, ao as WalletConnectSignAllTransactionsParams, ap as WalletConnectSignAllTransactionsResult, aq as WalletConnectSignAndSendTransactionParams, ar as WalletConnectSignAndSendTransactionResult, ak as WalletConnectSignMessageParams, al as WalletConnectSignMessageResult, am as WalletConnectSignTransactionParams, an as WalletConnectSignTransactionResult, aj as WalletConnectSolanaAccount, G as WalletConnector, i as WalletConnectorId, j as WalletConnectorMetadata, Q as WalletError, N as WalletErrorType, W as WalletInfo, a1 as WalletName, k as WalletSession, h as WalletStandardAccount, f as WalletStandardWallet, l as WalletStatus, K as WalletStatusConnected, J as WalletStatusConnecting, H as WalletStatusDisconnected, L as WalletStatusError, ax as copyAddressToClipboard, ay as copySignatureToClipboard, aw as copyToClipboard, o as createConnectorId, U as createSolanaClient, P as createWalletError, aC as getAddressUrl, aE as getBlockUrl, aM as getChainIdForWalletStandard, aL as getClusterChainId, aA as getClusterExplorerUrl, aJ as getClusterName, az as getClusterRpcUrl, aK as getClusterType, g as getDefaultConfig, b as getDefaultMobileConfig, T as getPublicSolanaRpcUrl, aD as getTokenUrl, aB as getTransactionUrl, y as getWalletNameFromConnectorId, w as getWalletsRegistry, a4 as isAccountAddress, av as isClipboardAvailable, q as isConnected, r as isConnecting, aG as isDevnetCluster, s as isDisconnected, aI as isLocalCluster, aF as isMainnetCluster, z as isStatusError, aH as isTestnetCluster, p as isWalletConnectorId, O as isWalletError, a3 as isWalletName, B as isWalletStatusError, x as ready, F as toLegacyWalletState } from './standard-shim-tmnQelaJ.js';
1
+ import { v as ClusterType, ae as StorageOptions, ad as StorageAdapter, af as EnhancedStorageAccountOptions, ag as EnhancedStorageClusterOptions, ah as EnhancedStorageWalletOptions, ai as EnhancedStorageWalletStateOptions, aj as PersistedWalletState, $ as WalletConnectConfig, a1 as WalletConnectTransport } from './standard-shim-BB0Lkg_C.js';
2
+ export { a3 as AccountAddress, A as AccountInfo, at as ClipboardErrorType, au as ClipboardResult, a6 as CoinGeckoConfig, o as ConnectOptions, w as ConnectorClient, d as ConnectorConfig, a8 as ConnectorDebugMetrics, a9 as ConnectorDebugState, ab as ConnectorEvent, ac as ConnectorEventListener, a7 as ConnectorHealth, e as ConnectorState, av as CopyOptions, _ as CreateSolanaClientArgs, D as DefaultConfigOptions, E as ExtendedConnectorConfig, I as INITIAL_WALLET_STATUS, aa as Listener, M as MobileWalletAdapterConfig, Y as ModifiedClusterUrl, R as RegisterMwaConfig, n as SessionAccount, Z as SolanaClient, X as SolanaClusterMoniker, a0 as WalletConnectMetadata, ap as WalletConnectSignAllTransactionsParams, aq as WalletConnectSignAllTransactionsResult, ar as WalletConnectSignAndSendTransactionParams, as as WalletConnectSignAndSendTransactionResult, al as WalletConnectSignMessageParams, am as WalletConnectSignMessageResult, an as WalletConnectSignTransactionParams, ao as WalletConnectSignTransactionResult, ak as WalletConnectSolanaAccount, H as WalletConnector, j as WalletConnectorId, k as WalletConnectorMetadata, f as WalletDisplayConfig, T as WalletError, O as WalletErrorType, W as WalletInfo, a2 as WalletName, l as WalletSession, i as WalletStandardAccount, h as WalletStandardWallet, m as WalletStatus, L as WalletStatusConnected, K as WalletStatusConnecting, J as WalletStatusDisconnected, N as WalletStatusError, ay as copyAddressToClipboard, az as copySignatureToClipboard, ax as copyToClipboard, p as createConnectorId, V as createSolanaClient, Q as createWalletError, aD as getAddressUrl, aF as getBlockUrl, aN as getChainIdForWalletStandard, aM as getClusterChainId, aB as getClusterExplorerUrl, aK as getClusterName, aA as getClusterRpcUrl, aL as getClusterType, g as getDefaultConfig, b as getDefaultMobileConfig, U as getPublicSolanaRpcUrl, aE as getTokenUrl, aC as getTransactionUrl, z as getWalletNameFromConnectorId, x as getWalletsRegistry, a5 as isAccountAddress, aw as isClipboardAvailable, r as isConnected, s as isConnecting, aH as isDevnetCluster, t as isDisconnected, aJ as isLocalCluster, aG as isMainnetCluster, B as isStatusError, aI as isTestnetCluster, q as isWalletConnectorId, P as isWalletError, a4 as isWalletName, F as isWalletStatusError, y as ready, G as toLegacyWalletState } from './standard-shim-BB0Lkg_C.js';
3
+ import * as _wallet_standard_base from '@wallet-standard/base';
4
+ import { Wallet, WalletAccount } from '@wallet-standard/base';
5
+ export { Wallet, WalletAccount } from '@wallet-standard/base';
3
6
  import { z } from 'zod/v4';
4
7
  import { a as TransactionSigner } from './transaction-signer-7NaYmP5w.js';
5
8
  export { d as ConfigurationError, p as ConfigurationErrorCode, b as ConnectionError, n as ConnectionErrorCode, C as ConnectorError, E as Errors, N as NetworkError, q as NetworkErrorCode, u as SignedTransaction, S as SolanaTransaction, w as TransactionActivity, x as TransactionActivityStatus, e as TransactionError, r as TransactionErrorCode, z as TransactionMetadata, y as TransactionMethod, v as TransactionSignerCapabilities, s as TransactionSignerConfig, T as TransactionSignerError, V as ValidationError, o as ValidationErrorCode, c as createTransactionSigner, m as getUserFriendlyMessage, j as isConfigurationError, g as isConnectionError, f as isConnectorError, k as isNetworkError, l as isTransactionError, i as isTransactionSignerError, h as isValidationError, t as toConnectorError } from './transaction-signer-7NaYmP5w.js';
@@ -15,20 +18,11 @@ import { SignatureBytes } from '@solana/keys';
15
18
  export { SignatureBytes } from '@solana/keys';
16
19
  import { Transaction } from '@solana/transactions';
17
20
  export { Transaction } from '@solana/transactions';
18
- import { Wallet, WalletAccount } from '@wallet-standard/base';
19
- export { Wallet, WalletAccount } from '@wallet-standard/base';
20
21
  import 'react/jsx-runtime';
21
22
  import 'react';
22
23
  import '@solana-mobile/wallet-standard-mobile';
23
24
  import '@solana/transaction-messages';
24
25
 
25
- /**
26
- * @solana/connector - Configuration Schemas
27
- *
28
- * Zod schemas for runtime validation of configuration options.
29
- * These schemas provide type-safe validation with helpful error messages.
30
- */
31
-
32
26
  declare const defaultConfigOptionsSchema: z.ZodObject<{
33
27
  appName: z.ZodString;
34
28
  appUrl: z.ZodOptional<z.ZodString>;
@@ -100,6 +94,12 @@ declare const defaultConfigOptionsSchema: z.ZodObject<{
100
94
  onSessionDisconnected: z.ZodOptional<z.ZodCustom<() => void, () => void>>;
101
95
  relayUrl: z.ZodOptional<z.ZodString>;
102
96
  }, z.core.$strip>]>>;
97
+ additionalWallets: z.ZodOptional<z.ZodArray<z.ZodCustom<_wallet_standard_base.Wallet, _wallet_standard_base.Wallet>>>;
98
+ wallets: z.ZodOptional<z.ZodObject<{
99
+ allowList: z.ZodOptional<z.ZodArray<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>>;
100
+ denyList: z.ZodOptional<z.ZodArray<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>>;
101
+ featured: z.ZodOptional<z.ZodArray<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>>;
102
+ }, z.core.$strip>>;
103
103
  onError: z.ZodOptional<z.ZodCustom<(...args: unknown[]) => unknown, (...args: unknown[]) => unknown>>;
104
104
  }, z.core.$strip>;
105
105
  type DefaultConfigOptionsInput = z.input<typeof defaultConfigOptionsSchema>;