neutron-cli 0.2.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.
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +7 -14
- package/dist/client.js.map +1 -1
- package/dist/commands/address.d.ts +3 -0
- package/dist/commands/address.d.ts.map +1 -0
- package/dist/commands/address.js +74 -0
- package/dist/commands/address.js.map +1 -0
- package/dist/commands/fiat.d.ts +3 -0
- package/dist/commands/fiat.d.ts.map +1 -0
- package/dist/commands/fiat.js +121 -0
- package/dist/commands/fiat.js.map +1 -0
- package/dist/commands/send.d.ts.map +1 -1
- package/dist/commands/send.js +87 -11
- package/dist/commands/send.js.map +1 -1
- package/dist/commands/swap.d.ts +3 -0
- package/dist/commands/swap.d.ts.map +1 -0
- package/dist/commands/swap.js +76 -0
- package/dist/commands/swap.js.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAMtC,UAAU,MAAM;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAoED,wBAAsB,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAYlD;AAID,wBAAsB,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,CAMlD"}
|
package/dist/client.js
CHANGED
|
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.loadConfig = loadConfig;
|
|
4
4
|
exports.getClient = getClient;
|
|
5
5
|
const fs_1 = require("fs");
|
|
6
|
-
const readline_1 = require("readline");
|
|
7
6
|
const os_1 = require("os");
|
|
8
7
|
const path_1 = require("path");
|
|
9
8
|
const neutron_sdk_1 = require("neutron-sdk");
|
|
@@ -31,7 +30,7 @@ function saveConfigFile(cfg) {
|
|
|
31
30
|
(0, fs_1.chmodSync)(CONFIG_PATH, 0o600);
|
|
32
31
|
(0, fs_1.chmodSync)(CONFIG_DIR, 0o700);
|
|
33
32
|
}
|
|
34
|
-
function
|
|
33
|
+
function promptMasked(question) {
|
|
35
34
|
return new Promise((resolve) => {
|
|
36
35
|
process.stdout.write(question);
|
|
37
36
|
let input = "";
|
|
@@ -46,13 +45,13 @@ function promptHidden(question) {
|
|
|
46
45
|
resolve(input);
|
|
47
46
|
}
|
|
48
47
|
else if (ch === "\u0003") {
|
|
48
|
+
process.stdout.write("\n");
|
|
49
49
|
process.exit();
|
|
50
50
|
}
|
|
51
|
-
else if (ch === "\u007f") {
|
|
52
|
-
|
|
51
|
+
else if (ch === "\u007f" || ch === "\b") {
|
|
52
|
+
// backspace — silently remove last char, no visual change
|
|
53
|
+
if (input.length > 0)
|
|
53
54
|
input = input.slice(0, -1);
|
|
54
|
-
process.stdout.write("\b \b");
|
|
55
|
-
}
|
|
56
55
|
}
|
|
57
56
|
else {
|
|
58
57
|
input += ch;
|
|
@@ -62,22 +61,16 @@ function promptHidden(question) {
|
|
|
62
61
|
process.stdin.on("data", handler);
|
|
63
62
|
});
|
|
64
63
|
}
|
|
65
|
-
function promptLine(question) {
|
|
66
|
-
return new Promise((resolve) => {
|
|
67
|
-
const rl = (0, readline_1.createInterface)({ input: process.stdin, output: process.stdout });
|
|
68
|
-
rl.question(question, (ans) => { rl.close(); resolve(ans.trim()); });
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
64
|
async function runFirstTimeSetup() {
|
|
72
65
|
console.log("\n" + output_js_1.chalk.bold.cyan("⚡ Welcome to Neutron CLI"));
|
|
73
66
|
console.log(output_js_1.chalk.dim(" No credentials found. Let's set them up.\n"));
|
|
74
67
|
console.log(output_js_1.chalk.dim(" Get your API key at: ") + output_js_1.chalk.cyan.underline("https://portal.neutron.me") + "\n");
|
|
75
|
-
const apiKey = await
|
|
68
|
+
const apiKey = await promptMasked(output_js_1.chalk.bold(" API Key: "));
|
|
76
69
|
if (!apiKey) {
|
|
77
70
|
console.error(output_js_1.chalk.red(" API key is required."));
|
|
78
71
|
process.exit(1);
|
|
79
72
|
}
|
|
80
|
-
const apiSecret = await
|
|
73
|
+
const apiSecret = await promptMasked(output_js_1.chalk.bold(" API Secret: "));
|
|
81
74
|
if (!apiSecret) {
|
|
82
75
|
console.error(output_js_1.chalk.red(" API secret is required."));
|
|
83
76
|
process.exit(1);
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"address.d.ts","sourceRoot":"","sources":["../../src/commands/address.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoEtD"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.registerAddress = registerAddress;
|
|
4
|
+
const client_js_1 = require("../client.js");
|
|
5
|
+
const output_js_1 = require("../output.js");
|
|
6
|
+
function registerAddress(program) {
|
|
7
|
+
const addressCmd = program
|
|
8
|
+
.command("address")
|
|
9
|
+
.description("Get deposit addresses for your account");
|
|
10
|
+
addressCmd
|
|
11
|
+
.command("btc")
|
|
12
|
+
.description("Get your Bitcoin on-chain deposit address")
|
|
13
|
+
.option("--json", "Output raw JSON (for scripts/agents)")
|
|
14
|
+
.action(async (opts) => {
|
|
15
|
+
try {
|
|
16
|
+
const client = await (0, client_js_1.getClient)();
|
|
17
|
+
const spinner = (0, output_js_1.isPretty)(opts) ? (0, output_js_1.spin)("Fetching BTC address...") : null;
|
|
18
|
+
const result = await client.account.btcAddress();
|
|
19
|
+
spinner?.succeed(output_js_1.chalk.green("Address loaded"));
|
|
20
|
+
if ((0, output_js_1.isPretty)(opts)) {
|
|
21
|
+
(0, output_js_1.header)("Bitcoin Deposit Address (On-chain)");
|
|
22
|
+
(0, output_js_1.kv)("Address:", output_js_1.chalk.bold.yellow(result.address));
|
|
23
|
+
(0, output_js_1.kv)("Network:", "Bitcoin Mainnet");
|
|
24
|
+
console.log();
|
|
25
|
+
console.log(output_js_1.chalk.dim(" 💡 This is a static, reusable address for your account."));
|
|
26
|
+
console.log(output_js_1.chalk.dim(" Scan or paste into any Bitcoin wallet to deposit."));
|
|
27
|
+
console.log();
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
(0, output_js_1.ok)({ address: result.address, network: "BTC" });
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
catch (e) {
|
|
34
|
+
(0, output_js_1.fail)(e?.message ?? "Failed to fetch BTC address", "ADDRESS_ERROR");
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
addressCmd
|
|
38
|
+
.command("usdt")
|
|
39
|
+
.description("Get your USDT deposit address")
|
|
40
|
+
.option("--chain <chain>", "Blockchain network (TRON or ETH)", "TRON")
|
|
41
|
+
.option("--json", "Output raw JSON (for scripts/agents)")
|
|
42
|
+
.action(async (opts) => {
|
|
43
|
+
try {
|
|
44
|
+
const chain = opts.chain.toUpperCase();
|
|
45
|
+
if (chain !== "TRON" && chain !== "ETH") {
|
|
46
|
+
(0, output_js_1.fail)(`Invalid chain "${opts.chain}". Use TRON or ETH.`, "INVALID_CHAIN");
|
|
47
|
+
}
|
|
48
|
+
const client = await (0, client_js_1.getClient)();
|
|
49
|
+
const spinner = (0, output_js_1.isPretty)(opts) ? (0, output_js_1.spin)(`Fetching USDT address (${chain})...`) : null;
|
|
50
|
+
const result = await client.account.usdtAddress(chain);
|
|
51
|
+
spinner?.succeed(output_js_1.chalk.green("Address loaded"));
|
|
52
|
+
if ((0, output_js_1.isPretty)(opts)) {
|
|
53
|
+
(0, output_js_1.header)(`USDT Deposit Address (${result.chain})`);
|
|
54
|
+
(0, output_js_1.kv)("Address:", output_js_1.chalk.bold.yellow(result.address));
|
|
55
|
+
(0, output_js_1.kv)("Network:", result.chain);
|
|
56
|
+
(0, output_js_1.kv)("Currency:", "USDT (Tether)");
|
|
57
|
+
console.log();
|
|
58
|
+
const feeNote = result.chain === "TRON"
|
|
59
|
+
? "💡 TRON recommended — low fees and fast confirmations."
|
|
60
|
+
: "💡 ETH network — higher gas fees, use for large amounts only.";
|
|
61
|
+
console.log(output_js_1.chalk.dim(` ${feeNote}`));
|
|
62
|
+
console.log(output_js_1.chalk.dim(" This is a static, reusable address for your account."));
|
|
63
|
+
console.log();
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
(0, output_js_1.ok)({ address: result.address, chain: result.chain, currency: "USDT" });
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
catch (e) {
|
|
70
|
+
(0, output_js_1.fail)(e?.message ?? "Failed to fetch USDT address", "ADDRESS_ERROR");
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=address.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"address.js","sourceRoot":"","sources":["../../src/commands/address.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fiat.d.ts","sourceRoot":"","sources":["../../src/commands/fiat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsHnD"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.registerFiat = registerFiat;
|
|
4
|
+
const client_js_1 = require("../client.js");
|
|
5
|
+
const output_js_1 = require("../output.js");
|
|
6
|
+
const KYC_PORTAL_URL = "https://portal.neutron.me";
|
|
7
|
+
function registerFiat(program) {
|
|
8
|
+
const fiatCmd = program
|
|
9
|
+
.command("fiat")
|
|
10
|
+
.description("Fiat payout operations");
|
|
11
|
+
fiatCmd
|
|
12
|
+
.command("institutions")
|
|
13
|
+
.description("List banks and financial institutions for a country")
|
|
14
|
+
.requiredOption("--country <code>", "Country code (e.g., VN, PH, TH)")
|
|
15
|
+
.option("--json", "Output raw JSON (for scripts/agents)")
|
|
16
|
+
.action(async (opts) => {
|
|
17
|
+
try {
|
|
18
|
+
const country = opts.country.toUpperCase();
|
|
19
|
+
const client = await (0, client_js_1.getClient)();
|
|
20
|
+
const spinner = (0, output_js_1.isPretty)(opts) ? (0, output_js_1.spin)(`Fetching banks for ${country}...`) : null;
|
|
21
|
+
const institutions = await client.fiat.institutions(country);
|
|
22
|
+
spinner?.succeed(output_js_1.chalk.green(`Found ${institutions.length} institutions`));
|
|
23
|
+
if ((0, output_js_1.isPretty)(opts)) {
|
|
24
|
+
(0, output_js_1.header)(`Banks & Institutions (${country})`);
|
|
25
|
+
if (institutions.length === 0) {
|
|
26
|
+
console.log(output_js_1.chalk.dim(" No institutions found for this country."));
|
|
27
|
+
console.log();
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
const table = new output_js_1.Table({
|
|
31
|
+
head: [output_js_1.chalk.cyan("Code"), output_js_1.chalk.cyan("Name")],
|
|
32
|
+
style: { head: [], border: ["dim"] },
|
|
33
|
+
});
|
|
34
|
+
for (const inst of institutions) {
|
|
35
|
+
table.push([output_js_1.chalk.bold(inst.code), inst.name]);
|
|
36
|
+
}
|
|
37
|
+
console.log(table.toString());
|
|
38
|
+
console.log(output_js_1.chalk.dim(`\n Use the code with: neutron-cli fiat payout --bank-code <code>\n`));
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
(0, output_js_1.ok)({ country, institutions });
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
catch (e) {
|
|
45
|
+
(0, output_js_1.fail)(e?.message ?? "Failed to fetch institutions", "FIAT_ERROR");
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
fiatCmd
|
|
49
|
+
.command("payout")
|
|
50
|
+
.description("Create a fiat payout to a bank account")
|
|
51
|
+
.requiredOption("--amount <btc>", "Amount in BTC (e.g., 0.001)")
|
|
52
|
+
.requiredOption("--from <currency>", "Source currency (e.g., BTC)")
|
|
53
|
+
.requiredOption("--to <currency>", "Destination fiat currency (e.g., VND)")
|
|
54
|
+
.requiredOption("--method <method>", "Payment method (e.g., vnd-instant)")
|
|
55
|
+
.requiredOption("--bank-account <number>", "Bank account number")
|
|
56
|
+
.requiredOption("--bank-code <code>", "Bank/institution code")
|
|
57
|
+
.requiredOption("--recipient <name>", "Recipient legal full name")
|
|
58
|
+
.requiredOption("--country <code>", "Recipient country code (e.g., VN)")
|
|
59
|
+
.option("--json", "Output raw JSON (for scripts/agents)")
|
|
60
|
+
.action(async (opts) => {
|
|
61
|
+
try {
|
|
62
|
+
const client = await (0, client_js_1.getClient)();
|
|
63
|
+
const spinner = (0, output_js_1.isPretty)(opts) ? (0, output_js_1.spin)("Checking account...") : null;
|
|
64
|
+
// KYC check — fiat payouts require verification
|
|
65
|
+
const account = await client.account.get();
|
|
66
|
+
const kycStatus = account.kycStatus ?? account.accountStatus ?? account.kycVerified ?? account.status;
|
|
67
|
+
// KYC is verified if status is "verified" or similar positive states
|
|
68
|
+
const isKycVerified = kycStatus === "verified" || kycStatus === "kyc_verified" || kycStatus === "active";
|
|
69
|
+
if (!isKycVerified) {
|
|
70
|
+
spinner?.stop();
|
|
71
|
+
console.log();
|
|
72
|
+
(0, output_js_1.warn)("Fiat payouts require KYC verification.");
|
|
73
|
+
console.log(output_js_1.chalk.dim(" Please complete KYC at: ") + output_js_1.chalk.cyan.underline(KYC_PORTAL_URL));
|
|
74
|
+
console.log(output_js_1.chalk.dim(" (Bitcoin, USDT, and Lightning payments don't require KYC)"));
|
|
75
|
+
console.log();
|
|
76
|
+
process.exit(1);
|
|
77
|
+
}
|
|
78
|
+
if (spinner)
|
|
79
|
+
spinner.text = "Creating payout...";
|
|
80
|
+
const sourceAmount = parseFloat(opts.amount);
|
|
81
|
+
const sourceCcy = opts.from.toUpperCase();
|
|
82
|
+
const destCcy = opts.to.toUpperCase();
|
|
83
|
+
const destMethod = opts.method.toLowerCase();
|
|
84
|
+
const countryCode = opts.country.toUpperCase();
|
|
85
|
+
const txn = await client.fiat.payout({
|
|
86
|
+
sourceCcy,
|
|
87
|
+
sourceAmount,
|
|
88
|
+
destCcy,
|
|
89
|
+
destMethod,
|
|
90
|
+
bankAcctNum: opts.bankAccount,
|
|
91
|
+
institutionCode: opts.bankCode,
|
|
92
|
+
recipientName: opts.recipient,
|
|
93
|
+
countryCode,
|
|
94
|
+
});
|
|
95
|
+
const txnId = txn.txnId ?? txn.id;
|
|
96
|
+
if (spinner)
|
|
97
|
+
spinner.text = "Confirming payout...";
|
|
98
|
+
const confirmed = await client.transactions.confirm(txnId);
|
|
99
|
+
spinner?.succeed(output_js_1.chalk.green("Payout submitted"));
|
|
100
|
+
if ((0, output_js_1.isPretty)(opts)) {
|
|
101
|
+
(0, output_js_1.header)("Fiat Payout Submitted");
|
|
102
|
+
(0, output_js_1.kv)("Transaction ID:", output_js_1.chalk.bold(txnId));
|
|
103
|
+
(0, output_js_1.kv)("Status:", output_js_1.chalk.green(confirmed.txnState ?? confirmed.status ?? "Processing"));
|
|
104
|
+
(0, output_js_1.kv)("Amount Sent:", output_js_1.chalk.yellow(`${sourceAmount} ${sourceCcy}`));
|
|
105
|
+
if (txn.fxRate) {
|
|
106
|
+
(0, output_js_1.kv)("Exchange Rate:", txn.fxRate.toString());
|
|
107
|
+
}
|
|
108
|
+
(0, output_js_1.kv)("Destination:", `${destCcy} → ${opts.recipient}`);
|
|
109
|
+
(0, output_js_1.kv)("Bank:", opts.bankCode);
|
|
110
|
+
console.log();
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
(0, output_js_1.ok)({ txnId, status: confirmed.txnState ?? confirmed.status, transaction: confirmed });
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
catch (e) {
|
|
117
|
+
(0, output_js_1.fail)(e?.message ?? "Fiat payout failed", "PAYOUT_ERROR");
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=fiat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fiat.js","sourceRoot":"","sources":["../../src/commands/fiat.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../src/commands/send.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../src/commands/send.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkCpC,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8FnD"}
|
package/dist/commands/send.js
CHANGED
|
@@ -3,31 +3,107 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.registerSend = registerSend;
|
|
4
4
|
const client_js_1 = require("../client.js");
|
|
5
5
|
const output_js_1 = require("../output.js");
|
|
6
|
+
/** Detect payment type from the destination address/invoice */
|
|
7
|
+
function detectPaymentType(to) {
|
|
8
|
+
const normalized = to.trim().toLowerCase();
|
|
9
|
+
// Lightning invoice
|
|
10
|
+
if (normalized.startsWith("lnbc") || normalized.startsWith("lntb")) {
|
|
11
|
+
return { method: "lightning", ccy: "BTC" };
|
|
12
|
+
}
|
|
13
|
+
// Bitcoin on-chain addresses
|
|
14
|
+
// Legacy (1...), P2SH (3...), Bech32/Bech32m (bc1...)
|
|
15
|
+
if (/^1[a-km-zA-HJ-NP-Z1-9]{25,34}$/.test(to) ||
|
|
16
|
+
/^3[a-km-zA-HJ-NP-Z1-9]{25,34}$/.test(to) ||
|
|
17
|
+
/^bc1[ac-hj-np-zAC-HJ-NP-Z02-9]{8,87}$/i.test(to)) {
|
|
18
|
+
return { method: "on-chain", ccy: "BTC" };
|
|
19
|
+
}
|
|
20
|
+
// USDT on TRON (T...) or ETH (0x...) - will be validated by currency flag
|
|
21
|
+
if (/^T[A-Za-z1-9]{33}$/.test(to)) {
|
|
22
|
+
return { method: "tron", ccy: "USDT" };
|
|
23
|
+
}
|
|
24
|
+
if (/^0x[a-fA-F0-9]{40}$/.test(to)) {
|
|
25
|
+
return { method: "eth", ccy: "USDT" };
|
|
26
|
+
}
|
|
27
|
+
// Unknown format
|
|
28
|
+
return { method: "unknown", ccy: "UNKNOWN" };
|
|
29
|
+
}
|
|
6
30
|
function registerSend(program) {
|
|
7
31
|
program
|
|
8
32
|
.command("send")
|
|
9
|
-
.description("Send a Lightning
|
|
10
|
-
.requiredOption("--to <
|
|
11
|
-
.requiredOption("--amount <
|
|
12
|
-
.option("--currency <currency>", "Source wallet currency", "btc")
|
|
33
|
+
.description("Send a payment (Lightning, BTC on-chain, or USDT)")
|
|
34
|
+
.requiredOption("--to <address>", "Destination address or Lightning invoice")
|
|
35
|
+
.requiredOption("--amount <number>", "Amount (sats for BTC/ Lightning, units for USDT)")
|
|
36
|
+
.option("--currency <currency>", "Source wallet currency (default: auto-detect)", "btc")
|
|
37
|
+
.option("--chain <chain>", "Chain for USDT (TRON or ETH)", "TRON")
|
|
13
38
|
.option("--json", "Output raw JSON (for scripts/agents)")
|
|
14
39
|
.action(async (opts) => {
|
|
15
40
|
try {
|
|
41
|
+
const to = opts.to.trim();
|
|
42
|
+
const amount = parseFloat(opts.amount);
|
|
43
|
+
const detected = detectPaymentType(to);
|
|
44
|
+
// Validate detection
|
|
45
|
+
if (detected.method === "unknown") {
|
|
46
|
+
(0, output_js_1.fail)(`Unrecognized address format: "${to.substring(0, 20)}..."\n` +
|
|
47
|
+
` Supported formats:\n` +
|
|
48
|
+
` - Lightning: lnbc...\n` +
|
|
49
|
+
` - BTC on-chain: 1..., 3..., bc1...\n` +
|
|
50
|
+
` - USDT (TRON): T...\n` +
|
|
51
|
+
` - USDT (ETH): 0x...`, "INVALID_ADDRESS");
|
|
52
|
+
}
|
|
16
53
|
const client = await (0, client_js_1.getClient)();
|
|
17
|
-
const spinner = (0, output_js_1.isPretty)(opts) ? (0, output_js_1.spin)(
|
|
54
|
+
const spinner = (0, output_js_1.isPretty)(opts) ? (0, output_js_1.spin)(`Preparing ${detected.method} payment...`) : null;
|
|
55
|
+
// Build transaction based on payment type
|
|
56
|
+
let sourceCcy = opts.currency.toUpperCase();
|
|
57
|
+
let destReq;
|
|
58
|
+
let sourceAmount = amount;
|
|
59
|
+
if (detected.method === "lightning") {
|
|
60
|
+
// Lightning payment
|
|
61
|
+
sourceAmount = sourceCcy === "BTC" ? amount / 1e8 : amount;
|
|
62
|
+
destReq = {
|
|
63
|
+
ccy: "BTC",
|
|
64
|
+
method: "lightning",
|
|
65
|
+
reqDetails: { paymentRequest: to }
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
else if (detected.method === "on-chain") {
|
|
69
|
+
// BTC on-chain
|
|
70
|
+
sourceCcy = "BTC";
|
|
71
|
+
sourceAmount = amount / 1e8; // Convert sats to BTC
|
|
72
|
+
destReq = {
|
|
73
|
+
ccy: "BTC",
|
|
74
|
+
method: "on-chain",
|
|
75
|
+
reqDetails: { address: to }
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
else if (detected.method === "tron" || detected.method === "eth") {
|
|
79
|
+
// USDT on TRON or ETH
|
|
80
|
+
sourceCcy = "USDT";
|
|
81
|
+
destReq = {
|
|
82
|
+
ccy: "USDT",
|
|
83
|
+
method: detected.method,
|
|
84
|
+
reqDetails: { address: to }
|
|
85
|
+
};
|
|
86
|
+
}
|
|
18
87
|
const txn = await client.transactions.create({
|
|
19
|
-
sourceReq: { ccy:
|
|
20
|
-
destReq
|
|
88
|
+
sourceReq: { ccy: sourceCcy, method: "neutronpay", amtRequested: sourceAmount },
|
|
89
|
+
destReq,
|
|
21
90
|
});
|
|
91
|
+
const txnId = txn.txnId ?? txn.id;
|
|
22
92
|
if (spinner)
|
|
23
93
|
spinner.text = "Confirming payment...";
|
|
24
|
-
const confirmed = await client.transactions.confirm(
|
|
94
|
+
const confirmed = await client.transactions.confirm(txnId);
|
|
25
95
|
spinner?.succeed(output_js_1.chalk.green("Payment sent"));
|
|
26
96
|
if ((0, output_js_1.isPretty)(opts)) {
|
|
27
97
|
(0, output_js_1.header)("Payment Sent");
|
|
28
|
-
(0, output_js_1.kv)("ID:", confirmed.txnId ?? confirmed.id ??
|
|
29
|
-
|
|
30
|
-
|
|
98
|
+
(0, output_js_1.kv)("ID:", confirmed.txnId ?? confirmed.id ?? txnId);
|
|
99
|
+
// Format amount display
|
|
100
|
+
const amtDisplay = detected.ccy === "BTC"
|
|
101
|
+
? `${amount.toLocaleString()} sats`
|
|
102
|
+
: `${amount.toLocaleString()} ${detected.ccy}`;
|
|
103
|
+
(0, output_js_1.kv)("Amount:", output_js_1.chalk.yellow(amtDisplay));
|
|
104
|
+
(0, output_js_1.kv)("Method:", detected.method);
|
|
105
|
+
(0, output_js_1.kv)("To:", to.length > 40 ? to.substring(0, 40) + "..." : to);
|
|
106
|
+
(0, output_js_1.kv)("Status:", output_js_1.chalk.green(confirmed.txnState ?? confirmed.status ?? "Sent"));
|
|
31
107
|
console.log();
|
|
32
108
|
}
|
|
33
109
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"send.js","sourceRoot":"","sources":["../../src/commands/send.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"send.js","sourceRoot":"","sources":["../../src/commands/send.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"swap.d.ts","sourceRoot":"","sources":["../../src/commands/swap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4EnD"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.registerSwap = registerSwap;
|
|
4
|
+
const client_js_1 = require("../client.js");
|
|
5
|
+
const output_js_1 = require("../output.js");
|
|
6
|
+
function registerSwap(program) {
|
|
7
|
+
program
|
|
8
|
+
.command("swap")
|
|
9
|
+
.description("Convert between currencies (BTC ↔ USDT)")
|
|
10
|
+
.requiredOption("--from <currency>", "Source currency (e.g., BTC, USDT)")
|
|
11
|
+
.requiredOption("--to <currency>", "Destination currency (e.g., USDT, BTC)")
|
|
12
|
+
.requiredOption("--amount <number>", "Amount in source units (sats for BTC, units for USDT)")
|
|
13
|
+
.option("--json", "Output raw JSON (for scripts/agents)")
|
|
14
|
+
.action(async (opts) => {
|
|
15
|
+
try {
|
|
16
|
+
const sourceCcy = opts.from.toUpperCase();
|
|
17
|
+
const destCcy = opts.to.toUpperCase();
|
|
18
|
+
const amount = parseFloat(opts.amount);
|
|
19
|
+
if (sourceCcy === destCcy) {
|
|
20
|
+
(0, output_js_1.fail)("Source and destination currencies must be different", "SWAP_ERROR");
|
|
21
|
+
}
|
|
22
|
+
// For BTC, amount is in satoshis; convert to BTC for API
|
|
23
|
+
const sourceAmount = sourceCcy === "BTC" ? amount / 1e8 : amount;
|
|
24
|
+
const client = await (0, client_js_1.getClient)();
|
|
25
|
+
const spinner = (0, output_js_1.isPretty)(opts) ? (0, output_js_1.spin)(`Creating ${sourceCcy} → ${destCcy} swap...`) : null;
|
|
26
|
+
const txn = await client.transactions.create({
|
|
27
|
+
sourceReq: { ccy: sourceCcy, method: "neutronpay", amtRequested: sourceAmount },
|
|
28
|
+
destReq: { ccy: destCcy, method: "neutronpay" },
|
|
29
|
+
});
|
|
30
|
+
const txnId = txn.txnId ?? txn.id;
|
|
31
|
+
const fxRate = txn.fxRate;
|
|
32
|
+
if (spinner)
|
|
33
|
+
spinner.text = "Confirming swap...";
|
|
34
|
+
const confirmed = await client.transactions.confirm(txnId);
|
|
35
|
+
spinner?.succeed(output_js_1.chalk.green("Swap completed"));
|
|
36
|
+
if ((0, output_js_1.isPretty)(opts)) {
|
|
37
|
+
(0, output_js_1.header)("Currency Swap Completed");
|
|
38
|
+
(0, output_js_1.kv)("Transaction ID:", output_js_1.chalk.bold(txnId));
|
|
39
|
+
(0, output_js_1.kv)("Status:", output_js_1.chalk.green(confirmed.txnState ?? confirmed.status ?? "Completed"));
|
|
40
|
+
// Display amounts nicely
|
|
41
|
+
const srcDisplay = sourceCcy === "BTC"
|
|
42
|
+
? `${amount.toLocaleString()} sats`
|
|
43
|
+
: `${amount.toLocaleString()} ${sourceCcy}`;
|
|
44
|
+
(0, output_js_1.kv)("Amount Sent:", output_js_1.chalk.yellow(srcDisplay));
|
|
45
|
+
if (fxRate) {
|
|
46
|
+
(0, output_js_1.kv)("Exchange Rate:", `${fxRate} ${sourceCcy}/${destCcy}`);
|
|
47
|
+
}
|
|
48
|
+
// Calculate received amount if we have the rate
|
|
49
|
+
if (fxRate && sourceCcy === "BTC" && destCcy === "USDT") {
|
|
50
|
+
const received = (amount / 1e8) * fxRate;
|
|
51
|
+
(0, output_js_1.kv)("Amount Received:", output_js_1.chalk.green(`${received.toLocaleString(undefined, { maximumFractionDigits: 2 })} ${destCcy}`));
|
|
52
|
+
}
|
|
53
|
+
else if (fxRate && sourceCcy === "USDT" && destCcy === "BTC") {
|
|
54
|
+
const received = (amount / fxRate) * 1e8;
|
|
55
|
+
(0, output_js_1.kv)("Amount Received:", output_js_1.chalk.green(`${Math.floor(received).toLocaleString()} sats`));
|
|
56
|
+
}
|
|
57
|
+
console.log();
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
(0, output_js_1.ok)({
|
|
61
|
+
txnId,
|
|
62
|
+
status: confirmed.txnState ?? confirmed.status,
|
|
63
|
+
sourceCcy,
|
|
64
|
+
destCcy,
|
|
65
|
+
sourceAmount: amount,
|
|
66
|
+
fxRate,
|
|
67
|
+
transaction: confirmed
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
catch (e) {
|
|
72
|
+
(0, output_js_1.fail)(e?.message ?? "Swap failed", "SWAP_ERROR");
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
//# 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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"}
|
package/dist/index.js
CHANGED
|
@@ -12,6 +12,9 @@ const rate_js_1 = require("./commands/rate.js");
|
|
|
12
12
|
const webhook_js_1 = require("./commands/webhook.js");
|
|
13
13
|
const update_js_1 = require("./commands/update.js");
|
|
14
14
|
const config_js_1 = require("./commands/config.js");
|
|
15
|
+
const address_js_1 = require("./commands/address.js");
|
|
16
|
+
const fiat_js_1 = require("./commands/fiat.js");
|
|
17
|
+
const swap_js_1 = require("./commands/swap.js");
|
|
15
18
|
const program = new commander_1.Command();
|
|
16
19
|
program
|
|
17
20
|
.name("neutron-cli")
|
|
@@ -26,6 +29,9 @@ program
|
|
|
26
29
|
(0, rate_js_1.registerRate)(program);
|
|
27
30
|
(0, webhook_js_1.registerWebhook)(program);
|
|
28
31
|
(0, update_js_1.registerUpdate)(program);
|
|
32
|
+
(0, address_js_1.registerAddress)(program);
|
|
33
|
+
(0, fiat_js_1.registerFiat)(program);
|
|
34
|
+
(0, swap_js_1.registerSwap)(program);
|
|
29
35
|
(0, update_check_js_1.checkForUpdate)(); // non-blocking, fires in background
|
|
30
36
|
program.parseAsync(process.argv).catch((e) => {
|
|
31
37
|
process.stderr.write(JSON.stringify({ error: e?.message ?? "Unknown error", code: "FATAL" }) + "\n");
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AACA,yCAAoC;AACpC,uDAAmD;AACnD,gDAAkD;AAClD,sDAAwD;AACxD,sDAAwD;AACxD,gDAAkD;AAClD,4CAA8C;AAC9C,gDAAkD;AAClD,sDAAwD;AACxD,oDAAsD;AACtD,oDAAsD;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AACA,yCAAoC;AACpC,uDAAmD;AACnD,gDAAkD;AAClD,sDAAwD;AACxD,sDAAwD;AACxD,gDAAkD;AAClD,4CAA8C;AAC9C,gDAAkD;AAClD,sDAAwD;AACxD,oDAAsD;AACtD,oDAAsD;AACtD,sDAAwD;AACxD,gDAAkD;AAClD,gDAAkD;AAElD,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,aAAa,CAAC;KACnB,WAAW,CAAC,iEAAiE,CAAC;KAC9E,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,CAAC;AAE/C,IAAA,0BAAc,EAAC,OAAO,CAAC,CAAC;AACxB,IAAA,sBAAY,EAAC,OAAO,CAAC,CAAC;AACtB,IAAA,4BAAe,EAAC,OAAO,CAAC,CAAC;AACzB,IAAA,4BAAe,EAAC,OAAO,CAAC,CAAC;AACzB,IAAA,sBAAY,EAAC,OAAO,CAAC,CAAC;AACtB,IAAA,kBAAU,EAAC,OAAO,CAAC,CAAC;AACpB,IAAA,sBAAY,EAAC,OAAO,CAAC,CAAC;AACtB,IAAA,4BAAe,EAAC,OAAO,CAAC,CAAC;AACzB,IAAA,0BAAc,EAAC,OAAO,CAAC,CAAC;AACxB,IAAA,4BAAe,EAAC,OAAO,CAAC,CAAC;AACzB,IAAA,sBAAY,EAAC,OAAO,CAAC,CAAC;AACtB,IAAA,sBAAY,EAAC,OAAO,CAAC,CAAC;AAEtB,IAAA,gCAAc,GAAE,CAAC,CAAC,oCAAoC;AAEtD,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;IAC3C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,IAAI,eAAe,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IACrG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|