@deserialize/multi-vm-wallet 1.4.2 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (186) hide show
  1. package/.claude/settings.local.json +7 -1
  2. package/BUILD_OPTIMIZATION_PLAN.md +640 -0
  3. package/BUILD_RESULTS.md +282 -0
  4. package/BUN_MIGRATION.md +415 -0
  5. package/CHANGELOG_SECURITY.md +573 -0
  6. package/IMPLEMENTATION_SUMMARY.md +494 -0
  7. package/SECURITY_AUDIT.md +1124 -0
  8. package/bun.lock +553 -0
  9. package/dist/IChainWallet.js +0 -5
  10. package/dist/bip32Old.js +0 -885
  11. package/dist/bip32Small.js +0 -79
  12. package/dist/bipTest.js +0 -362
  13. package/dist/constant.js +0 -17
  14. package/dist/english.js +0 -1
  15. package/dist/evm/aa-service/index.d.ts +0 -5
  16. package/dist/evm/aa-service/index.js +0 -14
  17. package/dist/evm/aa-service/lib/account-adapter.d.ts +0 -22
  18. package/dist/evm/aa-service/lib/account-adapter.js +0 -24
  19. package/dist/evm/aa-service/lib/kernel-account.d.ts +0 -30
  20. package/dist/evm/aa-service/lib/kernel-account.js +2 -67
  21. package/dist/evm/aa-service/lib/kernel-modules.d.ts +0 -177
  22. package/dist/evm/aa-service/lib/kernel-modules.js +4 -202
  23. package/dist/evm/aa-service/lib/session-keys.d.ts +0 -118
  24. package/dist/evm/aa-service/lib/session-keys.js +7 -151
  25. package/dist/evm/aa-service/lib/type.d.ts +0 -55
  26. package/dist/evm/aa-service/lib/type.js +0 -10
  27. package/dist/evm/aa-service/services/account-abstraction.d.ts +0 -426
  28. package/dist/evm/aa-service/services/account-abstraction.js +0 -461
  29. package/dist/evm/aa-service/services/bundler.d.ts +0 -6
  30. package/dist/evm/aa-service/services/bundler.js +0 -54
  31. package/dist/evm/evm.d.ts +9 -51
  32. package/dist/evm/evm.js +338 -76
  33. package/dist/evm/index.js +0 -3
  34. package/dist/evm/script.js +3 -17
  35. package/dist/evm/smartWallet.d.ts +0 -173
  36. package/dist/evm/smartWallet.js +0 -206
  37. package/dist/evm/smartWallet.types.d.ts +0 -6
  38. package/dist/evm/smartWallet.types.js +0 -8
  39. package/dist/evm/transaction.utils.d.ts +0 -242
  40. package/dist/evm/transaction.utils.js +4 -320
  41. package/dist/evm/transactionParsing.d.ts +0 -11
  42. package/dist/evm/transactionParsing.js +28 -147
  43. package/dist/evm/utils.d.ts +0 -46
  44. package/dist/evm/utils.js +1 -57
  45. package/dist/helpers/index.d.ts +0 -4
  46. package/dist/helpers/index.js +8 -44
  47. package/dist/helpers/routeScan.js +0 -1
  48. package/dist/index.js +0 -1
  49. package/dist/old.js +0 -884
  50. package/dist/price.js +0 -1
  51. package/dist/price.types.js +0 -2
  52. package/dist/rate-limiter.d.ts +28 -0
  53. package/dist/rate-limiter.js +95 -0
  54. package/dist/retry-logic.d.ts +14 -0
  55. package/dist/retry-logic.js +120 -0
  56. package/dist/savings/index.js +0 -1
  57. package/dist/savings/saving-manager.d.ts +10 -11
  58. package/dist/savings/saving-manager.js +79 -22
  59. package/dist/savings/savings-operations.d.ts +39 -0
  60. package/dist/savings/savings-operations.js +141 -0
  61. package/dist/savings/smart-savings.d.ts +0 -63
  62. package/dist/savings/smart-savings.js +0 -78
  63. package/dist/savings/types.d.ts +0 -69
  64. package/dist/savings/types.js +0 -7
  65. package/dist/savings/validation.d.ts +9 -0
  66. package/dist/savings/validation.js +85 -0
  67. package/dist/svm/constant.js +0 -1
  68. package/dist/svm/index.js +0 -1
  69. package/dist/svm/svm.d.ts +11 -1
  70. package/dist/svm/svm.js +267 -27
  71. package/dist/svm/transactionParsing.d.ts +0 -7
  72. package/dist/svm/transactionParsing.js +3 -41
  73. package/dist/svm/transactionSender.js +0 -9
  74. package/dist/svm/utils.d.ts +0 -12
  75. package/dist/svm/utils.js +9 -60
  76. package/dist/test.d.ts +0 -4
  77. package/dist/test.js +6 -98
  78. package/dist/transaction-utils.d.ts +38 -0
  79. package/dist/transaction-utils.js +168 -0
  80. package/dist/types.d.ts +36 -0
  81. package/dist/types.js +0 -1
  82. package/dist/utils.js +0 -1
  83. package/dist/vm-validation.d.ts +11 -0
  84. package/dist/vm-validation.js +151 -0
  85. package/dist/vm.d.ts +12 -2
  86. package/dist/vm.js +61 -16
  87. package/dist/walletBip32.js +15 -70
  88. package/package.json +9 -4
  89. package/test-discovery.ts +235 -0
  90. package/test-pocket-discovery.ts +84 -0
  91. package/tsconfig.json +18 -11
  92. package/tsconfig.prod.json +10 -0
  93. package/utils/evm/evm.ts +554 -8
  94. package/utils/rate-limiter.ts +179 -0
  95. package/utils/retry-logic.ts +271 -0
  96. package/utils/savings/EXAMPLES.md +883 -0
  97. package/utils/savings/SECURITY.md +731 -0
  98. package/utils/savings/saving-manager.ts +526 -16
  99. package/utils/savings/savings-operations.ts +509 -0
  100. package/utils/savings/validation.ts +187 -0
  101. package/utils/svm/svm.ts +476 -5
  102. package/utils/test.ts +2 -2
  103. package/utils/transaction-utils.ts +394 -0
  104. package/utils/types.ts +100 -0
  105. package/utils/vm-validation.ts +280 -0
  106. package/utils/vm.ts +197 -10
  107. package/utils/walletBip32.ts +39 -3
  108. package/dist/IChainWallet.js.map +0 -1
  109. package/dist/bip32.d.ts +0 -9
  110. package/dist/bip32.js +0 -172
  111. package/dist/bip32.js.map +0 -1
  112. package/dist/bip32Old.js.map +0 -1
  113. package/dist/bip32Small.js.map +0 -1
  114. package/dist/bipTest.js.map +0 -1
  115. package/dist/constant.js.map +0 -1
  116. package/dist/english.js.map +0 -1
  117. package/dist/evm/SMART_WALLET_EXAMPLES.d.ts +0 -20
  118. package/dist/evm/SMART_WALLET_EXAMPLES.js +0 -451
  119. package/dist/evm/SMART_WALLET_EXAMPLES.js.map +0 -1
  120. package/dist/evm/aa-service/index.js.map +0 -1
  121. package/dist/evm/aa-service/lib/account-adapter.js.map +0 -1
  122. package/dist/evm/aa-service/lib/kernel-account.js.map +0 -1
  123. package/dist/evm/aa-service/lib/kernel-modules.js.map +0 -1
  124. package/dist/evm/aa-service/lib/session-keys.js.map +0 -1
  125. package/dist/evm/aa-service/lib/type.js.map +0 -1
  126. package/dist/evm/aa-service/services/account-abstraction.js.map +0 -1
  127. package/dist/evm/aa-service/services/bundler.js.map +0 -1
  128. package/dist/evm/evm.js.map +0 -1
  129. package/dist/evm/index.js.map +0 -1
  130. package/dist/evm/script.js.map +0 -1
  131. package/dist/evm/smartWallet.js.map +0 -1
  132. package/dist/evm/smartWallet.types.js.map +0 -1
  133. package/dist/evm/transaction.utils.js.map +0 -1
  134. package/dist/evm/transactionParsing.js.map +0 -1
  135. package/dist/evm/utils.js.map +0 -1
  136. package/dist/helpers/index.js.map +0 -1
  137. package/dist/helpers/routeScan.js.map +0 -1
  138. package/dist/index.js.map +0 -1
  139. package/dist/old.js.map +0 -1
  140. package/dist/price.js.map +0 -1
  141. package/dist/price.types.js.map +0 -1
  142. package/dist/privacy/artifact-manager.d.ts +0 -117
  143. package/dist/privacy/artifact-manager.js +0 -251
  144. package/dist/privacy/artifact-manager.js.map +0 -1
  145. package/dist/privacy/broadcaster-client.d.ts +0 -166
  146. package/dist/privacy/broadcaster-client.js +0 -261
  147. package/dist/privacy/broadcaster-client.js.map +0 -1
  148. package/dist/privacy/index.d.ts +0 -34
  149. package/dist/privacy/index.js +0 -56
  150. package/dist/privacy/index.js.map +0 -1
  151. package/dist/privacy/network-config.d.ts +0 -57
  152. package/dist/privacy/network-config.js +0 -118
  153. package/dist/privacy/network-config.js.map +0 -1
  154. package/dist/privacy/poi-helper.d.ts +0 -161
  155. package/dist/privacy/poi-helper.js +0 -249
  156. package/dist/privacy/poi-helper.js.map +0 -1
  157. package/dist/privacy/railgun-engine.d.ts +0 -135
  158. package/dist/privacy/railgun-engine.js +0 -205
  159. package/dist/privacy/railgun-engine.js.map +0 -1
  160. package/dist/privacy/railgun-privacy-wallet.d.ts +0 -288
  161. package/dist/privacy/railgun-privacy-wallet.js +0 -539
  162. package/dist/privacy/railgun-privacy-wallet.js.map +0 -1
  163. package/dist/privacy/types.d.ts +0 -229
  164. package/dist/privacy/types.js +0 -26
  165. package/dist/privacy/types.js.map +0 -1
  166. package/dist/savings/index.js.map +0 -1
  167. package/dist/savings/saving-actions.d.ts +0 -0
  168. package/dist/savings/saving-actions.js +0 -78
  169. package/dist/savings/saving-actions.js.map +0 -1
  170. package/dist/savings/saving-manager.js.map +0 -1
  171. package/dist/savings/savings-manager.d.ts +0 -126
  172. package/dist/savings/savings-manager.js +0 -234
  173. package/dist/savings/savings-manager.js.map +0 -1
  174. package/dist/savings/smart-savings.js.map +0 -1
  175. package/dist/savings/types.js.map +0 -1
  176. package/dist/svm/constant.js.map +0 -1
  177. package/dist/svm/index.js.map +0 -1
  178. package/dist/svm/svm.js.map +0 -1
  179. package/dist/svm/transactionParsing.js.map +0 -1
  180. package/dist/svm/transactionSender.js.map +0 -1
  181. package/dist/svm/utils.js.map +0 -1
  182. package/dist/test.js.map +0 -1
  183. package/dist/types.js.map +0 -1
  184. package/dist/utils.js.map +0 -1
  185. package/dist/vm.js.map +0 -1
  186. package/dist/walletBip32.js.map +0 -1
