@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.
- package/LICENSE +21 -0
- package/README.md +43 -0
- package/dist/commands/account.d.ts +3 -0
- package/dist/commands/account.d.ts.map +1 -0
- package/dist/commands/account.js +96 -0
- package/dist/commands/account.js.map +1 -0
- package/dist/commands/catalog.d.ts +3 -0
- package/dist/commands/catalog.d.ts.map +1 -0
- package/dist/commands/catalog.js +93 -0
- package/dist/commands/catalog.js.map +1 -0
- package/dist/commands/chain.d.ts +3 -0
- package/dist/commands/chain.d.ts.map +1 -0
- package/dist/commands/chain.js +65 -0
- package/dist/commands/chain.js.map +1 -0
- package/dist/commands/defi-aave.d.ts +11 -0
- package/dist/commands/defi-aave.d.ts.map +1 -0
- package/dist/commands/defi-aave.js +216 -0
- package/dist/commands/defi-aave.js.map +1 -0
- package/dist/commands/defi-lp.d.ts +13 -0
- package/dist/commands/defi-lp.d.ts.map +1 -0
- package/dist/commands/defi-lp.js +496 -0
- package/dist/commands/defi-lp.js.map +1 -0
- package/dist/commands/defi-swap.d.ts +11 -0
- package/dist/commands/defi-swap.d.ts.map +1 -0
- package/dist/commands/defi-swap.js +206 -0
- package/dist/commands/defi-swap.js.map +1 -0
- package/dist/commands/defi.d.ts +3 -0
- package/dist/commands/defi.d.ts.map +1 -0
- package/dist/commands/defi.js +358 -0
- package/dist/commands/defi.js.map +1 -0
- package/dist/commands/diagnostics.d.ts +3 -0
- package/dist/commands/diagnostics.d.ts.map +1 -0
- package/dist/commands/diagnostics.js +76 -0
- package/dist/commands/diagnostics.js.map +1 -0
- package/dist/commands/indexer.d.ts +3 -0
- package/dist/commands/indexer.d.ts.map +1 -0
- package/dist/commands/indexer.js +92 -0
- package/dist/commands/indexer.js.map +1 -0
- package/dist/commands/registry.d.ts +3 -0
- package/dist/commands/registry.d.ts.map +1 -0
- package/dist/commands/registry.js +76 -0
- package/dist/commands/registry.js.map +1 -0
- package/dist/commands/token.d.ts +3 -0
- package/dist/commands/token.d.ts.map +1 -0
- package/dist/commands/token.js +100 -0
- package/dist/commands/token.js.map +1 -0
- package/dist/formatter.d.ts +20 -0
- package/dist/formatter.d.ts.map +1 -0
- package/dist/formatter.js +98 -0
- package/dist/formatter.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +76 -0
- package/dist/index.js.map +1 -0
- package/dist/utils.d.ts +7 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +62 -0
- package/dist/utils.js.map +1 -0
- 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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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"}
|