@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
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Mantle
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,43 @@
1
+ # @0xwh1sker/mantle-cli
2
+
3
+ CLI for Mantle L2 chain reads, DeFi queries, swaps, LP, and Aave operations.
4
+
5
+ ## Install
6
+
7
+ ```bash
8
+ npm install -g @0xwh1sker/mantle-cli
9
+ ```
10
+
11
+ Or use directly with npx:
12
+
13
+ ```bash
14
+ npx @0xwh1sker/mantle-cli chain info
15
+ ```
16
+
17
+ ## Usage
18
+
19
+ ```bash
20
+ mantle-cli chain info
21
+ mantle-cli chain status
22
+ mantle-cli registry resolve USDC --json
23
+ mantle-cli account balance 0x1234... --json
24
+ mantle-cli token prices --tokens USDC,WETH --json
25
+ mantle-cli diagnostics rpc-health
26
+ mantle-cli --help
27
+ ```
28
+
29
+ ### Options
30
+
31
+ - `--json` — output raw JSON
32
+ - `--no-color` — disable colored output
33
+ - `-n, --network <network>` — target network: mainnet (default) or sepolia
34
+ - `--rpc-url <url>` — override RPC endpoint
35
+
36
+ ## Related packages
37
+
38
+ - [`@0xwh1sker/mantle-core`](https://www.npmjs.com/package/@0xwh1sker/mantle-core) — shared Mantle L2 business logic
39
+ - [`@0xwh1sker/mantle-mcp`](https://www.npmjs.com/package/@0xwh1sker/mantle-mcp) — MCP server for AI agents
40
+
41
+ ## License
42
+
43
+ MIT
@@ -0,0 +1,3 @@
1
+ import type { Command } from "commander";
2
+ export declare function registerAccount(parent: Command): void;
3
+ //# sourceMappingURL=account.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../src/commands/account.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CA2FrD"}
@@ -0,0 +1,96 @@
1
+ import { allTools } from "@0xwh1sker/mantle-core/tools/index.js";
2
+ import { formatKeyValue, formatTable, formatJson } from "../formatter.js";
3
+ import { parseCommaList } from "../utils.js";
4
+ export function registerAccount(parent) {
5
+ const group = parent.command("account").description("Wallet and account queries");
6
+ group
7
+ .command("balance")
8
+ .description("Get native MNT balance for an address")
9
+ .argument("<address>", "wallet address")
10
+ .action(async (address, _opts, cmd) => {
11
+ const globals = cmd.optsWithGlobals();
12
+ const result = await allTools["mantle_getBalance"].handler({
13
+ address,
14
+ network: globals.network
15
+ });
16
+ if (globals.json) {
17
+ formatJson(result);
18
+ }
19
+ else {
20
+ const data = result;
21
+ formatKeyValue(data, {
22
+ order: ["address", "network", "balance_mnt", "block_number", "collected_at_utc"],
23
+ labels: {
24
+ address: "Address",
25
+ network: "Network",
26
+ balance_mnt: "Balance (MNT)",
27
+ block_number: "Block",
28
+ collected_at_utc: "Collected At"
29
+ }
30
+ });
31
+ }
32
+ });
33
+ group
34
+ .command("token-balances")
35
+ .description("Batch read ERC-20 token balances")
36
+ .argument("<address>", "wallet address")
37
+ .requiredOption("--tokens <tokens>", "comma-separated token symbols or addresses")
38
+ .action(async (address, opts, cmd) => {
39
+ const globals = cmd.optsWithGlobals();
40
+ const tokens = parseCommaList(opts.tokens);
41
+ const result = await allTools["mantle_getTokenBalances"].handler({
42
+ address,
43
+ tokens,
44
+ network: globals.network
45
+ });
46
+ if (globals.json) {
47
+ formatJson(result);
48
+ }
49
+ else {
50
+ const data = result;
51
+ const balances = (data.balances ?? []);
52
+ console.log(`\n Address: ${data.address} Network: ${data.network} Block: ${data.block_number}\n`);
53
+ formatTable(balances, [
54
+ { key: "symbol", label: "Token" },
55
+ { key: "balance_normalized", label: "Balance", align: "right" },
56
+ { key: "token_address", label: "Address" },
57
+ { key: "error", label: "Error" }
58
+ ]);
59
+ }
60
+ });
61
+ group
62
+ .command("allowances")
63
+ .description("Batch read ERC-20 allowances for token/spender pairs")
64
+ .argument("<owner>", "owner address")
65
+ .requiredOption("--pairs <pairs>", "comma-separated token:spender pairs")
66
+ .action(async (owner, opts, cmd) => {
67
+ const globals = cmd.optsWithGlobals();
68
+ const pairsRaw = parseCommaList(opts.pairs);
69
+ const pairs = pairsRaw.map((pair) => {
70
+ const [token, spender] = pair.split(":");
71
+ return { token, spender };
72
+ });
73
+ const result = await allTools["mantle_getAllowances"].handler({
74
+ owner,
75
+ pairs,
76
+ network: globals.network
77
+ });
78
+ if (globals.json) {
79
+ formatJson(result);
80
+ }
81
+ else {
82
+ const data = result;
83
+ const allowances = (data.allowances ?? []);
84
+ console.log(`\n Owner: ${data.owner} Network: ${data.network} Block: ${data.block_number}\n`);
85
+ formatTable(allowances, [
86
+ { key: "token_symbol", label: "Token" },
87
+ { key: "spender", label: "Spender" },
88
+ { key: "spender_label", label: "Spender Label" },
89
+ { key: "allowance_normalized", label: "Allowance", align: "right" },
90
+ { key: "is_unlimited", label: "Unlimited" },
91
+ { key: "error", label: "Error" }
92
+ ]);
93
+ }
94
+ });
95
+ }
96
+ //# sourceMappingURL=account.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account.js","sourceRoot":"","sources":["../../src/commands/account.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from "commander";
2
+ export declare function registerCatalog(parent: Command): void;
3
+ //# sourceMappingURL=catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/commands/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAkGrD"}
@@ -0,0 +1,93 @@
1
+ import { capabilityCatalog } from "@0xwh1sker/mantle-core/capability-catalog.js";
2
+ import { formatTable, formatJson } from "../formatter.js";
3
+ export function registerCatalog(parent) {
4
+ const group = parent.command("catalog").description("Capability catalog — discover available tools, their categories, and usage");
5
+ group
6
+ .command("list")
7
+ .description("List all capabilities with category, auth requirement, and summary")
8
+ .option("--category <cat>", "filter by category: query, analyze, or execute")
9
+ .option("--auth <auth>", "filter by auth requirement: none, optional, or required")
10
+ .action(async (opts, cmd) => {
11
+ const globals = cmd.optsWithGlobals();
12
+ const catalog = capabilityCatalog();
13
+ let caps = catalog.capabilities;
14
+ if (opts.category) {
15
+ caps = caps.filter((c) => c.category === opts.category);
16
+ }
17
+ if (opts.auth) {
18
+ caps = caps.filter((c) => c.auth === opts.auth);
19
+ }
20
+ if (globals.json) {
21
+ formatJson({ version: catalog.version, capabilities: caps });
22
+ }
23
+ else {
24
+ formatTable(caps, [
25
+ { key: "id", label: "Tool ID" },
26
+ { key: "category", label: "Category" },
27
+ { key: "auth", label: "Auth" },
28
+ { key: "summary", label: "Summary" }
29
+ ]);
30
+ }
31
+ });
32
+ group
33
+ .command("search")
34
+ .description("Search capabilities by keyword (matches id, name, summary, and tags)")
35
+ .argument("<keyword>", "keyword to search for")
36
+ .action(async (keyword, _opts, cmd) => {
37
+ const globals = cmd.optsWithGlobals();
38
+ const catalog = capabilityCatalog();
39
+ const kw = keyword.toLowerCase();
40
+ const matches = catalog.capabilities.filter((c) => c.id.toLowerCase().includes(kw) ||
41
+ c.name.toLowerCase().includes(kw) ||
42
+ c.summary.toLowerCase().includes(kw) ||
43
+ c.tags.some((t) => t.toLowerCase().includes(kw)));
44
+ if (globals.json) {
45
+ formatJson({ query: keyword, matches });
46
+ }
47
+ else {
48
+ if (matches.length === 0) {
49
+ console.log(`\n No capabilities matching "${keyword}".\n`);
50
+ }
51
+ else {
52
+ formatTable(matches, [
53
+ { key: "id", label: "Tool ID" },
54
+ { key: "category", label: "Category" },
55
+ { key: "auth", label: "Auth" },
56
+ { key: "summary", label: "Summary" }
57
+ ]);
58
+ }
59
+ }
60
+ });
61
+ group
62
+ .command("show")
63
+ .description("Show full details for a specific capability by tool ID")
64
+ .argument("<tool-id>", "tool ID (e.g. mantle_buildSwap)")
65
+ .action(async (toolId, _opts, cmd) => {
66
+ const globals = cmd.optsWithGlobals();
67
+ const catalog = capabilityCatalog();
68
+ const cap = catalog.capabilities.find((c) => c.id === toolId || c.id.toLowerCase() === toolId.toLowerCase());
69
+ if (!cap) {
70
+ console.error(`\n Capability "${toolId}" not found. Use 'catalog list' to see all.\n`);
71
+ process.exit(1);
72
+ }
73
+ if (globals.json) {
74
+ formatJson(cap);
75
+ }
76
+ else {
77
+ console.log();
78
+ console.log(` ID: ${cap.id}`);
79
+ console.log(` Name: ${cap.name}`);
80
+ console.log(` Category: ${cap.category}`);
81
+ console.log(` Mutates: ${cap.mutates}`);
82
+ console.log(` Auth: ${cap.auth}`);
83
+ console.log(` Summary: ${cap.summary}`);
84
+ console.log(` CLI: ${cap.cli_command}`);
85
+ if (cap.workflow_before && cap.workflow_before.length > 0) {
86
+ console.log(` Before: ${cap.workflow_before.join(", ")}`);
87
+ }
88
+ console.log(` Tags: ${cap.tags.join(", ")}`);
89
+ console.log();
90
+ }
91
+ });
92
+ }
93
+ //# sourceMappingURL=catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/commands/catalog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from "commander";
2
+ export declare function registerChain(parent: Command): void;
3
+ //# sourceMappingURL=chain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chain.d.ts","sourceRoot":"","sources":["../../src/commands/chain.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC,wBAAgB,aAAa,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CA6DnD"}
@@ -0,0 +1,65 @@
1
+ import { allTools } from "@0xwh1sker/mantle-core/tools/index.js";
2
+ import { formatKeyValue, formatJson } from "../formatter.js";
3
+ export function registerChain(parent) {
4
+ const group = parent.command("chain").description("Chain information");
5
+ group
6
+ .command("info")
7
+ .description("Static chain configuration for mainnet or sepolia")
8
+ .action(async (_opts, cmd) => {
9
+ const globals = cmd.optsWithGlobals();
10
+ const result = await allTools["mantle_getChainInfo"].handler({
11
+ network: globals.network
12
+ });
13
+ if (globals.json) {
14
+ formatJson(result);
15
+ }
16
+ else {
17
+ const data = result;
18
+ formatKeyValue(data, {
19
+ order: [
20
+ "chain_id", "name", "native_token", "rpc_url", "ws_url",
21
+ "explorer_url", "bridge_url", "wrapped_mnt",
22
+ "recommended_solidity_compiler", "faucet_urls"
23
+ ],
24
+ labels: {
25
+ chain_id: "Chain ID",
26
+ name: "Name",
27
+ native_token: "Native Token",
28
+ rpc_url: "RPC URL",
29
+ ws_url: "WebSocket URL",
30
+ explorer_url: "Explorer",
31
+ bridge_url: "Bridge",
32
+ wrapped_mnt: "WMNT Address",
33
+ recommended_solidity_compiler: "Solidity Compiler",
34
+ faucet_urls: "Faucet URLs"
35
+ }
36
+ });
37
+ }
38
+ });
39
+ group
40
+ .command("status")
41
+ .description("Live block height and gas price from Mantle RPC")
42
+ .action(async (_opts, cmd) => {
43
+ const globals = cmd.optsWithGlobals();
44
+ const result = await allTools["mantle_getChainStatus"].handler({
45
+ network: globals.network
46
+ });
47
+ if (globals.json) {
48
+ formatJson(result);
49
+ }
50
+ else {
51
+ const data = result;
52
+ formatKeyValue(data, {
53
+ order: ["chain_id", "block_number", "gas_price_gwei", "syncing", "timestamp_utc"],
54
+ labels: {
55
+ chain_id: "Chain ID",
56
+ block_number: "Block",
57
+ gas_price_gwei: "Gas Price (Gwei)",
58
+ syncing: "Syncing",
59
+ timestamp_utc: "Timestamp"
60
+ }
61
+ });
62
+ }
63
+ });
64
+ }
65
+ //# sourceMappingURL=chain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chain.js","sourceRoot":"","sources":["../../src/commands/chain.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,uCAAuC,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7D,MAAM,UAAU,aAAa,CAAC,MAAe;IAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;IAEvE,KAAK;SACF,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,mDAAmD,CAAC;SAChE,MAAM,CAAC,KAAK,EAAE,KAA8B,EAAE,GAAY,EAAE,EAAE;QAC7D,MAAM,OAAO,GAAG,GAAG,CAAC,eAAe,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,qBAAqB,CAAC,CAAC,OAAO,CAAC;YAC3D,OAAO,EAAE,OAAO,CAAC,OAAO;SACzB,CAAC,CAAC;QACH,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,UAAU,CAAC,MAAM,CAAC,CAAC;QACrB,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,GAAG,MAAiC,CAAC;YAC/C,cAAc,CAAC,IAAI,EAAE;gBACnB,KAAK,EAAE;oBACL,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ;oBACvD,cAAc,EAAE,YAAY,EAAE,aAAa;oBAC3C,+BAA+B,EAAE,aAAa;iBAC/C;gBACD,MAAM,EAAE;oBACN,QAAQ,EAAE,UAAU;oBACpB,IAAI,EAAE,MAAM;oBACZ,YAAY,EAAE,cAAc;oBAC5B,OAAO,EAAE,SAAS;oBAClB,MAAM,EAAE,eAAe;oBACvB,YAAY,EAAE,UAAU;oBACxB,UAAU,EAAE,QAAQ;oBACpB,WAAW,EAAE,cAAc;oBAC3B,6BAA6B,EAAE,mBAAmB;oBAClD,WAAW,EAAE,aAAa;iBAC3B;aACF,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,KAAK;SACF,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,iDAAiD,CAAC;SAC9D,MAAM,CAAC,KAAK,EAAE,KAA8B,EAAE,GAAY,EAAE,EAAE;QAC7D,MAAM,OAAO,GAAG,GAAG,CAAC,eAAe,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,uBAAuB,CAAC,CAAC,OAAO,CAAC;YAC7D,OAAO,EAAE,OAAO,CAAC,OAAO;SACzB,CAAC,CAAC;QACH,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,UAAU,CAAC,MAAM,CAAC,CAAC;QACrB,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,GAAG,MAAiC,CAAC;YAC/C,cAAc,CAAC,IAAI,EAAE;gBACnB,KAAK,EAAE,CAAC,UAAU,EAAE,cAAc,EAAE,gBAAgB,EAAE,SAAS,EAAE,eAAe,CAAC;gBACjF,MAAM,EAAE;oBACN,QAAQ,EAAE,UAAU;oBACpB,YAAY,EAAE,OAAO;oBACrB,cAAc,EAAE,kBAAkB;oBAClC,OAAO,EAAE,SAAS;oBAClB,aAAa,EAAE,WAAW;iBAC3B;aACF,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { Command } from "commander";
2
+ /**
3
+ * Aave V3 lending operations:
4
+ * aave supply — Build unsigned supply (deposit) transaction
5
+ * aave borrow — Build unsigned borrow transaction
6
+ * aave repay — Build unsigned repay transaction
7
+ * aave withdraw — Build unsigned withdraw transaction
8
+ * aave markets — Show lending market metrics (alias for defi lending-markets)
9
+ */
10
+ export declare function registerAave(parent: Command): void;
11
+ //# sourceMappingURL=defi-aave.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defi-aave.d.ts","sourceRoot":"","sources":["../../src/commands/defi-aave.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgBzC;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAiKlD"}
@@ -0,0 +1,216 @@
1
+ import { allTools } from "@0xwh1sker/mantle-core/tools/index.js";
2
+ import { formatKeyValue, formatTable, formatJson } from "../formatter.js";
3
+ const VALID_RATE_MODES = [1, 2];
4
+ function parseRateMode(value) {
5
+ const parsed = Number(value);
6
+ if (!Number.isInteger(parsed) || !VALID_RATE_MODES.includes(parsed)) {
7
+ throw new Error(`Invalid --interest-rate-mode '${value}'. Must be 1 (stable) or 2 (variable).`);
8
+ }
9
+ return parsed;
10
+ }
11
+ /**
12
+ * Aave V3 lending operations:
13
+ * aave supply — Build unsigned supply (deposit) transaction
14
+ * aave borrow — Build unsigned borrow transaction
15
+ * aave repay — Build unsigned repay transaction
16
+ * aave withdraw — Build unsigned withdraw transaction
17
+ * aave markets — Show lending market metrics (alias for defi lending-markets)
18
+ */
19
+ export function registerAave(parent) {
20
+ const group = parent
21
+ .command("aave")
22
+ .description("Aave V3 lending operations (build unsigned transactions)");
23
+ // ── supply ──────────────────────────────────────────────────────────
24
+ group
25
+ .command("supply")
26
+ .description("Build unsigned Aave V3 supply (deposit) transaction. " +
27
+ "Approve the asset for the Pool contract first.")
28
+ .requiredOption("--asset <token>", "token symbol or address to supply")
29
+ .requiredOption("--amount <amount>", "decimal amount to supply")
30
+ .requiredOption("--on-behalf-of <address>", "address that receives aTokens (typically sender)")
31
+ .action(async (opts, cmd) => {
32
+ const globals = cmd.optsWithGlobals();
33
+ const result = await allTools["mantle_buildAaveSupply"].handler({
34
+ asset: opts.asset,
35
+ amount: String(opts.amount),
36
+ on_behalf_of: opts.onBehalfOf,
37
+ network: globals.network
38
+ });
39
+ if (globals.json) {
40
+ formatJson(result);
41
+ }
42
+ else {
43
+ formatAaveResult(result);
44
+ }
45
+ });
46
+ // ── borrow ──────────────────────────────────────────────────────────
47
+ group
48
+ .command("borrow")
49
+ .description("Build unsigned Aave V3 borrow transaction. " +
50
+ "Requires sufficient collateral deposited first.")
51
+ .requiredOption("--asset <token>", "token symbol or address to borrow")
52
+ .requiredOption("--amount <amount>", "decimal amount to borrow")
53
+ .requiredOption("--on-behalf-of <address>", "borrower address (must have collateral)")
54
+ .option("--interest-rate-mode <mode>", "2 = variable (default), 1 = stable", (v) => parseRateMode(v), 2)
55
+ .action(async (opts, cmd) => {
56
+ const globals = cmd.optsWithGlobals();
57
+ const result = await allTools["mantle_buildAaveBorrow"].handler({
58
+ asset: opts.asset,
59
+ amount: String(opts.amount),
60
+ on_behalf_of: opts.onBehalfOf,
61
+ interest_rate_mode: opts.interestRateMode,
62
+ network: globals.network
63
+ });
64
+ if (globals.json) {
65
+ formatJson(result);
66
+ }
67
+ else {
68
+ formatAaveResult(result);
69
+ }
70
+ });
71
+ // ── repay ───────────────────────────────────────────────────────────
72
+ group
73
+ .command("repay")
74
+ .description("Build unsigned Aave V3 repay transaction. " +
75
+ "Use --amount max to repay full debt. Approve the asset for Pool first.")
76
+ .requiredOption("--asset <token>", "token symbol or address to repay")
77
+ .requiredOption("--amount <amount>", "decimal amount to repay, or 'max' for full debt")
78
+ .requiredOption("--on-behalf-of <address>", "borrower whose debt to repay")
79
+ .option("--interest-rate-mode <mode>", "2 = variable (default), 1 = stable", (v) => parseRateMode(v), 2)
80
+ .action(async (opts, cmd) => {
81
+ const globals = cmd.optsWithGlobals();
82
+ const result = await allTools["mantle_buildAaveRepay"].handler({
83
+ asset: opts.asset,
84
+ amount: String(opts.amount),
85
+ on_behalf_of: opts.onBehalfOf,
86
+ interest_rate_mode: opts.interestRateMode,
87
+ network: globals.network
88
+ });
89
+ if (globals.json) {
90
+ formatJson(result);
91
+ }
92
+ else {
93
+ formatAaveResult(result);
94
+ }
95
+ });
96
+ // ── withdraw ────────────────────────────────────────────────────────
97
+ group
98
+ .command("withdraw")
99
+ .description("Build unsigned Aave V3 withdraw transaction. " +
100
+ "Use --amount max to withdraw entire balance. May lower health factor.")
101
+ .requiredOption("--asset <token>", "token symbol or address to withdraw")
102
+ .requiredOption("--amount <amount>", "decimal amount to withdraw, or 'max' for full balance")
103
+ .requiredOption("--to <address>", "address to receive the withdrawn tokens")
104
+ .action(async (opts, cmd) => {
105
+ const globals = cmd.optsWithGlobals();
106
+ const result = await allTools["mantle_buildAaveWithdraw"].handler({
107
+ asset: opts.asset,
108
+ amount: String(opts.amount),
109
+ to: opts.to,
110
+ network: globals.network
111
+ });
112
+ if (globals.json) {
113
+ formatJson(result);
114
+ }
115
+ else {
116
+ formatAaveResult(result);
117
+ }
118
+ });
119
+ // ── markets (convenience alias) ────────────────────────────────────
120
+ group
121
+ .command("markets")
122
+ .description("Aave V3 lending market metrics (shortcut for defi lending-markets)")
123
+ .option("--asset <asset>", "optional asset filter (symbol or address)")
124
+ .action(async (opts, cmd) => {
125
+ const globals = cmd.optsWithGlobals();
126
+ const result = await allTools["mantle_getLendingMarkets"].handler({
127
+ protocol: "aave_v3",
128
+ asset: opts.asset,
129
+ network: globals.network
130
+ });
131
+ if (globals.json) {
132
+ formatJson(result);
133
+ }
134
+ else {
135
+ const data = result;
136
+ const markets = (data.markets ?? []);
137
+ formatTable(markets, [
138
+ { key: "asset", label: "Asset" },
139
+ { key: "supply_apy", label: "Supply APY%", align: "right" },
140
+ { key: "borrow_apy_variable", label: "Borrow APY%", align: "right" },
141
+ {
142
+ key: "tvl_usd",
143
+ label: "TVL (USD)",
144
+ align: "right",
145
+ format: (v) => (v === null ? "N/A" : `$${Number(v).toLocaleString()}`)
146
+ },
147
+ { key: "ltv", label: "LTV%", align: "right" },
148
+ { key: "liquidation_threshold", label: "Liq Threshold%", align: "right" },
149
+ {
150
+ key: "isolation_mode",
151
+ label: "Isolation",
152
+ format: (v) => (v ? "YES" : "-")
153
+ },
154
+ {
155
+ key: "borrowable_in_isolation",
156
+ label: "Iso-Borrow",
157
+ format: (v) => (v ? "YES" : "-")
158
+ }
159
+ ]);
160
+ }
161
+ });
162
+ }
163
+ // ---------------------------------------------------------------------------
164
+ // Shared formatter for Aave unsigned-tx results
165
+ // ---------------------------------------------------------------------------
166
+ function formatAaveResult(data) {
167
+ const tx = data.unsigned_tx;
168
+ const warnings = (data.warnings ?? []);
169
+ const aaveReserve = data.aave_reserve;
170
+ const fields = {
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
+ const 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
+ if (aaveReserve) {
191
+ fields.aave_asset = aaveReserve.symbol;
192
+ fields.aave_underlying = aaveReserve.underlying;
193
+ fields.aave_aToken = aaveReserve.aToken;
194
+ fields.aave_debtToken = aaveReserve.variableDebtToken;
195
+ labels.aave_asset = "Aave Asset";
196
+ labels.aave_underlying = "Underlying";
197
+ labels.aave_aToken = "aToken";
198
+ labels.aave_debtToken = "Variable Debt Token";
199
+ }
200
+ formatKeyValue(fields, { labels });
201
+ if (warnings.length > 0) {
202
+ console.log(" Warnings:");
203
+ for (const w of warnings) {
204
+ console.log(` - ${w}`);
205
+ }
206
+ console.log();
207
+ }
208
+ }
209
+ function truncateHex(hex) {
210
+ if (!hex)
211
+ return "null";
212
+ if (hex.length <= 66)
213
+ return hex;
214
+ return `${hex.slice(0, 34)}...${hex.slice(-16)} (${hex.length} chars)`;
215
+ }
216
+ //# sourceMappingURL=defi-aave.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defi-aave.js","sourceRoot":"","sources":["../../src/commands/defi-aave.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { Command } from "commander";
2
+ /**
3
+ * Liquidity provision operations:
4
+ * lp add — Build unsigned add-liquidity transaction
5
+ * lp remove — Build unsigned remove-liquidity transaction
6
+ * lp positions — List V3 LP positions for an owner
7
+ * lp pool-state — Read V3 pool on-chain state (tick, price, liquidity)
8
+ * lp analyze — Deep pool analysis (APR, risk, investment projections)
9
+ * lp collect-fees — Build unsigned fee collection transaction
10
+ * lp suggest-ticks — Suggest tick ranges for V3 LP
11
+ */
12
+ export declare function registerLp(parent: Command): void;
13
+ //# sourceMappingURL=defi-lp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defi-lp.d.ts","sourceRoot":"","sources":["../../src/commands/defi-lp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAygBhD"}