@aibtc/mcp-server 1.0.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 (178) hide show
  1. package/README.md +340 -0
  2. package/dist/api.d.ts +9 -0
  3. package/dist/api.d.ts.map +1 -0
  4. package/dist/api.js +79 -0
  5. package/dist/api.js.map +1 -0
  6. package/dist/config/contracts.d.ts +169 -0
  7. package/dist/config/contracts.d.ts.map +1 -0
  8. package/dist/config/contracts.js +250 -0
  9. package/dist/config/contracts.js.map +1 -0
  10. package/dist/config/index.d.ts +3 -0
  11. package/dist/config/index.d.ts.map +1 -0
  12. package/dist/config/index.js +3 -0
  13. package/dist/config/index.js.map +1 -0
  14. package/dist/config/networks.d.ts +11 -0
  15. package/dist/config/networks.d.ts.map +1 -0
  16. package/dist/config/networks.js +21 -0
  17. package/dist/config/networks.js.map +1 -0
  18. package/dist/endpoints/index.d.ts +2 -0
  19. package/dist/endpoints/index.d.ts.map +1 -0
  20. package/dist/endpoints/index.js +2 -0
  21. package/dist/endpoints/index.js.map +1 -0
  22. package/dist/endpoints/registry.d.ts +38 -0
  23. package/dist/endpoints/registry.d.ts.map +1 -0
  24. package/dist/endpoints/registry.js +935 -0
  25. package/dist/endpoints/registry.js.map +1 -0
  26. package/dist/index.d.ts +3 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +79 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/services/bitflow.service.d.ts +159 -0
  31. package/dist/services/bitflow.service.d.ts.map +1 -0
  32. package/dist/services/bitflow.service.js +325 -0
  33. package/dist/services/bitflow.service.js.map +1 -0
  34. package/dist/services/bns.service.d.ts +87 -0
  35. package/dist/services/bns.service.d.ts.map +1 -0
  36. package/dist/services/bns.service.js +312 -0
  37. package/dist/services/bns.service.js.map +1 -0
  38. package/dist/services/defi.service.d.ts +146 -0
  39. package/dist/services/defi.service.d.ts.map +1 -0
  40. package/dist/services/defi.service.js +461 -0
  41. package/dist/services/defi.service.js.map +1 -0
  42. package/dist/services/hiro-api.d.ts +438 -0
  43. package/dist/services/hiro-api.d.ts.map +1 -0
  44. package/dist/services/hiro-api.js +376 -0
  45. package/dist/services/hiro-api.js.map +1 -0
  46. package/dist/services/nft.service.d.ts +70 -0
  47. package/dist/services/nft.service.d.ts.map +1 -0
  48. package/dist/services/nft.service.js +148 -0
  49. package/dist/services/nft.service.js.map +1 -0
  50. package/dist/services/sbtc.service.d.ts +44 -0
  51. package/dist/services/sbtc.service.d.ts.map +1 -0
  52. package/dist/services/sbtc.service.js +100 -0
  53. package/dist/services/sbtc.service.js.map +1 -0
  54. package/dist/services/scaffold.service.d.ts +41 -0
  55. package/dist/services/scaffold.service.d.ts.map +1 -0
  56. package/dist/services/scaffold.service.js +1055 -0
  57. package/dist/services/scaffold.service.js.map +1 -0
  58. package/dist/services/stacking.service.d.ts +58 -0
  59. package/dist/services/stacking.service.d.ts.map +1 -0
  60. package/dist/services/stacking.service.js +153 -0
  61. package/dist/services/stacking.service.js.map +1 -0
  62. package/dist/services/tokens.service.d.ts +62 -0
  63. package/dist/services/tokens.service.d.ts.map +1 -0
  64. package/dist/services/tokens.service.js +119 -0
  65. package/dist/services/tokens.service.js.map +1 -0
  66. package/dist/services/wallet-manager.d.ts +107 -0
  67. package/dist/services/wallet-manager.d.ts.map +1 -0
  68. package/dist/services/wallet-manager.js +389 -0
  69. package/dist/services/wallet-manager.js.map +1 -0
  70. package/dist/services/x402.service.d.ts +26 -0
  71. package/dist/services/x402.service.d.ts.map +1 -0
  72. package/dist/services/x402.service.js +125 -0
  73. package/dist/services/x402.service.js.map +1 -0
  74. package/dist/tools/bitflow.tools.d.ts +3 -0
  75. package/dist/tools/bitflow.tools.d.ts.map +1 -0
  76. package/dist/tools/bitflow.tools.js +501 -0
  77. package/dist/tools/bitflow.tools.js.map +1 -0
  78. package/dist/tools/bns.tools.d.ts +3 -0
  79. package/dist/tools/bns.tools.d.ts.map +1 -0
  80. package/dist/tools/bns.tools.js +164 -0
  81. package/dist/tools/bns.tools.js.map +1 -0
  82. package/dist/tools/contract.tools.d.ts +3 -0
  83. package/dist/tools/contract.tools.d.ts.map +1 -0
  84. package/dist/tools/contract.tools.js +126 -0
  85. package/dist/tools/contract.tools.js.map +1 -0
  86. package/dist/tools/defi.tools.d.ts +3 -0
  87. package/dist/tools/defi.tools.d.ts.map +1 -0
  88. package/dist/tools/defi.tools.js +425 -0
  89. package/dist/tools/defi.tools.js.map +1 -0
  90. package/dist/tools/endpoint.tools.d.ts +3 -0
  91. package/dist/tools/endpoint.tools.d.ts.map +1 -0
  92. package/dist/tools/endpoint.tools.js +157 -0
  93. package/dist/tools/endpoint.tools.js.map +1 -0
  94. package/dist/tools/index.d.ts +6 -0
  95. package/dist/tools/index.d.ts.map +1 -0
  96. package/dist/tools/index.js +52 -0
  97. package/dist/tools/index.js.map +1 -0
  98. package/dist/tools/nft.tools.d.ts +3 -0
  99. package/dist/tools/nft.tools.d.ts.map +1 -0
  100. package/dist/tools/nft.tools.js +154 -0
  101. package/dist/tools/nft.tools.js.map +1 -0
  102. package/dist/tools/openrouter.tools.d.ts +3 -0
  103. package/dist/tools/openrouter.tools.d.ts.map +1 -0
  104. package/dist/tools/openrouter.tools.js +664 -0
  105. package/dist/tools/openrouter.tools.js.map +1 -0
  106. package/dist/tools/query.tools.d.ts +3 -0
  107. package/dist/tools/query.tools.d.ts.map +1 -0
  108. package/dist/tools/query.tools.js +209 -0
  109. package/dist/tools/query.tools.js.map +1 -0
  110. package/dist/tools/sbtc.tools.d.ts +3 -0
  111. package/dist/tools/sbtc.tools.d.ts.map +1 -0
  112. package/dist/tools/sbtc.tools.js +103 -0
  113. package/dist/tools/sbtc.tools.js.map +1 -0
  114. package/dist/tools/scaffold.tools.d.ts +3 -0
  115. package/dist/tools/scaffold.tools.d.ts.map +1 -0
  116. package/dist/tools/scaffold.tools.js +216 -0
  117. package/dist/tools/scaffold.tools.js.map +1 -0
  118. package/dist/tools/stacking.tools.d.ts +3 -0
  119. package/dist/tools/stacking.tools.d.ts.map +1 -0
  120. package/dist/tools/stacking.tools.js +112 -0
  121. package/dist/tools/stacking.tools.js.map +1 -0
  122. package/dist/tools/tokens.tools.d.ts +3 -0
  123. package/dist/tools/tokens.tools.d.ts.map +1 -0
  124. package/dist/tools/tokens.tools.js +154 -0
  125. package/dist/tools/tokens.tools.js.map +1 -0
  126. package/dist/tools/transfer.tools.d.ts +3 -0
  127. package/dist/tools/transfer.tools.d.ts.map +1 -0
  128. package/dist/tools/transfer.tools.js +62 -0
  129. package/dist/tools/transfer.tools.js.map +1 -0
  130. package/dist/tools/wallet-management.tools.d.ts +6 -0
  131. package/dist/tools/wallet-management.tools.d.ts.map +1 -0
  132. package/dist/tools/wallet-management.tools.js +390 -0
  133. package/dist/tools/wallet-management.tools.js.map +1 -0
  134. package/dist/tools/wallet.tools.d.ts +3 -0
  135. package/dist/tools/wallet.tools.d.ts.map +1 -0
  136. package/dist/tools/wallet.tools.js +105 -0
  137. package/dist/tools/wallet.tools.js.map +1 -0
  138. package/dist/transactions/builder.d.ts +56 -0
  139. package/dist/transactions/builder.d.ts.map +1 -0
  140. package/dist/transactions/builder.js +134 -0
  141. package/dist/transactions/builder.js.map +1 -0
  142. package/dist/transactions/clarity-values.d.ts +67 -0
  143. package/dist/transactions/clarity-values.d.ts.map +1 -0
  144. package/dist/transactions/clarity-values.js +169 -0
  145. package/dist/transactions/clarity-values.js.map +1 -0
  146. package/dist/transactions/post-conditions.d.ts +27 -0
  147. package/dist/transactions/post-conditions.d.ts.map +1 -0
  148. package/dist/transactions/post-conditions.js +101 -0
  149. package/dist/transactions/post-conditions.js.map +1 -0
  150. package/dist/utils/encryption.d.ts +33 -0
  151. package/dist/utils/encryption.d.ts.map +1 -0
  152. package/dist/utils/encryption.js +110 -0
  153. package/dist/utils/encryption.js.map +1 -0
  154. package/dist/utils/errors.d.ts +84 -0
  155. package/dist/utils/errors.d.ts.map +1 -0
  156. package/dist/utils/errors.js +132 -0
  157. package/dist/utils/errors.js.map +1 -0
  158. package/dist/utils/formatting.d.ts +51 -0
  159. package/dist/utils/formatting.d.ts.map +1 -0
  160. package/dist/utils/formatting.js +114 -0
  161. package/dist/utils/formatting.js.map +1 -0
  162. package/dist/utils/index.d.ts +6 -0
  163. package/dist/utils/index.d.ts.map +1 -0
  164. package/dist/utils/index.js +6 -0
  165. package/dist/utils/index.js.map +1 -0
  166. package/dist/utils/storage.d.ts +90 -0
  167. package/dist/utils/storage.d.ts.map +1 -0
  168. package/dist/utils/storage.js +196 -0
  169. package/dist/utils/storage.js.map +1 -0
  170. package/dist/utils/validation.d.ts +67 -0
  171. package/dist/utils/validation.d.ts.map +1 -0
  172. package/dist/utils/validation.js +74 -0
  173. package/dist/utils/validation.js.map +1 -0
  174. package/dist/wallet.d.ts +86 -0
  175. package/dist/wallet.d.ts.map +1 -0
  176. package/dist/wallet.js +279 -0
  177. package/dist/wallet.js.map +1 -0
  178. package/package.json +58 -0
