@0xwh1sker/mantle-core 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 +36 -0
- package/dist/capability-catalog.d.ts +38 -0
- package/dist/capability-catalog.d.ts.map +1 -0
- package/dist/capability-catalog.js +449 -0
- package/dist/capability-catalog.js.map +1 -0
- package/dist/config/aave-reserves.d.ts +56 -0
- package/dist/config/aave-reserves.d.ts.map +1 -0
- package/dist/config/aave-reserves.js +154 -0
- package/dist/config/aave-reserves.js.map +1 -0
- package/dist/config/chains.d.ts +18 -0
- package/dist/config/chains.d.ts.map +1 -0
- package/dist/config/chains.js +30 -0
- package/dist/config/chains.js.map +1 -0
- package/dist/config/dex-pairs.d.ts +92 -0
- package/dist/config/dex-pairs.d.ts.map +1 -0
- package/dist/config/dex-pairs.js +328 -0
- package/dist/config/dex-pairs.js.map +1 -0
- package/dist/config/protocols.d.ts +20 -0
- package/dist/config/protocols.d.ts.map +1 -0
- package/dist/config/protocols.js +112 -0
- package/dist/config/protocols.js.map +1 -0
- package/dist/config/registry.json +208 -0
- package/dist/config/tokens.d.ts +9 -0
- package/dist/config/tokens.d.ts.map +1 -0
- package/dist/config/tokens.js +167 -0
- package/dist/config/tokens.js.map +1 -0
- package/dist/errors.d.ts +14 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +30 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/abis/aave-v3-pool.d.ts +256 -0
- package/dist/lib/abis/aave-v3-pool.d.ts.map +1 -0
- package/dist/lib/abis/aave-v3-pool.js +164 -0
- package/dist/lib/abis/aave-v3-pool.js.map +1 -0
- package/dist/lib/abis/merchant-moe-lb.d.ts +527 -0
- package/dist/lib/abis/merchant-moe-lb.d.ts.map +1 -0
- package/dist/lib/abis/merchant-moe-lb.js +330 -0
- package/dist/lib/abis/merchant-moe-lb.js.map +1 -0
- package/dist/lib/abis/uniswap-v3.d.ts +460 -0
- package/dist/lib/abis/uniswap-v3.d.ts.map +1 -0
- package/dist/lib/abis/uniswap-v3.js +319 -0
- package/dist/lib/abis/uniswap-v3.js.map +1 -0
- package/dist/lib/abis/wmnt.d.ts +90 -0
- package/dist/lib/abis/wmnt.d.ts.map +1 -0
- package/dist/lib/abis/wmnt.js +67 -0
- package/dist/lib/abis/wmnt.js.map +1 -0
- package/dist/lib/clients.d.ts +5 -0
- package/dist/lib/clients.d.ts.map +1 -0
- package/dist/lib/clients.js +41 -0
- package/dist/lib/clients.js.map +1 -0
- package/dist/lib/endpoint-policy.d.ts +19 -0
- package/dist/lib/endpoint-policy.d.ts.map +1 -0
- package/dist/lib/endpoint-policy.js +158 -0
- package/dist/lib/endpoint-policy.js.map +1 -0
- package/dist/lib/erc20.d.ts +113 -0
- package/dist/lib/erc20.d.ts.map +1 -0
- package/dist/lib/erc20.js +79 -0
- package/dist/lib/erc20.js.map +1 -0
- package/dist/lib/network.d.ts +8 -0
- package/dist/lib/network.d.ts.map +1 -0
- package/dist/lib/network.js +21 -0
- package/dist/lib/network.js.map +1 -0
- package/dist/lib/registry.d.ts +26 -0
- package/dist/lib/registry.d.ts.map +1 -0
- package/dist/lib/registry.js +22 -0
- package/dist/lib/registry.js.map +1 -0
- package/dist/lib/token-list.d.ts +14 -0
- package/dist/lib/token-list.d.ts.map +1 -0
- package/dist/lib/token-list.js +42 -0
- package/dist/lib/token-list.js.map +1 -0
- package/dist/lib/token-registry.d.ts +11 -0
- package/dist/lib/token-registry.d.ts.map +1 -0
- package/dist/lib/token-registry.js +75 -0
- package/dist/lib/token-registry.js.map +1 -0
- package/dist/tools/account.d.ts +16 -0
- package/dist/tools/account.d.ts.map +1 -0
- package/dist/tools/account.js +209 -0
- package/dist/tools/account.js.map +1 -0
- package/dist/tools/chain.d.ts +15 -0
- package/dist/tools/chain.d.ts.map +1 -0
- package/dist/tools/chain.js +77 -0
- package/dist/tools/chain.js.map +1 -0
- package/dist/tools/defi-lp-read.d.ts +14 -0
- package/dist/tools/defi-lp-read.d.ts.map +1 -0
- package/dist/tools/defi-lp-read.js +1184 -0
- package/dist/tools/defi-lp-read.js.map +1 -0
- package/dist/tools/defi-read.d.ts +186 -0
- package/dist/tools/defi-read.d.ts.map +1 -0
- package/dist/tools/defi-read.js +1682 -0
- package/dist/tools/defi-read.js.map +1 -0
- package/dist/tools/defi-write.d.ts +66 -0
- package/dist/tools/defi-write.d.ts.map +1 -0
- package/dist/tools/defi-write.js +1888 -0
- package/dist/tools/defi-write.js.map +1 -0
- package/dist/tools/diagnostics.d.ts +10 -0
- package/dist/tools/diagnostics.d.ts.map +1 -0
- package/dist/tools/diagnostics.js +143 -0
- package/dist/tools/diagnostics.js.map +1 -0
- package/dist/tools/index.d.ts +12 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +31 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/indexer.d.ts +17 -0
- package/dist/tools/indexer.d.ts.map +1 -0
- package/dist/tools/indexer.js +174 -0
- package/dist/tools/indexer.js.map +1 -0
- package/dist/tools/registry.d.ts +13 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +161 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/token.d.ts +21 -0
- package/dist/tools/token.d.ts.map +1 -0
- package/dist/tools/token.js +444 -0
- package/dist/tools/token.js.map +1 -0
- package/dist/types.d.ts +18 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +38 -0
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Aave V3 Mantle reserve assets — hardcoded from the official aave-address-book.
|
|
3
|
+
*
|
|
4
|
+
* Source: https://github.com/bgd-labs/aave-address-book/blob/main/src/ts/AaveV3Mantle.ts
|
|
5
|
+
*
|
|
6
|
+
* Each entry contains the underlying token, its Aave aToken (deposit receipt),
|
|
7
|
+
* and variable debt token. Agents can use this registry to:
|
|
8
|
+
* - Know which assets are eligible for supply/borrow on Aave V3
|
|
9
|
+
* - Resolve aToken/debtToken addresses for portfolio valuation
|
|
10
|
+
* - Skip on-chain lookups for known reserves
|
|
11
|
+
*/
|
|
12
|
+
export const AAVE_V3_MANTLE_RESERVES = [
|
|
13
|
+
{
|
|
14
|
+
id: 0,
|
|
15
|
+
symbol: "WETH",
|
|
16
|
+
underlying: "0xdEAddEaDdeadDEadDEADDEAddEADDEAddead1111",
|
|
17
|
+
aToken: "0xeAC30Ed8609F564aE65C809C4bf42dB2fF426D2C",
|
|
18
|
+
variableDebtToken: "0x0baF5974838114e7001D02782e6B1D8aEE1fc626",
|
|
19
|
+
decimals: 18,
|
|
20
|
+
isolationMode: true,
|
|
21
|
+
debtCeilingUsd: 30_000_000, // $30M (on-chain raw 3_000_000_000 / 100)
|
|
22
|
+
borrowableInIsolation: false
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
id: 1,
|
|
26
|
+
symbol: "WMNT",
|
|
27
|
+
underlying: "0x78c1b0C915c4FAA5FffA6CAbf0219DA63d7f4cb8",
|
|
28
|
+
aToken: "0x85d86061e94CE01D3DA0f9EFa289c86ff136125a",
|
|
29
|
+
variableDebtToken: "0x9c27A8ffacAbdEE0Ac5c415E018D295BB6444F0E",
|
|
30
|
+
decimals: 18,
|
|
31
|
+
isolationMode: true,
|
|
32
|
+
debtCeilingUsd: 2_000_000, // $2M (on-chain raw 200_000_000 / 100)
|
|
33
|
+
borrowableInIsolation: false
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
id: 2,
|
|
37
|
+
symbol: "USDT0",
|
|
38
|
+
underlying: "0x779Ded0c9e1022225f8E0630b35a9b54bE713736",
|
|
39
|
+
aToken: "0x7053bAD224F0C021839f6AC645BdaE5F8b585b69",
|
|
40
|
+
variableDebtToken: "0x5d9e4663d3d532179c404dBe9edF93045F89aDed",
|
|
41
|
+
decimals: 6,
|
|
42
|
+
isolationMode: false,
|
|
43
|
+
debtCeilingUsd: 0,
|
|
44
|
+
borrowableInIsolation: true
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
id: 3,
|
|
48
|
+
symbol: "USDC",
|
|
49
|
+
underlying: "0x09Bc4E0D864854c6aFB6eB9A9cdF58aC190D0dF9",
|
|
50
|
+
aToken: "0xcb8164415274515867ec43CbD284ab5d6d2b304F",
|
|
51
|
+
variableDebtToken: "0xCea474BDa7Ad0a8F62e938a5563edfAEf7368Fc0",
|
|
52
|
+
decimals: 6,
|
|
53
|
+
isolationMode: false,
|
|
54
|
+
debtCeilingUsd: 0,
|
|
55
|
+
borrowableInIsolation: true
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
id: 4,
|
|
59
|
+
symbol: "USDe",
|
|
60
|
+
underlying: "0x5d3a1Ff2b6BAb83b63cd9AD0787074081a52ef34",
|
|
61
|
+
aToken: "0xb9aCA933C9c0aa854a6DBb7b12f0CC3FdaC15ee7",
|
|
62
|
+
variableDebtToken: "0x0169FD279c8c656037E5D199Cff8137f1e2d807c",
|
|
63
|
+
decimals: 18,
|
|
64
|
+
isolationMode: false,
|
|
65
|
+
debtCeilingUsd: 0,
|
|
66
|
+
borrowableInIsolation: true
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
id: 5,
|
|
70
|
+
symbol: "sUSDe",
|
|
71
|
+
underlying: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2",
|
|
72
|
+
aToken: "0xaf972F332FF79bd32A6CB6B54f903eA0F9b16C2a",
|
|
73
|
+
variableDebtToken: "0xc42B44c65bBe7AA8E5b02416918688c244ec7847",
|
|
74
|
+
decimals: 18,
|
|
75
|
+
isolationMode: false,
|
|
76
|
+
debtCeilingUsd: 0,
|
|
77
|
+
borrowableInIsolation: false
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
id: 6,
|
|
81
|
+
symbol: "FBTC",
|
|
82
|
+
underlying: "0xC96dE26018A54D51c097160568752c4E3BD6C364",
|
|
83
|
+
aToken: "0xfa14c9DE267b59A586043372bd98Ed99e3Ee0533",
|
|
84
|
+
variableDebtToken: "0x691AbCD512C1Cfef99442b0ACD3eD98Ee7F4e64E",
|
|
85
|
+
decimals: 8,
|
|
86
|
+
isolationMode: false,
|
|
87
|
+
debtCeilingUsd: 0,
|
|
88
|
+
borrowableInIsolation: false
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
id: 7,
|
|
92
|
+
symbol: "syrupUSDT",
|
|
93
|
+
underlying: "0x051665f2455116e929b9972c36d23070F5054Ce0",
|
|
94
|
+
aToken: "0xF8400F3FA9cD9F9E84e93cD9De9f14EB7B5b59b5",
|
|
95
|
+
variableDebtToken: "0x2E20c5291CD675bFe52a533a6208588f5484999e",
|
|
96
|
+
decimals: 6,
|
|
97
|
+
isolationMode: false,
|
|
98
|
+
debtCeilingUsd: 0,
|
|
99
|
+
borrowableInIsolation: false
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
id: 8,
|
|
103
|
+
symbol: "wrsETH",
|
|
104
|
+
underlying: "0x93e855643e940D025bE2e529272e4Dbd15a2Cf74",
|
|
105
|
+
aToken: "0x5cC6999aC46F4627309a7ce0F321a3f45D138ED5",
|
|
106
|
+
variableDebtToken: "0x7C5549DE0dEb930bAb1e11B075151a19e400605c",
|
|
107
|
+
decimals: 18,
|
|
108
|
+
isolationMode: false,
|
|
109
|
+
debtCeilingUsd: 0,
|
|
110
|
+
borrowableInIsolation: false
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
id: 9,
|
|
114
|
+
symbol: "GHO",
|
|
115
|
+
underlying: "0xfc421aD3C883Bf9E7C4f42dE845C4e4405799e73",
|
|
116
|
+
aToken: "0x8917d4eE4609f991b559DAF8D0aD1b892c13B127",
|
|
117
|
+
variableDebtToken: "0xeE1eABe23fA42028809F587B8fE1936b154d2620",
|
|
118
|
+
decimals: 18,
|
|
119
|
+
isolationMode: false,
|
|
120
|
+
debtCeilingUsd: 0,
|
|
121
|
+
borrowableInIsolation: true
|
|
122
|
+
}
|
|
123
|
+
];
|
|
124
|
+
// ---------------------------------------------------------------------------
|
|
125
|
+
// Lookup helpers
|
|
126
|
+
// ---------------------------------------------------------------------------
|
|
127
|
+
const bySymbol = new Map(AAVE_V3_MANTLE_RESERVES.map((r) => [r.symbol.toLowerCase(), r]));
|
|
128
|
+
const byUnderlying = new Map(AAVE_V3_MANTLE_RESERVES.map((r) => [r.underlying.toLowerCase(), r]));
|
|
129
|
+
/** Find a reserve by symbol (case-insensitive). */
|
|
130
|
+
export function findReserveBySymbol(symbol) {
|
|
131
|
+
return bySymbol.get(symbol.toLowerCase()) ?? null;
|
|
132
|
+
}
|
|
133
|
+
/** Find a reserve by underlying token address. */
|
|
134
|
+
export function findReserveByUnderlying(address) {
|
|
135
|
+
return byUnderlying.get(address.toLowerCase()) ?? null;
|
|
136
|
+
}
|
|
137
|
+
/** Check whether a token is a supported Aave V3 reserve on Mantle. */
|
|
138
|
+
export function isAaveReserve(symbolOrAddress) {
|
|
139
|
+
const lower = symbolOrAddress.toLowerCase();
|
|
140
|
+
return bySymbol.has(lower) || byUnderlying.has(lower);
|
|
141
|
+
}
|
|
142
|
+
/** Get all reserve symbols. */
|
|
143
|
+
export function aaveReserveSymbols() {
|
|
144
|
+
return AAVE_V3_MANTLE_RESERVES.map((r) => r.symbol);
|
|
145
|
+
}
|
|
146
|
+
/** Symbols of reserves whose debtCeiling > 0 (supplying them triggers Isolation Mode). */
|
|
147
|
+
export function isolationModeSymbols() {
|
|
148
|
+
return AAVE_V3_MANTLE_RESERVES.filter((r) => r.isolationMode).map((r) => r.symbol);
|
|
149
|
+
}
|
|
150
|
+
/** Symbols of reserves that CAN be borrowed while in Isolation Mode. */
|
|
151
|
+
export function isolationBorrowableSymbols() {
|
|
152
|
+
return AAVE_V3_MANTLE_RESERVES.filter((r) => r.borrowableInIsolation).map((r) => r.symbol);
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=aave-reserves.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aave-reserves.js","sourceRoot":"","sources":["../../src/config/aave-reserves.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Network } from "../types.js";
|
|
2
|
+
export interface ChainConfig {
|
|
3
|
+
chain_id: number;
|
|
4
|
+
name: string;
|
|
5
|
+
native_token: {
|
|
6
|
+
symbol: string;
|
|
7
|
+
decimals: number;
|
|
8
|
+
};
|
|
9
|
+
rpc_url: string;
|
|
10
|
+
ws_url: string | null;
|
|
11
|
+
explorer_url: string;
|
|
12
|
+
bridge_url: string;
|
|
13
|
+
recommended_solidity_compiler: string;
|
|
14
|
+
wrapped_mnt: string;
|
|
15
|
+
faucet_urls?: string[];
|
|
16
|
+
}
|
|
17
|
+
export declare const CHAIN_CONFIGS: Record<Network, ChainConfig>;
|
|
18
|
+
//# sourceMappingURL=chains.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chains.d.ts","sourceRoot":"","sources":["../../src/config/chains.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,6BAA6B,EAAE,MAAM,CAAC;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,OAAO,EAAE,WAAW,CA4BtD,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export const CHAIN_CONFIGS = {
|
|
2
|
+
mainnet: {
|
|
3
|
+
chain_id: 5000,
|
|
4
|
+
name: "Mantle",
|
|
5
|
+
native_token: { symbol: "MNT", decimals: 18 },
|
|
6
|
+
rpc_url: "https://rpc.mantle.xyz",
|
|
7
|
+
ws_url: "wss://rpc.mantle.xyz",
|
|
8
|
+
explorer_url: "https://mantlescan.xyz",
|
|
9
|
+
bridge_url: "https://app.mantle.xyz/bridge",
|
|
10
|
+
recommended_solidity_compiler: "v0.8.23 or below",
|
|
11
|
+
wrapped_mnt: "0x78c1b0C915c4FAA5FffA6CAbf0219DA63d7f4cb8"
|
|
12
|
+
},
|
|
13
|
+
sepolia: {
|
|
14
|
+
chain_id: 5003,
|
|
15
|
+
name: "Mantle Sepolia",
|
|
16
|
+
native_token: { symbol: "MNT", decimals: 18 },
|
|
17
|
+
rpc_url: "https://rpc.sepolia.mantle.xyz",
|
|
18
|
+
ws_url: null,
|
|
19
|
+
explorer_url: "https://sepolia.mantlescan.xyz",
|
|
20
|
+
bridge_url: "https://app.mantle.xyz/bridge?network=sepolia",
|
|
21
|
+
faucet_urls: [
|
|
22
|
+
"https://faucet.sepolia.mantle.xyz/",
|
|
23
|
+
"https://faucet.quicknode.com/mantle/sepolia",
|
|
24
|
+
"https://thirdweb.com/mantle-sepolia-testnet/faucet"
|
|
25
|
+
],
|
|
26
|
+
recommended_solidity_compiler: "v0.8.23 or below",
|
|
27
|
+
wrapped_mnt: "0x19f5557E23e9914A18239990f6C70D68FDF0deD5"
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=chains.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chains.js","sourceRoot":"","sources":["../../src/config/chains.ts"],"names":[],"mappings":"AAeA,MAAM,CAAC,MAAM,aAAa,GAAiC;IACzD,OAAO,EAAE;QACP,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,QAAQ;QACd,YAAY,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC7C,OAAO,EAAE,wBAAwB;QACjC,MAAM,EAAE,sBAAsB;QAC9B,YAAY,EAAE,wBAAwB;QACtC,UAAU,EAAE,+BAA+B;QAC3C,6BAA6B,EAAE,kBAAkB;QACjD,WAAW,EAAE,4CAA4C;KAC1D;IACD,OAAO,EAAE;QACP,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,gBAAgB;QACtB,YAAY,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC7C,OAAO,EAAE,gCAAgC;QACzC,MAAM,EAAE,IAAI;QACZ,YAAY,EAAE,gCAAgC;QAC9C,UAAU,EAAE,+CAA+C;QAC3D,WAAW,EAAE;YACX,oCAAoC;YACpC,6CAA6C;YAC7C,oDAAoD;SACrD;QACD,6BAA6B,EAAE,kBAAkB;QACjD,WAAW,EAAE,4CAA4C;KAC1D;CACF,CAAC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Known DEX trading pairs on Mantle with their pool parameters.
|
|
3
|
+
*
|
|
4
|
+
* Agents should use this registry to auto-resolve pool parameters
|
|
5
|
+
* (bin_step for Merchant Moe, fee_tier for V3 DEXes) instead of
|
|
6
|
+
* guessing or asking the user.
|
|
7
|
+
*
|
|
8
|
+
* Sources:
|
|
9
|
+
* - GeckoTerminal: https://www.geckoterminal.com/mantle/
|
|
10
|
+
* - Merchant Moe docs: https://docs.merchantmoe.com/resources/contracts
|
|
11
|
+
* - Agni Finance: https://agni.finance
|
|
12
|
+
*/
|
|
13
|
+
import type { Network } from "../types.js";
|
|
14
|
+
export interface MoePair {
|
|
15
|
+
provider: "merchant_moe";
|
|
16
|
+
tokenA: string;
|
|
17
|
+
tokenB: string;
|
|
18
|
+
tokenAAddress: string;
|
|
19
|
+
tokenBAddress: string;
|
|
20
|
+
pool: string;
|
|
21
|
+
/** Bin step in basis points (1 = 0.01%). Stablecoin pairs use 1, volatile use 15-25+. */
|
|
22
|
+
binStep: number;
|
|
23
|
+
/** Liquidity Book version. */
|
|
24
|
+
version: number;
|
|
25
|
+
/**
|
|
26
|
+
* LB Router path version enum. This is the value passed in the `versions[]`
|
|
27
|
+
* array when calling `swapExactTokensForTokens`.
|
|
28
|
+
* 0 = V1 (classic AMM), 1 = V2, 2 = V2.1, 3 = V2.2
|
|
29
|
+
* Defaults to 0 (V1) if omitted — V1 routing works for all Moe pools.
|
|
30
|
+
*/
|
|
31
|
+
routerVersion?: number;
|
|
32
|
+
}
|
|
33
|
+
export interface V3Pair {
|
|
34
|
+
provider: "agni" | "fluxion";
|
|
35
|
+
tokenA: string;
|
|
36
|
+
tokenB: string;
|
|
37
|
+
tokenAAddress: string;
|
|
38
|
+
tokenBAddress: string;
|
|
39
|
+
pool: string;
|
|
40
|
+
/** Fee tier in hundredths of basis points (500 = 0.05%, 3000 = 0.3%, 10000 = 1%). */
|
|
41
|
+
feeTier: number;
|
|
42
|
+
}
|
|
43
|
+
export type DexPair = MoePair | V3Pair;
|
|
44
|
+
export declare const TOKENS: {
|
|
45
|
+
readonly WMNT: "0x78c1b0C915c4FAA5FffA6CAbf0219DA63d7f4cb8";
|
|
46
|
+
readonly USDC: "0x09Bc4E0D864854c6aFB6eB9A9cdF58aC190D0dF9";
|
|
47
|
+
readonly USDT0: "0x779Ded0c9e1022225f8E0630b35a9b54bE713736";
|
|
48
|
+
readonly USDe: "0x5d3a1Ff2b6BAb83b63cd9AD0787074081a52ef34";
|
|
49
|
+
readonly WETH: "0xdEAddEaDdeadDEadDEADDEAddEADDEAddead1111";
|
|
50
|
+
readonly mETH: "0xcDA86A272531e8640cD7F1a92c01839911B90bb0";
|
|
51
|
+
readonly cmETH: "0xE6829d9a7eE3040e1276Fa75293Bde931859e8fA";
|
|
52
|
+
readonly FBTC: "0xC96dE26018A54D51c097160568752c4E3BD6C364";
|
|
53
|
+
readonly sUSDe: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2";
|
|
54
|
+
readonly MOE: "0x4515A45337F461A11Ff0FE8aBF3c606AE5dC00c9";
|
|
55
|
+
readonly USDT: "0x201EBa5CC46D216Ce6DC03F6a759e8E766e956aE";
|
|
56
|
+
readonly BSB: "0xe5c330ADdf7aa9C7838dA836436142c56a15aa95";
|
|
57
|
+
readonly ELSA: "0x29cC30f9D113B356Ce408667aa6433589CeCBDcA";
|
|
58
|
+
readonly VOOI: "0xd81a4aDea9932a6BDba0bDBc8C5Fd4C78e5A09f1";
|
|
59
|
+
};
|
|
60
|
+
export declare const XSTOCKS: {
|
|
61
|
+
readonly wTSLAx: "0x43680abf18cf54898be84c6ef78237cfbd441883";
|
|
62
|
+
readonly wAAPLx: "0x5aa7649fdbda47de64a07ac81d64b682af9c0724";
|
|
63
|
+
readonly wCRCLx: "0xa90872aca656ebe47bdebf3b19ec9dd9c5adc7f8";
|
|
64
|
+
readonly wSPYx: "0xc88fcd8b874fdb3256e8b55b3decb8c24eab4c02";
|
|
65
|
+
readonly wHOODx: "0x953707d7a1cb30cc5c636bda8eaebe410341eb14";
|
|
66
|
+
readonly wMSTRx: "0x266e5923f6118f8b340ca5a23ae7f71897361476";
|
|
67
|
+
readonly wNVDAx: "0x93e62845c1dd5822ebc807ab71a5fb750decd15a";
|
|
68
|
+
readonly wGOOGLx: "0x1630f08370917e79df0b7572395a5e907508bbbc";
|
|
69
|
+
readonly wMETAx: "0x4e41a262caa93c6575d336e0a4eb79f3c67caa06";
|
|
70
|
+
readonly wQQQx: "0xdbd9232fee15351068fe02f0683146e16d9f2cea";
|
|
71
|
+
};
|
|
72
|
+
type Provider = "merchant_moe" | "agni" | "fluxion";
|
|
73
|
+
/**
|
|
74
|
+
* Find a known trading pair by provider and token symbols.
|
|
75
|
+
* Matches in either direction (A/B or B/A).
|
|
76
|
+
*/
|
|
77
|
+
export declare function findPair(provider: Provider, tokenA: string, tokenB: string, _network?: Network): DexPair | null;
|
|
78
|
+
/**
|
|
79
|
+
* Find a known trading pair by provider and token addresses.
|
|
80
|
+
* Matches in either direction.
|
|
81
|
+
*/
|
|
82
|
+
export declare function findPairByAddress(provider: Provider, addressA: string, addressB: string, _network?: Network): DexPair | null;
|
|
83
|
+
/**
|
|
84
|
+
* List all known pairs for a provider.
|
|
85
|
+
*/
|
|
86
|
+
export declare function listPairs(provider: Provider): DexPair[];
|
|
87
|
+
/**
|
|
88
|
+
* List all known pairs across all providers.
|
|
89
|
+
*/
|
|
90
|
+
export declare function listAllPairs(): DexPair[];
|
|
91
|
+
export {};
|
|
92
|
+
//# sourceMappingURL=dex-pairs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dex-pairs.d.ts","sourceRoot":"","sources":["../../src/config/dex-pairs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAM3C,MAAM,WAAW,OAAO;IACtB,QAAQ,EAAE,cAAc,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,yFAAyF;IACzF,OAAO,EAAE,MAAM,CAAC;IAChB,8BAA8B;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,MAAM;IACrB,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,qFAAqF;IACrF,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,OAAO,GAAG,OAAO,GAAG,MAAM,CAAC;AAMvC,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;CAeT,CAAC;AAyGX,eAAO,MAAM,OAAO;;;;;;;;;;;CAWV,CAAC;AAgKX,KAAK,QAAQ,GAAG,cAAc,GAAG,MAAM,GAAG,SAAS,CAAC;AAEpD;;;GAGG;AACH,wBAAgB,QAAQ,CACtB,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,OAAO,GACjB,OAAO,GAAG,IAAI,CAWhB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,OAAO,GACjB,OAAO,GAAG,IAAI,CAahB;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,EAAE,CAEvD;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,OAAO,EAAE,CAExC"}
|
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Known DEX trading pairs on Mantle with their pool parameters.
|
|
3
|
+
*
|
|
4
|
+
* Agents should use this registry to auto-resolve pool parameters
|
|
5
|
+
* (bin_step for Merchant Moe, fee_tier for V3 DEXes) instead of
|
|
6
|
+
* guessing or asking the user.
|
|
7
|
+
*
|
|
8
|
+
* Sources:
|
|
9
|
+
* - GeckoTerminal: https://www.geckoterminal.com/mantle/
|
|
10
|
+
* - Merchant Moe docs: https://docs.merchantmoe.com/resources/contracts
|
|
11
|
+
* - Agni Finance: https://agni.finance
|
|
12
|
+
*/
|
|
13
|
+
// ---------------------------------------------------------------------------
|
|
14
|
+
// Token address constants (Mantle mainnet)
|
|
15
|
+
// ---------------------------------------------------------------------------
|
|
16
|
+
export const TOKENS = {
|
|
17
|
+
WMNT: "0x78c1b0C915c4FAA5FffA6CAbf0219DA63d7f4cb8",
|
|
18
|
+
USDC: "0x09Bc4E0D864854c6aFB6eB9A9cdF58aC190D0dF9",
|
|
19
|
+
USDT0: "0x779Ded0c9e1022225f8E0630b35a9b54bE713736",
|
|
20
|
+
USDe: "0x5d3a1Ff2b6BAb83b63cd9AD0787074081a52ef34",
|
|
21
|
+
WETH: "0xdEAddEaDdeadDEadDEADDEAddEADDEAddead1111",
|
|
22
|
+
mETH: "0xcDA86A272531e8640cD7F1a92c01839911B90bb0",
|
|
23
|
+
cmETH: "0xE6829d9a7eE3040e1276Fa75293Bde931859e8fA",
|
|
24
|
+
FBTC: "0xC96dE26018A54D51c097160568752c4E3BD6C364",
|
|
25
|
+
sUSDe: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2",
|
|
26
|
+
MOE: "0x4515A45337F461A11Ff0FE8aBF3c606AE5dC00c9",
|
|
27
|
+
USDT: "0x201EBa5CC46D216Ce6DC03F6a759e8E766e956aE",
|
|
28
|
+
BSB: "0xe5c330ADdf7aa9C7838dA836436142c56a15aa95",
|
|
29
|
+
ELSA: "0x29cC30f9D113B356Ce408667aa6433589CeCBDcA",
|
|
30
|
+
VOOI: "0xd81a4aDea9932a6BDba0bDBc8C5Fd4C78e5A09f1"
|
|
31
|
+
};
|
|
32
|
+
// ---------------------------------------------------------------------------
|
|
33
|
+
// Merchant Moe Liquidity Book pairs
|
|
34
|
+
// ---------------------------------------------------------------------------
|
|
35
|
+
const MOE_PAIRS = [
|
|
36
|
+
// ---- Stablecoin pairs (bin_step = 1, LB V2.2 pools) ----
|
|
37
|
+
{
|
|
38
|
+
provider: "merchant_moe",
|
|
39
|
+
tokenA: "USDC", tokenB: "USDT0",
|
|
40
|
+
tokenAAddress: TOKENS.USDC, tokenBAddress: TOKENS.USDT0,
|
|
41
|
+
pool: "0x48c1a89af1102cad358549e9bb16ae5f96cddfec",
|
|
42
|
+
binStep: 1, version: 2, routerVersion: 3
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
provider: "merchant_moe",
|
|
46
|
+
tokenA: "USDe", tokenB: "USDT0",
|
|
47
|
+
tokenAAddress: TOKENS.USDe, tokenBAddress: TOKENS.USDT0,
|
|
48
|
+
pool: "0x7ccd8a769d466340fff36c6e10ffa8cf9077d988",
|
|
49
|
+
binStep: 1, version: 2, routerVersion: 3
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
provider: "merchant_moe",
|
|
53
|
+
tokenA: "USDC", tokenB: "USDe",
|
|
54
|
+
tokenAAddress: TOKENS.USDC, tokenBAddress: TOKENS.USDe,
|
|
55
|
+
pool: "0xd55639c3312467adafb347614806f1d30525c0c8",
|
|
56
|
+
binStep: 1, version: 2, routerVersion: 3
|
|
57
|
+
},
|
|
58
|
+
// ---- WMNT pairs (V1 classic AMM pools — routerVersion defaults to 0) ----
|
|
59
|
+
{
|
|
60
|
+
provider: "merchant_moe",
|
|
61
|
+
tokenA: "WMNT", tokenB: "USDT0",
|
|
62
|
+
tokenAAddress: TOKENS.WMNT, tokenBAddress: TOKENS.USDT0,
|
|
63
|
+
pool: "0xf6c9020c9e915808481757779edb53daceae2415",
|
|
64
|
+
binStep: 20, version: 2
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
provider: "merchant_moe",
|
|
68
|
+
tokenA: "WMNT", tokenB: "USDe",
|
|
69
|
+
tokenAAddress: TOKENS.WMNT, tokenBAddress: TOKENS.USDe,
|
|
70
|
+
pool: "0x5d54d430d1fd9425976147318e6080479bffc16d",
|
|
71
|
+
binStep: 20, version: 2
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
provider: "merchant_moe",
|
|
75
|
+
tokenA: "WMNT", tokenB: "USDC",
|
|
76
|
+
tokenAAddress: TOKENS.WMNT, tokenBAddress: TOKENS.USDC,
|
|
77
|
+
pool: "0x8e3a13418743ab1a98434551937ea687e451b589",
|
|
78
|
+
binStep: 20, version: 2
|
|
79
|
+
},
|
|
80
|
+
// ---- ETH derivative pairs (V1 classic AMM pools) ----
|
|
81
|
+
{
|
|
82
|
+
provider: "merchant_moe",
|
|
83
|
+
tokenA: "mETH", tokenB: "WETH",
|
|
84
|
+
tokenAAddress: TOKENS.mETH, tokenBAddress: TOKENS.WETH,
|
|
85
|
+
pool: "0x86e3a987187fed135d6d9c114f1857d8144f01e1",
|
|
86
|
+
binStep: 5, version: 2
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
provider: "merchant_moe",
|
|
90
|
+
tokenA: "cmETH", tokenB: "mETH",
|
|
91
|
+
tokenAAddress: TOKENS.cmETH, tokenBAddress: TOKENS.mETH,
|
|
92
|
+
pool: "0x3d887ce4988fb46aec6e0027171f65db3526e5f1",
|
|
93
|
+
binStep: 5, version: 2
|
|
94
|
+
}
|
|
95
|
+
];
|
|
96
|
+
// ---------------------------------------------------------------------------
|
|
97
|
+
// Agni Finance V3 pairs
|
|
98
|
+
// ---------------------------------------------------------------------------
|
|
99
|
+
const AGNI_PAIRS = [
|
|
100
|
+
{
|
|
101
|
+
provider: "agni",
|
|
102
|
+
tokenA: "WETH", tokenB: "WMNT",
|
|
103
|
+
tokenAAddress: TOKENS.WETH, tokenBAddress: TOKENS.WMNT,
|
|
104
|
+
pool: "0x54169896d28dec0ffabe3b16f90f71323774949f",
|
|
105
|
+
feeTier: 500 // 0.05%
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
provider: "agni",
|
|
109
|
+
tokenA: "USDC", tokenB: "WMNT",
|
|
110
|
+
tokenAAddress: TOKENS.USDC, tokenBAddress: TOKENS.WMNT,
|
|
111
|
+
pool: "0x8e2c009e45420d2b36bc15315f9de8ceca2cc724",
|
|
112
|
+
feeTier: 10000 // 1%
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
provider: "agni",
|
|
116
|
+
tokenA: "mETH", tokenB: "WETH",
|
|
117
|
+
tokenAAddress: TOKENS.mETH, tokenBAddress: TOKENS.WETH,
|
|
118
|
+
pool: "0x4f9e3683a523b66da89d82bba0a9caa1c3243df4",
|
|
119
|
+
feeTier: 500 // 0.05%
|
|
120
|
+
}
|
|
121
|
+
// NOTE: USDT0/WMNT removed — pool 0x07c410... has no deployed contract
|
|
122
|
+
// and Agni factory returns zero-address at all fee tiers.
|
|
123
|
+
];
|
|
124
|
+
// ---------------------------------------------------------------------------
|
|
125
|
+
// xStocks RWA token addresses (Fluxion, all paired with USDC)
|
|
126
|
+
// Source: mantle-xyz/fluxion-mm-monitor-tools configs/pools.yaml
|
|
127
|
+
// ---------------------------------------------------------------------------
|
|
128
|
+
export const XSTOCKS = {
|
|
129
|
+
wTSLAx: "0x43680abf18cf54898be84c6ef78237cfbd441883",
|
|
130
|
+
wAAPLx: "0x5aa7649fdbda47de64a07ac81d64b682af9c0724",
|
|
131
|
+
wCRCLx: "0xa90872aca656ebe47bdebf3b19ec9dd9c5adc7f8",
|
|
132
|
+
wSPYx: "0xc88fcd8b874fdb3256e8b55b3decb8c24eab4c02",
|
|
133
|
+
wHOODx: "0x953707d7a1cb30cc5c636bda8eaebe410341eb14",
|
|
134
|
+
wMSTRx: "0x266e5923f6118f8b340ca5a23ae7f71897361476",
|
|
135
|
+
wNVDAx: "0x93e62845c1dd5822ebc807ab71a5fb750decd15a",
|
|
136
|
+
wGOOGLx: "0x1630f08370917e79df0b7572395a5e907508bbbc",
|
|
137
|
+
wMETAx: "0x4e41a262caa93c6575d336e0a4eb79f3c67caa06",
|
|
138
|
+
wQQQx: "0xdbd9232fee15351068fe02f0683146e16d9f2cea"
|
|
139
|
+
};
|
|
140
|
+
// ---------------------------------------------------------------------------
|
|
141
|
+
// Fluxion V3 pairs — xStocks RWA pools (all USDC-paired, fee 3000)
|
|
142
|
+
// ---------------------------------------------------------------------------
|
|
143
|
+
const FLUXION_PAIRS = [
|
|
144
|
+
// ---- DeFi pairs (fee_tier 3000 = 0.3%) ----
|
|
145
|
+
{
|
|
146
|
+
provider: "fluxion",
|
|
147
|
+
tokenA: "WMNT", tokenB: "USDC",
|
|
148
|
+
tokenAAddress: TOKENS.WMNT, tokenBAddress: TOKENS.USDC,
|
|
149
|
+
pool: "0x8748e10925850891643f31beff1132e574260cd7",
|
|
150
|
+
feeTier: 3000
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
provider: "fluxion",
|
|
154
|
+
tokenA: "WMNT", tokenB: "USDT0",
|
|
155
|
+
tokenAAddress: TOKENS.WMNT, tokenBAddress: TOKENS.USDT0,
|
|
156
|
+
pool: "0x373c05fbe686fa1f3abf5e37ac74c4fac73d2e95",
|
|
157
|
+
feeTier: 3000
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
provider: "fluxion",
|
|
161
|
+
tokenA: "WETH", tokenB: "mETH",
|
|
162
|
+
tokenAAddress: TOKENS.WETH, tokenBAddress: TOKENS.mETH,
|
|
163
|
+
pool: "0xd2ae16b4f4985db367330052b6551387da584f6f",
|
|
164
|
+
feeTier: 3000
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
provider: "fluxion",
|
|
168
|
+
tokenA: "USDC", tokenB: "WETH",
|
|
169
|
+
tokenAAddress: TOKENS.USDC, tokenBAddress: TOKENS.WETH,
|
|
170
|
+
pool: "0xd6ecefcd6f94073a7837af5c791e2180b6e66b90",
|
|
171
|
+
feeTier: 3000
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
provider: "fluxion",
|
|
175
|
+
tokenA: "USDC", tokenB: "mETH",
|
|
176
|
+
tokenAAddress: TOKENS.USDC, tokenBAddress: TOKENS.mETH,
|
|
177
|
+
pool: "0xeebc5e596d6c788bcaa5324f44a8f648b746e041",
|
|
178
|
+
feeTier: 3000
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
provider: "fluxion",
|
|
182
|
+
tokenA: "USDT0", tokenB: "WETH",
|
|
183
|
+
tokenAAddress: TOKENS.USDT0, tokenBAddress: TOKENS.WETH,
|
|
184
|
+
pool: "0xa7c728c4be834ddaf5c49ee4ced678d8aff49de6",
|
|
185
|
+
feeTier: 3000
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
provider: "fluxion",
|
|
189
|
+
tokenA: "USDT0", tokenB: "mETH",
|
|
190
|
+
tokenAAddress: TOKENS.USDT0, tokenBAddress: TOKENS.mETH,
|
|
191
|
+
pool: "0x9756d5b60fe70ba41cd4d01fe04779f556c4b75d",
|
|
192
|
+
feeTier: 3000
|
|
193
|
+
},
|
|
194
|
+
// ---- Ecosystem token pairs (fee_tier 3000 = 0.3%) ----
|
|
195
|
+
{
|
|
196
|
+
provider: "fluxion",
|
|
197
|
+
tokenA: "USDT0", tokenB: "BSB",
|
|
198
|
+
tokenAAddress: TOKENS.USDT0, tokenBAddress: TOKENS.BSB,
|
|
199
|
+
pool: "0xdc16ff7d202bae83b35fd7cdbba28be6b8b13f24",
|
|
200
|
+
feeTier: 3000
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
provider: "fluxion",
|
|
204
|
+
tokenA: "ELSA", tokenB: "USDT0",
|
|
205
|
+
tokenAAddress: TOKENS.ELSA, tokenBAddress: TOKENS.USDT0,
|
|
206
|
+
pool: "0xe855dae59c7abfedb47d4ae3bb0faa0b1c52a2bc",
|
|
207
|
+
feeTier: 3000
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
provider: "fluxion",
|
|
211
|
+
tokenA: "USDT0", tokenB: "VOOI",
|
|
212
|
+
tokenAAddress: TOKENS.USDT0, tokenBAddress: TOKENS.VOOI,
|
|
213
|
+
pool: "0x2305ad92740d186bf3834d4cca2eee1b3d5fa3fe",
|
|
214
|
+
feeTier: 3000
|
|
215
|
+
},
|
|
216
|
+
// ---- xStocks RWA pairs (USDC / xToken, fee_tier 3000 = 0.3%) ----
|
|
217
|
+
{
|
|
218
|
+
provider: "fluxion",
|
|
219
|
+
tokenA: "USDC", tokenB: "wTSLAx",
|
|
220
|
+
tokenAAddress: TOKENS.USDC, tokenBAddress: XSTOCKS.wTSLAx,
|
|
221
|
+
pool: "0x5e7935d70b5d14b6cf36fbde59944533fab96b3c",
|
|
222
|
+
feeTier: 3000
|
|
223
|
+
},
|
|
224
|
+
{
|
|
225
|
+
provider: "fluxion",
|
|
226
|
+
tokenA: "USDC", tokenB: "wAAPLx",
|
|
227
|
+
tokenAAddress: TOKENS.USDC, tokenBAddress: XSTOCKS.wAAPLx,
|
|
228
|
+
pool: "0x2cc6a607f3445d826b9e29f507b3a2e3b9dae106",
|
|
229
|
+
feeTier: 3000
|
|
230
|
+
},
|
|
231
|
+
{
|
|
232
|
+
provider: "fluxion",
|
|
233
|
+
tokenA: "USDC", tokenB: "wCRCLx",
|
|
234
|
+
tokenAAddress: TOKENS.USDC, tokenBAddress: XSTOCKS.wCRCLx,
|
|
235
|
+
pool: "0x43cf441f5949d52faa105060239543492193c87e",
|
|
236
|
+
feeTier: 3000
|
|
237
|
+
},
|
|
238
|
+
{
|
|
239
|
+
provider: "fluxion",
|
|
240
|
+
tokenA: "USDC", tokenB: "wSPYx",
|
|
241
|
+
tokenAAddress: TOKENS.USDC, tokenBAddress: XSTOCKS.wSPYx,
|
|
242
|
+
pool: "0x373f7a2b95f28f38500eb70652e12038cca3bab8",
|
|
243
|
+
feeTier: 3000
|
|
244
|
+
},
|
|
245
|
+
{
|
|
246
|
+
provider: "fluxion",
|
|
247
|
+
tokenA: "USDC", tokenB: "wHOODx",
|
|
248
|
+
tokenAAddress: TOKENS.USDC, tokenBAddress: XSTOCKS.wHOODx,
|
|
249
|
+
pool: "0x4e23bb828e51cbc03c81d76c844228cc75f6a287",
|
|
250
|
+
feeTier: 3000
|
|
251
|
+
},
|
|
252
|
+
{
|
|
253
|
+
provider: "fluxion",
|
|
254
|
+
tokenA: "USDC", tokenB: "wMSTRx",
|
|
255
|
+
tokenAAddress: TOKENS.USDC, tokenBAddress: XSTOCKS.wMSTRx,
|
|
256
|
+
pool: "0x0e1f84a9e388071e20df101b36c14c817bf81953",
|
|
257
|
+
feeTier: 3000
|
|
258
|
+
},
|
|
259
|
+
{
|
|
260
|
+
provider: "fluxion",
|
|
261
|
+
tokenA: "USDC", tokenB: "wNVDAx",
|
|
262
|
+
tokenAAddress: TOKENS.USDC, tokenBAddress: XSTOCKS.wNVDAx,
|
|
263
|
+
pool: "0xa875ac23d106394d1baaae5bc42b951268bc04e2",
|
|
264
|
+
feeTier: 3000
|
|
265
|
+
},
|
|
266
|
+
{
|
|
267
|
+
provider: "fluxion",
|
|
268
|
+
tokenA: "USDC", tokenB: "wGOOGLx",
|
|
269
|
+
tokenAAddress: TOKENS.USDC, tokenBAddress: XSTOCKS.wGOOGLx,
|
|
270
|
+
pool: "0x66960ed892daf022c5f282c5316c38cb6f0c1333",
|
|
271
|
+
feeTier: 3000
|
|
272
|
+
},
|
|
273
|
+
{
|
|
274
|
+
provider: "fluxion",
|
|
275
|
+
tokenA: "USDC", tokenB: "wMETAx",
|
|
276
|
+
tokenAAddress: TOKENS.USDC, tokenBAddress: XSTOCKS.wMETAx,
|
|
277
|
+
pool: "0x782bd3895a6ac561d0df11b02dd6f9e023f3a497",
|
|
278
|
+
feeTier: 3000
|
|
279
|
+
},
|
|
280
|
+
{
|
|
281
|
+
provider: "fluxion",
|
|
282
|
+
tokenA: "USDC", tokenB: "wQQQx",
|
|
283
|
+
tokenAAddress: TOKENS.USDC, tokenBAddress: XSTOCKS.wQQQx,
|
|
284
|
+
pool: "0x505258001e834251634029742fc73b5cab4fd67d",
|
|
285
|
+
feeTier: 3000
|
|
286
|
+
}
|
|
287
|
+
];
|
|
288
|
+
// ---------------------------------------------------------------------------
|
|
289
|
+
// Registry (mainnet only for now)
|
|
290
|
+
// ---------------------------------------------------------------------------
|
|
291
|
+
const ALL_PAIRS = [...MOE_PAIRS, ...AGNI_PAIRS, ...FLUXION_PAIRS];
|
|
292
|
+
/**
|
|
293
|
+
* Find a known trading pair by provider and token symbols.
|
|
294
|
+
* Matches in either direction (A/B or B/A).
|
|
295
|
+
*/
|
|
296
|
+
export function findPair(provider, tokenA, tokenB, _network) {
|
|
297
|
+
const a = tokenA.toLowerCase();
|
|
298
|
+
const b = tokenB.toLowerCase();
|
|
299
|
+
return (ALL_PAIRS.find((p) => p.provider === provider &&
|
|
300
|
+
((p.tokenA.toLowerCase() === a && p.tokenB.toLowerCase() === b) ||
|
|
301
|
+
(p.tokenA.toLowerCase() === b && p.tokenB.toLowerCase() === a))) ?? null);
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Find a known trading pair by provider and token addresses.
|
|
305
|
+
* Matches in either direction.
|
|
306
|
+
*/
|
|
307
|
+
export function findPairByAddress(provider, addressA, addressB, _network) {
|
|
308
|
+
const a = addressA.toLowerCase();
|
|
309
|
+
const b = addressB.toLowerCase();
|
|
310
|
+
return (ALL_PAIRS.find((p) => p.provider === provider &&
|
|
311
|
+
((p.tokenAAddress.toLowerCase() === a &&
|
|
312
|
+
p.tokenBAddress.toLowerCase() === b) ||
|
|
313
|
+
(p.tokenAAddress.toLowerCase() === b &&
|
|
314
|
+
p.tokenBAddress.toLowerCase() === a))) ?? null);
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* List all known pairs for a provider.
|
|
318
|
+
*/
|
|
319
|
+
export function listPairs(provider) {
|
|
320
|
+
return ALL_PAIRS.filter((p) => p.provider === provider);
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* List all known pairs across all providers.
|
|
324
|
+
*/
|
|
325
|
+
export function listAllPairs() {
|
|
326
|
+
return ALL_PAIRS;
|
|
327
|
+
}
|
|
328
|
+
//# sourceMappingURL=dex-pairs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dex-pairs.js","sourceRoot":"","sources":["../../src/config/dex-pairs.ts"],"names":[],"mappings":"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"}
|