@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.
Files changed (124) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +36 -0
  3. package/dist/capability-catalog.d.ts +38 -0
  4. package/dist/capability-catalog.d.ts.map +1 -0
  5. package/dist/capability-catalog.js +449 -0
  6. package/dist/capability-catalog.js.map +1 -0
  7. package/dist/config/aave-reserves.d.ts +56 -0
  8. package/dist/config/aave-reserves.d.ts.map +1 -0
  9. package/dist/config/aave-reserves.js +154 -0
  10. package/dist/config/aave-reserves.js.map +1 -0
  11. package/dist/config/chains.d.ts +18 -0
  12. package/dist/config/chains.d.ts.map +1 -0
  13. package/dist/config/chains.js +30 -0
  14. package/dist/config/chains.js.map +1 -0
  15. package/dist/config/dex-pairs.d.ts +92 -0
  16. package/dist/config/dex-pairs.d.ts.map +1 -0
  17. package/dist/config/dex-pairs.js +328 -0
  18. package/dist/config/dex-pairs.js.map +1 -0
  19. package/dist/config/protocols.d.ts +20 -0
  20. package/dist/config/protocols.d.ts.map +1 -0
  21. package/dist/config/protocols.js +112 -0
  22. package/dist/config/protocols.js.map +1 -0
  23. package/dist/config/registry.json +208 -0
  24. package/dist/config/tokens.d.ts +9 -0
  25. package/dist/config/tokens.d.ts.map +1 -0
  26. package/dist/config/tokens.js +167 -0
  27. package/dist/config/tokens.js.map +1 -0
  28. package/dist/errors.d.ts +14 -0
  29. package/dist/errors.d.ts.map +1 -0
  30. package/dist/errors.js +30 -0
  31. package/dist/errors.js.map +1 -0
  32. package/dist/index.d.ts +5 -0
  33. package/dist/index.d.ts.map +1 -0
  34. package/dist/index.js +5 -0
  35. package/dist/index.js.map +1 -0
  36. package/dist/lib/abis/aave-v3-pool.d.ts +256 -0
  37. package/dist/lib/abis/aave-v3-pool.d.ts.map +1 -0
  38. package/dist/lib/abis/aave-v3-pool.js +164 -0
  39. package/dist/lib/abis/aave-v3-pool.js.map +1 -0
  40. package/dist/lib/abis/merchant-moe-lb.d.ts +527 -0
  41. package/dist/lib/abis/merchant-moe-lb.d.ts.map +1 -0
  42. package/dist/lib/abis/merchant-moe-lb.js +330 -0
  43. package/dist/lib/abis/merchant-moe-lb.js.map +1 -0
  44. package/dist/lib/abis/uniswap-v3.d.ts +460 -0
  45. package/dist/lib/abis/uniswap-v3.d.ts.map +1 -0
  46. package/dist/lib/abis/uniswap-v3.js +319 -0
  47. package/dist/lib/abis/uniswap-v3.js.map +1 -0
  48. package/dist/lib/abis/wmnt.d.ts +90 -0
  49. package/dist/lib/abis/wmnt.d.ts.map +1 -0
  50. package/dist/lib/abis/wmnt.js +67 -0
  51. package/dist/lib/abis/wmnt.js.map +1 -0
  52. package/dist/lib/clients.d.ts +5 -0
  53. package/dist/lib/clients.d.ts.map +1 -0
  54. package/dist/lib/clients.js +41 -0
  55. package/dist/lib/clients.js.map +1 -0
  56. package/dist/lib/endpoint-policy.d.ts +19 -0
  57. package/dist/lib/endpoint-policy.d.ts.map +1 -0
  58. package/dist/lib/endpoint-policy.js +158 -0
  59. package/dist/lib/endpoint-policy.js.map +1 -0
  60. package/dist/lib/erc20.d.ts +113 -0
  61. package/dist/lib/erc20.d.ts.map +1 -0
  62. package/dist/lib/erc20.js +79 -0
  63. package/dist/lib/erc20.js.map +1 -0
  64. package/dist/lib/network.d.ts +8 -0
  65. package/dist/lib/network.d.ts.map +1 -0
  66. package/dist/lib/network.js +21 -0
  67. package/dist/lib/network.js.map +1 -0
  68. package/dist/lib/registry.d.ts +26 -0
  69. package/dist/lib/registry.d.ts.map +1 -0
  70. package/dist/lib/registry.js +22 -0
  71. package/dist/lib/registry.js.map +1 -0
  72. package/dist/lib/token-list.d.ts +14 -0
  73. package/dist/lib/token-list.d.ts.map +1 -0
  74. package/dist/lib/token-list.js +42 -0
  75. package/dist/lib/token-list.js.map +1 -0
  76. package/dist/lib/token-registry.d.ts +11 -0
  77. package/dist/lib/token-registry.d.ts.map +1 -0
  78. package/dist/lib/token-registry.js +75 -0
  79. package/dist/lib/token-registry.js.map +1 -0
  80. package/dist/tools/account.d.ts +16 -0
  81. package/dist/tools/account.d.ts.map +1 -0
  82. package/dist/tools/account.js +209 -0
  83. package/dist/tools/account.js.map +1 -0
  84. package/dist/tools/chain.d.ts +15 -0
  85. package/dist/tools/chain.d.ts.map +1 -0
  86. package/dist/tools/chain.js +77 -0
  87. package/dist/tools/chain.js.map +1 -0
  88. package/dist/tools/defi-lp-read.d.ts +14 -0
  89. package/dist/tools/defi-lp-read.d.ts.map +1 -0
  90. package/dist/tools/defi-lp-read.js +1184 -0
  91. package/dist/tools/defi-lp-read.js.map +1 -0
  92. package/dist/tools/defi-read.d.ts +186 -0
  93. package/dist/tools/defi-read.d.ts.map +1 -0
  94. package/dist/tools/defi-read.js +1682 -0
  95. package/dist/tools/defi-read.js.map +1 -0
  96. package/dist/tools/defi-write.d.ts +66 -0
  97. package/dist/tools/defi-write.d.ts.map +1 -0
  98. package/dist/tools/defi-write.js +1888 -0
  99. package/dist/tools/defi-write.js.map +1 -0
  100. package/dist/tools/diagnostics.d.ts +10 -0
  101. package/dist/tools/diagnostics.d.ts.map +1 -0
  102. package/dist/tools/diagnostics.js +143 -0
  103. package/dist/tools/diagnostics.js.map +1 -0
  104. package/dist/tools/index.d.ts +12 -0
  105. package/dist/tools/index.d.ts.map +1 -0
  106. package/dist/tools/index.js +31 -0
  107. package/dist/tools/index.js.map +1 -0
  108. package/dist/tools/indexer.d.ts +17 -0
  109. package/dist/tools/indexer.d.ts.map +1 -0
  110. package/dist/tools/indexer.js +174 -0
  111. package/dist/tools/indexer.js.map +1 -0
  112. package/dist/tools/registry.d.ts +13 -0
  113. package/dist/tools/registry.d.ts.map +1 -0
  114. package/dist/tools/registry.js +161 -0
  115. package/dist/tools/registry.js.map +1 -0
  116. package/dist/tools/token.d.ts +21 -0
  117. package/dist/tools/token.d.ts.map +1 -0
  118. package/dist/tools/token.js +444 -0
  119. package/dist/tools/token.js.map +1 -0
  120. package/dist/types.d.ts +18 -0
  121. package/dist/types.d.ts.map +1 -0
  122. package/dist/types.js +2 -0
  123. package/dist/types.js.map +1 -0
  124. 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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"}