@@ -0,0 +1,389 @@
1
+ import { generateWallet, getStxAddress } from "@stacks/wallet-sdk";
2
+ import { validateMnemonic, generateMnemonic } from "@scure/bip39";
3
+ import { wordlist } from "@scure/bip39/wordlists/english.js";
4
+ import { encrypt, decrypt, generateWalletId, initializeStorage, readWalletIndex, readKeystore, writeKeystore, readAppConfig, writeAppConfig, addWalletToIndex, removeWalletFromIndex, deleteWalletStorage, updateWalletMetadata, } from "../utils/index.js";
5
+ import { WalletNotFoundError, InvalidPasswordError, InvalidMnemonicError, } from "../utils/errors.js";
6
+ import { NETWORK } from "../config/networks.js";
7
+ /**
8
+ * Wallet manager singleton - handles wallet creation, encryption, and session management
9
+ */
10
+ class WalletManager {
11
+ static instance;
12
+ session = null;
13
+ lockTimer = null;
14
+ initialized = false;
15
+ constructor() { }
16
+ /**
17
+ * Get singleton instance
18
+ */
19
+ static getInstance() {
20
+ if (!WalletManager.instance) {
21
+ WalletManager.instance = new WalletManager();
22
+ }
23
+ return WalletManager.instance;
24
+ }
25
+ /**
26
+ * Ensure storage is initialized
27
+ */
28
+ async ensureInitialized() {
29
+ if (!this.initialized) {
30
+ await initializeStorage();
31
+ this.initialized = true;
32
+ }
33
+ }
34
+ /**
35
+ * Create a new wallet with BIP39 mnemonic
36
+ */
37
+ async createWallet(name, password, network) {
38
+ await this.ensureInitialized();
39
+ const walletNetwork = network || NETWORK;
40
+ // Generate 24-word mnemonic
41
+ const mnemonic = generateMnemonic(wordlist, 256);
42
+ // Generate wallet from mnemonic
43
+ const wallet = await generateWallet({
44
+ secretKey: mnemonic,
45
+ password: "",
46
+ });
47
+ const stacksAccount = wallet.accounts[0];
48
+ const address = getStxAddress(stacksAccount, walletNetwork);
49
+ // Encrypt mnemonic
50
+ const encrypted = await encrypt(mnemonic, password);
51
+ // Generate wallet ID
52
+ const walletId = generateWalletId();
53
+ // Create keystore
54
+ const keystore = {
55
+ version: 1,
56
+ encrypted,
57
+ addressIndex: 0,
58
+ };
59
+ // Save keystore
60
+ await writeKeystore(walletId, keystore);
61
+ // Add to index
62
+ const metadata = {
63
+ id: walletId,
64
+ name,
65
+ address,
66
+ network: walletNetwork,
67
+ createdAt: new Date().toISOString(),
68
+ };
69
+ await addWalletToIndex(metadata);
70
+ // Set as active wallet
71
+ const config = await readAppConfig();
72
+ config.activeWalletId = walletId;
73
+ await writeAppConfig(config);
74
+ return {
75
+ walletId,
76
+ address,
77
+ mnemonic, // Only returned once
78
+ };
79
+ }
80
+ /**
81
+ * Import an existing wallet from mnemonic
82
+ */
83
+ async importWallet(name, mnemonic, password, network) {
84
+ await this.ensureInitialized();
85
+ // Validate mnemonic
86
+ const normalizedMnemonic = mnemonic.trim().toLowerCase();
87
+ if (!validateMnemonic(normalizedMnemonic, wordlist)) {
88
+ throw new InvalidMnemonicError();
89
+ }
90
+ const walletNetwork = network || NETWORK;
91
+ // Generate wallet from mnemonic to get address
92
+ const wallet = await generateWallet({
93
+ secretKey: normalizedMnemonic,
94
+ password: "",
95
+ });
96
+ const stacksAccount = wallet.accounts[0];
97
+ const address = getStxAddress(stacksAccount, walletNetwork);
98
+ // Encrypt mnemonic
99
+ const encrypted = await encrypt(normalizedMnemonic, password);
100
+ // Generate wallet ID
101
+ const walletId = generateWalletId();
102
+ // Create keystore
103
+ const keystore = {
104
+ version: 1,
105
+ encrypted,
106
+ addressIndex: 0,
107
+ };
108
+ // Save keystore
109
+ await writeKeystore(walletId, keystore);
110
+ // Add to index
111
+ const metadata = {
112
+ id: walletId,
113
+ name,
114
+ address,
115
+ network: walletNetwork,
116
+ createdAt: new Date().toISOString(),
117
+ };
118
+ await addWalletToIndex(metadata);
119
+ // Set as active wallet
120
+ const config = await readAppConfig();
121
+ config.activeWalletId = walletId;
122
+ await writeAppConfig(config);
123
+ return {
124
+ walletId,
125
+ address,
126
+ };
127
+ }
128
+ /**
129
+ * Unlock a wallet for use
130
+ */
131
+ async unlock(walletId, password) {
132
+ await this.ensureInitialized();
133
+ // Get wallet metadata
134
+ const index = await readWalletIndex();
135
+ const walletMeta = index.wallets.find((w) => w.id === walletId);
136
+ if (!walletMeta) {
137
+ throw new WalletNotFoundError(walletId);
138
+ }
139
+ // Read keystore
140
+ let keystore;
141
+ try {
142
+ keystore = await readKeystore(walletId);
143
+ }
144
+ catch {
145
+ throw new WalletNotFoundError(walletId);
146
+ }
147
+ // Decrypt mnemonic
148
+ let mnemonic;
149
+ try {
150
+ mnemonic = await decrypt(keystore.encrypted, password);
151
+ }
152
+ catch {
153
+ throw new InvalidPasswordError();
154
+ }
155
+ // Generate account from mnemonic
156
+ const wallet = await generateWallet({
157
+ secretKey: mnemonic,
158
+ password: "",
159
+ });
160
+ const stacksAccount = wallet.accounts[0];
161
+ const address = getStxAddress(stacksAccount, walletMeta.network);
162
+ const account = {
163
+ address,
164
+ privateKey: stacksAccount.stxPrivateKey,
165
+ network: walletMeta.network,
166
+ };
167
+ // Update last used timestamp
168
+ await updateWalletMetadata(walletId, {
169
+ lastUsed: new Date().toISOString(),
170
+ });
171
+ // Get auto-lock timeout
172
+ const config = await readAppConfig();
173
+ // Create session
174
+ const now = new Date();
175
+ this.session = {
176
+ walletId,
177
+ account,
178
+ unlockedAt: now,
179
+ expiresAt: config.autoLockTimeout > 0
180
+ ? new Date(now.getTime() + config.autoLockTimeout * 60 * 1000)
181
+ : null,
182
+ };
183
+ // Start auto-lock timer
184
+ this.startAutoLockTimer(config.autoLockTimeout);
185
+ // Update active wallet
186
+ config.activeWalletId = walletId;
187
+ await writeAppConfig(config);
188
+ return account;
189
+ }
190
+ /**
191
+ * Lock the wallet (clear session)
192
+ */
193
+ lock() {
194
+ this.clearAutoLockTimer();
195
+ this.session = null;
196
+ }
197
+ /**
198
+ * Get the active account if unlocked
199
+ */
200
+ getActiveAccount() {
201
+ if (!this.session) {
202
+ return null;
203
+ }
204
+ // Check if session expired
205
+ if (this.session.expiresAt && new Date() > this.session.expiresAt) {
206
+ this.lock();
207
+ return null;
208
+ }
209
+ return this.session.account;
210
+ }
211
+ /**
212
+ * Check if a wallet is unlocked
213
+ */
214
+ isUnlocked() {
215
+ return this.getActiveAccount() !== null;
216
+ }
217
+ /**
218
+ * Get session info (without sensitive data)
219
+ */
220
+ getSessionInfo() {
221
+ if (!this.session) {
222
+ return null;
223
+ }
224
+ // Check expiry
225
+ if (this.session.expiresAt && new Date() > this.session.expiresAt) {
226
+ this.lock();
227
+ return null;
228
+ }
229
+ return {
230
+ walletId: this.session.walletId,
231
+ address: this.session.account.address,
232
+ expiresAt: this.session.expiresAt,
233
+ };
234
+ }
235
+ /**
236
+ * List all wallets (metadata only)
237
+ */
238
+ async listWallets() {
239
+ await this.ensureInitialized();
240
+ const index = await readWalletIndex();
241
+ return index.wallets;
242
+ }
243
+ /**
244
+ * Check if any wallets exist
245
+ */
246
+ async hasWallets() {
247
+ await this.ensureInitialized();
248
+ const index = await readWalletIndex();
249
+ return index.wallets.length > 0;
250
+ }
251
+ /**
252
+ * Get active wallet ID from config
253
+ */
254
+ async getActiveWalletId() {
255
+ await this.ensureInitialized();
256
+ const config = await readAppConfig();
257
+ return config.activeWalletId;
258
+ }
259
+ /**
260
+ * Switch active wallet (note: requires unlock after switching)
261
+ */
262
+ async switchWallet(walletId) {
263
+ await this.ensureInitialized();
264
+ // Verify wallet exists
265
+ const index = await readWalletIndex();
266
+ const walletMeta = index.wallets.find((w) => w.id === walletId);
267
+ if (!walletMeta) {
268
+ throw new WalletNotFoundError(walletId);
269
+ }
270
+ // Lock current session
271
+ this.lock();
272
+ // Update active wallet
273
+ const config = await readAppConfig();
274
+ config.activeWalletId = walletId;
275
+ await writeAppConfig(config);
276
+ }
277
+ /**
278
+ * Delete a wallet (requires password confirmation)
279
+ */
280
+ async deleteWallet(walletId, password) {
281
+ await this.ensureInitialized();
282
+ // Verify wallet exists
283
+ const index = await readWalletIndex();
284
+ const walletMeta = index.wallets.find((w) => w.id === walletId);
285
+ if (!walletMeta) {
286
+ throw new WalletNotFoundError(walletId);
287
+ }
288
+ // Verify password by attempting to decrypt
289
+ let keystore;
290
+ try {
291
+ keystore = await readKeystore(walletId);
292
+ }
293
+ catch {
294
+ throw new WalletNotFoundError(walletId);
295
+ }
296
+ try {
297
+ await decrypt(keystore.encrypted, password);
298
+ }
299
+ catch {
300
+ throw new InvalidPasswordError();
301
+ }
302
+ // If this wallet is currently active, lock it
303
+ if (this.session?.walletId === walletId) {
304
+ this.lock();
305
+ }
306
+ // Delete wallet storage
307
+ await deleteWalletStorage(walletId);
308
+ // Remove from index
309
+ await removeWalletFromIndex(walletId);
310
+ // Update active wallet if needed
311
+ const config = await readAppConfig();
312
+ if (config.activeWalletId === walletId) {
313
+ const remainingWallets = (await readWalletIndex()).wallets;
314
+ config.activeWalletId =
315
+ remainingWallets.length > 0 ? remainingWallets[0].id : null;
316
+ await writeAppConfig(config);
317
+ }
318
+ }
319
+ /**
320
+ * Export mnemonic (requires password verification)
321
+ */
322
+ async exportMnemonic(walletId, password) {
323
+ await this.ensureInitialized();
324
+ // Verify wallet exists
325
+ const index = await readWalletIndex();
326
+ const walletMeta = index.wallets.find((w) => w.id === walletId);
327
+ if (!walletMeta) {
328
+ throw new WalletNotFoundError(walletId);
329
+ }
330
+ // Read keystore
331
+ let keystore;
332
+ try {
333
+ keystore = await readKeystore(walletId);
334
+ }
335
+ catch {
336
+ throw new WalletNotFoundError(walletId);
337
+ }
338
+ // Decrypt and return mnemonic
339
+ try {
340
+ return await decrypt(keystore.encrypted, password);
341
+ }
342
+ catch {
343
+ throw new InvalidPasswordError();
344
+ }
345
+ }
346
+ /**
347
+ * Set auto-lock timeout
348
+ */
349
+ async setAutoLockTimeout(minutes) {
350
+ await this.ensureInitialized();
351
+ const config = await readAppConfig();
352
+ config.autoLockTimeout = minutes;
353
+ await writeAppConfig(config);
354
+ // Update current session expiry if unlocked
355
+ if (this.session) {
356
+ this.session.expiresAt =
357
+ minutes > 0
358
+ ? new Date(Date.now() + minutes * 60 * 1000)
359
+ : null;
360
+ this.startAutoLockTimer(minutes);
361
+ }
362
+ }
363
+ /**
364
+ * Start auto-lock timer
365
+ */
366
+ startAutoLockTimer(minutes) {
367
+ this.clearAutoLockTimer();
368
+ if (minutes <= 0) {
369
+ return; // No auto-lock
370
+ }
371
+ this.lockTimer = setTimeout(() => {
372
+ this.lock();
373
+ }, minutes * 60 * 1000);
374
+ }
375
+ /**
376
+ * Clear auto-lock timer
377
+ */
378
+ clearAutoLockTimer() {
379
+ if (this.lockTimer) {
380
+ clearTimeout(this.lockTimer);
381
+ this.lockTimer = null;
382
+ }
383
+ }
384
+ }
385
+ // Export singleton getter
386
+ export function getWalletManager() {
387
+ return WalletManager.getInstance();
388
+ }
389
+ //# sourceMappingURL=wallet-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet-manager.js","sourceRoot":"","sources":["../../src/services/wallet-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import "dotenv/config";
2
+ import { type AxiosInstance } from "axios";
3
+ import { NETWORK, API_URL, type Network } from "../config/networks.js";
4
+ import type { Account } from "../transactions/builder.js";
5
+ /**
6
+ * Convert mnemonic to account
7
+ */
8
+ export declare function mnemonicToAccount(mnemonic: string, network: Network): Promise<Account>;
9
+ /**
10
+ * Create an API client with x402 payment interceptor
11
+ */
12
+ export declare function createApiClient(baseUrl?: string): Promise<AxiosInstance>;
13
+ /**
14
+ * Get wallet address - checks managed wallet first, then env mnemonic
15
+ */
16
+ export declare function getWalletAddress(): Promise<string>;
17
+ /**
18
+ * Get account - checks managed wallet first, then env mnemonic
19
+ */
20
+ export declare function getAccount(): Promise<Account>;
21
+ /**
22
+ * Clear the client cache (useful for testing)
23
+ */
24
+ export declare function clearClientCache(): void;
25
+ export { NETWORK, API_URL };
26
+ //# sourceMappingURL=x402.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"x402.service.d.ts","sourceRoot":"","sources":["../../src/services/x402.service.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AACvB,OAAc,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAGlD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAM1D;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,OAAO,CAAC,CAclB;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CA4D9E;AAED;;GAEG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,CAmBxD;AAED;;GAEG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,CAkBnD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC;AAED,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC"}
@@ -0,0 +1,125 @@
1
+ import "dotenv/config";
2
+ import axios from "axios";
3
+ import { withPaymentInterceptor } from "x402-stacks";
4
+ import { generateWallet, getStxAddress } from "@stacks/wallet-sdk";
5
+ import { NETWORK, API_URL } from "../config/networks.js";
6
+ import { getWalletManager } from "./wallet-manager.js";
7
+ // Cache clients by base URL
8
+ const clientCache = new Map();
9
+ /**
10
+ * Convert mnemonic to account
11
+ */
12
+ export async function mnemonicToAccount(mnemonic, network) {
13
+ const wallet = await generateWallet({
14
+ secretKey: mnemonic,
15
+ password: "",
16
+ });
17
+ const account = wallet.accounts[0];
18
+ const address = getStxAddress(account, network);
19
+ return {
20
+ address,
21
+ privateKey: account.stxPrivateKey,
22
+ network,
23
+ };
24
+ }
25
+ /**
26
+ * Create an API client with x402 payment interceptor
27
+ */
28
+ export async function createApiClient(baseUrl) {
29
+ const url = baseUrl || API_URL;
30
+ // Check cache
31
+ const cached = clientCache.get(url);
32
+ if (cached) {
33
+ return cached;
34
+ }
35
+ // Get account (from managed wallet or env mnemonic)
36
+ const account = await getAccount();
37
+ const axiosInstance = axios.create({
38
+ baseURL: url,
39
+ timeout: 60000,
40
+ transformResponse: [
41
+ (data) => {
42
+ if (typeof data !== "string") {
43
+ return data;
44
+ }
45
+ const trimmed = data.trim();
46
+ if (!trimmed) {
47
+ return data;
48
+ }
49
+ try {
50
+ return JSON.parse(trimmed);
51
+ }
52
+ catch {
53
+ return data;
54
+ }
55
+ },
56
+ ],
57
+ });
58
+ // Ensure 402 payloads are parsed before x402-stacks validates them
59
+ axiosInstance.interceptors.response.use((response) => response, (error) => {
60
+ const data = error?.response?.data;
61
+ if (error?.response?.status === 402) {
62
+ console.error("x402 debug 402 payload", typeof data === "string" ? data : JSON.stringify(data));
63
+ }
64
+ if (typeof data === "string") {
65
+ const trimmed = data.trim();
66
+ if (trimmed) {
67
+ try {
68
+ error.response.data = JSON.parse(trimmed);
69
+ }
70
+ catch {
71
+ // Leave as-is if it's not JSON
72
+ }
73
+ }
74
+ }
75
+ return Promise.reject(error);
76
+ });
77
+ const client = withPaymentInterceptor(axiosInstance, account);
78
+ clientCache.set(url, client);
79
+ return client;
80
+ }
81
+ /**
82
+ * Get wallet address - checks managed wallet first, then env mnemonic
83
+ */
84
+ export async function getWalletAddress() {
85
+ // Check managed wallet session first
86
+ const walletManager = getWalletManager();
87
+ const sessionAccount = walletManager.getActiveAccount();
88
+ if (sessionAccount) {
89
+ return sessionAccount.address;
90
+ }
91
+ // Fall back to environment mnemonic
92
+ const mnemonic = process.env.CLIENT_MNEMONIC || "";
93
+ if (!mnemonic) {
94
+ throw new Error("No wallet available. Either unlock a managed wallet (wallet_unlock) " +
95
+ "or set CLIENT_MNEMONIC environment variable.");
96
+ }
97
+ const account = await mnemonicToAccount(mnemonic, NETWORK);
98
+ return account.address;
99
+ }
100
+ /**
101
+ * Get account - checks managed wallet first, then env mnemonic
102
+ */
103
+ export async function getAccount() {
104
+ // Check managed wallet session first
105
+ const walletManager = getWalletManager();
106
+ const sessionAccount = walletManager.getActiveAccount();
107
+ if (sessionAccount) {
108
+ return sessionAccount;
109
+ }
110
+ // Fall back to environment mnemonic
111
+ const mnemonic = process.env.CLIENT_MNEMONIC || "";
112
+ if (!mnemonic) {
113
+ throw new Error("No wallet available. Either unlock a managed wallet (wallet_unlock) " +
114
+ "or set CLIENT_MNEMONIC environment variable.");
115
+ }
116
+ return mnemonicToAccount(mnemonic, NETWORK);
117
+ }
118
+ /**
119
+ * Clear the client cache (useful for testing)
120
+ */
121
+ export function clearClientCache() {
122
+ clientCache.clear();
123
+ }
124
+ export { NETWORK, API_URL };
125
+ //# sourceMappingURL=x402.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"x402.service.js","sourceRoot":"","sources":["../../src/services/x402.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function registerBitflowTools(server: McpServer): void;
3
+ //# sourceMappingURL=bitflow.tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bitflow.tools.d.ts","sourceRoot":"","sources":["../../src/tools/bitflow.tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOpE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA8kB5D"}