starkfi 0.1.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 +21 -0
- package/README.md +83 -0
- package/dist/commands/auth/import.d.ts +3 -0
- package/dist/commands/auth/import.d.ts.map +1 -0
- package/dist/commands/auth/import.js +56 -0
- package/dist/commands/auth/import.js.map +1 -0
- package/dist/commands/auth/login.d.ts +3 -0
- package/dist/commands/auth/login.d.ts.map +1 -0
- package/dist/commands/auth/login.js +23 -0
- package/dist/commands/auth/login.js.map +1 -0
- package/dist/commands/auth/logout.d.ts +3 -0
- package/dist/commands/auth/logout.d.ts.map +1 -0
- package/dist/commands/auth/logout.js +14 -0
- package/dist/commands/auth/logout.js.map +1 -0
- package/dist/commands/auth/verify.d.ts +3 -0
- package/dist/commands/auth/verify.d.ts.map +1 -0
- package/dist/commands/auth/verify.js +64 -0
- package/dist/commands/auth/verify.js.map +1 -0
- package/dist/commands/chain/tx-status.d.ts +3 -0
- package/dist/commands/chain/tx-status.d.ts.map +1 -0
- package/dist/commands/chain/tx-status.js +39 -0
- package/dist/commands/chain/tx-status.js.map +1 -0
- package/dist/commands/config/config.d.ts +3 -0
- package/dist/commands/config/config.d.ts.map +1 -0
- package/dist/commands/config/config.js +122 -0
- package/dist/commands/config/config.js.map +1 -0
- package/dist/commands/lending/lending.d.ts +8 -0
- package/dist/commands/lending/lending.d.ts.map +1 -0
- package/dist/commands/lending/lending.js +201 -0
- package/dist/commands/lending/lending.js.map +1 -0
- package/dist/commands/staking/staking.d.ts +8 -0
- package/dist/commands/staking/staking.d.ts.map +1 -0
- package/dist/commands/staking/staking.js +272 -0
- package/dist/commands/staking/staking.js.map +1 -0
- package/dist/commands/trade/status.d.ts +3 -0
- package/dist/commands/trade/status.d.ts.map +1 -0
- package/dist/commands/trade/status.js +41 -0
- package/dist/commands/trade/status.js.map +1 -0
- package/dist/commands/trade/swap.d.ts +3 -0
- package/dist/commands/trade/swap.d.ts.map +1 -0
- package/dist/commands/trade/swap.js +65 -0
- package/dist/commands/trade/swap.js.map +1 -0
- package/dist/commands/wallet/address.d.ts +3 -0
- package/dist/commands/wallet/address.d.ts.map +1 -0
- package/dist/commands/wallet/address.js +20 -0
- package/dist/commands/wallet/address.js.map +1 -0
- package/dist/commands/wallet/balance.d.ts +3 -0
- package/dist/commands/wallet/balance.d.ts.map +1 -0
- package/dist/commands/wallet/balance.js +46 -0
- package/dist/commands/wallet/balance.js.map +1 -0
- package/dist/commands/wallet/deploy.d.ts +3 -0
- package/dist/commands/wallet/deploy.d.ts.map +1 -0
- package/dist/commands/wallet/deploy.js +73 -0
- package/dist/commands/wallet/deploy.js.map +1 -0
- package/dist/commands/wallet/send.d.ts +3 -0
- package/dist/commands/wallet/send.d.ts.map +1 -0
- package/dist/commands/wallet/send.js +51 -0
- package/dist/commands/wallet/send.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +62 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/cache.d.ts +3 -0
- package/dist/lib/cache.d.ts.map +1 -0
- package/dist/lib/cache.js +33 -0
- package/dist/lib/cache.js.map +1 -0
- package/dist/lib/command.d.ts +3 -0
- package/dist/lib/command.d.ts.map +1 -0
- package/dist/lib/command.js +6 -0
- package/dist/lib/command.js.map +1 -0
- package/dist/lib/config.d.ts +16 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +30 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/errors.d.ts +39 -0
- package/dist/lib/errors.d.ts.map +1 -0
- package/dist/lib/errors.js +45 -0
- package/dist/lib/errors.js.map +1 -0
- package/dist/lib/format.d.ts +10 -0
- package/dist/lib/format.d.ts.map +1 -0
- package/dist/lib/format.js +45 -0
- package/dist/lib/format.js.map +1 -0
- package/dist/lib/validation.d.ts +14 -0
- package/dist/lib/validation.d.ts.map +1 -0
- package/dist/lib/validation.js +28 -0
- package/dist/lib/validation.js.map +1 -0
- package/dist/mcp/handlers/auth.d.ts +7 -0
- package/dist/mcp/handlers/auth.d.ts.map +1 -0
- package/dist/mcp/handlers/auth.js +22 -0
- package/dist/mcp/handlers/auth.js.map +1 -0
- package/dist/mcp/handlers/config.d.ts +10 -0
- package/dist/mcp/handlers/config.d.ts.map +1 -0
- package/dist/mcp/handlers/config.js +79 -0
- package/dist/mcp/handlers/config.js.map +1 -0
- package/dist/mcp/handlers/index.d.ts +7 -0
- package/dist/mcp/handlers/index.d.ts.map +1 -0
- package/dist/mcp/handlers/index.js +7 -0
- package/dist/mcp/handlers/index.js.map +1 -0
- package/dist/mcp/handlers/lending.d.ts +62 -0
- package/dist/mcp/handlers/lending.d.ts.map +1 -0
- package/dist/mcp/handlers/lending.js +101 -0
- package/dist/mcp/handlers/lending.js.map +1 -0
- package/dist/mcp/handlers/staking.d.ts +56 -0
- package/dist/mcp/handlers/staking.d.ts.map +1 -0
- package/dist/mcp/handlers/staking.js +110 -0
- package/dist/mcp/handlers/staking.js.map +1 -0
- package/dist/mcp/handlers/trade.d.ts +22 -0
- package/dist/mcp/handlers/trade.d.ts.map +1 -0
- package/dist/mcp/handlers/trade.js +57 -0
- package/dist/mcp/handlers/trade.js.map +1 -0
- package/dist/mcp/handlers/utils.d.ts +13 -0
- package/dist/mcp/handlers/utils.d.ts.map +1 -0
- package/dist/mcp/handlers/utils.js +7 -0
- package/dist/mcp/handlers/utils.js.map +1 -0
- package/dist/mcp/handlers/wallet.d.ts +33 -0
- package/dist/mcp/handlers/wallet.d.ts.map +1 -0
- package/dist/mcp/handlers/wallet.js +83 -0
- package/dist/mcp/handlers/wallet.js.map +1 -0
- package/dist/mcp/handlers.d.ts +108 -0
- package/dist/mcp/handlers.d.ts.map +1 -0
- package/dist/mcp/handlers.js +325 -0
- package/dist/mcp/handlers.js.map +1 -0
- package/dist/mcp/server.d.ts +2 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +13 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/tools.d.ts +3 -0
- package/dist/mcp/tools.d.ts.map +1 -0
- package/dist/mcp/tools.js +156 -0
- package/dist/mcp/tools.js.map +1 -0
- package/dist/services/api/client.d.ts +26 -0
- package/dist/services/api/client.d.ts.map +1 -0
- package/dist/services/api/client.js +59 -0
- package/dist/services/api/client.js.map +1 -0
- package/dist/services/auth/session.d.ts +22 -0
- package/dist/services/auth/session.d.ts.map +1 -0
- package/dist/services/auth/session.js +36 -0
- package/dist/services/auth/session.js.map +1 -0
- package/dist/services/config/config.d.ts +20 -0
- package/dist/services/config/config.d.ts.map +1 -0
- package/dist/services/config/config.js +49 -0
- package/dist/services/config/config.js.map +1 -0
- package/dist/services/fibrous/balances.d.ts +8 -0
- package/dist/services/fibrous/balances.d.ts.map +1 -0
- package/dist/services/fibrous/balances.js +23 -0
- package/dist/services/fibrous/balances.js.map +1 -0
- package/dist/services/fibrous/health.d.ts +5 -0
- package/dist/services/fibrous/health.d.ts.map +1 -0
- package/dist/services/fibrous/health.js +24 -0
- package/dist/services/fibrous/health.js.map +1 -0
- package/dist/services/fibrous/route.d.ts +42 -0
- package/dist/services/fibrous/route.d.ts.map +1 -0
- package/dist/services/fibrous/route.js +41 -0
- package/dist/services/fibrous/route.js.map +1 -0
- package/dist/services/fibrous/tokens.d.ts +6 -0
- package/dist/services/fibrous/tokens.d.ts.map +1 -0
- package/dist/services/fibrous/tokens.js +34 -0
- package/dist/services/fibrous/tokens.js.map +1 -0
- package/dist/services/staking/staking.d.ts +70 -0
- package/dist/services/staking/staking.d.ts.map +1 -0
- package/dist/services/staking/staking.js +170 -0
- package/dist/services/staking/staking.js.map +1 -0
- package/dist/services/staking/validators.d.ts +6 -0
- package/dist/services/staking/validators.d.ts.map +1 -0
- package/dist/services/staking/validators.js +14 -0
- package/dist/services/staking/validators.js.map +1 -0
- package/dist/services/starkzap/client.d.ts +18 -0
- package/dist/services/starkzap/client.d.ts.map +1 -0
- package/dist/services/starkzap/client.js +65 -0
- package/dist/services/starkzap/client.js.map +1 -0
- package/dist/services/tokens/balances.d.ts +8 -0
- package/dist/services/tokens/balances.d.ts.map +1 -0
- package/dist/services/tokens/balances.js +23 -0
- package/dist/services/tokens/balances.js.map +1 -0
- package/dist/services/tokens/tokens.d.ts +5 -0
- package/dist/services/tokens/tokens.d.ts.map +1 -0
- package/dist/services/tokens/tokens.js +24 -0
- package/dist/services/tokens/tokens.js.map +1 -0
- package/dist/services/vesu/index.d.ts +3 -0
- package/dist/services/vesu/index.d.ts.map +1 -0
- package/dist/services/vesu/index.js +3 -0
- package/dist/services/vesu/index.js.map +1 -0
- package/dist/services/vesu/lending.d.ts +17 -0
- package/dist/services/vesu/lending.d.ts.map +1 -0
- package/dist/services/vesu/lending.js +153 -0
- package/dist/services/vesu/lending.js.map +1 -0
- package/dist/services/vesu/pools.d.ts +13 -0
- package/dist/services/vesu/pools.d.ts.map +1 -0
- package/dist/services/vesu/pools.js +35 -0
- package/dist/services/vesu/pools.js.map +1 -0
- package/package.json +83 -0
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
import { requireSession } from "../../services/auth/session.js";
|
|
2
|
+
import { initSDKAndWallet } from "../../services/starkzap/client.js";
|
|
3
|
+
import * as lendingService from "../../services/vesu/lending.js";
|
|
4
|
+
import { getVesuPools, findVesuPool } from "../../services/vesu/pools.js";
|
|
5
|
+
import { createSpinner, formatResult, formatTable } from "../../lib/format.js";
|
|
6
|
+
import { validateAddress } from "../../lib/validation.js";
|
|
7
|
+
function resolvePoolAddress(poolQuery, network) {
|
|
8
|
+
const found = findVesuPool(poolQuery, network);
|
|
9
|
+
if (found)
|
|
10
|
+
return found.poolContract;
|
|
11
|
+
return validateAddress(poolQuery);
|
|
12
|
+
}
|
|
13
|
+
export function registerLendPoolsCommand(program) {
|
|
14
|
+
program
|
|
15
|
+
.command("lend-pools")
|
|
16
|
+
.description("List available Vesu V2 lending pools")
|
|
17
|
+
.argument("[name]", "Filter pools by name (partial match)")
|
|
18
|
+
.action(async (name) => {
|
|
19
|
+
const spinner = createSpinner("Fetching Vesu pools...").start();
|
|
20
|
+
try {
|
|
21
|
+
const session = requireSession();
|
|
22
|
+
let pools = getVesuPools(session.network);
|
|
23
|
+
if (name) {
|
|
24
|
+
const lower = name.toLowerCase();
|
|
25
|
+
pools = pools.filter((p) => p.name.toLowerCase().includes(lower));
|
|
26
|
+
}
|
|
27
|
+
if (pools.length === 0) {
|
|
28
|
+
spinner.fail("No pools found");
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
spinner.succeed(`Found ${pools.length} pool(s)`);
|
|
32
|
+
console.log(formatTable(["Name", "Pool Address", "Pairs"], pools.map((p) => [
|
|
33
|
+
p.name,
|
|
34
|
+
p.poolContract,
|
|
35
|
+
p.pairs.map((pair) => `${pair.collateral}/${pair.debt}`).join(", "),
|
|
36
|
+
])));
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
spinner.fail("Failed to list pools");
|
|
40
|
+
console.error(error instanceof Error ? error.message : error);
|
|
41
|
+
process.exit(1);
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
export function registerLendSupplyCommand(program) {
|
|
46
|
+
program
|
|
47
|
+
.command("lend-supply")
|
|
48
|
+
.description("Supply assets into a Vesu V2 lending pool")
|
|
49
|
+
.argument("<amount>", "Amount to supply")
|
|
50
|
+
.requiredOption("-p, --pool <name|address>", "Pool name (e.g. 'Genesis') or contract address")
|
|
51
|
+
.requiredOption("-t, --token <symbol>", "Token symbol (e.g. 'STRK', 'ETH', 'USDC')")
|
|
52
|
+
.action(async (amount, opts) => {
|
|
53
|
+
const spinner = createSpinner(`Supplying ${amount} ${opts.token}...`).start();
|
|
54
|
+
try {
|
|
55
|
+
const session = requireSession();
|
|
56
|
+
const { wallet } = await initSDKAndWallet(session);
|
|
57
|
+
await wallet.ensureReady({ deploy: "if_needed" });
|
|
58
|
+
const poolAddress = resolvePoolAddress(opts.pool, session.network);
|
|
59
|
+
const result = await lendingService.supply(wallet, poolAddress, opts.token, amount);
|
|
60
|
+
spinner.succeed("Supply confirmed");
|
|
61
|
+
console.log(formatResult({
|
|
62
|
+
amount: `${amount} ${opts.token.toUpperCase()}`,
|
|
63
|
+
pool: poolAddress,
|
|
64
|
+
txHash: result.hash,
|
|
65
|
+
explorer: result.explorerUrl,
|
|
66
|
+
}));
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
spinner.fail("Supply failed");
|
|
70
|
+
console.error(error instanceof Error ? error.message : error);
|
|
71
|
+
process.exit(1);
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
export function registerLendWithdrawCommand(program) {
|
|
76
|
+
program
|
|
77
|
+
.command("lend-withdraw")
|
|
78
|
+
.description("Withdraw supplied assets from a Vesu V2 lending pool")
|
|
79
|
+
.argument("<amount>", "Amount to withdraw")
|
|
80
|
+
.requiredOption("-p, --pool <name|address>", "Pool name (e.g. 'Genesis') or contract address")
|
|
81
|
+
.requiredOption("-t, --token <symbol>", "Token symbol (e.g. 'STRK', 'ETH', 'USDC')")
|
|
82
|
+
.action(async (amount, opts) => {
|
|
83
|
+
const spinner = createSpinner(`Withdrawing ${amount} ${opts.token}...`).start();
|
|
84
|
+
try {
|
|
85
|
+
const session = requireSession();
|
|
86
|
+
const { wallet } = await initSDKAndWallet(session);
|
|
87
|
+
await wallet.ensureReady({ deploy: "if_needed" });
|
|
88
|
+
const poolAddress = resolvePoolAddress(opts.pool, session.network);
|
|
89
|
+
const result = await lendingService.withdraw(wallet, poolAddress, opts.token, amount);
|
|
90
|
+
spinner.succeed("Withdrawal confirmed");
|
|
91
|
+
console.log(formatResult({
|
|
92
|
+
amount: `${amount} ${opts.token.toUpperCase()}`,
|
|
93
|
+
pool: poolAddress,
|
|
94
|
+
txHash: result.hash,
|
|
95
|
+
explorer: result.explorerUrl,
|
|
96
|
+
}));
|
|
97
|
+
}
|
|
98
|
+
catch (error) {
|
|
99
|
+
spinner.fail("Withdrawal failed");
|
|
100
|
+
console.error(error instanceof Error ? error.message : error);
|
|
101
|
+
process.exit(1);
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
export function registerLendBorrowCommand(program) {
|
|
106
|
+
program
|
|
107
|
+
.command("lend-borrow")
|
|
108
|
+
.description("Borrow assets from a Vesu V2 lending pool (requires collateral)")
|
|
109
|
+
.requiredOption("-p, --pool <name|address>", "Pool name (e.g. 'Genesis') or contract address")
|
|
110
|
+
.requiredOption("--collateral-amount <n>", "Collateral amount to supply")
|
|
111
|
+
.requiredOption("--collateral-token <symbol>", "Collateral token symbol (e.g. 'ETH', 'STRK')")
|
|
112
|
+
.requiredOption("--borrow-amount <n>", "Amount to borrow")
|
|
113
|
+
.requiredOption("--borrow-token <symbol>", "Token to borrow (e.g. 'USDC', 'USDT')")
|
|
114
|
+
.action(async (opts) => {
|
|
115
|
+
const spinner = createSpinner(`Borrowing ${opts.borrowAmount} ${opts.borrowToken}...`).start();
|
|
116
|
+
try {
|
|
117
|
+
const session = requireSession();
|
|
118
|
+
const { wallet } = await initSDKAndWallet(session);
|
|
119
|
+
await wallet.ensureReady({ deploy: "if_needed" });
|
|
120
|
+
const poolAddress = resolvePoolAddress(opts.pool, session.network);
|
|
121
|
+
const result = await lendingService.borrow(wallet, poolAddress, opts.collateralToken, opts.collateralAmount, opts.borrowToken, opts.borrowAmount);
|
|
122
|
+
spinner.succeed("Borrow confirmed");
|
|
123
|
+
console.log(formatResult({
|
|
124
|
+
collateral: `${opts.collateralAmount} ${opts.collateralToken.toUpperCase()}`,
|
|
125
|
+
borrowed: `${opts.borrowAmount} ${opts.borrowToken.toUpperCase()}`,
|
|
126
|
+
pool: poolAddress,
|
|
127
|
+
txHash: result.hash,
|
|
128
|
+
explorer: result.explorerUrl,
|
|
129
|
+
}));
|
|
130
|
+
}
|
|
131
|
+
catch (error) {
|
|
132
|
+
spinner.fail("Borrow failed");
|
|
133
|
+
console.error(error instanceof Error ? error.message : error);
|
|
134
|
+
process.exit(1);
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
export function registerLendRepayCommand(program) {
|
|
139
|
+
program
|
|
140
|
+
.command("lend-repay")
|
|
141
|
+
.description("Repay borrowed assets on a Vesu V2 lending pool")
|
|
142
|
+
.argument("<amount>", "Amount to repay")
|
|
143
|
+
.requiredOption("-p, --pool <name|address>", "Pool name (e.g. 'Genesis') or contract address")
|
|
144
|
+
.requiredOption("-t, --token <symbol>", "Debt token symbol (e.g. 'USDC', 'USDT')")
|
|
145
|
+
.requiredOption("--collateral-token <symbol>", "Collateral token of the position (e.g. 'ETH', 'STRK')")
|
|
146
|
+
.action(async (amount, opts) => {
|
|
147
|
+
const spinner = createSpinner(`Repaying ${amount} ${opts.token}...`).start();
|
|
148
|
+
try {
|
|
149
|
+
const session = requireSession();
|
|
150
|
+
const { wallet } = await initSDKAndWallet(session);
|
|
151
|
+
await wallet.ensureReady({ deploy: "if_needed" });
|
|
152
|
+
const poolAddress = resolvePoolAddress(opts.pool, session.network);
|
|
153
|
+
const result = await lendingService.repay(wallet, poolAddress, opts.collateralToken, opts.token, amount);
|
|
154
|
+
spinner.succeed("Repayment confirmed");
|
|
155
|
+
console.log(formatResult({
|
|
156
|
+
repaid: `${amount} ${opts.token.toUpperCase()}`,
|
|
157
|
+
pool: poolAddress,
|
|
158
|
+
txHash: result.hash,
|
|
159
|
+
explorer: result.explorerUrl,
|
|
160
|
+
}));
|
|
161
|
+
}
|
|
162
|
+
catch (error) {
|
|
163
|
+
spinner.fail("Repayment failed");
|
|
164
|
+
console.error(error instanceof Error ? error.message : error);
|
|
165
|
+
process.exit(1);
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
export function registerLendStatusCommand(program) {
|
|
170
|
+
program
|
|
171
|
+
.command("lend-status")
|
|
172
|
+
.description("View your lending position in a Vesu V2 pool")
|
|
173
|
+
.requiredOption("-p, --pool <name|address>", "Pool name (e.g. 'Genesis') or contract address")
|
|
174
|
+
.requiredOption("--collateral-token <symbol>", "Collateral token (e.g. 'ETH', 'STRK')")
|
|
175
|
+
.requiredOption("--debt-token <symbol>", "Debt token (e.g. 'USDC', 'USDT')")
|
|
176
|
+
.action(async (opts) => {
|
|
177
|
+
const spinner = createSpinner("Fetching lending position...").start();
|
|
178
|
+
try {
|
|
179
|
+
const session = requireSession();
|
|
180
|
+
const { wallet } = await initSDKAndWallet(session);
|
|
181
|
+
const poolAddress = resolvePoolAddress(opts.pool, session.network);
|
|
182
|
+
const position = await lendingService.getPosition(wallet, poolAddress, opts.collateralToken, opts.debtToken);
|
|
183
|
+
if (!position) {
|
|
184
|
+
spinner.info("No active position found in this pool");
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
spinner.succeed("Position found");
|
|
188
|
+
console.log(formatResult({
|
|
189
|
+
pool: poolAddress,
|
|
190
|
+
collateral: `${position.collateralAmount} ${position.collateralAsset}`,
|
|
191
|
+
debt: `${position.debtAmount} ${position.debtAsset}`,
|
|
192
|
+
}));
|
|
193
|
+
}
|
|
194
|
+
catch (error) {
|
|
195
|
+
spinner.fail("Failed to fetch position");
|
|
196
|
+
console.error(error instanceof Error ? error.message : error);
|
|
197
|
+
process.exit(1);
|
|
198
|
+
}
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
//# sourceMappingURL=lending.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lending.js","sourceRoot":"","sources":["../../../src/commands/lending/lending.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,KAAK,cAAc,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D,SAAS,kBAAkB,CAAC,SAAiB,EAAE,OAA8B;IAC5E,MAAM,KAAK,GAAG,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC/C,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC,YAAY,CAAC;IACrC,OAAO,eAAe,CAAC,SAAS,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,OAAgB;IACxD,OAAO;SACL,OAAO,CAAC,YAAY,CAAC;SACrB,WAAW,CAAC,sCAAsC,CAAC;SACnD,QAAQ,CAAC,QAAQ,EAAE,sCAAsC,CAAC;SAC1D,MAAM,CAAC,KAAK,EAAE,IAAa,EAAE,EAAE;QAC/B,MAAM,OAAO,GAAG,aAAa,CAAC,wBAAwB,CAAC,CAAC,KAAK,EAAE,CAAC;QAEhE,IAAI,CAAC;YACJ,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;YACjC,IAAI,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAE1C,IAAI,IAAI,EAAE,CAAC;gBACV,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;YACnE,CAAC;YAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBAC/B,OAAO;YACR,CAAC;YAED,OAAO,CAAC,OAAO,CAAC,SAAS,KAAK,CAAC,MAAM,UAAU,CAAC,CAAC;YACjD,OAAO,CAAC,GAAG,CACV,WAAW,CACV,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,CAAC,EACjC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;gBAChB,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,YAAY;gBACd,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;aACnE,CAAC,CACF,CACD,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACrC,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;IACF,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,OAAgB;IACzD,OAAO;SACL,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CAAC,2CAA2C,CAAC;SACxD,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC;SACxC,cAAc,CACd,2BAA2B,EAC3B,gDAAgD,CAChD;SACA,cAAc,CAAC,sBAAsB,EAAE,2CAA2C,CAAC;SACnF,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,IAAI,EAAE,EAAE;QACtC,MAAM,OAAO,GAAG,aAAa,CAAC,aAAa,MAAM,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;QAE9E,IAAI,CAAC;YACJ,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;YACjC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC;YACnD,MAAM,MAAM,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;YAElD,MAAM,WAAW,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;YACnE,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAEpF,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;YACpC,OAAO,CAAC,GAAG,CACV,YAAY,CAAC;gBACZ,MAAM,EAAE,GAAG,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE;gBAC/C,IAAI,EAAE,WAAW;gBACjB,MAAM,EAAE,MAAM,CAAC,IAAI;gBACnB,QAAQ,EAAE,MAAM,CAAC,WAAW;aAC5B,CAAC,CACF,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAC9B,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;IACF,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,OAAgB;IAC3D,OAAO;SACL,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,sDAAsD,CAAC;SACnE,QAAQ,CAAC,UAAU,EAAE,oBAAoB,CAAC;SAC1C,cAAc,CACd,2BAA2B,EAC3B,gDAAgD,CAChD;SACA,cAAc,CAAC,sBAAsB,EAAE,2CAA2C,CAAC;SACnF,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,IAAI,EAAE,EAAE;QACtC,MAAM,OAAO,GAAG,aAAa,CAAC,eAAe,MAAM,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;QAEhF,IAAI,CAAC;YACJ,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;YACjC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC;YACnD,MAAM,MAAM,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;YAElD,MAAM,WAAW,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;YACnE,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,QAAQ,CAC3C,MAAM,EACN,WAAW,EACX,IAAI,CAAC,KAAK,EACV,MAAM,CACN,CAAC;YAEF,OAAO,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;YACxC,OAAO,CAAC,GAAG,CACV,YAAY,CAAC;gBACZ,MAAM,EAAE,GAAG,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE;gBAC/C,IAAI,EAAE,WAAW;gBACjB,MAAM,EAAE,MAAM,CAAC,IAAI;gBACnB,QAAQ,EAAE,MAAM,CAAC,WAAW;aAC5B,CAAC,CACF,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAClC,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;IACF,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,OAAgB;IACzD,OAAO;SACL,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CAAC,iEAAiE,CAAC;SAC9E,cAAc,CACd,2BAA2B,EAC3B,gDAAgD,CAChD;SACA,cAAc,CAAC,yBAAyB,EAAE,6BAA6B,CAAC;SACxE,cAAc,CACd,6BAA6B,EAC7B,8CAA8C,CAC9C;SACA,cAAc,CAAC,qBAAqB,EAAE,kBAAkB,CAAC;SACzD,cAAc,CAAC,yBAAyB,EAAE,uCAAuC,CAAC;SAClF,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACtB,MAAM,OAAO,GAAG,aAAa,CAC5B,aAAa,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,WAAW,KAAK,CACvD,CAAC,KAAK,EAAE,CAAC;QAEV,IAAI,CAAC;YACJ,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;YACjC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC;YACnD,MAAM,MAAM,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;YAElD,MAAM,WAAW,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;YACnE,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,MAAM,CACzC,MAAM,EACN,WAAW,EACX,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,YAAY,CACjB,CAAC;YAEF,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;YACpC,OAAO,CAAC,GAAG,CACV,YAAY,CAAC;gBACZ,UAAU,EAAE,GAAG,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,EAAE;gBAC5E,QAAQ,EAAE,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,EAAE;gBAClE,IAAI,EAAE,WAAW;gBACjB,MAAM,EAAE,MAAM,CAAC,IAAI;gBACnB,QAAQ,EAAE,MAAM,CAAC,WAAW;aAC5B,CAAC,CACF,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAC9B,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;IACF,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,OAAgB;IACxD,OAAO;SACL,OAAO,CAAC,YAAY,CAAC;SACrB,WAAW,CAAC,iDAAiD,CAAC;SAC9D,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC;SACvC,cAAc,CACd,2BAA2B,EAC3B,gDAAgD,CAChD;SACA,cAAc,CAAC,sBAAsB,EAAE,yCAAyC,CAAC;SACjF,cAAc,CACd,6BAA6B,EAC7B,uDAAuD,CACvD;SACA,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,IAAI,EAAE,EAAE;QACtC,MAAM,OAAO,GAAG,aAAa,CAAC,YAAY,MAAM,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;QAE7E,IAAI,CAAC;YACJ,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;YACjC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC;YACnD,MAAM,MAAM,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;YAElD,MAAM,WAAW,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;YACnE,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,KAAK,CACxC,MAAM,EACN,WAAW,EACX,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,KAAK,EACV,MAAM,CACN,CAAC;YAEF,OAAO,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;YACvC,OAAO,CAAC,GAAG,CACV,YAAY,CAAC;gBACZ,MAAM,EAAE,GAAG,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE;gBAC/C,IAAI,EAAE,WAAW;gBACjB,MAAM,EAAE,MAAM,CAAC,IAAI;gBACnB,QAAQ,EAAE,MAAM,CAAC,WAAW;aAC5B,CAAC,CACF,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACjC,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;IACF,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,OAAgB;IACzD,OAAO;SACL,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CAAC,8CAA8C,CAAC;SAC3D,cAAc,CACd,2BAA2B,EAC3B,gDAAgD,CAChD;SACA,cAAc,CAAC,6BAA6B,EAAE,uCAAuC,CAAC;SACtF,cAAc,CAAC,uBAAuB,EAAE,kCAAkC,CAAC;SAC3E,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACtB,MAAM,OAAO,GAAG,aAAa,CAAC,8BAA8B,CAAC,CAAC,KAAK,EAAE,CAAC;QAEtE,IAAI,CAAC;YACJ,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;YACjC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC;YAEnD,MAAM,WAAW,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;YACnE,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,WAAW,CAChD,MAAM,EACN,WAAW,EACX,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,SAAS,CACd,CAAC;YAEF,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;gBACtD,OAAO;YACR,CAAC;YAED,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;YAClC,OAAO,CAAC,GAAG,CACV,YAAY,CAAC;gBACZ,IAAI,EAAE,WAAW;gBACjB,UAAU,EAAE,GAAG,QAAQ,CAAC,gBAAgB,IAAI,QAAQ,CAAC,eAAe,EAAE;gBACtE,IAAI,EAAE,GAAG,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,SAAS,EAAE;aACpD,CAAC,CACF,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;YACzC,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;IACF,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Command } from "commander";
|
|
2
|
+
export declare function registerStakeCommand(program: Command): void;
|
|
3
|
+
export declare function registerUnstakeCommand(program: Command): void;
|
|
4
|
+
export declare function registerRewardsCommand(program: Command): void;
|
|
5
|
+
export declare function registerPoolsCommand(program: Command): void;
|
|
6
|
+
export declare function registerValidatorsCommand(program: Command): void;
|
|
7
|
+
export declare function registerStakingStatsCommand(program: Command): void;
|
|
8
|
+
//# sourceMappingURL=staking.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"staking.d.ts","sourceRoot":"","sources":["../../../src/commands/staking/staking.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQzC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8D3D;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiE7D;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4E7D;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA+C3D;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4BhE;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA0DlE"}
|
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
import { requireSession } from "../../services/auth/session.js";
|
|
2
|
+
import { initSDKAndWallet } from "../../services/starkzap/client.js";
|
|
3
|
+
import * as stakingService from "../../services/staking/staking.js";
|
|
4
|
+
import { getValidators, findValidator } from "../../services/staking/validators.js";
|
|
5
|
+
import { createSpinner, formatResult, formatTable } from "../../lib/format.js";
|
|
6
|
+
import { validateAddress } from "../../lib/validation.js";
|
|
7
|
+
export function registerStakeCommand(program) {
|
|
8
|
+
program
|
|
9
|
+
.command("stake")
|
|
10
|
+
.description("Stake STRK in a delegation pool (smart stake: enter or add)")
|
|
11
|
+
.argument("<amount>", "Amount to stake")
|
|
12
|
+
.option("-p, --pool <address>", "Staking pool contract address")
|
|
13
|
+
.option("-v, --validator <name>", "Validator name or staker address (picks first STRK pool)")
|
|
14
|
+
.action(async (amount, opts) => {
|
|
15
|
+
if (!opts.pool && !opts.validator) {
|
|
16
|
+
console.error("Provide --pool <address> or --validator <name>");
|
|
17
|
+
process.exit(1);
|
|
18
|
+
}
|
|
19
|
+
const spinner = createSpinner("Staking STRK...").start();
|
|
20
|
+
try {
|
|
21
|
+
const session = requireSession();
|
|
22
|
+
const { sdk, wallet } = await initSDKAndWallet(session);
|
|
23
|
+
await wallet.ensureReady({ deploy: "if_needed" });
|
|
24
|
+
let poolAddress = opts.pool;
|
|
25
|
+
if (!poolAddress) {
|
|
26
|
+
const validator = findValidator(opts.validator, session.network);
|
|
27
|
+
if (!validator) {
|
|
28
|
+
spinner.fail(`Validator '${opts.validator}' not found`);
|
|
29
|
+
process.exit(1);
|
|
30
|
+
}
|
|
31
|
+
const pools = await stakingService.getValidatorPools(sdk, validator.stakerAddress.toString());
|
|
32
|
+
if (pools.length === 0) {
|
|
33
|
+
spinner.fail(`No pools found for validator '${opts.validator}'`);
|
|
34
|
+
process.exit(1);
|
|
35
|
+
}
|
|
36
|
+
poolAddress = pools[0].poolContract;
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
poolAddress = validateAddress(poolAddress);
|
|
40
|
+
}
|
|
41
|
+
const result = await stakingService.stake(wallet, poolAddress, amount);
|
|
42
|
+
spinner.succeed("Staking confirmed");
|
|
43
|
+
console.log(formatResult({
|
|
44
|
+
amount: `${amount} STRK`,
|
|
45
|
+
pool: poolAddress,
|
|
46
|
+
txHash: result.hash,
|
|
47
|
+
explorer: result.explorerUrl,
|
|
48
|
+
}));
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
spinner.fail("Staking failed");
|
|
52
|
+
console.error(error instanceof Error ? error.message : error);
|
|
53
|
+
process.exit(1);
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
export function registerUnstakeCommand(program) {
|
|
58
|
+
program
|
|
59
|
+
.command("unstake")
|
|
60
|
+
.description("Unstake STRK (2-step: intent → exit after cooldown)")
|
|
61
|
+
.argument("<action>", "'intent' to declare exit or 'exit' to complete withdrawal")
|
|
62
|
+
.option("-p, --pool <address>", "Pool contract address (required)")
|
|
63
|
+
.option("-a, --amount <amount>", "Amount to unstake (required for intent)")
|
|
64
|
+
.action(async (action, opts) => {
|
|
65
|
+
if (!opts.pool) {
|
|
66
|
+
console.error("Pool address is required: --pool <address>");
|
|
67
|
+
process.exit(1);
|
|
68
|
+
}
|
|
69
|
+
const spinner = createSpinner("Processing unstake...").start();
|
|
70
|
+
try {
|
|
71
|
+
const poolAddress = validateAddress(opts.pool);
|
|
72
|
+
const session = requireSession();
|
|
73
|
+
const { wallet } = await initSDKAndWallet(session);
|
|
74
|
+
await wallet.ensureReady({ deploy: "if_needed" });
|
|
75
|
+
if (action === "intent") {
|
|
76
|
+
if (!opts.amount) {
|
|
77
|
+
spinner.fail("Amount is required for exit intent");
|
|
78
|
+
process.exit(1);
|
|
79
|
+
}
|
|
80
|
+
const result = await stakingService.exitPoolIntent(wallet, poolAddress, opts.amount);
|
|
81
|
+
spinner.succeed("Exit intent declared");
|
|
82
|
+
console.log(formatResult({
|
|
83
|
+
action: "exit_intent",
|
|
84
|
+
amount: `${opts.amount} STRK`,
|
|
85
|
+
txHash: result.hash,
|
|
86
|
+
explorer: result.explorerUrl,
|
|
87
|
+
note: "Wait for cooldown, then run: starkfi unstake exit --pool <address>",
|
|
88
|
+
}));
|
|
89
|
+
}
|
|
90
|
+
else if (action === "exit") {
|
|
91
|
+
const result = await stakingService.exitPool(wallet, poolAddress);
|
|
92
|
+
spinner.succeed("Exit complete");
|
|
93
|
+
console.log(formatResult({
|
|
94
|
+
action: "exit_complete",
|
|
95
|
+
txHash: result.hash,
|
|
96
|
+
explorer: result.explorerUrl,
|
|
97
|
+
}));
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
spinner.fail("Action must be 'intent' or 'exit'");
|
|
101
|
+
process.exit(1);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
spinner.fail("Unstake failed");
|
|
106
|
+
console.error(error instanceof Error ? error.message : error);
|
|
107
|
+
process.exit(1);
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
export function registerRewardsCommand(program) {
|
|
112
|
+
program
|
|
113
|
+
.command("rewards")
|
|
114
|
+
.description("Show staking position and rewards, or claim / compound rewards")
|
|
115
|
+
.option("-p, --pool <address>", "Pool contract address (required)")
|
|
116
|
+
.option("-c, --claim", "Claim rewards to wallet")
|
|
117
|
+
.option("--compound", "Claim and re-stake rewards atomically (single tx)")
|
|
118
|
+
.action(async (opts) => {
|
|
119
|
+
if (!opts.pool) {
|
|
120
|
+
console.error("Pool address is required: --pool <address>");
|
|
121
|
+
process.exit(1);
|
|
122
|
+
}
|
|
123
|
+
const spinner = createSpinner("Fetching staking info...").start();
|
|
124
|
+
try {
|
|
125
|
+
const poolAddress = validateAddress(opts.pool);
|
|
126
|
+
const session = requireSession();
|
|
127
|
+
const { wallet } = await initSDKAndWallet(session);
|
|
128
|
+
if (opts.compound) {
|
|
129
|
+
await wallet.ensureReady({ deploy: "if_needed" });
|
|
130
|
+
spinner.text = "Compounding rewards...";
|
|
131
|
+
const result = await stakingService.compoundRewards(wallet, poolAddress);
|
|
132
|
+
spinner.succeed("Rewards compounded");
|
|
133
|
+
console.log(formatResult({
|
|
134
|
+
compounded: result.compounded,
|
|
135
|
+
txHash: result.hash,
|
|
136
|
+
explorer: result.explorerUrl,
|
|
137
|
+
}));
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
if (opts.claim) {
|
|
141
|
+
await wallet.ensureReady({ deploy: "if_needed" });
|
|
142
|
+
spinner.text = "Claiming rewards...";
|
|
143
|
+
const result = await stakingService.claimRewards(wallet, poolAddress);
|
|
144
|
+
spinner.succeed("Rewards claimed");
|
|
145
|
+
console.log(formatResult({
|
|
146
|
+
txHash: result.hash,
|
|
147
|
+
explorer: result.explorerUrl,
|
|
148
|
+
}));
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
const position = await stakingService.getPosition(wallet, poolAddress);
|
|
152
|
+
spinner.stop();
|
|
153
|
+
if (!position) {
|
|
154
|
+
console.log(" Not a member of this pool.\n");
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
console.log(formatResult({
|
|
158
|
+
staked: position.staked,
|
|
159
|
+
rewards: position.rewards,
|
|
160
|
+
total: position.total,
|
|
161
|
+
unpooling: position.unpooling,
|
|
162
|
+
unpoolTime: position.unpoolTime?.toISOString() ?? "N/A",
|
|
163
|
+
commission: `${position.commissionPercent}%`,
|
|
164
|
+
}));
|
|
165
|
+
}
|
|
166
|
+
catch (error) {
|
|
167
|
+
spinner.fail("Failed to fetch staking info");
|
|
168
|
+
console.error(error instanceof Error ? error.message : error);
|
|
169
|
+
process.exit(1);
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
export function registerPoolsCommand(program) {
|
|
174
|
+
program
|
|
175
|
+
.command("pools")
|
|
176
|
+
.description("List staking pools for a validator (by name or address)")
|
|
177
|
+
.argument("<validator>", "Validator name (e.g. 'Karnot') or staker address")
|
|
178
|
+
.action(async (validator) => {
|
|
179
|
+
const spinner = createSpinner("Fetching pools...").start();
|
|
180
|
+
try {
|
|
181
|
+
const session = requireSession();
|
|
182
|
+
const { sdk, wallet } = await initSDKAndWallet(session);
|
|
183
|
+
const found = findValidator(validator, session.network);
|
|
184
|
+
const stakerAddress = found
|
|
185
|
+
? found.stakerAddress.toString()
|
|
186
|
+
: validateAddress(validator);
|
|
187
|
+
const pools = await stakingService.getValidatorPools(sdk, stakerAddress, wallet);
|
|
188
|
+
spinner.stop();
|
|
189
|
+
if (pools.length === 0) {
|
|
190
|
+
console.log(" No pools found for this validator.\n");
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
193
|
+
const validatorLabel = found ? `${found.name} (${stakerAddress})` : stakerAddress;
|
|
194
|
+
console.log(`\n Validator: ${validatorLabel}\n`);
|
|
195
|
+
console.log(formatTable(["Pool Address", "Token", "Amount", "Commission"], pools.map((p) => [
|
|
196
|
+
p.poolContract,
|
|
197
|
+
p.tokenSymbol,
|
|
198
|
+
p.amount,
|
|
199
|
+
p.commission !== undefined ? `${p.commission}%` : "N/A",
|
|
200
|
+
])));
|
|
201
|
+
console.log();
|
|
202
|
+
}
|
|
203
|
+
catch (error) {
|
|
204
|
+
spinner.fail("Failed to fetch pools");
|
|
205
|
+
console.error(error instanceof Error ? error.message : error);
|
|
206
|
+
process.exit(1);
|
|
207
|
+
}
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
export function registerValidatorsCommand(program) {
|
|
211
|
+
program
|
|
212
|
+
.command("validators")
|
|
213
|
+
.description("List all known Starknet staking validators")
|
|
214
|
+
.action(async () => {
|
|
215
|
+
const spinner = createSpinner("Loading validators...").start();
|
|
216
|
+
try {
|
|
217
|
+
const session = requireSession();
|
|
218
|
+
const validators = getValidators(session.network);
|
|
219
|
+
spinner.stop();
|
|
220
|
+
console.log(`\n Validators on ${session.network} (${validators.length} total)\n`);
|
|
221
|
+
console.log(formatTable(["Name", "Staker Address"], validators.map((v) => [v.name, v.stakerAddress.toString()])));
|
|
222
|
+
console.log();
|
|
223
|
+
}
|
|
224
|
+
catch (error) {
|
|
225
|
+
spinner.fail("Failed to load validators");
|
|
226
|
+
console.error(error instanceof Error ? error.message : error);
|
|
227
|
+
process.exit(1);
|
|
228
|
+
}
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
export function registerStakingStatsCommand(program) {
|
|
232
|
+
program
|
|
233
|
+
.command("staking-stats")
|
|
234
|
+
.description("Show a consolidated staking dashboard across all validators and pools")
|
|
235
|
+
.action(async () => {
|
|
236
|
+
const spinner = createSpinner("Scanning all validators and pools...").start();
|
|
237
|
+
try {
|
|
238
|
+
const session = requireSession();
|
|
239
|
+
const { sdk, wallet } = await initSDKAndWallet(session);
|
|
240
|
+
const overview = await stakingService.getStakingOverview(sdk, wallet, session.network, session.address);
|
|
241
|
+
spinner.stop();
|
|
242
|
+
if (overview.positions.length === 0) {
|
|
243
|
+
console.log("\n No active staking positions found.\n");
|
|
244
|
+
return;
|
|
245
|
+
}
|
|
246
|
+
console.log(formatResult({
|
|
247
|
+
network: overview.network,
|
|
248
|
+
totalStaked: `${overview.totalStaked} STRK`,
|
|
249
|
+
totalRewards: `${overview.totalRewards} STRK`,
|
|
250
|
+
totalValue: `${overview.totalValue} STRK`,
|
|
251
|
+
totalUnpooling: `${overview.totalUnpooling} STRK`,
|
|
252
|
+
positions: overview.positions.length,
|
|
253
|
+
}));
|
|
254
|
+
console.log();
|
|
255
|
+
console.log(formatTable(["Validator", "Pool", "Staked", "Rewards", "Total", "Commission"], overview.positions.map((p) => [
|
|
256
|
+
p.validator,
|
|
257
|
+
p.pool.slice(0, 10) + "…",
|
|
258
|
+
p.staked,
|
|
259
|
+
p.rewards,
|
|
260
|
+
p.total,
|
|
261
|
+
p.commission,
|
|
262
|
+
])));
|
|
263
|
+
console.log();
|
|
264
|
+
}
|
|
265
|
+
catch (error) {
|
|
266
|
+
spinner.fail("Failed to fetch staking stats");
|
|
267
|
+
console.error(error instanceof Error ? error.message : error);
|
|
268
|
+
process.exit(1);
|
|
269
|
+
}
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
//# sourceMappingURL=staking.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"staking.js","sourceRoot":"","sources":["../../../src/commands/staking/staking.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/commands/trade/status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAyC5D"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { loadSession } from "../../services/auth/session.js";
|
|
2
|
+
import { checkFibrousHealth } from "../../services/fibrous/health.js";
|
|
3
|
+
import { createSpinner, formatResult, success, warn } from "../../lib/format.js";
|
|
4
|
+
export function registerStatusCommand(program) {
|
|
5
|
+
program
|
|
6
|
+
.command("status")
|
|
7
|
+
.description("Check authentication status and Fibrous API health")
|
|
8
|
+
.action(async () => {
|
|
9
|
+
const spinner = createSpinner("Checking status...").start();
|
|
10
|
+
try {
|
|
11
|
+
const session = loadSession();
|
|
12
|
+
const health = await checkFibrousHealth();
|
|
13
|
+
spinner.stop();
|
|
14
|
+
if (!session) {
|
|
15
|
+
console.log(warn("Not authenticated"));
|
|
16
|
+
console.log(" Run 'starkfi auth login' or 'starkfi auth import' to connect a wallet.\n");
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
console.log(success("Authenticated"));
|
|
20
|
+
console.log(formatResult({
|
|
21
|
+
type: session.type,
|
|
22
|
+
network: session.network,
|
|
23
|
+
address: session.address,
|
|
24
|
+
}));
|
|
25
|
+
console.log();
|
|
26
|
+
}
|
|
27
|
+
if (health.ok) {
|
|
28
|
+
console.log(success("Fibrous Starknet API: Online"));
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
console.log(warn(`Fibrous Starknet API: ${health.message}`));
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
spinner.fail("Status check failed");
|
|
36
|
+
console.error(error instanceof Error ? error.message : error);
|
|
37
|
+
process.exit(1);
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/commands/trade/status.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAEjF,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACrD,OAAO;SACL,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,oDAAoD,CAAC;SACjE,MAAM,CAAC,KAAK,IAAI,EAAE;QAClB,MAAM,OAAO,GAAG,aAAa,CAAC,oBAAoB,CAAC,CAAC,KAAK,EAAE,CAAC;QAE5D,IAAI,CAAC;YACJ,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,MAAM,kBAAkB,EAAE,CAAC;YAE1C,OAAO,CAAC,IAAI,EAAE,CAAC;YAEf,IAAI,CAAC,OAAO,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;gBACvC,OAAO,CAAC,GAAG,CACV,4EAA4E,CAC5E,CAAC;YACH,CAAC;iBAAM,CAAC;gBACP,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC;gBACtC,OAAO,CAAC,GAAG,CACV,YAAY,CAAC;oBACZ,IAAI,EAAE,OAAO,CAAC,IAAI;oBAClB,OAAO,EAAE,OAAO,CAAC,OAAO;oBACxB,OAAO,EAAE,OAAO,CAAC,OAAO;iBACxB,CAAC,CACF,CAAC;gBACF,OAAO,CAAC,GAAG,EAAE,CAAC;YACf,CAAC;YAED,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC,CAAC;YACtD,CAAC;iBAAM,CAAC;gBACP,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,yBAAyB,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAC9D,CAAC;QACF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YACpC,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;IACF,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"swap.d.ts","sourceRoot":"","sources":["../../../src/commands/trade/swap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASzC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4E1D"}
|