starkfi 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.
- package/LICENSE +1 -1
- package/MCP.md +292 -0
- package/README.md +424 -54
- package/dist/commands/auth/login.js +2 -2
- package/dist/commands/auth/login.js.map +1 -1
- package/dist/commands/auth/verify.d.ts.map +1 -1
- package/dist/commands/auth/verify.js +2 -2
- package/dist/commands/auth/verify.js.map +1 -1
- package/dist/commands/batch/batch.d.ts +3 -0
- package/dist/commands/batch/batch.d.ts.map +1 -0
- package/dist/commands/batch/batch.js +155 -0
- package/dist/commands/batch/batch.js.map +1 -0
- package/dist/commands/chain/tx-status.js +2 -2
- package/dist/commands/chain/tx-status.js.map +1 -1
- package/dist/commands/config/config.d.ts.map +1 -1
- package/dist/commands/config/config.js +23 -34
- package/dist/commands/config/config.js.map +1 -1
- package/dist/commands/lending/lending.d.ts +1 -0
- package/dist/commands/lending/lending.d.ts.map +1 -1
- package/dist/commands/lending/lending.js +197 -51
- package/dist/commands/lending/lending.js.map +1 -1
- package/dist/commands/portfolio/portfolio.d.ts +3 -0
- package/dist/commands/portfolio/portfolio.d.ts.map +1 -0
- package/dist/commands/portfolio/portfolio.js +76 -0
- package/dist/commands/portfolio/portfolio.js.map +1 -0
- package/dist/commands/staking/staking.d.ts +1 -1
- package/dist/commands/staking/staking.d.ts.map +1 -1
- package/dist/commands/staking/staking.js +144 -61
- package/dist/commands/staking/staking.js.map +1 -1
- package/dist/commands/trade/multi-swap.d.ts +3 -0
- package/dist/commands/trade/multi-swap.d.ts.map +1 -0
- package/dist/commands/trade/multi-swap.js +141 -0
- package/dist/commands/trade/multi-swap.js.map +1 -0
- package/dist/commands/trade/status.js +2 -2
- package/dist/commands/trade/status.js.map +1 -1
- package/dist/commands/trade/swap.d.ts.map +1 -1
- package/dist/commands/trade/swap.js +48 -12
- package/dist/commands/trade/swap.js.map +1 -1
- package/dist/commands/wallet/balance.d.ts.map +1 -1
- package/dist/commands/wallet/balance.js +20 -3
- package/dist/commands/wallet/balance.js.map +1 -1
- package/dist/commands/wallet/deploy.d.ts.map +1 -1
- package/dist/commands/wallet/deploy.js +2 -1
- package/dist/commands/wallet/deploy.js.map +1 -1
- package/dist/commands/wallet/send.d.ts.map +1 -1
- package/dist/commands/wallet/send.js +46 -9
- package/dist/commands/wallet/send.js.map +1 -1
- package/dist/index.js +162 -9
- package/dist/index.js.map +1 -1
- package/dist/lib/banner.d.ts +6 -0
- package/dist/lib/banner.d.ts.map +1 -0
- package/dist/lib/banner.js +78 -0
- package/dist/lib/banner.js.map +1 -0
- package/dist/lib/concurrency.d.ts +2 -0
- package/dist/lib/concurrency.d.ts.map +1 -0
- package/dist/lib/concurrency.js +21 -0
- package/dist/lib/concurrency.js.map +1 -0
- package/dist/lib/config.d.ts +0 -11
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +0 -20
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/errors.d.ts +2 -0
- package/dist/lib/errors.d.ts.map +1 -1
- package/dist/lib/errors.js +2 -0
- package/dist/lib/errors.js.map +1 -1
- package/dist/lib/fetch.d.ts +4 -0
- package/dist/lib/fetch.d.ts.map +1 -0
- package/dist/lib/fetch.js +13 -0
- package/dist/lib/fetch.js.map +1 -0
- package/dist/lib/format.d.ts +12 -2
- package/dist/lib/format.d.ts.map +1 -1
- package/dist/lib/format.js +86 -23
- package/dist/lib/format.js.map +1 -1
- package/dist/lib/retry.d.ts +8 -0
- package/dist/lib/retry.d.ts.map +1 -0
- package/dist/lib/retry.js +25 -0
- package/dist/lib/retry.js.map +1 -0
- package/dist/lib/types.d.ts +6 -0
- package/dist/lib/types.d.ts.map +1 -0
- package/dist/lib/types.js +2 -0
- package/dist/lib/types.js.map +1 -0
- package/dist/lib/validation.d.ts +0 -12
- package/dist/lib/validation.d.ts.map +1 -1
- package/dist/lib/validation.js +1 -23
- package/dist/lib/validation.js.map +1 -1
- package/dist/mcp/handlers/batch.d.ts +13 -0
- package/dist/mcp/handlers/batch.d.ts.map +1 -0
- package/dist/mcp/handlers/batch.js +33 -0
- package/dist/mcp/handlers/batch.js.map +1 -0
- package/dist/mcp/handlers/config.d.ts +1 -1
- package/dist/mcp/handlers/config.d.ts.map +1 -1
- package/dist/mcp/handlers/config.js +11 -12
- package/dist/mcp/handlers/config.js.map +1 -1
- package/dist/mcp/handlers/index.d.ts +3 -0
- package/dist/mcp/handlers/index.d.ts.map +1 -1
- package/dist/mcp/handlers/index.js +3 -0
- package/dist/mcp/handlers/index.js.map +1 -1
- package/dist/mcp/handlers/lending.d.ts +12 -1
- package/dist/mcp/handlers/lending.d.ts.map +1 -1
- package/dist/mcp/handlers/lending.js +67 -23
- package/dist/mcp/handlers/lending.js.map +1 -1
- package/dist/mcp/handlers/multi-swap.d.ts +27 -0
- package/dist/mcp/handlers/multi-swap.d.ts.map +1 -0
- package/dist/mcp/handlers/multi-swap.js +73 -0
- package/dist/mcp/handlers/multi-swap.js.map +1 -0
- package/dist/mcp/handlers/portfolio.d.ts +7 -0
- package/dist/mcp/handlers/portfolio.d.ts.map +1 -0
- package/dist/mcp/handlers/portfolio.js +11 -0
- package/dist/mcp/handlers/portfolio.js.map +1 -0
- package/dist/mcp/handlers/staking.d.ts +13 -1
- package/dist/mcp/handlers/staking.d.ts.map +1 -1
- package/dist/mcp/handlers/staking.js +18 -5
- package/dist/mcp/handlers/staking.js.map +1 -1
- package/dist/mcp/handlers/trade.d.ts +1 -0
- package/dist/mcp/handlers/trade.d.ts.map +1 -1
- package/dist/mcp/handlers/trade.js +27 -13
- package/dist/mcp/handlers/trade.js.map +1 -1
- package/dist/mcp/handlers/wallet.d.ts +1 -0
- package/dist/mcp/handlers/wallet.d.ts.map +1 -1
- package/dist/mcp/handlers/wallet.js +24 -5
- package/dist/mcp/handlers/wallet.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +45 -4
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools/auth.d.ts +3 -0
- package/dist/mcp/tools/auth.d.ts.map +1 -0
- package/dist/mcp/tools/auth.js +17 -0
- package/dist/mcp/tools/auth.js.map +1 -0
- package/dist/mcp/tools/error-handling.d.ts +12 -0
- package/dist/mcp/tools/error-handling.d.ts.map +1 -0
- package/dist/mcp/tools/error-handling.js +28 -0
- package/dist/mcp/tools/error-handling.js.map +1 -0
- package/dist/mcp/tools/index.d.ts +11 -0
- package/dist/mcp/tools/index.d.ts.map +1 -0
- package/dist/mcp/tools/index.js +19 -0
- package/dist/mcp/tools/index.js.map +1 -0
- package/dist/mcp/tools/lending.d.ts +3 -0
- package/dist/mcp/tools/lending.d.ts.map +1 -0
- package/dist/mcp/tools/lending.js +71 -0
- package/dist/mcp/tools/lending.js.map +1 -0
- package/dist/mcp/tools/staking.d.ts +3 -0
- package/dist/mcp/tools/staking.d.ts.map +1 -0
- package/dist/mcp/tools/staking.js +50 -0
- package/dist/mcp/tools/staking.js.map +1 -0
- package/dist/mcp/tools/trade.d.ts +3 -0
- package/dist/mcp/tools/trade.d.ts.map +1 -0
- package/dist/mcp/tools/trade.js +63 -0
- package/dist/mcp/tools/trade.js.map +1 -0
- package/dist/mcp/tools/wallet.d.ts +3 -0
- package/dist/mcp/tools/wallet.d.ts.map +1 -0
- package/dist/mcp/tools/wallet.js +27 -0
- package/dist/mcp/tools/wallet.js.map +1 -0
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +125 -41
- package/dist/mcp/tools.js.map +1 -1
- package/dist/services/api/client.d.ts +0 -12
- package/dist/services/api/client.d.ts.map +1 -1
- package/dist/services/api/client.js +7 -16
- package/dist/services/api/client.js.map +1 -1
- package/dist/services/auth/session.d.ts +1 -7
- package/dist/services/auth/session.d.ts.map +1 -1
- package/dist/services/auth/session.js +21 -0
- package/dist/services/auth/session.js.map +1 -1
- package/dist/services/batch/batch.d.ts +35 -0
- package/dist/services/batch/batch.d.ts.map +1 -0
- package/dist/services/batch/batch.js +110 -0
- package/dist/services/batch/batch.js.map +1 -0
- package/dist/services/config/config.d.ts +3 -0
- package/dist/services/config/config.d.ts.map +1 -1
- package/dist/services/config/config.js +30 -1
- package/dist/services/config/config.js.map +1 -1
- package/dist/services/fibrous/config.d.ts +4 -0
- package/dist/services/fibrous/config.d.ts.map +1 -0
- package/dist/services/fibrous/config.js +4 -0
- package/dist/services/fibrous/config.js.map +1 -0
- package/dist/services/fibrous/health.js +1 -1
- package/dist/services/fibrous/health.js.map +1 -1
- package/dist/services/fibrous/route.d.ts +15 -6
- package/dist/services/fibrous/route.d.ts.map +1 -1
- package/dist/services/fibrous/route.js +64 -3
- package/dist/services/fibrous/route.js.map +1 -1
- package/dist/services/portfolio/portfolio.d.ts +31 -0
- package/dist/services/portfolio/portfolio.d.ts.map +1 -0
- package/dist/services/portfolio/portfolio.js +104 -0
- package/dist/services/portfolio/portfolio.js.map +1 -0
- package/dist/services/simulate/simulate.d.ts +10 -0
- package/dist/services/simulate/simulate.d.ts.map +1 -0
- package/dist/services/simulate/simulate.js +57 -0
- package/dist/services/simulate/simulate.js.map +1 -0
- package/dist/services/staking/staking.d.ts +9 -30
- package/dist/services/staking/staking.d.ts.map +1 -1
- package/dist/services/staking/staking.js +44 -52
- package/dist/services/staking/staking.js.map +1 -1
- package/dist/services/starkzap/client.d.ts +2 -1
- package/dist/services/starkzap/client.d.ts.map +1 -1
- package/dist/services/starkzap/client.js +39 -21
- package/dist/services/starkzap/client.js.map +1 -1
- package/dist/services/starkzap/config.d.ts +6 -0
- package/dist/services/starkzap/config.d.ts.map +1 -0
- package/dist/services/starkzap/config.js +13 -0
- package/dist/services/starkzap/config.js.map +1 -0
- package/dist/services/tokens/balances.d.ts.map +1 -1
- package/dist/services/tokens/balances.js +8 -8
- package/dist/services/tokens/balances.js.map +1 -1
- package/dist/services/tokens/tokens.d.ts +2 -3
- package/dist/services/tokens/tokens.d.ts.map +1 -1
- package/dist/services/tokens/tokens.js +3 -8
- package/dist/services/tokens/tokens.js.map +1 -1
- package/dist/services/vesu/api.d.ts +28 -0
- package/dist/services/vesu/api.d.ts.map +1 -0
- package/dist/services/vesu/api.js +91 -0
- package/dist/services/vesu/api.js.map +1 -0
- package/dist/services/vesu/config.d.ts +9 -0
- package/dist/services/vesu/config.d.ts.map +1 -0
- package/dist/services/vesu/config.js +32 -0
- package/dist/services/vesu/config.js.map +1 -0
- package/dist/services/vesu/index.d.ts +2 -0
- package/dist/services/vesu/index.d.ts.map +1 -1
- package/dist/services/vesu/index.js +2 -0
- package/dist/services/vesu/index.js.map +1 -1
- package/dist/services/vesu/lending.d.ts +9 -5
- package/dist/services/vesu/lending.d.ts.map +1 -1
- package/dist/services/vesu/lending.js +176 -60
- package/dist/services/vesu/lending.js.map +1 -1
- package/dist/services/vesu/pools.d.ts +6 -12
- package/dist/services/vesu/pools.d.ts.map +1 -1
- package/dist/services/vesu/pools.js +11 -31
- package/dist/services/vesu/pools.js.map +1 -1
- package/package.json +88 -82
- package/skills/README.md +59 -0
- package/skills/authenticate-wallet/SKILL.md +119 -0
- package/skills/balance/SKILL.md +80 -0
- package/skills/batch/SKILL.md +118 -0
- package/skills/config/SKILL.md +144 -0
- package/skills/lending/SKILL.md +209 -0
- package/skills/multi-swap/SKILL.md +95 -0
- package/skills/portfolio/SKILL.md +82 -0
- package/skills/send/SKILL.md +82 -0
- package/skills/staking/SKILL.md +188 -0
- package/skills/trade/SKILL.md +92 -0
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import { requireSession } from "../../services/auth/session.js";
|
|
2
|
+
import { initSDKAndWallet } from "../../services/starkzap/client.js";
|
|
3
|
+
import { buildBatch } from "../../services/batch/batch.js";
|
|
4
|
+
import { simulateTransaction } from "../../services/simulate/simulate.js";
|
|
5
|
+
import { createSpinner, formatResult, formatError } from "../../lib/format.js";
|
|
6
|
+
import { ErrorCode, StarkfiError } from "../../lib/errors.js";
|
|
7
|
+
/** Collect repeatable options into array. */
|
|
8
|
+
function collect(value, previous) {
|
|
9
|
+
return previous.concat([value]);
|
|
10
|
+
}
|
|
11
|
+
/** Parse "100 USDC ETH" into a typed BatchOperation. */
|
|
12
|
+
function parseOperation(type, raw) {
|
|
13
|
+
const parts = raw.trim().split(/\s+/);
|
|
14
|
+
switch (type) {
|
|
15
|
+
case "swap": {
|
|
16
|
+
if (parts.length < 3) {
|
|
17
|
+
throw new StarkfiError(ErrorCode.INVALID_AMOUNT, `Invalid --swap format: "${raw}". Expected: "100 USDC ETH"`);
|
|
18
|
+
}
|
|
19
|
+
return {
|
|
20
|
+
type: "swap",
|
|
21
|
+
params: { amount: parts[0], from_token: parts[1], to_token: parts[2] },
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
case "stake": {
|
|
25
|
+
if (parts.length < 2) {
|
|
26
|
+
throw new StarkfiError(ErrorCode.INVALID_AMOUNT, `Invalid --stake format: "${raw}". Expected: "50 STRK karnot" or "50 STRK 0xPool"`);
|
|
27
|
+
}
|
|
28
|
+
const target = parts[2];
|
|
29
|
+
const isAddress = target?.startsWith("0x");
|
|
30
|
+
return {
|
|
31
|
+
type: "stake",
|
|
32
|
+
params: {
|
|
33
|
+
amount: parts[0],
|
|
34
|
+
token: parts[1],
|
|
35
|
+
...(isAddress ? { pool: target } : { validator: target }),
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
case "supply": {
|
|
40
|
+
if (parts.length < 3) {
|
|
41
|
+
throw new StarkfiError(ErrorCode.INVALID_AMOUNT, `Invalid --supply format: "${raw}". Expected: "200 USDC 0xPool"`);
|
|
42
|
+
}
|
|
43
|
+
return {
|
|
44
|
+
type: "supply",
|
|
45
|
+
params: { amount: parts[0], token: parts[1], pool: parts[2] },
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
case "send": {
|
|
49
|
+
if (parts.length < 3) {
|
|
50
|
+
throw new StarkfiError(ErrorCode.INVALID_AMOUNT, `Invalid --send format: "${raw}". Expected: "10 STRK 0x04a3..."`);
|
|
51
|
+
}
|
|
52
|
+
return {
|
|
53
|
+
type: "send",
|
|
54
|
+
params: { amount: parts[0], token: parts[1], to: parts[2] },
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
default:
|
|
58
|
+
throw new StarkfiError(ErrorCode.INVALID_CONFIG, `Unknown operation type: ${type}`);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
export function registerBatchCommand(program) {
|
|
62
|
+
program
|
|
63
|
+
.command("batch")
|
|
64
|
+
.description("Execute multiple DeFi operations in a single Starknet transaction (multicall)")
|
|
65
|
+
.option("--swap <args>", 'Swap tokens: "100 USDC ETH" (repeatable)', collect, [])
|
|
66
|
+
.option("--stake <args>", 'Stake tokens: "50 STRK karnot" (repeatable)', collect, [])
|
|
67
|
+
.option("--supply <args>", 'Supply to Vesu: "200 USDC 0xPool" (repeatable)', collect, [])
|
|
68
|
+
.option("--send <args>", 'Send tokens: "10 STRK 0xAddr" (repeatable)', collect, [])
|
|
69
|
+
.option("--simulate", "Estimate fees and validate without executing")
|
|
70
|
+
.option("--json", "Output raw JSON")
|
|
71
|
+
.addHelpText("after", `
|
|
72
|
+
Examples:
|
|
73
|
+
$ starkfi batch --swap "0.1 ETH USDC" --stake "50 STRK karnot"
|
|
74
|
+
$ starkfi batch --swap "100 USDC ETH" --supply "200 USDC 0xABC" --simulate
|
|
75
|
+
|
|
76
|
+
Flag formats:
|
|
77
|
+
--swap "<amount> <from> <to>" e.g. "0.5 ETH USDC"
|
|
78
|
+
--stake "<amount> <token> <validator>" e.g. "50 STRK karnot"
|
|
79
|
+
--supply "<amount> <token> <pool>" e.g. "200 USDC 0xABC..."
|
|
80
|
+
--send "<amount> <token> <address>" e.g. "10 STRK 0x04a3..."
|
|
81
|
+
|
|
82
|
+
Minimum 2 operations required. Each flag can be repeated.`)
|
|
83
|
+
.action(async (opts) => {
|
|
84
|
+
const spinner = createSpinner("Preparing batch...").start();
|
|
85
|
+
try {
|
|
86
|
+
const operations = [
|
|
87
|
+
...opts.swap.map((s) => parseOperation("swap", s)),
|
|
88
|
+
...opts.stake.map((s) => parseOperation("stake", s)),
|
|
89
|
+
...opts.supply.map((s) => parseOperation("supply", s)),
|
|
90
|
+
...opts.send.map((s) => parseOperation("send", s)),
|
|
91
|
+
];
|
|
92
|
+
if (operations.length < 2) {
|
|
93
|
+
throw new StarkfiError(ErrorCode.INVALID_AMOUNT, "Batch requires at least 2 operations. Provide multiple --swap/--stake/--supply/--send options.");
|
|
94
|
+
}
|
|
95
|
+
const session = requireSession();
|
|
96
|
+
const { wallet } = await initSDKAndWallet(session);
|
|
97
|
+
await wallet.ensureReady({ deploy: "if_needed" });
|
|
98
|
+
spinner.text = "Building batch transaction...";
|
|
99
|
+
const { builder, summary } = await buildBatch(wallet, session, operations);
|
|
100
|
+
spinner.stop();
|
|
101
|
+
console.log("\n Batch Operations:\n");
|
|
102
|
+
summary.forEach((s, i) => console.log(` ${i + 1}. ${s}`));
|
|
103
|
+
console.log();
|
|
104
|
+
if (opts.simulate) {
|
|
105
|
+
spinner.start();
|
|
106
|
+
spinner.text = "Simulating batch...";
|
|
107
|
+
const sim = await simulateTransaction(builder);
|
|
108
|
+
if (sim.success) {
|
|
109
|
+
spinner.succeed("Simulation complete");
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
spinner.fail("Simulation failed");
|
|
113
|
+
}
|
|
114
|
+
const simResult = {
|
|
115
|
+
mode: "SIMULATION (no TX sent)",
|
|
116
|
+
operations: operations.length,
|
|
117
|
+
estimatedFee: sim.estimatedFee,
|
|
118
|
+
estimatedFeeUsd: sim.estimatedFeeUsd,
|
|
119
|
+
calls: sim.callCount,
|
|
120
|
+
...(sim.revertReason ? { revertReason: sim.revertReason } : {}),
|
|
121
|
+
};
|
|
122
|
+
if (opts.json) {
|
|
123
|
+
console.log(JSON.stringify(simResult, null, 2));
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
console.log(formatResult(simResult));
|
|
127
|
+
}
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
spinner.start();
|
|
131
|
+
spinner.text = "Executing batch...";
|
|
132
|
+
const tx = await builder.send();
|
|
133
|
+
spinner.text = "Waiting for confirmation...";
|
|
134
|
+
await tx.wait();
|
|
135
|
+
spinner.succeed("Batch confirmed");
|
|
136
|
+
const txResult = {
|
|
137
|
+
operations: operations.length,
|
|
138
|
+
txHash: tx.hash,
|
|
139
|
+
explorer: tx.explorerUrl,
|
|
140
|
+
};
|
|
141
|
+
if (opts.json) {
|
|
142
|
+
console.log(JSON.stringify(txResult, null, 2));
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
console.log(formatResult(txResult));
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
catch (error) {
|
|
149
|
+
spinner.fail("Batch failed");
|
|
150
|
+
console.error(formatError(error));
|
|
151
|
+
process.exit(1);
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=batch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batch.js","sourceRoot":"","sources":["../../../src/commands/batch/batch.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { requireSession } from "../../services/auth/session.js";
|
|
2
2
|
import { createSDK } from "../../services/starkzap/client.js";
|
|
3
3
|
import { ConfigService } from "../../services/config/config.js";
|
|
4
|
-
import { createSpinner, formatResult } from "../../lib/format.js";
|
|
4
|
+
import { createSpinner, formatResult, formatError } from "../../lib/format.js";
|
|
5
5
|
import { explorerUrl } from "../../lib/config.js";
|
|
6
6
|
export function registerTxStatusCommand(program) {
|
|
7
7
|
program
|
|
@@ -31,7 +31,7 @@ export function registerTxStatusCommand(program) {
|
|
|
31
31
|
}
|
|
32
32
|
catch (error) {
|
|
33
33
|
spinner.fail("Failed to get transaction status");
|
|
34
|
-
console.error(error
|
|
34
|
+
console.error(formatError(error));
|
|
35
35
|
process.exit(1);
|
|
36
36
|
}
|
|
37
37
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tx-status.js","sourceRoot":"","sources":["../../../src/commands/chain/tx-status.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"tx-status.js","sourceRoot":"","sources":["../../../src/commands/chain/tx-status.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,MAAM,UAAU,uBAAuB,CAAC,OAAgB;IACvD,OAAO;SACL,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CAAC,kCAAkC,CAAC;SAC/C,QAAQ,CAAC,QAAQ,EAAE,0BAA0B,CAAC;SAC9C,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,EAAE;QAC9B,MAAM,OAAO,GAAG,aAAa,CAAC,yBAAyB,CAAC,CAAC,KAAK,EAAE,CAAC;QAEjE,IAAI,CAAC;YACJ,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;YACjC,MAAM,aAAa,GAAG,aAAa,CAAC,WAAW,EAAE,CAAC;YAClD,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAuB,CAAC;YACjE,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAE/C,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;YACnC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;YAE3D,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;YAErC,MAAM,SAAS,GAAG,YAAY,IAAI,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YAC/E,MAAM,WAAW,GAChB,cAAc,IAAI,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAEtE,OAAO,CAAC,GAAG,CACV,YAAY,CAAC;gBACZ,IAAI;gBACJ,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC;gBAC7C,SAAS;gBACT,WAAW;gBACX,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,QAAQ,EAAE,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC;aAC5C,CAAC,CACF,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;YACjD,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;IACF,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/commands/config/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/commands/config/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2I5D"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { ConfigService } from "../../services/config/config.js";
|
|
2
2
|
import { success, formatResult, warn } from "../../lib/format.js";
|
|
3
|
-
import { GASLESS_SUPPORTED_TOKENS } from "../../
|
|
3
|
+
import { GASLESS_SUPPORTED_TOKENS } from "../../services/starkzap/config.js";
|
|
4
4
|
export function registerConfigCommand(program) {
|
|
5
5
|
const configCmd = program.command("config").description("Manage starkfi configuration");
|
|
6
6
|
configCmd
|
|
7
7
|
.command("set-rpc")
|
|
8
|
-
.description("Set custom RPC URL for Starknet")
|
|
9
|
-
.argument("<url>", "RPC URL")
|
|
8
|
+
.description("Set a custom RPC URL for Starknet")
|
|
9
|
+
.argument("<url>", "RPC endpoint URL")
|
|
10
|
+
.addHelpText("after", "\nExample:\n $ starkfi config set-rpc https://starknet-mainnet.g.alchemy.com/v2/<key>")
|
|
10
11
|
.action((url) => {
|
|
11
12
|
const configService = ConfigService.getInstance();
|
|
12
13
|
configService.set("rpcUrl", url);
|
|
@@ -14,7 +15,8 @@ export function registerConfigCommand(program) {
|
|
|
14
15
|
});
|
|
15
16
|
configCmd
|
|
16
17
|
.command("get-rpc")
|
|
17
|
-
.description("Show current RPC URL")
|
|
18
|
+
.description("Show the current RPC URL")
|
|
19
|
+
.addHelpText("after", "\nExample:\n $ starkfi config get-rpc")
|
|
18
20
|
.action(() => {
|
|
19
21
|
const configService = ConfigService.getInstance();
|
|
20
22
|
const rpcUrl = configService.get("rpcUrl");
|
|
@@ -26,6 +28,7 @@ export function registerConfigCommand(program) {
|
|
|
26
28
|
.command("set-network")
|
|
27
29
|
.description("Set default network (mainnet or sepolia)")
|
|
28
30
|
.argument("<network>", "mainnet or sepolia")
|
|
31
|
+
.addHelpText("after", "\nExamples:\n $ starkfi config set-network mainnet\n $ starkfi config set-network sepolia")
|
|
29
32
|
.action((network) => {
|
|
30
33
|
if (!["mainnet", "sepolia"].includes(network)) {
|
|
31
34
|
console.log(warn("Network must be 'mainnet' or 'sepolia'"));
|
|
@@ -35,11 +38,12 @@ export function registerConfigCommand(program) {
|
|
|
35
38
|
configService.set("network", network);
|
|
36
39
|
console.log(success(`Network set to: ${network}`));
|
|
37
40
|
});
|
|
38
|
-
// Gasfree mode: developer sponsors gas via
|
|
41
|
+
// Gasfree mode: developer sponsors gas via Paymaster API key
|
|
39
42
|
configCmd
|
|
40
43
|
.command("set-gasfree")
|
|
41
|
-
.description("Enable/disable Gasfree mode — developer sponsors
|
|
44
|
+
.description("Enable/disable Gasfree mode — developer sponsors gas via Paymaster")
|
|
42
45
|
.argument("<mode>", "on or off")
|
|
46
|
+
.addHelpText("after", "\nNote:\n Gasfree and Gasless modes are mutually exclusive.\n Enabling gasfree clears any gas token setting.\n\nExamples:\n $ starkfi config set-gasfree on\n $ starkfi config set-gasfree off")
|
|
43
47
|
.action((mode) => {
|
|
44
48
|
if (!["on", "off"].includes(mode)) {
|
|
45
49
|
console.log(warn("Mode must be 'on' or 'off'"));
|
|
@@ -50,39 +54,23 @@ export function registerConfigCommand(program) {
|
|
|
50
54
|
if (mode === "on") {
|
|
51
55
|
// Gasfree and Gasless are mutually exclusive
|
|
52
56
|
configService.delete("gasToken");
|
|
53
|
-
console.log(success("Gasfree mode: on (developer sponsors gas via
|
|
57
|
+
console.log(success("Gasfree mode: on (developer sponsors gas via Paymaster)"));
|
|
54
58
|
}
|
|
55
59
|
else {
|
|
56
|
-
console.log(success("Gasfree mode: off"));
|
|
60
|
+
console.log(success("Gasfree mode: off — using gasless mode (default: STRK)"));
|
|
57
61
|
}
|
|
58
62
|
});
|
|
59
|
-
//
|
|
60
|
-
configCmd
|
|
61
|
-
.command("set-gasless", { hidden: true })
|
|
62
|
-
.description("Alias for set-gasfree (deprecated)")
|
|
63
|
-
.argument("<mode>", "on or off")
|
|
64
|
-
.action((mode) => {
|
|
65
|
-
if (!["on", "off"].includes(mode)) {
|
|
66
|
-
console.log(warn("Mode must be 'on' or 'off'"));
|
|
67
|
-
process.exit(1);
|
|
68
|
-
}
|
|
69
|
-
const configService = ConfigService.getInstance();
|
|
70
|
-
configService.set("gasfreeMode", mode === "on");
|
|
71
|
-
if (mode === "on")
|
|
72
|
-
configService.delete("gasToken");
|
|
73
|
-
console.log(warn("Hint: 'set-gasless' is deprecated. Use 'starkfi config set-gasfree' instead."));
|
|
74
|
-
console.log(success(`Gasfree mode: ${mode}`));
|
|
75
|
-
});
|
|
76
|
-
// Gasless mode: user pays gas in a non-STRK token
|
|
63
|
+
// Gas token selection: default is STRK, user can switch to any supported token
|
|
77
64
|
configCmd
|
|
78
65
|
.command("set-gas-token")
|
|
79
|
-
.description(`Set gas payment token
|
|
80
|
-
.argument("<token>", `Token symbol or '
|
|
66
|
+
.description(`Set gas payment token via Paymaster (default: STRK, supported: ${GASLESS_SUPPORTED_TOKENS.join(", ")})`)
|
|
67
|
+
.argument("<token>", `Token symbol or 'reset' (supported: ${GASLESS_SUPPORTED_TOKENS.join(", ")})`)
|
|
68
|
+
.addHelpText("after", `\nExamples:\n $ starkfi config set-gas-token ETH\n $ starkfi config set-gas-token USDC\n $ starkfi config set-gas-token reset # revert to STRK`)
|
|
81
69
|
.action((token) => {
|
|
82
70
|
const configService = ConfigService.getInstance();
|
|
83
|
-
if (token.toLowerCase()
|
|
71
|
+
if (["off", "reset", "default"].includes(token.toLowerCase())) {
|
|
84
72
|
configService.delete("gasToken");
|
|
85
|
-
console.log(success("
|
|
73
|
+
console.log(success("Gas token reset to default: STRK"));
|
|
86
74
|
return;
|
|
87
75
|
}
|
|
88
76
|
const upper = token.toUpperCase();
|
|
@@ -93,11 +81,12 @@ export function registerConfigCommand(program) {
|
|
|
93
81
|
// Gasless and Gasfree are mutually exclusive
|
|
94
82
|
configService.delete("gasfreeMode");
|
|
95
83
|
configService.set("gasToken", upper);
|
|
96
|
-
console.log(success(`
|
|
84
|
+
console.log(success(`Gas token set to: ${upper} — gas will be paid in ${upper} via Paymaster`));
|
|
97
85
|
});
|
|
98
86
|
configCmd
|
|
99
87
|
.command("list")
|
|
100
88
|
.description("Show all configuration settings")
|
|
89
|
+
.addHelpText("after", "\nExample:\n $ starkfi config list")
|
|
101
90
|
.action(() => {
|
|
102
91
|
const configService = ConfigService.getInstance();
|
|
103
92
|
const all = configService.getAll();
|
|
@@ -108,11 +97,11 @@ export function registerConfigCommand(program) {
|
|
|
108
97
|
// Human-readable fee mode summary
|
|
109
98
|
const gasfreeMode = all.gasfreeMode === true;
|
|
110
99
|
const gasToken = all.gasToken;
|
|
111
|
-
let feeModeSummary = "
|
|
100
|
+
let feeModeSummary = "gasless (pays STRK via Paymaster)";
|
|
112
101
|
if (gasfreeMode)
|
|
113
|
-
feeModeSummary = "gasfree (developer-sponsored via
|
|
102
|
+
feeModeSummary = "gasfree (developer-sponsored via Paymaster)";
|
|
114
103
|
else if (gasToken)
|
|
115
|
-
feeModeSummary = `gasless (
|
|
104
|
+
feeModeSummary = `gasless (pays ${gasToken} via Paymaster)`;
|
|
116
105
|
console.log(formatResult({
|
|
117
106
|
...all,
|
|
118
107
|
feeMode: feeModeSummary,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/commands/config/config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/commands/config/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,5 +4,6 @@ export declare function registerLendSupplyCommand(program: Command): void;
|
|
|
4
4
|
export declare function registerLendWithdrawCommand(program: Command): void;
|
|
5
5
|
export declare function registerLendBorrowCommand(program: Command): void;
|
|
6
6
|
export declare function registerLendRepayCommand(program: Command): void;
|
|
7
|
+
export declare function registerLendCloseCommand(program: Command): void;
|
|
7
8
|
export declare function registerLendStatusCommand(program: Command): void;
|
|
8
9
|
//# sourceMappingURL=lending.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lending.d.ts","sourceRoot":"","sources":["../../../src/commands/lending/lending.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"lending.d.ts","sourceRoot":"","sources":["../../../src/commands/lending/lending.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0CzC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmH/D;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAyChE;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAyClE;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA0EhE;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8C/D;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8C/D;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4FhE"}
|