@0xwh1sker/mantle-cli 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +43 -0
  3. package/dist/commands/account.d.ts +3 -0
  4. package/dist/commands/account.d.ts.map +1 -0
  5. package/dist/commands/account.js +96 -0
  6. package/dist/commands/account.js.map +1 -0
  7. package/dist/commands/catalog.d.ts +3 -0
  8. package/dist/commands/catalog.d.ts.map +1 -0
  9. package/dist/commands/catalog.js +93 -0
  10. package/dist/commands/catalog.js.map +1 -0
  11. package/dist/commands/chain.d.ts +3 -0
  12. package/dist/commands/chain.d.ts.map +1 -0
  13. package/dist/commands/chain.js +65 -0
  14. package/dist/commands/chain.js.map +1 -0
  15. package/dist/commands/defi-aave.d.ts +11 -0
  16. package/dist/commands/defi-aave.d.ts.map +1 -0
  17. package/dist/commands/defi-aave.js +216 -0
  18. package/dist/commands/defi-aave.js.map +1 -0
  19. package/dist/commands/defi-lp.d.ts +13 -0
  20. package/dist/commands/defi-lp.d.ts.map +1 -0
  21. package/dist/commands/defi-lp.js +496 -0
  22. package/dist/commands/defi-lp.js.map +1 -0
  23. package/dist/commands/defi-swap.d.ts +11 -0
  24. package/dist/commands/defi-swap.d.ts.map +1 -0
  25. package/dist/commands/defi-swap.js +206 -0
  26. package/dist/commands/defi-swap.js.map +1 -0
  27. package/dist/commands/defi.d.ts +3 -0
  28. package/dist/commands/defi.d.ts.map +1 -0
  29. package/dist/commands/defi.js +358 -0
  30. package/dist/commands/defi.js.map +1 -0
  31. package/dist/commands/diagnostics.d.ts +3 -0
  32. package/dist/commands/diagnostics.d.ts.map +1 -0
  33. package/dist/commands/diagnostics.js +76 -0
  34. package/dist/commands/diagnostics.js.map +1 -0
  35. package/dist/commands/indexer.d.ts +3 -0
  36. package/dist/commands/indexer.d.ts.map +1 -0
  37. package/dist/commands/indexer.js +92 -0
  38. package/dist/commands/indexer.js.map +1 -0
  39. package/dist/commands/registry.d.ts +3 -0
  40. package/dist/commands/registry.d.ts.map +1 -0
  41. package/dist/commands/registry.js +76 -0
  42. package/dist/commands/registry.js.map +1 -0
  43. package/dist/commands/token.d.ts +3 -0
  44. package/dist/commands/token.d.ts.map +1 -0
  45. package/dist/commands/token.js +100 -0
  46. package/dist/commands/token.js.map +1 -0
  47. package/dist/formatter.d.ts +20 -0
  48. package/dist/formatter.d.ts.map +1 -0
  49. package/dist/formatter.js +98 -0
  50. package/dist/formatter.js.map +1 -0
  51. package/dist/index.d.ts +3 -0
  52. package/dist/index.d.ts.map +1 -0
  53. package/dist/index.js +76 -0
  54. package/dist/index.js.map +1 -0
  55. package/dist/utils.d.ts +7 -0
  56. package/dist/utils.d.ts.map +1 -0
  57. package/dist/utils.js +62 -0
  58. package/dist/utils.js.map +1 -0
  59. package/package.json +43 -0
