paytaca-cli 0.1.0 → 0.3.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 (70) hide show
  1. package/README.md +91 -12
  2. package/dist/commands/address.d.ts +2 -0
  3. package/dist/commands/address.d.ts.map +1 -1
  4. package/dist/commands/address.js +19 -4
  5. package/dist/commands/address.js.map +1 -1
  6. package/dist/commands/balance.d.ts +2 -0
  7. package/dist/commands/balance.d.ts.map +1 -1
  8. package/dist/commands/balance.js +58 -12
  9. package/dist/commands/balance.js.map +1 -1
  10. package/dist/commands/check.d.ts +14 -0
  11. package/dist/commands/check.d.ts.map +1 -0
  12. package/dist/commands/check.js +162 -0
  13. package/dist/commands/check.js.map +1 -0
  14. package/dist/commands/claude.d.ts +9 -0
  15. package/dist/commands/claude.d.ts.map +1 -0
  16. package/dist/commands/claude.js +20 -0
  17. package/dist/commands/claude.js.map +1 -0
  18. package/dist/commands/history.d.ts +2 -0
  19. package/dist/commands/history.d.ts.map +1 -1
  20. package/dist/commands/history.js +40 -7
  21. package/dist/commands/history.js.map +1 -1
  22. package/dist/commands/opencode.d.ts +9 -0
  23. package/dist/commands/opencode.d.ts.map +1 -0
  24. package/dist/commands/opencode.js +20 -0
  25. package/dist/commands/opencode.js.map +1 -0
  26. package/dist/commands/pay.d.ts +17 -0
  27. package/dist/commands/pay.d.ts.map +1 -0
  28. package/dist/commands/pay.js +347 -0
  29. package/dist/commands/pay.js.map +1 -0
  30. package/dist/commands/receive.d.ts +9 -1
  31. package/dist/commands/receive.d.ts.map +1 -1
  32. package/dist/commands/receive.js +117 -8
  33. package/dist/commands/receive.js.map +1 -1
  34. package/dist/commands/token.d.ts +16 -0
  35. package/dist/commands/token.d.ts.map +1 -0
  36. package/dist/commands/token.js +351 -0
  37. package/dist/commands/token.js.map +1 -0
  38. package/dist/index.d.ts +2 -2
  39. package/dist/index.js +13 -3
  40. package/dist/index.js.map +1 -1
  41. package/dist/types/x402.d.ts +72 -0
  42. package/dist/types/x402.d.ts.map +1 -0
  43. package/dist/types/x402.js +9 -0
  44. package/dist/types/x402.js.map +1 -0
  45. package/dist/utils/skill.d.ts +17 -0
  46. package/dist/utils/skill.d.ts.map +1 -0
  47. package/dist/utils/skill.js +100 -0
  48. package/dist/utils/skill.js.map +1 -0
  49. package/dist/utils/x402.d.ts +17 -0
  50. package/dist/utils/x402.d.ts.map +1 -0
  51. package/dist/utils/x402.js +119 -0
  52. package/dist/utils/x402.js.map +1 -0
  53. package/dist/utils/x402.test.d.ts +2 -0
  54. package/dist/utils/x402.test.d.ts.map +1 -0
  55. package/dist/utils/x402.test.js +216 -0
  56. package/dist/utils/x402.test.js.map +1 -0
  57. package/dist/wallet/bch.d.ts +110 -3
  58. package/dist/wallet/bch.d.ts.map +1 -1
  59. package/dist/wallet/bch.js +214 -2
  60. package/dist/wallet/bch.js.map +1 -1
  61. package/dist/wallet/keys.d.ts +8 -0
  62. package/dist/wallet/keys.d.ts.map +1 -1
  63. package/dist/wallet/keys.js +10 -0
  64. package/dist/wallet/keys.js.map +1 -1
  65. package/dist/wallet/x402.d.ts +29 -0
  66. package/dist/wallet/x402.d.ts.map +1 -0
  67. package/dist/wallet/x402.js +45 -0
  68. package/dist/wallet/x402.js.map +1 -0
  69. package/package.json +8 -2
  70. package/skills/paytaca/SKILL.md +123 -0
