@tomo-inc/wallet-adaptor-base 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (171) hide show
  1. package/CHANGELOG.md +3 -0
  2. package/README.md +60 -0
  3. package/dist/index.cjs +2485 -0
  4. package/dist/index.d.cts +184 -0
  5. package/dist/index.d.ts +184 -0
  6. package/dist/index.js +2471 -0
  7. package/package.json +31 -0
  8. package/project.json +67 -0
  9. package/src/chains/type.ts +3 -0
  10. package/src/chains/utils.ts +20 -0
  11. package/src/index.ts +93 -0
  12. package/src/svg.d.ts +4 -0
  13. package/src/type.ts +99 -0
  14. package/src/utils/browsers.ts +39 -0
  15. package/src/utils/chainId.ts +27 -0
  16. package/src/utils/isMobile.ts +22 -0
  17. package/src/utils/utils.ts +14 -0
  18. package/src/wallet-api/balance.ts +96 -0
  19. package/src/wallet-api/chain.ts +59 -0
  20. package/src/wallet-api/connect.ts +65 -0
  21. package/src/wallet-api/index.ts +5 -0
  22. package/src/wallet-api/sign-in.ts +103 -0
  23. package/src/wallet-api/sign-message.ts +60 -0
  24. package/src/wallets/Wallet.ts +37 -0
  25. package/src/wallets/default/backpackWallet/backpackWallet.svg +1 -0
  26. package/src/wallets/default/backpackWallet/backpackWallet.ts +23 -0
  27. package/src/wallets/default/berasigWallet/berasigWallet.svg +1 -0
  28. package/src/wallets/default/berasigWallet/berasigWallet.ts +22 -0
  29. package/src/wallets/default/binanceWallet/binanceWallet.svg +1 -0
  30. package/src/wallets/default/binanceWallet/binanceWallet.ts +23 -0
  31. package/src/wallets/default/bitgetWallet/bitgetWallet.svg +4 -0
  32. package/src/wallets/default/bitgetWallet/bitgetWallet.ts +30 -0
  33. package/src/wallets/default/bitskiWallet/bitskiWallet.svg +1 -0
  34. package/src/wallets/default/bitskiWallet/bitskiWallet.ts +17 -0
  35. package/src/wallets/default/bitverseWallet/bitverseWallet.svg +1 -0
  36. package/src/wallets/default/bitverseWallet/bitverseWallet.ts +17 -0
  37. package/src/wallets/default/bloomWallet/bloomWallet.svg +1 -0
  38. package/src/wallets/default/bloomWallet/bloomWallet.ts +15 -0
  39. package/src/wallets/default/braveWallet/braveWallet.svg +1 -0
  40. package/src/wallets/default/braveWallet/braveWallet.ts +20 -0
  41. package/src/wallets/default/bybitWallet/bybitWallet.svg +1 -0
  42. package/src/wallets/default/bybitWallet/bybitWallet.ts +23 -0
  43. package/src/wallets/default/clvWallet/clvWallet.svg +1 -0
  44. package/src/wallets/default/clvWallet/clvWallet.ts +21 -0
  45. package/src/wallets/default/coin98Wallet/coin98Wallet.svg +1 -0
  46. package/src/wallets/default/coin98Wallet/coin98Wallet.ts +25 -0
  47. package/src/wallets/default/coinbaseWallet/coinbaseWallet.svg +4 -0
  48. package/src/wallets/default/coinbaseWallet/coinbaseWallet.ts +25 -0
  49. package/src/wallets/default/compassWallet/compassWallet.svg +1 -0
  50. package/src/wallets/default/compassWallet/compassWallet.ts +19 -0
  51. package/src/wallets/default/coreWallet/coreWallet.svg +7 -0
  52. package/src/wallets/default/coreWallet/coreWallet.ts +24 -0
  53. package/src/wallets/default/ctrlWallet/ctrlWallet.svg +13 -0
  54. package/src/wallets/default/ctrlWallet/ctrlWallet.ts +24 -0
  55. package/src/wallets/default/dawnWallet/dawnWallet.svg +23 -0
  56. package/src/wallets/default/dawnWallet/dawnWallet.ts +16 -0
  57. package/src/wallets/default/desigWallet/desigWallet.svg +1 -0
  58. package/src/wallets/default/desigWallet/desigWallet.ts +21 -0
  59. package/src/wallets/default/enkryptWallet/enkryptWallet.svg +10 -0
  60. package/src/wallets/default/enkryptWallet/enkryptWallet.ts +24 -0
  61. package/src/wallets/default/foxWallet/foxWallet.svg +6 -0
  62. package/src/wallets/default/foxWallet/foxWallet.ts +19 -0
  63. package/src/wallets/default/frameWallet/frameWallet.svg +1 -0
  64. package/src/wallets/default/frameWallet/frameWallet.ts +17 -0
  65. package/src/wallets/default/gateWallet/gateWallet.svg +1 -0
  66. package/src/wallets/default/gateWallet/gateWallet.ts +24 -0
  67. package/src/wallets/default/imTokenWallet/imTokenWallet.svg +10 -0
  68. package/src/wallets/default/imTokenWallet/imTokenWallet.ts +18 -0
  69. package/src/wallets/default/injectedWallet/injectedWallet.svg +1 -0
  70. package/src/wallets/default/injectedWallet/injectedWallet.ts +12 -0
  71. package/src/wallets/default/iopayWallet/iopayWallet.svg +1 -0
  72. package/src/wallets/default/iopayWallet/iopayWallet.ts +18 -0
  73. package/src/wallets/default/kaiaWallet/kaiaWallet.svg +16 -0
  74. package/src/wallets/default/kaiaWallet/kaiaWallet.ts +22 -0
  75. package/src/wallets/default/kaikasWallet/kaikasWallet.svg +1 -0
  76. package/src/wallets/default/kaikasWallet/kaikasWallet.ts +22 -0
  77. package/src/wallets/default/krakenWallet/krakenWallet.svg +1 -0
  78. package/src/wallets/default/krakenWallet/krakenWallet.ts +17 -0
  79. package/src/wallets/default/kresusWallet/kresusWallet.svg +1 -0
  80. package/src/wallets/default/kresusWallet/kresusWallet.ts +17 -0
  81. package/src/wallets/default/ledgerWallet/ledgerWallet.svg +1 -0
  82. package/src/wallets/default/ledgerWallet/ledgerWallet.ts +23 -0
  83. package/src/wallets/default/magicEdenWallet/magicEden.svg +1 -0
  84. package/src/wallets/default/magicEdenWallet/magicEdenWallet.ts +25 -0
  85. package/src/wallets/default/mathWallet/icon.ts +2 -0
  86. package/src/wallets/default/mathWallet/mathWallet.ts +24 -0
  87. package/src/wallets/default/metaMaskWallet/icon.ts +2 -0
  88. package/src/wallets/default/metaMaskWallet/metaMaskWallet.svg +32 -0
  89. package/src/wallets/default/metaMaskWallet/metaMaskWallet.ts +88 -0
  90. package/src/wallets/default/myDogeWallet/icon.ts +2 -0
  91. package/src/wallets/default/myDogeWallet/mydogeWallet.svg +190 -0
  92. package/src/wallets/default/myDogeWallet/mydogeWallet.ts +20 -0
  93. package/src/wallets/default/nestWallet/nestWallet.svg +1 -0
  94. package/src/wallets/default/nestWallet/nestWallet.ts +17 -0
  95. package/src/wallets/default/novaWallet/novaWallet.svg +19 -0
  96. package/src/wallets/default/novaWallet/novaWallet.ts +30 -0
  97. package/src/wallets/default/oktoWallet/oktoWallet.svg +1 -0
  98. package/src/wallets/default/oktoWallet/oktoWallet.ts +18 -0
  99. package/src/wallets/default/okxWallet/okxWallet.svg +1 -0
  100. package/src/wallets/default/okxWallet/okxWallet.ts +32 -0
  101. package/src/wallets/default/omniWallet/omniWallet.svg +5 -0
  102. package/src/wallets/default/omniWallet/omniWallet.ts +18 -0
  103. package/src/wallets/default/oneInchWallet/oneInchWallet.svg +1 -0
  104. package/src/wallets/default/oneInchWallet/oneInchWallet.ts +18 -0
  105. package/src/wallets/default/oneKeyWallet/oneKeyWallet.svg +1 -0
  106. package/src/wallets/default/oneKeyWallet/oneKeyWallet.ts +25 -0
  107. package/src/wallets/default/paraSwapWallet/paraSwapWallet.svg +1 -0
  108. package/src/wallets/default/paraSwapWallet/paraswapWallet.ts +17 -0
  109. package/src/wallets/default/phantomWallet/phantomWallet.svg +1 -0
  110. package/src/wallets/default/phantomWallet/phantomWallet.ts +30 -0
  111. package/src/wallets/default/rabbyWallet/rabbyWallet.svg +1 -0
  112. package/src/wallets/default/rabbyWallet/rabbyWallet.ts +18 -0
  113. package/src/wallets/default/rainbowWallet/rainbowWallet.svg +54 -0
  114. package/src/wallets/default/rainbowWallet/rainbowWallet.ts +24 -0
  115. package/src/wallets/default/ramperWallet/ramperWallet.svg +1 -0
  116. package/src/wallets/default/ramperWallet/ramperWallet.ts +19 -0
  117. package/src/wallets/default/readyWallet/readyWallet.svg +4 -0
  118. package/src/wallets/default/readyWallet/readyWallet.ts +18 -0
  119. package/src/wallets/default/roninWallet/roninWallet.svg +1 -0
  120. package/src/wallets/default/roninWallet/roninWallet.ts +25 -0
  121. package/src/wallets/default/safeWallet/safeWallet.svg +6 -0
  122. package/src/wallets/default/safeWallet/safeWallet.ts +18 -0
  123. package/src/wallets/default/safeheronWallet/safeheronWallet.svg +1 -0
  124. package/src/wallets/default/safeheronWallet/safeheronWallet.ts +17 -0
  125. package/src/wallets/default/safepalWallet/safepalWallet.svg +1 -0
  126. package/src/wallets/default/safepalWallet/safepalWallet.ts +24 -0
  127. package/src/wallets/default/seifWallet/seifWallet.svg +12 -0
  128. package/src/wallets/default/seifWallet/seifWallet.ts +18 -0
  129. package/src/wallets/default/solflareWallet/icon.ts +2 -0
  130. package/src/wallets/default/solflareWallet/solflareWallet.ts +23 -0
  131. package/src/wallets/default/subWallet/subWallet.svg +1 -0
  132. package/src/wallets/default/subWallet/subWallet.ts +25 -0
  133. package/src/wallets/default/tahoWallet/tahoWallet.svg +1 -0
  134. package/src/wallets/default/tahoWallet/tahoWallet.ts +19 -0
  135. package/src/wallets/default/talismanWallet/talismanWallet.svg +1 -0
  136. package/src/wallets/default/talismanWallet/talismanWallet.ts +19 -0
  137. package/src/wallets/default/tokenPocketWallet/tokenPocketWallet.svg +1 -0
  138. package/src/wallets/default/tokenPocketWallet/tokenPocketWallet.ts +26 -0
  139. package/src/wallets/default/tokenaryWallet/tokenaryWallet.svg +1 -0
  140. package/src/wallets/default/tokenaryWallet/tokenaryWallet.ts +19 -0
  141. package/src/wallets/default/trezorWallet/icon.ts +2 -0
  142. package/src/wallets/default/trezorWallet/trezorWallet.ts +19 -0
  143. package/src/wallets/default/trustWallet/trustWallet.svg +1 -0
  144. package/src/wallets/default/trustWallet/trustWallet.ts +25 -0
  145. package/src/wallets/default/uniswapWallet/uniswapWallet.svg +1 -0
  146. package/src/wallets/default/uniswapWallet/uniswapWallet.ts +17 -0
  147. package/src/wallets/default/universalProfilesWallet/icon.ts +2 -0
  148. package/src/wallets/default/universalProfilesWallet/universalProfilesWallet.svg +1353 -0
  149. package/src/wallets/default/universalProfilesWallet/universalProfilesWallet.ts +22 -0
  150. package/src/wallets/default/valoraWallet/valoraWallet.svg +1 -0
  151. package/src/wallets/default/valoraWallet/valoraWallet.ts +18 -0
  152. package/src/wallets/default/walletConnectWallet/walletConnectWallet.svg +4 -0
  153. package/src/wallets/default/walletConnectWallet/walletConnectWallet.ts +18 -0
  154. package/src/wallets/default/wigwamWallet/wigwamWallet.svg +9 -0
  155. package/src/wallets/default/wigwamWallet/wigwamWallet.ts +20 -0
  156. package/src/wallets/default/xPortalWallet/xPortalWallet.svg +6 -0
  157. package/src/wallets/default/xPortalWallet/xPortalWallet.ts +22 -0
  158. package/src/wallets/default/zealWallet/zealWallet.svg +1 -0
  159. package/src/wallets/default/zealWallet/zealWallet.ts +25 -0
  160. package/src/wallets/default/zerionWallet/zerionWallet.svg +1 -0
  161. package/src/wallets/default/zerionWallet/zerionWallet.ts +24 -0
  162. package/src/wallets/default/zilPayWallet/zilPayWallet.svg +17 -0
  163. package/src/wallets/default/zilPayWallet/zilPayWallet.ts +21 -0
  164. package/src/wallets/detector.ts +136 -0
  165. package/src/wallets/index.ts +210 -0
  166. package/src/wallets/providers/WalletConnectProvider.ts +346 -0
  167. package/src/wallets/providers/WalletConnectSolanaProvider.ts +351 -0
  168. package/src/wallets/wallet-eip6963.ts +70 -0
  169. package/src/wallets/wallet-standard.ts +77 -0
  170. package/src/wallets/wallet-walletconnect.ts +202 -0
  171. package/tsconfig.json +7 -0