@@ -0,0 +1,496 @@
1
+ import { allTools } from "@0xwh1sker/mantle-core/tools/index.js";
2
+ import { formatKeyValue, formatTable, formatJson } from "../formatter.js";
3
+ import { parseIntegerOption, parseNumberOption, parseJsonArray } from "../utils.js";
4
+ /**
5
+ * Liquidity provision operations:
6
+ * lp add — Build unsigned add-liquidity transaction
7
+ * lp remove — Build unsigned remove-liquidity transaction
8
+ * lp positions — List V3 LP positions for an owner
9
+ * lp pool-state — Read V3 pool on-chain state (tick, price, liquidity)
10
+ * lp analyze — Deep pool analysis (APR, risk, investment projections)
11
+ * lp collect-fees — Build unsigned fee collection transaction
12
+ * lp suggest-ticks — Suggest tick ranges for V3 LP
13
+ */
14
+ export function registerLp(parent) {
15
+ const group = parent
16
+ .command("lp")
17
+ .description("Liquidity provision operations (build unsigned transactions)");
18
+ // ── add ─────────────────────────────────────────────────────────────
19
+ group
20
+ .command("add")
21
+ .description("Build unsigned add-liquidity transaction. " +
22
+ "V3 (agni/fluxion) mints an NFT position; Merchant Moe LB adds to bins.\n" +
23
+ "Amount modes: provide --amount-a + --amount-b, OR --amount-usd for automatic sizing.")
24
+ .requiredOption("--provider <provider>", "DEX provider: agni, fluxion, or merchant_moe")
25
+ .requiredOption("--token-a <token>", "first token symbol or address")
26
+ .requiredOption("--token-b <token>", "second token symbol or address")
27
+ .option("--amount-a <amount>", "decimal amount of token A (required unless --amount-usd is used)")
28
+ .option("--amount-b <amount>", "decimal amount of token B (required unless --amount-usd is used)")
29
+ .option("--amount-usd <usd>", "USD amount to invest (auto-splits between tokens using live prices and pool state)", (v) => parseNumberOption(v, "--amount-usd"))
30
+ .requiredOption("--recipient <address>", "address to receive LP position")
31
+ .option("--slippage-bps <bps>", "slippage tolerance in basis points (default: 50)", (v) => parseIntegerOption(v, "--slippage-bps"))
32
+ .option("--fee-tier <tier>", "V3 fee tier (default: 3000). For agni/fluxion", (v) => parseNumberOption(v, "--fee-tier"))
33
+ .option("--tick-lower <tick>", "lower tick bound. For agni/fluxion. Default: full range", (v) => parseIntegerOption(v, "--tick-lower"))
34
+ .option("--tick-upper <tick>", "upper tick bound. For agni/fluxion. Default: full range", (v) => parseIntegerOption(v, "--tick-upper"))
35
+ .option("--bin-step <step>", "LB bin step (default: 20). For merchant_moe", (v) => parseIntegerOption(v, "--bin-step"))
36
+ .option("--active-id <id>", "active bin ID. For merchant_moe", (v) => parseIntegerOption(v, "--active-id"))
37
+ .option("--id-slippage <slippage>", "bin ID slippage tolerance. For merchant_moe", (v) => parseIntegerOption(v, "--id-slippage"))
38
+ .option("--delta-ids <json>", "relative bin IDs as JSON array. For merchant_moe")
39
+ .option("--distribution-x <json>", "token X distribution per bin as JSON array. For merchant_moe")
40
+ .option("--distribution-y <json>", "token Y distribution per bin as JSON array. For merchant_moe")
41
+ .action(async (opts, cmd) => {
42
+ const globals = cmd.optsWithGlobals();
43
+ const hasTokenAmounts = opts.amountA != null && opts.amountB != null;
44
+ const hasUsdAmount = opts.amountUsd != null;
45
+ if (!hasTokenAmounts && !hasUsdAmount) {
46
+ throw new Error("Provide either (--amount-a + --amount-b) or --amount-usd.");
47
+ }
48
+ const result = await allTools["mantle_buildAddLiquidity"].handler({
49
+ provider: opts.provider,
50
+ token_a: opts.tokenA,
51
+ token_b: opts.tokenB,
52
+ amount_a: opts.amountA != null ? String(opts.amountA) : undefined,
53
+ amount_b: opts.amountB != null ? String(opts.amountB) : undefined,
54
+ amount_usd: opts.amountUsd,
55
+ recipient: opts.recipient,
56
+ slippage_bps: opts.slippageBps,
57
+ fee_tier: opts.feeTier,
58
+ tick_lower: opts.tickLower,
59
+ tick_upper: opts.tickUpper,
60
+ bin_step: opts.binStep,
61
+ active_id: opts.activeId,
62
+ id_slippage: opts.idSlippage,
63
+ delta_ids: opts.deltaIds ? parseJsonArray(opts.deltaIds, "--delta-ids") : undefined,
64
+ distribution_x: opts.distributionX
65
+ ? parseJsonArray(opts.distributionX, "--distribution-x")
66
+ : undefined,
67
+ distribution_y: opts.distributionY
68
+ ? parseJsonArray(opts.distributionY, "--distribution-y")
69
+ : undefined,
70
+ network: globals.network
71
+ });
72
+ if (globals.json) {
73
+ formatJson(result);
74
+ }
75
+ else {
76
+ formatUnsignedTxResult(result);
77
+ }
78
+ });
79
+ // ── remove ──────────────────────────────────────────────────────────
80
+ group
81
+ .command("remove")
82
+ .description("Build unsigned remove-liquidity transaction. " +
83
+ "V3 uses decreaseLiquidity+collect; Merchant Moe LB removes from bins.\n" +
84
+ "V3 amount modes: --liquidity (exact) or --percentage (1-100, reads position on-chain).")
85
+ .requiredOption("--provider <provider>", "DEX provider: agni, fluxion, or merchant_moe")
86
+ .requiredOption("--recipient <address>", "address to receive withdrawn tokens")
87
+ .option("--token-id <id>", "V3 NFT position token ID. For agni/fluxion")
88
+ .option("--liquidity <amount>", "exact amount of liquidity to remove. For agni/fluxion")
89
+ .option("--percentage <pct>", "percentage of position to remove (1-100). For agni/fluxion. Reads liquidity on-chain.", (v) => parseNumberOption(v, "--percentage"))
90
+ .option("--token-a <token>", "first token symbol or address. For merchant_moe")
91
+ .option("--token-b <token>", "second token symbol or address. For merchant_moe")
92
+ .option("--bin-step <step>", "LB bin step. For merchant_moe", (v) => parseIntegerOption(v, "--bin-step"))
93
+ .option("--ids <json>", "bin IDs to remove from as JSON array. For merchant_moe")
94
+ .option("--amounts <json>", "amounts per bin as JSON array. For merchant_moe")
95
+ .action(async (opts, cmd) => {
96
+ const globals = cmd.optsWithGlobals();
97
+ const provider = String(opts.provider).toLowerCase();
98
+ // V3 providers require --token-id and either --liquidity or --percentage
99
+ if (provider === "agni" || provider === "fluxion") {
100
+ if (!opts.tokenId) {
101
+ throw new Error("--token-id is required for V3 providers (agni/fluxion).");
102
+ }
103
+ if (!opts.liquidity && opts.percentage == null) {
104
+ throw new Error("--liquidity or --percentage is required for V3 providers (agni/fluxion). " +
105
+ "Use --percentage 100 to remove the full position.");
106
+ }
107
+ if (opts.liquidity && opts.percentage != null) {
108
+ throw new Error("--liquidity and --percentage are mutually exclusive. Use one or the other.");
109
+ }
110
+ if (opts.liquidity) {
111
+ const liq = BigInt(opts.liquidity);
112
+ if (liq <= 0n) {
113
+ throw new Error("--liquidity must be a positive value. " +
114
+ "A zero-liquidity removal would produce a no-op or fee-collect-only transaction.");
115
+ }
116
+ }
117
+ }
118
+ const result = await allTools["mantle_buildRemoveLiquidity"].handler({
119
+ provider: opts.provider,
120
+ recipient: opts.recipient,
121
+ token_id: opts.tokenId,
122
+ liquidity: opts.liquidity,
123
+ percentage: opts.percentage,
124
+ token_a: opts.tokenA,
125
+ token_b: opts.tokenB,
126
+ bin_step: opts.binStep,
127
+ ids: opts.ids ? parseJsonArray(opts.ids, "--ids") : undefined,
128
+ amounts: opts.amounts ? parseJsonArray(opts.amounts, "--amounts") : undefined,
129
+ network: globals.network
130
+ });
131
+ if (globals.json) {
132
+ formatJson(result);
133
+ }
134
+ else {
135
+ formatUnsignedTxResult(result);
136
+ }
137
+ });
138
+ // ── positions ───────────────────────────────────────────────────────
139
+ group
140
+ .command("positions")
141
+ .description("List V3 LP positions for an owner across Agni and Fluxion")
142
+ .requiredOption("--owner <address>", "wallet address to query")
143
+ .option("--provider <provider>", "filter by provider: agni or fluxion")
144
+ .option("--include-empty", "include zero-liquidity positions", false)
145
+ .action(async (opts, cmd) => {
146
+ const globals = cmd.optsWithGlobals();
147
+ const result = await allTools["mantle_getV3Positions"].handler({
148
+ owner: opts.owner,
149
+ provider: opts.provider,
150
+ include_empty: opts.includeEmpty,
151
+ network: globals.network
152
+ });
153
+ if (globals.json) {
154
+ formatJson(result);
155
+ }
156
+ else {
157
+ const data = result;
158
+ const positions = (data.positions ?? []);
159
+ if (positions.length === 0) {
160
+ console.log("\n No V3 LP positions found.\n");
161
+ }
162
+ else {
163
+ formatTable(positions, [
164
+ { key: "token_id", label: "Token ID" },
165
+ { key: "provider", label: "Provider" },
166
+ {
167
+ key: "token0",
168
+ label: "Token 0",
169
+ format: (v) => v?.symbol ?? "?"
170
+ },
171
+ {
172
+ key: "token1",
173
+ label: "Token 1",
174
+ format: (v) => v?.symbol ?? "?"
175
+ },
176
+ { key: "fee", label: "Fee", align: "right" },
177
+ { key: "tick_lower", label: "Tick Lo", align: "right" },
178
+ { key: "tick_upper", label: "Tick Hi", align: "right" },
179
+ { key: "liquidity", label: "Liquidity", align: "right" },
180
+ {
181
+ key: "in_range",
182
+ label: "In Range",
183
+ format: (v) => v === true ? "YES" : v === false ? "NO" : "?"
184
+ }
185
+ ]);
186
+ }
187
+ }
188
+ });
189
+ // ── pool-state ──────────────────────────────────────────────────────
190
+ group
191
+ .command("pool-state")
192
+ .description("Read V3 pool on-chain state (tick, price, liquidity)")
193
+ .option("--pool <address>", "pool contract address (or use --token-a/--token-b/--fee-tier)")
194
+ .option("--token-a <token>", "first token symbol or address")
195
+ .option("--token-b <token>", "second token symbol or address")
196
+ .option("--fee-tier <tier>", "V3 fee tier", (v) => parseNumberOption(v, "--fee-tier"))
197
+ .option("--provider <provider>", "DEX provider: agni or fluxion", "agni")
198
+ .action(async (opts, cmd) => {
199
+ const globals = cmd.optsWithGlobals();
200
+ const result = await allTools["mantle_getV3PoolState"].handler({
201
+ pool_address: opts.pool,
202
+ token_a: opts.tokenA,
203
+ token_b: opts.tokenB,
204
+ fee_tier: opts.feeTier,
205
+ provider: opts.provider,
206
+ network: globals.network
207
+ });
208
+ if (globals.json) {
209
+ formatJson(result);
210
+ }
211
+ else {
212
+ const data = result;
213
+ formatKeyValue({
214
+ pool: data.pool_address,
215
+ provider: data.provider,
216
+ current_tick: data.current_tick,
217
+ tick_spacing: data.tick_spacing,
218
+ liquidity: data.pool_liquidity,
219
+ price_0_per_1: data.price_token0_per_token1,
220
+ price_1_per_0: data.price_token1_per_token0
221
+ }, {
222
+ labels: {
223
+ pool: "Pool",
224
+ provider: "Provider",
225
+ current_tick: "Current Tick",
226
+ tick_spacing: "Tick Spacing",
227
+ liquidity: "Pool Liquidity",
228
+ price_0_per_1: "Price (token0/token1)",
229
+ price_1_per_0: "Price (token1/token0)"
230
+ }
231
+ });
232
+ }
233
+ });
234
+ // ── collect-fees ────────────────────────────────────────────────────
235
+ group
236
+ .command("collect-fees")
237
+ .description("Build unsigned V3 fee collection transaction")
238
+ .requiredOption("--provider <provider>", "DEX provider: agni or fluxion")
239
+ .requiredOption("--token-id <id>", "V3 NFT position token ID")
240
+ .requiredOption("--recipient <address>", "address to receive collected fees")
241
+ .action(async (opts, cmd) => {
242
+ const globals = cmd.optsWithGlobals();
243
+ const result = await allTools["mantle_buildCollectFees"].handler({
244
+ provider: opts.provider,
245
+ token_id: opts.tokenId,
246
+ recipient: opts.recipient,
247
+ network: globals.network
248
+ });
249
+ if (globals.json) {
250
+ formatJson(result);
251
+ }
252
+ else {
253
+ formatUnsignedTxResult(result);
254
+ }
255
+ });
256
+ // ── suggest-ticks ───────────────────────────────────────────────────
257
+ group
258
+ .command("suggest-ticks")
259
+ .description("Suggest tick ranges for V3 LP (wide/moderate/tight strategies)")
260
+ .option("--pool <address>", "pool contract address (or use --token-a/--token-b/--fee-tier)")
261
+ .option("--token-a <token>", "first token symbol or address")
262
+ .option("--token-b <token>", "second token symbol or address")
263
+ .option("--fee-tier <tier>", "V3 fee tier", (v) => parseNumberOption(v, "--fee-tier"))
264
+ .option("--provider <provider>", "DEX provider: agni or fluxion", "agni")
265
+ .action(async (opts, cmd) => {
266
+ const globals = cmd.optsWithGlobals();
267
+ const result = await allTools["mantle_suggestTickRange"].handler({
268
+ pool_address: opts.pool,
269
+ token_a: opts.tokenA,
270
+ token_b: opts.tokenB,
271
+ fee_tier: opts.feeTier,
272
+ provider: opts.provider,
273
+ network: globals.network
274
+ });
275
+ if (globals.json) {
276
+ formatJson(result);
277
+ }
278
+ else {
279
+ const data = result;
280
+ console.log(`\n Current Tick: ${data.current_tick} Tick Spacing: ${data.tick_spacing}\n`);
281
+ const suggestions = (data.suggestions ?? []);
282
+ formatTable(suggestions, [
283
+ { key: "strategy", label: "Strategy" },
284
+ { key: "tick_lower", label: "Tick Lower", align: "right" },
285
+ { key: "tick_upper", label: "Tick Upper", align: "right" },
286
+ {
287
+ key: "price_lower",
288
+ label: "Price Lower",
289
+ align: "right",
290
+ format: (v) => Number(v).toFixed(4)
291
+ },
292
+ {
293
+ key: "price_upper",
294
+ label: "Price Upper",
295
+ align: "right",
296
+ format: (v) => Number(v).toFixed(4)
297
+ }
298
+ ]);
299
+ }
300
+ });
301
+ // ── find-pools ──────────────────────────────────────────────────────
302
+ group
303
+ .command("find-pools")
304
+ .description("Discover all available pools for a token pair across Agni, Fluxion, and Merchant Moe. " +
305
+ "Queries factory contracts on-chain — the authoritative source.")
306
+ .requiredOption("--token-a <token>", "first token symbol or address")
307
+ .requiredOption("--token-b <token>", "second token symbol or address")
308
+ .action(async (opts, cmd) => {
309
+ const globals = cmd.optsWithGlobals();
310
+ const result = await allTools["mantle_findPools"].handler({
311
+ token_a: opts.tokenA,
312
+ token_b: opts.tokenB,
313
+ network: globals.network
314
+ });
315
+ if (globals.json) {
316
+ formatJson(result);
317
+ }
318
+ else {
319
+ const data = result;
320
+ const tokenA = data.token_a;
321
+ const tokenB = data.token_b;
322
+ console.log(`\n ${tokenA.symbol}/${tokenB.symbol} — ` +
323
+ `${data.with_liquidity} pools with liquidity (${data.total_found} total)\n`);
324
+ const pools = (data.pools ?? []);
325
+ formatTable(pools, [
326
+ { key: "provider", label: "DEX" },
327
+ {
328
+ key: "fee_tier",
329
+ label: "Fee Tier",
330
+ align: "right",
331
+ format: (v) => v != null ? `${Number(v) / 10000}%` : "-"
332
+ },
333
+ {
334
+ key: "bin_step",
335
+ label: "Bin Step",
336
+ align: "right",
337
+ format: (v) => v != null ? String(v) : "-"
338
+ },
339
+ { key: "pool_address", label: "Pool Address" },
340
+ {
341
+ key: "has_liquidity",
342
+ label: "Liquid",
343
+ format: (v) => v === true ? "YES" : "NO"
344
+ },
345
+ {
346
+ key: "liquidity_raw",
347
+ label: "Liquidity",
348
+ align: "right",
349
+ format: (v) => {
350
+ const n = BigInt(v);
351
+ if (n === 0n)
352
+ return "-";
353
+ if (n > 10n ** 18n)
354
+ return (Number(n / (10n ** 12n)) / 1e6).toFixed(1) + "T";
355
+ return n.toString();
356
+ }
357
+ }
358
+ ]);
359
+ }
360
+ });
361
+ // ── analyze ─────────────────────────────────────────────────────────
362
+ group
363
+ .command("analyze")
364
+ .description("Deep pool analysis: fee APR, multi-range comparison, risk scoring, investment projections. " +
365
+ "Fetches 24h volume and TVL from DexScreener to compute concentrated APR across 10 range brackets.")
366
+ .option("--pool <address>", "pool contract address (or use --token-a/--token-b/--fee-tier)")
367
+ .option("--token-a <token>", "first token symbol or address")
368
+ .option("--token-b <token>", "second token symbol or address")
369
+ .option("--fee-tier <tier>", "V3 fee tier", (v) => parseNumberOption(v, "--fee-tier"))
370
+ .option("--provider <provider>", "DEX provider: agni or fluxion", "agni")
371
+ .option("--investment-usd <amount>", "USD amount to project returns for (default: 1000)", (v) => parseNumberOption(v, "--investment-usd"))
372
+ .action(async (opts, cmd) => {
373
+ const globals = cmd.optsWithGlobals();
374
+ const result = await allTools["mantle_analyzePool"].handler({
375
+ pool_address: opts.pool,
376
+ token_a: opts.tokenA,
377
+ token_b: opts.tokenB,
378
+ fee_tier: opts.feeTier,
379
+ provider: opts.provider,
380
+ investment_usd: opts.investmentUsd,
381
+ network: globals.network
382
+ });
383
+ if (globals.json) {
384
+ formatJson(result);
385
+ }
386
+ else {
387
+ const data = result;
388
+ const market = data.market_data;
389
+ const risk = data.risk;
390
+ formatKeyValue({
391
+ pool: data.pool_address,
392
+ provider: data.provider,
393
+ fee: `${data.fee_rate_pct.toFixed(2)}%`,
394
+ tvl: market.tvl_usd != null ? `$${Number(market.tvl_usd).toLocaleString()}` : "N/A",
395
+ volume_24h: market.volume_24h_usd != null ? `$${Number(market.volume_24h_usd).toLocaleString()}` : "N/A",
396
+ base_fee_apr: market.base_fee_apr_pct != null ? `${market.base_fee_apr_pct}%` : "N/A",
397
+ price_change_24h: market.price_change_24h_pct != null ? `${market.price_change_24h_pct}%` : "N/A",
398
+ risk_overall: risk.overall,
399
+ recommended_range: data.recommended_range ?? "N/A"
400
+ }, {
401
+ labels: {
402
+ pool: "Pool",
403
+ provider: "Provider",
404
+ fee: "Fee Rate",
405
+ tvl: "TVL",
406
+ volume_24h: "24h Volume",
407
+ base_fee_apr: "Base Fee APR",
408
+ price_change_24h: "24h Price Change",
409
+ risk_overall: "Risk Level",
410
+ recommended_range: "Recommended Range"
411
+ }
412
+ });
413
+ const ranges = (data.ranges ?? []);
414
+ console.log("\n Range Analysis:");
415
+ formatTable(ranges, [
416
+ { key: "label", label: "Range" },
417
+ {
418
+ key: "fee_apr_pct",
419
+ label: "Fee APR",
420
+ align: "right",
421
+ format: (v) => `${v}%`
422
+ },
423
+ {
424
+ key: "concentration_factor",
425
+ label: "Conc. Factor",
426
+ align: "right",
427
+ format: (v) => `${v}x`
428
+ },
429
+ {
430
+ key: "daily_fee_usd",
431
+ label: "Daily Fee",
432
+ align: "right",
433
+ format: (v) => v != null ? `$${v}` : "N/A"
434
+ },
435
+ {
436
+ key: "monthly_fee_usd",
437
+ label: "Monthly Fee",
438
+ align: "right",
439
+ format: (v) => v != null ? `$${v}` : "N/A"
440
+ },
441
+ { key: "rebalance_risk", label: "Rebal. Risk" }
442
+ ]);
443
+ const riskDetails = (risk.details ?? []);
444
+ if (riskDetails.length > 0) {
445
+ console.log("\n Risk Details:");
446
+ for (const d of riskDetails) {
447
+ console.log(` - ${d}`);
448
+ }
449
+ console.log();
450
+ }
451
+ }
452
+ });
453
+ }
454
+ // ---------------------------------------------------------------------------
455
+ // Shared formatter for unsigned-tx results
456
+ // ---------------------------------------------------------------------------
457
+ function formatUnsignedTxResult(data) {
458
+ const tx = data.unsigned_tx;
459
+ const warnings = (data.warnings ?? []);
460
+ formatKeyValue({
461
+ intent: data.intent,
462
+ human_summary: data.human_summary,
463
+ tx_to: tx?.to,
464
+ tx_value: tx?.value,
465
+ tx_chainId: tx?.chainId,
466
+ tx_data: truncateHex(tx?.data),
467
+ tx_gas: tx?.gas ?? "auto",
468
+ built_at: data.built_at_utc
469
+ }, {
470
+ labels: {
471
+ intent: "Intent",
472
+ human_summary: "Summary",
473
+ tx_to: "To",
474
+ tx_value: "Value (hex)",
475
+ tx_chainId: "Chain ID",
476
+ tx_data: "Calldata",
477
+ tx_gas: "Gas Limit",
478
+ built_at: "Built At"
479
+ }
480
+ });
481
+ if (warnings.length > 0) {
482
+ console.log(" Warnings:");
483
+ for (const w of warnings) {
484
+ console.log(` - ${w}`);
485
+ }
486
+ console.log();
487
+ }
488
+ }
489
+ function truncateHex(hex) {
490
+ if (!hex)
491
+ return "null";
492
+ if (hex.length <= 66)
493
+ return hex;
494
+ return `${hex.slice(0, 34)}...${hex.slice(-16)} (${hex.length} chars)`;
495
+ }
496
+ //# sourceMappingURL=defi-lp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defi-lp.js","sourceRoot":"","sources":["../../src/commands/defi-lp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { Command } from "commander";
2
+ /**
3
+ * DEX swap & token operations:
4
+ * swap build-swap — Build unsigned swap transaction
5
+ * swap approve — Build unsigned ERC-20 approve for whitelisted spender
6
+ * swap wrap-mnt — Build unsigned wrap MNT → WMNT
7
+ * swap unwrap-mnt — Build unsigned unwrap WMNT → MNT
8
+ * swap pairs — List known trading pairs & pool parameters
9
+ */
10
+ export declare function registerSwap(parent: Command): void;
11
+ //# sourceMappingURL=defi-swap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defi-swap.d.ts","sourceRoot":"","sources":["../../src/commands/defi-swap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAoKlD"}