@@ -1,5 +1,5 @@
1
1
  /**
2
- * BCH wallet operations: balance, address derivation, sending.
2
+ * BCH wallet operations: balance, address derivation, sending, CashTokens.
3
3
  *
4
4
  * Adapted from: paytaca-app/src/wallet/bch.js (BchWallet class)
5
5
  *
@@ -12,8 +12,8 @@
12
12
  import Watchtower from 'watchtower-cash-js';
13
13
  export interface Recipient {
14
14
  address: string;
15
- amount: number;
16
- tokenAmount?: number;
15
+ amount?: number;
16
+ tokenAmount?: bigint;
17
17
  }
18
18
  export interface SendResult {
19
19
  success: boolean;
@@ -22,6 +22,42 @@ export interface SendResult {
22
22
  error?: string;
23
23
  lackingSats?: bigint;
24
24
  }
25
+ /**
26
+ * Token parameter for CashToken sends.
27
+ * Matches watchtower-cash-js Token interface.
28
+ */
29
+ export interface TokenParam {
30
+ tokenId: string;
31
+ commitment?: string;
32
+ capability?: string;
33
+ amount?: bigint;
34
+ txid?: string;
35
+ vout?: number;
36
+ }
37
+ /**
38
+ * A fungible CashToken in the wallet, as returned by the Watchtower API.
39
+ */
40
+ export interface FungibleToken {
41
+ id: string;
42
+ category: string;
43
+ name: string;
44
+ symbol: string;
45
+ decimals: number;
46
+ imageUrl: string;
47
+ balance: number;
48
+ }
49
+ /**
50
+ * An NFT CashToken UTXO in the wallet.
51
+ */
52
+ export interface NftUtxo {
53
+ txid: string;
54
+ vout: number;
55
+ category: string;
56
+ commitment: string;
57
+ capability: 'none' | 'minting' | 'mutable';
58
+ amount: number;
59
+ value: number;
60
+ }
25
61
  export declare class BchWallet {
26
62
  isChipnet: boolean;
27
63
  mnemonic: string;
@@ -40,6 +76,14 @@ export declare class BchWallet {
40
76
  receiving: string;
41
77
  change: string;
42
78
  };
79
+ /**
80
+ * Derive token-aware (z-prefix) addresses at a given index.
81
+ * Used for CashToken receives — tokens can only be sent to token-aware addresses.
82
+ */
83
+ getTokenAddressSetAt(index: number): {
84
+ receiving: string;
85
+ change: string;
86
+ };
43
87
  /**
44
88
  * Subscribe a new address set with Watchtower for monitoring.
45
89
  * Adapted from paytaca-app BchWallet.getNewAddressSet()
@@ -70,10 +114,13 @@ export declare class BchWallet {
70
114
  /**
71
115
  * Get transaction history from Watchtower.
72
116
  * Adapted from paytaca-app BchWallet.getTransactions()
117
+ *
118
+ * @param opts.tokenId - Filter by CashToken category ID (empty string for BCH-only)
73
119
  */
74
120
  getHistory(opts?: {
75
121
  page?: number;
76
122
  recordType?: string;
123
+ tokenId?: string;
77
124
  }): Promise<{
78
125
  history: {
79
126
  record_type: 'outgoing' | 'incoming';
@@ -133,5 +180,65 @@ export declare class BchWallet {
133
180
  success: boolean;
134
181
  error: string;
135
182
  }>;
183
+ /**
184
+ * List fungible CashTokens in the wallet.
185
+ *
186
+ * Calls Watchtower REST API directly (same as paytaca-app),
187
+ * because watchtower-cash-js Wallet.getTokens() is only used for SLP.
188
+ *
189
+ * Endpoint: GET /cashtokens/fungible/?wallet_hash={walletHash}&has_balance=true
190
+ */
191
+ getFungibleTokens(): Promise<FungibleToken[]>;
192
+ /**
193
+ * Get metadata for a single fungible CashToken by category ID.
194
+ *
195
+ * Endpoint: GET /cashtokens/fungible/{category}/
196
+ */
197
+ getTokenInfo(category: string): Promise<FungibleToken | null>;
198
+ /**
199
+ * Get token balance for a specific token category.
200
+ *
201
+ * Endpoint: GET /balance/wallet/{walletHash}/{tokenId}/
202
+ */
203
+ getTokenBalance(tokenId: string): Promise<{
204
+ balance: number;
205
+ spendable: number;
206
+ }>;
207
+ /**
208
+ * Get NFT UTXOs for a specific token category (or all NFTs).
209
+ *
210
+ * Uses watchtower-cash-js BCH.getCashtokensUtxos() to fetch token UTXOs,
211
+ * then filters for those that have NFT data (capability is set).
212
+ *
213
+ * Endpoint: GET /utxo/wallet/{walletHash}/?is_cashtoken=true
214
+ */
215
+ getNftUtxos(category?: string): Promise<NftUtxo[]>;
216
+ /**
217
+ * Send fungible CashTokens to a recipient.
218
+ *
219
+ * Delegates to watchtower-cash-js BCH.send() with the `token` parameter,
220
+ * identical to how paytaca-app sends CashTokens.
221
+ *
222
+ * @param category - Token category ID (64-char hex)
223
+ * @param tokenAmount - Amount in base units (before decimal scaling)
224
+ * @param address - Recipient address (should be token-aware z-prefix)
225
+ * @param changeAddress - Change address for leftover tokens + BCH
226
+ */
227
+ sendToken(category: string, tokenAmount: bigint, address: string, changeAddress?: string): Promise<SendResult>;
228
+ /**
229
+ * Send an NFT (non-fungible CashToken) to a recipient.
230
+ *
231
+ * NFTs require specifying the exact UTXO (txid + vout) to spend,
232
+ * plus the commitment and capability that identify the NFT.
233
+ *
234
+ * @param category - Token category ID (64-char hex)
235
+ * @param commitment - NFT commitment (hex string, can be empty "")
236
+ * @param capability - NFT capability: 'none', 'minting', or 'mutable'
237
+ * @param txid - UTXO txid containing the NFT
238
+ * @param vout - UTXO output index
239
+ * @param address - Recipient address
240
+ * @param changeAddress - Change address for leftover BCH
241
+ */
242
+ sendNft(category: string, commitment: string, capability: string, txid: string, vout: number, address: string, changeAddress?: string): Promise<SendResult>;
136
243
  }
137
244
  //# sourceMappingURL=bch.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bch.d.ts","sourceRoot":"","sources":["../../src/wallet/bch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bch.d.ts","sourceRoot":"","sources":["../../src/wallet/bch.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * BCH wallet operations: balance, address derivation, sending.
2
+ * BCH wallet operations: balance, address derivation, sending, CashTokens.
3
3
  *
4
4
  * Adapted from: paytaca-app/src/wallet/bch.js (BchWallet class)
5
5
  *
@@ -39,6 +39,13 @@ export class BchWallet {
39
39
  getAddressSetAt(index) {
40
40
  return this.hdWallet.getAddressSetAt(index);
41
41
  }
42
+ /**
43
+ * Derive token-aware (z-prefix) addresses at a given index.
44
+ * Used for CashToken receives — tokens can only be sent to token-aware addresses.
45
+ */
46
+ getTokenAddressSetAt(index) {
47
+ return this.hdWallet.getTokenAddressSetAt(index);
48
+ }
42
49
  /**
43
50
  * Subscribe a new address set with Watchtower for monitoring.
44
51
  * Adapted from paytaca-app BchWallet.getNewAddressSet()
@@ -86,12 +93,14 @@ export class BchWallet {
86
93
  /**
87
94
  * Get transaction history from Watchtower.
88
95
  * Adapted from paytaca-app BchWallet.getTransactions()
96
+ *
97
+ * @param opts.tokenId - Filter by CashToken category ID (empty string for BCH-only)
89
98
  */
90
99
  async getHistory(opts) {
91
100
  const walletHash = this.walletHash;
92
101
  return this.watchtower.Wallet.getHistory({
93
102
  walletHash,
94
- tokenId: '',
103
+ tokenId: opts?.tokenId ?? '',
95
104
  page: opts?.page ?? 1,
96
105
  recordType: opts?.recordType ?? 'all',
97
106
  txSearchReference: '',
@@ -193,5 +202,208 @@ export class BchWallet {
193
202
  }
194
203
  return response;
195
204
  }
205
+ // ── CashTokens ─────────────────────────────────────────────────────
206
+ /**
207
+ * List fungible CashTokens in the wallet.
208
+ *
209
+ * Calls Watchtower REST API directly (same as paytaca-app),
210
+ * because watchtower-cash-js Wallet.getTokens() is only used for SLP.
211
+ *
212
+ * Endpoint: GET /cashtokens/fungible/?wallet_hash={walletHash}&has_balance=true
213
+ */
214
+ async getFungibleTokens() {
215
+ const api = this.watchtower.BCH._api;
216
+ const allTokens = [];
217
+ let nextUrl = `cashtokens/fungible/`;
218
+ let params = {
219
+ wallet_hash: this.walletHash,
220
+ has_balance: true,
221
+ limit: 100,
222
+ };
223
+ while (nextUrl) {
224
+ const response = await api.get(nextUrl, { params });
225
+ const data = response?.data;
226
+ if (!data?.results || !Array.isArray(data.results))
227
+ break;
228
+ for (const result of data.results) {
229
+ const categoryMatch = String(result.id || '').match(/^ct\/([a-fA-F0-9]+)$/);
230
+ allTokens.push({
231
+ id: result.id || '',
232
+ category: categoryMatch ? categoryMatch[1] : result.id || '',
233
+ name: result.name || 'Unknown Token',
234
+ symbol: result.symbol || '',
235
+ decimals: result.decimals || 0,
236
+ imageUrl: result.image_url || '',
237
+ balance: result.balance !== undefined ? result.balance : 0,
238
+ });
239
+ }
240
+ if (data.next) {
241
+ // The `next` field is an absolute URL; extract relative path
242
+ const nextFullUrl = new URL(data.next);
243
+ nextUrl = nextFullUrl.pathname.replace(/^\/api\//, '') + nextFullUrl.search;
244
+ params = undefined; // params are already in the URL
245
+ }
246
+ else {
247
+ nextUrl = null;
248
+ }
249
+ }
250
+ return allTokens;
251
+ }
252
+ /**
253
+ * Get metadata for a single fungible CashToken by category ID.
254
+ *
255
+ * Endpoint: GET /cashtokens/fungible/{category}/
256
+ */
257
+ async getTokenInfo(category) {
258
+ try {
259
+ const api = this.watchtower.BCH._api;
260
+ const response = await api.get(`cashtokens/fungible/${category}/`);
261
+ const data = response?.data;
262
+ if (!data)
263
+ return null;
264
+ const categoryMatch = String(data.id || '').match(/^ct\/([a-fA-F0-9]+)$/);
265
+ return {
266
+ id: data.id || `ct/${category}`,
267
+ category: categoryMatch ? categoryMatch[1] : category,
268
+ name: data.name || 'Unknown Token',
269
+ symbol: data.symbol || '',
270
+ decimals: data.decimals || 0,
271
+ imageUrl: data.image_url || '',
272
+ balance: data.balance !== undefined ? data.balance : 0,
273
+ };
274
+ }
275
+ catch (err) {
276
+ if (err?.response?.status === 404)
277
+ return null;
278
+ throw err;
279
+ }
280
+ }
281
+ /**
282
+ * Get token balance for a specific token category.
283
+ *
284
+ * Endpoint: GET /balance/wallet/{walletHash}/{tokenId}/
285
+ */
286
+ async getTokenBalance(tokenId) {
287
+ const result = await this.watchtower.Wallet.getBalance({
288
+ walletHash: this.walletHash,
289
+ tokenId,
290
+ });
291
+ return { balance: result.balance, spendable: result.spendable };
292
+ }
293
+ /**
294
+ * Get NFT UTXOs for a specific token category (or all NFTs).
295
+ *
296
+ * Uses watchtower-cash-js BCH.getCashtokensUtxos() to fetch token UTXOs,
297
+ * then filters for those that have NFT data (capability is set).
298
+ *
299
+ * Endpoint: GET /utxo/wallet/{walletHash}/?is_cashtoken=true
300
+ */
301
+ async getNftUtxos(category) {
302
+ const api = this.watchtower.BCH._api;
303
+ const response = await api.get(`utxo/wallet/${this.walletHash}/`, {
304
+ params: { is_cashtoken: true },
305
+ });
306
+ const data = response?.data;
307
+ if (!data?.utxos || !Array.isArray(data.utxos))
308
+ return [];
309
+ const nfts = [];
310
+ for (const utxo of data.utxos) {
311
+ // NFTs have a non-null capability
312
+ if (!utxo.is_cashtoken || utxo.capability === null || utxo.capability === undefined)
313
+ continue;
314
+ if (category && utxo.tokenid !== category)
315
+ continue;
316
+ nfts.push({
317
+ txid: utxo.txid,
318
+ vout: utxo.vout,
319
+ category: utxo.tokenid,
320
+ commitment: utxo.commitment || '',
321
+ capability: utxo.capability,
322
+ amount: utxo.amount || 0,
323
+ value: utxo.value || 0,
324
+ });
325
+ }
326
+ return nfts;
327
+ }
328
+ /**
329
+ * Send fungible CashTokens to a recipient.
330
+ *
331
+ * Delegates to watchtower-cash-js BCH.send() with the `token` parameter,
332
+ * identical to how paytaca-app sends CashTokens.
333
+ *
334
+ * @param category - Token category ID (64-char hex)
335
+ * @param tokenAmount - Amount in base units (before decimal scaling)
336
+ * @param address - Recipient address (should be token-aware z-prefix)
337
+ * @param changeAddress - Change address for leftover tokens + BCH
338
+ */
339
+ async sendToken(category, tokenAmount, address, changeAddress) {
340
+ const data = {
341
+ sender: {
342
+ walletHash: this.walletHash,
343
+ mnemonic: this.mnemonic,
344
+ derivationPath: this.derivationPath,
345
+ },
346
+ recipients: [
347
+ {
348
+ address,
349
+ tokenAmount,
350
+ },
351
+ ],
352
+ token: {
353
+ tokenId: category,
354
+ },
355
+ changeAddress,
356
+ wallet: {
357
+ mnemonic: this.mnemonic,
358
+ derivationPath: this.derivationPath,
359
+ },
360
+ broadcast: true,
361
+ };
362
+ const result = await this.watchtower.BCH.send(data);
363
+ return result;
364
+ }
365
+ /**
366
+ * Send an NFT (non-fungible CashToken) to a recipient.
367
+ *
368
+ * NFTs require specifying the exact UTXO (txid + vout) to spend,
369
+ * plus the commitment and capability that identify the NFT.
370
+ *
371
+ * @param category - Token category ID (64-char hex)
372
+ * @param commitment - NFT commitment (hex string, can be empty "")
373
+ * @param capability - NFT capability: 'none', 'minting', or 'mutable'
374
+ * @param txid - UTXO txid containing the NFT
375
+ * @param vout - UTXO output index
376
+ * @param address - Recipient address
377
+ * @param changeAddress - Change address for leftover BCH
378
+ */
379
+ async sendNft(category, commitment, capability, txid, vout, address, changeAddress) {
380
+ const data = {
381
+ sender: {
382
+ walletHash: this.walletHash,
383
+ mnemonic: this.mnemonic,
384
+ derivationPath: this.derivationPath,
385
+ },
386
+ recipients: [
387
+ {
388
+ address,
389
+ },
390
+ ],
391
+ token: {
392
+ tokenId: category,
393
+ commitment,
394
+ capability,
395
+ txid,
396
+ vout,
397
+ },
398
+ changeAddress,
399
+ wallet: {
400
+ mnemonic: this.mnemonic,
401
+ derivationPath: this.derivationPath,
402
+ },
403
+ broadcast: true,
404
+ };
405
+ const result = await this.watchtower.BCH.send(data);
406
+ return result;
407
+ }
196
408
  }
197
409
  //# sourceMappingURL=bch.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bch.js","sourceRoot":"","sources":["../../src/wallet/bch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bch.js","sourceRoot":"","sources":["../../src/wallet/bch.ts"],"names":[],"mappings":"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"}
@@ -65,5 +65,13 @@ export declare class LibauthHDWallet {
65
65
  receiving: string;
66
66
  change: string;
67
67
  };
68
+ /**
69
+ * Derive token-aware (z-prefix) receiving and change addresses at a given index.
70
+ * Used for CashToken operations — tokens can only be received at token-aware addresses.
71
+ */
72
+ getTokenAddressSetAt(index: number): {
73
+ receiving: string;
74
+ change: string;
75
+ };
68
76
  }
69
77
  //# sourceMappingURL=keys.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../src/wallet/keys.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAOL,KAAK,kBAAkB,EACxB,MAAM,kBAAkB,CAAA;AAIzB,qBAAa,eAAe;IAC1B,QAAQ,EAAE,MAAM,CAAA;IAChB,cAAc,EAAE,MAAM,CAAA;IACtB,OAAO,EAAE,SAAS,GAAG,SAAS,CAAA;IAC9B,UAAU,EAAE,MAAM,CAAA;IAElB;;;;OAIG;gBAED,QAAQ,GAAE,MAAW,EACrB,cAAc,GAAE,MAA4B,EAC5C,OAAO,GAAE,SAAS,GAAG,SAAqB;IAQ5C,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,IAAI,SAAS,CAAC,KAAK,EAAE,OAAO,EAE3B;IAED;;;OAGG;IACH,aAAa,IAAI,MAAM;IASvB;;;OAGG;IACH,WAAW,IAAI,kBAAkB;IAcjC;;;OAGG;IACH,SAAS,CAAC,IAAI,GAAE,MAAW,GAAG,kBAAkB;IAYhD;;OAEG;IACH,kBAAkB,CAAC,IAAI,GAAE,MAAW,GAAG,MAAM;IAK7C;;OAEG;IACH,WAAW,CAAC,IAAI,GAAE,MAAW,GAAG,MAAM;IAMtC;;;;;OAKG;IACH,YAAY,CAAC,IAAI,GAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,MAAM;IAOnE;;;OAGG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;CAMtE"}
1
+ {"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../src/wallet/keys.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAOL,KAAK,kBAAkB,EACxB,MAAM,kBAAkB,CAAA;AAIzB,qBAAa,eAAe;IAC1B,QAAQ,EAAE,MAAM,CAAA;IAChB,cAAc,EAAE,MAAM,CAAA;IACtB,OAAO,EAAE,SAAS,GAAG,SAAS,CAAA;IAC9B,UAAU,EAAE,MAAM,CAAA;IAElB;;;;OAIG;gBAED,QAAQ,GAAE,MAAW,EACrB,cAAc,GAAE,MAA4B,EAC5C,OAAO,GAAE,SAAS,GAAG,SAAqB;IAQ5C,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,IAAI,SAAS,CAAC,KAAK,EAAE,OAAO,EAE3B;IAED;;;OAGG;IACH,aAAa,IAAI,MAAM;IASvB;;;OAGG;IACH,WAAW,IAAI,kBAAkB;IAcjC;;;OAGG;IACH,SAAS,CAAC,IAAI,GAAE,MAAW,GAAG,kBAAkB;IAYhD;;OAEG;IACH,kBAAkB,CAAC,IAAI,GAAE,MAAW,GAAG,MAAM;IAK7C;;OAEG;IACH,WAAW,CAAC,IAAI,GAAE,MAAW,GAAG,MAAM;IAMtC;;;;;OAKG;IACH,YAAY,CAAC,IAAI,GAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,MAAM;IAOnE;;;OAGG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;IAOrE;;;OAGG;IACH,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;CAM3E"}
@@ -121,5 +121,15 @@ export class LibauthHDWallet {
121
121
  change: this.getAddressAt({ path: `1/${index}` }),
122
122
  };
123
123
  }
124
+ /**
125
+ * Derive token-aware (z-prefix) receiving and change addresses at a given index.
126
+ * Used for CashToken operations — tokens can only be received at token-aware addresses.
127
+ */
128
+ getTokenAddressSetAt(index) {
129
+ return {
130
+ receiving: this.getAddressAt({ path: `0/${index}`, token: true }),
131
+ change: this.getAddressAt({ path: `1/${index}`, token: true }),
132
+ };
133
+ }
124
134
  }
125
135
  //# sourceMappingURL=keys.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"keys.js","sourceRoot":"","sources":["../../src/wallet/keys.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"keys.js","sourceRoot":"","sources":["../../src/wallet/keys.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * x402 payment handler for BCH
3
+ * Implements x402-bch v2.2 specification
4
+ * https://github.com/x402-bch/x402-bch/blob/master/specs/x402-bch-specification-v2.2.md
5
+ */
6
+ import { LibauthHDWallet } from './keys.js';
7
+ import { PaymentRequirements, PaymentPayload } from '../types/x402.js';
8
+ export interface X402Signer {
9
+ address: string;
10
+ signMessage: (message: string) => Promise<string>;
11
+ }
12
+ export interface X402PayerConfig {
13
+ hdWallet: LibauthHDWallet;
14
+ addressIndex?: number;
15
+ }
16
+ export declare class X402Payer {
17
+ private signer;
18
+ private isChipnet;
19
+ constructor(config: X402PayerConfig);
20
+ private createSigner;
21
+ getPayerAddress(): string;
22
+ createPaymentPayload(requirements: PaymentRequirements, resourceUrl: string, txid: string, vout: number | null, amount: string | null): Promise<PaymentPayload>;
23
+ makePaymentRequest(requirements: PaymentRequirements, resourceUrl: string, txid: string, vout: number | null, amount: string | null): Promise<{
24
+ paymentPayload: PaymentPayload;
25
+ paymentUrl: string;
26
+ }>;
27
+ }
28
+ export declare function createX402Payer(hdWallet: LibauthHDWallet, addressIndex?: number): X402Payer;
29
+ //# sourceMappingURL=x402.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"x402.d.ts","sourceRoot":"","sources":["../../src/wallet/x402.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAS3C,OAAO,EAEL,mBAAmB,EACnB,cAAc,EAGf,MAAM,kBAAkB,CAAA;AAEzB,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;CAClD;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,eAAe,CAAA;IACzB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,SAAS,CAAS;gBAEd,MAAM,EAAE,eAAe;IAKnC,OAAO,CAAC,YAAY;IAYpB,eAAe,IAAI,MAAM;IAInB,oBAAoB,CACxB,YAAY,EAAE,mBAAmB,EACjC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,MAAM,EAAE,MAAM,GAAG,IAAI,GACpB,OAAO,CAAC,cAAc,CAAC;IAgBpB,kBAAkB,CACtB,YAAY,EAAE,mBAAmB,EACjC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,MAAM,EAAE,MAAM,GAAG,IAAI,GACpB,OAAO,CAAC;QAAE,cAAc,EAAE,cAAc,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;CAQnE;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,eAAe,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAE3F"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * x402 payment handler for BCH
3
+ * Implements x402-bch v2.2 specification
4
+ * https://github.com/x402-bch/x402-bch/blob/master/specs/x402-bch-specification-v2.2.md
5
+ */
6
+ import { buildPaymentPayload, signAuthorization, signMessageBCH, } from '../utils/x402.js';
7
+ export class X402Payer {
8
+ signer;
9
+ isChipnet;
10
+ constructor(config) {
11
+ this.isChipnet = config.hdWallet.isChipnet;
12
+ this.signer = this.createSigner(config.hdWallet, config.addressIndex || 0);
13
+ }
14
+ createSigner(hdWallet, index) {
15
+ const addressSet = hdWallet.getAddressSetAt(index);
16
+ return {
17
+ address: addressSet.receiving,
18
+ signMessage: async (message) => {
19
+ const node = hdWallet.getNodeAt(`0/${index}`);
20
+ const privKeyHex = Buffer.from(node.privateKey).toString('hex');
21
+ return signMessageBCH(message, privKeyHex, true);
22
+ },
23
+ };
24
+ }
25
+ getPayerAddress() {
26
+ return this.signer.address;
27
+ }
28
+ async createPaymentPayload(requirements, resourceUrl, txid, vout, amount) {
29
+ const payload = buildPaymentPayload(requirements, resourceUrl, this.signer.address, txid, vout, amount);
30
+ const signature = await signAuthorization(payload.payload.authorization, this.signer.signMessage.bind(this.signer));
31
+ payload.payload.signature = signature;
32
+ return payload;
33
+ }
34
+ async makePaymentRequest(requirements, resourceUrl, txid, vout, amount) {
35
+ const paymentPayload = await this.createPaymentPayload(requirements, resourceUrl, txid, vout, amount);
36
+ return {
37
+ paymentPayload,
38
+ paymentUrl: requirements.payTo,
39
+ };
40
+ }
41
+ }
42
+ export function createX402Payer(hdWallet, addressIndex) {
43
+ return new X402Payer({ hdWallet, addressIndex });
44
+ }
45
+ //# sourceMappingURL=x402.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"x402.js","sourceRoot":"","sources":["../../src/wallet/x402.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAGL,mBAAmB,EAEnB,iBAAiB,EACjB,cAAc,GACf,MAAM,kBAAkB,CAAA;AAmBzB,MAAM,OAAO,SAAS;IACZ,MAAM,CAAY;IAClB,SAAS,CAAS;IAE1B,YAAY,MAAuB;QACjC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAA;QAC1C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,YAAY,IAAI,CAAC,CAAC,CAAA;IAC5E,CAAC;IAEO,YAAY,CAAC,QAAyB,EAAE,KAAa;QAC3D,MAAM,UAAU,GAAG,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,CAAA;QAClD,OAAO;YACL,OAAO,EAAE,UAAU,CAAC,SAAS;YAC7B,WAAW,EAAE,KAAK,EAAE,OAAe,EAAE,EAAE;gBACrC,MAAM,IAAI,GAAG,QAAQ,CAAC,SAAS,CAAC,KAAK,KAAK,EAAE,CAAC,CAAA;gBAC7C,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;gBAC/D,OAAO,cAAc,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,CAAA;YAClD,CAAC;SACF,CAAA;IACH,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAA;IAC5B,CAAC;IAED,KAAK,CAAC,oBAAoB,CACxB,YAAiC,EACjC,WAAmB,EACnB,IAAY,EACZ,IAAmB,EACnB,MAAqB;QAErB,MAAM,OAAO,GAAG,mBAAmB,CACjC,YAAY,EACZ,WAAW,EACX,IAAI,CAAC,MAAM,CAAC,OAAO,EACnB,IAAI,EACJ,IAAI,EACJ,MAAM,CACP,CAAA;QAED,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;QACnH,OAAO,CAAC,OAAO,CAAC,SAAS,GAAG,SAAS,CAAA;QAErC,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,KAAK,CAAC,kBAAkB,CACtB,YAAiC,EACjC,WAAmB,EACnB,IAAY,EACZ,IAAmB,EACnB,MAAqB;QAErB,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;QAErG,OAAO;YACL,cAAc;YACd,UAAU,EAAE,YAAY,CAAC,KAAK;SAC/B,CAAA;IACH,CAAC;CACF;AAED,MAAM,UAAU,eAAe,CAAC,QAAyB,EAAE,YAAqB;IAC9E,OAAO,IAAI,SAAS,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAA;AAClD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "paytaca-cli",
3
- "version": "0.1.0",
3
+ "version": "0.3.0",
4
4
  "description": "Command-line interface for the Paytaca Bitcoin Cash wallet",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -11,6 +11,7 @@
11
11
  "files": [
12
12
  "bin/",
13
13
  "dist/",
14
+ "skills/",
14
15
  "LICENSE",
15
16
  "README.md"
16
17
  ],
@@ -19,6 +20,8 @@
19
20
  "dev": "tsc --watch",
20
21
  "start": "node bin/paytaca.js",
21
22
  "clean": "rm -rf dist",
23
+ "test": "vitest run",
24
+ "test:watch": "vitest",
22
25
  "prepublishOnly": "npm run clean && npm run build"
23
26
  },
24
27
  "keywords": [
@@ -27,6 +30,7 @@
27
30
  "wallet",
28
31
  "cli",
29
32
  "paytaca",
33
+ "cashtokens",
30
34
  "cryptocurrency"
31
35
  ],
32
36
  "repository": {
@@ -48,7 +52,9 @@
48
52
  "devDependencies": {
49
53
  "@types/node": "^22.0.0",
50
54
  "@types/qrcode-terminal": "^0.12.2",
51
- "typescript": "^5.9.3"
55
+ "@vitest/ui": "^4.1.2",
56
+ "typescript": "^5.9.3",
57
+ "vitest": "^4.1.2"
52
58
  },
53
59
  "engines": {
54
60
  "node": ">=20.0.0"