Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
██████╔╝███████╗██║ ██║ ╚██████╗███████╗██║
╚═════╝ ╚══════╝╚═╝ ╚═╝ ╚═════╝╚══════╝╚═╝

5 chains · 39 protocols · 5 aggregators
6 chains · 41 protocols · 5 aggregators
```

Multi-chain DeFi toolkit with verified mainnet broadcast paths. Lending, LP farming, DEX swap, cross-chain bridge, yield comparison — all from your terminal. Built for humans and AI agents.
Expand Down
7 changes: 4 additions & 3 deletions skills/defi-cli/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ metadata:

Multi-chain DeFi CLI — lending, DEX swaps, LP management, bridging, yield comparison.

**5 chains · 39 protocols · 5 DEX aggregators**
**6 chains · 41 protocols · 5 DEX aggregators**

## Rules

Expand All @@ -36,7 +36,7 @@ Use `defi` if global install works, otherwise `npx -y -p @hypurrquant/defi-cli@l

## Global Flags

`--json` (required) | `--chain <chain>` (hyperevm, mantle, base, bnb, monad) | `--dry-run` (default, safe) | `--broadcast` (executes tx) | `--fields <f1,f2>` | `--ndjson`
`--json` (required) | `--chain <chain>` (hyperevm, mantle, base, bnb, monad, arbitrum) | `--dry-run` (default, safe) | `--broadcast` (executes tx) | `--fields <f1,f2>` | `--ndjson`

**Wallet**: set `DEFI_WALLET_ADDRESS` env for read queries. Set `DEFI_PRIVATE_KEY` for tx signing. Or use `DEFI_WALLET_ADDRESS=ows:<name>` after `defi ows create <name>` for encrypted vault.

Expand All @@ -56,12 +56,13 @@ export DEFI_PRIVATE_KEY=0xYourPrivateKey # only needed for broadcasting
| `base` | Base | 8453 | 🟢 production |
| `bnb` | BNB Chain | 56 | 🟢 production |
| `monad` | Monad | 143 | 🟡 staged |
| `arbitrum` | Arbitrum One | 42161 | 🟡 staged |

🟢 = mainnet broadcast verified | 🟡 = configs verified, awaiting funded broadcast

## References

- **`references/protocols.md`** — full protocol slug catalog per chain (39 protocols across 5 chains)
- **`references/protocols.md`** — full protocol slug catalog per chain (41 protocols across 6 chains)
- **`references/commands.md`** — every CLI command with flags, dry-run shape, and JSON envelope notes

## Scripts (`scripts/`)
Expand Down
13 changes: 11 additions & 2 deletions skills/defi-cli/references/protocols.md
Original file line number Diff line number Diff line change
Expand Up @@ -86,12 +86,21 @@

---

## Arbitrum (chain: `arbitrum`, Chain ID: 42161) — 🟡 staged

| Slug | Name | Interface | Notes |
|------|------|-----------|-------|
| `aave-v3-arbitrum` | Aave V3 | aave_v3 | Official (bgd-labs address-book) |
| `uniswap-v3-arbitrum` | Uniswap V3 | uniswap_v3 | V3 fee-only |

---

## DEX Aggregator Providers (`defi swap --provider`)

| Provider | Supported chains | Notes |
|----------|------------------|-------|
| `kyber` (KyberSwap) | hyperevm, base, bnb | NOT mantle, NOT monad |
| `openocean` | hyperevm, mantle, base, bnb | Universal fallback |
| `kyber` (KyberSwap) | hyperevm, base, bnb, arbitrum | NOT mantle, NOT monad |
| `openocean` | hyperevm, mantle, base, bnb, arbitrum | Universal fallback |
| `liquid` (LiquidSwap) | hyperevm | HyperEVM-native |
| `lifi` (LI.FI) | all source chains (via chain_id) | Cross-chain capable |
| `relay` (Relay) | all source chains (via chain_id) | Multi-step routes (auto-skips approve step) |
Expand Down
16 changes: 16 additions & 0 deletions ts/config/chains.toml
Original file line number Diff line number Diff line change
Expand Up @@ -74,3 +74,19 @@ kyber = "monad"
openocean = "monad"
lifi = "auto"
relay = "auto"

[chain.arbitrum]
name = "Arbitrum"
chain_id = 42161
rpc_url = "https://arbitrum.drpc.org"
explorer_url = "https://arbiscan.io"
native_token = "ETH"
wrapped_native = "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1"
multicall3 = "0xcA11bde05977b3631167028862bE2a173976CA11"