@@ -0,0 +1,70 @@
1
+ import { Connector, ProviderProtocol, WalletInfo } from "../type";
2
+ import { uniqueConnectors } from "../utils/utils";
3
+
4
+ const announceEvent = "eip6963:announceProvider";
5
+ const requestEvent = "eip6963:requestProvider";
6
+ const walletType = "evm";
7
+ const timeout = 1000;
8
+
9
+ export async function eip6963Wallets(): Promise<Connector[]> {
10
+ return new Promise((resolve) => {
11
+ const evmWallets: Connector[] = [];
12
+
13
+ const timeoutId = setTimeout(() => {
14
+ window.removeEventListener(announceEvent, handleProviderAnnouncement as EventListener);
15
+
16
+ const wallets = uniqueConnectors(evmWallets);
17
+ resolve(wallets);
18
+ }, timeout);
19
+
20
+ function handleProviderAnnouncement(event: CustomEvent<{ info: WalletInfo; provider: any }>) {
21
+ try {
22
+ const { info: wallet, provider } = event.detail;
23
+
24
+ const isInfoValid =
25
+ typeof wallet?.uuid === "string" &&
26
+ typeof wallet?.name === "string" &&
27
+ typeof wallet?.icon === "string" &&
28
+ typeof wallet?.rdns === "string";
29
+
30
+ if (wallet && provider && isInfoValid && typeof provider.request === "function") {
31
+ const existingWallet = evmWallets.find((w) => w.info.uuid === wallet.uuid);
32
+ if (!existingWallet) {
33
+ evmWallets.push({
34
+ info: {
35
+ uuid: wallet.rdns || encodeURIComponent(wallet.name),
36
+ name: wallet.name,
37
+ icon: wallet.icon,
38
+ rdns: wallet.rdns,
39
+ links: {
40
+ homepage: (wallet as any)?.homepage || "",
41
+ },
42
+ },
43
+ isInstalled: true,
44
+ providers: {
45
+ [walletType]: {
46
+ provider,
47
+ protocol: ProviderProtocol.EIP6963,
48
+ },
49
+ },
50
+ });
51
+ }
52
+ }
53
+ } catch (error) {
54
+ console.warn(`${ProviderProtocol.EIP6963} detect error:`, error);
55
+ }
56
+ }
57
+
58
+ // Use type assertion to cast to EventListener since the CustomEvent is expected
59
+ window.addEventListener(announceEvent, handleProviderAnnouncement as EventListener);
60
+
61
+ try {
62
+ window.dispatchEvent(new Event(requestEvent));
63
+ } catch (error) {
64
+ console.warn(`Error ${requestEvent}:`, error);
65
+ clearTimeout(timeoutId);
66
+ window.removeEventListener(announceEvent, handleProviderAnnouncement as EventListener);
67
+ resolve(evmWallets);
68
+ }
69
+ });
70
+ }
@@ -0,0 +1,77 @@
1
+ import { uniqueConnectors } from "../utils/utils";
2
+ import { Connector, ProviderProtocol } from "../type";
3
+
4
+ const registerWalletEvent = "wallet-standard:register-wallet";
5
+ const requestRegisterWalletEvent = "wallet-standard:request-register-wallet";
6
+ const timeout = 1000;
7
+
8
+ export function walletStandardWallets() {
9
+ return new Promise((resolve) => {
10
+ const wallets: Record<string, Connector[]> = {
11
+ solana: [] as Connector[],
12
+ aptos: [] as Connector[],
13
+ sui: [] as Connector[],
14
+ };
15
+
16
+ const timeoutId = setTimeout(() => {
17
+ window.removeEventListener(registerWalletEvent, handleWalletRegistration);
18
+
19
+ const result = {
20
+ solanaWallets: uniqueConnectors(wallets.solana),
21
+ aptosWallets: uniqueConnectors(wallets.aptos),
22
+ suiWallets: uniqueConnectors(wallets.sui),
23
+ };
24
+ resolve(result);
25
+ }, timeout);
26
+
27
+ function handleWalletRegistration(wallet: any) {
28
+ try {
29
+ console.warn(registerWalletEvent, wallet.name, wallet.features, wallet);
30
+ if (!wallet || !wallet?.name || !wallet?.icon || !wallet.features) {
31
+ return;
32
+ }
33
+
34
+ for (const walletType in wallets) {
35
+ const signTransaction = wallet.features?.[`${walletType}:signTransaction`];
36
+ const signMessage = wallet.features?.[`${walletType}:signMessage`];
37
+ const isExist = wallets[walletType].find((w) => w.info.name === wallet.name);
38
+ if (signTransaction && signMessage && !isExist) {
39
+ wallets[walletType].push({
40
+ info: {
41
+ uuid: wallet.rdns || encodeURIComponent(wallet.name),
42
+ name: wallet.name,
43
+ icon: wallet.icon,
44
+ rdns: wallet.rdns,
45
+ links: {
46
+ homepage: wallet.homepage || "",
47
+ },
48
+ },
49
+ isInstalled: true,
50
+ providers: {
51
+ [walletType]: {
52
+ provider: wallet.features,
53
+ protocol: ProviderProtocol.WALLET_STANDARD,
54
+ },
55
+ },
56
+ });
57
+ }
58
+ }
59
+ } catch (error) {
60
+ console.warn(`${ProviderProtocol.WALLET_STANDARD} detect error:`, error);
61
+ }
62
+ }
63
+
64
+ window.addEventListener(registerWalletEvent, (data: any) => {
65
+ data.detail({ register: (wallet: any) => handleWalletRegistration(wallet) });
66
+ });
67
+
68
+ try {
69
+ window.dispatchEvent(new Event(requestRegisterWalletEvent));
70
+ } catch (error) {
71
+ console.warn("Error requesting wallet-standard registration:", error);
72
+ clearTimeout(timeoutId);
73
+ window.removeEventListener(registerWalletEvent, handleWalletRegistration);
74
+ resolve(wallets);
75
+ }
76
+ });
77
+ }
@@ -0,0 +1,202 @@
1
+ import { Connector, ProviderProtocol } from "../type";
2
+ import { walletConnectWallet } from "./default/walletConnectWallet/walletConnectWallet";
3
+ import { WalletConnectProvider } from "./providers/WalletConnectProvider";
4
+ import { WalletConnectSolanaProvider } from "./providers/WalletConnectSolanaProvider";
5
+
6
+ /**
7
+ * WalletConnect wallet configuration
8
+ * Can be set via setWalletConnectConfig() before calling walletConnectWallets()
9
+ */
10
+ let walletConnectConfig: {
11
+ projectId: string;
12
+ metadata: {
13
+ name: string;
14
+ description: string;
15
+ url: string;
16
+ icons: string[];
17
+ };
18
+ } | null = null;
19
+
20
+ let providerInstance: WalletConnectProvider | null = null;
21
+ let solanaProviderInstance: WalletConnectSolanaProvider | null = null;
22
+
23
+ /**
24
+ * Set WalletConnect configuration
25
+ * Must be called before using WalletConnect wallet
26
+ */
27
+ export function setWalletConnectConfig(config: {
28
+ projectId: string;
29
+ metadata: {
30
+ name: string;
31
+ description: string;
32
+ url: string;
33
+ icons: string[];
34
+ };
35
+ }): void {
36
+ walletConnectConfig = config;
37
+ }
38
+
39
+ /**
40
+ * Get WalletConnect wallet as Connector
41
+ * Returns a single WalletConnect connector that can connect to any mobile wallet
42
+ */
43
+ export async function walletConnectWallets(): Promise<Connector[]> {
44
+ const wallet = walletConnectWallet();
45
+ const connector = convertWalletToConnector(wallet);
46
+ return [connector];
47
+ }
48
+
49
+ /**
50
+ * Convert WalletConnect Wallet to Connector format
51
+ */
52
+ function convertWalletToConnector(wallet: ReturnType<typeof walletConnectWallet>): Connector {
53
+ return {
54
+ info: {
55
+ uuid: wallet.id,
56
+ name: wallet.name,
57
+ icon: wallet.icon,
58
+ iconBackground: wallet.iconBackground,
59
+ isWalletConnect: true,
60
+ links: {
61
+ homepage: "https://walletconnect.com",
62
+ qrCode: "https://walletconnect.com",
63
+ mobile: "https://walletconnect.com",
64
+ },
65
+ },
66
+ isInstalled: true, // Always available
67
+ providers: {
68
+ evm: {
69
+ provider: createWalletConnectEVMProvider(),
70
+ protocol: ProviderProtocol.WALLET_CONNECT,
71
+ },
72
+ // solana: {
73
+ // provider: createWalletConnectSolanaProvider(),
74
+ // protocol: ProviderProtocol.WALLET_CONNECT,
75
+ // },
76
+ },
77
+ };
78
+ }
79
+
80
+ /**
81
+ * Create a WalletConnect provider instance
82
+ * Provider will be initialized when connect() is called
83
+ */
84
+ function createWalletConnectEVMProvider(): any {
85
+ const getProvider = async () => {
86
+ if (!providerInstance) {
87
+ if (!walletConnectConfig) {
88
+ throw new Error("WalletConnect not configured. Please call setWalletConnectConfig() first.");
89
+ }
90
+
91
+ providerInstance = new WalletConnectProvider(walletConnectConfig);
92
+ await providerInstance.initialize();
93
+ }
94
+ return providerInstance;
95
+ };
96
+ return {
97
+ // Lazy initialization
98
+ getProvider,
99
+
100
+ // EIP-1193 compatible request method
101
+ request: async (args: { method: string; params?: any[] }) => {
102
+ const provider = await getProvider();
103
+ return provider.request(args);
104
+ },
105
+
106
+ // Connect method
107
+ connect: async (config?: { chains?: string[] }) => {
108
+ const provider = await getProvider();
109
+ return provider.connect();
110
+ },
111
+
112
+ // Disconnect method
113
+ disconnect: async () => {
114
+ if (providerInstance) {
115
+ await providerInstance.disconnect();
116
+ }
117
+ },
118
+
119
+ // getter for connectUri
120
+ get connectUri() {
121
+ return providerInstance?.uri || null;
122
+ },
123
+
124
+ // Event listeners
125
+ on: (event: string, listener: (...args: any[]) => void) => {
126
+ if (providerInstance) {
127
+ providerInstance.on(event, listener);
128
+ }
129
+ },
130
+
131
+ off: (event: string, listener: (...args: any[]) => void) => {
132
+ if (providerInstance) {
133
+ providerInstance.off(event, listener);
134
+ }
135
+ },
136
+
137
+ // Metadata
138
+ isWalletConnect: true,
139
+ };
140
+ }
141
+
142
+ /**
143
+ * Create a WalletConnect Solana provider instance
144
+ * Provider will be initialized when connect() is called
145
+ */
146
+ function createWalletConnectSolanaProvider(): any {
147
+ const getProvider = async () => {
148
+ if (!solanaProviderInstance) {
149
+ if (!walletConnectConfig) {
150
+ throw new Error("WalletConnect not configured. Please call setWalletConnectConfig() first.");
151
+ }
152
+
153
+ solanaProviderInstance = new WalletConnectSolanaProvider(walletConnectConfig);
154
+ await solanaProviderInstance.initialize();
155
+ }
156
+ return solanaProviderInstance;
157
+ };
158
+ return {
159
+ // Lazy initialization
160
+ getProvider,
161
+
162
+ // Solana WalletConnect compatible request method
163
+ request: async (args: { method: string; params?: any }) => {
164
+ const provider = await getProvider();
165
+ return provider.request(args);
166
+ },
167
+
168
+ // Connect method
169
+ connect: async () => {
170
+ const provider = await getProvider();
171
+ return provider.connect();
172
+ },
173
+
174
+ // Disconnect method
175
+ disconnect: async () => {
176
+ if (solanaProviderInstance) {
177
+ await solanaProviderInstance.disconnect();
178
+ }
179
+ },
180
+
181
+ // getter for connectUri
182
+ get connectUri() {
183
+ return solanaProviderInstance?.uri || null;
184
+ },
185
+
186
+ // Event listeners
187
+ on: (event: string, listener: (...args: any[]) => void) => {
188
+ if (solanaProviderInstance) {
189
+ solanaProviderInstance.on(event, listener);
190
+ }
191
+ },
192
+
193
+ off: (event: string, listener: (...args: any[]) => void) => {
194
+ if (solanaProviderInstance) {
195
+ solanaProviderInstance.off(event, listener);
196
+ }
197
+ },
198
+
199
+ // Metadata
200
+ isWalletConnect: true,
201
+ };
202
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,7 @@
1
+ {
2
+ "extends": "../../tsconfig.json",
3
+ "compilerOptions": {
4
+ "baseUrl": "./src"
5
+ },
6
+ "include": ["src"]
7
+ }