@@ -0,0 +1,235 @@
1
+ /**
2
+ * Test script for wallet discovery functionality
3
+ *
4
+ * Usage: npx ts-node test-discovery.ts
5
+ */
6
+
7
+ import { EVMVM } from './utils/evm/evm';
8
+ import { SVMVM } from './utils/svm/svm';
9
+ import { JsonRpcProvider } from 'ethers';
10
+ import { Connection } from '@solana/web3.js';
11
+ import { DiscoveredWallet } from './utils/types';
12
+
13
+ const MNEMONIC = 'olive gasp beach rug swift voice during during differ reject reunion rib';
14
+
15
+ async function testEVMDiscovery() {
16
+ console.log('\n=== EVM Wallet Discovery Test ===\n');
17
+
18
+ try {
19
+ // Create EVM VM instance
20
+ const evmVM = EVMVM.fromMnemonic(MNEMONIC) as EVMVM;
21
+
22
+ // Use Ethereum mainnet RPC
23
+ const provider = new JsonRpcProvider('https://eth.llamarpc.com');
24
+
25
+ console.log('Starting EVM wallet discovery...');
26
+ console.log('Network: Ethereum Mainnet');
27
+ console.log('Gap Limit: 20');
28
+ console.log('Max Index: 50\n');
29
+
30
+ const result = await evmVM.discoverWallets(provider, {
31
+ startIndex: 0,
32
+ maxIndex: 50,
33
+ gapLimit: 20,
34
+ onProgress: (current: number, total: number, found: number) => {
35
+ process.stdout.write(`\rProgress: ${current}/${total} scanned, ${found} found`);
36
+ },
37
+ onDiscovered: (wallet: DiscoveredWallet) => {
38
+ console.log(`\n✓ Found wallet at index ${wallet.index}:`);
39
+ console.log(` Address: ${wallet.address}`);
40
+ console.log(` Balance: ${wallet.nativeBalance.formatted} ${wallet.nativeBalance.symbol}`);
41
+ console.log(` Derivation Path: ${wallet.derivationPath}`);
42
+ }
43
+ });
44
+
45
+ console.log('\n\n--- EVM Discovery Results ---');
46
+ console.log(`Total wallets found: ${result.discovered.length}`);
47
+ console.log(`Scanned indices: ${result.scannedIndices}`);
48
+ console.log(`Highest index checked: ${result.highestIndex}`);
49
+ console.log(`Total balance: ${Number(result.totalBalance) / 1e18} ETH`);
50
+ console.log(`Stopped by gap limit: ${result.stoppedByGapLimit}`);
51
+ console.log(`Duration: ${result.duration}ms`);
52
+
53
+ if (result.discovered.length > 0) {
54
+ console.log('\nDiscovered wallets:');
55
+ result.discovered.forEach((wallet: DiscoveredWallet) => {
56
+ console.log(` [${wallet.index}] ${wallet.address} - ${wallet.nativeBalance.formatted} ETH`);
57
+ });
58
+ }
59
+
60
+ } catch (error) {
61
+ console.error('EVM Discovery Error:', error);
62
+ }
63
+ }
64
+
65
+ async function testSVMDiscovery() {
66
+ console.log('\n\n=== SVM Wallet Discovery Test ===\n');
67
+
68
+ try {
69
+ // Create SVM VM instance
70
+ const svmVM = SVMVM.fromMnemonic(MNEMONIC) as SVMVM;
71
+
72
+ // Use Solana mainnet RPC
73
+ const connection = new Connection('https://api.mainnet-beta.solana.com');
74
+
75
+ console.log('Starting SVM wallet discovery...');
76
+ console.log('Network: Solana Mainnet');
77
+ console.log('Gap Limit: 20');
78
+ console.log('Max Index: 50\n');
79
+
80
+ const result = await svmVM.discoverWallets(connection, {
81
+ startIndex: 0,
82
+ maxIndex: 50,
83
+ gapLimit: 20,
84
+ onProgress: (current: number, total: number, found: number) => {
85
+ process.stdout.write(`\rProgress: ${current}/${total} scanned, ${found} found`);
86
+ },
87
+ onDiscovered: (wallet: DiscoveredWallet) => {
88
+ console.log(`\n✓ Found wallet at index ${wallet.index}:`);
89
+ console.log(` Address: ${wallet.address}`);
90
+ console.log(` Balance: ${wallet.nativeBalance.formatted} ${wallet.nativeBalance.symbol}`);
91
+ console.log(` Derivation Path: ${wallet.derivationPath}`);
92
+ }
93
+ });
94
+
95
+ console.log('\n\n--- SVM Discovery Results ---');
96
+ console.log(`Total wallets found: ${result.discovered.length}`);
97
+ console.log(`Scanned indices: ${result.scannedIndices}`);
98
+ console.log(`Highest index checked: ${result.highestIndex}`);
99
+ console.log(`Total balance: ${Number(result.totalBalance) / 1e9} SOL`);
100
+ console.log(`Stopped by gap limit: ${result.stoppedByGapLimit}`);
101
+ console.log(`Duration: ${result.duration}ms`);
102
+
103
+ if (result.discovered.length > 0) {
104
+ console.log('\nDiscovered wallets:');
105
+ result.discovered.forEach((wallet: DiscoveredWallet) => {
106
+ console.log(` [${wallet.index}] ${wallet.address} - ${wallet.nativeBalance.formatted} SOL`);
107
+ });
108
+ }
109
+
110
+ } catch (error) {
111
+ console.error('SVM Discovery Error:', error);
112
+ }
113
+ }
114
+
115
+ async function testEVMPocketDiscovery() {
116
+ console.log('\n\n=== EVM Pocket Discovery Test ===\n');
117
+
118
+ try {
119
+ // Create EVM VM instance
120
+ const evmVM = EVMVM.fromMnemonic(MNEMONIC) as EVMVM;
121
+
122
+ // Use Ethereum mainnet RPC
123
+ const provider = new JsonRpcProvider('https://eth.llamarpc.com');
124
+
125
+ console.log('Starting EVM pocket discovery...');
126
+ console.log('Network: Ethereum Mainnet');
127
+ console.log('Wallet Index: 0');
128
+ console.log('Gap Limit: 20');
129
+ console.log('Max Index: 30\n');
130
+
131
+ const result = await evmVM.discoverPockets(provider, {
132
+ walletIndex: 0,
133
+ startIndex: 0,
134
+ maxIndex: 30,
135
+ gapLimit: 20,
136
+ onProgress: (current: number, total: number, found: number) => {
137
+ process.stdout.write(`\rProgress: ${current}/${total} scanned, ${found} found`);
138
+ },
139
+ onDiscovered: (pocket: DiscoveredWallet) => {
140
+ console.log(`\n✓ Found pocket at account ${pocket.index}:`);
141
+ console.log(` Address: ${pocket.address}`);
142
+ console.log(` Balance: ${pocket.nativeBalance.formatted} ${pocket.nativeBalance.symbol}`);
143
+ console.log(` Derivation Path: ${pocket.derivationPath}`);
144
+ }
145
+ });
146
+
147
+ console.log('\n\n--- EVM Pocket Discovery Results ---');
148
+ console.log(`Total pockets found: ${result.discovered.length}`);
149
+ console.log(`Scanned indices: ${result.scannedIndices}`);
150
+ console.log(`Highest index checked: ${result.highestIndex}`);
151
+ console.log(`Total balance: ${Number(result.totalBalance) / 1e18} ETH`);
152
+ console.log(`Stopped by gap limit: ${result.stoppedByGapLimit}`);
153
+ console.log(`Duration: ${result.duration}ms`);
154
+
155
+ if (result.discovered.length > 0) {
156
+ console.log('\nDiscovered pockets:');
157
+ result.discovered.forEach((pocket: DiscoveredWallet) => {
158
+ console.log(` [Pocket ${pocket.index}] ${pocket.address} - ${pocket.nativeBalance.formatted} ETH`);
159
+ });
160
+ }
161
+
162
+ } catch (error) {
163
+ console.error('EVM Pocket Discovery Error:', error);
164
+ }
165
+ }
166
+
167
+ async function testSVMPocketDiscovery() {
168
+ console.log('\n\n=== SVM Pocket Discovery Test ===\n');
169
+
170
+ try {
171
+ // Create SVM VM instance
172
+ const svmVM = SVMVM.fromMnemonic(MNEMONIC) as SVMVM;
173
+
174
+ // Use Solana mainnet RPC
175
+ const connection = new Connection('https://api.mainnet-beta.solana.com');
176
+
177
+ console.log('Starting SVM pocket discovery...');
178
+ console.log('Network: Solana Mainnet');
179
+ console.log('Wallet Index: 0');
180
+ console.log('Gap Limit: 20');
181
+ console.log('Max Index: 30\n');
182
+
183
+ const result = await svmVM.discoverPockets(connection, {
184
+ walletIndex: 0,
185
+ startIndex: 0,
186
+ maxIndex: 30,
187
+ gapLimit: 20,
188
+ onProgress: (current: number, total: number, found: number) => {
189
+ process.stdout.write(`\rProgress: ${current}/${total} scanned, ${found} found`);
190
+ },
191
+ onDiscovered: (pocket: DiscoveredWallet) => {
192
+ console.log(`\n✓ Found pocket at account ${pocket.index}:`);
193
+ console.log(` Address: ${pocket.address}`);
194
+ console.log(` Balance: ${pocket.nativeBalance.formatted} ${pocket.nativeBalance.symbol}`);
195
+ console.log(` Derivation Path: ${pocket.derivationPath}`);
196
+ }
197
+ });
198
+
199
+ console.log('\n\n--- SVM Pocket Discovery Results ---');
200
+ console.log(`Total pockets found: ${result.discovered.length}`);
201
+ console.log(`Scanned indices: ${result.scannedIndices}`);
202
+ console.log(`Highest index checked: ${result.highestIndex}`);
203
+ console.log(`Total balance: ${Number(result.totalBalance) / 1e9} SOL`);
204
+ console.log(`Stopped by gap limit: ${result.stoppedByGapLimit}`);
205
+ console.log(`Duration: ${result.duration}ms`);
206
+
207
+ if (result.discovered.length > 0) {
208
+ console.log('\nDiscovered pockets:');
209
+ result.discovered.forEach((pocket: DiscoveredWallet) => {
210
+ console.log(` [Pocket ${pocket.index}] ${pocket.address} - ${pocket.nativeBalance.formatted} SOL`);
211
+ });
212
+ }
213
+
214
+ } catch (error) {
215
+ console.error('SVM Pocket Discovery Error:', error);
216
+ }
217
+ }
218
+
219
+ async function main() {
220
+ console.log('╔════════════════════════════════════════════════╗');
221
+ console.log('║ Wallet Discovery Test Suite ║');
222
+ console.log('╚════════════════════════════════════════════════╝');
223
+
224
+ // Test standard wallet discovery
225
+ await testEVMDiscovery();
226
+ await testSVMDiscovery();
227
+
228
+ // Test pocket discovery
229
+ await testEVMPocketDiscovery();
230
+ await testSVMPocketDiscovery();
231
+
232
+ console.log('\n\n✅ Testing complete!\n');
233
+ }
234
+
235
+ main().catch(console.error);
@@ -0,0 +1,84 @@
1
+ /**
2
+ * Pocket Discovery Test
3
+ *
4
+ * Usage: npx ts-node test-pocket-discovery.ts
5
+ */
6
+
7
+ import { EVMVM } from './utils/evm/evm';
8
+ import { SVMVM } from './utils/svm/svm';
9
+ import { JsonRpcProvider } from 'ethers';
10
+ import { Connection } from '@solana/web3.js';
11
+ import { DiscoveredWallet } from './utils/types';
12
+
13
+ const MNEMONIC = 'olive gasp beach rug swift voice during during differ reject reunion rib';
14
+
15
+ async function testEVMPocketDiscovery() {
16
+ console.log('╔════════════════════════════════════════════════╗');
17
+ console.log('║ EVM Pocket Discovery Test ║');
18
+ console.log('╚════════════════════════════════════════════════╝\n');
19
+
20
+ const evmVM = EVMVM.fromMnemonic(MNEMONIC) as EVMVM;
21
+ const provider = new JsonRpcProvider('https://eth.llamarpc.com');
22
+
23
+ console.log('Network: Ethereum Mainnet');
24
+ console.log('Wallet Index: 0');
25
+ console.log('Checking pockets 0-10...\n');
26
+
27
+ const result = await evmVM.discoverPockets(provider, {
28
+ walletIndex: 0,
29
+ startIndex: 0,
30
+ maxIndex: 10,
31
+ gapLimit: 20,
32
+ onProgress: (current: number, total: number, found: number) => {
33
+ process.stdout.write(`\rProgress: ${current}/${total} pockets checked, ${found} with funds`);
34
+ },
35
+ onDiscovered: (pocket: DiscoveredWallet) => {
36
+ console.log(`\n✓ Pocket ${pocket.index}: ${pocket.address}`);
37
+ console.log(` Balance: ${pocket.nativeBalance.formatted} ETH`);
38
+ console.log(` Path: ${pocket.derivationPath}`);
39
+ }
40
+ });
41
+
42
+ console.log(`\n\n✅ EVM Complete: ${result.discovered.length} pockets found in ${result.duration}ms\n`);
43
+ }
44
+
45
+ async function testSVMPocketDiscovery() {
46
+ console.log('╔════════════════════════════════════════════════╗');
47
+ console.log('║ SVM Pocket Discovery Test ║');
48
+ console.log('╚════════════════════════════════════════════════╝\n');
49
+
50
+ const svmVM = SVMVM.fromMnemonic(MNEMONIC) as SVMVM;
51
+ const connection = new Connection('https://api.mainnet-beta.solana.com');
52
+
53
+ console.log('Network: Solana Mainnet');
54
+ console.log('Wallet Index: 0');
55
+ console.log('Checking pockets 0-10...\n');
56
+
57
+ const result = await svmVM.discoverPockets(connection, {
58
+ walletIndex: 0,
59
+ startIndex: 0,
60
+ maxIndex: 10,
61
+ gapLimit: 20,
62
+ onProgress: (current: number, total: number, found: number) => {
63
+ process.stdout.write(`\rProgress: ${current}/${total} pockets checked, ${found} with funds`);
64
+ },
65
+ onDiscovered: (pocket: DiscoveredWallet) => {
66
+ console.log(`\n✓ Pocket ${pocket.index}: ${pocket.address}`);
67
+ console.log(` Balance: ${pocket.nativeBalance.formatted} SOL`);
68
+ console.log(` Path: ${pocket.derivationPath}`);
69
+ }
70
+ });
71
+
72
+ console.log(`\n\n✅ SVM Complete: ${result.discovered.length} pockets found in ${result.duration}ms\n`);
73
+ }
74
+
75
+ async function main() {
76
+ console.log('\n🔍 Testing Savings Pocket Discovery\n');
77
+
78
+ await testEVMPocketDiscovery();
79
+ await testSVMPocketDiscovery();
80
+
81
+ console.log('✨ All pocket discovery tests complete!\n');
82
+ }
83
+
84
+ main().catch(console.error);
package/tsconfig.json CHANGED
@@ -1,16 +1,23 @@
1
1
  {
2
2
  "compilerOptions": {
3
- "target": "ES2022", // Changed from ES2021 to ES2022
4
- "module": "commonjs", // or "ESNext" if you prefer
5
- "declaration": true, // generate .d.ts files
6
- "outDir": "./dist", // output directory for compiled files
7
- "strict": true, // enable all strict type-checking options
8
- "esModuleInterop": true, // for compatibility with commonJS modules
9
- "skipLibCheck": true, // skip type checking of declaration files
3
+ "target": "ES2022",
4
+ "module": "commonjs",
5
+ "declaration": true,
6
+ "outDir": "./dist",
7
+ "strict": true,
8
+ "esModuleInterop": true,
9
+ "skipLibCheck": true,
10
+ "skipDefaultLibCheck": true,
10
11
  "forceConsistentCasingInFileNames": true,
11
- "sourceMap": true, // generate source maps (optional)
12
- "lib": ["ES2022", "DOM"] // Changed from ES2021 to ES2022
12
+ "sourceMap": true,
13
+ "lib": ["ES2022", "DOM"],
14
+
15
+ // Performance optimizations
16
+ "incremental": true,
17
+ "tsBuildInfoFile": "./dist/.tsbuildinfo",
18
+ "moduleResolution": "node",
19
+ "resolveJsonModule": true
13
20
  },
14
- "include": ["utils/**/*"], // adjust if your source files are in a different folder
15
- "exclude": ["node_modules", "**/*.spec.ts", "**/*.bak"] // exclude tests, node_modules, and .bak files
21
+ "include": ["utils/**/*"],
22
+ "exclude": ["node_modules", "**/*.spec.ts", "**/*.bak", "**/*.test.ts"]
16
23
  }
@@ -0,0 +1,10 @@
1
+ {
2
+ "extends": "./tsconfig.json",
3
+ "compilerOptions": {
4
+ // Production optimizations - faster builds
5
+ "sourceMap": false,
6
+ "removeComments": true,
7
+ "declaration": true,
8
+ "declarationMap": false
9
+ }
10
+ }