paytaca-cli 0.4.1 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +29 -9
- package/dist/commands/balance.d.ts.map +1 -1
- package/dist/commands/balance.js +22 -9
- package/dist/commands/balance.js.map +1 -1
- package/dist/commands/history.d.ts.map +1 -1
- package/dist/commands/history.js +10 -2
- package/dist/commands/history.js.map +1 -1
- package/dist/commands/send.d.ts +2 -1
- package/dist/commands/send.d.ts.map +1 -1
- package/dist/commands/send.js +22 -7
- package/dist/commands/send.js.map +1 -1
- package/dist/commands/swap.d.ts +19 -0
- package/dist/commands/swap.d.ts.map +1 -0
- package/dist/commands/swap.js +129 -0
- package/dist/commands/swap.js.map +1 -0
- package/dist/commands/token.d.ts.map +1 -1
- package/dist/commands/token.js +140 -1
- package/dist/commands/token.js.map +1 -1
- package/dist/commands/wallet.d.ts.map +1 -1
- package/dist/commands/wallet.js +12 -3
- package/dist/commands/wallet.js.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/nostr/store.test.js +12 -4
- package/dist/nostr/store.test.js.map +1 -1
- package/dist/utils/prices.d.ts +46 -0
- package/dist/utils/prices.d.ts.map +1 -0
- package/dist/utils/prices.js +92 -0
- package/dist/utils/prices.js.map +1 -0
- package/dist/utils/prices.test.d.ts +5 -0
- package/dist/utils/prices.test.d.ts.map +1 -0
- package/dist/utils/prices.test.js +62 -0
- package/dist/utils/prices.test.js.map +1 -0
- package/dist/wallet/bch.d.ts +14 -0
- package/dist/wallet/bch.d.ts.map +1 -1
- package/dist/wallet/bch.js +24 -0
- package/dist/wallet/bch.js.map +1 -1
- package/dist/wallet/cauldron/api.d.ts +58 -0
- package/dist/wallet/cauldron/api.d.ts.map +1 -0
- package/dist/wallet/cauldron/api.js +60 -0
- package/dist/wallet/cauldron/api.js.map +1 -0
- package/dist/wallet/cauldron/pools.d.ts +66 -0
- package/dist/wallet/cauldron/pools.d.ts.map +1 -0
- package/dist/wallet/cauldron/pools.js +96 -0
- package/dist/wallet/cauldron/pools.js.map +1 -0
- package/dist/wallet/cauldron/pools.test.d.ts +3 -0
- package/dist/wallet/cauldron/pools.test.d.ts.map +1 -0
- package/dist/wallet/cauldron/pools.test.js +149 -0
- package/dist/wallet/cauldron/pools.test.js.map +1 -0
- package/dist/wallet/cauldron/swap.d.ts +69 -0
- package/dist/wallet/cauldron/swap.d.ts.map +1 -0
- package/dist/wallet/cauldron/swap.js +173 -0
- package/dist/wallet/cauldron/swap.js.map +1 -0
- package/dist/wallet/cauldron/transact.d.ts +98 -0
- package/dist/wallet/cauldron/transact.d.ts.map +1 -0
- package/dist/wallet/cauldron/transact.js +307 -0
- package/dist/wallet/cauldron/transact.js.map +1 -0
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -42,12 +42,14 @@ paytaca wallet export # Display the stored seed phrase
|
|
|
42
42
|
### Balance
|
|
43
43
|
|
|
44
44
|
```bash
|
|
45
|
-
paytaca balance # Show BCH balance
|
|
45
|
+
paytaca balance # Show BCH balance with USD conversion
|
|
46
46
|
paytaca balance --sats # Show in satoshis only
|
|
47
47
|
paytaca balance --token <category> # Show balance for a specific CashToken
|
|
48
48
|
paytaca balance --chipnet # Query chipnet balance
|
|
49
49
|
```
|
|
50
50
|
|
|
51
|
+
The default balance view shows the BCH (or token) amount plus its fiat value (e.g. `0.01218811 BCH` / `≈ 3.17 USD`). Fiat conversion is skipped when no price is available.
|
|
52
|
+
|
|
51
53
|
### Receive
|
|
52
54
|
|
|
53
55
|
```bash
|
|
@@ -63,11 +65,15 @@ paytaca receive --token <category> --amount 100 # PayPro URI with token amount
|
|
|
63
65
|
### Send
|
|
64
66
|
|
|
65
67
|
```bash
|
|
66
|
-
paytaca send <address> <amount>
|
|
67
|
-
paytaca send <address> 50000
|
|
68
|
-
paytaca send <address>
|
|
68
|
+
paytaca send <address> <amount> # Send BCH (default currency: bch)
|
|
69
|
+
paytaca send <address> 50000 sats # Send in satoshis
|
|
70
|
+
paytaca send <address> 50000 satoshis # Send in satoshis (alias)
|
|
71
|
+
paytaca send <address> 10 usd # Send a USD amount (converted at live rate)
|
|
72
|
+
paytaca send <address> 0.001 --chipnet # Send on chipnet
|
|
69
73
|
```
|
|
70
74
|
|
|
75
|
+
The `[currency]` argument is positional: `bch` (default), `sats`/`satoshis`, or `usd`. When sending with `usd`, the current BCH-USD rate is fetched and applied, and the fiat value is shown inline with the amount.
|
|
76
|
+
|
|
71
77
|
### Transaction History
|
|
72
78
|
|
|
73
79
|
```bash
|
|
@@ -92,12 +98,24 @@ paytaca address list --token # List token-aware z-prefix addresses
|
|
|
92
98
|
### CashTokens
|
|
93
99
|
|
|
94
100
|
```bash
|
|
95
|
-
paytaca token list # List fungible tokens with balances
|
|
96
|
-
paytaca token info <category> # Token metadata, balance, and NFTs
|
|
101
|
+
paytaca token list # List fungible tokens with balances and USD values
|
|
102
|
+
paytaca token info <category> # Token metadata, balance, USD value, and NFTs
|
|
103
|
+
paytaca token price <category> [amount] # USD price of a token and value of an amount (default: balance)
|
|
97
104
|
paytaca token send <address> <amount> --token <cat> # Send fungible tokens
|
|
98
105
|
paytaca token send-nft <address> --token <cat> --commitment <hex> # Send an NFT
|
|
99
106
|
```
|
|
100
107
|
|
|
108
|
+
### Swap (Cauldron DEX)
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
paytaca swap <tokenId> <amount> # Sell tokens for BCH (default: sell)
|
|
112
|
+
paytaca swap <tokenId> <amount> --action buy # Buy tokens with BCH
|
|
113
|
+
paytaca swap <tokenId> <amount> --raw # Amount is in raw base units
|
|
114
|
+
paytaca swap <tokenId> <amount> --yes # Skip the confirmation prompt
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
The `--action` option is `sell` (token→BCH) or `buy` (BCH→token). Swaps run on mainnet only.
|
|
118
|
+
|
|
101
119
|
### x402 Payments
|
|
102
120
|
|
|
103
121
|
The x402 protocol enables HTTP payments via BCH. Some APIs (like nanogpt) require payment to access.
|
|
@@ -175,12 +193,13 @@ Powered by [@napi-rs/keyring](https://github.com/Brooooooklyn/keyring-node) (pre
|
|
|
175
193
|
src/
|
|
176
194
|
commands/ CLI command definitions (Commander.js)
|
|
177
195
|
wallet.ts wallet create | import | info | export
|
|
178
|
-
balance.ts balance display (BCH and CashTokens)
|
|
196
|
+
balance.ts balance display (BCH and CashTokens, USD conversion)
|
|
179
197
|
receive.ts receiving address + QR code + payment URIs
|
|
180
|
-
send.ts BCH sending
|
|
198
|
+
send.ts BCH sending (bch/sats/usd amounts)
|
|
181
199
|
history.ts transaction history (BCH and CashTokens)
|
|
182
200
|
address.ts HD address derivation (standard and z-prefix)
|
|
183
|
-
token.ts CashToken commands (list, info, send, send-nft)
|
|
201
|
+
token.ts CashToken commands (list, info, price, send, send-nft)
|
|
202
|
+
swap.ts Cauldron DEX swaps (sell/buy with --action)
|
|
184
203
|
pay.ts x402 BCH payment handler for HTTP requests
|
|
185
204
|
check.ts Check if URL requires x402 payment
|
|
186
205
|
wallet/
|
|
@@ -193,6 +212,7 @@ src/
|
|
|
193
212
|
utils/
|
|
194
213
|
crypto.ts pubkey -> CashAddress pipeline
|
|
195
214
|
network.ts Watchtower URLs, derivation paths
|
|
215
|
+
prices.ts Watchtower asset-prices client (USD per token/BCH)
|
|
196
216
|
x402.ts x402 header parsing, payment requirement selection
|
|
197
217
|
types/
|
|
198
218
|
x402.ts x402 payment types (PaymentRequired, PaymentPayload, etc.)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"balance.d.ts","sourceRoot":"","sources":["../../src/commands/balance.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"balance.d.ts","sourceRoot":"","sources":["../../src/commands/balance.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAenC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoI7D"}
|
package/dist/commands/balance.js
CHANGED
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import chalk from 'chalk';
|
|
11
11
|
import { loadWallet, loadMnemonic } from '../wallet/index.js';
|
|
12
|
+
import { getBchUsdPrice, formatUsd, getUsdPerToken, tokenAmountToUsd } from '../utils/prices.js';
|
|
12
13
|
/** Convert BCH to satoshis (1 BCH = 100,000,000 sats) */
|
|
13
14
|
function bchToSats(bch) {
|
|
14
15
|
return Math.round(bch * 1e8);
|
|
@@ -68,13 +69,20 @@ export function registerBalanceCommand(program) {
|
|
|
68
69
|
const displayBalance = decimals > 0
|
|
69
70
|
? (result.balance / 10 ** decimals)
|
|
70
71
|
: result.balance;
|
|
71
|
-
const displaySpendable = decimals > 0
|
|
72
|
-
? (result.spendable / 10 ** decimals)
|
|
73
|
-
: result.spendable;
|
|
74
72
|
const unit = tokenSymbol || 'tokens';
|
|
73
|
+
let usdPerToken;
|
|
74
|
+
try {
|
|
75
|
+
const p = await getUsdPerToken(tokenId, isChipnet);
|
|
76
|
+
if (p !== null)
|
|
77
|
+
usdPerToken = p;
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
// Pricing unavailable — show token only
|
|
81
|
+
}
|
|
75
82
|
console.log(` Balance: ${displayBalance} ${unit}`);
|
|
76
|
-
if (
|
|
77
|
-
|
|
83
|
+
if (usdPerToken !== undefined) {
|
|
84
|
+
const usdValue = tokenAmountToUsd(result.balance, decimals, usdPerToken);
|
|
85
|
+
console.log(chalk.dim(` ≈ ${formatUsd(usdValue)}`));
|
|
78
86
|
}
|
|
79
87
|
}
|
|
80
88
|
else {
|
|
@@ -90,11 +98,16 @@ export function registerBalanceCommand(program) {
|
|
|
90
98
|
}
|
|
91
99
|
}
|
|
92
100
|
else {
|
|
101
|
+
let usdPerBch = null;
|
|
102
|
+
try {
|
|
103
|
+
usdPerBch = await getBchUsdPrice(isChipnet);
|
|
104
|
+
}
|
|
105
|
+
catch {
|
|
106
|
+
// USD price unavailable — show BCH only
|
|
107
|
+
}
|
|
93
108
|
console.log(` Balance: ${result.balance} BCH`);
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
console.log(` Spendable: ${result.spendable} BCH`);
|
|
97
|
-
console.log(chalk.dim(` ${formatSats(spendableSats)} sats`));
|
|
109
|
+
if (usdPerBch !== null) {
|
|
110
|
+
console.log(chalk.dim(` ≈ ${formatUsd(result.balance * usdPerBch)}`));
|
|
98
111
|
}
|
|
99
112
|
}
|
|
100
113
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"balance.js","sourceRoot":"","sources":["../../src/commands/balance.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"balance.js","sourceRoot":"","sources":["../../src/commands/balance.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAC7D,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAEhG,yDAAyD;AACzD,SAAS,SAAS,CAAC,GAAW;IAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,CAAA;AAC9B,CAAC;AAED,gDAAgD;AAChD,SAAS,UAAU,CAAC,IAAY;IAC9B,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;AACrC,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,OAAO;SACJ,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,wBAAwB,CAAC;SACrC,MAAM,CAAC,WAAW,EAAE,0CAA0C,CAAC;SAC/D,MAAM,CAAC,cAAc,EAAE,mEAAmE,CAAC;SAC3F,MAAM,CAAC,QAAQ,EAAE,kCAAkC,CAAC;SACpD,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACvC,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACvC,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAA;QACjD,MAAM,OAAO,GAAW,IAAI,CAAC,KAAK,IAAI,EAAE,CAAA;QAExC,IAAI,OAAO,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAClD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC,CAAA;YAC7E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QAED,oEAAoE;QACpE,MAAM,IAAI,GAAG,YAAY,EAAE,CAAA;QAC3B,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CACP,oFAAoF,CACrF,CACF,CAAA;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QAED,MAAM,CAAC,GAAG,UAAU,EAAG,CAAA;QACvB,MAAM,SAAS,GAAG,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;QAEzC,IAAI,CAAC;YACH,IAAI,OAAO,EAAE,CAAC;gBACZ,gEAAgE;gBAChE,IAAI,SAAS,GAAG,EAAE,CAAA;gBAClB,IAAI,WAAW,GAAG,EAAE,CAAA;gBACpB,IAAI,QAAQ,GAAG,CAAC,CAAA;gBAEhB,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;oBAClD,IAAI,IAAI,EAAE,CAAC;wBACT,SAAS,GAAG,IAAI,CAAC,IAAI,KAAK,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAA;wBAC1D,WAAW,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE,CAAA;wBAC/B,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAA;oBAC/B,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,oDAAoD;gBACtD,CAAC;gBAED,MAAM,KAAK,GAAG,WAAW,IAAI,SAAS,IAAI,OAAO,CAAA;gBACjD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,KAAK,aAAa,OAAO,KAAK,CAAC,CAAC,CAAA;gBAC/D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,OAAO,EAAE,CAAC,CAAC,CAAA;gBACjD,IAAI,SAAS,EAAE,CAAC;oBACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,SAAS,EAAE,CAAC,CAAC,CAAA;gBACrD,CAAC;gBAED,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,eAAe,CAAC,OAAO,CAAC,CAAA;gBACvD,MAAM,cAAc,GAAG,QAAQ,GAAG,CAAC;oBACjC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,GAAG,EAAE,IAAI,QAAQ,CAAC;oBACnC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAA;gBAClB,MAAM,IAAI,GAAG,WAAW,IAAI,QAAQ,CAAA;gBAEpC,IAAI,WAA+B,CAAA;gBACnC,IAAI,CAAC;oBACH,MAAM,CAAC,GAAG,MAAM,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;oBAClD,IAAI,CAAC,KAAK,IAAI;wBAAE,WAAW,GAAG,CAAC,CAAA;gBACjC,CAAC;gBAAC,MAAM,CAAC;oBACP,wCAAwC;gBAC1C,CAAC;gBAED,OAAO,CAAC,GAAG,CAAC,kBAAkB,cAAc,IAAI,IAAI,EAAE,CAAC,CAAA;gBACvD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;oBAC9B,MAAM,QAAQ,GAAG,gBAAgB,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAA;oBACxE,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CAAC,oBAAoB,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CACrD,CAAA;gBACH,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,gEAAgE;gBAChE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,OAAO,KAAK,CAAC,CAAC,CAAA;gBAEtD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,UAAU,EAAE,CAAA;gBAE3C,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;gBAC7C,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;gBAEjD,IAAI,YAAY,EAAE,CAAC;oBACjB,OAAO,CAAC,GAAG,CAAC,kBAAkB,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;oBAC7D,IAAI,MAAM,CAAC,SAAS,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC;wBACxC,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CAAC,kBAAkB,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAC9D,CAAA;oBACH,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,IAAI,SAAS,GAAkB,IAAI,CAAA;oBACnC,IAAI,CAAC;wBACH,SAAS,GAAG,MAAM,cAAc,CAAC,SAAS,CAAC,CAAA;oBAC7C,CAAC;oBAAC,MAAM,CAAC;wBACP,wCAAwC;oBAC1C,CAAC;oBACD,OAAO,CAAC,GAAG,CAAC,kBAAkB,MAAM,CAAC,OAAO,MAAM,CAAC,CAAA;oBACnD,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;wBACvB,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CAAC,oBAAoB,SAAS,CAAC,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC,EAAE,CAAC,CACvE,CAAA;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,MAAM,MAAM,GAAG,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAA;YACpC,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;gBACnB,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CACV,+DAA+D,CAChE,CACF,CAAA;gBACD,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CACP,wEAAwE,CACzE,CACF,CAAA;YACH,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CAAC,8BAA8B,GAAG,CAAC,OAAO,IAAI,GAAG,EAAE,CAAC,CAC9D,CAAA;gBACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACjB,CAAC;QACH,CAAC;QAED,OAAO,CAAC,GAAG,EAAE,CAAA;IACf,CAAC,CAAC,CAAA;AACN,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
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;
|
|
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;AA8BnC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6J7D"}
|
package/dist/commands/history.js
CHANGED
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import chalk from 'chalk';
|
|
11
11
|
import { loadWallet, loadMnemonic } from '../wallet/index.js';
|
|
12
|
+
import { formatUsd } from '../utils/prices.js';
|
|
12
13
|
/** Convert BCH to satoshis (1 BCH = 100,000,000 sats) */
|
|
13
14
|
function bchToSats(bch) {
|
|
14
15
|
return Math.round(bch * 1e8);
|
|
@@ -112,9 +113,16 @@ export function registerHistoryCommand(program) {
|
|
|
112
113
|
: showSats
|
|
113
114
|
? `${bchToSats(tx.amount).toLocaleString('en-US')} sats`
|
|
114
115
|
: `${tx.amount} BCH`;
|
|
115
|
-
|
|
116
|
+
let usdSuffix = '';
|
|
117
|
+
if (!tokenId && typeof tx.usd_price === 'number' && tx.usd_price > 0 && tx.amount != null) {
|
|
118
|
+
const usdValue = tx.amount * tx.usd_price;
|
|
119
|
+
if (usdValue > 0) {
|
|
120
|
+
usdSuffix = chalk.dim(` | ≈ ${formatUsd(usdValue)}`);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
const amountColored = (isIncoming
|
|
116
124
|
? chalk.green(`+${amount}`)
|
|
117
|
-
: chalk.red(`-${amount}`);
|
|
125
|
+
: chalk.red(`-${amount}`)) + usdSuffix;
|
|
118
126
|
const date = formatDate(tx.tx_timestamp || tx.date_created);
|
|
119
127
|
console.log(` ${arrow} ${amountColored}`);
|
|
120
128
|
console.log(chalk.dim(` ${date}`));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"history.js","sourceRoot":"","sources":["../../src/commands/history.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"history.js","sourceRoot":"","sources":["../../src/commands/history.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/send.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* CLI command: send <address> <amount>
|
|
2
|
+
* CLI command: send <address> <amount> [currency]
|
|
3
3
|
*
|
|
4
4
|
* Sends BCH from the wallet to an external address.
|
|
5
|
+
* currency defaults to "bch"; also accepts "sats" / "satoshis" or "usd".
|
|
5
6
|
*
|
|
6
7
|
* The transaction flow is identical to paytaca-app:
|
|
7
8
|
* 1. Load mnemonic + walletHash from keychain
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../src/commands/send.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../src/commands/send.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAMnC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqG1D"}
|
package/dist/commands/send.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* CLI command: send <address> <amount>
|
|
2
|
+
* CLI command: send <address> <amount> [currency]
|
|
3
3
|
*
|
|
4
4
|
* Sends BCH from the wallet to an external address.
|
|
5
|
+
* currency defaults to "bch"; also accepts "sats" / "satoshis" or "usd".
|
|
5
6
|
*
|
|
6
7
|
* The transaction flow is identical to paytaca-app:
|
|
7
8
|
* 1. Load mnemonic + walletHash from keychain
|
|
@@ -16,17 +17,18 @@
|
|
|
16
17
|
import chalk from 'chalk';
|
|
17
18
|
import { Address } from 'watchtower-cash-js';
|
|
18
19
|
import { loadWallet, loadMnemonic } from '../wallet/index.js';
|
|
20
|
+
import { getBchUsdPrice, formatUsd } from '../utils/prices.js';
|
|
19
21
|
export function registerSendCommand(program) {
|
|
20
22
|
program
|
|
21
23
|
.command('send')
|
|
22
24
|
.description('Send BCH to an address')
|
|
23
25
|
.argument('<address>', 'Recipient BCH address (CashAddr format)')
|
|
24
26
|
.argument('<amount>', 'Amount to send')
|
|
25
|
-
.
|
|
27
|
+
.argument('[currency]', 'Currency: bch (default), sats / satoshis, or usd', 'bch')
|
|
26
28
|
.option('--chipnet', 'Use chipnet (testnet) instead of mainnet')
|
|
27
|
-
.action(async (address, amountStr, opts) => {
|
|
29
|
+
.action(async (address, amountStr, currency, opts) => {
|
|
28
30
|
const isChipnet = Boolean(opts.chipnet);
|
|
29
|
-
const unit =
|
|
31
|
+
const unit = currency.toLowerCase();
|
|
30
32
|
const network = isChipnet ? 'chipnet' : 'mainnet';
|
|
31
33
|
// ── Validate wallet ──────────────────────────────────────────────
|
|
32
34
|
const data = loadMnemonic();
|
|
@@ -40,11 +42,20 @@ export function registerSendCommand(program) {
|
|
|
40
42
|
console.log(chalk.red('\nError: Amount must be a positive number.\n'));
|
|
41
43
|
process.exit(1);
|
|
42
44
|
}
|
|
43
|
-
|
|
45
|
+
let usdPrice = null;
|
|
46
|
+
if (unit === 'sats' || unit === 'satoshis') {
|
|
44
47
|
amountBch = amountBch / 1e8;
|
|
45
48
|
}
|
|
49
|
+
else if (unit === 'usd') {
|
|
50
|
+
usdPrice = await getBchUsdPrice(isChipnet);
|
|
51
|
+
if (usdPrice === null) {
|
|
52
|
+
console.log(chalk.red('\nError: Unable to fetch current BCH-USD price.\n'));
|
|
53
|
+
process.exit(1);
|
|
54
|
+
}
|
|
55
|
+
amountBch = amountBch / usdPrice;
|
|
56
|
+
}
|
|
46
57
|
else if (unit !== 'bch') {
|
|
47
|
-
console.log(chalk.red(
|
|
58
|
+
console.log(chalk.red("\nError: Currency must be 'bch', 'sats'/'satoshis', or 'usd'.\n"));
|
|
48
59
|
process.exit(1);
|
|
49
60
|
}
|
|
50
61
|
// ── Validate recipient address ───────────────────────────────────
|
|
@@ -61,7 +72,11 @@ export function registerSendCommand(program) {
|
|
|
61
72
|
// Use the first receiving address as change address (same as paytaca-app default)
|
|
62
73
|
const changeAddressSet = bchWallet.getAddressSetAt(0);
|
|
63
74
|
const changeAddress = changeAddressSet.change;
|
|
64
|
-
|
|
75
|
+
const bchFormatted = amountBch.toFixed(8).replace(/\.?0+$/, '');
|
|
76
|
+
console.log(`\n Sending ${chalk.bold(bchFormatted + ' BCH')}${usdPrice !== null ? chalk.dim(` (≈ ${formatUsd(amountBch * usdPrice)})`) : ''} on ${chalk.cyan(network)}`);
|
|
77
|
+
if (usdPrice !== null) {
|
|
78
|
+
console.log(chalk.dim(` Rate: 1 BCH = ${formatUsd(usdPrice)}`));
|
|
79
|
+
}
|
|
65
80
|
console.log(chalk.dim(` To: ${address}`));
|
|
66
81
|
console.log(chalk.dim(` Change: ${changeAddress}`));
|
|
67
82
|
console.log();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"send.js","sourceRoot":"","sources":["../../src/commands/send.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"send.js","sourceRoot":"","sources":["../../src/commands/send.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI command: swap <tokenId> <amount>
|
|
3
|
+
*
|
|
4
|
+
* Swap a CashToken against BCH through Cauldron pools.
|
|
5
|
+
*
|
|
6
|
+
* Two directions:
|
|
7
|
+
* - sell (default): sell tokens for BCH
|
|
8
|
+
* - buy: spend BCH to buy tokens
|
|
9
|
+
*
|
|
10
|
+
* Shows a quote (rate, amounts, trade fee), asks for confirmation, then
|
|
11
|
+
* builds + signs the trade transaction and broadcasts it.
|
|
12
|
+
*
|
|
13
|
+
* Cauldron is a liquidity protocol on Bitcoin Cash. Swaps execute against
|
|
14
|
+
* the active pools advertised by the riften indexer; the trade transaction
|
|
15
|
+
* is built with @cashlab/cauldron's ExchangeLab (libauth templates).
|
|
16
|
+
*/
|
|
17
|
+
import { Command } from 'commander';
|
|
18
|
+
export declare function registerSwapCommand(program: Command): void;
|
|
19
|
+
//# sourceMappingURL=swap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"swap.d.ts","sourceRoot":"","sources":["../../src/commands/swap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA4BnC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmH1D"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI command: swap <tokenId> <amount>
|
|
3
|
+
*
|
|
4
|
+
* Swap a CashToken against BCH through Cauldron pools.
|
|
5
|
+
*
|
|
6
|
+
* Two directions:
|
|
7
|
+
* - sell (default): sell tokens for BCH
|
|
8
|
+
* - buy: spend BCH to buy tokens
|
|
9
|
+
*
|
|
10
|
+
* Shows a quote (rate, amounts, trade fee), asks for confirmation, then
|
|
11
|
+
* builds + signs the trade transaction and broadcasts it.
|
|
12
|
+
*
|
|
13
|
+
* Cauldron is a liquidity protocol on Bitcoin Cash. Swaps execute against
|
|
14
|
+
* the active pools advertised by the riften indexer; the trade transaction
|
|
15
|
+
* is built with @cashlab/cauldron's ExchangeLab (libauth templates).
|
|
16
|
+
*/
|
|
17
|
+
import readline from 'readline';
|
|
18
|
+
import chalk from 'chalk';
|
|
19
|
+
import { loadWallet, loadMnemonic } from '../wallet/index.js';
|
|
20
|
+
import { BCH_DERIVATION_PATH } from '../utils/network.js';
|
|
21
|
+
import { executeSwap, estimateSwap, formatQuote, } from '../wallet/cauldron/swap.js';
|
|
22
|
+
import { fetchTokenData } from '../wallet/cauldron/api.js';
|
|
23
|
+
function promptConfirmation(message) {
|
|
24
|
+
const rl = readline.createInterface({
|
|
25
|
+
input: process.stdin,
|
|
26
|
+
output: process.stdout,
|
|
27
|
+
});
|
|
28
|
+
return new Promise((resolve) => {
|
|
29
|
+
rl.question(chalk.bold(`\n ${message} (y/N): `), (answer) => {
|
|
30
|
+
rl.close();
|
|
31
|
+
const confirmed = answer.toLowerCase() === 'y' || answer.toLowerCase() === 'yes';
|
|
32
|
+
resolve(confirmed);
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
export function registerSwapCommand(program) {
|
|
37
|
+
program
|
|
38
|
+
.command('swap')
|
|
39
|
+
.description('Swap a CashToken for BCH (sell) or BCH for a CashToken (buy)')
|
|
40
|
+
.argument('<tokenId>', '64-char hex token category to swap')
|
|
41
|
+
.argument('<amount>', 'Token amount (in the token\'s units)')
|
|
42
|
+
.option('--action <action>', 'Swap action: sell (token→BCH) or buy (BCH→token) (default: sell)', 'sell')
|
|
43
|
+
.option('--raw', 'Interpret <amount> as raw base units instead of decimal token units')
|
|
44
|
+
.option('--yes', 'Skip the confirmation prompt')
|
|
45
|
+
.option('--chipnet', 'Use chipnet (testnet) instead of mainnet')
|
|
46
|
+
.action(async (tokenId, amountStr, opts) => {
|
|
47
|
+
if (opts.chipnet) {
|
|
48
|
+
console.log(chalk.red('\nError: Cauldron swaps are not yet supported on chipnet.\n'));
|
|
49
|
+
process.exit(1);
|
|
50
|
+
}
|
|
51
|
+
const isChipnet = false;
|
|
52
|
+
const network = 'mainnet';
|
|
53
|
+
const direction = opts.action === 'buy' ? 'buy' : 'sell';
|
|
54
|
+
const data = loadMnemonic();
|
|
55
|
+
if (!data) {
|
|
56
|
+
console.log(chalk.red('\nNo wallet found. Run `paytaca wallet create` or `paytaca wallet import` first.\n'));
|
|
57
|
+
process.exit(1);
|
|
58
|
+
}
|
|
59
|
+
if (!/^[a-fA-F0-9]{64}$/.test(tokenId)) {
|
|
60
|
+
console.log(chalk.red('\nError: tokenId must be a 64-char hex token category.\n'));
|
|
61
|
+
process.exit(1);
|
|
62
|
+
}
|
|
63
|
+
const parsedAmount = parseFloat(amountStr);
|
|
64
|
+
if (isNaN(parsedAmount) || parsedAmount <= 0) {
|
|
65
|
+
console.log(chalk.red('\nError: Amount must be a positive number.\n'));
|
|
66
|
+
process.exit(1);
|
|
67
|
+
}
|
|
68
|
+
console.log(chalk.bold(`\n ${direction === 'buy' ? 'Buying' : 'Selling'} token on ${network}`));
|
|
69
|
+
console.log(chalk.dim(` Token: ${tokenId}`));
|
|
70
|
+
console.log();
|
|
71
|
+
try {
|
|
72
|
+
// Resolve token metadata for decimals + symbol
|
|
73
|
+
const tokenData = await fetchTokenData(tokenId);
|
|
74
|
+
if (!tokenData) {
|
|
75
|
+
console.log(chalk.red('\nError: No cauldron token data found for this token.\n'));
|
|
76
|
+
process.exit(1);
|
|
77
|
+
}
|
|
78
|
+
const decimals = tokenData.bcmr.token.decimals;
|
|
79
|
+
const symbol = tokenData.bcmr.token.symbol || tokenData.display_symbol;
|
|
80
|
+
// Convert decimal amount to base units
|
|
81
|
+
const amount = opts.raw
|
|
82
|
+
? BigInt(parsedAmount)
|
|
83
|
+
: BigInt(Math.round(parsedAmount * 10 ** decimals));
|
|
84
|
+
// Show quote first
|
|
85
|
+
const quote = await estimateSwap({ tokenId, direction, amount });
|
|
86
|
+
console.log(chalk.cyan(' Quote:'));
|
|
87
|
+
for (const line of formatQuote(quote).split('\n')) {
|
|
88
|
+
console.log(` ${line}`);
|
|
89
|
+
}
|
|
90
|
+
console.log();
|
|
91
|
+
if (!opts.yes) {
|
|
92
|
+
const confirmed = await promptConfirmation('Confirm swap?');
|
|
93
|
+
if (!confirmed) {
|
|
94
|
+
console.log(chalk.yellow(' Swap cancelled.\n'));
|
|
95
|
+
process.exit(0);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
const w = loadWallet();
|
|
99
|
+
const bchWallet = w.forNetwork(isChipnet);
|
|
100
|
+
const result = await executeSwap({
|
|
101
|
+
tokenId,
|
|
102
|
+
direction,
|
|
103
|
+
amount,
|
|
104
|
+
bchWallet,
|
|
105
|
+
mnemonic: data.mnemonic,
|
|
106
|
+
derivationPath: BCH_DERIVATION_PATH,
|
|
107
|
+
});
|
|
108
|
+
if (result.success) {
|
|
109
|
+
console.log(chalk.green('\n Swap successful!\n'));
|
|
110
|
+
if (result.txid) {
|
|
111
|
+
console.log(` txid: ${result.txid}`);
|
|
112
|
+
const explorer = isChipnet
|
|
113
|
+
? 'https://chipnet.chaingraph.cash/tx/'
|
|
114
|
+
: 'https://bchexplorer.info/tx/';
|
|
115
|
+
console.log(chalk.dim(` ${explorer}${result.txid}`));
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
console.log(chalk.red(`\n Swap failed: ${result.error || 'Unknown error'}\n`));
|
|
120
|
+
process.exit(1);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
catch (err) {
|
|
124
|
+
console.log(chalk.red(`\n Error: ${err.message || err}\n`));
|
|
125
|
+
process.exit(1);
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=swap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"swap.js","sourceRoot":"","sources":["../../src/commands/swap.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../src/commands/token.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../src/commands/token.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA2BnC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgjB5D"}
|