# LiquidSwap is HyperEVM-only and intentionally omitted (matches monad/base).
[chain.arbitrum.aggregators]
kyber = "arbitrum"
openocean = "arbitrum"
lifi = "auto"
relay = "auto"
15 changes: 15 additions & 0 deletions ts/config/protocols/dex/uniswap_v3_arbitrum.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
[protocol]
name = "Uniswap V3 Arbitrum"
slug = "uniswap-v3-arbitrum"
category = "dex"
interface = "uniswap_v3"
chain = "arbitrum"
native = false
verified = true
description = "Uniswap V3 on Arbitrum One. Addresses from developers.uniswap.org/contracts/v3 (Arbitrum deployments)."

[protocol.contracts]
router = "0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45"
factory = "0x1F98431c8aD98523631AE4a59f267346ea31F984"
quoter = "0x61fFE014bA17989E743c5F6cB21bF9697530B21e"
position_manager = "0xC36442b4a4522E871399CD717aBDD847Ab11FE88"
14 changes: 14 additions & 0 deletions ts/config/protocols/lending/aave_v3_arbitrum.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
[protocol]
name = "Aave V3 Arbitrum"
slug = "aave-v3-arbitrum"
category = "lending"
interface = "aave_v3"
chain = "arbitrum"
native = false
description = "Aave V3 on Arbitrum One. Addresses from bgd-labs/aave-address-book (AaveV3Arbitrum)."

[protocol.contracts]
pool = "0x794a61358D6845594F94dc1DB02A252b5b4814aD"
pool_addresses_provider = "0xa97684ead0e402dC232d5A977953DF7ECBaB3CDb"
oracle = "0xb56c2F0B653B2e0b10C9b928C8580Ac5Df02C7C7"
pool_data_provider = "0x243Aa95cAC2a25651eda86e80bEe66114413c43b"
2 changes: 1 addition & 1 deletion ts/packages/defi-cli/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
[![npm downloads](https://img.shields.io/npm/dw/@hypurrquant/defi-cli.svg)](https://www.npmjs.com/package/@hypurrquant/defi-cli)
[![license](https://img.shields.io/npm/l/@hypurrquant/defi-cli.svg)](https://github.com/hypurrquant/defi-cli/blob/main/LICENSE)

Multi-chain DeFi CLI — **5 chains · 39 protocols · 5 aggregators**. Lending, LP farming with emission claim, DEX swap via aggregator, cross-chain bridge.
Multi-chain DeFi CLI — **6 chains · 41 protocols · 5 aggregators**. Lending, LP farming with emission claim, DEX swap via aggregator, cross-chain bridge.

```bash
npm install -g @hypurrquant/defi-cli
Expand Down
16 changes: 16 additions & 0 deletions ts/packages/defi-cli/config/chains.toml
Original file line number Diff line number Diff line change
Expand Up @@ -74,3 +74,19 @@ kyber = "monad"
openocean = "monad"
lifi = "auto"
relay = "auto"

[chain.arbitrum]
name = "Arbitrum"
chain_id = 42161
rpc_url = "https://arbitrum.drpc.org"
explorer_url = "https://arbiscan.io"
native_token = "ETH"
wrapped_native = "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1"
multicall3 = "0xcA11bde05977b3631167028862bE2a173976CA11"

# LiquidSwap is HyperEVM-only and intentionally omitted (matches monad/base).
[chain.arbitrum.aggregators]
kyber = "arbitrum"
openocean = "arbitrum"
lifi = "auto"
relay = "auto"
15 changes: 15 additions & 0 deletions ts/packages/defi-cli/config/protocols/dex/uniswap_v3_arbitrum.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
[protocol]
name = "Uniswap V3 Arbitrum"
slug = "uniswap-v3-arbitrum"
category = "dex"
interface = "uniswap_v3"
chain = "arbitrum"
native = false
verified = true
description = "Uniswap V3 on Arbitrum One. Addresses from developers.uniswap.org/contracts/v3 (Arbitrum deployments)."

[protocol.contracts]
router = "0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45"
factory = "0x1F98431c8aD98523631AE4a59f267346ea31F984"
quoter = "0x61fFE014bA17989E743c5F6cB21bF9697530B21e"
position_manager = "0xC36442b4a4522E871399CD717aBDD847Ab11FE88"
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
[protocol]
name = "Aave V3 Arbitrum"
slug = "aave-v3-arbitrum"
category = "lending"
interface = "aave_v3"
chain = "arbitrum"
native = false
description = "Aave V3 on Arbitrum One. Addresses from bgd-labs/aave-address-book (AaveV3Arbitrum)."

[protocol.contracts]
pool = "0x794a61358D6845594F94dc1DB02A252b5b4814aD"
pool_addresses_provider = "0xa97684ead0e402dC232d5A977953DF7ECBaB3CDb"
oracle = "0xb56c2F0B653B2e0b10C9b928C8580Ac5Df02C7C7"
pool_data_provider = "0x243Aa95cAC2a25651eda86e80bEe66114413c43b"
Loading