@tuwaio/nova-connect 1.0.0-fix-indep-alpha.5.6193060 → 1.0.0-fix-indep-alpha.6.bc09cf6
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.
- package/dist/{chunk-KHTOKJXG.js → chunk-4GXQK7LW.js} +2 -2
- package/dist/{chunk-KHTOKJXG.js.map → chunk-4GXQK7LW.js.map} +1 -1
- package/dist/{chunk-PVAIL24L.cjs → chunk-4WY4LVQ2.cjs} +4 -4
- package/dist/{chunk-PVAIL24L.cjs.map → chunk-4WY4LVQ2.cjs.map} +1 -1
- package/dist/chunk-7EUQO34W.js +3 -0
- package/dist/chunk-7EUQO34W.js.map +1 -0
- package/dist/{chunk-S5TAJFN7.js → chunk-CKCFLRRG.js} +3 -3
- package/dist/{chunk-S5TAJFN7.js.map → chunk-CKCFLRRG.js.map} +1 -1
- package/dist/{chunk-V5GQCWQZ.cjs → chunk-EWPT6HNX.cjs} +2 -2
- package/dist/{chunk-V5GQCWQZ.cjs.map → chunk-EWPT6HNX.cjs.map} +1 -1
- package/dist/chunk-F4INBENJ.cjs +3 -0
- package/dist/chunk-F4INBENJ.cjs.map +1 -0
- package/dist/components/index.cjs +1 -1
- package/dist/components/index.js +1 -1
- package/dist/evm/index.cjs +1 -1
- package/dist/evm/index.cjs.map +1 -1
- package/dist/evm/index.d.cts +1 -0
- package/dist/evm/index.d.ts +1 -0
- package/dist/evm/index.js +1 -1
- package/dist/evm/index.js.map +1 -1
- package/dist/{evm-2NGLNESD.js → evm-KPV5OJOP.js} +2 -2
- package/dist/{evm-2NGLNESD.js.map → evm-KPV5OJOP.js.map} +1 -1
- package/dist/{evm-QOQXZDXD.cjs → evm-Y352LZL3.cjs} +2 -2
- package/dist/{evm-QOQXZDXD.cjs.map → evm-Y352LZL3.cjs.map} +1 -1
- package/dist/{getChainsListByConnectorType-654NGZVM.js → getChainsListByConnectorType-6UA3PPII.js} +2 -2
- package/dist/{getChainsListByConnectorType-654NGZVM.js.map → getChainsListByConnectorType-6UA3PPII.js.map} +1 -1
- package/dist/getChainsListByConnectorType-RKKDUHIO.cjs +2 -0
- package/dist/{getChainsListByConnectorType-G4LPWG63.cjs.map → getChainsListByConnectorType-RKKDUHIO.cjs.map} +1 -1
- package/dist/hooks/index.cjs +1 -1
- package/dist/hooks/index.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/dist/solana/index.cjs +1 -1
- package/dist/solana/index.cjs.map +1 -1
- package/dist/solana/index.d.cts +4 -1
- package/dist/solana/index.d.ts +4 -1
- package/dist/solana/index.js +1 -1
- package/dist/solana/index.js.map +1 -1
- package/dist/{solana-DRLKIVWR.js → solana-2KX5XQPR.js} +2 -2
- package/dist/{solana-DRLKIVWR.js.map → solana-2KX5XQPR.js.map} +1 -1
- package/dist/{solana-BWAWRAWW.cjs → solana-KISWBTPH.cjs} +2 -2
- package/dist/{solana-BWAWRAWW.cjs.map → solana-KISWBTPH.cjs.map} +1 -1
- package/package.json +3 -3
- package/dist/chunk-4QL7WUAL.cjs +0 -3
- package/dist/chunk-4QL7WUAL.cjs.map +0 -1
- package/dist/chunk-7SDYHBUU.js +0 -3
- package/dist/chunk-7SDYHBUU.js.map +0 -1
- package/dist/getChainsListByConnectorType-G4LPWG63.cjs +0 -2
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';async function n(){try{return await import('./evm/index.cjs')}catch(r){return console.warn("EVM utilities not available:",r),null}}async function i(){let r=await n();return {async getChains(e){return r?.getEvmChains?await r.getEvmChains(e):!Array.isArray(e)||e.length===0?[]:e.map(t=>typeof t=="object"&&t?.id!==void 0?t.id:typeof t=="number"||typeof t=="string"?t:null).filter(t=>t!==null&&(typeof t=="string"||typeof t=="number"))},isChainList(e){return r?.isEvmChainList?r.isEvmChainList(e):e.length>0&&e.every(t=>typeof t=="number")}}}async function s(){try{return await import('./evm/index.cjs'),!0}catch{return false}}exports.createEvmAdapter=i;exports.isEvmAdapterAvailable=s;//# sourceMappingURL=evm-
|
|
2
|
-
//# sourceMappingURL=evm-
|
|
1
|
+
'use strict';async function n(){try{return await import('./evm/index.cjs')}catch(r){return console.warn("EVM utilities not available:",r),null}}async function i(){let r=await n();return {async getChains(e){return r?.getEvmChains?await r.getEvmChains(e):!Array.isArray(e)||e.length===0?[]:e.map(t=>typeof t=="object"&&t?.id!==void 0?t.id:typeof t=="number"||typeof t=="string"?t:null).filter(t=>t!==null&&(typeof t=="string"||typeof t=="number"))},isChainList(e){return r?.isEvmChainList?r.isEvmChainList(e):e.length>0&&e.every(t=>typeof t=="number")}}}async function s(){try{return await import('./evm/index.cjs'),!0}catch{return false}}exports.createEvmAdapter=i;exports.isEvmAdapterAvailable=s;//# sourceMappingURL=evm-Y352LZL3.cjs.map
|
|
2
|
+
//# sourceMappingURL=evm-Y352LZL3.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils/adapters/evm.ts"],"names":["getEvmUtils","error","createEvmAdapter","evmUtils","appChains","chain","id","chains","isEvmAdapterAvailable"],"mappings":"aAgCA,eAAeA,CAAAA,EAA8C,CAC3D,GAAI,CAGF,OADiB,MAAM,OAAO,iBAAW,CAE3C,CAAA,MAASC,CAAAA,CAAO,CACd,OAAA,OAAA,CAAQ,IAAA,CAAK,8BAAA,CAAgCA,CAAK,CAAA,CAC3C,IACT,CACF,CA6BA,eAAsBC,CAAAA,EAA0C,CAC9D,IAAMC,CAAAA,CAAW,MAAMH,CAAAA,EAAY,CAEnC,OAAO,CAOL,MAAM,SAAA,CAAUI,CAAAA,CAA8C,CAE5D,OAAID,CAAAA,EAAU,YAAA,CACL,MAAMA,CAAAA,CAAS,YAAA,CAAaC,CAAS,CAAA,CAI1C,CAAC,KAAA,CAAM,OAAA,CAAQA,CAAS,CAAA,EAAKA,CAAAA,CAAU,MAAA,GAAW,CAAA,CAC7C,EAAC,CAGHA,CAAAA,CACJ,GAAA,CAAKC,CAAAA,EAEA,OAAOA,CAAAA,EAAU,QAAA,EAAYA,CAAAA,EAAO,EAAA,GAAO,OACtCA,CAAAA,CAAM,EAAA,CAGX,OAAOA,CAAAA,EAAU,QAAA,EAAY,OAAOA,CAAAA,EAAU,QAAA,CACzCA,CAAAA,CAEF,IACR,CAAA,CACA,MAAA,CAAQC,CAAAA,EAAmCA,CAAAA,GAAO,IAAA,GAAS,OAAOA,CAAAA,EAAO,QAAA,EAAY,OAAOA,CAAAA,EAAO,QAAA,CAAS,CACjH,CAAA,CASA,WAAA,CAAYC,CAAAA,CAAsC,CAChD,OAAIJ,CAAAA,EAAU,cAAA,CACLA,CAAAA,CAAS,cAAA,CAAeI,CAAM,CAAA,CAIhCA,CAAAA,CAAO,MAAA,CAAS,CAAA,EAAKA,CAAAA,CAAO,KAAA,CAAOF,CAAAA,EAAU,OAAOA,CAAAA,EAAU,QAAQ,CAC/E,CACF,CACF,CAsBA,eAAsBG,CAAAA,EAA0C,CAC9D,GAAI,CACF,OAAA,MAAM,OAAO,iBAAW,CAAA,CACjB,CAAA,CACT,CAAA,KAAQ,CACN,OAAO,MACT,CACF","file":"evm-
|
|
1
|
+
{"version":3,"sources":["../src/utils/adapters/evm.ts"],"names":["getEvmUtils","error","createEvmAdapter","evmUtils","appChains","chain","id","chains","isEvmAdapterAvailable"],"mappings":"aAgCA,eAAeA,CAAAA,EAA8C,CAC3D,GAAI,CAGF,OADiB,MAAM,OAAO,iBAAW,CAE3C,CAAA,MAASC,CAAAA,CAAO,CACd,OAAA,OAAA,CAAQ,IAAA,CAAK,8BAAA,CAAgCA,CAAK,CAAA,CAC3C,IACT,CACF,CA6BA,eAAsBC,CAAAA,EAA0C,CAC9D,IAAMC,CAAAA,CAAW,MAAMH,CAAAA,EAAY,CAEnC,OAAO,CAOL,MAAM,SAAA,CAAUI,CAAAA,CAA8C,CAE5D,OAAID,CAAAA,EAAU,YAAA,CACL,MAAMA,CAAAA,CAAS,YAAA,CAAaC,CAAS,CAAA,CAI1C,CAAC,KAAA,CAAM,OAAA,CAAQA,CAAS,CAAA,EAAKA,CAAAA,CAAU,MAAA,GAAW,CAAA,CAC7C,EAAC,CAGHA,CAAAA,CACJ,GAAA,CAAKC,CAAAA,EAEA,OAAOA,CAAAA,EAAU,QAAA,EAAYA,CAAAA,EAAO,EAAA,GAAO,OACtCA,CAAAA,CAAM,EAAA,CAGX,OAAOA,CAAAA,EAAU,QAAA,EAAY,OAAOA,CAAAA,EAAU,QAAA,CACzCA,CAAAA,CAEF,IACR,CAAA,CACA,MAAA,CAAQC,CAAAA,EAAmCA,CAAAA,GAAO,IAAA,GAAS,OAAOA,CAAAA,EAAO,QAAA,EAAY,OAAOA,CAAAA,EAAO,QAAA,CAAS,CACjH,CAAA,CASA,WAAA,CAAYC,CAAAA,CAAsC,CAChD,OAAIJ,CAAAA,EAAU,cAAA,CACLA,CAAAA,CAAS,cAAA,CAAeI,CAAM,CAAA,CAIhCA,CAAAA,CAAO,MAAA,CAAS,CAAA,EAAKA,CAAAA,CAAO,KAAA,CAAOF,CAAAA,EAAU,OAAOA,CAAAA,EAAU,QAAQ,CAC/E,CACF,CACF,CAsBA,eAAsBG,CAAAA,EAA0C,CAC9D,GAAI,CACF,OAAA,MAAM,OAAO,iBAAW,CAAA,CACjB,CAAA,CACT,CAAA,KAAQ,CACN,OAAO,MACT,CACF","file":"evm-Y352LZL3.cjs","sourcesContent":["import type { ChainAdapter } from './types';\n\n/**\n * EVM utilities module interface for dynamic imports.\n *\n * @internal\n * @since 1.0.0\n */\ninterface EvmUtilsModule {\n getEvmChains?: (appChains: any) => Promise<(string | number)[]>;\n isEvmChainList?: (chains: (string | number)[]) => boolean;\n initializeEvmUtils?: () => Promise<boolean>;\n}\n\n/**\n * Dynamically imports and checks availability of EVM utilities.\n * This function attempts to load EVM-specific utilities without throwing errors\n * if the EVM package is not installed in the current environment.\n *\n * @internal\n * @returns Promise resolving to EVM utilities module or null if not available\n *\n * @example\n * ```typescript\n * const evmUtils = await getEvmUtils();\n * if (evmUtils?.getEvmChains) {\n * const chains = evmUtils.getEvmChains(appChains);\n * }\n * ```\n *\n * @since 1.0.0\n */\nasync function getEvmUtils(): Promise<EvmUtilsModule | null> {\n try {\n // Dynamic import of EVM utilities - fails gracefully if package not installed\n const evmUtils = await import('../../evm');\n return evmUtils;\n } catch (error) {\n console.warn('EVM utilities not available:', error);\n return null;\n }\n}\n\n/**\n * Creates an EVM chain adapter with dynamic loading and fallback support.\n *\n * This adapter provides EVM-specific functionality while gracefully handling\n * environments where EVM utilities are not available. It uses intelligent\n * fallbacks to ensure basic functionality even without the full EVM package.\n *\n * @returns Promise resolving to a configured EVM ChainAdapter\n *\n * @example\n * ```typescript\n * const adapter = await createEvmAdapter();\n *\n * // Get EVM chain IDs from app configuration\n * const chainIds = adapter.getChains([\n * { id: 1, name: 'Ethereum' },\n * { id: 137, name: 'Polygon' }\n * ]);\n * console.log(chainIds); // [1, 137]\n *\n * // Validate chain list format\n * const isValid = adapter.isChainList([1, 137, 56]);\n * console.log(isValid); // true (numeric IDs are valid for EVM)\n * ```\n *\n * @since 1.0.0\n */\nexport async function createEvmAdapter(): Promise<ChainAdapter> {\n const evmUtils = await getEvmUtils();\n\n return {\n /**\n * Extracts chain IDs from EVM app chain configuration.\n *\n * @param appChains Array of chain configurations or chain identifiers\n * @returns Array of chain IDs (numbers or strings)\n */\n async getChains(appChains: any): Promise<(string | number)[]> {\n // Use imported EVM utilities if available\n if (evmUtils?.getEvmChains) {\n return await evmUtils.getEvmChains(appChains);\n }\n\n // Fallback implementation for basic chain extraction\n if (!Array.isArray(appChains) || appChains.length === 0) {\n return [];\n }\n\n return appChains\n .map((chain: any) => {\n // Handle chain objects with id property\n if (typeof chain === 'object' && chain?.id !== undefined) {\n return chain.id;\n }\n // Handle direct chain identifiers\n if (typeof chain === 'number' || typeof chain === 'string') {\n return chain;\n }\n return null;\n })\n .filter((id: any): id is string | number => id !== null && (typeof id === 'string' || typeof id === 'number'));\n },\n\n /**\n * Validates whether the provided chains list conforms to EVM chain format.\n * EVM chains are typically identified by numeric IDs.\n *\n * @param chains Array of chain identifiers to validate\n * @returns True if the chain list is valid for EVM\n */\n isChainList(chains: (string | number)[]): boolean {\n if (evmUtils?.isEvmChainList) {\n return evmUtils.isEvmChainList(chains);\n }\n\n // Fallback validation: EVM chains should be numbers\n return chains.length > 0 && chains.every((chain) => typeof chain === 'number');\n },\n };\n}\n\n/**\n * Checks if the EVM adapter can be created in the current environment.\n * This function verifies that the required EVM utilities are available\n * by attempting to import them.\n *\n * @returns Promise resolving to true if EVM adapter is available\n *\n * @example\n * ```typescript\n * const hasEvm = await isEvmAdapterAvailable();\n * if (hasEvm) {\n * const adapter = await createEvmAdapter();\n * // Use EVM functionality\n * } else {\n * console.log('EVM support not available in this build');\n * }\n * ```\n *\n * @since 1.0.0\n */\nexport async function isEvmAdapterAvailable(): Promise<boolean> {\n try {\n await import('../../evm');\n return true;\n } catch {\n return false;\n }\n}\n"]}
|
package/dist/{getChainsListByConnectorType-654NGZVM.js → getChainsListByConnectorType-6UA3PPII.js}
RENAMED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export{k as getAdapterStatus,l as getAllAdaptersStatus,g as getAvailableSolanaClusters,a as getChainsListByConnectorType,b as getChainsListByConnectorTypeSync,i as getWalletChains,c as isEvmChainList,e as isEvmChainListSync,d as isSolanaChainList,f as isSolanaChainListSync,h as isValidSolanaCluster,j as preloadChainAdapters}from'./chunk-
|
|
2
|
-
//# sourceMappingURL=getChainsListByConnectorType-
|
|
1
|
+
export{k as getAdapterStatus,l as getAllAdaptersStatus,g as getAvailableSolanaClusters,a as getChainsListByConnectorType,b as getChainsListByConnectorTypeSync,i as getWalletChains,c as isEvmChainList,e as isEvmChainListSync,d as isSolanaChainList,f as isSolanaChainListSync,h as isValidSolanaCluster,j as preloadChainAdapters}from'./chunk-4GXQK7LW.js';//# sourceMappingURL=getChainsListByConnectorType-6UA3PPII.js.map
|
|
2
|
+
//# sourceMappingURL=getChainsListByConnectorType-6UA3PPII.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"getChainsListByConnectorType-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"getChainsListByConnectorType-6UA3PPII.js"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
'use strict';var chunkEWPT6HNX_cjs=require('./chunk-EWPT6HNX.cjs');Object.defineProperty(exports,"getAdapterStatus",{enumerable:true,get:function(){return chunkEWPT6HNX_cjs.k}});Object.defineProperty(exports,"getAllAdaptersStatus",{enumerable:true,get:function(){return chunkEWPT6HNX_cjs.l}});Object.defineProperty(exports,"getAvailableSolanaClusters",{enumerable:true,get:function(){return chunkEWPT6HNX_cjs.g}});Object.defineProperty(exports,"getChainsListByConnectorType",{enumerable:true,get:function(){return chunkEWPT6HNX_cjs.a}});Object.defineProperty(exports,"getChainsListByConnectorTypeSync",{enumerable:true,get:function(){return chunkEWPT6HNX_cjs.b}});Object.defineProperty(exports,"getWalletChains",{enumerable:true,get:function(){return chunkEWPT6HNX_cjs.i}});Object.defineProperty(exports,"isEvmChainList",{enumerable:true,get:function(){return chunkEWPT6HNX_cjs.c}});Object.defineProperty(exports,"isEvmChainListSync",{enumerable:true,get:function(){return chunkEWPT6HNX_cjs.e}});Object.defineProperty(exports,"isSolanaChainList",{enumerable:true,get:function(){return chunkEWPT6HNX_cjs.d}});Object.defineProperty(exports,"isSolanaChainListSync",{enumerable:true,get:function(){return chunkEWPT6HNX_cjs.f}});Object.defineProperty(exports,"isValidSolanaCluster",{enumerable:true,get:function(){return chunkEWPT6HNX_cjs.h}});Object.defineProperty(exports,"preloadChainAdapters",{enumerable:true,get:function(){return chunkEWPT6HNX_cjs.j}});//# sourceMappingURL=getChainsListByConnectorType-RKKDUHIO.cjs.map
|
|
2
|
+
//# sourceMappingURL=getChainsListByConnectorType-RKKDUHIO.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"getChainsListByConnectorType-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"getChainsListByConnectorType-RKKDUHIO.cjs"}
|
package/dist/hooks/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var
|
|
1
|
+
'use strict';var chunkF4INBENJ_cjs=require('../chunk-F4INBENJ.cjs');require('../chunk-EWPT6HNX.cjs'),require('../chunk-PTHXIVB5.cjs'),require('../chunk-PUEGOPQT.cjs');Object.defineProperty(exports,"NovaConnectLabelsContext",{enumerable:true,get:function(){return chunkF4INBENJ_cjs.g}});Object.defineProperty(exports,"NovaConnectProviderContext",{enumerable:true,get:function(){return chunkF4INBENJ_cjs.c}});Object.defineProperty(exports,"NovaConnectProviderError",{enumerable:true,get:function(){return chunkF4INBENJ_cjs.b}});Object.defineProperty(exports,"createLabelsSubset",{enumerable:true,get:function(){return chunkF4INBENJ_cjs.o}});Object.defineProperty(exports,"getLabelWithFallback",{enumerable:true,get:function(){return chunkF4INBENJ_cjs.n}});Object.defineProperty(exports,"hasLabel",{enumerable:true,get:function(){return chunkF4INBENJ_cjs.k}});Object.defineProperty(exports,"isDefaultLabels",{enumerable:true,get:function(){return chunkF4INBENJ_cjs.m}});Object.defineProperty(exports,"useGetWalletNameAndAvatar",{enumerable:true,get:function(){return chunkF4INBENJ_cjs.a}});Object.defineProperty(exports,"useHasNovaConnectContext",{enumerable:true,get:function(){return chunkF4INBENJ_cjs.e}});Object.defineProperty(exports,"useLabelsByCategory",{enumerable:true,get:function(){return chunkF4INBENJ_cjs.l}});Object.defineProperty(exports,"useNovaConnect",{enumerable:true,get:function(){return chunkF4INBENJ_cjs.d}});Object.defineProperty(exports,"useNovaConnectLabel",{enumerable:true,get:function(){return chunkF4INBENJ_cjs.i}});Object.defineProperty(exports,"useNovaConnectLabels",{enumerable:true,get:function(){return chunkF4INBENJ_cjs.h}});Object.defineProperty(exports,"useNovaConnectLabelsSubset",{enumerable:true,get:function(){return chunkF4INBENJ_cjs.j}});Object.defineProperty(exports,"useNovaConnectOptional",{enumerable:true,get:function(){return chunkF4INBENJ_cjs.f}});Object.defineProperty(exports,"useWalletChainsList",{enumerable:true,get:function(){return chunkF4INBENJ_cjs.A}});Object.defineProperty(exports,"useWalletNativeBalance",{enumerable:true,get:function(){return chunkF4INBENJ_cjs.B}});//# sourceMappingURL=index.cjs.map
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
package/dist/hooks/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export{g as NovaConnectLabelsContext,c as NovaConnectProviderContext,b as NovaConnectProviderError,o as createLabelsSubset,n as getLabelWithFallback,k as hasLabel,m as isDefaultLabels,a as useGetWalletNameAndAvatar,e as useHasNovaConnectContext,l as useLabelsByCategory,d as useNovaConnect,i as useNovaConnectLabel,h as useNovaConnectLabels,j as useNovaConnectLabelsSubset,f as useNovaConnectOptional,A as useWalletChainsList,B as useWalletNativeBalance}from'../chunk-
|
|
1
|
+
export{g as NovaConnectLabelsContext,c as NovaConnectProviderContext,b as NovaConnectProviderError,o as createLabelsSubset,n as getLabelWithFallback,k as hasLabel,m as isDefaultLabels,a as useGetWalletNameAndAvatar,e as useHasNovaConnectContext,l as useLabelsByCategory,d as useNovaConnect,i as useNovaConnectLabel,h as useNovaConnectLabels,j as useNovaConnectLabelsSubset,f as useNovaConnectOptional,A as useWalletChainsList,B as useWalletNativeBalance}from'../chunk-7EUQO34W.js';import'../chunk-4GXQK7LW.js';import'../chunk-3BMX6JWH.js';import'../chunk-6ZNK56AI.js';//# sourceMappingURL=index.js.map
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var chunkPVAIL24L_cjs=require('./chunk-PVAIL24L.cjs'),chunk4QL7WUAL_cjs=require('./chunk-4QL7WUAL.cjs'),chunkV5GQCWQZ_cjs=require('./chunk-V5GQCWQZ.cjs'),chunkPTHXIVB5_cjs=require('./chunk-PTHXIVB5.cjs'),chunkPUEGOPQT_cjs=require('./chunk-PUEGOPQT.cjs'),orbitCore=require('@tuwaio/orbit-core'),novaCore=require('@tuwaio/nova-core'),react=require('react'),reactToastify=require('react-toastify'),jsxRuntime=require('react/jsx-runtime'),outline=require('@heroicons/react/24/outline'),framerMotion=require('framer-motion');var fe=({title:o,rawError:t,onCopyComplete:r,errorType:n,isConnected:e,...l})=>jsxRuntime.jsx(chunkPVAIL24L_cjs.D,{title:o,rawError:t,onCopyComplete:r,customization:l.customization}),ve=o=>{let t=chunk4QL7WUAL_cjs.h();return jsxRuntime.jsx(reactToastify.ToastContainer,{...o,role:"alert","aria-live":"assertive","aria-label":t.somethingWentWrong})},ge=(o,t)=>{o(t.title,t.rawError,t.errorKey);},be=o=>{o();},ye=(o,t)=>{o&&process.env.NODE_ENV==="development"&&console.log("Error copied to clipboard:",t.substring(0,100));},Te=o=>o,Ee=o=>o;function Po({containerId:o="nova-connect-errors",position:t="top-center",autoClose:r=7e3,draggable:n=false,customization:e}){let l=chunk4QL7WUAL_cjs.h(),s=chunkPUEGOPQT_cjs.i(d=>d.switchNetworkError),x=chunkPUEGOPQT_cjs.i(d=>d.activeConnection),k=chunkPUEGOPQT_cjs.i(d=>d.connectionError),{ToastError:h=fe,Container:g=ve}=e?.components??{},{showError:u=ge,dismissError:O=be,onCopyComplete:H=ye}=e?.handlers??{},{errorTitle:T=Te,errorHash:P=Ee}=e??{},M=react.useRef(new Set),R=react.useRef(null),i=react.useMemo(()=>{let d=!!k,y=!!s,D=!!x?.isConnected;return {hasWalletError:d,hasSwitchError:y,isConnected:D,hasAnyError:d||y,primaryError:k||s||null,errorType:d?"wallet":y?"switch":null}},[k,s,x?.isConnected]),z=react.useMemo(()=>{switch(i.errorType){case "wallet":return l.connectionError;case "switch":return l.errorWhenChainSwitching;default:return l.somethingWentWrong}},[i.errorType,l]),p=react.useMemo(()=>T(z,{errorType:i.errorType}),[T,z,i.errorType]),I=react.useMemo(()=>i.primaryError?`${i.errorType}-${i.primaryError.substring(0,50)}`:null,[i.primaryError,i.errorType]),f=react.useMemo(()=>P(I,{primaryError:i.primaryError,errorType:i.errorType}),[P,I,i.primaryError,i.errorType]),E=react.useCallback(()=>{O(()=>{R.current&&(reactToastify.toast.dismiss(R.current),R.current=null),reactToastify.toast.dismiss({containerId:o});});},[o,O]),F=react.useCallback((d,y)=>{H(d,y,i.errorType);},[H,i.errorType]),a=react.useCallback((d,y,D)=>{if(E(),!M.current.has(D))try{let V={containerId:o,toastId:D,onClose:()=>{M.current.delete(D),R.current=null;}},K=e?.toastOptions?.error?.({title:d,rawError:y,errorType:i.errorType,isConnected:i.isConnected}),J={...V,...K};reactToastify.toast.error(jsxRuntime.jsx(h,{title:d,rawError:y,errorType:i.errorType,isConnected:i.isConnected,onCopyComplete:Q=>F(Q,y),customization:e?.toastErrorCustomization}),J),M.current.add(D),R.current=D;}catch(V){console.error("Failed to show error toast:",V);}},[E,o,e?.toastOptions?.error,e?.toastErrorCustomization,h,i.errorType,i.isConnected,F]),v=react.useCallback((d,y,D)=>{u(a,{title:d,rawError:y,errorKey:D,errorType:i.errorType});},[a,u,i.errorType]);react.useEffect(()=>{let{hasAnyError:d,isConnected:y,primaryError:D}=i;if(y&&!d){E(),M.current.clear();return}if(d&&D&&f){if(y&&i.errorType!=="switch")return;v(p,D,f);}},[i,p,f,v,E]),react.useEffect(()=>()=>{E(),M.current.clear();},[E]);let b=react.useMemo(()=>e?.classNames?.container?e.classNames.container({hasErrors:i.hasAnyError,errorType:i.errorType}):"novacon:p-0 novacon:bg-transparent",[e,i.hasAnyError,i.errorType]),C=react.useMemo(()=>({containerId:o,position:t,closeOnClick:false,icon:false,closeButton:novaCore.ToastCloseButton,autoClose:r,hideProgressBar:false,newestOnTop:false,pauseOnFocusLoss:false,draggable:n,pauseOnHover:true,theme:"light",transition:reactToastify.Bounce}),[o,t,r,n]),N=react.useMemo(()=>({...C,...e?.containerProps,className:b}),[C,e?.containerProps,b]);return jsxRuntime.jsx(g,{...N})}Po.displayName="ErrorsProvider";function No({labels:o,children:t}){let r=react.useMemo(()=>o,[o]);if(process.env.NODE_ENV==="development"){(!o||typeof o!="object")&&console.warn("NovaConnectLabelsProvider: labels prop should be an object");let e=["connectWallet","disconnect","connecting","connected","error","success"].filter(l=>!(l in o));e.length>0&&console.warn(`NovaConnectLabelsProvider: Missing required labels: ${e.join(", ")}`);}return jsxRuntime.jsx(chunk4QL7WUAL_cjs.g.Provider,{value:r,children:t})}No.displayName="NovaConnectLabelsProvider";function Ie(o,t){if(!o||!Array.isArray(o)||!t)return;let r=o.find(n=>n&&typeof n=="object"&&"name"in n&&typeof n.name=="string"?orbitCore.formatConnectorName(n.name)===t:false);if(r&&typeof r=="object"&&"name"in r&&typeof r.name=="string")return r.name}var Xo=react.forwardRef(({className:o,children:t,modalData:r,...n},e)=>jsxRuntime.jsx("div",{ref:e,className:novaCore.cn("novacon:relative novacon:flex novacon:w-full novacon:flex-col",o),...n,children:t}));Xo.displayName="DefaultModalContainer";var Yo=react.forwardRef(({className:o,children:t,modalData:r,...n},e)=>jsxRuntime.jsx("div",{ref:e,className:o,...n,children:jsxRuntime.jsx(novaCore.DialogHeader,{children:t})}));Yo.displayName="DefaultModalHeader";var Zo=react.forwardRef(({className:o,onClick:t,modalData:r,...n},e)=>jsxRuntime.jsx("button",{ref:e,className:novaCore.cn("novacon:cursor-pointer novacon:text-[var(--tuwa-text-secondary)] novacon:transition novacon:duration-300 novacon:ease-in-out novacon:active:scale-75 novacon:hover:scale-110",o),type:"button",onClick:t,...n,children:jsxRuntime.jsx(outline.InformationCircleIcon,{width:20,height:20,className:"novacon:mr-1","aria-hidden":"true"})}));Zo.displayName="DefaultInfoButton";var oe=react.forwardRef(({className:o,children:t,modalData:r,...n},e)=>jsxRuntime.jsx(novaCore.DialogTitle,{ref:e,className:novaCore.cn("novacon:flex novacon:items-center",o),...n,children:t}));oe.displayName="DefaultTitle";var ee=react.forwardRef(({className:o,onClick:t,modalData:r,...n},e)=>jsxRuntime.jsx(novaCore.DialogClose,{asChild:true,children:jsxRuntime.jsx("button",{ref:e,type:"button",onClick:t,className:novaCore.cn("novacon:cursor-pointer novacon:rounded-full novacon:p-1 novacon:text-[var(--tuwa-text-tertiary)] novacon:transition-colors novacon:hover:bg-[var(--tuwa-bg-muted)] novacon:hover:text-[var(--tuwa-text-primary)]",o),...n,children:jsxRuntime.jsx(novaCore.CloseIcon,{"aria-hidden":"true"})})}));ee.displayName="DefaultCloseButton";var te=react.forwardRef(({className:o,children:t,modalData:r,...n},e)=>jsxRuntime.jsx("main",{ref:e,className:novaCore.cn("novacon:flex novacon:flex-col novacon:gap-4 novacon:p-4",o),id:"connect-modal-content",role:"main",...n,children:t}));te.displayName="DefaultMainContent";var ne=react.forwardRef(({className:o,children:t,modalData:r,...n},e)=>jsxRuntime.jsx("footer",{ref:e,className:novaCore.cn("novacon:flex novacon:w-full novacon:items-center novacon:justify-between novacon:border-t novacon:border-[var(--tuwa-border-primary)] novacon:p-4",o),role:"contentinfo",...n,children:t}));ne.displayName="DefaultFooter";var re=react.forwardRef(({className:o,onClick:t,children:r,modalData:n,...e},l)=>jsxRuntime.jsx("button",{ref:l,type:"button",onClick:t,className:novaCore.cn(novaCore.standardButtonClasses,o),...e,children:r}));re.displayName="DefaultBackButton";var ae=react.forwardRef(({className:o,onClick:t,children:r,disabled:n,loading:e,buttonConfig:l,modalData:s,...x},k)=>jsxRuntime.jsx("button",{ref:k,type:"button",onClick:t,disabled:n||e,className:novaCore.cn(novaCore.standardButtonClasses,o),...x,children:e?"Loading...":r}));ae.displayName="DefaultActionButton";var se=react.forwardRef(({className:o,children:t,modalData:r,...n},e)=>jsxRuntime.jsx("span",{ref:e,className:novaCore.cn("novacon:sr-only",o),...n,children:t}));se.displayName="DefaultActionDescription";var ie=react.forwardRef(({children:o,className:t,...r},n)=>{let{modalData:e,...l}=r;return jsxRuntime.jsx("div",{ref:n,className:t,...l,children:o})});ie.displayName="DefaultEmptyState";var wo=react.memo(({appChains:o,solanaRPCUrls:t,withImpersonated:r,customization:n={}})=>{let{isConnectModalOpen:e,setIsConnectModalOpen:l,setConnectModalContentType:s,setActiveConnector:x,setImpersonatedAddress:k,setIsConnected:h,connectModalContentType:g,selectedAdapter:u,setSelectedAdapter:O,isConnected:H,activeConnector:T,impersonatedAddress:P}=chunk4QL7WUAL_cjs.d(),M=chunkPUEGOPQT_cjs.i(m=>m.connectionError),R=chunkPUEGOPQT_cjs.i(m=>m.getConnectors),i=chunkPUEGOPQT_cjs.i(m=>m.connect),z=chunkPUEGOPQT_cjs.i(m=>m.activeConnection),p=chunk4QL7WUAL_cjs.h(),I=react.useContext(chunkPUEGOPQT_cjs.g),f=react.useMemo(()=>{if(e)return R()},[e,R]),E=react.useMemo(()=>chunk4QL7WUAL_cjs.u({connectors:f,selectedAdapter:u}),[f,u]),F=react.useMemo(()=>M?typeof M=="string"?new Error(M):M:null,[M]),a=react.useMemo(()=>({contentType:g,selectedAdapter:u,activeConnector:T,impersonatedAddress:P,isConnected:H,isOpen:e,error:F,connectors:f,filteredConnectors:E,labels:p}),[g,u,T,P,H,e,F,f,E,p]);react.useEffect(()=>{e&&(s("connectors"),O(void 0),x(void 0),k(""),h(false));},[e]);let{components:v={},classNames:b={},handlers:C={},config:N={},childComponents:d={}}=n,y=v.ModalContainer||Xo,D=v.ModalHeader||Yo,V=v.InfoButton||Zo,K=v.Title||oe,J=v.CloseButton||ee,Q=v.MainContent||te,X=v.Footer||ne,io=v.BackButton||re,Y=v.ActionButton||ae,lo=v.ActionDescription||se,G=v.EmptyState||ie,go=v.Dialog||novaCore.Dialog,co=v.DialogContent||novaCore.DialogContent,to=v.MotionDiv||framerMotion.motion.div,no=react.useCallback(()=>{switch(g){case "about":return p.aboutWallets;case "getWallet":return p.getWallet;case "connecting":return u&&T&&f&&Ie(f[u],T)||p.connectingEllipsis;case "impersonate":return p.connectImpersonatedWallet;default:return p.connectWallet}},[g,u,T,f,p]),Z=react.useCallback(()=>"connectors",[g]),oo=react.useCallback(m=>{C?.onOpenChange?C.onOpenChange(m,a):l(m);},[C?.onOpenChange,a,l]),bo=react.useCallback(()=>{let m=()=>s(Z());C?.onBack?C.onBack(a,m):m();},[C?.onBack,a,s,Z]),yo=react.useCallback(()=>{C?.onInfoClick?C.onInfoClick(a):s("about");},[C?.onInfoClick,a,s]),_=react.useCallback(async(m,To)=>{await i({connectorType:m,chainId:chunk4QL7WUAL_cjs.q({appChains:o,selectedAdapter:To,solanaRPCUrls:t})});try{await orbitCore.waitFor(()=>I?.getState().activeConnection?.isConnected),h(!0);let Eo=setTimeout(()=>l(!1),400),me=setTimeout(()=>h(!1),500);await orbitCore.delay(null,500),clearTimeout(Eo),clearTimeout(me);}catch(Eo){console.error(Eo);}},[i,o,u,t]),j=react.useCallback(async(m,To)=>{O(m),s("connecting"),await _(To,m);},[_]),Bo=react.useCallback(m=>{x(orbitCore.formatConnectorName(m.name)),m.adapters.length===1?(O(m.adapters[0]),s(orbitCore.formatConnectorName(m.name)==="impersonatedwallet"?"impersonate":"connecting")):u?s(orbitCore.formatConnectorName(m.name)==="impersonatedwallet"?"impersonate":"connecting"):orbitCore.formatConnectorName(m.name)==="impersonatedwallet"?s("impersonate"):s("network");},[u]),ce=react.useCallback(()=>{switch(g){case "network":return jsxRuntime.jsx(chunkPVAIL24L_cjs.B,{activeConnector:T,connectors:E,onClick:j,customization:d.networkSelections});case "connectors":return f?jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(chunkPVAIL24L_cjs.C,{networks:Object.keys(f),selectedAdapter:u,onSelect:m=>O(m),customization:d.networkTabs}),jsxRuntime.jsx(chunkPVAIL24L_cjs.y,{isOnlyOneNetwork:Object.keys(f).length===1,connectors:E,selectedAdapter:u,onClick:Bo,setContentType:s,appChains:o,solanaRPCUrls:t,setIsConnected:h,setIsOpen:l,withImpersonated:r,customization:d.connectorsSelections})]}):jsxRuntime.jsx(G,{className:b.emptyConnectors?.({modalData:a}),modalData:a,children:"No connectors available"});case "about":return jsxRuntime.jsx(chunkPVAIL24L_cjs.s,{customization:d.aboutWallets});case "getWallet":return jsxRuntime.jsx(chunkPVAIL24L_cjs.z,{customization:d.getWallet});case "connecting":return jsxRuntime.jsx(chunkPVAIL24L_cjs.v,{selectedAdapter:u,connectors:E,activeConnector:T,isConnected:H,customization:d.connecting});case "impersonate":return jsxRuntime.jsx(chunkPVAIL24L_cjs.A,{selectedAdapter:u,impersonatedAddress:P,setImpersonatedAddress:k,customization:d.impersonateForm})}},[g,T,E,j,d,f,u,Bo,H,P]),$=react.useCallback(()=>{switch(g){case "connectors":return {title:p.iDontHaveWallet,onClick:()=>{C.onActionClick?.connectors?C.onActionClick.connectors(a):s("getWallet");}};case "getWallet":return {title:p.choseWallet,onClick:()=>{C.onActionClick?.getWallet?C.onActionClick.getWallet(a):window.open(chunk4QL7WUAL_cjs.x[u??Object.keys(f)[0]]?.choseWallet,"_blank","noopener,noreferrer");}};case "about":return {title:p.learnMore,onClick:()=>{C.onActionClick?.about?C.onActionClick.about(a):window.open(chunk4QL7WUAL_cjs.x[u??Object.keys(f)[0]]?.about,"_blank","noopener,noreferrer");}};case "impersonate":return {title:p.connect,onClick:async()=>{if(C.onActionClick?.impersonate)await C.onActionClick.impersonate(a);else {let m=P.trim();if(M||!m||chunk4QL7WUAL_cjs.p(m)||z?.isConnected)return;orbitCore.impersonatedHelpers.setImpersonated(m),s("connecting"),await _(orbitCore.getConnectorTypeFromName(u??orbitCore.OrbitAdapter.EVM,T??""),u??orbitCore.OrbitAdapter.EVM);}}};case "connecting":return M&&u&&T?{title:p.tryAgain,onClick:async()=>{C.onActionClick?.connecting?await C.onActionClick.connecting(a):await _(orbitCore.getConnectorTypeFromName(u,T),u);}}:void 0}},[g,p,C,a,u,f,P,M,_,T])(),de=react.useCallback(()=>{switch(g){case "getWallet":return "Opens external wallet selection page";case "about":return "Opens external documentation";case "impersonate":return "Connects with impersonated wallet address";case "connecting":return "Retries wallet connection";default:return ""}},[g]);return jsxRuntime.jsx(go,{open:e,onOpenChange:oo,children:jsxRuntime.jsx(co,{className:novaCore.cn("novacon:w-full novacon:sm:max-w-md"),children:jsxRuntime.jsx(to,{layout:true,transition:{layout:{duration:N.animation?.disabled?0:N.animation?.layoutDuration??1e-4}},children:jsxRuntime.jsxs(y,{className:b.modalContainer?.({modalData:a}),modalData:a,children:[jsxRuntime.jsxs(D,{className:b.header?.({modalData:a}),modalData:a,children:[jsxRuntime.jsxs(K,{className:b.title?.({modalData:a}),modalData:a,children:[g==="connectors"&&jsxRuntime.jsx(V,{className:b.infoButton?.({modalData:a}),onClick:yo,"aria-label":N.ariaLabels?.infoButton?.(a)||`${p.learnMore} ${p.aboutWallets}`,modalData:a}),no()]}),jsxRuntime.jsx(J,{className:b.closeButton?.({modalData:a}),onClick:()=>oo(false),"aria-label":N.ariaLabels?.closeButton?.(a)||p.closeModal,modalData:a})]}),jsxRuntime.jsx(Q,{className:b.mainContent?.({modalData:a}),modalData:a,children:ce()}),jsxRuntime.jsxs(X,{className:b.footer?.({modalData:a}),modalData:a,children:[jsxRuntime.jsx("div",{className:"novacon:flex novacon:items-center novacon:gap-4",children:g!=="connectors"&&jsxRuntime.jsx(io,{className:b.backButton?.({modalData:a}),onClick:bo,"aria-label":N.ariaLabels?.backButton?.(a)||`${p.back} to previous step`,modalData:a,children:p.back})}),$&&jsxRuntime.jsxs("div",{className:"novacon:flex novacon:items-center novacon:gap-3",children:[jsxRuntime.jsx(Y,{className:b.actionButton?.({modalData:a,buttonConfig:$}),onClick:$.onClick,disabled:$.disabled,loading:$.loading,"aria-describedby":"bottom-action-description",modalData:a,buttonConfig:$,children:$.title}),jsxRuntime.jsx(lo,{id:"bottom-action-description",className:b.actionDescription?.({modalData:a}),modalData:a,children:de()})]})]})]})})})})});wo.displayName="ConnectModal";var Ve=({labels:o,children:t})=>jsxRuntime.jsx(No,{labels:o,children:t}),Ue=({customization:o})=>jsxRuntime.jsx(Po,{customization:o}),qe=(o,t)=>novaCore.deepMerge(o,t||{}),Ge=o=>o,_e=o=>o,je=(o,t,r)=>o;function $e({labels:o,children:t,appChains:r,solanaRPCUrls:n,transactionPool:e,pulsarAdapter:l,withImpersonated:s,withBalance:x,withChain:k,customization:h}){let g=chunkPUEGOPQT_cjs.i(j=>j.activeConnection),u=chunkPUEGOPQT_cjs.i(j=>j.connectionError),{LabelsProvider:O=Ve,ErrorsProvider:H=Ue}=h?.components??{},{merge:T=qe,transform:P=Ge}=h?.labels??{},{transform:M=_e}=h?.contextValue??{},{providerTree:R=je}=h?.rendering??{},i=react.useMemo(()=>T(chunkPTHXIVB5_cjs.a,o||{}),[o,T]),[z,p]=react.useState(false),[I,f]=react.useState(false),[E,F]=react.useState(false),[a,v]=react.useState(false),[b,C]=react.useState("idle"),[N,d]=react.useState("connectors"),[y,D]=react.useState(void 0),[V,K]=react.useState(void 0),[J,Q]=react.useState(""),[X,io]=react.useState(false),[Y,lo]=react.useState("main"),G=react.useMemo(()=>({isConnected:X,activeConnection:g,connectionError:u,modalStates:{isConnectModalOpen:z,isConnectedModalOpen:I,isChainsListOpen:E,isChainsListOpenMobile:a},contentTypes:{connectModal:N,connectedModal:Y},statuses:{connectedButton:b}}),[X,g,u,z,I,E,a,N,Y,b]),go=react.useMemo(()=>P(i,G),[i,P,G]),co=react.useMemo(()=>M({appChains:r,solanaRPCUrls:n,withImpersonated:s,withBalance:x,withChain:k,isConnectModalOpen:z,setIsConnectModalOpen:p,isConnectedModalOpen:I,setIsConnectedModalOpen:f,isChainsListOpen:E,setIsChainsListOpen:F,isChainsListOpenMobile:a,setIsChainsListOpenMobile:v,connectedButtonStatus:b,setConnectedButtonStatus:C,connectedModalContentType:Y,setConnectedModalContentType:lo,connectModalContentType:N,setConnectModalContentType:d,selectedAdapter:y,setSelectedAdapter:D,activeConnector:V,setActiveConnector:K,impersonatedAddress:J,setImpersonatedAddress:Q,isConnected:X,setIsConnected:io},G),[r,n,s,x,k,z,p,I,f,E,F,a,v,b,C,Y,lo,N,d,y,D,V,K,J,Q,X,io,M,G]),to=jsxRuntime.jsx(H,{customization:h?.errors}),no=jsxRuntime.jsx(O,{labels:go,children:t}),Z=r||n?jsxRuntime.jsx(wo,{withImpersonated:s,solanaRPCUrls:n,appChains:r,customization:h?.modals?.connectModal}):null,oo=r||n?jsxRuntime.jsx(chunkPVAIL24L_cjs.r,{solanaRPCUrls:n,appChains:r,transactionPool:e,pulsarAdapter:l,customization:h?.modals?.connectedModal}):null,bo=jsxRuntime.jsxs(chunk4QL7WUAL_cjs.c.Provider,{value:co,children:[to,no,Z,oo]}),yo=jsxRuntime.jsxs(chunk4QL7WUAL_cjs.c.Provider,{value:co,children:[to,no,Z,oo]}),_=R(yo,{ErrorsProvider:to,LabelsProvider:no,MainContent:bo,ConnectModal:Z||jsxRuntime.jsx(jsxRuntime.Fragment,{}),ConnectedModal:oo||jsxRuntime.jsx(jsxRuntime.Fragment,{})},G);return jsxRuntime.jsx(jsxRuntime.Fragment,{children:_})}$e.displayName="NovaConnectProvider";var so=typeof process<"u"&&process.env?.NODE_ENV==="production";async function nr(){let{getAllAdaptersStatus:o}=await import('./getChainsListByConnectorType-G4LPWG63.cjs');return {hasEvmUtils:await fo(),hasSolanaUtils:await vo(),adaptersStatus:o()}}async function fo(){if(so)try{return new Function('try { return Boolean(require("@tuwaio/orbit-evm") && require("viem")); } catch { return false; }')()}catch{return false}try{return await import('viem'),await import('@tuwaio/orbit-evm'),!0}catch{return false}}async function vo(){if(so)try{return new Function('try { return Boolean(require("@tuwaio/orbit-solana") && require("gill")); } catch { return false; }')()}catch{return false}try{return await import('gill'),await import('@tuwaio/orbit-solana'),!0}catch{return false}}async function rr(){try{if(!await fo())return {available:!1,error:"EVM packages (viem, @tuwaio/orbit-evm) not available"};if(so)try{let e=new Function('try { return require("./evm"); } catch { return null; }')();return e?new Promise(l=>{if(typeof e.getEvmExports!="function"){l({available:!1,error:"EVM module does not have getEvmExports function"});return}e.getEvmExports().then(s=>{if(!s.available){l({available:!1,error:s.error||"Failed to load EVM exports"});return}l({...e,...s});}).catch(s=>{l({available:!1,error:s instanceof Error?s.message:"Failed to load EVM exports"});});}):{available:!1,error:"Failed to load EVM module"}}catch(n){return {available:!1,error:n instanceof Error?n.message:"Failed to load EVM module"}}let t=await import('./evm/index.cjs'),r=await t.getEvmExports();return r.available?{...t,...r}:{available:!1,error:r.error||"Failed to load EVM exports"}}catch(o){return {available:false,error:o instanceof Error?o.message:"EVM utilities not available"}}}async function ar(){try{if(!await vo())return {available:!1,error:"Solana packages (gill, @tuwaio/orbit-solana) not available"};if(so)try{let e=new Function('try { return require("./solana"); } catch { return null; }')();return e?new Promise(l=>{if(typeof e.getSolanaExports!="function"){l({available:!1,error:"Solana module does not have getSolanaExports function"});return}e.getSolanaExports().then(s=>{if(!s.available){l({available:!1,error:s.error||"Failed to load Solana exports"});return}l({...e,...s});}).catch(s=>{l({available:!1,error:s instanceof Error?s.message:"Failed to load Solana exports"});});}):{available:!1,error:"Failed to load Solana module"}}catch(n){return {available:!1,error:n instanceof Error?n.message:"Failed to load Solana module"}}let t=await import('./solana/index.cjs'),r=await t.getSolanaExports();return r.available?{...t,...r}:{available:!1,error:r.error||"Failed to load Solana exports"}}catch(o){return {available:false,error:o instanceof Error?o.message:"Solana utilities not available"}}}async function sr(){let o={evm:false,solana:false,errors:[]};try{let t=await fo(),r=await vo();if(t||r)if(so)try{let e=new Function('try { return require("./utils/getChainsListByConnectorType"); } catch { return null; }')();if(!e)return o.errors.push("Failed to load chain adapter utilities"),o;let l=[];t&&l.push(orbitCore.OrbitAdapter.EVM),r&&l.push(orbitCore.OrbitAdapter.SOLANA),await e.preloadChainAdapters(l),o.evm=t,o.solana=r;}catch(n){let e=n instanceof Error?n.message:"Failed to initialize chain adapters";o.errors.push(e);}else {let{preloadChainAdapters:n}=await import('./getChainsListByConnectorType-G4LPWG63.cjs'),e=[];t&&e.push(orbitCore.OrbitAdapter.EVM),r&&e.push(orbitCore.OrbitAdapter.SOLANA),await n(e),o.evm=t,o.solana=r;}else o.errors.push("No blockchain packages available for initialization");}catch(t){let r=t instanceof Error?t.message:"Unknown initialization error";o.errors.push(r);}return o}async function ir(o){return o===orbitCore.OrbitAdapter.Starknet||o!==orbitCore.OrbitAdapter.EVM&&o!==orbitCore.OrbitAdapter.SOLANA?false:o===orbitCore.OrbitAdapter.EVM?fo():vo()}Object.defineProperty(exports,"NovaConnectLabelsContext",{enumerable:true,get:function(){return chunk4QL7WUAL_cjs.g}});Object.defineProperty(exports,"NovaConnectProviderContext",{enumerable:true,get:function(){return chunk4QL7WUAL_cjs.c}});Object.defineProperty(exports,"NovaConnectProviderError",{enumerable:true,get:function(){return chunk4QL7WUAL_cjs.b}});Object.defineProperty(exports,"createLabelsSubset",{enumerable:true,get:function(){return chunk4QL7WUAL_cjs.o}});Object.defineProperty(exports,"getAvailableChainIds",{enumerable:true,get:function(){return chunk4QL7WUAL_cjs.r}});Object.defineProperty(exports,"getAvailableSolanaClusters",{enumerable:true,get:function(){return chunk4QL7WUAL_cjs.y}});Object.defineProperty(exports,"getConnectChainId",{enumerable:true,get:function(){return chunk4QL7WUAL_cjs.q}});Object.defineProperty(exports,"getFilteredConnectors",{enumerable:true,get:function(){return chunk4QL7WUAL_cjs.u}});Object.defineProperty(exports,"getGroupedConnectors",{enumerable:true,get:function(){return chunk4QL7WUAL_cjs.s}});Object.defineProperty(exports,"getLabelWithFallback",{enumerable:true,get:function(){return chunk4QL7WUAL_cjs.n}});Object.defineProperty(exports,"getNetworkIcon",{enumerable:true,get:function(){return chunk4QL7WUAL_cjs.w}});Object.defineProperty(exports,"hasAvailableConnectors",{enumerable:true,get:function(){return chunk4QL7WUAL_cjs.t}});Object.defineProperty(exports,"hasConnectorsForAdapter",{enumerable:true,get:function(){return chunk4QL7WUAL_cjs.v}});Object.defineProperty(exports,"hasLabel",{enumerable:true,get:function(){return chunk4QL7WUAL_cjs.k}});Object.defineProperty(exports,"isAddress",{enumerable:true,get:function(){return chunk4QL7WUAL_cjs.p}});Object.defineProperty(exports,"isDefaultLabels",{enumerable:true,get:function(){return chunk4QL7WUAL_cjs.m}});Object.defineProperty(exports,"isValidSolanaCluster",{enumerable:true,get:function(){return chunk4QL7WUAL_cjs.z}});Object.defineProperty(exports,"networksLinks",{enumerable:true,get:function(){return chunk4QL7WUAL_cjs.x}});Object.defineProperty(exports,"useGetWalletNameAndAvatar",{enumerable:true,get:function(){return chunk4QL7WUAL_cjs.a}});Object.defineProperty(exports,"useHasNovaConnectContext",{enumerable:true,get:function(){return chunk4QL7WUAL_cjs.e}});Object.defineProperty(exports,"useLabelsByCategory",{enumerable:true,get:function(){return chunk4QL7WUAL_cjs.l}});Object.defineProperty(exports,"useNovaConnect",{enumerable:true,get:function(){return chunk4QL7WUAL_cjs.d}});Object.defineProperty(exports,"useNovaConnectLabel",{enumerable:true,get:function(){return chunk4QL7WUAL_cjs.i}});Object.defineProperty(exports,"useNovaConnectLabels",{enumerable:true,get:function(){return chunk4QL7WUAL_cjs.h}});Object.defineProperty(exports,"useNovaConnectLabelsSubset",{enumerable:true,get:function(){return chunk4QL7WUAL_cjs.j}});Object.defineProperty(exports,"useNovaConnectOptional",{enumerable:true,get:function(){return chunk4QL7WUAL_cjs.f}});Object.defineProperty(exports,"useWalletChainsList",{enumerable:true,get:function(){return chunk4QL7WUAL_cjs.A}});Object.defineProperty(exports,"useWalletNativeBalance",{enumerable:true,get:function(){return chunk4QL7WUAL_cjs.B}});Object.defineProperty(exports,"getAdapterStatus",{enumerable:true,get:function(){return chunkV5GQCWQZ_cjs.k}});Object.defineProperty(exports,"getAllAdaptersStatus",{enumerable:true,get:function(){return chunkV5GQCWQZ_cjs.l}});Object.defineProperty(exports,"getAvailableSolanaClustersAsync",{enumerable:true,get:function(){return chunkV5GQCWQZ_cjs.g}});Object.defineProperty(exports,"getChainsListByConnectorType",{enumerable:true,get:function(){return chunkV5GQCWQZ_cjs.b}});Object.defineProperty(exports,"getChainsListByConnectorTypeAsync",{enumerable:true,get:function(){return chunkV5GQCWQZ_cjs.a}});Object.defineProperty(exports,"getChainsListByConnectorTypeSync",{enumerable:true,get:function(){return chunkV5GQCWQZ_cjs.b}});Object.defineProperty(exports,"getWalletChains",{enumerable:true,get:function(){return chunkV5GQCWQZ_cjs.i}});Object.defineProperty(exports,"isEvmChainList",{enumerable:true,get:function(){return chunkV5GQCWQZ_cjs.e}});Object.defineProperty(exports,"isEvmChainListAsync",{enumerable:true,get:function(){return chunkV5GQCWQZ_cjs.c}});Object.defineProperty(exports,"isEvmChainListSync",{enumerable:true,get:function(){return chunkV5GQCWQZ_cjs.e}});Object.defineProperty(exports,"isSolanaChainList",{enumerable:true,get:function(){return chunkV5GQCWQZ_cjs.f}});Object.defineProperty(exports,"isSolanaChainListAsync",{enumerable:true,get:function(){return chunkV5GQCWQZ_cjs.d}});Object.defineProperty(exports,"isSolanaChainListSync",{enumerable:true,get:function(){return chunkV5GQCWQZ_cjs.f}});Object.defineProperty(exports,"isValidSolanaClusterAsync",{enumerable:true,get:function(){return chunkV5GQCWQZ_cjs.h}});Object.defineProperty(exports,"preloadChainAdapters",{enumerable:true,get:function(){return chunkV5GQCWQZ_cjs.j}});Object.defineProperty(exports,"AllConnectors",{enumerable:true,get:function(){return chunkPUEGOPQT_cjs.b}});Object.defineProperty(exports,"Connection",{enumerable:true,get:function(){return chunkPUEGOPQT_cjs.c}});Object.defineProperty(exports,"Connector",{enumerable:true,get:function(){return chunkPUEGOPQT_cjs.d}});Object.defineProperty(exports,"SatelliteConnectProvider",{enumerable:true,get:function(){return chunkPUEGOPQT_cjs.e}});Object.defineProperty(exports,"SatelliteConnectProviderProps",{enumerable:true,get:function(){return chunkPUEGOPQT_cjs.f}});Object.defineProperty(exports,"SatelliteStoreContext",{enumerable:true,get:function(){return chunkPUEGOPQT_cjs.g}});Object.defineProperty(exports,"getSatelliteExports",{enumerable:true,get:function(){return chunkPUEGOPQT_cjs.a}});Object.defineProperty(exports,"useInitializeAutoConnect",{enumerable:true,get:function(){return chunkPUEGOPQT_cjs.h}});Object.defineProperty(exports,"useSatelliteConnectStore",{enumerable:true,get:function(){return chunkPUEGOPQT_cjs.i}});exports.ErrorsProvider=Po;exports.NovaConnectLabelsProvider=No;exports.NovaConnectProvider=$e;exports.getBlockchainUtilities=nr;exports.getEvmUtils=rr;exports.getSolanaUtils=ar;exports.initializeBlockchainSupport=sr;exports.isAdapterSupported=ir;//# sourceMappingURL=index.cjs.map
|
|
1
|
+
'use strict';var chunk4WY4LVQ2_cjs=require('./chunk-4WY4LVQ2.cjs'),chunkF4INBENJ_cjs=require('./chunk-F4INBENJ.cjs'),chunkEWPT6HNX_cjs=require('./chunk-EWPT6HNX.cjs'),chunkPTHXIVB5_cjs=require('./chunk-PTHXIVB5.cjs'),chunkPUEGOPQT_cjs=require('./chunk-PUEGOPQT.cjs'),orbitCore=require('@tuwaio/orbit-core'),novaCore=require('@tuwaio/nova-core'),react=require('react'),reactToastify=require('react-toastify'),jsxRuntime=require('react/jsx-runtime'),outline=require('@heroicons/react/24/outline'),framerMotion=require('framer-motion');var fe=({title:o,rawError:t,onCopyComplete:r,errorType:n,isConnected:e,...l})=>jsxRuntime.jsx(chunk4WY4LVQ2_cjs.D,{title:o,rawError:t,onCopyComplete:r,customization:l.customization}),ve=o=>{let t=chunkF4INBENJ_cjs.h();return jsxRuntime.jsx(reactToastify.ToastContainer,{...o,role:"alert","aria-live":"assertive","aria-label":t.somethingWentWrong})},ge=(o,t)=>{o(t.title,t.rawError,t.errorKey);},be=o=>{o();},ye=(o,t)=>{o&&process.env.NODE_ENV==="development"&&console.log("Error copied to clipboard:",t.substring(0,100));},Te=o=>o,Ee=o=>o;function Po({containerId:o="nova-connect-errors",position:t="top-center",autoClose:r=7e3,draggable:n=false,customization:e}){let l=chunkF4INBENJ_cjs.h(),s=chunkPUEGOPQT_cjs.i(d=>d.switchNetworkError),x=chunkPUEGOPQT_cjs.i(d=>d.activeConnection),k=chunkPUEGOPQT_cjs.i(d=>d.connectionError),{ToastError:h=fe,Container:g=ve}=e?.components??{},{showError:u=ge,dismissError:O=be,onCopyComplete:H=ye}=e?.handlers??{},{errorTitle:T=Te,errorHash:P=Ee}=e??{},M=react.useRef(new Set),R=react.useRef(null),i=react.useMemo(()=>{let d=!!k,y=!!s,D=!!x?.isConnected;return {hasWalletError:d,hasSwitchError:y,isConnected:D,hasAnyError:d||y,primaryError:k||s||null,errorType:d?"wallet":y?"switch":null}},[k,s,x?.isConnected]),z=react.useMemo(()=>{switch(i.errorType){case "wallet":return l.connectionError;case "switch":return l.errorWhenChainSwitching;default:return l.somethingWentWrong}},[i.errorType,l]),p=react.useMemo(()=>T(z,{errorType:i.errorType}),[T,z,i.errorType]),I=react.useMemo(()=>i.primaryError?`${i.errorType}-${i.primaryError.substring(0,50)}`:null,[i.primaryError,i.errorType]),f=react.useMemo(()=>P(I,{primaryError:i.primaryError,errorType:i.errorType}),[P,I,i.primaryError,i.errorType]),E=react.useCallback(()=>{O(()=>{R.current&&(reactToastify.toast.dismiss(R.current),R.current=null),reactToastify.toast.dismiss({containerId:o});});},[o,O]),F=react.useCallback((d,y)=>{H(d,y,i.errorType);},[H,i.errorType]),a=react.useCallback((d,y,D)=>{if(E(),!M.current.has(D))try{let V={containerId:o,toastId:D,onClose:()=>{M.current.delete(D),R.current=null;}},K=e?.toastOptions?.error?.({title:d,rawError:y,errorType:i.errorType,isConnected:i.isConnected}),J={...V,...K};reactToastify.toast.error(jsxRuntime.jsx(h,{title:d,rawError:y,errorType:i.errorType,isConnected:i.isConnected,onCopyComplete:Q=>F(Q,y),customization:e?.toastErrorCustomization}),J),M.current.add(D),R.current=D;}catch(V){console.error("Failed to show error toast:",V);}},[E,o,e?.toastOptions?.error,e?.toastErrorCustomization,h,i.errorType,i.isConnected,F]),v=react.useCallback((d,y,D)=>{u(a,{title:d,rawError:y,errorKey:D,errorType:i.errorType});},[a,u,i.errorType]);react.useEffect(()=>{let{hasAnyError:d,isConnected:y,primaryError:D}=i;if(y&&!d){E(),M.current.clear();return}if(d&&D&&f){if(y&&i.errorType!=="switch")return;v(p,D,f);}},[i,p,f,v,E]),react.useEffect(()=>()=>{E(),M.current.clear();},[E]);let b=react.useMemo(()=>e?.classNames?.container?e.classNames.container({hasErrors:i.hasAnyError,errorType:i.errorType}):"novacon:p-0 novacon:bg-transparent",[e,i.hasAnyError,i.errorType]),C=react.useMemo(()=>({containerId:o,position:t,closeOnClick:false,icon:false,closeButton:novaCore.ToastCloseButton,autoClose:r,hideProgressBar:false,newestOnTop:false,pauseOnFocusLoss:false,draggable:n,pauseOnHover:true,theme:"light",transition:reactToastify.Bounce}),[o,t,r,n]),N=react.useMemo(()=>({...C,...e?.containerProps,className:b}),[C,e?.containerProps,b]);return jsxRuntime.jsx(g,{...N})}Po.displayName="ErrorsProvider";function No({labels:o,children:t}){let r=react.useMemo(()=>o,[o]);if(process.env.NODE_ENV==="development"){(!o||typeof o!="object")&&console.warn("NovaConnectLabelsProvider: labels prop should be an object");let e=["connectWallet","disconnect","connecting","connected","error","success"].filter(l=>!(l in o));e.length>0&&console.warn(`NovaConnectLabelsProvider: Missing required labels: ${e.join(", ")}`);}return jsxRuntime.jsx(chunkF4INBENJ_cjs.g.Provider,{value:r,children:t})}No.displayName="NovaConnectLabelsProvider";function Ie(o,t){if(!o||!Array.isArray(o)||!t)return;let r=o.find(n=>n&&typeof n=="object"&&"name"in n&&typeof n.name=="string"?orbitCore.formatConnectorName(n.name)===t:false);if(r&&typeof r=="object"&&"name"in r&&typeof r.name=="string")return r.name}var Xo=react.forwardRef(({className:o,children:t,modalData:r,...n},e)=>jsxRuntime.jsx("div",{ref:e,className:novaCore.cn("novacon:relative novacon:flex novacon:w-full novacon:flex-col",o),...n,children:t}));Xo.displayName="DefaultModalContainer";var Yo=react.forwardRef(({className:o,children:t,modalData:r,...n},e)=>jsxRuntime.jsx("div",{ref:e,className:o,...n,children:jsxRuntime.jsx(novaCore.DialogHeader,{children:t})}));Yo.displayName="DefaultModalHeader";var Zo=react.forwardRef(({className:o,onClick:t,modalData:r,...n},e)=>jsxRuntime.jsx("button",{ref:e,className:novaCore.cn("novacon:cursor-pointer novacon:text-[var(--tuwa-text-secondary)] novacon:transition novacon:duration-300 novacon:ease-in-out novacon:active:scale-75 novacon:hover:scale-110",o),type:"button",onClick:t,...n,children:jsxRuntime.jsx(outline.InformationCircleIcon,{width:20,height:20,className:"novacon:mr-1","aria-hidden":"true"})}));Zo.displayName="DefaultInfoButton";var oe=react.forwardRef(({className:o,children:t,modalData:r,...n},e)=>jsxRuntime.jsx(novaCore.DialogTitle,{ref:e,className:novaCore.cn("novacon:flex novacon:items-center",o),...n,children:t}));oe.displayName="DefaultTitle";var ee=react.forwardRef(({className:o,onClick:t,modalData:r,...n},e)=>jsxRuntime.jsx(novaCore.DialogClose,{asChild:true,children:jsxRuntime.jsx("button",{ref:e,type:"button",onClick:t,className:novaCore.cn("novacon:cursor-pointer novacon:rounded-full novacon:p-1 novacon:text-[var(--tuwa-text-tertiary)] novacon:transition-colors novacon:hover:bg-[var(--tuwa-bg-muted)] novacon:hover:text-[var(--tuwa-text-primary)]",o),...n,children:jsxRuntime.jsx(novaCore.CloseIcon,{"aria-hidden":"true"})})}));ee.displayName="DefaultCloseButton";var te=react.forwardRef(({className:o,children:t,modalData:r,...n},e)=>jsxRuntime.jsx("main",{ref:e,className:novaCore.cn("novacon:flex novacon:flex-col novacon:gap-4 novacon:p-4",o),id:"connect-modal-content",role:"main",...n,children:t}));te.displayName="DefaultMainContent";var ne=react.forwardRef(({className:o,children:t,modalData:r,...n},e)=>jsxRuntime.jsx("footer",{ref:e,className:novaCore.cn("novacon:flex novacon:w-full novacon:items-center novacon:justify-between novacon:border-t novacon:border-[var(--tuwa-border-primary)] novacon:p-4",o),role:"contentinfo",...n,children:t}));ne.displayName="DefaultFooter";var re=react.forwardRef(({className:o,onClick:t,children:r,modalData:n,...e},l)=>jsxRuntime.jsx("button",{ref:l,type:"button",onClick:t,className:novaCore.cn(novaCore.standardButtonClasses,o),...e,children:r}));re.displayName="DefaultBackButton";var ae=react.forwardRef(({className:o,onClick:t,children:r,disabled:n,loading:e,buttonConfig:l,modalData:s,...x},k)=>jsxRuntime.jsx("button",{ref:k,type:"button",onClick:t,disabled:n||e,className:novaCore.cn(novaCore.standardButtonClasses,o),...x,children:e?"Loading...":r}));ae.displayName="DefaultActionButton";var se=react.forwardRef(({className:o,children:t,modalData:r,...n},e)=>jsxRuntime.jsx("span",{ref:e,className:novaCore.cn("novacon:sr-only",o),...n,children:t}));se.displayName="DefaultActionDescription";var ie=react.forwardRef(({children:o,className:t,...r},n)=>{let{modalData:e,...l}=r;return jsxRuntime.jsx("div",{ref:n,className:t,...l,children:o})});ie.displayName="DefaultEmptyState";var wo=react.memo(({appChains:o,solanaRPCUrls:t,withImpersonated:r,customization:n={}})=>{let{isConnectModalOpen:e,setIsConnectModalOpen:l,setConnectModalContentType:s,setActiveConnector:x,setImpersonatedAddress:k,setIsConnected:h,connectModalContentType:g,selectedAdapter:u,setSelectedAdapter:O,isConnected:H,activeConnector:T,impersonatedAddress:P}=chunkF4INBENJ_cjs.d(),M=chunkPUEGOPQT_cjs.i(m=>m.connectionError),R=chunkPUEGOPQT_cjs.i(m=>m.getConnectors),i=chunkPUEGOPQT_cjs.i(m=>m.connect),z=chunkPUEGOPQT_cjs.i(m=>m.activeConnection),p=chunkF4INBENJ_cjs.h(),I=react.useContext(chunkPUEGOPQT_cjs.g),f=react.useMemo(()=>{if(e)return R()},[e,R]),E=react.useMemo(()=>chunkF4INBENJ_cjs.u({connectors:f,selectedAdapter:u}),[f,u]),F=react.useMemo(()=>M?typeof M=="string"?new Error(M):M:null,[M]),a=react.useMemo(()=>({contentType:g,selectedAdapter:u,activeConnector:T,impersonatedAddress:P,isConnected:H,isOpen:e,error:F,connectors:f,filteredConnectors:E,labels:p}),[g,u,T,P,H,e,F,f,E,p]);react.useEffect(()=>{e&&(s("connectors"),O(void 0),x(void 0),k(""),h(false));},[e]);let{components:v={},classNames:b={},handlers:C={},config:N={},childComponents:d={}}=n,y=v.ModalContainer||Xo,D=v.ModalHeader||Yo,V=v.InfoButton||Zo,K=v.Title||oe,J=v.CloseButton||ee,Q=v.MainContent||te,X=v.Footer||ne,io=v.BackButton||re,Y=v.ActionButton||ae,lo=v.ActionDescription||se,G=v.EmptyState||ie,go=v.Dialog||novaCore.Dialog,co=v.DialogContent||novaCore.DialogContent,to=v.MotionDiv||framerMotion.motion.div,no=react.useCallback(()=>{switch(g){case "about":return p.aboutWallets;case "getWallet":return p.getWallet;case "connecting":return u&&T&&f&&Ie(f[u],T)||p.connectingEllipsis;case "impersonate":return p.connectImpersonatedWallet;default:return p.connectWallet}},[g,u,T,f,p]),Z=react.useCallback(()=>"connectors",[g]),oo=react.useCallback(m=>{C?.onOpenChange?C.onOpenChange(m,a):l(m);},[C?.onOpenChange,a,l]),bo=react.useCallback(()=>{let m=()=>s(Z());C?.onBack?C.onBack(a,m):m();},[C?.onBack,a,s,Z]),yo=react.useCallback(()=>{C?.onInfoClick?C.onInfoClick(a):s("about");},[C?.onInfoClick,a,s]),_=react.useCallback(async(m,To)=>{await i({connectorType:m,chainId:chunkF4INBENJ_cjs.q({appChains:o,selectedAdapter:To,solanaRPCUrls:t})});try{await orbitCore.waitFor(()=>I?.getState().activeConnection?.isConnected),h(!0);let Eo=setTimeout(()=>l(!1),400),me=setTimeout(()=>h(!1),500);await orbitCore.delay(null,500),clearTimeout(Eo),clearTimeout(me);}catch(Eo){console.error(Eo);}},[i,o,u,t]),j=react.useCallback(async(m,To)=>{O(m),s("connecting"),await _(To,m);},[_]),Bo=react.useCallback(m=>{x(orbitCore.formatConnectorName(m.name)),m.adapters.length===1?(O(m.adapters[0]),s(orbitCore.formatConnectorName(m.name)==="impersonatedwallet"?"impersonate":"connecting")):u?s(orbitCore.formatConnectorName(m.name)==="impersonatedwallet"?"impersonate":"connecting"):orbitCore.formatConnectorName(m.name)==="impersonatedwallet"?s("impersonate"):s("network");},[u]),ce=react.useCallback(()=>{switch(g){case "network":return jsxRuntime.jsx(chunk4WY4LVQ2_cjs.B,{activeConnector:T,connectors:E,onClick:j,customization:d.networkSelections});case "connectors":return f?jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(chunk4WY4LVQ2_cjs.C,{networks:Object.keys(f),selectedAdapter:u,onSelect:m=>O(m),customization:d.networkTabs}),jsxRuntime.jsx(chunk4WY4LVQ2_cjs.y,{isOnlyOneNetwork:Object.keys(f).length===1,connectors:E,selectedAdapter:u,onClick:Bo,setContentType:s,appChains:o,solanaRPCUrls:t,setIsConnected:h,setIsOpen:l,withImpersonated:r,customization:d.connectorsSelections})]}):jsxRuntime.jsx(G,{className:b.emptyConnectors?.({modalData:a}),modalData:a,children:"No connectors available"});case "about":return jsxRuntime.jsx(chunk4WY4LVQ2_cjs.s,{customization:d.aboutWallets});case "getWallet":return jsxRuntime.jsx(chunk4WY4LVQ2_cjs.z,{customization:d.getWallet});case "connecting":return jsxRuntime.jsx(chunk4WY4LVQ2_cjs.v,{selectedAdapter:u,connectors:E,activeConnector:T,isConnected:H,customization:d.connecting});case "impersonate":return jsxRuntime.jsx(chunk4WY4LVQ2_cjs.A,{selectedAdapter:u,impersonatedAddress:P,setImpersonatedAddress:k,customization:d.impersonateForm})}},[g,T,E,j,d,f,u,Bo,H,P]),$=react.useCallback(()=>{switch(g){case "connectors":return {title:p.iDontHaveWallet,onClick:()=>{C.onActionClick?.connectors?C.onActionClick.connectors(a):s("getWallet");}};case "getWallet":return {title:p.choseWallet,onClick:()=>{C.onActionClick?.getWallet?C.onActionClick.getWallet(a):window.open(chunkF4INBENJ_cjs.x[u??Object.keys(f)[0]]?.choseWallet,"_blank","noopener,noreferrer");}};case "about":return {title:p.learnMore,onClick:()=>{C.onActionClick?.about?C.onActionClick.about(a):window.open(chunkF4INBENJ_cjs.x[u??Object.keys(f)[0]]?.about,"_blank","noopener,noreferrer");}};case "impersonate":return {title:p.connect,onClick:async()=>{if(C.onActionClick?.impersonate)await C.onActionClick.impersonate(a);else {let m=P.trim();if(M||!m||chunkF4INBENJ_cjs.p(m)||z?.isConnected)return;orbitCore.impersonatedHelpers.setImpersonated(m),s("connecting"),await _(orbitCore.getConnectorTypeFromName(u??orbitCore.OrbitAdapter.EVM,T??""),u??orbitCore.OrbitAdapter.EVM);}}};case "connecting":return M&&u&&T?{title:p.tryAgain,onClick:async()=>{C.onActionClick?.connecting?await C.onActionClick.connecting(a):await _(orbitCore.getConnectorTypeFromName(u,T),u);}}:void 0}},[g,p,C,a,u,f,P,M,_,T])(),de=react.useCallback(()=>{switch(g){case "getWallet":return "Opens external wallet selection page";case "about":return "Opens external documentation";case "impersonate":return "Connects with impersonated wallet address";case "connecting":return "Retries wallet connection";default:return ""}},[g]);return jsxRuntime.jsx(go,{open:e,onOpenChange:oo,children:jsxRuntime.jsx(co,{className:novaCore.cn("novacon:w-full novacon:sm:max-w-md"),children:jsxRuntime.jsx(to,{layout:true,transition:{layout:{duration:N.animation?.disabled?0:N.animation?.layoutDuration??1e-4}},children:jsxRuntime.jsxs(y,{className:b.modalContainer?.({modalData:a}),modalData:a,children:[jsxRuntime.jsxs(D,{className:b.header?.({modalData:a}),modalData:a,children:[jsxRuntime.jsxs(K,{className:b.title?.({modalData:a}),modalData:a,children:[g==="connectors"&&jsxRuntime.jsx(V,{className:b.infoButton?.({modalData:a}),onClick:yo,"aria-label":N.ariaLabels?.infoButton?.(a)||`${p.learnMore} ${p.aboutWallets}`,modalData:a}),no()]}),jsxRuntime.jsx(J,{className:b.closeButton?.({modalData:a}),onClick:()=>oo(false),"aria-label":N.ariaLabels?.closeButton?.(a)||p.closeModal,modalData:a})]}),jsxRuntime.jsx(Q,{className:b.mainContent?.({modalData:a}),modalData:a,children:ce()}),jsxRuntime.jsxs(X,{className:b.footer?.({modalData:a}),modalData:a,children:[jsxRuntime.jsx("div",{className:"novacon:flex novacon:items-center novacon:gap-4",children:g!=="connectors"&&jsxRuntime.jsx(io,{className:b.backButton?.({modalData:a}),onClick:bo,"aria-label":N.ariaLabels?.backButton?.(a)||`${p.back} to previous step`,modalData:a,children:p.back})}),$&&jsxRuntime.jsxs("div",{className:"novacon:flex novacon:items-center novacon:gap-3",children:[jsxRuntime.jsx(Y,{className:b.actionButton?.({modalData:a,buttonConfig:$}),onClick:$.onClick,disabled:$.disabled,loading:$.loading,"aria-describedby":"bottom-action-description",modalData:a,buttonConfig:$,children:$.title}),jsxRuntime.jsx(lo,{id:"bottom-action-description",className:b.actionDescription?.({modalData:a}),modalData:a,children:de()})]})]})]})})})})});wo.displayName="ConnectModal";var Ve=({labels:o,children:t})=>jsxRuntime.jsx(No,{labels:o,children:t}),Ue=({customization:o})=>jsxRuntime.jsx(Po,{customization:o}),qe=(o,t)=>novaCore.deepMerge(o,t||{}),Ge=o=>o,_e=o=>o,je=(o,t,r)=>o;function $e({labels:o,children:t,appChains:r,solanaRPCUrls:n,transactionPool:e,pulsarAdapter:l,withImpersonated:s,withBalance:x,withChain:k,customization:h}){let g=chunkPUEGOPQT_cjs.i(j=>j.activeConnection),u=chunkPUEGOPQT_cjs.i(j=>j.connectionError),{LabelsProvider:O=Ve,ErrorsProvider:H=Ue}=h?.components??{},{merge:T=qe,transform:P=Ge}=h?.labels??{},{transform:M=_e}=h?.contextValue??{},{providerTree:R=je}=h?.rendering??{},i=react.useMemo(()=>T(chunkPTHXIVB5_cjs.a,o||{}),[o,T]),[z,p]=react.useState(false),[I,f]=react.useState(false),[E,F]=react.useState(false),[a,v]=react.useState(false),[b,C]=react.useState("idle"),[N,d]=react.useState("connectors"),[y,D]=react.useState(void 0),[V,K]=react.useState(void 0),[J,Q]=react.useState(""),[X,io]=react.useState(false),[Y,lo]=react.useState("main"),G=react.useMemo(()=>({isConnected:X,activeConnection:g,connectionError:u,modalStates:{isConnectModalOpen:z,isConnectedModalOpen:I,isChainsListOpen:E,isChainsListOpenMobile:a},contentTypes:{connectModal:N,connectedModal:Y},statuses:{connectedButton:b}}),[X,g,u,z,I,E,a,N,Y,b]),go=react.useMemo(()=>P(i,G),[i,P,G]),co=react.useMemo(()=>M({appChains:r,solanaRPCUrls:n,withImpersonated:s,withBalance:x,withChain:k,isConnectModalOpen:z,setIsConnectModalOpen:p,isConnectedModalOpen:I,setIsConnectedModalOpen:f,isChainsListOpen:E,setIsChainsListOpen:F,isChainsListOpenMobile:a,setIsChainsListOpenMobile:v,connectedButtonStatus:b,setConnectedButtonStatus:C,connectedModalContentType:Y,setConnectedModalContentType:lo,connectModalContentType:N,setConnectModalContentType:d,selectedAdapter:y,setSelectedAdapter:D,activeConnector:V,setActiveConnector:K,impersonatedAddress:J,setImpersonatedAddress:Q,isConnected:X,setIsConnected:io},G),[r,n,s,x,k,z,p,I,f,E,F,a,v,b,C,Y,lo,N,d,y,D,V,K,J,Q,X,io,M,G]),to=jsxRuntime.jsx(H,{customization:h?.errors}),no=jsxRuntime.jsx(O,{labels:go,children:t}),Z=r||n?jsxRuntime.jsx(wo,{withImpersonated:s,solanaRPCUrls:n,appChains:r,customization:h?.modals?.connectModal}):null,oo=r||n?jsxRuntime.jsx(chunk4WY4LVQ2_cjs.r,{solanaRPCUrls:n,appChains:r,transactionPool:e,pulsarAdapter:l,customization:h?.modals?.connectedModal}):null,bo=jsxRuntime.jsxs(chunkF4INBENJ_cjs.c.Provider,{value:co,children:[to,no,Z,oo]}),yo=jsxRuntime.jsxs(chunkF4INBENJ_cjs.c.Provider,{value:co,children:[to,no,Z,oo]}),_=R(yo,{ErrorsProvider:to,LabelsProvider:no,MainContent:bo,ConnectModal:Z||jsxRuntime.jsx(jsxRuntime.Fragment,{}),ConnectedModal:oo||jsxRuntime.jsx(jsxRuntime.Fragment,{})},G);return jsxRuntime.jsx(jsxRuntime.Fragment,{children:_})}$e.displayName="NovaConnectProvider";var so=typeof process<"u"&&process.env?.NODE_ENV==="production";async function nr(){let{getAllAdaptersStatus:o}=await import('./getChainsListByConnectorType-RKKDUHIO.cjs');return {hasEvmUtils:await fo(),hasSolanaUtils:await vo(),adaptersStatus:o()}}async function fo(){if(so)try{return new Function('try { return Boolean(require("@tuwaio/orbit-evm") && require("viem")); } catch { return false; }')()}catch{return false}try{return await import('viem'),await import('@tuwaio/orbit-evm'),!0}catch{return false}}async function vo(){if(so)try{return new Function('try { return Boolean(require("@tuwaio/orbit-solana") && require("gill")); } catch { return false; }')()}catch{return false}try{return await import('gill'),await import('@tuwaio/orbit-solana'),!0}catch{return false}}async function rr(){try{if(!await fo())return {available:!1,error:"EVM packages (viem, @tuwaio/orbit-evm) not available"};if(so)try{let e=new Function('try { return require("./evm"); } catch { return null; }')();return e?new Promise(l=>{if(typeof e.getEvmExports!="function"){l({available:!1,error:"EVM module does not have getEvmExports function"});return}e.getEvmExports().then(s=>{if(!s.available){l({available:!1,error:s.error||"Failed to load EVM exports"});return}l({...e,...s});}).catch(s=>{l({available:!1,error:s instanceof Error?s.message:"Failed to load EVM exports"});});}):{available:!1,error:"Failed to load EVM module"}}catch(n){return {available:!1,error:n instanceof Error?n.message:"Failed to load EVM module"}}let t=await import('./evm/index.cjs'),r=await t.getEvmExports();return r.available?{...t,...r}:{available:!1,error:r.error||"Failed to load EVM exports"}}catch(o){return {available:false,error:o instanceof Error?o.message:"EVM utilities not available"}}}async function ar(){try{if(!await vo())return {available:!1,error:"Solana packages (gill, @tuwaio/orbit-solana) not available"};if(so)try{let e=new Function('try { return require("./solana"); } catch { return null; }')();return e?new Promise(l=>{if(typeof e.getSolanaExports!="function"){l({available:!1,error:"Solana module does not have getSolanaExports function"});return}e.getSolanaExports().then(s=>{if(!s.available){l({available:!1,error:s.error||"Failed to load Solana exports"});return}l({...e,...s});}).catch(s=>{l({available:!1,error:s instanceof Error?s.message:"Failed to load Solana exports"});});}):{available:!1,error:"Failed to load Solana module"}}catch(n){return {available:!1,error:n instanceof Error?n.message:"Failed to load Solana module"}}let t=await import('./solana/index.cjs'),r=await t.getSolanaExports();return r.available?{...t,...r}:{available:!1,error:r.error||"Failed to load Solana exports"}}catch(o){return {available:false,error:o instanceof Error?o.message:"Solana utilities not available"}}}async function sr(){let o={evm:false,solana:false,errors:[]};try{let t=await fo(),r=await vo();if(t||r)if(so)try{let e=new Function('try { return require("./utils/getChainsListByConnectorType"); } catch { return null; }')();if(!e)return o.errors.push("Failed to load chain adapter utilities"),o;let l=[];t&&l.push(orbitCore.OrbitAdapter.EVM),r&&l.push(orbitCore.OrbitAdapter.SOLANA),await e.preloadChainAdapters(l),o.evm=t,o.solana=r;}catch(n){let e=n instanceof Error?n.message:"Failed to initialize chain adapters";o.errors.push(e);}else {let{preloadChainAdapters:n}=await import('./getChainsListByConnectorType-RKKDUHIO.cjs'),e=[];t&&e.push(orbitCore.OrbitAdapter.EVM),r&&e.push(orbitCore.OrbitAdapter.SOLANA),await n(e),o.evm=t,o.solana=r;}else o.errors.push("No blockchain packages available for initialization");}catch(t){let r=t instanceof Error?t.message:"Unknown initialization error";o.errors.push(r);}return o}async function ir(o){return o===orbitCore.OrbitAdapter.Starknet||o!==orbitCore.OrbitAdapter.EVM&&o!==orbitCore.OrbitAdapter.SOLANA?false:o===orbitCore.OrbitAdapter.EVM?fo():vo()}Object.defineProperty(exports,"NovaConnectLabelsContext",{enumerable:true,get:function(){return chunkF4INBENJ_cjs.g}});Object.defineProperty(exports,"NovaConnectProviderContext",{enumerable:true,get:function(){return chunkF4INBENJ_cjs.c}});Object.defineProperty(exports,"NovaConnectProviderError",{enumerable:true,get:function(){return chunkF4INBENJ_cjs.b}});Object.defineProperty(exports,"createLabelsSubset",{enumerable:true,get:function(){return chunkF4INBENJ_cjs.o}});Object.defineProperty(exports,"getAvailableChainIds",{enumerable:true,get:function(){return chunkF4INBENJ_cjs.r}});Object.defineProperty(exports,"getAvailableSolanaClusters",{enumerable:true,get:function(){return chunkF4INBENJ_cjs.y}});Object.defineProperty(exports,"getConnectChainId",{enumerable:true,get:function(){return chunkF4INBENJ_cjs.q}});Object.defineProperty(exports,"getFilteredConnectors",{enumerable:true,get:function(){return chunkF4INBENJ_cjs.u}});Object.defineProperty(exports,"getGroupedConnectors",{enumerable:true,get:function(){return chunkF4INBENJ_cjs.s}});Object.defineProperty(exports,"getLabelWithFallback",{enumerable:true,get:function(){return chunkF4INBENJ_cjs.n}});Object.defineProperty(exports,"getNetworkIcon",{enumerable:true,get:function(){return chunkF4INBENJ_cjs.w}});Object.defineProperty(exports,"hasAvailableConnectors",{enumerable:true,get:function(){return chunkF4INBENJ_cjs.t}});Object.defineProperty(exports,"hasConnectorsForAdapter",{enumerable:true,get:function(){return chunkF4INBENJ_cjs.v}});Object.defineProperty(exports,"hasLabel",{enumerable:true,get:function(){return chunkF4INBENJ_cjs.k}});Object.defineProperty(exports,"isAddress",{enumerable:true,get:function(){return chunkF4INBENJ_cjs.p}});Object.defineProperty(exports,"isDefaultLabels",{enumerable:true,get:function(){return chunkF4INBENJ_cjs.m}});Object.defineProperty(exports,"isValidSolanaCluster",{enumerable:true,get:function(){return chunkF4INBENJ_cjs.z}});Object.defineProperty(exports,"networksLinks",{enumerable:true,get:function(){return chunkF4INBENJ_cjs.x}});Object.defineProperty(exports,"useGetWalletNameAndAvatar",{enumerable:true,get:function(){return chunkF4INBENJ_cjs.a}});Object.defineProperty(exports,"useHasNovaConnectContext",{enumerable:true,get:function(){return chunkF4INBENJ_cjs.e}});Object.defineProperty(exports,"useLabelsByCategory",{enumerable:true,get:function(){return chunkF4INBENJ_cjs.l}});Object.defineProperty(exports,"useNovaConnect",{enumerable:true,get:function(){return chunkF4INBENJ_cjs.d}});Object.defineProperty(exports,"useNovaConnectLabel",{enumerable:true,get:function(){return chunkF4INBENJ_cjs.i}});Object.defineProperty(exports,"useNovaConnectLabels",{enumerable:true,get:function(){return chunkF4INBENJ_cjs.h}});Object.defineProperty(exports,"useNovaConnectLabelsSubset",{enumerable:true,get:function(){return chunkF4INBENJ_cjs.j}});Object.defineProperty(exports,"useNovaConnectOptional",{enumerable:true,get:function(){return chunkF4INBENJ_cjs.f}});Object.defineProperty(exports,"useWalletChainsList",{enumerable:true,get:function(){return chunkF4INBENJ_cjs.A}});Object.defineProperty(exports,"useWalletNativeBalance",{enumerable:true,get:function(){return chunkF4INBENJ_cjs.B}});Object.defineProperty(exports,"getAdapterStatus",{enumerable:true,get:function(){return chunkEWPT6HNX_cjs.k}});Object.defineProperty(exports,"getAllAdaptersStatus",{enumerable:true,get:function(){return chunkEWPT6HNX_cjs.l}});Object.defineProperty(exports,"getAvailableSolanaClustersAsync",{enumerable:true,get:function(){return chunkEWPT6HNX_cjs.g}});Object.defineProperty(exports,"getChainsListByConnectorType",{enumerable:true,get:function(){return chunkEWPT6HNX_cjs.b}});Object.defineProperty(exports,"getChainsListByConnectorTypeAsync",{enumerable:true,get:function(){return chunkEWPT6HNX_cjs.a}});Object.defineProperty(exports,"getChainsListByConnectorTypeSync",{enumerable:true,get:function(){return chunkEWPT6HNX_cjs.b}});Object.defineProperty(exports,"getWalletChains",{enumerable:true,get:function(){return chunkEWPT6HNX_cjs.i}});Object.defineProperty(exports,"isEvmChainList",{enumerable:true,get:function(){return chunkEWPT6HNX_cjs.e}});Object.defineProperty(exports,"isEvmChainListAsync",{enumerable:true,get:function(){return chunkEWPT6HNX_cjs.c}});Object.defineProperty(exports,"isEvmChainListSync",{enumerable:true,get:function(){return chunkEWPT6HNX_cjs.e}});Object.defineProperty(exports,"isSolanaChainList",{enumerable:true,get:function(){return chunkEWPT6HNX_cjs.f}});Object.defineProperty(exports,"isSolanaChainListAsync",{enumerable:true,get:function(){return chunkEWPT6HNX_cjs.d}});Object.defineProperty(exports,"isSolanaChainListSync",{enumerable:true,get:function(){return chunkEWPT6HNX_cjs.f}});Object.defineProperty(exports,"isValidSolanaClusterAsync",{enumerable:true,get:function(){return chunkEWPT6HNX_cjs.h}});Object.defineProperty(exports,"preloadChainAdapters",{enumerable:true,get:function(){return chunkEWPT6HNX_cjs.j}});Object.defineProperty(exports,"AllConnectors",{enumerable:true,get:function(){return chunkPUEGOPQT_cjs.b}});Object.defineProperty(exports,"Connection",{enumerable:true,get:function(){return chunkPUEGOPQT_cjs.c}});Object.defineProperty(exports,"Connector",{enumerable:true,get:function(){return chunkPUEGOPQT_cjs.d}});Object.defineProperty(exports,"SatelliteConnectProvider",{enumerable:true,get:function(){return chunkPUEGOPQT_cjs.e}});Object.defineProperty(exports,"SatelliteConnectProviderProps",{enumerable:true,get:function(){return chunkPUEGOPQT_cjs.f}});Object.defineProperty(exports,"SatelliteStoreContext",{enumerable:true,get:function(){return chunkPUEGOPQT_cjs.g}});Object.defineProperty(exports,"getSatelliteExports",{enumerable:true,get:function(){return chunkPUEGOPQT_cjs.a}});Object.defineProperty(exports,"useInitializeAutoConnect",{enumerable:true,get:function(){return chunkPUEGOPQT_cjs.h}});Object.defineProperty(exports,"useSatelliteConnectStore",{enumerable:true,get:function(){return chunkPUEGOPQT_cjs.i}});exports.ErrorsProvider=Po;exports.NovaConnectLabelsProvider=No;exports.NovaConnectProvider=$e;exports.getBlockchainUtilities=nr;exports.getEvmUtils=rr;exports.getSolanaUtils=ar;exports.initializeBlockchainSupport=sr;exports.isAdapterSupported=ir;//# sourceMappingURL=index.cjs.map
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {A,v,z,s,C,y,B,r,D}from'./chunk-S5TAJFN7.js';import {d,h,u,q,p,x,g as g$1,c}from'./chunk-7SDYHBUU.js';export{g as NovaConnectLabelsContext,c as NovaConnectProviderContext,b as NovaConnectProviderError,o as createLabelsSubset,r as getAvailableChainIds,y as getAvailableSolanaClusters,q as getConnectChainId,u as getFilteredConnectors,s as getGroupedConnectors,n as getLabelWithFallback,w as getNetworkIcon,t as hasAvailableConnectors,v as hasConnectorsForAdapter,k as hasLabel,p as isAddress,m as isDefaultLabels,z as isValidSolanaCluster,x as networksLinks,a as useGetWalletNameAndAvatar,e as useHasNovaConnectContext,l as useLabelsByCategory,d as useNovaConnect,i as useNovaConnectLabel,h as useNovaConnectLabels,j as useNovaConnectLabelsSubset,f as useNovaConnectOptional,A as useWalletChainsList,B as useWalletNativeBalance}from'./chunk-7SDYHBUU.js';export{k as getAdapterStatus,l as getAllAdaptersStatus,g as getAvailableSolanaClustersAsync,b as getChainsListByConnectorType,a as getChainsListByConnectorTypeAsync,b as getChainsListByConnectorTypeSync,i as getWalletChains,e as isEvmChainList,c as isEvmChainListAsync,e as isEvmChainListSync,f as isSolanaChainList,d as isSolanaChainListAsync,f as isSolanaChainListSync,h as isValidSolanaClusterAsync,j as preloadChainAdapters}from'./chunk-KHTOKJXG.js';import {a}from'./chunk-3BMX6JWH.js';import {i,g}from'./chunk-6ZNK56AI.js';export{b as AllConnectors,c as Connection,d as Connector,e as SatelliteConnectProvider,f as SatelliteConnectProviderProps,g as SatelliteStoreContext,a as getSatelliteExports,h as useInitializeAutoConnect,i as useSatelliteConnectStore}from'./chunk-6ZNK56AI.js';import {waitFor,delay,formatConnectorName,getConnectorTypeFromName,impersonatedHelpers,OrbitAdapter}from'@tuwaio/orbit-core';import {cn,DialogHeader,DialogTitle,DialogClose,CloseIcon,standardButtonClasses,Dialog,DialogContent,ToastCloseButton,deepMerge}from'@tuwaio/nova-core';import {forwardRef,memo,useContext,useMemo,useEffect,useCallback,useRef,useState}from'react';import {toast,Bounce,ToastContainer}from'react-toastify';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {InformationCircleIcon}from'@heroicons/react/24/outline';import {motion}from'framer-motion';var fe=({title:o,rawError:t,onCopyComplete:r,errorType:n,isConnected:e,...l})=>jsx(D,{title:o,rawError:t,onCopyComplete:r,customization:l.customization}),ve=o=>{let t=h();return jsx(ToastContainer,{...o,role:"alert","aria-live":"assertive","aria-label":t.somethingWentWrong})},ge=(o,t)=>{o(t.title,t.rawError,t.errorKey);},be=o=>{o();},ye=(o,t)=>{o&&process.env.NODE_ENV==="development"&&console.log("Error copied to clipboard:",t.substring(0,100));},Te=o=>o,Ee=o=>o;function Po({containerId:o="nova-connect-errors",position:t="top-center",autoClose:r=7e3,draggable:n=false,customization:e}){let l=h(),s=i(d=>d.switchNetworkError),x=i(d=>d.activeConnection),k=i(d=>d.connectionError),{ToastError:h$1=fe,Container:g=ve}=e?.components??{},{showError:u=ge,dismissError:O=be,onCopyComplete:H=ye}=e?.handlers??{},{errorTitle:T=Te,errorHash:P=Ee}=e??{},M=useRef(new Set),R=useRef(null),i$1=useMemo(()=>{let d=!!k,y=!!s,D=!!x?.isConnected;return {hasWalletError:d,hasSwitchError:y,isConnected:D,hasAnyError:d||y,primaryError:k||s||null,errorType:d?"wallet":y?"switch":null}},[k,s,x?.isConnected]),z=useMemo(()=>{switch(i$1.errorType){case "wallet":return l.connectionError;case "switch":return l.errorWhenChainSwitching;default:return l.somethingWentWrong}},[i$1.errorType,l]),p=useMemo(()=>T(z,{errorType:i$1.errorType}),[T,z,i$1.errorType]),I=useMemo(()=>i$1.primaryError?`${i$1.errorType}-${i$1.primaryError.substring(0,50)}`:null,[i$1.primaryError,i$1.errorType]),f=useMemo(()=>P(I,{primaryError:i$1.primaryError,errorType:i$1.errorType}),[P,I,i$1.primaryError,i$1.errorType]),E=useCallback(()=>{O(()=>{R.current&&(toast.dismiss(R.current),R.current=null),toast.dismiss({containerId:o});});},[o,O]),F=useCallback((d,y)=>{H(d,y,i$1.errorType);},[H,i$1.errorType]),a=useCallback((d,y,D)=>{if(E(),!M.current.has(D))try{let V={containerId:o,toastId:D,onClose:()=>{M.current.delete(D),R.current=null;}},K=e?.toastOptions?.error?.({title:d,rawError:y,errorType:i$1.errorType,isConnected:i$1.isConnected}),J={...V,...K};toast.error(jsx(h$1,{title:d,rawError:y,errorType:i$1.errorType,isConnected:i$1.isConnected,onCopyComplete:Q=>F(Q,y),customization:e?.toastErrorCustomization}),J),M.current.add(D),R.current=D;}catch(V){console.error("Failed to show error toast:",V);}},[E,o,e?.toastOptions?.error,e?.toastErrorCustomization,h$1,i$1.errorType,i$1.isConnected,F]),v=useCallback((d,y,D)=>{u(a,{title:d,rawError:y,errorKey:D,errorType:i$1.errorType});},[a,u,i$1.errorType]);useEffect(()=>{let{hasAnyError:d,isConnected:y,primaryError:D}=i$1;if(y&&!d){E(),M.current.clear();return}if(d&&D&&f){if(y&&i$1.errorType!=="switch")return;v(p,D,f);}},[i$1,p,f,v,E]),useEffect(()=>()=>{E(),M.current.clear();},[E]);let b=useMemo(()=>e?.classNames?.container?e.classNames.container({hasErrors:i$1.hasAnyError,errorType:i$1.errorType}):"novacon:p-0 novacon:bg-transparent",[e,i$1.hasAnyError,i$1.errorType]),C=useMemo(()=>({containerId:o,position:t,closeOnClick:false,icon:false,closeButton:ToastCloseButton,autoClose:r,hideProgressBar:false,newestOnTop:false,pauseOnFocusLoss:false,draggable:n,pauseOnHover:true,theme:"light",transition:Bounce}),[o,t,r,n]),N=useMemo(()=>({...C,...e?.containerProps,className:b}),[C,e?.containerProps,b]);return jsx(g,{...N})}Po.displayName="ErrorsProvider";function No({labels:o,children:t}){let r=useMemo(()=>o,[o]);if(process.env.NODE_ENV==="development"){(!o||typeof o!="object")&&console.warn("NovaConnectLabelsProvider: labels prop should be an object");let e=["connectWallet","disconnect","connecting","connected","error","success"].filter(l=>!(l in o));e.length>0&&console.warn(`NovaConnectLabelsProvider: Missing required labels: ${e.join(", ")}`);}return jsx(g$1.Provider,{value:r,children:t})}No.displayName="NovaConnectLabelsProvider";function Ie(o,t){if(!o||!Array.isArray(o)||!t)return;let r=o.find(n=>n&&typeof n=="object"&&"name"in n&&typeof n.name=="string"?formatConnectorName(n.name)===t:false);if(r&&typeof r=="object"&&"name"in r&&typeof r.name=="string")return r.name}var Xo=forwardRef(({className:o,children:t,modalData:r,...n},e)=>jsx("div",{ref:e,className:cn("novacon:relative novacon:flex novacon:w-full novacon:flex-col",o),...n,children:t}));Xo.displayName="DefaultModalContainer";var Yo=forwardRef(({className:o,children:t,modalData:r,...n},e)=>jsx("div",{ref:e,className:o,...n,children:jsx(DialogHeader,{children:t})}));Yo.displayName="DefaultModalHeader";var Zo=forwardRef(({className:o,onClick:t,modalData:r,...n},e)=>jsx("button",{ref:e,className:cn("novacon:cursor-pointer novacon:text-[var(--tuwa-text-secondary)] novacon:transition novacon:duration-300 novacon:ease-in-out novacon:active:scale-75 novacon:hover:scale-110",o),type:"button",onClick:t,...n,children:jsx(InformationCircleIcon,{width:20,height:20,className:"novacon:mr-1","aria-hidden":"true"})}));Zo.displayName="DefaultInfoButton";var oe=forwardRef(({className:o,children:t,modalData:r,...n},e)=>jsx(DialogTitle,{ref:e,className:cn("novacon:flex novacon:items-center",o),...n,children:t}));oe.displayName="DefaultTitle";var ee=forwardRef(({className:o,onClick:t,modalData:r,...n},e)=>jsx(DialogClose,{asChild:true,children:jsx("button",{ref:e,type:"button",onClick:t,className:cn("novacon:cursor-pointer novacon:rounded-full novacon:p-1 novacon:text-[var(--tuwa-text-tertiary)] novacon:transition-colors novacon:hover:bg-[var(--tuwa-bg-muted)] novacon:hover:text-[var(--tuwa-text-primary)]",o),...n,children:jsx(CloseIcon,{"aria-hidden":"true"})})}));ee.displayName="DefaultCloseButton";var te=forwardRef(({className:o,children:t,modalData:r,...n},e)=>jsx("main",{ref:e,className:cn("novacon:flex novacon:flex-col novacon:gap-4 novacon:p-4",o),id:"connect-modal-content",role:"main",...n,children:t}));te.displayName="DefaultMainContent";var ne=forwardRef(({className:o,children:t,modalData:r,...n},e)=>jsx("footer",{ref:e,className:cn("novacon:flex novacon:w-full novacon:items-center novacon:justify-between novacon:border-t novacon:border-[var(--tuwa-border-primary)] novacon:p-4",o),role:"contentinfo",...n,children:t}));ne.displayName="DefaultFooter";var re=forwardRef(({className:o,onClick:t,children:r,modalData:n,...e},l)=>jsx("button",{ref:l,type:"button",onClick:t,className:cn(standardButtonClasses,o),...e,children:r}));re.displayName="DefaultBackButton";var ae=forwardRef(({className:o,onClick:t,children:r,disabled:n,loading:e,buttonConfig:l,modalData:s,...x},k)=>jsx("button",{ref:k,type:"button",onClick:t,disabled:n||e,className:cn(standardButtonClasses,o),...x,children:e?"Loading...":r}));ae.displayName="DefaultActionButton";var se=forwardRef(({className:o,children:t,modalData:r,...n},e)=>jsx("span",{ref:e,className:cn("novacon:sr-only",o),...n,children:t}));se.displayName="DefaultActionDescription";var ie=forwardRef(({children:o,className:t,...r},n)=>{let{modalData:e,...l}=r;return jsx("div",{ref:n,className:t,...l,children:o})});ie.displayName="DefaultEmptyState";var wo=memo(({appChains:o,solanaRPCUrls:t,withImpersonated:r,customization:n={}})=>{let{isConnectModalOpen:e,setIsConnectModalOpen:l,setConnectModalContentType:s$1,setActiveConnector:x$1,setImpersonatedAddress:k,setIsConnected:h$1,connectModalContentType:g$1,selectedAdapter:u$1,setSelectedAdapter:O,isConnected:H,activeConnector:T,impersonatedAddress:P}=d(),M=i(m=>m.connectionError),R=i(m=>m.getConnectors),i$1=i(m=>m.connect),z$1=i(m=>m.activeConnection),p$1=h(),I=useContext(g),f=useMemo(()=>{if(e)return R()},[e,R]),E=useMemo(()=>u({connectors:f,selectedAdapter:u$1}),[f,u$1]),F=useMemo(()=>M?typeof M=="string"?new Error(M):M:null,[M]),a=useMemo(()=>({contentType:g$1,selectedAdapter:u$1,activeConnector:T,impersonatedAddress:P,isConnected:H,isOpen:e,error:F,connectors:f,filteredConnectors:E,labels:p$1}),[g$1,u$1,T,P,H,e,F,f,E,p$1]);useEffect(()=>{e&&(s$1("connectors"),O(void 0),x$1(void 0),k(""),h$1(false));},[e]);let{components:v$1={},classNames:b={},handlers:C$1={},config:N={},childComponents:d$1={}}=n,y$1=v$1.ModalContainer||Xo,D=v$1.ModalHeader||Yo,V=v$1.InfoButton||Zo,K=v$1.Title||oe,J=v$1.CloseButton||ee,Q=v$1.MainContent||te,X=v$1.Footer||ne,io=v$1.BackButton||re,Y=v$1.ActionButton||ae,lo=v$1.ActionDescription||se,G=v$1.EmptyState||ie,go=v$1.Dialog||Dialog,co=v$1.DialogContent||DialogContent,to=v$1.MotionDiv||motion.div,no=useCallback(()=>{switch(g$1){case "about":return p$1.aboutWallets;case "getWallet":return p$1.getWallet;case "connecting":return u$1&&T&&f&&Ie(f[u$1],T)||p$1.connectingEllipsis;case "impersonate":return p$1.connectImpersonatedWallet;default:return p$1.connectWallet}},[g$1,u$1,T,f,p$1]),Z=useCallback(()=>"connectors",[g$1]),oo=useCallback(m=>{C$1?.onOpenChange?C$1.onOpenChange(m,a):l(m);},[C$1?.onOpenChange,a,l]),bo=useCallback(()=>{let m=()=>s$1(Z());C$1?.onBack?C$1.onBack(a,m):m();},[C$1?.onBack,a,s$1,Z]),yo=useCallback(()=>{C$1?.onInfoClick?C$1.onInfoClick(a):s$1("about");},[C$1?.onInfoClick,a,s$1]),_=useCallback(async(m,To)=>{await i$1({connectorType:m,chainId:q({appChains:o,selectedAdapter:To,solanaRPCUrls:t})});try{await waitFor(()=>I?.getState().activeConnection?.isConnected),h$1(!0);let Eo=setTimeout(()=>l(!1),400),me=setTimeout(()=>h$1(!1),500);await delay(null,500),clearTimeout(Eo),clearTimeout(me);}catch(Eo){console.error(Eo);}},[i$1,o,u$1,t]),j=useCallback(async(m,To)=>{O(m),s$1("connecting"),await _(To,m);},[_]),Bo=useCallback(m=>{x$1(formatConnectorName(m.name)),m.adapters.length===1?(O(m.adapters[0]),s$1(formatConnectorName(m.name)==="impersonatedwallet"?"impersonate":"connecting")):u$1?s$1(formatConnectorName(m.name)==="impersonatedwallet"?"impersonate":"connecting"):formatConnectorName(m.name)==="impersonatedwallet"?s$1("impersonate"):s$1("network");},[u$1]),ce=useCallback(()=>{switch(g$1){case "network":return jsx(B,{activeConnector:T,connectors:E,onClick:j,customization:d$1.networkSelections});case "connectors":return f?jsxs(Fragment,{children:[jsx(C,{networks:Object.keys(f),selectedAdapter:u$1,onSelect:m=>O(m),customization:d$1.networkTabs}),jsx(y,{isOnlyOneNetwork:Object.keys(f).length===1,connectors:E,selectedAdapter:u$1,onClick:Bo,setContentType:s$1,appChains:o,solanaRPCUrls:t,setIsConnected:h$1,setIsOpen:l,withImpersonated:r,customization:d$1.connectorsSelections})]}):jsx(G,{className:b.emptyConnectors?.({modalData:a}),modalData:a,children:"No connectors available"});case "about":return jsx(s,{customization:d$1.aboutWallets});case "getWallet":return jsx(z,{customization:d$1.getWallet});case "connecting":return jsx(v,{selectedAdapter:u$1,connectors:E,activeConnector:T,isConnected:H,customization:d$1.connecting});case "impersonate":return jsx(A,{selectedAdapter:u$1,impersonatedAddress:P,setImpersonatedAddress:k,customization:d$1.impersonateForm})}},[g$1,T,E,j,d$1,f,u$1,Bo,H,P]),$=useCallback(()=>{switch(g$1){case "connectors":return {title:p$1.iDontHaveWallet,onClick:()=>{C$1.onActionClick?.connectors?C$1.onActionClick.connectors(a):s$1("getWallet");}};case "getWallet":return {title:p$1.choseWallet,onClick:()=>{C$1.onActionClick?.getWallet?C$1.onActionClick.getWallet(a):window.open(x[u$1??Object.keys(f)[0]]?.choseWallet,"_blank","noopener,noreferrer");}};case "about":return {title:p$1.learnMore,onClick:()=>{C$1.onActionClick?.about?C$1.onActionClick.about(a):window.open(x[u$1??Object.keys(f)[0]]?.about,"_blank","noopener,noreferrer");}};case "impersonate":return {title:p$1.connect,onClick:async()=>{if(C$1.onActionClick?.impersonate)await C$1.onActionClick.impersonate(a);else {let m=P.trim();if(M||!m||p(m)||z$1?.isConnected)return;impersonatedHelpers.setImpersonated(m),s$1("connecting"),await _(getConnectorTypeFromName(u$1??OrbitAdapter.EVM,T??""),u$1??OrbitAdapter.EVM);}}};case "connecting":return M&&u$1&&T?{title:p$1.tryAgain,onClick:async()=>{C$1.onActionClick?.connecting?await C$1.onActionClick.connecting(a):await _(getConnectorTypeFromName(u$1,T),u$1);}}:void 0}},[g$1,p$1,C$1,a,u$1,f,P,M,_,T])(),de=useCallback(()=>{switch(g$1){case "getWallet":return "Opens external wallet selection page";case "about":return "Opens external documentation";case "impersonate":return "Connects with impersonated wallet address";case "connecting":return "Retries wallet connection";default:return ""}},[g$1]);return jsx(go,{open:e,onOpenChange:oo,children:jsx(co,{className:cn("novacon:w-full novacon:sm:max-w-md"),children:jsx(to,{layout:true,transition:{layout:{duration:N.animation?.disabled?0:N.animation?.layoutDuration??1e-4}},children:jsxs(y$1,{className:b.modalContainer?.({modalData:a}),modalData:a,children:[jsxs(D,{className:b.header?.({modalData:a}),modalData:a,children:[jsxs(K,{className:b.title?.({modalData:a}),modalData:a,children:[g$1==="connectors"&&jsx(V,{className:b.infoButton?.({modalData:a}),onClick:yo,"aria-label":N.ariaLabels?.infoButton?.(a)||`${p$1.learnMore} ${p$1.aboutWallets}`,modalData:a}),no()]}),jsx(J,{className:b.closeButton?.({modalData:a}),onClick:()=>oo(false),"aria-label":N.ariaLabels?.closeButton?.(a)||p$1.closeModal,modalData:a})]}),jsx(Q,{className:b.mainContent?.({modalData:a}),modalData:a,children:ce()}),jsxs(X,{className:b.footer?.({modalData:a}),modalData:a,children:[jsx("div",{className:"novacon:flex novacon:items-center novacon:gap-4",children:g$1!=="connectors"&&jsx(io,{className:b.backButton?.({modalData:a}),onClick:bo,"aria-label":N.ariaLabels?.backButton?.(a)||`${p$1.back} to previous step`,modalData:a,children:p$1.back})}),$&&jsxs("div",{className:"novacon:flex novacon:items-center novacon:gap-3",children:[jsx(Y,{className:b.actionButton?.({modalData:a,buttonConfig:$}),onClick:$.onClick,disabled:$.disabled,loading:$.loading,"aria-describedby":"bottom-action-description",modalData:a,buttonConfig:$,children:$.title}),jsx(lo,{id:"bottom-action-description",className:b.actionDescription?.({modalData:a}),modalData:a,children:de()})]})]})]})})})})});wo.displayName="ConnectModal";var Ve=({labels:o,children:t})=>jsx(No,{labels:o,children:t}),Ue=({customization:o})=>jsx(Po,{customization:o}),qe=(o,t)=>deepMerge(o,t||{}),Ge=o=>o,_e=o=>o,je=(o,t,r)=>o;function $e({labels:o,children:t,appChains:r$1,solanaRPCUrls:n,transactionPool:e,pulsarAdapter:l,withImpersonated:s,withBalance:x,withChain:k,customization:h}){let g=i(j=>j.activeConnection),u=i(j=>j.connectionError),{LabelsProvider:O=Ve,ErrorsProvider:H=Ue}=h?.components??{},{merge:T=qe,transform:P=Ge}=h?.labels??{},{transform:M=_e}=h?.contextValue??{},{providerTree:R=je}=h?.rendering??{},i$1=useMemo(()=>T(a,o||{}),[o,T]),[z,p]=useState(false),[I,f]=useState(false),[E,F]=useState(false),[a$1,v]=useState(false),[b,C]=useState("idle"),[N,d]=useState("connectors"),[y,D]=useState(void 0),[V,K]=useState(void 0),[J,Q]=useState(""),[X,io]=useState(false),[Y,lo]=useState("main"),G=useMemo(()=>({isConnected:X,activeConnection:g,connectionError:u,modalStates:{isConnectModalOpen:z,isConnectedModalOpen:I,isChainsListOpen:E,isChainsListOpenMobile:a$1},contentTypes:{connectModal:N,connectedModal:Y},statuses:{connectedButton:b}}),[X,g,u,z,I,E,a$1,N,Y,b]),go=useMemo(()=>P(i$1,G),[i$1,P,G]),co=useMemo(()=>M({appChains:r$1,solanaRPCUrls:n,withImpersonated:s,withBalance:x,withChain:k,isConnectModalOpen:z,setIsConnectModalOpen:p,isConnectedModalOpen:I,setIsConnectedModalOpen:f,isChainsListOpen:E,setIsChainsListOpen:F,isChainsListOpenMobile:a$1,setIsChainsListOpenMobile:v,connectedButtonStatus:b,setConnectedButtonStatus:C,connectedModalContentType:Y,setConnectedModalContentType:lo,connectModalContentType:N,setConnectModalContentType:d,selectedAdapter:y,setSelectedAdapter:D,activeConnector:V,setActiveConnector:K,impersonatedAddress:J,setImpersonatedAddress:Q,isConnected:X,setIsConnected:io},G),[r$1,n,s,x,k,z,p,I,f,E,F,a$1,v,b,C,Y,lo,N,d,y,D,V,K,J,Q,X,io,M,G]),to=jsx(H,{customization:h?.errors}),no=jsx(O,{labels:go,children:t}),Z=r$1||n?jsx(wo,{withImpersonated:s,solanaRPCUrls:n,appChains:r$1,customization:h?.modals?.connectModal}):null,oo=r$1||n?jsx(r,{solanaRPCUrls:n,appChains:r$1,transactionPool:e,pulsarAdapter:l,customization:h?.modals?.connectedModal}):null,bo=jsxs(c.Provider,{value:co,children:[to,no,Z,oo]}),yo=jsxs(c.Provider,{value:co,children:[to,no,Z,oo]}),_=R(yo,{ErrorsProvider:to,LabelsProvider:no,MainContent:bo,ConnectModal:Z||jsx(Fragment,{}),ConnectedModal:oo||jsx(Fragment,{})},G);return jsx(Fragment,{children:_})}$e.displayName="NovaConnectProvider";var so=typeof process<"u"&&process.env?.NODE_ENV==="production";async function nr(){let{getAllAdaptersStatus:o}=await import('./getChainsListByConnectorType-654NGZVM.js');return {hasEvmUtils:await fo(),hasSolanaUtils:await vo(),adaptersStatus:o()}}async function fo(){if(so)try{return new Function('try { return Boolean(require("@tuwaio/orbit-evm") && require("viem")); } catch { return false; }')()}catch{return false}try{return await import('viem'),await import('@tuwaio/orbit-evm'),!0}catch{return false}}async function vo(){if(so)try{return new Function('try { return Boolean(require("@tuwaio/orbit-solana") && require("gill")); } catch { return false; }')()}catch{return false}try{return await import('gill'),await import('@tuwaio/orbit-solana'),!0}catch{return false}}async function rr(){try{if(!await fo())return {available:!1,error:"EVM packages (viem, @tuwaio/orbit-evm) not available"};if(so)try{let e=new Function('try { return require("./evm"); } catch { return null; }')();return e?new Promise(l=>{if(typeof e.getEvmExports!="function"){l({available:!1,error:"EVM module does not have getEvmExports function"});return}e.getEvmExports().then(s=>{if(!s.available){l({available:!1,error:s.error||"Failed to load EVM exports"});return}l({...e,...s});}).catch(s=>{l({available:!1,error:s instanceof Error?s.message:"Failed to load EVM exports"});});}):{available:!1,error:"Failed to load EVM module"}}catch(n){return {available:!1,error:n instanceof Error?n.message:"Failed to load EVM module"}}let t=await import('./evm/index.js'),r=await t.getEvmExports();return r.available?{...t,...r}:{available:!1,error:r.error||"Failed to load EVM exports"}}catch(o){return {available:false,error:o instanceof Error?o.message:"EVM utilities not available"}}}async function ar(){try{if(!await vo())return {available:!1,error:"Solana packages (gill, @tuwaio/orbit-solana) not available"};if(so)try{let e=new Function('try { return require("./solana"); } catch { return null; }')();return e?new Promise(l=>{if(typeof e.getSolanaExports!="function"){l({available:!1,error:"Solana module does not have getSolanaExports function"});return}e.getSolanaExports().then(s=>{if(!s.available){l({available:!1,error:s.error||"Failed to load Solana exports"});return}l({...e,...s});}).catch(s=>{l({available:!1,error:s instanceof Error?s.message:"Failed to load Solana exports"});});}):{available:!1,error:"Failed to load Solana module"}}catch(n){return {available:!1,error:n instanceof Error?n.message:"Failed to load Solana module"}}let t=await import('./solana/index.js'),r=await t.getSolanaExports();return r.available?{...t,...r}:{available:!1,error:r.error||"Failed to load Solana exports"}}catch(o){return {available:false,error:o instanceof Error?o.message:"Solana utilities not available"}}}async function sr(){let o={evm:false,solana:false,errors:[]};try{let t=await fo(),r=await vo();if(t||r)if(so)try{let e=new Function('try { return require("./utils/getChainsListByConnectorType"); } catch { return null; }')();if(!e)return o.errors.push("Failed to load chain adapter utilities"),o;let l=[];t&&l.push(OrbitAdapter.EVM),r&&l.push(OrbitAdapter.SOLANA),await e.preloadChainAdapters(l),o.evm=t,o.solana=r;}catch(n){let e=n instanceof Error?n.message:"Failed to initialize chain adapters";o.errors.push(e);}else {let{preloadChainAdapters:n}=await import('./getChainsListByConnectorType-654NGZVM.js'),e=[];t&&e.push(OrbitAdapter.EVM),r&&e.push(OrbitAdapter.SOLANA),await n(e),o.evm=t,o.solana=r;}else o.errors.push("No blockchain packages available for initialization");}catch(t){let r=t instanceof Error?t.message:"Unknown initialization error";o.errors.push(r);}return o}async function ir(o){return o===OrbitAdapter.Starknet||o!==OrbitAdapter.EVM&&o!==OrbitAdapter.SOLANA?false:o===OrbitAdapter.EVM?fo():vo()}export{Po as ErrorsProvider,No as NovaConnectLabelsProvider,$e as NovaConnectProvider,nr as getBlockchainUtilities,rr as getEvmUtils,ar as getSolanaUtils,sr as initializeBlockchainSupport,ir as isAdapterSupported};//# sourceMappingURL=index.js.map
|
|
1
|
+
import {A,v,z,s,C,y,B,r,D}from'./chunk-CKCFLRRG.js';import {d,h,u,q,p,x,g as g$1,c}from'./chunk-7EUQO34W.js';export{g as NovaConnectLabelsContext,c as NovaConnectProviderContext,b as NovaConnectProviderError,o as createLabelsSubset,r as getAvailableChainIds,y as getAvailableSolanaClusters,q as getConnectChainId,u as getFilteredConnectors,s as getGroupedConnectors,n as getLabelWithFallback,w as getNetworkIcon,t as hasAvailableConnectors,v as hasConnectorsForAdapter,k as hasLabel,p as isAddress,m as isDefaultLabels,z as isValidSolanaCluster,x as networksLinks,a as useGetWalletNameAndAvatar,e as useHasNovaConnectContext,l as useLabelsByCategory,d as useNovaConnect,i as useNovaConnectLabel,h as useNovaConnectLabels,j as useNovaConnectLabelsSubset,f as useNovaConnectOptional,A as useWalletChainsList,B as useWalletNativeBalance}from'./chunk-7EUQO34W.js';export{k as getAdapterStatus,l as getAllAdaptersStatus,g as getAvailableSolanaClustersAsync,b as getChainsListByConnectorType,a as getChainsListByConnectorTypeAsync,b as getChainsListByConnectorTypeSync,i as getWalletChains,e as isEvmChainList,c as isEvmChainListAsync,e as isEvmChainListSync,f as isSolanaChainList,d as isSolanaChainListAsync,f as isSolanaChainListSync,h as isValidSolanaClusterAsync,j as preloadChainAdapters}from'./chunk-4GXQK7LW.js';import {a}from'./chunk-3BMX6JWH.js';import {i,g}from'./chunk-6ZNK56AI.js';export{b as AllConnectors,c as Connection,d as Connector,e as SatelliteConnectProvider,f as SatelliteConnectProviderProps,g as SatelliteStoreContext,a as getSatelliteExports,h as useInitializeAutoConnect,i as useSatelliteConnectStore}from'./chunk-6ZNK56AI.js';import {waitFor,delay,formatConnectorName,getConnectorTypeFromName,impersonatedHelpers,OrbitAdapter}from'@tuwaio/orbit-core';import {cn,DialogHeader,DialogTitle,DialogClose,CloseIcon,standardButtonClasses,Dialog,DialogContent,ToastCloseButton,deepMerge}from'@tuwaio/nova-core';import {forwardRef,memo,useContext,useMemo,useEffect,useCallback,useRef,useState}from'react';import {toast,Bounce,ToastContainer}from'react-toastify';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {InformationCircleIcon}from'@heroicons/react/24/outline';import {motion}from'framer-motion';var fe=({title:o,rawError:t,onCopyComplete:r,errorType:n,isConnected:e,...l})=>jsx(D,{title:o,rawError:t,onCopyComplete:r,customization:l.customization}),ve=o=>{let t=h();return jsx(ToastContainer,{...o,role:"alert","aria-live":"assertive","aria-label":t.somethingWentWrong})},ge=(o,t)=>{o(t.title,t.rawError,t.errorKey);},be=o=>{o();},ye=(o,t)=>{o&&process.env.NODE_ENV==="development"&&console.log("Error copied to clipboard:",t.substring(0,100));},Te=o=>o,Ee=o=>o;function Po({containerId:o="nova-connect-errors",position:t="top-center",autoClose:r=7e3,draggable:n=false,customization:e}){let l=h(),s=i(d=>d.switchNetworkError),x=i(d=>d.activeConnection),k=i(d=>d.connectionError),{ToastError:h$1=fe,Container:g=ve}=e?.components??{},{showError:u=ge,dismissError:O=be,onCopyComplete:H=ye}=e?.handlers??{},{errorTitle:T=Te,errorHash:P=Ee}=e??{},M=useRef(new Set),R=useRef(null),i$1=useMemo(()=>{let d=!!k,y=!!s,D=!!x?.isConnected;return {hasWalletError:d,hasSwitchError:y,isConnected:D,hasAnyError:d||y,primaryError:k||s||null,errorType:d?"wallet":y?"switch":null}},[k,s,x?.isConnected]),z=useMemo(()=>{switch(i$1.errorType){case "wallet":return l.connectionError;case "switch":return l.errorWhenChainSwitching;default:return l.somethingWentWrong}},[i$1.errorType,l]),p=useMemo(()=>T(z,{errorType:i$1.errorType}),[T,z,i$1.errorType]),I=useMemo(()=>i$1.primaryError?`${i$1.errorType}-${i$1.primaryError.substring(0,50)}`:null,[i$1.primaryError,i$1.errorType]),f=useMemo(()=>P(I,{primaryError:i$1.primaryError,errorType:i$1.errorType}),[P,I,i$1.primaryError,i$1.errorType]),E=useCallback(()=>{O(()=>{R.current&&(toast.dismiss(R.current),R.current=null),toast.dismiss({containerId:o});});},[o,O]),F=useCallback((d,y)=>{H(d,y,i$1.errorType);},[H,i$1.errorType]),a=useCallback((d,y,D)=>{if(E(),!M.current.has(D))try{let V={containerId:o,toastId:D,onClose:()=>{M.current.delete(D),R.current=null;}},K=e?.toastOptions?.error?.({title:d,rawError:y,errorType:i$1.errorType,isConnected:i$1.isConnected}),J={...V,...K};toast.error(jsx(h$1,{title:d,rawError:y,errorType:i$1.errorType,isConnected:i$1.isConnected,onCopyComplete:Q=>F(Q,y),customization:e?.toastErrorCustomization}),J),M.current.add(D),R.current=D;}catch(V){console.error("Failed to show error toast:",V);}},[E,o,e?.toastOptions?.error,e?.toastErrorCustomization,h$1,i$1.errorType,i$1.isConnected,F]),v=useCallback((d,y,D)=>{u(a,{title:d,rawError:y,errorKey:D,errorType:i$1.errorType});},[a,u,i$1.errorType]);useEffect(()=>{let{hasAnyError:d,isConnected:y,primaryError:D}=i$1;if(y&&!d){E(),M.current.clear();return}if(d&&D&&f){if(y&&i$1.errorType!=="switch")return;v(p,D,f);}},[i$1,p,f,v,E]),useEffect(()=>()=>{E(),M.current.clear();},[E]);let b=useMemo(()=>e?.classNames?.container?e.classNames.container({hasErrors:i$1.hasAnyError,errorType:i$1.errorType}):"novacon:p-0 novacon:bg-transparent",[e,i$1.hasAnyError,i$1.errorType]),C=useMemo(()=>({containerId:o,position:t,closeOnClick:false,icon:false,closeButton:ToastCloseButton,autoClose:r,hideProgressBar:false,newestOnTop:false,pauseOnFocusLoss:false,draggable:n,pauseOnHover:true,theme:"light",transition:Bounce}),[o,t,r,n]),N=useMemo(()=>({...C,...e?.containerProps,className:b}),[C,e?.containerProps,b]);return jsx(g,{...N})}Po.displayName="ErrorsProvider";function No({labels:o,children:t}){let r=useMemo(()=>o,[o]);if(process.env.NODE_ENV==="development"){(!o||typeof o!="object")&&console.warn("NovaConnectLabelsProvider: labels prop should be an object");let e=["connectWallet","disconnect","connecting","connected","error","success"].filter(l=>!(l in o));e.length>0&&console.warn(`NovaConnectLabelsProvider: Missing required labels: ${e.join(", ")}`);}return jsx(g$1.Provider,{value:r,children:t})}No.displayName="NovaConnectLabelsProvider";function Ie(o,t){if(!o||!Array.isArray(o)||!t)return;let r=o.find(n=>n&&typeof n=="object"&&"name"in n&&typeof n.name=="string"?formatConnectorName(n.name)===t:false);if(r&&typeof r=="object"&&"name"in r&&typeof r.name=="string")return r.name}var Xo=forwardRef(({className:o,children:t,modalData:r,...n},e)=>jsx("div",{ref:e,className:cn("novacon:relative novacon:flex novacon:w-full novacon:flex-col",o),...n,children:t}));Xo.displayName="DefaultModalContainer";var Yo=forwardRef(({className:o,children:t,modalData:r,...n},e)=>jsx("div",{ref:e,className:o,...n,children:jsx(DialogHeader,{children:t})}));Yo.displayName="DefaultModalHeader";var Zo=forwardRef(({className:o,onClick:t,modalData:r,...n},e)=>jsx("button",{ref:e,className:cn("novacon:cursor-pointer novacon:text-[var(--tuwa-text-secondary)] novacon:transition novacon:duration-300 novacon:ease-in-out novacon:active:scale-75 novacon:hover:scale-110",o),type:"button",onClick:t,...n,children:jsx(InformationCircleIcon,{width:20,height:20,className:"novacon:mr-1","aria-hidden":"true"})}));Zo.displayName="DefaultInfoButton";var oe=forwardRef(({className:o,children:t,modalData:r,...n},e)=>jsx(DialogTitle,{ref:e,className:cn("novacon:flex novacon:items-center",o),...n,children:t}));oe.displayName="DefaultTitle";var ee=forwardRef(({className:o,onClick:t,modalData:r,...n},e)=>jsx(DialogClose,{asChild:true,children:jsx("button",{ref:e,type:"button",onClick:t,className:cn("novacon:cursor-pointer novacon:rounded-full novacon:p-1 novacon:text-[var(--tuwa-text-tertiary)] novacon:transition-colors novacon:hover:bg-[var(--tuwa-bg-muted)] novacon:hover:text-[var(--tuwa-text-primary)]",o),...n,children:jsx(CloseIcon,{"aria-hidden":"true"})})}));ee.displayName="DefaultCloseButton";var te=forwardRef(({className:o,children:t,modalData:r,...n},e)=>jsx("main",{ref:e,className:cn("novacon:flex novacon:flex-col novacon:gap-4 novacon:p-4",o),id:"connect-modal-content",role:"main",...n,children:t}));te.displayName="DefaultMainContent";var ne=forwardRef(({className:o,children:t,modalData:r,...n},e)=>jsx("footer",{ref:e,className:cn("novacon:flex novacon:w-full novacon:items-center novacon:justify-between novacon:border-t novacon:border-[var(--tuwa-border-primary)] novacon:p-4",o),role:"contentinfo",...n,children:t}));ne.displayName="DefaultFooter";var re=forwardRef(({className:o,onClick:t,children:r,modalData:n,...e},l)=>jsx("button",{ref:l,type:"button",onClick:t,className:cn(standardButtonClasses,o),...e,children:r}));re.displayName="DefaultBackButton";var ae=forwardRef(({className:o,onClick:t,children:r,disabled:n,loading:e,buttonConfig:l,modalData:s,...x},k)=>jsx("button",{ref:k,type:"button",onClick:t,disabled:n||e,className:cn(standardButtonClasses,o),...x,children:e?"Loading...":r}));ae.displayName="DefaultActionButton";var se=forwardRef(({className:o,children:t,modalData:r,...n},e)=>jsx("span",{ref:e,className:cn("novacon:sr-only",o),...n,children:t}));se.displayName="DefaultActionDescription";var ie=forwardRef(({children:o,className:t,...r},n)=>{let{modalData:e,...l}=r;return jsx("div",{ref:n,className:t,...l,children:o})});ie.displayName="DefaultEmptyState";var wo=memo(({appChains:o,solanaRPCUrls:t,withImpersonated:r,customization:n={}})=>{let{isConnectModalOpen:e,setIsConnectModalOpen:l,setConnectModalContentType:s$1,setActiveConnector:x$1,setImpersonatedAddress:k,setIsConnected:h$1,connectModalContentType:g$1,selectedAdapter:u$1,setSelectedAdapter:O,isConnected:H,activeConnector:T,impersonatedAddress:P}=d(),M=i(m=>m.connectionError),R=i(m=>m.getConnectors),i$1=i(m=>m.connect),z$1=i(m=>m.activeConnection),p$1=h(),I=useContext(g),f=useMemo(()=>{if(e)return R()},[e,R]),E=useMemo(()=>u({connectors:f,selectedAdapter:u$1}),[f,u$1]),F=useMemo(()=>M?typeof M=="string"?new Error(M):M:null,[M]),a=useMemo(()=>({contentType:g$1,selectedAdapter:u$1,activeConnector:T,impersonatedAddress:P,isConnected:H,isOpen:e,error:F,connectors:f,filteredConnectors:E,labels:p$1}),[g$1,u$1,T,P,H,e,F,f,E,p$1]);useEffect(()=>{e&&(s$1("connectors"),O(void 0),x$1(void 0),k(""),h$1(false));},[e]);let{components:v$1={},classNames:b={},handlers:C$1={},config:N={},childComponents:d$1={}}=n,y$1=v$1.ModalContainer||Xo,D=v$1.ModalHeader||Yo,V=v$1.InfoButton||Zo,K=v$1.Title||oe,J=v$1.CloseButton||ee,Q=v$1.MainContent||te,X=v$1.Footer||ne,io=v$1.BackButton||re,Y=v$1.ActionButton||ae,lo=v$1.ActionDescription||se,G=v$1.EmptyState||ie,go=v$1.Dialog||Dialog,co=v$1.DialogContent||DialogContent,to=v$1.MotionDiv||motion.div,no=useCallback(()=>{switch(g$1){case "about":return p$1.aboutWallets;case "getWallet":return p$1.getWallet;case "connecting":return u$1&&T&&f&&Ie(f[u$1],T)||p$1.connectingEllipsis;case "impersonate":return p$1.connectImpersonatedWallet;default:return p$1.connectWallet}},[g$1,u$1,T,f,p$1]),Z=useCallback(()=>"connectors",[g$1]),oo=useCallback(m=>{C$1?.onOpenChange?C$1.onOpenChange(m,a):l(m);},[C$1?.onOpenChange,a,l]),bo=useCallback(()=>{let m=()=>s$1(Z());C$1?.onBack?C$1.onBack(a,m):m();},[C$1?.onBack,a,s$1,Z]),yo=useCallback(()=>{C$1?.onInfoClick?C$1.onInfoClick(a):s$1("about");},[C$1?.onInfoClick,a,s$1]),_=useCallback(async(m,To)=>{await i$1({connectorType:m,chainId:q({appChains:o,selectedAdapter:To,solanaRPCUrls:t})});try{await waitFor(()=>I?.getState().activeConnection?.isConnected),h$1(!0);let Eo=setTimeout(()=>l(!1),400),me=setTimeout(()=>h$1(!1),500);await delay(null,500),clearTimeout(Eo),clearTimeout(me);}catch(Eo){console.error(Eo);}},[i$1,o,u$1,t]),j=useCallback(async(m,To)=>{O(m),s$1("connecting"),await _(To,m);},[_]),Bo=useCallback(m=>{x$1(formatConnectorName(m.name)),m.adapters.length===1?(O(m.adapters[0]),s$1(formatConnectorName(m.name)==="impersonatedwallet"?"impersonate":"connecting")):u$1?s$1(formatConnectorName(m.name)==="impersonatedwallet"?"impersonate":"connecting"):formatConnectorName(m.name)==="impersonatedwallet"?s$1("impersonate"):s$1("network");},[u$1]),ce=useCallback(()=>{switch(g$1){case "network":return jsx(B,{activeConnector:T,connectors:E,onClick:j,customization:d$1.networkSelections});case "connectors":return f?jsxs(Fragment,{children:[jsx(C,{networks:Object.keys(f),selectedAdapter:u$1,onSelect:m=>O(m),customization:d$1.networkTabs}),jsx(y,{isOnlyOneNetwork:Object.keys(f).length===1,connectors:E,selectedAdapter:u$1,onClick:Bo,setContentType:s$1,appChains:o,solanaRPCUrls:t,setIsConnected:h$1,setIsOpen:l,withImpersonated:r,customization:d$1.connectorsSelections})]}):jsx(G,{className:b.emptyConnectors?.({modalData:a}),modalData:a,children:"No connectors available"});case "about":return jsx(s,{customization:d$1.aboutWallets});case "getWallet":return jsx(z,{customization:d$1.getWallet});case "connecting":return jsx(v,{selectedAdapter:u$1,connectors:E,activeConnector:T,isConnected:H,customization:d$1.connecting});case "impersonate":return jsx(A,{selectedAdapter:u$1,impersonatedAddress:P,setImpersonatedAddress:k,customization:d$1.impersonateForm})}},[g$1,T,E,j,d$1,f,u$1,Bo,H,P]),$=useCallback(()=>{switch(g$1){case "connectors":return {title:p$1.iDontHaveWallet,onClick:()=>{C$1.onActionClick?.connectors?C$1.onActionClick.connectors(a):s$1("getWallet");}};case "getWallet":return {title:p$1.choseWallet,onClick:()=>{C$1.onActionClick?.getWallet?C$1.onActionClick.getWallet(a):window.open(x[u$1??Object.keys(f)[0]]?.choseWallet,"_blank","noopener,noreferrer");}};case "about":return {title:p$1.learnMore,onClick:()=>{C$1.onActionClick?.about?C$1.onActionClick.about(a):window.open(x[u$1??Object.keys(f)[0]]?.about,"_blank","noopener,noreferrer");}};case "impersonate":return {title:p$1.connect,onClick:async()=>{if(C$1.onActionClick?.impersonate)await C$1.onActionClick.impersonate(a);else {let m=P.trim();if(M||!m||p(m)||z$1?.isConnected)return;impersonatedHelpers.setImpersonated(m),s$1("connecting"),await _(getConnectorTypeFromName(u$1??OrbitAdapter.EVM,T??""),u$1??OrbitAdapter.EVM);}}};case "connecting":return M&&u$1&&T?{title:p$1.tryAgain,onClick:async()=>{C$1.onActionClick?.connecting?await C$1.onActionClick.connecting(a):await _(getConnectorTypeFromName(u$1,T),u$1);}}:void 0}},[g$1,p$1,C$1,a,u$1,f,P,M,_,T])(),de=useCallback(()=>{switch(g$1){case "getWallet":return "Opens external wallet selection page";case "about":return "Opens external documentation";case "impersonate":return "Connects with impersonated wallet address";case "connecting":return "Retries wallet connection";default:return ""}},[g$1]);return jsx(go,{open:e,onOpenChange:oo,children:jsx(co,{className:cn("novacon:w-full novacon:sm:max-w-md"),children:jsx(to,{layout:true,transition:{layout:{duration:N.animation?.disabled?0:N.animation?.layoutDuration??1e-4}},children:jsxs(y$1,{className:b.modalContainer?.({modalData:a}),modalData:a,children:[jsxs(D,{className:b.header?.({modalData:a}),modalData:a,children:[jsxs(K,{className:b.title?.({modalData:a}),modalData:a,children:[g$1==="connectors"&&jsx(V,{className:b.infoButton?.({modalData:a}),onClick:yo,"aria-label":N.ariaLabels?.infoButton?.(a)||`${p$1.learnMore} ${p$1.aboutWallets}`,modalData:a}),no()]}),jsx(J,{className:b.closeButton?.({modalData:a}),onClick:()=>oo(false),"aria-label":N.ariaLabels?.closeButton?.(a)||p$1.closeModal,modalData:a})]}),jsx(Q,{className:b.mainContent?.({modalData:a}),modalData:a,children:ce()}),jsxs(X,{className:b.footer?.({modalData:a}),modalData:a,children:[jsx("div",{className:"novacon:flex novacon:items-center novacon:gap-4",children:g$1!=="connectors"&&jsx(io,{className:b.backButton?.({modalData:a}),onClick:bo,"aria-label":N.ariaLabels?.backButton?.(a)||`${p$1.back} to previous step`,modalData:a,children:p$1.back})}),$&&jsxs("div",{className:"novacon:flex novacon:items-center novacon:gap-3",children:[jsx(Y,{className:b.actionButton?.({modalData:a,buttonConfig:$}),onClick:$.onClick,disabled:$.disabled,loading:$.loading,"aria-describedby":"bottom-action-description",modalData:a,buttonConfig:$,children:$.title}),jsx(lo,{id:"bottom-action-description",className:b.actionDescription?.({modalData:a}),modalData:a,children:de()})]})]})]})})})})});wo.displayName="ConnectModal";var Ve=({labels:o,children:t})=>jsx(No,{labels:o,children:t}),Ue=({customization:o})=>jsx(Po,{customization:o}),qe=(o,t)=>deepMerge(o,t||{}),Ge=o=>o,_e=o=>o,je=(o,t,r)=>o;function $e({labels:o,children:t,appChains:r$1,solanaRPCUrls:n,transactionPool:e,pulsarAdapter:l,withImpersonated:s,withBalance:x,withChain:k,customization:h}){let g=i(j=>j.activeConnection),u=i(j=>j.connectionError),{LabelsProvider:O=Ve,ErrorsProvider:H=Ue}=h?.components??{},{merge:T=qe,transform:P=Ge}=h?.labels??{},{transform:M=_e}=h?.contextValue??{},{providerTree:R=je}=h?.rendering??{},i$1=useMemo(()=>T(a,o||{}),[o,T]),[z,p]=useState(false),[I,f]=useState(false),[E,F]=useState(false),[a$1,v]=useState(false),[b,C]=useState("idle"),[N,d]=useState("connectors"),[y,D]=useState(void 0),[V,K]=useState(void 0),[J,Q]=useState(""),[X,io]=useState(false),[Y,lo]=useState("main"),G=useMemo(()=>({isConnected:X,activeConnection:g,connectionError:u,modalStates:{isConnectModalOpen:z,isConnectedModalOpen:I,isChainsListOpen:E,isChainsListOpenMobile:a$1},contentTypes:{connectModal:N,connectedModal:Y},statuses:{connectedButton:b}}),[X,g,u,z,I,E,a$1,N,Y,b]),go=useMemo(()=>P(i$1,G),[i$1,P,G]),co=useMemo(()=>M({appChains:r$1,solanaRPCUrls:n,withImpersonated:s,withBalance:x,withChain:k,isConnectModalOpen:z,setIsConnectModalOpen:p,isConnectedModalOpen:I,setIsConnectedModalOpen:f,isChainsListOpen:E,setIsChainsListOpen:F,isChainsListOpenMobile:a$1,setIsChainsListOpenMobile:v,connectedButtonStatus:b,setConnectedButtonStatus:C,connectedModalContentType:Y,setConnectedModalContentType:lo,connectModalContentType:N,setConnectModalContentType:d,selectedAdapter:y,setSelectedAdapter:D,activeConnector:V,setActiveConnector:K,impersonatedAddress:J,setImpersonatedAddress:Q,isConnected:X,setIsConnected:io},G),[r$1,n,s,x,k,z,p,I,f,E,F,a$1,v,b,C,Y,lo,N,d,y,D,V,K,J,Q,X,io,M,G]),to=jsx(H,{customization:h?.errors}),no=jsx(O,{labels:go,children:t}),Z=r$1||n?jsx(wo,{withImpersonated:s,solanaRPCUrls:n,appChains:r$1,customization:h?.modals?.connectModal}):null,oo=r$1||n?jsx(r,{solanaRPCUrls:n,appChains:r$1,transactionPool:e,pulsarAdapter:l,customization:h?.modals?.connectedModal}):null,bo=jsxs(c.Provider,{value:co,children:[to,no,Z,oo]}),yo=jsxs(c.Provider,{value:co,children:[to,no,Z,oo]}),_=R(yo,{ErrorsProvider:to,LabelsProvider:no,MainContent:bo,ConnectModal:Z||jsx(Fragment,{}),ConnectedModal:oo||jsx(Fragment,{})},G);return jsx(Fragment,{children:_})}$e.displayName="NovaConnectProvider";var so=typeof process<"u"&&process.env?.NODE_ENV==="production";async function nr(){let{getAllAdaptersStatus:o}=await import('./getChainsListByConnectorType-6UA3PPII.js');return {hasEvmUtils:await fo(),hasSolanaUtils:await vo(),adaptersStatus:o()}}async function fo(){if(so)try{return new Function('try { return Boolean(require("@tuwaio/orbit-evm") && require("viem")); } catch { return false; }')()}catch{return false}try{return await import('viem'),await import('@tuwaio/orbit-evm'),!0}catch{return false}}async function vo(){if(so)try{return new Function('try { return Boolean(require("@tuwaio/orbit-solana") && require("gill")); } catch { return false; }')()}catch{return false}try{return await import('gill'),await import('@tuwaio/orbit-solana'),!0}catch{return false}}async function rr(){try{if(!await fo())return {available:!1,error:"EVM packages (viem, @tuwaio/orbit-evm) not available"};if(so)try{let e=new Function('try { return require("./evm"); } catch { return null; }')();return e?new Promise(l=>{if(typeof e.getEvmExports!="function"){l({available:!1,error:"EVM module does not have getEvmExports function"});return}e.getEvmExports().then(s=>{if(!s.available){l({available:!1,error:s.error||"Failed to load EVM exports"});return}l({...e,...s});}).catch(s=>{l({available:!1,error:s instanceof Error?s.message:"Failed to load EVM exports"});});}):{available:!1,error:"Failed to load EVM module"}}catch(n){return {available:!1,error:n instanceof Error?n.message:"Failed to load EVM module"}}let t=await import('./evm/index.js'),r=await t.getEvmExports();return r.available?{...t,...r}:{available:!1,error:r.error||"Failed to load EVM exports"}}catch(o){return {available:false,error:o instanceof Error?o.message:"EVM utilities not available"}}}async function ar(){try{if(!await vo())return {available:!1,error:"Solana packages (gill, @tuwaio/orbit-solana) not available"};if(so)try{let e=new Function('try { return require("./solana"); } catch { return null; }')();return e?new Promise(l=>{if(typeof e.getSolanaExports!="function"){l({available:!1,error:"Solana module does not have getSolanaExports function"});return}e.getSolanaExports().then(s=>{if(!s.available){l({available:!1,error:s.error||"Failed to load Solana exports"});return}l({...e,...s});}).catch(s=>{l({available:!1,error:s instanceof Error?s.message:"Failed to load Solana exports"});});}):{available:!1,error:"Failed to load Solana module"}}catch(n){return {available:!1,error:n instanceof Error?n.message:"Failed to load Solana module"}}let t=await import('./solana/index.js'),r=await t.getSolanaExports();return r.available?{...t,...r}:{available:!1,error:r.error||"Failed to load Solana exports"}}catch(o){return {available:false,error:o instanceof Error?o.message:"Solana utilities not available"}}}async function sr(){let o={evm:false,solana:false,errors:[]};try{let t=await fo(),r=await vo();if(t||r)if(so)try{let e=new Function('try { return require("./utils/getChainsListByConnectorType"); } catch { return null; }')();if(!e)return o.errors.push("Failed to load chain adapter utilities"),o;let l=[];t&&l.push(OrbitAdapter.EVM),r&&l.push(OrbitAdapter.SOLANA),await e.preloadChainAdapters(l),o.evm=t,o.solana=r;}catch(n){let e=n instanceof Error?n.message:"Failed to initialize chain adapters";o.errors.push(e);}else {let{preloadChainAdapters:n}=await import('./getChainsListByConnectorType-6UA3PPII.js'),e=[];t&&e.push(OrbitAdapter.EVM),r&&e.push(OrbitAdapter.SOLANA),await n(e),o.evm=t,o.solana=r;}else o.errors.push("No blockchain packages available for initialization");}catch(t){let r=t instanceof Error?t.message:"Unknown initialization error";o.errors.push(r);}return o}async function ir(o){return o===OrbitAdapter.Starknet||o!==OrbitAdapter.EVM&&o!==OrbitAdapter.SOLANA?false:o===OrbitAdapter.EVM?fo():vo()}export{Po as ErrorsProvider,No as NovaConnectLabelsProvider,$e as NovaConnectProvider,nr as getBlockchainUtilities,rr as getEvmUtils,ar as getSolanaUtils,sr as initializeBlockchainSupport,ir as isAdapterSupported};//# sourceMappingURL=index.js.map
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/solana/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var t={};async function l(){try{if(Object.keys(t).length===0){let e=await new Function('return import("@tuwaio/orbit-solana").catch(error => { console.warn("Failed to load Solana dependencies:", error); return null; })')();if(!e)return !1;t=e.defaultRpcUrlsByMoniker;}return !0}catch(r){return console.warn("Failed to initialize Solana utilities:",r),false}}function c(r){let e=r.split(":");if(e.length<2)return null;let n=e[1];n==="mainnet-beta"&&(n="mainnet");let
|
|
1
|
+
'use strict';var solana=require('@tuwaio/satellite-react/solana');var t={};async function l(){try{if(Object.keys(t).length===0){let e=await new Function('return import("@tuwaio/orbit-solana").catch(error => { console.warn("Failed to load Solana dependencies:", error); return null; })')();if(!e)return !1;t=e.defaultRpcUrlsByMoniker;}return !0}catch(r){return console.warn("Failed to initialize Solana utilities:",r),false}}function c(r){let e=r.split(":");if(e.length<2)return null;let n=e[1];n==="mainnet-beta"&&(n="mainnet");let a=n;return a in t?a:null}function u(r,e){let n={},a=Object.keys(e||t);for(let i of r){if(typeof i!="string")continue;let o=c(i);if(!o||!a.includes(o))continue;let s=e?.[o]??t[o];s&&(n[o]=s);}return n}async function p(r,e){if(await l(),e&&e.length>0){let n=u(e,r);return Object.keys(n)}return Object.keys(r||t)}function f(r){return r.length>0&&r.every(e=>typeof e=="string")}async function S(){return await l(),Object.keys(t)}async function d(r){return await l(),r in t}async function g(){try{let e=await new Function('return import("@tuwaio/satellite-react/solana").catch(error => { console.warn("Failed to load Solana exports:", error); return null; })')();return e?{...e,available:!0}:{available:!1,error:"Failed to load Solana exports"}}catch(r){return console.warn("Failed to load Solana exports:",r),{available:false,error:r instanceof Error?r.message:"Unknown error loading Solana exports"}}}Object.defineProperty(exports,"SolanaConnectorsWatcher",{enumerable:true,get:function(){return solana.SolanaConnectorsWatcher}});exports.getAvailableSolanaClusters=S;exports.getSolanaClusters=p;exports.getSolanaExports=g;exports.initializeSolanaUtils=l;exports.isSolanaChainList=f;exports.isValidSolanaCluster=d;//# sourceMappingURL=index.cjs.map
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/solana/utils.ts","../../src/solana/index.ts"],"names":["defaultRpcUrlsByMoniker","initializeSolanaUtils","orbitSolana","error","extractSolanaCluster","chainId","parts","cluster","moniker","buildSolanaRpcUrls","chains","solanaRPCUrls","availableRpcUrls","allowedClusters","rpcUrl","getSolanaClusters","isSolanaChainList","chain","getAvailableSolanaClusters","isValidSolanaCluster","getSolanaExports","satelliteReactSolana"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/solana/utils.ts","../../src/solana/index.ts"],"names":["defaultRpcUrlsByMoniker","initializeSolanaUtils","orbitSolana","error","extractSolanaCluster","chainId","parts","cluster","moniker","buildSolanaRpcUrls","chains","solanaRPCUrls","availableRpcUrls","allowedClusters","rpcUrl","getSolanaClusters","isSolanaChainList","chain","getAvailableSolanaClusters","isValidSolanaCluster","getSolanaExports","satelliteReactSolana"],"mappings":"kEASA,IAAIA,CAAAA,CAAkD,EAAC,CAQvD,eAAsBC,CAAAA,EAA0C,CAC9D,GAAI,CAEF,GAAI,MAAA,CAAO,IAAA,CAAKD,CAAuB,CAAA,CAAE,MAAA,GAAW,CAAA,CAAG,CAOrD,IAAME,CAAAA,CAAc,MAJO,IAAI,QAAA,CAC7B,oIACF,CAAA,EAE6C,CAE7C,GAAI,CAACA,CAAAA,CACH,OAAO,CAAA,CAAA,CAITF,CAAAA,CAA0BE,CAAAA,CAAY,wBACxC,CACA,OAAO,CAAA,CACT,CAAA,MAASC,CAAAA,CAAO,CACd,OAAA,OAAA,CAAQ,IAAA,CAAK,wCAAA,CAA0CA,CAAK,CAAA,CACrD,KACT,CACF,CAKA,SAASC,CAAAA,CAAqBC,CAAAA,CAA8C,CAC1E,IAAMC,CAAAA,CAAQD,CAAAA,CAAQ,KAAA,CAAM,GAAG,CAAA,CAC/B,GAAIC,CAAAA,CAAM,MAAA,CAAS,CAAA,CAAG,OAAO,IAAA,CAE7B,IAAIC,CAAAA,CAAUD,CAAAA,CAAM,CAAC,CAAA,CAEjBC,CAAAA,GAAY,cAAA,GACdA,CAAAA,CAAU,SAAA,CAAA,CAGZ,IAAMC,CAAAA,CAAUD,CAAAA,CAEhB,OAAOC,CAAAA,IAAWR,CAAAA,CAA0BQ,CAAAA,CAAU,IACxD,CAKA,SAASC,CAAAA,CACPC,CAAAA,CACAC,CAAAA,CAC8B,CAC9B,IAAMC,CAAAA,CAAiD,EAAC,CAIlDC,CAAAA,CAAkC,MAAA,CAAO,IAAA,CAAvBF,CAAAA,EAAyDX,CAAhB,CAAA,CAEjE,IAAA,IAAWK,CAAAA,IAAWK,CAAAA,CAAQ,CAC5B,GAAI,OAAOL,CAAAA,EAAY,QAAA,CAAU,SAEjC,IAAME,CAAAA,CAAUH,CAAAA,CAAqBC,CAAO,CAAA,CAI5C,GAHI,CAACE,CAAAA,EAGD,CAACM,CAAAA,CAAgB,QAAA,CAASN,CAAO,CAAA,CAAG,SAGxC,IAAMO,CAAAA,CAASH,CAAAA,GAAgBJ,CAAO,CAAA,EAAKP,CAAAA,CAAwBO,CAAO,CAAA,CAEtEO,CAAAA,GACFF,CAAAA,CAAiBL,CAAO,CAAA,CAAIO,CAAAA,EAEhC,CAEA,OAAOF,CACT,CAKA,eAAsBG,CAAAA,CACpBJ,CAAAA,CACAD,CAAAA,CACmB,CAInB,GAFA,MAAMT,CAAAA,EAAsB,CAExBS,CAAAA,EAAUA,CAAAA,CAAO,MAAA,CAAS,CAAA,CAAG,CAE/B,IAAME,CAAAA,CAAmBH,CAAAA,CAAmBC,CAAAA,CAAQC,CAAa,CAAA,CACjE,OAAO,MAAA,CAAO,IAAA,CAAKC,CAAgB,CACrC,CAGA,OAAO,MAAA,CAAO,IAAA,CAAKD,CAAAA,EAAiBX,CAAuB,CAC7D,CAKO,SAASgB,CAAAA,CAAkBN,CAAAA,CAAiD,CACjF,OAAOA,CAAAA,CAAO,MAAA,CAAS,CAAA,EAAKA,CAAAA,CAAO,KAAA,CAAOO,CAAAA,EAAU,OAAOA,CAAAA,EAAU,QAAQ,CAC/E,CAKA,eAAsBC,CAAAA,EAA8D,CAElF,OAAA,MAAMjB,CAAAA,EAAsB,CACrB,MAAA,CAAO,IAAA,CAAKD,CAAuB,CAC5C,CAKA,eAAsBmB,CAAAA,CAAqBZ,CAAAA,CAAmC,CAE5E,OAAA,MAAMN,CAAAA,EAAsB,CACrBM,CAAAA,IAAWP,CACpB,CC3HA,eAAsBoB,CAAAA,EAAmB,CACvC,GAAI,CAOF,IAAMC,CAAAA,CAAuB,MAJF,IAAI,QAAA,CAC7B,yIACF,CAAA,EAEsD,CAEtD,OAAKA,CAAAA,CAOE,CACL,GAAGA,CAAAA,CACH,SAAA,CAAW,CAAA,CACb,CAAA,CATS,CACL,SAAA,CAAW,CAAA,CAAA,CACX,KAAA,CAAO,+BACT,CAOJ,CAAA,MAASlB,CAAAA,CAAO,CACd,OAAA,OAAA,CAAQ,IAAA,CAAK,gCAAA,CAAkCA,CAAK,CAAA,CAC7C,CACL,SAAA,CAAW,KAAA,CACX,KAAA,CAAOA,CAAAA,YAAiB,KAAA,CAAQA,CAAAA,CAAM,OAAA,CAAU,sCAClD,CACF,CACF","file":"index.cjs","sourcesContent":["import type { SolanaClusterMoniker } from 'gill';\nimport { ChainIdentifierArray } from '../index';\n\n// Use a local type definition to avoid direct imports\ntype SolanaRPCUrlsType = {\n rpcUrls: Partial<Record<string, string>>;\n};\n\n// Default values that will be populated at runtime if the package is available\nlet defaultRpcUrlsByMoniker: Record<string, string> = {};\n\n/**\n * Initializes Solana utilities by dynamically loading dependencies.\n * This function should be called before using any Solana-specific functionality.\n * \n * @returns Promise resolving to true if initialization was successful\n */\nexport async function initializeSolanaUtils(): Promise<boolean> {\n try {\n // Only try to load if not already initialized\n if (Object.keys(defaultRpcUrlsByMoniker).length === 0) {\n // Use a more indirect approach to prevent bundlers from resolving imports at build time\n // This creates a function that will be called at runtime\n const importSolanaModule = new Function(\n 'return import(\"@tuwaio/orbit-solana\").catch(error => { console.warn(\"Failed to load Solana dependencies:\", error); return null; })'\n );\n\n const orbitSolana = await importSolanaModule();\n\n if (!orbitSolana) {\n return false;\n }\n\n // Populate default values\n defaultRpcUrlsByMoniker = orbitSolana.defaultRpcUrlsByMoniker;\n }\n return true;\n } catch (error) {\n console.warn('Failed to initialize Solana utilities:', error);\n return false;\n }\n}\n\n/**\n * Extracts Solana cluster from chain identifier\n */\nfunction extractSolanaCluster(chainId: string): SolanaClusterMoniker | null {\n const parts = chainId.split(':');\n if (parts.length < 2) return null;\n\n let cluster = parts[1];\n // Map mainnet-beta to mainnet to match orbit-solana keys\n if (cluster === 'mainnet-beta') {\n cluster = 'mainnet';\n }\n\n const moniker = cluster as SolanaClusterMoniker;\n // Validate that it's a known cluster\n return moniker in defaultRpcUrlsByMoniker ? moniker : null;\n}\n\n/**\n * Builds available Solana RPC URLs from chain identifiers\n */\nfunction buildSolanaRpcUrls(\n chains: ChainIdentifierArray,\n solanaRPCUrls?: SolanaRPCUrlsType['rpcUrls'],\n): SolanaRPCUrlsType['rpcUrls'] {\n const availableRpcUrls: SolanaRPCUrlsType['rpcUrls'] = {};\n\n // If config is provided, we only consider clusters defined in it.\n // If not provided, we consider all default clusters.\n const allowedClusters = solanaRPCUrls ? Object.keys(solanaRPCUrls) : Object.keys(defaultRpcUrlsByMoniker);\n\n for (const chainId of chains) {\n if (typeof chainId !== 'string') continue;\n\n const cluster = extractSolanaCluster(chainId);\n if (!cluster) continue;\n\n // Check if this cluster is allowed by app config\n if (!allowedClusters.includes(cluster)) continue;\n\n // Get RPC URL with fallback to default\n const rpcUrl = solanaRPCUrls?.[cluster] ?? defaultRpcUrlsByMoniker[cluster];\n\n if (rpcUrl) {\n availableRpcUrls[cluster] = rpcUrl;\n }\n }\n\n return availableRpcUrls;\n}\n\n/**\n * Get Solana clusters from configuration\n */\nexport async function getSolanaClusters(\n solanaRPCUrls?: Partial<Record<SolanaClusterMoniker, string>>,\n chains?: ChainIdentifierArray,\n): Promise<string[]> {\n // Initialize Solana utilities first\n await initializeSolanaUtils();\n\n if (chains && chains.length > 0) {\n // For Solana, build RPC URLs and return cluster names\n const availableRpcUrls = buildSolanaRpcUrls(chains, solanaRPCUrls);\n return Object.keys(availableRpcUrls);\n }\n\n // Return configured clusters or defaults\n return Object.keys(solanaRPCUrls || defaultRpcUrlsByMoniker);\n}\n\n/**\n * Type guard to check if a chain list contains Solana cluster names\n */\nexport function isSolanaChainList(chains: (string | number)[]): chains is string[] {\n return chains.length > 0 && chains.every((chain) => typeof chain === 'string');\n}\n\n/**\n * Gets available Solana clusters from the default configuration\n */\nexport async function getAvailableSolanaClusters(): Promise<SolanaClusterMoniker[]> {\n // Initialize Solana utilities first\n await initializeSolanaUtils();\n return Object.keys(defaultRpcUrlsByMoniker) as SolanaClusterMoniker[];\n}\n\n/**\n * Validates if a string is a valid Solana cluster moniker\n */\nexport async function isValidSolanaCluster(cluster: string): Promise<boolean> {\n // Initialize Solana utilities first\n await initializeSolanaUtils();\n return cluster in defaultRpcUrlsByMoniker;\n}\n","// Export utils with dynamic initialization\nexport * from './utils';\n\n// Export types only, not implementations\nexport type { SolanaClusterMoniker } from 'gill';\n\n// Export components directly to satisfy static imports\nexport { SolanaConnectorsWatcher } from '@tuwaio/satellite-react/solana';\n\n// Re-export the Connection type from satellite-react and create a type alias for Solana\nimport { Connection } from '@tuwaio/satellite-react';\nexport type SolanaConnection = Connection;\n\n// Dynamic exports that will be loaded at runtime\nexport async function getSolanaExports() {\n try {\n // Use a more indirect approach to prevent bundlers from resolving imports at build time\n // This creates a function that will be called at runtime\n const importSolanaModule = new Function(\n 'return import(\"@tuwaio/satellite-react/solana\").catch(error => { console.warn(\"Failed to load Solana exports:\", error); return null; })'\n );\n\n const satelliteReactSolana = await importSolanaModule();\n\n if (!satelliteReactSolana) {\n return {\n available: false,\n error: 'Failed to load Solana exports',\n };\n }\n\n return {\n ...satelliteReactSolana,\n available: true,\n };\n } catch (error) {\n console.warn('Failed to load Solana exports:', error);\n return {\n available: false,\n error: error instanceof Error ? error.message : 'Unknown error loading Solana exports',\n };\n }\n}\n\n// Extend the main interface with Solana-specific config\n// This will override the default `any` type with specific SolanaClusterMoniker typing\n// eslint-disable-next-line\n// @ts-ignore - Need for declaration merging\ndeclare module '@tuwaio/nova-connect' {\n interface AllChainConfigs {\n /**\n * Solana RPC URLs configuration - enhanced from default any type\n * @override Replaces default `any` with specific SolanaClusterMoniker typing when gill is available\n */\n // eslint-disable-next-line\n // @ts-ignore - Need for declaration merging\n solanaRPCUrls?: Partial<Record<SolanaClusterMoniker, string>>;\n }\n}\n"]}
|
package/dist/solana/index.d.cts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { SolanaClusterMoniker as SolanaClusterMoniker$1 } from 'gill';
|
|
2
2
|
export { SolanaClusterMoniker } from 'gill';
|
|
3
3
|
import { C as ChainIdentifierArray } from '../types-DGsiEwne.cjs';
|
|
4
|
+
export { SolanaConnectorsWatcher } from '@tuwaio/satellite-react/solana';
|
|
5
|
+
import { Connection } from '@tuwaio/satellite-react';
|
|
4
6
|
|
|
5
7
|
/**
|
|
6
8
|
* Initializes Solana utilities by dynamically loading dependencies.
|
|
@@ -26,6 +28,7 @@ declare function getAvailableSolanaClusters(): Promise<SolanaClusterMoniker$1[]>
|
|
|
26
28
|
*/
|
|
27
29
|
declare function isValidSolanaCluster(cluster: string): Promise<boolean>;
|
|
28
30
|
|
|
31
|
+
type SolanaConnection = Connection;
|
|
29
32
|
declare function getSolanaExports(): Promise<any>;
|
|
30
33
|
declare module '@tuwaio/nova-connect' {
|
|
31
34
|
interface AllChainConfigs {
|
|
@@ -37,4 +40,4 @@ declare module '@tuwaio/nova-connect' {
|
|
|
37
40
|
}
|
|
38
41
|
}
|
|
39
42
|
|
|
40
|
-
export { getAvailableSolanaClusters, getSolanaClusters, getSolanaExports, initializeSolanaUtils, isSolanaChainList, isValidSolanaCluster };
|
|
43
|
+
export { type SolanaConnection, getAvailableSolanaClusters, getSolanaClusters, getSolanaExports, initializeSolanaUtils, isSolanaChainList, isValidSolanaCluster };
|
package/dist/solana/index.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { SolanaClusterMoniker as SolanaClusterMoniker$1 } from 'gill';
|
|
2
2
|
export { SolanaClusterMoniker } from 'gill';
|
|
3
3
|
import { C as ChainIdentifierArray } from '../types-DGsiEwne.js';
|
|
4
|
+
export { SolanaConnectorsWatcher } from '@tuwaio/satellite-react/solana';
|
|
5
|
+
import { Connection } from '@tuwaio/satellite-react';
|
|
4
6
|
|
|
5
7
|
/**
|
|
6
8
|
* Initializes Solana utilities by dynamically loading dependencies.
|
|
@@ -26,6 +28,7 @@ declare function getAvailableSolanaClusters(): Promise<SolanaClusterMoniker$1[]>
|
|
|
26
28
|
*/
|
|
27
29
|
declare function isValidSolanaCluster(cluster: string): Promise<boolean>;
|
|
28
30
|
|
|
31
|
+
type SolanaConnection = Connection;
|
|
29
32
|
declare function getSolanaExports(): Promise<any>;
|
|
30
33
|
declare module '@tuwaio/nova-connect' {
|
|
31
34
|
interface AllChainConfigs {
|
|
@@ -37,4 +40,4 @@ declare module '@tuwaio/nova-connect' {
|
|
|
37
40
|
}
|
|
38
41
|
}
|
|
39
42
|
|
|
40
|
-
export { getAvailableSolanaClusters, getSolanaClusters, getSolanaExports, initializeSolanaUtils, isSolanaChainList, isValidSolanaCluster };
|
|
43
|
+
export { type SolanaConnection, getAvailableSolanaClusters, getSolanaClusters, getSolanaExports, initializeSolanaUtils, isSolanaChainList, isValidSolanaCluster };
|
package/dist/solana/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var t={};async function l(){try{if(Object.keys(t).length===0){let e=await new Function('return import("@tuwaio/orbit-solana").catch(error => { console.warn("Failed to load Solana dependencies:", error); return null; })')();if(!e)return !1;t=e.defaultRpcUrlsByMoniker;}return !0}catch(r){return console.warn("Failed to initialize Solana utilities:",r),false}}function c(r){let e=r.split(":");if(e.length<2)return null;let n=e[1];n==="mainnet-beta"&&(n="mainnet");let
|
|
1
|
+
export{SolanaConnectorsWatcher}from'@tuwaio/satellite-react/solana';var t={};async function l(){try{if(Object.keys(t).length===0){let e=await new Function('return import("@tuwaio/orbit-solana").catch(error => { console.warn("Failed to load Solana dependencies:", error); return null; })')();if(!e)return !1;t=e.defaultRpcUrlsByMoniker;}return !0}catch(r){return console.warn("Failed to initialize Solana utilities:",r),false}}function c(r){let e=r.split(":");if(e.length<2)return null;let n=e[1];n==="mainnet-beta"&&(n="mainnet");let a=n;return a in t?a:null}function u(r,e){let n={},a=Object.keys(e||t);for(let i of r){if(typeof i!="string")continue;let o=c(i);if(!o||!a.includes(o))continue;let s=e?.[o]??t[o];s&&(n[o]=s);}return n}async function p(r,e){if(await l(),e&&e.length>0){let n=u(e,r);return Object.keys(n)}return Object.keys(r||t)}function f(r){return r.length>0&&r.every(e=>typeof e=="string")}async function S(){return await l(),Object.keys(t)}async function d(r){return await l(),r in t}async function g(){try{let e=await new Function('return import("@tuwaio/satellite-react/solana").catch(error => { console.warn("Failed to load Solana exports:", error); return null; })')();return e?{...e,available:!0}:{available:!1,error:"Failed to load Solana exports"}}catch(r){return console.warn("Failed to load Solana exports:",r),{available:false,error:r instanceof Error?r.message:"Unknown error loading Solana exports"}}}export{S as getAvailableSolanaClusters,p as getSolanaClusters,g as getSolanaExports,l as initializeSolanaUtils,f as isSolanaChainList,d as isValidSolanaCluster};//# sourceMappingURL=index.js.map
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/solana/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/solana/utils.ts","../../src/solana/index.ts"],"names":["defaultRpcUrlsByMoniker","initializeSolanaUtils","orbitSolana","error","extractSolanaCluster","chainId","parts","cluster","moniker","buildSolanaRpcUrls","chains","solanaRPCUrls","availableRpcUrls","allowedClusters","rpcUrl","getSolanaClusters","isSolanaChainList","chain","getAvailableSolanaClusters","isValidSolanaCluster","getSolanaExports","satelliteReactSolana"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/solana/utils.ts","../../src/solana/index.ts"],"names":["defaultRpcUrlsByMoniker","initializeSolanaUtils","orbitSolana","error","extractSolanaCluster","chainId","parts","cluster","moniker","buildSolanaRpcUrls","chains","solanaRPCUrls","availableRpcUrls","allowedClusters","rpcUrl","getSolanaClusters","isSolanaChainList","chain","getAvailableSolanaClusters","isValidSolanaCluster","getSolanaExports","satelliteReactSolana"],"mappings":"oEASA,IAAIA,CAAAA,CAAkD,EAAC,CAQvD,eAAsBC,CAAAA,EAA0C,CAC9D,GAAI,CAEF,GAAI,MAAA,CAAO,IAAA,CAAKD,CAAuB,CAAA,CAAE,MAAA,GAAW,CAAA,CAAG,CAOrD,IAAME,CAAAA,CAAc,MAJO,IAAI,QAAA,CAC7B,oIACF,CAAA,EAE6C,CAE7C,GAAI,CAACA,CAAAA,CACH,OAAO,CAAA,CAAA,CAITF,CAAAA,CAA0BE,CAAAA,CAAY,wBACxC,CACA,OAAO,CAAA,CACT,CAAA,MAASC,CAAAA,CAAO,CACd,OAAA,OAAA,CAAQ,IAAA,CAAK,wCAAA,CAA0CA,CAAK,CAAA,CACrD,KACT,CACF,CAKA,SAASC,CAAAA,CAAqBC,CAAAA,CAA8C,CAC1E,IAAMC,CAAAA,CAAQD,CAAAA,CAAQ,KAAA,CAAM,GAAG,CAAA,CAC/B,GAAIC,CAAAA,CAAM,MAAA,CAAS,CAAA,CAAG,OAAO,IAAA,CAE7B,IAAIC,CAAAA,CAAUD,CAAAA,CAAM,CAAC,CAAA,CAEjBC,CAAAA,GAAY,cAAA,GACdA,CAAAA,CAAU,SAAA,CAAA,CAGZ,IAAMC,CAAAA,CAAUD,CAAAA,CAEhB,OAAOC,CAAAA,IAAWR,CAAAA,CAA0BQ,CAAAA,CAAU,IACxD,CAKA,SAASC,CAAAA,CACPC,CAAAA,CACAC,CAAAA,CAC8B,CAC9B,IAAMC,CAAAA,CAAiD,EAAC,CAIlDC,CAAAA,CAAkC,MAAA,CAAO,IAAA,CAAvBF,CAAAA,EAAyDX,CAAhB,CAAA,CAEjE,IAAA,IAAWK,CAAAA,IAAWK,CAAAA,CAAQ,CAC5B,GAAI,OAAOL,CAAAA,EAAY,QAAA,CAAU,SAEjC,IAAME,CAAAA,CAAUH,CAAAA,CAAqBC,CAAO,CAAA,CAI5C,GAHI,CAACE,CAAAA,EAGD,CAACM,CAAAA,CAAgB,QAAA,CAASN,CAAO,CAAA,CAAG,SAGxC,IAAMO,CAAAA,CAASH,CAAAA,GAAgBJ,CAAO,CAAA,EAAKP,CAAAA,CAAwBO,CAAO,CAAA,CAEtEO,CAAAA,GACFF,CAAAA,CAAiBL,CAAO,CAAA,CAAIO,CAAAA,EAEhC,CAEA,OAAOF,CACT,CAKA,eAAsBG,CAAAA,CACpBJ,CAAAA,CACAD,CAAAA,CACmB,CAInB,GAFA,MAAMT,CAAAA,EAAsB,CAExBS,CAAAA,EAAUA,CAAAA,CAAO,MAAA,CAAS,CAAA,CAAG,CAE/B,IAAME,CAAAA,CAAmBH,CAAAA,CAAmBC,CAAAA,CAAQC,CAAa,CAAA,CACjE,OAAO,MAAA,CAAO,IAAA,CAAKC,CAAgB,CACrC,CAGA,OAAO,MAAA,CAAO,IAAA,CAAKD,CAAAA,EAAiBX,CAAuB,CAC7D,CAKO,SAASgB,CAAAA,CAAkBN,CAAAA,CAAiD,CACjF,OAAOA,CAAAA,CAAO,MAAA,CAAS,CAAA,EAAKA,CAAAA,CAAO,KAAA,CAAOO,CAAAA,EAAU,OAAOA,CAAAA,EAAU,QAAQ,CAC/E,CAKA,eAAsBC,CAAAA,EAA8D,CAElF,OAAA,MAAMjB,CAAAA,EAAsB,CACrB,MAAA,CAAO,IAAA,CAAKD,CAAuB,CAC5C,CAKA,eAAsBmB,CAAAA,CAAqBZ,CAAAA,CAAmC,CAE5E,OAAA,MAAMN,CAAAA,EAAsB,CACrBM,CAAAA,IAAWP,CACpB,CC3HA,eAAsBoB,CAAAA,EAAmB,CACvC,GAAI,CAOF,IAAMC,CAAAA,CAAuB,MAJF,IAAI,QAAA,CAC7B,yIACF,CAAA,EAEsD,CAEtD,OAAKA,CAAAA,CAOE,CACL,GAAGA,CAAAA,CACH,SAAA,CAAW,CAAA,CACb,CAAA,CATS,CACL,SAAA,CAAW,CAAA,CAAA,CACX,KAAA,CAAO,+BACT,CAOJ,CAAA,MAASlB,CAAAA,CAAO,CACd,OAAA,OAAA,CAAQ,IAAA,CAAK,gCAAA,CAAkCA,CAAK,CAAA,CAC7C,CACL,SAAA,CAAW,KAAA,CACX,KAAA,CAAOA,CAAAA,YAAiB,KAAA,CAAQA,CAAAA,CAAM,OAAA,CAAU,sCAClD,CACF,CACF","file":"index.js","sourcesContent":["import type { SolanaClusterMoniker } from 'gill';\nimport { ChainIdentifierArray } from '../index';\n\n// Use a local type definition to avoid direct imports\ntype SolanaRPCUrlsType = {\n rpcUrls: Partial<Record<string, string>>;\n};\n\n// Default values that will be populated at runtime if the package is available\nlet defaultRpcUrlsByMoniker: Record<string, string> = {};\n\n/**\n * Initializes Solana utilities by dynamically loading dependencies.\n * This function should be called before using any Solana-specific functionality.\n * \n * @returns Promise resolving to true if initialization was successful\n */\nexport async function initializeSolanaUtils(): Promise<boolean> {\n try {\n // Only try to load if not already initialized\n if (Object.keys(defaultRpcUrlsByMoniker).length === 0) {\n // Use a more indirect approach to prevent bundlers from resolving imports at build time\n // This creates a function that will be called at runtime\n const importSolanaModule = new Function(\n 'return import(\"@tuwaio/orbit-solana\").catch(error => { console.warn(\"Failed to load Solana dependencies:\", error); return null; })'\n );\n\n const orbitSolana = await importSolanaModule();\n\n if (!orbitSolana) {\n return false;\n }\n\n // Populate default values\n defaultRpcUrlsByMoniker = orbitSolana.defaultRpcUrlsByMoniker;\n }\n return true;\n } catch (error) {\n console.warn('Failed to initialize Solana utilities:', error);\n return false;\n }\n}\n\n/**\n * Extracts Solana cluster from chain identifier\n */\nfunction extractSolanaCluster(chainId: string): SolanaClusterMoniker | null {\n const parts = chainId.split(':');\n if (parts.length < 2) return null;\n\n let cluster = parts[1];\n // Map mainnet-beta to mainnet to match orbit-solana keys\n if (cluster === 'mainnet-beta') {\n cluster = 'mainnet';\n }\n\n const moniker = cluster as SolanaClusterMoniker;\n // Validate that it's a known cluster\n return moniker in defaultRpcUrlsByMoniker ? moniker : null;\n}\n\n/**\n * Builds available Solana RPC URLs from chain identifiers\n */\nfunction buildSolanaRpcUrls(\n chains: ChainIdentifierArray,\n solanaRPCUrls?: SolanaRPCUrlsType['rpcUrls'],\n): SolanaRPCUrlsType['rpcUrls'] {\n const availableRpcUrls: SolanaRPCUrlsType['rpcUrls'] = {};\n\n // If config is provided, we only consider clusters defined in it.\n // If not provided, we consider all default clusters.\n const allowedClusters = solanaRPCUrls ? Object.keys(solanaRPCUrls) : Object.keys(defaultRpcUrlsByMoniker);\n\n for (const chainId of chains) {\n if (typeof chainId !== 'string') continue;\n\n const cluster = extractSolanaCluster(chainId);\n if (!cluster) continue;\n\n // Check if this cluster is allowed by app config\n if (!allowedClusters.includes(cluster)) continue;\n\n // Get RPC URL with fallback to default\n const rpcUrl = solanaRPCUrls?.[cluster] ?? defaultRpcUrlsByMoniker[cluster];\n\n if (rpcUrl) {\n availableRpcUrls[cluster] = rpcUrl;\n }\n }\n\n return availableRpcUrls;\n}\n\n/**\n * Get Solana clusters from configuration\n */\nexport async function getSolanaClusters(\n solanaRPCUrls?: Partial<Record<SolanaClusterMoniker, string>>,\n chains?: ChainIdentifierArray,\n): Promise<string[]> {\n // Initialize Solana utilities first\n await initializeSolanaUtils();\n\n if (chains && chains.length > 0) {\n // For Solana, build RPC URLs and return cluster names\n const availableRpcUrls = buildSolanaRpcUrls(chains, solanaRPCUrls);\n return Object.keys(availableRpcUrls);\n }\n\n // Return configured clusters or defaults\n return Object.keys(solanaRPCUrls || defaultRpcUrlsByMoniker);\n}\n\n/**\n * Type guard to check if a chain list contains Solana cluster names\n */\nexport function isSolanaChainList(chains: (string | number)[]): chains is string[] {\n return chains.length > 0 && chains.every((chain) => typeof chain === 'string');\n}\n\n/**\n * Gets available Solana clusters from the default configuration\n */\nexport async function getAvailableSolanaClusters(): Promise<SolanaClusterMoniker[]> {\n // Initialize Solana utilities first\n await initializeSolanaUtils();\n return Object.keys(defaultRpcUrlsByMoniker) as SolanaClusterMoniker[];\n}\n\n/**\n * Validates if a string is a valid Solana cluster moniker\n */\nexport async function isValidSolanaCluster(cluster: string): Promise<boolean> {\n // Initialize Solana utilities first\n await initializeSolanaUtils();\n return cluster in defaultRpcUrlsByMoniker;\n}\n","// Export utils with dynamic initialization\nexport * from './utils';\n\n// Export types only, not implementations\nexport type { SolanaClusterMoniker } from 'gill';\n\n// Export components directly to satisfy static imports\nexport { SolanaConnectorsWatcher } from '@tuwaio/satellite-react/solana';\n\n// Re-export the Connection type from satellite-react and create a type alias for Solana\nimport { Connection } from '@tuwaio/satellite-react';\nexport type SolanaConnection = Connection;\n\n// Dynamic exports that will be loaded at runtime\nexport async function getSolanaExports() {\n try {\n // Use a more indirect approach to prevent bundlers from resolving imports at build time\n // This creates a function that will be called at runtime\n const importSolanaModule = new Function(\n 'return import(\"@tuwaio/satellite-react/solana\").catch(error => { console.warn(\"Failed to load Solana exports:\", error); return null; })'\n );\n\n const satelliteReactSolana = await importSolanaModule();\n\n if (!satelliteReactSolana) {\n return {\n available: false,\n error: 'Failed to load Solana exports',\n };\n }\n\n return {\n ...satelliteReactSolana,\n available: true,\n };\n } catch (error) {\n console.warn('Failed to load Solana exports:', error);\n return {\n available: false,\n error: error instanceof Error ? error.message : 'Unknown error loading Solana exports',\n };\n }\n}\n\n// Extend the main interface with Solana-specific config\n// This will override the default `any` type with specific SolanaClusterMoniker typing\n// eslint-disable-next-line\n// @ts-ignore - Need for declaration merging\ndeclare module '@tuwaio/nova-connect' {\n interface AllChainConfigs {\n /**\n * Solana RPC URLs configuration - enhanced from default any type\n * @override Replaces default `any` with specific SolanaClusterMoniker typing when gill is available\n */\n // eslint-disable-next-line\n // @ts-ignore - Need for declaration merging\n solanaRPCUrls?: Partial<Record<SolanaClusterMoniker, string>>;\n }\n}\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
async function n(){try{return await import('./solana/index.js')}catch(a){return console.warn("Solana utilities not available:",a),null}}async function i(){let a=await n();return {async getChains(t,e){return a?.getSolanaClusters?await a.getSolanaClusters(t,e):t&&typeof t=="object"?Object.keys(t):[]},isChainList(t){return a?.isSolanaChainList?a.isSolanaChainList(t):t.length>0&&t.every(e=>typeof e=="string")},async getAvailableClusters(){return a?.getAvailableSolanaClusters?await a.getAvailableSolanaClusters():[]},async isValidCluster(t){return a?.isValidSolanaCluster?await a.isValidSolanaCluster(t):false}}}async function r(){try{return await import('./solana/index.js'),!0}catch{return false}}export{i as createSolanaAdapter,r as isSolanaAdapterAvailable};//# sourceMappingURL=solana-
|
|
2
|
-
//# sourceMappingURL=solana-
|
|
1
|
+
async function n(){try{return await import('./solana/index.js')}catch(a){return console.warn("Solana utilities not available:",a),null}}async function i(){let a=await n();return {async getChains(t,e){return a?.getSolanaClusters?await a.getSolanaClusters(t,e):t&&typeof t=="object"?Object.keys(t):[]},isChainList(t){return a?.isSolanaChainList?a.isSolanaChainList(t):t.length>0&&t.every(e=>typeof e=="string")},async getAvailableClusters(){return a?.getAvailableSolanaClusters?await a.getAvailableSolanaClusters():[]},async isValidCluster(t){return a?.isValidSolanaCluster?await a.isValidSolanaCluster(t):false}}}async function r(){try{return await import('./solana/index.js'),!0}catch{return false}}export{i as createSolanaAdapter,r as isSolanaAdapterAvailable};//# sourceMappingURL=solana-2KX5XQPR.js.map
|
|
2
|
+
//# sourceMappingURL=solana-2KX5XQPR.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils/adapters/solana.ts"],"names":["getSolanaUtils","error","createSolanaAdapter","solanaUtils","solanaRPCUrls","chains","chain","cluster","isSolanaAdapterAvailable"],"mappings":"AAkCA,eAAeA,CAAAA,EAAoD,CACjE,GAAI,CAGF,OADoB,MAAM,OAAO,mBAAc,CAEjD,CAAA,MAASC,CAAAA,CAAO,CACd,OAAA,OAAA,CAAQ,KAAK,iCAAA,CAAmCA,CAAK,CAAA,CAC9C,IACT,CACF,CAiCA,eAAsBC,CAAAA,EAA6C,CACjE,IAAMC,CAAAA,CAAc,MAAMH,CAAAA,EAAe,CAEzC,OAAO,CAQL,MAAM,SAAA,CAAUI,CAAAA,CAAoBC,CAAAA,CAA4C,CAE9E,OAAIF,CAAAA,EAAa,iBAAA,CACR,MAAMA,CAAAA,CAAY,iBAAA,CAAkBC,CAAAA,CAAeC,CAAM,CAAA,CAI9DD,CAAAA,EAAiB,OAAOA,CAAAA,EAAkB,QAAA,CACrC,MAAA,CAAO,IAAA,CAAKA,CAAa,CAAA,CAE3B,EACT,CAAA,CASA,WAAA,CAAYC,CAAAA,CAAsC,CAChD,OAAIF,GAAa,iBAAA,CACRA,CAAAA,CAAY,iBAAA,CAAkBE,CAAM,CAAA,CAItCA,CAAAA,CAAO,MAAA,CAAS,CAAA,EAAKA,CAAAA,CAAO,KAAA,CAAOC,CAAAA,EAAU,OAAOA,CAAAA,EAAU,QAAQ,CAC/E,CAAA,CAcA,MAAM,oBAAA,EAA0C,CAC9C,OAAIH,CAAAA,EAAa,0BAAA,CACR,MAAMA,CAAAA,CAAY,0BAAA,EAA2B,CAE/C,EACT,CAAA,CAkBA,MAAM,eAAeI,CAAAA,CAAmC,CACtD,OAAIJ,CAAAA,EAAa,oBAAA,CACR,MAAMA,CAAAA,CAAY,oBAAA,CAAqBI,CAAO,CAAA,CAEhD,KACT,CACF,CACF,CAuBA,eAAsBC,CAAAA,EAA6C,CACjE,GAAI,CACF,OAAA,MAAM,OAAO,mBAAc,CAAA,CACpB,CAAA,CACT,CAAA,KAAQ,CACN,OAAO,MACT,CACF","file":"solana-
|
|
1
|
+
{"version":3,"sources":["../src/utils/adapters/solana.ts"],"names":["getSolanaUtils","error","createSolanaAdapter","solanaUtils","solanaRPCUrls","chains","chain","cluster","isSolanaAdapterAvailable"],"mappings":"AAkCA,eAAeA,CAAAA,EAAoD,CACjE,GAAI,CAGF,OADoB,MAAM,OAAO,mBAAc,CAEjD,CAAA,MAASC,CAAAA,CAAO,CACd,OAAA,OAAA,CAAQ,KAAK,iCAAA,CAAmCA,CAAK,CAAA,CAC9C,IACT,CACF,CAiCA,eAAsBC,CAAAA,EAA6C,CACjE,IAAMC,CAAAA,CAAc,MAAMH,CAAAA,EAAe,CAEzC,OAAO,CAQL,MAAM,SAAA,CAAUI,CAAAA,CAAoBC,CAAAA,CAA4C,CAE9E,OAAIF,CAAAA,EAAa,iBAAA,CACR,MAAMA,CAAAA,CAAY,iBAAA,CAAkBC,CAAAA,CAAeC,CAAM,CAAA,CAI9DD,CAAAA,EAAiB,OAAOA,CAAAA,EAAkB,QAAA,CACrC,MAAA,CAAO,IAAA,CAAKA,CAAa,CAAA,CAE3B,EACT,CAAA,CASA,WAAA,CAAYC,CAAAA,CAAsC,CAChD,OAAIF,GAAa,iBAAA,CACRA,CAAAA,CAAY,iBAAA,CAAkBE,CAAM,CAAA,CAItCA,CAAAA,CAAO,MAAA,CAAS,CAAA,EAAKA,CAAAA,CAAO,KAAA,CAAOC,CAAAA,EAAU,OAAOA,CAAAA,EAAU,QAAQ,CAC/E,CAAA,CAcA,MAAM,oBAAA,EAA0C,CAC9C,OAAIH,CAAAA,EAAa,0BAAA,CACR,MAAMA,CAAAA,CAAY,0BAAA,EAA2B,CAE/C,EACT,CAAA,CAkBA,MAAM,eAAeI,CAAAA,CAAmC,CACtD,OAAIJ,CAAAA,EAAa,oBAAA,CACR,MAAMA,CAAAA,CAAY,oBAAA,CAAqBI,CAAO,CAAA,CAEhD,KACT,CACF,CACF,CAuBA,eAAsBC,CAAAA,EAA6C,CACjE,GAAI,CACF,OAAA,MAAM,OAAO,mBAAc,CAAA,CACpB,CAAA,CACT,CAAA,KAAQ,CACN,OAAO,MACT,CACF","file":"solana-2KX5XQPR.js","sourcesContent":["import type { ChainAdapter } from './types';\n\n/**\n * Solana utilities module interface for dynamic imports.\n *\n * @internal\n * @since 1.0.0\n */\ninterface SolanaUtilsModule {\n getSolanaClusters?: (solanaRPCUrls: any, chains?: any) => Promise<string[]>;\n isSolanaChainList?: (chains: (string | number)[]) => boolean;\n getAvailableSolanaClusters?: () => Promise<string[]>;\n isValidSolanaCluster?: (cluster: string) => Promise<boolean>;\n initializeSolanaUtils?: () => Promise<boolean>;\n}\n\n/**\n * Dynamically imports and checks availability of Solana utilities.\n * This function attempts to load Solana-specific utilities without throwing errors\n * if the Solana package is not installed in the current environment.\n *\n * @internal\n * @returns Promise resolving to Solana utilities module or null if not available\n *\n * @example\n * ```typescript\n * const solanaUtils = await getSolanaUtils();\n * if (solanaUtils?.getSolanaClusters) {\n * const clusters = solanaUtils.getSolanaClusters(rpcUrls);\n * }\n * ```\n *\n * @since 1.0.0\n */\nasync function getSolanaUtils(): Promise<SolanaUtilsModule | null> {\n try {\n // Dynamic import of Solana utilities - fails gracefully if package not installed\n const solanaUtils = await import('../../solana');\n return solanaUtils;\n } catch (error) {\n console.warn('Solana utilities not available:', error);\n return null;\n }\n}\n\n/**\n * Creates a Solana chain adapter with dynamic loading and fallback support.\n *\n * This adapter provides Solana-specific functionality while gracefully handling\n * environments where Solana utilities are not available. It includes Solana-specific\n * methods like cluster management that are unique to the Solana blockchain architecture.\n *\n * @returns Promise resolving to a configured Solana ChainAdapter\n *\n * @example\n * ```typescript\n * const adapter = await createSolanaAdapter();\n *\n * // Get Solana cluster names from RPC configuration\n * const clusters = adapter.getChains({\n * 'mainnet-beta': 'https://api.mainnet-beta.solana.com',\n * devnet: 'https://api.devnet.solana.com'\n * });\n * console.log(clusters); // ['mainnet-beta', 'devnet']\n *\n * // Validate cluster list format\n * const isValid = adapter.isChainList(['mainnet-beta', 'devnet']);\n * console.log(isValid); // true (string identifiers are valid for Solana)\n *\n * // Get available clusters\n * const availableClusters = adapter.getAvailableClusters?.();\n * console.log(availableClusters); // All configured cluster names\n * ```\n *\n * @since 1.0.0\n */\nexport async function createSolanaAdapter(): Promise<ChainAdapter> {\n const solanaUtils = await getSolanaUtils();\n\n return {\n /**\n * Extracts cluster names from Solana RPC URL configuration.\n *\n * @param solanaRPCUrls Object mapping cluster names to RPC URLs\n * @param chains Optional array of specific chains to filter\n * @returns Array of cluster names (strings)\n */\n async getChains(solanaRPCUrls: any, chains?: any): Promise<(string | number)[]> {\n // Use imported Solana utilities if available\n if (solanaUtils?.getSolanaClusters) {\n return await solanaUtils.getSolanaClusters(solanaRPCUrls, chains);\n }\n\n // Fallback implementation for basic cluster extraction\n if (solanaRPCUrls && typeof solanaRPCUrls === 'object') {\n return Object.keys(solanaRPCUrls);\n }\n return [];\n },\n\n /**\n * Validates whether the provided chains list conforms to Solana cluster format.\n * Solana clusters are typically identified by string names like 'mainnet-beta', 'devnet'.\n *\n * @param chains Array of chain identifiers to validate\n * @returns True if the chain list is valid for Solana\n */\n isChainList(chains: (string | number)[]): boolean {\n if (solanaUtils?.isSolanaChainList) {\n return solanaUtils.isSolanaChainList(chains);\n }\n\n // Fallback validation: Solana clusters should be strings\n return chains.length > 0 && chains.every((chain) => typeof chain === 'string');\n },\n\n /**\n * Gets all available Solana clusters from the current configuration.\n * This is a Solana-specific method that returns cluster names that can be used.\n *\n * @returns Array of available cluster names\n *\n * @example\n * ```typescript\n * const clusters = await adapter.getAvailableClusters?.();\n * // Might return: ['mainnet-beta', 'devnet', 'testnet']\n * ```\n */\n async getAvailableClusters(): Promise<string[]> {\n if (solanaUtils?.getAvailableSolanaClusters) {\n return await solanaUtils.getAvailableSolanaClusters();\n }\n return [];\n },\n\n /**\n * Validates whether a cluster name is valid for Solana.\n * Checks against known Solana cluster monikers and custom configurations.\n *\n * @param cluster Cluster name to validate\n * @returns True if the cluster name is valid\n *\n * @example\n * ```typescript\n * const isValid = await adapter.isValidCluster?.('mainnet-beta');\n * console.log(isValid); // true\n *\n * const isInvalid = await adapter.isValidCluster?.('invalid-cluster');\n * console.log(isInvalid); // false\n * ```\n */\n async isValidCluster(cluster: string): Promise<boolean> {\n if (solanaUtils?.isValidSolanaCluster) {\n return await solanaUtils.isValidSolanaCluster(cluster);\n }\n return false;\n },\n };\n}\n\n/**\n * Checks if the Solana adapter can be created in the current environment.\n * This function verifies that the required Solana utilities are available\n * by attempting to import them.\n *\n * @returns Promise resolving to true if Solana adapter is available\n *\n * @example\n * ```typescript\n * const hasSolana = await isSolanaAdapterAvailable();\n * if (hasSolana) {\n * const adapter = await createSolanaAdapter();\n * // Use Solana functionality\n * const clusters = adapter.getAvailableClusters?.();\n * } else {\n * console.log('Solana support not available in this build');\n * }\n * ```\n *\n * @since 1.0.0\n */\nexport async function isSolanaAdapterAvailable(): Promise<boolean> {\n try {\n await import('../../solana');\n return true;\n } catch {\n return false;\n }\n}\n"]}
|