@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,206 @@
1
+ import { allTools } from "@0xwh1sker/mantle-core/tools/index.js";
2
+ import { formatKeyValue, formatTable, formatJson } from "../formatter.js";
3
+ import { parseNumberOption, parseIntegerOption } from "../utils.js";
4
+ /**
5
+ * DEX swap & token operations:
6
+ * swap build-swap — Build unsigned swap transaction
7
+ * swap approve — Build unsigned ERC-20 approve for whitelisted spender
8
+ * swap wrap-mnt — Build unsigned wrap MNT → WMNT
9
+ * swap unwrap-mnt — Build unsigned unwrap WMNT → MNT
10
+ * swap pairs — List known trading pairs & pool parameters
11
+ */
12
+ export function registerSwap(parent) {
13
+ const group = parent
14
+ .command("swap")
15
+ .description("DEX swap & token operations (build unsigned transactions)");
16
+ // ── build-swap ──────────────────────────────────────────────────────
17
+ group
18
+ .command("build-swap")
19
+ .description("Build an unsigned swap transaction for Agni, Fluxion, or Merchant Moe")
20
+ .requiredOption("--provider <provider>", "DEX provider: agni, fluxion, or merchant_moe")
21
+ .requiredOption("--in <token>", "input token symbol or address")
22
+ .requiredOption("--out <token>", "output token symbol or address")
23
+ .requiredOption("--amount <amount>", "human-readable amount of input token")
24
+ .requiredOption("--recipient <address>", "address to receive output tokens")
25
+ .option("--amount-out-min <amount>", "minimum output (raw units from swap-quote). '0' if unknown (not recommended)")
26
+ .option("--slippage-bps <bps>", "slippage tolerance in basis points (default: 50 = 0.5%)", (v) => parseIntegerOption(v, "--slippage-bps"))
27
+ .option("--fee-tier <tier>", "V3 fee tier (500, 3000, 10000). Auto-resolved from known pairs", (v) => parseNumberOption(v, "--fee-tier"))
28
+ .option("--bin-step <step>", "LB bin step (1, 5, 20). Auto-resolved from known pairs", (v) => parseIntegerOption(v, "--bin-step"))
29
+ .action(async (opts, cmd) => {
30
+ const globals = cmd.optsWithGlobals();
31
+ const result = await allTools["mantle_buildSwap"].handler({
32
+ provider: opts.provider,
33
+ token_in: opts.in,
34
+ token_out: opts.out,
35
+ amount_in: String(opts.amount),
36
+ recipient: opts.recipient,
37
+ amount_out_min: opts.amountOutMin ? String(opts.amountOutMin) : undefined,
38
+ slippage_bps: opts.slippageBps,
39
+ fee_tier: opts.feeTier,
40
+ bin_step: opts.binStep,
41
+ network: globals.network
42
+ });
43
+ if (globals.json) {
44
+ formatJson(result);
45
+ }
46
+ else {
47
+ formatUnsignedTxResult(result);
48
+ }
49
+ });
50
+ // ── approve ─────────────────────────────────────────────────────────
51
+ group
52
+ .command("approve")
53
+ .description("Build an unsigned ERC-20 approve for a whitelisted spender")
54
+ .requiredOption("--token <token>", "token symbol or address")
55
+ .requiredOption("--spender <address>", "whitelisted contract address to approve")
56
+ .requiredOption("--amount <amount>", "decimal amount to approve, or 'max' for unlimited")
57
+ .option("--owner <address>", "wallet address (used to check existing allowance)")
58
+ .action(async (opts, cmd) => {
59
+ const globals = cmd.optsWithGlobals();
60
+ const result = await allTools["mantle_buildApprove"].handler({
61
+ token: opts.token,
62
+ spender: opts.spender,
63
+ amount: String(opts.amount),
64
+ owner: opts.owner,
65
+ network: globals.network
66
+ });
67
+ if (globals.json) {
68
+ formatJson(result);
69
+ }
70
+ else {
71
+ formatUnsignedTxResult(result);
72
+ }
73
+ });
74
+ // ── wrap-mnt ────────────────────────────────────────────────────────
75
+ group
76
+ .command("wrap-mnt")
77
+ .description("Build an unsigned wrap MNT → WMNT transaction")
78
+ .requiredOption("--amount <amount>", "decimal amount of MNT to wrap")
79
+ .action(async (opts, cmd) => {
80
+ const globals = cmd.optsWithGlobals();
81
+ const result = await allTools["mantle_buildWrapMnt"].handler({
82
+ amount: String(opts.amount),
83
+ network: globals.network
84
+ });
85
+ if (globals.json) {
86
+ formatJson(result);
87
+ }
88
+ else {
89
+ formatUnsignedTxResult(result);
90
+ }
91
+ });
92
+ // ── unwrap-mnt ──────────────────────────────────────────────────────
93
+ group
94
+ .command("unwrap-mnt")
95
+ .description("Build an unsigned unwrap WMNT → MNT transaction")
96
+ .requiredOption("--amount <amount>", "decimal amount of WMNT to unwrap")
97
+ .action(async (opts, cmd) => {
98
+ const globals = cmd.optsWithGlobals();
99
+ const result = await allTools["mantle_buildUnwrapMnt"].handler({
100
+ amount: String(opts.amount),
101
+ network: globals.network
102
+ });
103
+ if (globals.json) {
104
+ formatJson(result);
105
+ }
106
+ else {
107
+ formatUnsignedTxResult(result);
108
+ }
109
+ });
110
+ // ── pairs ───────────────────────────────────────────────────────────
111
+ group
112
+ .command("pairs")
113
+ .description("List known trading pairs and pool parameters per DEX")
114
+ .option("--provider <provider>", "filter by DEX: agni, fluxion, or merchant_moe")
115
+ .action(async (opts, cmd) => {
116
+ const globals = cmd.optsWithGlobals();
117
+ const result = await allTools["mantle_getSwapPairs"].handler({
118
+ provider: opts.provider,
119
+ network: globals.network
120
+ });
121
+ if (globals.json) {
122
+ formatJson(result);
123
+ }
124
+ else {
125
+ const data = result;
126
+ const pairColumns = [
127
+ { key: "tokenA", label: "Token A" },
128
+ { key: "tokenB", label: "Token B" },
129
+ { key: "pool", label: "Pool Address" },
130
+ {
131
+ key: "fee_tier",
132
+ label: "Fee Tier",
133
+ align: "right",
134
+ format: (v) => (v === undefined ? "-" : String(v))
135
+ },
136
+ {
137
+ key: "bin_step",
138
+ label: "Bin Step",
139
+ align: "right",
140
+ format: (v) => (v === undefined ? "-" : String(v))
141
+ }
142
+ ];
143
+ if (data.pairs) {
144
+ // Single provider response
145
+ const pairs = data.pairs;
146
+ console.log(`\n Provider: ${data.provider} (${data.count} pairs)\n`);
147
+ formatTable(pairs, pairColumns);
148
+ }
149
+ else {
150
+ // All providers — tool returns `pairs_by_provider`
151
+ const grouped = (data.pairs_by_provider ?? data.providers ?? {});
152
+ for (const [provider, pairList] of Object.entries(grouped)) {
153
+ const pairs = (pairList ?? []);
154
+ console.log(`\n Provider: ${provider} (${pairs.length} pairs)\n`);
155
+ formatTable(pairs, pairColumns);
156
+ }
157
+ if (Object.keys(grouped).length === 0) {
158
+ console.log("\n No trading pairs found.\n");
159
+ }
160
+ }
161
+ }
162
+ });
163
+ }
164
+ // ---------------------------------------------------------------------------
165
+ // Shared formatter for unsigned-tx results
166
+ // ---------------------------------------------------------------------------
167
+ function formatUnsignedTxResult(data) {
168
+ const tx = data.unsigned_tx;
169
+ const warnings = (data.warnings ?? []);
170
+ formatKeyValue({
171
+ intent: data.intent,
172
+ human_summary: data.human_summary,
173
+ tx_to: tx?.to,
174
+ tx_value: tx?.value,
175
+ tx_chainId: tx?.chainId,
176
+ tx_data: truncateHex(tx?.data),
177
+ tx_gas: tx?.gas ?? "auto",
178
+ built_at: data.built_at_utc
179
+ }, {
180
+ labels: {
181
+ intent: "Intent",
182
+ human_summary: "Summary",
183
+ tx_to: "To",
184
+ tx_value: "Value (hex)",
185
+ tx_chainId: "Chain ID",
186
+ tx_data: "Calldata",
187
+ tx_gas: "Gas Limit",
188
+ built_at: "Built At"
189
+ }
190
+ });
191
+ if (warnings.length > 0) {
192
+ console.log(" Warnings:");
193
+ for (const w of warnings) {
194
+ console.log(` - ${w}`);
195
+ }
196
+ console.log();
197
+ }
198
+ }
199
+ function truncateHex(hex) {
200
+ if (!hex)
201
+ return "null";
202
+ if (hex.length <= 66)
203
+ return hex;
204
+ return `${hex.slice(0, 34)}...${hex.slice(-16)} (${hex.length} chars)`;
205
+ }
206
+ //# sourceMappingURL=defi-swap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defi-swap.js","sourceRoot":"","sources":["../../src/commands/defi-swap.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from "commander";
2
+ export declare function registerDefi(parent: Command): void;
3
+ //# sourceMappingURL=defi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defi.d.ts","sourceRoot":"","sources":["../../src/commands/defi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC,wBAAgB,YAAY,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAyYlD"}
@@ -0,0 +1,358 @@
1
+ import { allTools } from "@0xwh1sker/mantle-core/tools/index.js";
2
+ import { formatKeyValue, formatTable, formatJson } from "../formatter.js";
3
+ import { parseIntegerOption, parseNumberOption } from "../utils.js";
4
+ export function registerDefi(parent) {
5
+ const group = parent.command("defi").description("DeFi read-only operations");
6
+ group
7
+ .command("swap-quote")
8
+ .description("Get swap quotes for Agni and Merchant Moe routes")
9
+ .requiredOption("--in <token>", "input token symbol or address")
10
+ .requiredOption("--out <token>", "output token symbol or address")
11
+ .requiredOption("--amount <amount>", "human-readable amount in")
12
+ .option("--provider <provider>", "routing provider (agni, merchant_moe, best)", "best")
13
+ .option("--fee-tier <tier>", "optional V3 fee tier", (value) => parseNumberOption(value, "--fee-tier"))
14
+ .action(async (opts, cmd) => {
15
+ const globals = cmd.optsWithGlobals();
16
+ const result = await allTools["mantle_getSwapQuote"].handler({
17
+ token_in: opts.in,
18
+ token_out: opts.out,
19
+ amount_in: String(opts.amount),
20
+ provider: opts.provider,
21
+ fee_tier: opts.feeTier,
22
+ network: globals.network
23
+ });
24
+ if (globals.json) {
25
+ formatJson(result);
26
+ }
27
+ else {
28
+ const data = result;
29
+ const tokenIn = data.token_in;
30
+ const tokenOut = data.token_out;
31
+ formatKeyValue({
32
+ provider: data.provider,
33
+ token_in: `${tokenIn.symbol} (${tokenIn.address})`,
34
+ token_out: `${tokenOut.symbol} (${tokenOut.address})`,
35
+ amount_in: data.amount_in_decimal,
36
+ estimated_out: data.estimated_out_decimal,
37
+ minimum_out: data.minimum_out_decimal,
38
+ price_impact: data.price_impact_pct,
39
+ router: data.router_address,
40
+ route: data.route,
41
+ quoted_at: data.quoted_at_utc
42
+ }, {
43
+ labels: {
44
+ provider: "Provider",
45
+ token_in: "Token In",
46
+ token_out: "Token Out",
47
+ amount_in: "Amount In",
48
+ estimated_out: "Estimated Out",
49
+ minimum_out: "Minimum Out (0.5% slip)",
50
+ price_impact: "Price Impact %",
51
+ router: "Router Address",
52
+ route: "Route",
53
+ quoted_at: "Quoted At"
54
+ }
55
+ });
56
+ }
57
+ });
58
+ group
59
+ .command("pool-liquidity")
60
+ .description("Read pool reserves and liquidity metadata")
61
+ .argument("<pool-address>", "pool contract address")
62
+ .option("--provider <provider>", "DEX provider (agni, merchant_moe)", "agni")
63
+ .action(async (poolAddress, opts, cmd) => {
64
+ const globals = cmd.optsWithGlobals();
65
+ const result = await allTools["mantle_getPoolLiquidity"].handler({
66
+ pool_address: poolAddress,
67
+ provider: opts.provider,
68
+ network: globals.network
69
+ });
70
+ if (globals.json) {
71
+ formatJson(result);
72
+ }
73
+ else {
74
+ const data = result;
75
+ const token0 = data.token_0;
76
+ const token1 = data.token_1;
77
+ formatKeyValue({
78
+ pool_address: data.pool_address,
79
+ provider: data.provider,
80
+ token_0: `${token0.symbol} (${token0.address})`,
81
+ token_1: `${token1.symbol} (${token1.address})`,
82
+ reserve_0: data.reserve_0_decimal,
83
+ reserve_1: data.reserve_1_decimal,
84
+ total_liquidity_usd: data.total_liquidity_usd,
85
+ fee_tier: data.fee_tier,
86
+ collected_at: data.collected_at_utc
87
+ }, {
88
+ labels: {
89
+ pool_address: "Pool",
90
+ provider: "Provider",
91
+ token_0: "Token 0",
92
+ token_1: "Token 1",
93
+ reserve_0: "Reserve 0",
94
+ reserve_1: "Reserve 1",
95
+ total_liquidity_usd: "Liquidity (USD)",
96
+ fee_tier: "Fee Tier",
97
+ collected_at: "Collected At"
98
+ }
99
+ });
100
+ }
101
+ });
102
+ group
103
+ .command("pool-opportunities")
104
+ .description("Scan and rank pools for a token pair")
105
+ .requiredOption("--token-a <token>", "first token symbol or address")
106
+ .requiredOption("--token-b <token>", "second token symbol or address")
107
+ .option("--provider <provider>", "DEX provider filter (agni, merchant_moe, all)", "all")
108
+ .option("--max-results <n>", "max candidates (1-10)", (value) => parseIntegerOption(value, "--max-results"), 5)
109
+ .action(async (opts, cmd) => {
110
+ const globals = cmd.optsWithGlobals();
111
+ const result = await allTools["mantle_getPoolOpportunities"].handler({
112
+ token_a: opts.tokenA,
113
+ token_b: opts.tokenB,
114
+ provider: opts.provider,
115
+ max_results: opts.maxResults,
116
+ network: globals.network
117
+ });
118
+ if (globals.json) {
119
+ formatJson(result);
120
+ }
121
+ else {
122
+ const data = result;
123
+ const candidates = (data.candidates ?? []);
124
+ console.log(`\n Token A: ${data.token_a.symbol} Token B: ${data.token_b.symbol}\n`);
125
+ formatTable(candidates, [
126
+ { key: "provider", label: "Provider" },
127
+ { key: "pool_address", label: "Pool Address" },
128
+ {
129
+ key: "liquidity_usd",
130
+ label: "Liquidity (USD)",
131
+ align: "right",
132
+ format: (v) => (v === null ? "N/A" : String(v))
133
+ },
134
+ {
135
+ key: "volume_24h_usd",
136
+ label: "24h Volume (USD)",
137
+ align: "right",
138
+ format: (v) => (v === null ? "N/A" : String(v))
139
+ },
140
+ { key: "score", label: "Score", align: "right" }
141
+ ]);
142
+ }
143
+ });
144
+ group
145
+ .command("tvl")
146
+ .description("Protocol TVL for Mantle DeFi protocols")
147
+ .option("--protocol <protocol>", "protocol (agni, merchant_moe, all)", "all")
148
+ .action(async (opts, cmd) => {
149
+ const globals = cmd.optsWithGlobals();
150
+ const result = await allTools["mantle_getProtocolTvl"].handler({
151
+ protocol: opts.protocol,
152
+ network: globals.network
153
+ });
154
+ if (globals.json) {
155
+ formatJson(result);
156
+ }
157
+ else {
158
+ const data = result;
159
+ const breakdown = (data.breakdown ?? []);
160
+ formatTable(breakdown, [
161
+ { key: "protocol", label: "Protocol" },
162
+ {
163
+ key: "tvl_usd",
164
+ label: "TVL (USD)",
165
+ align: "right",
166
+ format: (v) => (v === null ? "N/A" : `$${Number(v).toLocaleString()}`)
167
+ },
168
+ { key: "source", label: "Source" },
169
+ { key: "updated_at_utc", label: "Updated At" }
170
+ ]);
171
+ }
172
+ });
173
+ group
174
+ .command("lending-markets")
175
+ .description("Aave v3 lending market metrics")
176
+ .option("--protocol <protocol>", "lending protocol (aave_v3, all)", "all")
177
+ .option("--asset <asset>", "optional asset filter (symbol or address)")
178
+ .action(async (opts, cmd) => {
179
+ const globals = cmd.optsWithGlobals();
180
+ const result = await allTools["mantle_getLendingMarkets"].handler({
181
+ protocol: opts.protocol,
182
+ asset: opts.asset,
183
+ network: globals.network
184
+ });
185
+ if (globals.json) {
186
+ formatJson(result);
187
+ }
188
+ else {
189
+ const data = result;
190
+ const markets = (data.markets ?? []);
191
+ formatTable(markets, [
192
+ { key: "asset", label: "Asset" },
193
+ { key: "supply_apy", label: "Supply APY%", align: "right" },
194
+ { key: "borrow_apy_variable", label: "Borrow APY%", align: "right" },
195
+ {
196
+ key: "tvl_usd",
197
+ label: "TVL (USD)",
198
+ align: "right",
199
+ format: (v) => (v === null ? "N/A" : `$${Number(v).toLocaleString()}`)
200
+ },
201
+ { key: "ltv", label: "LTV%", align: "right" },
202
+ { key: "liquidation_threshold", label: "Liq Threshold%", align: "right" }
203
+ ]);
204
+ }
205
+ });
206
+ group
207
+ .command("lb-state")
208
+ .description("Read Merchant Moe LB pair on-chain state (active bin, reserves)")
209
+ .option("--pair <address>", "LB pair address (or use --token-a/--token-b/--bin-step)")
210
+ .option("--token-a <token>", "first token symbol or address")
211
+ .option("--token-b <token>", "second token symbol or address")
212
+ .option("--bin-step <step>", "LB bin step", (v) => parseIntegerOption(v, "--bin-step"))
213
+ .action(async (opts, cmd) => {
214
+ const globals = cmd.optsWithGlobals();
215
+ const result = await allTools["mantle_getLBPairState"].handler({
216
+ pair_address: opts.pair,
217
+ token_a: opts.tokenA,
218
+ token_b: opts.tokenB,
219
+ bin_step: opts.binStep,
220
+ network: globals.network
221
+ });
222
+ if (globals.json) {
223
+ formatJson(result);
224
+ }
225
+ else {
226
+ const data = result;
227
+ formatKeyValue({
228
+ pair: data.pair_address,
229
+ active_id: data.active_id,
230
+ bin_step: data.bin_step
231
+ }, {
232
+ labels: {
233
+ pair: "LB Pair",
234
+ active_id: "Active Bin ID",
235
+ bin_step: "Bin Step"
236
+ }
237
+ });
238
+ const bins = (data.nearby_bins ?? []);
239
+ if (bins.length > 0) {
240
+ formatTable(bins, [
241
+ { key: "id", label: "Bin ID", align: "right" },
242
+ { key: "delta", label: "Delta", align: "right" },
243
+ { key: "reserve_x_decimal", label: "Reserve X", align: "right" },
244
+ { key: "reserve_y_decimal", label: "Reserve Y", align: "right" },
245
+ {
246
+ key: "is_active",
247
+ label: "Active",
248
+ format: (v) => v === true ? "◆" : ""
249
+ }
250
+ ]);
251
+ }
252
+ }
253
+ });
254
+ group
255
+ .command("analyze-pool")
256
+ .description("Deep analysis of a V3 pool: fee APR, multi-range APR comparison, risk assessment, and investment projections")
257
+ .option("--pool <address>", "V3 pool address (or use --token-a/--token-b/--fee-tier/--provider)")
258
+ .option("--token-a <token>", "first token symbol or address")
259
+ .option("--token-b <token>", "second token symbol or address")
260
+ .option("--fee-tier <tier>", "V3 fee tier (500, 3000, 10000)", (v) => parseNumberOption(v, "--fee-tier"))
261
+ .option("--provider <provider>", "DEX provider (agni, fluxion)")
262
+ .option("--investment <usd>", "USD amount for return projections (default: 1000)", (v) => parseNumberOption(v, "--investment"), 1000)
263
+ .action(async (opts, cmd) => {
264
+ const globals = cmd.optsWithGlobals();
265
+ const result = await allTools["mantle_analyzePool"].handler({
266
+ pool_address: opts.pool,
267
+ token_a: opts.tokenA,
268
+ token_b: opts.tokenB,
269
+ fee_tier: opts.feeTier,
270
+ provider: opts.provider,
271
+ investment_usd: opts.investment,
272
+ network: globals.network
273
+ });
274
+ if (globals.json) {
275
+ formatJson(result);
276
+ }
277
+ else {
278
+ const data = result;
279
+ const token0 = data.token0;
280
+ const token1 = data.token1;
281
+ const market = data.market_data;
282
+ const risk = data.risk;
283
+ const investment = data.investment;
284
+ // Pool overview
285
+ formatKeyValue({
286
+ pool: data.pool_address,
287
+ provider: data.provider,
288
+ pair: `${token0.symbol} / ${token1.symbol}`,
289
+ fee: `${data.fee_rate_pct}%`,
290
+ price: `${data.current_price_token1_per_token0} ${token1.symbol}/${token0.symbol}`,
291
+ tvl: market.tvl_usd != null ? `$${Number(market.tvl_usd).toLocaleString()}` : "N/A",
292
+ volume_24h: market.volume_24h_usd != null ? `$${Number(market.volume_24h_usd).toLocaleString()}` : "N/A",
293
+ change_24h: market.price_change_24h_pct != null ? `${market.price_change_24h_pct}%` : "N/A",
294
+ base_fee_apr: market.base_fee_apr_pct != null ? `${market.base_fee_apr_pct}%` : "N/A"
295
+ }, {
296
+ labels: {
297
+ pool: "Pool",
298
+ provider: "Provider",
299
+ pair: "Pair",
300
+ fee: "Fee Tier",
301
+ price: "Current Price",
302
+ tvl: "TVL (USD)",
303
+ volume_24h: "24h Volume (USD)",
304
+ change_24h: "24h Price Change",
305
+ base_fee_apr: "Base Fee APR"
306
+ }
307
+ });
308
+ // Range analysis table
309
+ const ranges = (data.ranges ?? []);
310
+ const recommended = data.recommended_range;
311
+ console.log(` Investment: $${Number(investment.amount_usd).toLocaleString()} Recommended range: ${recommended ?? "N/A"}\n`);
312
+ formatTable(ranges, [
313
+ {
314
+ key: "label",
315
+ label: "Range",
316
+ format: (v) => (v === recommended ? `${v} *` : String(v))
317
+ },
318
+ { key: "fee_apr_pct", label: "Fee APR%", align: "right" },
319
+ { key: "concentration_factor", label: "Conc. Factor", align: "right" },
320
+ {
321
+ key: "daily_fee_usd",
322
+ label: "Daily Fee",
323
+ align: "right",
324
+ format: (v) => (v != null ? `$${v}` : "N/A")
325
+ },
326
+ {
327
+ key: "monthly_fee_usd",
328
+ label: "Monthly Fee",
329
+ align: "right",
330
+ format: (v) => (v != null ? `$${v}` : "N/A")
331
+ },
332
+ { key: "rebalance_risk", label: "Rebal. Risk" }
333
+ ]);
334
+ // Risk assessment
335
+ const details = (risk.details ?? []);
336
+ formatKeyValue({
337
+ overall: risk.overall,
338
+ tvl_risk: risk.tvl_risk,
339
+ volatility_risk: risk.volatility_risk,
340
+ concentration_risk: risk.concentration_risk
341
+ }, {
342
+ labels: {
343
+ overall: "Overall Risk",
344
+ tvl_risk: "TVL Risk",
345
+ volatility_risk: "Volatility Risk",
346
+ concentration_risk: "Concentration Risk"
347
+ }
348
+ });
349
+ if (details.length > 0) {
350
+ for (const detail of details) {
351
+ console.log(` · ${detail}`);
352
+ }
353
+ console.log();
354
+ }
355
+ }
356
+ });
357
+ }
358
+ //# sourceMappingURL=defi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defi.js","sourceRoot":"","sources":["../../src/commands/defi.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from "commander";
2
+ export declare function registerDiagnostics(parent: Command): void;
3
+ //# sourceMappingURL=diagnostics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../src/commands/diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAuEzD"}