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
@@ -4,6 +4,8 @@
4
4
  * Displays transaction history for the current wallet.
5
5
  * Fetches paginated records from the Watchtower API, showing
6
6
  * direction (incoming/outgoing), amount, date, and txid.
7
+ *
8
+ * Use --token to filter history for a specific CashToken.
7
9
  */
8
10
  import { Command } from 'commander';
9
11
  export declare function registerHistoryCommand(program: Command): void;
@@ -1 +1 @@
1
- {"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/commands/history.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA6BnC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsH7D"}
1
+ {"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/commands/history.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA6BnC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqJ7D"}
@@ -4,6 +4,8 @@
4
4
  * Displays transaction history for the current wallet.
5
5
  * Fetches paginated records from the Watchtower API, showing
6
6
  * direction (incoming/outgoing), amount, date, and txid.
7
+ *
8
+ * Use --token to filter history for a specific CashToken.
7
9
  */
8
10
  import chalk from 'chalk';
9
11
  import { loadWallet, loadMnemonic } from '../wallet/index.js';
@@ -38,6 +40,7 @@ export function registerHistoryCommand(program) {
38
40
  .option('--chipnet', 'Use chipnet (testnet) instead of mainnet')
39
41
  .option('--page <page>', 'Page number (default: 1)', '1')
40
42
  .option('--type <type>', 'Filter by type: all, incoming, outgoing (default: all)', 'all')
43
+ .option('--token <id>', 'Filter by CashToken category ID (64-character hex)')
41
44
  .option('--sats', 'Display amounts in satoshis')
42
45
  .action(async (opts) => {
43
46
  const isChipnet = Boolean(opts.chipnet);
@@ -45,6 +48,7 @@ export function registerHistoryCommand(program) {
45
48
  const network = isChipnet ? 'chipnet' : 'mainnet';
46
49
  const page = parseInt(opts.page, 10);
47
50
  const recordType = opts.type;
51
+ const tokenId = opts.token || '';
48
52
  if (isNaN(page) || page < 1) {
49
53
  console.log(chalk.red('\nError: Page must be a positive integer.\n'));
50
54
  process.exit(1);
@@ -53,6 +57,10 @@ export function registerHistoryCommand(program) {
53
57
  console.log(chalk.red('\nError: Type must be "all", "incoming", or "outgoing".\n'));
54
58
  process.exit(1);
55
59
  }
60
+ if (tokenId && !/^[a-fA-F0-9]{64}$/.test(tokenId)) {
61
+ console.log(chalk.red('\nError: Token must be a 64-character hex string.\n'));
62
+ process.exit(1);
63
+ }
56
64
  // ── Validate wallet ──────────────────────────────────────────────
57
65
  const data = loadMnemonic();
58
66
  if (!data) {
@@ -61,14 +69,35 @@ export function registerHistoryCommand(program) {
61
69
  }
62
70
  const w = loadWallet();
63
71
  const bchWallet = w.forNetwork(isChipnet);
64
- console.log(chalk.bold(`\n Transaction History (${network})\n`));
72
+ // Resolve token label for header
73
+ let headerLabel = 'Transaction History';
74
+ if (tokenId) {
75
+ try {
76
+ const info = await bchWallet.getTokenInfo(tokenId);
77
+ if (info?.symbol) {
78
+ headerLabel = `${info.symbol} Transaction History`;
79
+ }
80
+ else if (info?.name && info.name !== 'Unknown Token') {
81
+ headerLabel = `${info.name} Transaction History`;
82
+ }
83
+ else {
84
+ headerLabel = `Token Transaction History`;
85
+ }
86
+ }
87
+ catch {
88
+ headerLabel = 'Token Transaction History';
89
+ }
90
+ }
91
+ console.log(chalk.bold(`\n ${headerLabel} (${network})\n`));
92
+ if (tokenId) {
93
+ console.log(chalk.dim(` Category: ${tokenId}\n`));
94
+ }
65
95
  try {
66
- const result = await bchWallet.getHistory({ page, recordType });
96
+ const result = await bchWallet.getHistory({ page, recordType, tokenId });
67
97
  if (!result.history || result.history.length === 0) {
68
98
  console.log(chalk.dim(' No transactions found.\n'));
69
99
  return;
70
100
  }
71
- // ── Table header ───────────────────────────────────────────────
72
101
  const explorer = isChipnet
73
102
  ? 'https://chipnet.chaingraph.cash/tx/'
74
103
  : 'https://bchexplorer.info/tx/';
@@ -77,9 +106,12 @@ export function registerHistoryCommand(program) {
77
106
  const arrow = isIncoming
78
107
  ? chalk.green(' IN')
79
108
  : chalk.red(' OUT');
80
- const amount = showSats
81
- ? `${bchToSats(tx.amount).toLocaleString('en-US')} sats`
82
- : `${tx.amount} BCH`;
109
+ // When filtering by token, the amount is the token amount (not BCH)
110
+ const amount = tokenId
111
+ ? `${tx.amount}`
112
+ : showSats
113
+ ? `${bchToSats(tx.amount).toLocaleString('en-US')} sats`
114
+ : `${tx.amount} BCH`;
83
115
  const amountColored = isIncoming
84
116
  ? chalk.green(`+${amount}`)
85
117
  : chalk.red(`-${amount}`);
@@ -92,9 +124,10 @@ export function registerHistoryCommand(program) {
92
124
  }
93
125
  // ── Pagination info ────────────────────────────────────────────
94
126
  const pageNum = parseInt(result.page, 10) || page;
127
+ const tokenFlag = tokenId ? ` --token ${tokenId}` : '';
95
128
  console.log(chalk.dim(` Page ${pageNum} of ${result.num_pages}` +
96
129
  (result.has_next
97
- ? ` — next: paytaca history --page ${pageNum + 1}${isChipnet ? ' --chipnet' : ''}`
130
+ ? ` — next: paytaca history --page ${pageNum + 1}${tokenFlag}${isChipnet ? ' --chipnet' : ''}`
98
131
  : '')));
99
132
  }
100
133
  catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"history.js","sourceRoot":"","sources":["../../src/commands/history.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"history.js","sourceRoot":"","sources":["../../src/commands/history.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * CLI command: opencode
3
+ *
4
+ * Set up paytaca x402 payment handling for opencode AI assistant.
5
+ * Installs the paytaca skill so opencode knows how to handle 402 responses.
6
+ */
7
+ import { Command } from 'commander';
8
+ export declare function registerOpencodeCommand(program: Command): void;
9
+ //# sourceMappingURL=opencode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../../src/commands/opencode.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAGnC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAW9D"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * CLI command: opencode
3
+ *
4
+ * Set up paytaca x402 payment handling for opencode AI assistant.
5
+ * Installs the paytaca skill so opencode knows how to handle 402 responses.
6
+ */
7
+ import { SUPPORTED_ASSISTANTS, handleSkillAction } from '../utils/skill.js';
8
+ export function registerOpencodeCommand(program) {
9
+ const assistant = SUPPORTED_ASSISTANTS.find(a => a.name === 'opencode');
10
+ if (!assistant)
11
+ return;
12
+ program
13
+ .command('opencode')
14
+ .description('Set up paytaca x402 payments for opencode AI assistant')
15
+ .argument('[action]', 'Action: install, uninstall, status', 'status')
16
+ .action(async (action) => {
17
+ handleSkillAction(assistant, action);
18
+ });
19
+ }
20
+ //# sourceMappingURL=opencode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../src/commands/opencode.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAE3E,MAAM,UAAU,uBAAuB,CAAC,OAAgB;IACtD,MAAM,SAAS,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAA;IACvE,IAAI,CAAC,SAAS;QAAE,OAAM;IAEtB,OAAO;SACJ,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,wDAAwD,CAAC;SACrE,QAAQ,CAAC,UAAU,EAAE,oCAAoC,EAAE,QAAQ,CAAC;SACpE,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,EAAE;QAC/B,iBAAiB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;IACtC,CAAC,CAAC,CAAA;AACN,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * CLI command: pay <url>
3
+ *
4
+ * Makes an HTTP request to a URL, handling x402-bch v2.2 payment requirements.
5
+ * If the server returns 402 PAYMENT-REQUIRED, the wallet pays for the request.
6
+ *
7
+ * Flow:
8
+ * 1. Make HTTP request to URL
9
+ * 2. If 402 response, parse PaymentRequired JSON body
10
+ * 3. Build BCH transaction to pay the required amount
11
+ * 4. Broadcast transaction
12
+ * 5. Build PaymentPayload per x402-bch v2.2 spec
13
+ * 6. Retry original request with PAYMENT-SIGNATURE header containing JSON PayloadPayload
14
+ */
15
+ import { Command } from 'commander';
16
+ export declare function registerPayCommand(program: Command): void;
17
+ //# sourceMappingURL=pay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pay.d.ts","sourceRoot":"","sources":["../../src/commands/pay.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA2DnC,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuEzD"}
@@ -0,0 +1,347 @@
1
+ /**
2
+ * CLI command: pay <url>
3
+ *
4
+ * Makes an HTTP request to a URL, handling x402-bch v2.2 payment requirements.
5
+ * If the server returns 402 PAYMENT-REQUIRED, the wallet pays for the request.
6
+ *
7
+ * Flow:
8
+ * 1. Make HTTP request to URL
9
+ * 2. If 402 response, parse PaymentRequired JSON body
10
+ * 3. Build BCH transaction to pay the required amount
11
+ * 4. Broadcast transaction
12
+ * 5. Build PaymentPayload per x402-bch v2.2 spec
13
+ * 6. Retry original request with PAYMENT-SIGNATURE header containing JSON PayloadPayload
14
+ */
15
+ import chalk from 'chalk';
16
+ import readline from 'readline';
17
+ import { loadWallet, loadMnemonic } from '../wallet/index.js';
18
+ import { LibauthHDWallet } from '../wallet/keys.js';
19
+ import { X402Payer } from '../wallet/x402.js';
20
+ import { parsePaymentRequiredJson, selectBchPaymentRequirements } from '../utils/x402.js';
21
+ import { BCH_DERIVATION_PATH } from '../utils/network.js';
22
+ export function registerPayCommand(program) {
23
+ program
24
+ .command('pay')
25
+ .description('Make a paid HTTP request with BCH payment via x402-bch v2.2 protocol')
26
+ .argument('<url>', 'URL to request')
27
+ .option('-X, --method <method>', 'HTTP method (default: GET)', 'GET')
28
+ .option('-H, --header <header>', 'Add header to request (repeatable)')
29
+ .option('-d, --body <body>', 'Request body for POST/PUT requests')
30
+ .option('--chipnet', 'Use chipnet (testnet) instead of mainnet')
31
+ .option('--max-amount <amount>', 'Maximum payment amount in satoshis (overrides server\'s max-amount)')
32
+ .option('--change-address <address>', 'Change address for BCH transaction')
33
+ .option('--payer <value>', 'Payer identifier (defaults to wallet address index 0, or pass custom value like user ID for server-side lookups)')
34
+ .option('--dry-run', 'Show what would happen without making payment')
35
+ .option('--json', 'Output results as JSON')
36
+ .action(async (url, opts) => {
37
+ const isChipnet = Boolean(opts.chipnet);
38
+ const network = isChipnet ? 'chipnet' : 'mainnet';
39
+ const isJson = Boolean(opts.json);
40
+ const isDryRun = Boolean(opts.dryRun);
41
+ const data = loadMnemonic();
42
+ if (!data) {
43
+ const err = 'No wallet found. Run `paytaca wallet create` or `paytaca wallet import` first.';
44
+ if (isJson) {
45
+ console.log(JSON.stringify({ success: false, error: err }));
46
+ }
47
+ else {
48
+ console.log(chalk.red(`\n${err}\n`));
49
+ }
50
+ process.exit(1);
51
+ }
52
+ const wallet = loadWallet();
53
+ const bchWallet = wallet.forNetwork(isChipnet);
54
+ const hdWallet = new LibauthHDWallet(data.mnemonic, BCH_DERIVATION_PATH, isChipnet ? 'chipnet' : 'mainnet');
55
+ const x402Payer = new X402Payer({ hdWallet, addressIndex: 0 });
56
+ const headers = {};
57
+ if (opts.header) {
58
+ for (const h of opts.header) {
59
+ const idx = h.indexOf(':');
60
+ if (idx === -1) {
61
+ const err = `Invalid header format: ${h}. Expected "Key: Value"`;
62
+ if (isJson) {
63
+ console.log(JSON.stringify({ success: false, error: err }));
64
+ }
65
+ else {
66
+ console.log(chalk.red(`\n Error: ${err}\n`));
67
+ }
68
+ process.exit(1);
69
+ }
70
+ const key = h.substring(0, idx).trim();
71
+ const value = h.substring(idx + 1).trim();
72
+ headers[key] = value;
73
+ }
74
+ }
75
+ const method = opts.method?.toUpperCase() || 'GET';
76
+ const body = opts.body;
77
+ if (isJson) {
78
+ await runPayJson(url, method, headers, body, opts, x402Payer, bchWallet, isChipnet);
79
+ }
80
+ else if (isDryRun) {
81
+ await runPayDryRun(url, method, headers, body, opts, x402Payer, bchWallet, isChipnet);
82
+ }
83
+ else {
84
+ await runPayHuman(url, method, headers, body, opts, x402Payer, bchWallet, isChipnet);
85
+ }
86
+ });
87
+ }
88
+ async function runPayHuman(url, method, headers, body, opts, x402Payer, bchWallet, isChipnet) {
89
+ const network = isChipnet ? 'chipnet' : 'mainnet';
90
+ console.log(`\n ${chalk.bold(method)} ${url}`);
91
+ console.log(chalk.dim(` Network: ${chalk.cyan(network)}`));
92
+ console.log(chalk.dim(` Payer: ${opts.payer || x402Payer.getPayerAddress()}`));
93
+ if (Object.keys(headers).length > 0) {
94
+ console.log(chalk.dim(` Headers: ${JSON.stringify(headers)}`));
95
+ }
96
+ console.log();
97
+ try {
98
+ const result = await executePay(url, method, headers, body, opts, x402Payer, bchWallet, false);
99
+ if (result.payment?.required && result.payment.txid) {
100
+ const explorer = isChipnet
101
+ ? 'https://chipnet.chaingraph.cash/tx/'
102
+ : 'https://bchexplorer.info/tx/';
103
+ console.log(chalk.dim(` Payment txid: ${explorer}${result.payment.txid}`));
104
+ if (result.payment.recipientAddress) {
105
+ console.log(chalk.dim(` Recipient: ${result.payment.recipientAddress}`));
106
+ }
107
+ }
108
+ console.log(chalk.green(`\n Response: ${result.status} ${result.statusText}`));
109
+ console.log();
110
+ console.log(formatResponse(result.data));
111
+ }
112
+ catch (err) {
113
+ console.log(chalk.red(`\n Error: ${err.message || err}\n`));
114
+ process.exit(1);
115
+ }
116
+ console.log();
117
+ }
118
+ async function runPayDryRun(url, method, headers, body, opts, x402Payer, bchWallet, isChipnet) {
119
+ const network = isChipnet ? 'chipnet' : 'mainnet';
120
+ const dryRunInfo = {
121
+ url,
122
+ method,
123
+ willRequirePayment: false,
124
+ };
125
+ console.log(`\n ${chalk.bold(method)} ${url} ${chalk.dim('[DRY RUN]')}`);
126
+ console.log(chalk.dim(` Network: ${chalk.cyan(network)}`));
127
+ console.log(chalk.dim(` Payer: ${opts.payer || x402Payer.getPayerAddress()}`));
128
+ console.log();
129
+ try {
130
+ const response = await fetch(url, {
131
+ method,
132
+ headers,
133
+ body: ['POST', 'PUT', 'PATCH'].includes(method) ? body : undefined,
134
+ });
135
+ if (response.status === 402) {
136
+ dryRunInfo.willRequirePayment = true;
137
+ const responseBody = await response.json();
138
+ const paymentRequired = parsePaymentRequiredJson(responseBody);
139
+ if (!paymentRequired) {
140
+ console.log(chalk.red(' Error: Could not parse PaymentRequired from 402 response body'));
141
+ process.exit(1);
142
+ }
143
+ const requirements = selectBchPaymentRequirements(paymentRequired, isChipnet ? 'chipnet' : 'mainnet');
144
+ if (!requirements) {
145
+ console.log(chalk.red(' Error: Server does not accept BCH payment'));
146
+ const acceptedSchemes = paymentRequired.accepts.map(a => `${a.scheme}:${a.network}`).join(', ');
147
+ console.log(chalk.dim(` Accepted schemes: ${acceptedSchemes}`));
148
+ process.exit(1);
149
+ }
150
+ const changeAddressSet = bchWallet.getAddressSetAt(0);
151
+ const changeAddress = opts.changeAddress || changeAddressSet.change;
152
+ dryRunInfo.payment = {
153
+ acceptsBch: true,
154
+ paymentUrl: requirements.payTo,
155
+ amountSats: requirements.amount,
156
+ maxTimeoutSeconds: requirements.maxTimeoutSeconds,
157
+ resourceUrl: paymentRequired.resource.url,
158
+ payerAddress: opts.payer || x402Payer.getPayerAddress(),
159
+ changeAddress,
160
+ network: requirements.network,
161
+ };
162
+ try {
163
+ const balanceResult = await bchWallet.getBalance();
164
+ const available = (balanceResult.spendable * 1e8).toFixed(0);
165
+ const required = requirements.amount;
166
+ const sufficient = BigInt(available) >= BigInt(required);
167
+ dryRunInfo.balanceCheck = {
168
+ available,
169
+ required,
170
+ sufficient,
171
+ };
172
+ console.log(chalk.yellow(' 402 PAYMENT REQUIRED'));
173
+ console.log(chalk.dim(' Payment details:'));
174
+ console.log(chalk.dim(` PayTo: ${requirements.payTo}`));
175
+ console.log(chalk.dim(` Amount: ${requirements.amount} sats (${(Number(requirements.amount) / 1e8).toFixed(8)} BCH)`));
176
+ console.log(chalk.dim(` Timeout: ${requirements.maxTimeoutSeconds}s`));
177
+ console.log(chalk.dim(` Resource: ${paymentRequired.resource.url}`));
178
+ console.log();
179
+ console.log(chalk.dim(' Wallet:'));
180
+ console.log(chalk.dim(` Payer: ${opts.payer || x402Payer.getPayerAddress()}`));
181
+ console.log(chalk.dim(` Change: ${changeAddress}`));
182
+ console.log();
183
+ if (sufficient) {
184
+ console.log(chalk.green(` Balance OK: ${available} sats available, ${required} sats required`));
185
+ }
186
+ else {
187
+ console.log(chalk.red(` Insufficient: ${available} sats available, ${required} sats required`));
188
+ }
189
+ }
190
+ catch (balanceErr) {
191
+ console.log(chalk.dim(` (Could not check balance: ${balanceErr.message})`));
192
+ }
193
+ }
194
+ else {
195
+ console.log(chalk.green(` Response: ${response.status} ${response.statusText} (no payment required)`));
196
+ }
197
+ console.log();
198
+ console.log(chalk.dim(' To execute: paytaca pay ' + url));
199
+ }
200
+ catch (err) {
201
+ console.log(chalk.red(`\n Error: ${err.message || err}\n`));
202
+ process.exit(1);
203
+ }
204
+ }
205
+ async function runPayJson(url, method, headers, body, opts, x402Payer, bchWallet, isChipnet) {
206
+ try {
207
+ const result = await executePay(url, method, headers, body, opts, x402Payer, bchWallet, false);
208
+ console.log(JSON.stringify(result, null, 2));
209
+ }
210
+ catch (err) {
211
+ const errorResult = { success: false, error: err.message || String(err) };
212
+ console.log(JSON.stringify(errorResult, null, 2));
213
+ process.exit(1);
214
+ }
215
+ }
216
+ async function executePay(url, method, headers, body, opts, x402Payer, bchWallet, skipPayment) {
217
+ const response = await fetch(url, {
218
+ method,
219
+ headers,
220
+ body: ['POST', 'PUT', 'PATCH'].includes(method) ? body : undefined,
221
+ });
222
+ const responseHeaders = {};
223
+ response.headers.forEach((value, key) => {
224
+ responseHeaders[key] = value;
225
+ });
226
+ const responseText = await response.text();
227
+ let responseData;
228
+ try {
229
+ responseData = JSON.parse(responseText);
230
+ }
231
+ catch {
232
+ responseData = responseText;
233
+ }
234
+ if (response.status === 402) {
235
+ const paymentRequired = parsePaymentRequiredJson(responseData);
236
+ if (!paymentRequired) {
237
+ return { success: false, status: 402, error: 'Could not parse PaymentRequired from 402 response body' };
238
+ }
239
+ const requirements = selectBchPaymentRequirements(paymentRequired, opts.chipnet ? 'chipnet' : 'mainnet');
240
+ if (!requirements) {
241
+ return {
242
+ success: false,
243
+ status: 402,
244
+ error: 'Server does not accept BCH payment',
245
+ data: { acceptedSchemes: paymentRequired.accepts.map(a => ({ scheme: a.scheme, network: a.network })) },
246
+ };
247
+ }
248
+ if (skipPayment) {
249
+ return {
250
+ success: true,
251
+ status: 402,
252
+ payment: { required: true },
253
+ };
254
+ }
255
+ const payerAddress = opts.payer || x402Payer.getPayerAddress();
256
+ const address = requirements.payTo;
257
+ const amountBch = Number(requirements.amount) / 1e8;
258
+ const changeAddressSet = bchWallet.getAddressSetAt(0);
259
+ const changeAddress = opts.changeAddress || changeAddressSet.change;
260
+ console.log(chalk.yellow('\n ⚠ Payment Required'));
261
+ console.log(chalk.dim(` Amount: ${amountBch} BCH (${requirements.amount} sats)`));
262
+ console.log(chalk.dim(` To: ${address}`));
263
+ console.log(chalk.dim(` Change: ${changeAddress}`));
264
+ console.log(chalk.dim(` Payer: ${payerAddress}`));
265
+ const confirmed = await promptConfirmation('Confirm payment?');
266
+ if (!confirmed) {
267
+ return {
268
+ success: false,
269
+ status: 402,
270
+ payment: { required: true, error: 'Payment rejected by user' },
271
+ error: 'Payment rejected by user',
272
+ };
273
+ }
274
+ const sendResult = await bchWallet.sendBch(amountBch, address, changeAddress);
275
+ if (!sendResult.success) {
276
+ return {
277
+ success: false,
278
+ status: 402,
279
+ payment: { required: true, error: sendResult.error },
280
+ error: sendResult.error,
281
+ };
282
+ }
283
+ const txid = sendResult.txid;
284
+ const paymentPayload = await x402Payer.createPaymentPayload(requirements, paymentRequired.resource.url, txid, 0, requirements.amount);
285
+ headers['PAYMENT-SIGNATURE'] = JSON.stringify(paymentPayload);
286
+ const retryResponse = await fetch(url, {
287
+ method,
288
+ headers,
289
+ body: ['POST', 'PUT', 'PATCH'].includes(method) ? body : undefined,
290
+ });
291
+ const retryResponseHeaders = {};
292
+ retryResponse.headers.forEach((value, key) => {
293
+ retryResponseHeaders[key] = value;
294
+ });
295
+ const retryResponseText = await retryResponse.text();
296
+ let retryResponseData;
297
+ try {
298
+ retryResponseData = JSON.parse(retryResponseText);
299
+ }
300
+ catch {
301
+ retryResponseData = retryResponseText;
302
+ }
303
+ return {
304
+ success: retryResponse.ok,
305
+ status: retryResponse.status,
306
+ statusText: retryResponse.statusText,
307
+ headers: retryResponseHeaders,
308
+ data: retryResponseData,
309
+ payment: { required: true, txid, recipientAddress: address },
310
+ };
311
+ }
312
+ return {
313
+ success: response.ok,
314
+ status: response.status,
315
+ statusText: response.statusText,
316
+ headers: responseHeaders,
317
+ data: responseData,
318
+ payment: { required: false },
319
+ };
320
+ }
321
+ function formatResponse(data) {
322
+ if (typeof data === 'string')
323
+ return data;
324
+ if (typeof data === 'object') {
325
+ try {
326
+ return JSON.stringify(data, null, 2);
327
+ }
328
+ catch {
329
+ return String(data);
330
+ }
331
+ }
332
+ return String(data);
333
+ }
334
+ async function promptConfirmation(message) {
335
+ const rl = readline.createInterface({
336
+ input: process.stdin,
337
+ output: process.stdout,
338
+ });
339
+ return new Promise((resolve) => {
340
+ rl.question(chalk.bold(`\n ${message} (y/N): `), (answer) => {
341
+ rl.close();
342
+ const confirmed = answer.toLowerCase() === 'y' || answer.toLowerCase() === 'yes';
343
+ resolve(confirmed);
344
+ });
345
+ });
346
+ }
347
+ //# sourceMappingURL=pay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pay.js","sourceRoot":"","sources":["../../src/commands/pay.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,17 @@
1
1
  /**
2
2
  * CLI command: receive
3
3
  *
4
- * Displays a receiving address and its QR code for accepting BCH payments.
4
+ * Displays a receiving address and its QR code for accepting BCH or CashToken payments.
5
5
  * The QR code encodes the address in CashAddr format, rendered directly
6
6
  * in the terminal using Unicode block characters.
7
+ *
8
+ * Use --token to display a token-aware (z-prefix) address for receiving CashTokens.
9
+ * Optionally pass a category ID to generate a PayPro payment URI:
10
+ * --token <category> → bitcoincash:<z-address>?c=<category>
11
+ *
12
+ * Use --amount to embed a requested amount into the URI:
13
+ * BCH: bitcoincash:<address>?amount=<bch> (BIP21)
14
+ * Token: bitcoincash:<z-address>?c=<cat>&f=<base_units> (PayPro)
7
15
  */
8
16
  import { Command } from 'commander';
9
17
  export declare function registerReceiveCommand(program: Command): void;
@@ -1 +1 @@
1
- {"version":3,"file":"receive.d.ts","sourceRoot":"","sources":["../../src/commands/receive.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAKnC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsD7D"}
1
+ {"version":3,"file":"receive.d.ts","sourceRoot":"","sources":["../../src/commands/receive.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAwCnC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4I7D"}