@curvefi/api 2.69.13 → 2.69.15

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.
@@ -44,6 +44,7 @@ export const COINS_ETHEREUM = lowerCaseValues({
44
44
  usdn: "0x674C6Ad92Fd080e4004b2312b45f796a192D27a0", // USDN
45
45
  dai: "0x6B175474E89094C44Da98b954EedeAC495271d0F", // DAI
46
46
  usdc: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", // USDC
47
+ syrupusdc: "0x80ac24aA929eaF5013f6436cdA2a7ba190f5Cc0b", // syrupUSDC
47
48
  usdt: "0xdAC17F958D2ee523a2206206994597C13D831ec7", // USDT
48
49
  susd: "0x57Ab1ec28D129707052df4dF418D58a2D46d5f51", // sUSD
49
50
  tusd: "0x0000000000085d4780B73119b644AE5ecd22b376", // TUSD
@@ -90,6 +91,8 @@ export const COINS_ETHEREUM = lowerCaseValues({
90
91
  spell: "0x090185f2135308bad17527004364ebcc2d37e5f6", // SPELL
91
92
  t: "0xCdF7028ceAB81fA0C6971208e83fa7872994beE5", // T
92
93
  xaut: "0x68749665ff8d2d112fa859aa293f07a622782f38", // XAUt
94
+ zchf: "0xB58E61C3098d85632Df34EecfB899A1Ed80921cB", // ZCHF
95
+ svzchf: "0xE5F130253fF137f9917C0107659A4c5262abf6b0", // svZCHF
93
96
  });
94
97
  export const cTokensEthereum = [
95
98
  '0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643', // cDAI
@@ -0,0 +1,5 @@
1
+ export declare const COINS_FANTOM: {
2
+ [index: string]: string;
3
+ };
4
+ export declare const cTokensFantom: string[];
5
+ export declare const aTokensFantom: string[];
@@ -0,0 +1,31 @@
1
+ import { lowerCaseValues } from "../utils.js";
2
+ export const COINS_FANTOM = lowerCaseValues({
3
+ 'crv': '0x1E4F97b9f9F913c46F1632781732927B9019C68b',
4
+ // --- USD ---
5
+ 'dai': '0x8d11ec38a3eb5e956b052f67da8bdc9bef8abf3e',
6
+ 'usdc': '0x04068da6c83afcfa0e13ba15a6696662335d5b75',
7
+ 'fusdt': '0x049d68029688eabf473097a2fc38ef61633a3c7a',
8
+ 'idai': '0x04c762a5dF2Fa02FE868F25359E0C259fB811CfE',
9
+ 'iusdc': '0x328A7b4d538A2b3942653a9983fdA3C12c571141',
10
+ 'ifusdt': '0x70faC71debfD67394D1278D98A29dea79DC6E57A',
11
+ 'gdai': '0x07e6332dd090d287d3489245038daf987955dcfb',
12
+ 'gusdc': '0xe578c856933d8e1082740bf7661e379aa2a30b26',
13
+ 'gfusdt': '0x940f41f0ec9ba1a34cf001cc03347ac092f5f6b5',
14
+ 'dai+usdc': '0x27e611fd27b276acbd5ffd632e5eaebec9761e40', // LP token
15
+ 'frax': '0xdc301622e621166bd8e82f2ca0a26c13ad0be355',
16
+ // --- BTC ---
17
+ 'wbtc': '0x321162Cd933E2Be498Cd2267a90534A804051b11',
18
+ 'renbtc': '0xDBf31dF14B66535aF65AaC99C32e9eA844e14501',
19
+ // --- ETH ---
20
+ 'eth': '0x74b23882a30290451A17c44f4F05243b6b58C76d',
21
+ });
22
+ export const cTokensFantom = [
23
+ '0x04c762a5dF2Fa02FE868F25359E0C259fB811CfE', // iDAI
24
+ '0x328A7b4d538A2b3942653a9983fdA3C12c571141', // iUSDC
25
+ '0x70faC71debfD67394D1278D98A29dea79DC6E57A', // iFUSDT
26
+ ].map((a) => a.toLowerCase());
27
+ export const aTokensFantom = [
28
+ '0x07e6332dd090d287d3489245038daf987955dcfb', // gDAI
29
+ '0xe578c856933d8e1082740bf7661e379aa2a30b26', // gUSDC
30
+ '0x940f41f0ec9ba1a34cf001cc03347ac092f5f6b5', // gfUSDT
31
+ ].map((a) => a.toLowerCase());
@@ -1,5 +1,6 @@
1
1
  import { COINS_ETHEREUM, cTokensEthereum, yTokensEthereum, ycTokensEthereum, aTokensEthereum } from "./ethereum.js";
2
2
  import { COINS_POLYGON, aTokensPolygon } from "./polygon.js";
3
+ import { COINS_FANTOM, cTokensFantom, aTokensFantom } from "./fantom.js";
3
4
  import { COINS_AVALANCHE, aTokensAvalanche } from "./avalanche.js";
4
5
  import { COINS_ARBITRUM } from "./arbitrum.js";
5
6
  import { COINS_OPTIMISM } from "./optimism.js";
@@ -16,4 +17,4 @@ import { COINS_XLAYER } from "./xlayer.js";
16
17
  import { COINS_MANTLE } from "./mantle.js";
17
18
  import { COINS_SONIC } from "./sonic.js";
18
19
  import { COINS_HYPERLIQUID } from "./hyperliquid.js";
19
- export { COINS_ETHEREUM, cTokensEthereum, yTokensEthereum, ycTokensEthereum, aTokensEthereum, COINS_POLYGON, aTokensPolygon, COINS_AVALANCHE, aTokensAvalanche, COINS_ARBITRUM, COINS_OPTIMISM, COINS_XDAI, COINS_MOONBEAM, COINS_AURORA, COINS_KAVA, COINS_CELO, COINS_ZKSYNC, COINS_BASE, COINS_BSC, COINS_FRAXTAL, COINS_XLAYER, COINS_MANTLE, COINS_SONIC, COINS_HYPERLIQUID, };
20
+ export { COINS_ETHEREUM, cTokensEthereum, yTokensEthereum, ycTokensEthereum, aTokensEthereum, COINS_POLYGON, aTokensPolygon, COINS_FANTOM, cTokensFantom, aTokensFantom, COINS_AVALANCHE, aTokensAvalanche, COINS_ARBITRUM, COINS_OPTIMISM, COINS_XDAI, COINS_MOONBEAM, COINS_AURORA, COINS_KAVA, COINS_CELO, COINS_ZKSYNC, COINS_BASE, COINS_BSC, COINS_FRAXTAL, COINS_XLAYER, COINS_MANTLE, COINS_SONIC, COINS_HYPERLIQUID, };
@@ -1,5 +1,6 @@
1
1
  import { COINS_ETHEREUM, cTokensEthereum, yTokensEthereum, ycTokensEthereum, aTokensEthereum } from "./ethereum.js";
2
2
  import { COINS_POLYGON, aTokensPolygon } from "./polygon.js";
3
+ import { COINS_FANTOM, cTokensFantom, aTokensFantom } from "./fantom.js";
3
4
  import { COINS_AVALANCHE, aTokensAvalanche } from "./avalanche.js";
4
5
  import { COINS_ARBITRUM } from "./arbitrum.js";
5
6
  import { COINS_OPTIMISM } from "./optimism.js";
@@ -16,4 +17,4 @@ import { COINS_XLAYER } from "./xlayer.js";
16
17
  import { COINS_MANTLE } from "./mantle.js";
17
18
  import { COINS_SONIC } from "./sonic.js";
18
19
  import { COINS_HYPERLIQUID } from "./hyperliquid.js";
19
- export { COINS_ETHEREUM, cTokensEthereum, yTokensEthereum, ycTokensEthereum, aTokensEthereum, COINS_POLYGON, aTokensPolygon, COINS_AVALANCHE, aTokensAvalanche, COINS_ARBITRUM, COINS_OPTIMISM, COINS_XDAI, COINS_MOONBEAM, COINS_AURORA, COINS_KAVA, COINS_CELO, COINS_ZKSYNC, COINS_BASE, COINS_BSC, COINS_FRAXTAL, COINS_XLAYER, COINS_MANTLE, COINS_SONIC, COINS_HYPERLIQUID, };
20
+ export { COINS_ETHEREUM, cTokensEthereum, yTokensEthereum, ycTokensEthereum, aTokensEthereum, COINS_POLYGON, aTokensPolygon, COINS_FANTOM, cTokensFantom, aTokensFantom, COINS_AVALANCHE, aTokensAvalanche, COINS_ARBITRUM, COINS_OPTIMISM, COINS_XDAI, COINS_MOONBEAM, COINS_AURORA, COINS_KAVA, COINS_CELO, COINS_ZKSYNC, COINS_BASE, COINS_BSC, COINS_FRAXTAL, COINS_XLAYER, COINS_MANTLE, COINS_SONIC, COINS_HYPERLIQUID, };
@@ -45,6 +45,11 @@ export declare const tricryptoDeployImplementations: {
45
45
  amm_native_transfers_enabled: string;
46
46
  implementationIdx: number;
47
47
  };
48
+ 250: {
49
+ amm_native_transfers_disabled: string;
50
+ amm_native_transfers_enabled: string;
51
+ implementationIdx: number;
52
+ };
48
53
  252: {
49
54
  amm_native_transfers_disabled: string;
50
55
  amm_native_transfers_enabled: string;
@@ -62,6 +62,11 @@ export const tricryptoDeployImplementations = {
62
62
  amm_native_transfers_enabled: '0x0C9D8c7e486e822C29488Ff51BFf0167B4650953'.toLowerCase(), //0
63
63
  implementationIdx: 1,
64
64
  },
65
+ 250: {
66
+ amm_native_transfers_disabled: '0xd125E7a0cEddF89c6473412d85835450897be6Dc'.toLowerCase(), //1
67
+ amm_native_transfers_enabled: '0x76303e4fDcA0AbF28aB3ee42Ce086E6503431F1D'.toLowerCase(), //0
68
+ implementationIdx: 1,
69
+ },
65
70
  252: {
66
71
  amm_native_transfers_disabled: '0x1A83348F9cCFD3Fe1A8C0adBa580Ac4e267Fe495'.toLowerCase(), //1
67
72
  amm_native_transfers_enabled: '0xd3b17f862956464ae4403ccf829ce69199856e1e'.toLowerCase(), //0
@@ -144,6 +149,9 @@ export const CRYPTO_FACTORY_CONSTANTS = {
144
149
  196: {
145
150
  tricryptoDeployImplementations: tricryptoDeployImplementations[196],
146
151
  },
152
+ 250: {
153
+ tricryptoDeployImplementations: tricryptoDeployImplementations[250],
154
+ },
147
155
  252: {
148
156
  tricryptoDeployImplementations: tricryptoDeployImplementations[252],
149
157
  },
@@ -19,6 +19,10 @@ export declare const basePoolIdZapDictPolygon: IDict<{
19
19
  address: string;
20
20
  ABI: any;
21
21
  }>;
22
+ export declare const basePoolIdZapDictFantom: IDict<{
23
+ address: string;
24
+ ABI: any;
25
+ }>;
22
26
  export declare const basePoolIdZapDictAvalanche: IDict<{
23
27
  address: string;
24
28
  ABI: any;
@@ -30,6 +30,7 @@ import fraxusdcMetaZapABI from "../abis/fraxusdc/meta_zap.json" with { type: 'js
30
30
  import MetaUsdZapPolygonABI from "../abis/factory-v2/DepositZapMetaUsdPolygon.json" with { type: 'json' };
31
31
  import MetaBtcZapPolygonABI from "../abis/factory-v2/DepositZapMetaBtcPolygon.json" with { type: 'json' };
32
32
  import MetaZapFantomABI from "../abis/factory-v2/DepositZapFantom.json" with { type: 'json' };
33
+ import MetaGeistUsdZapFantomABI from "../abis/factory-v2/DepositZapMetaUsd2Fantom.json" with { type: 'json' };
33
34
  import RenMetaZapABI from "../abis/ren/meta_zap.json" with { type: 'json' };
34
35
  import Sbtc2MetaZapABI from "../abis/sbtc2/meta_zap.json" with { type: 'json' };
35
36
  import { lowerCaseKeys } from "../utils.js";
@@ -288,6 +289,20 @@ export const basePoolIdZapDictPolygon = {
288
289
  ABI: MetaBtcZapPolygonABI,
289
290
  },
290
291
  };
292
+ export const basePoolIdZapDictFantom = {
293
+ '2pool': {
294
+ address: "0x78D51EB71a62c081550EfcC0a9F9Ea94B2Ef081c".toLowerCase(),
295
+ ABI: MetaZapFantomABI,
296
+ },
297
+ ren: {
298
+ address: "0x001E3BA199B4FF4B5B6e97aCD96daFC0E2e4156e".toLowerCase(),
299
+ ABI: MetaZapFantomABI,
300
+ },
301
+ geist: {
302
+ address: "0x247aEB220E87f24c40C9F86b65d6bd5d3c987B55".toLowerCase(),
303
+ ABI: MetaGeistUsdZapFantomABI,
304
+ },
305
+ };
291
306
  export const basePoolIdZapDictAvalanche = {
292
307
  aave: {
293
308
  address: "0x001E3BA199B4FF4B5B6e97aCD96daFC0E2e4156e".toLowerCase(),
@@ -360,6 +375,11 @@ export const STABLE_FACTORY_CONSTANTS = {
360
375
  196: {
361
376
  stableNgBasePoolZap: stableNgBasePoolZap,
362
377
  },
378
+ 250: {
379
+ implementationABIDict: implementationABIDictFantom,
380
+ basePoolIdZapDict: basePoolIdZapDictFantom,
381
+ stableNgBasePoolZap: stableNgBasePoolZap,
382
+ },
363
383
  252: {
364
384
  stableNgBasePoolZap: stableNgBasePoolZap,
365
385
  },
@@ -1,6 +1,6 @@
1
1
  import { lowerCaseValues } from "./utils.js";
2
- import { POOLS_DATA_ETHEREUM, LLAMMAS_DATA_ETHEREUM, POOLS_DATA_POLYGON, POOLS_DATA_AVALANCHE, POOLS_DATA_ARBITRUM, POOLS_DATA_OPTIMISM, POOLS_DATA_XDAI, POOLS_DATA_MOONBEAM, POOLS_DATA_AURORA, POOLS_DATA_KAVA, POOLS_DATA_CELO, POOLS_DATA_ZKSYNC, POOLS_DATA_BASE, POOLS_DATA_BSC, POOLS_DATA_FRAXTAL, POOLS_DATA_XLAYER, POOLS_DATA_MANTLE, POOLS_DATA_SONIC, POOLS_DATA_HYPERLIQUID, } from './pools/index.js';
3
- import { COINS_ETHEREUM, cTokensEthereum, yTokensEthereum, ycTokensEthereum, aTokensEthereum, COINS_OPTIMISM, COINS_POLYGON, aTokensPolygon, COINS_AVALANCHE, aTokensAvalanche, COINS_ARBITRUM, COINS_XDAI, COINS_MOONBEAM, COINS_AURORA, COINS_KAVA, COINS_CELO, COINS_ZKSYNC, COINS_BASE, COINS_BSC, COINS_FRAXTAL, COINS_XLAYER, COINS_MANTLE, COINS_SONIC, COINS_HYPERLIQUID, } from "./coins/index.js";
2
+ import { POOLS_DATA_ETHEREUM, LLAMMAS_DATA_ETHEREUM, POOLS_DATA_POLYGON, POOLS_DATA_FANTOM, POOLS_DATA_AVALANCHE, POOLS_DATA_ARBITRUM, POOLS_DATA_OPTIMISM, POOLS_DATA_XDAI, POOLS_DATA_MOONBEAM, POOLS_DATA_AURORA, POOLS_DATA_KAVA, POOLS_DATA_CELO, POOLS_DATA_ZKSYNC, POOLS_DATA_BASE, POOLS_DATA_BSC, POOLS_DATA_FRAXTAL, POOLS_DATA_XLAYER, POOLS_DATA_MANTLE, POOLS_DATA_SONIC, POOLS_DATA_HYPERLIQUID, } from './pools/index.js';
3
+ import { COINS_ETHEREUM, cTokensEthereum, yTokensEthereum, ycTokensEthereum, aTokensEthereum, COINS_OPTIMISM, COINS_POLYGON, aTokensPolygon, COINS_FANTOM, cTokensFantom, aTokensFantom, COINS_AVALANCHE, aTokensAvalanche, COINS_ARBITRUM, COINS_XDAI, COINS_MOONBEAM, COINS_AURORA, COINS_KAVA, COINS_CELO, COINS_ZKSYNC, COINS_BASE, COINS_BSC, COINS_FRAXTAL, COINS_XLAYER, COINS_MANTLE, COINS_SONIC, COINS_HYPERLIQUID, } from "./coins/index.js";
4
4
  const ALIASES_ETHEREUM = lowerCaseValues({
5
5
  "crv": "0xD533a949740bb3306d119CC777fa900bA034cd52", // <--- CHANGE
6
6
  "minter": '0xd061D61a4d941c39E5453435B6345Dc261C2fcE0', // <--- RECOVERED
@@ -45,6 +45,25 @@ const ALIASES_POLYGON = lowerCaseValues({
45
45
  "tricrypto_factory": '0xC1b393EfEF38140662b91441C6710Aa704973228',
46
46
  "factory_admin": "",
47
47
  });
48
+ const ALIASES_FANTOM = lowerCaseValues({
49
+ "crv": "0x1E4F97b9f9F913c46F1632781732927B9019C68b",
50
+ "child_gauge_factory": "0x004A476B5B76738E34c86C7144554B9d34402F13",
51
+ "child_gauge_factory_old": "0xDb205f215f568ADf21b9573b62566f6d9a40bed6",
52
+ "voting_escrow": "0xb75dca485e21a77e1b433ecacb74475fc67e259c",
53
+ "fee_distributor": "0xA464e6DCda8AC41e03616F95f4BC98a13b8922Dc", // <-- DUMMY
54
+ "gauge_controller": "0x2F50D538606Fa9EDD2B11E2446BEb18C9D5846bB",
55
+ "address_provider": "0x0000000022d53366457f9d5e68ec105046fc4383",
56
+ "router": "0x0DCDED3545D565bA3B19E683431381007245d983",
57
+ "deposit_and_stake": "0x37c5ab57AF7100Bdc9B668d766e193CCbF6614FD",
58
+ "stable_calc": "0xCA8d0747B5573D69653C3aC22242e6341C36e4b4",
59
+ "crypto_calc": '0xA72C85C258A81761433B4e8da60505Fe3Dd551CC',
60
+ "factory": "0x686d67265703d1f124c45e33d47d794c566889ba",
61
+ "crypto_factory": "0xE5De15A9C9bBedb4F5EC13B131E61245f2983A69",
62
+ "stable_ng_factory": '0xe61Fb97Ef6eBFBa12B36Ffd7be785c1F5A2DE66b',
63
+ "twocrypto_factory": '0x98EE851a00abeE0d95D08cF4CA2BdCE32aeaAF7F',
64
+ "tricrypto_factory": '0x9AF14D26075f142eb3F292D5065EB3faa646167b',
65
+ "factory_admin": "",
66
+ });
48
67
  const ALIASES_AVALANCHE = lowerCaseValues({
49
68
  "crv": "0x47536F17F4fF30e64A96a7555826b8f9e66ec468",
50
69
  "child_gauge_factory": "0x97aDC08FA1D849D2C48C5dcC1DaB568B169b0267",
@@ -409,6 +428,20 @@ export const NETWORK_CONSTANTS = {
409
428
  wrappedAddress: '0xe538905cf8410324e03a5a23c1c177a474d59b2b'.toLowerCase(),
410
429
  },
411
430
  },
431
+ 250: {
432
+ NAME: 'fantom',
433
+ ALIASES: ALIASES_FANTOM,
434
+ POOLS_DATA: POOLS_DATA_FANTOM,
435
+ COINS: COINS_FANTOM,
436
+ NATIVE_COIN: {
437
+ symbol: 'FTM',
438
+ wrappedSymbol: 'WFTM',
439
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
440
+ wrappedAddress: '0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83'.toLowerCase(),
441
+ },
442
+ cTokens: cTokensFantom,
443
+ aTokens: aTokensFantom,
444
+ },
412
445
  252: {
413
446
  NAME: 'fraxtal',
414
447
  ALIASES: ALIASES_FRAXTAL,
@@ -548,6 +581,7 @@ const registry_exchange_deprecated = {
548
581
  '10': '0x22d710931f01c1681ca1570ff016ed42eb7b7c2a',
549
582
  '100': '0xe6358f6a45b502477e83cc1cda759f540e4459ee',
550
583
  '137': '0x2a426b3bb4fa87488387545f15d01d81352732f9',
584
+ '250': '0xfd8c73d35e522648312a43e7ceb85fe12c8c1760',
551
585
  '324': '0x0000000000000000000000000000000000000000',
552
586
  '1284': '0x6600e98b71dabfD4A8Cac03b302B0189Adb86Afb',
553
587
  '2222': '0xcbf451d41f2ba5b0d169740fd01293dcaf9becb9',
@@ -0,0 +1,2 @@
1
+ import { IDict, IPoolData } from "../../interfaces";
2
+ export declare const POOLS_DATA_FANTOM: IDict<IPoolData>;
@@ -0,0 +1,185 @@
1
+ import { lowerCasePoolDataAddresses } from "../utils.js";
2
+ import twopoolSwapABI from '../abis/2pool/swap.json' with { type: 'json' };
3
+ import fusdtSwapABI from '../abis/fusdt/swap.json' with { type: 'json' };
4
+ import fusdtZapABI from '../abis/fusdt/zap.json' with { type: 'json' };
5
+ import renSwapABI from '../abis/ren-fantom/swap.json' with { type: 'json' };
6
+ import triCryptoSwapNoZap from '../abis/tricrypto/swapNoZap.json' with { type: 'json' };
7
+ import ibSwapABI from '../abis/ib/swap.json' with { type: 'json' };
8
+ import aaveSwapABI from '../abis/aave/swap.json' with { type: 'json' };
9
+ // import paaveRewardsabi from '../abis/paave/rewards.json' with { type: 'json' };
10
+ import gaugeChildABI from '../abis/gauge_child.json' with { type: 'json' };
11
+ import gaugeRewardsOnlyABI from '../abis/gauge_rewards_only.json' with { type: 'json' };
12
+ import streamerABI from '../abis/streamer.json' with { type: 'json' };
13
+ export const POOLS_DATA_FANTOM = lowerCasePoolDataAddresses({
14
+ '2pool': {
15
+ name: "2pool",
16
+ full_name: "2pool",
17
+ symbol: "2pool",
18
+ reference_asset: "USD",
19
+ swap_address: '0x27e611fd27b276acbd5ffd632e5eaebec9761e40',
20
+ token_address: '0x27e611fd27b276acbd5ffd632e5eaebec9761e40',
21
+ // old_gauge: '0x0a53FaDa2d943057C47A301D25a4D9b3B8e01e8E', // Unused
22
+ // old_gauge: '0x8866414733F22295b7563f9C5299715D2D76CAf4',
23
+ gauge_address: '0x15bB164F9827De760174d3d3dAD6816eF50dE13c',
24
+ is_plain: true,
25
+ underlying_coins: ['DAI', 'USDC'],
26
+ wrapped_coins: ['DAI', 'USDC'],
27
+ underlying_coin_addresses: [
28
+ '0x8d11ec38a3eb5e956b052f67da8bdc9bef8abf3e',
29
+ '0x04068da6c83afcfa0e13ba15a6696662335d5b75',
30
+ ],
31
+ wrapped_coin_addresses: [
32
+ '0x8d11ec38a3eb5e956b052f67da8bdc9bef8abf3e',
33
+ '0x04068da6c83afcfa0e13ba15a6696662335d5b75',
34
+ ],
35
+ underlying_decimals: [18, 6],
36
+ wrapped_decimals: [18, 6],
37
+ swap_abi: twopoolSwapABI,
38
+ gauge_abi: gaugeChildABI,
39
+ },
40
+ fusdt: {
41
+ name: "fusdt",
42
+ full_name: "fusdt",
43
+ symbol: "fusdt",
44
+ reference_asset: "USD",
45
+ swap_address: '0x92d5ebf3593a92888c25c0abef126583d4b5312e',
46
+ token_address: '0x92d5ebf3593a92888c25c0abef126583d4b5312e',
47
+ // old_gauge: '0x4f3E8F405CF5aFC05D68142F3783bDfE13811522', // Unused
48
+ gauge_address: '0x06e3C4da96fd076b97b7ca3Ae23527314b6140dF', // Old non-cross-chain gauge
49
+ deposit_address: '0xa42bd395f183726d1a8774cfa795771f8acfd777',
50
+ sCurveRewards_address: '0xfe1a3dd8b169fb5bf0d5dbfe813d956f39ff6310',
51
+ is_meta: true,
52
+ base_pool: '2pool',
53
+ underlying_coins: ['fUSDT', 'DAI', 'USDC'],
54
+ wrapped_coins: ['fUSDT', 'DAI+USDC'],
55
+ underlying_coin_addresses: [
56
+ '0x049d68029688eabf473097a2fc38ef61633a3c7a',
57
+ '0x8d11ec38a3eb5e956b052f67da8bdc9bef8abf3e',
58
+ '0x04068da6c83afcfa0e13ba15a6696662335d5b75',
59
+ ],
60
+ wrapped_coin_addresses: [
61
+ '0x049d68029688eabf473097a2fc38ef61633a3c7a',
62
+ '0x27e611fd27b276acbd5ffd632e5eaebec9761e40',
63
+ ],
64
+ underlying_decimals: [6, 18, 6],
65
+ wrapped_decimals: [6, 18],
66
+ swap_abi: fusdtSwapABI,
67
+ gauge_abi: gaugeRewardsOnlyABI,
68
+ deposit_abi: fusdtZapABI,
69
+ sCurveRewards_abi: streamerABI,
70
+ },
71
+ ren: {
72
+ name: "ren",
73
+ full_name: "ren",
74
+ symbol: "ren",
75
+ reference_asset: "BTC",
76
+ is_plain: true,
77
+ swap_address: '0x3eF6A01A0f81D6046290f3e2A8c5b843e738E604',
78
+ token_address: '0x5B5CFE992AdAC0C9D48E05854B2d91C73a003858',
79
+ // old_gauge: '0x6600e98b71dabfD4A8Cac03b302B0189Adb86Afb',
80
+ // gauge_address: '0xBdFF0C27dd073C119ebcb1299a68A6A92aE607F0',
81
+ gauge_address: '0xbC38bD19227F91424eD4132F630f51C9A42Fa338',
82
+ underlying_coins: ['WBTC', 'renBTC'],
83
+ wrapped_coins: ['WBTC', 'renBTC'],
84
+ underlying_coin_addresses: [
85
+ '0x321162Cd933E2Be498Cd2267a90534A804051b11',
86
+ '0xDBf31dF14B66535aF65AaC99C32e9eA844e14501',
87
+ ],
88
+ wrapped_coin_addresses: [
89
+ '0x321162Cd933E2Be498Cd2267a90534A804051b11',
90
+ '0xDBf31dF14B66535aF65AaC99C32e9eA844e14501',
91
+ ],
92
+ underlying_decimals: [8, 8],
93
+ wrapped_decimals: [8, 8],
94
+ swap_abi: renSwapABI,
95
+ gauge_abi: gaugeChildABI,
96
+ },
97
+ tricrypto: {
98
+ name: "tricrypto",
99
+ full_name: "tricrypto",
100
+ symbol: "tricrypto",
101
+ reference_asset: "CRYPTO",
102
+ swap_address: '0x3a1659Ddcf2339Be3aeA159cA010979FB49155FF',
103
+ token_address: '0x58e57cA18B7A47112b877E31929798Cd3D703b0f',
104
+ // gauge_address: '0x00702BbDEaD24C40647f235F15971dB0867F6bdB',
105
+ gauge_address: '0x319E268f0A4C85D404734ee7958857F5891506d7',
106
+ is_crypto: true,
107
+ is_plain: true,
108
+ underlying_coins: ['fUSDT', 'WBTC', 'ETH'],
109
+ wrapped_coins: ['fUSDT', 'WBTC', 'ETH'],
110
+ underlying_coin_addresses: [
111
+ '0x049d68029688eAbF473097a2fC38ef61633A3C7A',
112
+ '0x321162Cd933E2Be498Cd2267a90534A804051b11',
113
+ '0x74b23882a30290451A17c44f4F05243b6b58C76d',
114
+ ],
115
+ wrapped_coin_addresses: [
116
+ '0x049d68029688eAbF473097a2fC38ef61633A3C7A',
117
+ '0x321162Cd933E2Be498Cd2267a90534A804051b11',
118
+ '0x74b23882a30290451A17c44f4F05243b6b58C76d',
119
+ ],
120
+ underlying_decimals: [6, 8, 18],
121
+ wrapped_decimals: [6, 8, 18],
122
+ swap_abi: triCryptoSwapNoZap,
123
+ gauge_abi: gaugeChildABI,
124
+ },
125
+ ib: {
126
+ name: "ironbank",
127
+ full_name: "ironbank",
128
+ symbol: "ib",
129
+ reference_asset: "USD",
130
+ swap_address: '0x4FC8D635c3cB1d0aa123859e2B2587d0FF2707b1',
131
+ token_address: '0xDf38ec60c0eC001142a33eAa039e49E9b84E64ED',
132
+ gauge_address: '0xDee85272EAe1aB4afBc6433F4d819BaBC9c7045A', // Old non-cross-chain gauge
133
+ sCurveRewards_address: '0x92bbf58c2a4514d44343b987d608627eb7d1d24f',
134
+ is_lending: true,
135
+ underlying_coins: ['DAI', 'USDC', 'fUSDT'],
136
+ wrapped_coins: ['iDAI', 'iUSDC', 'iFUSDT'],
137
+ underlying_coin_addresses: [
138
+ '0x8D11eC38a3EB5E956B052f67Da8Bdc9bef8Abf3E',
139
+ '0x04068DA6C83AFCFA0e13ba15A6696662335D5B75',
140
+ '0x049d68029688eAbF473097a2fC38ef61633A3C7A',
141
+ ],
142
+ wrapped_coin_addresses: [
143
+ '0x04c762a5dF2Fa02FE868F25359E0C259fB811CfE',
144
+ '0x328A7b4d538A2b3942653a9983fdA3C12c571141',
145
+ '0x70faC71debfD67394D1278D98A29dea79DC6E57A',
146
+ ],
147
+ underlying_decimals: [18, 6, 6],
148
+ wrapped_decimals: [8, 8, 8],
149
+ use_lending: [true, true, true],
150
+ swap_abi: ibSwapABI,
151
+ gauge_abi: gaugeRewardsOnlyABI,
152
+ sCurveRewards_abi: streamerABI,
153
+ },
154
+ geist: {
155
+ name: "geist",
156
+ full_name: "geist",
157
+ symbol: "geist",
158
+ reference_asset: "USD",
159
+ swap_address: '0x0fa949783947Bf6c1b171DB13AEACBB488845B3f',
160
+ token_address: '0xD02a30d33153877BC20e5721ee53DeDEE0422B2F',
161
+ // gauge_address: '0xd4F94D0aaa640BBb72b5EEc2D85F6D114D81a88E',
162
+ gauge_address: '0xF7b9c402c4D6c2eDbA04a7a515b53D11B1E9b2cc',
163
+ is_lending: true,
164
+ underlying_coins: ['DAI', 'USDC', 'fUSDT'],
165
+ wrapped_coins: ['gDAI', 'gUSDC', 'gfUSDT'],
166
+ underlying_coin_addresses: [
167
+ '0x8d11ec38a3eb5e956b052f67da8bdc9bef8abf3e',
168
+ '0x04068da6c83afcfa0e13ba15a6696662335d5b75',
169
+ '0x049d68029688eabf473097a2fc38ef61633a3c7a',
170
+ ],
171
+ wrapped_coin_addresses: [
172
+ '0x07e6332dd090d287d3489245038daf987955dcfb',
173
+ '0xe578c856933d8e1082740bf7661e379aa2a30b26',
174
+ '0x940f41f0ec9ba1a34cf001cc03347ac092f5f6b5',
175
+ ],
176
+ underlying_decimals: [18, 6, 6],
177
+ wrapped_decimals: [18, 6, 6],
178
+ use_lending: [true, true, true],
179
+ swap_abi: aaveSwapABI,
180
+ gauge_abi: gaugeChildABI,
181
+ // sCurveRewards_abi: paaveRewardsabi,
182
+ // sCurveRewards_address: '0xd4f94d0aaa640bbb72b5eec2d85f6d114d81a88e',
183
+ // reward_token: "0xd8321aa83fb0a4ecd6348d4577431310a6e0814d",
184
+ },
185
+ });
@@ -1,6 +1,7 @@
1
1
  import { POOLS_DATA_ETHEREUM } from "./ethereum.js";
2
2
  import { LLAMMAS_DATA_ETHEREUM } from "./ethereum.js";
3
3
  import { POOLS_DATA_POLYGON } from "./polygon.js";
4
+ import { POOLS_DATA_FANTOM } from "./fantom.js";
4
5
  import { POOLS_DATA_AVALANCHE } from "./avalanche.js";
5
6
  import { POOLS_DATA_ARBITRUM } from "./arbitrum.js";
6
7
  import { POOLS_DATA_OPTIMISM } from "./optimism.js";
@@ -17,4 +18,4 @@ import { POOLS_DATA_XLAYER } from "./xlayer.js";
17
18
  import { POOLS_DATA_MANTLE } from "./mantle.js";
18
19
  import { POOLS_DATA_SONIC } from "./sonic.js";
19
20
  import { POOLS_DATA_HYPERLIQUID } from "./hyperliquid.js";
20
- export { POOLS_DATA_ETHEREUM, LLAMMAS_DATA_ETHEREUM, POOLS_DATA_POLYGON, POOLS_DATA_AVALANCHE, POOLS_DATA_ARBITRUM, POOLS_DATA_OPTIMISM, POOLS_DATA_XDAI, POOLS_DATA_MOONBEAM, POOLS_DATA_AURORA, POOLS_DATA_KAVA, POOLS_DATA_CELO, POOLS_DATA_ZKSYNC, POOLS_DATA_BASE, POOLS_DATA_BSC, POOLS_DATA_FRAXTAL, POOLS_DATA_XLAYER, POOLS_DATA_MANTLE, POOLS_DATA_SONIC, POOLS_DATA_HYPERLIQUID, };
21
+ export { POOLS_DATA_ETHEREUM, LLAMMAS_DATA_ETHEREUM, POOLS_DATA_POLYGON, POOLS_DATA_FANTOM, POOLS_DATA_AVALANCHE, POOLS_DATA_ARBITRUM, POOLS_DATA_OPTIMISM, POOLS_DATA_XDAI, POOLS_DATA_MOONBEAM, POOLS_DATA_AURORA, POOLS_DATA_KAVA, POOLS_DATA_CELO, POOLS_DATA_ZKSYNC, POOLS_DATA_BASE, POOLS_DATA_BSC, POOLS_DATA_FRAXTAL, POOLS_DATA_XLAYER, POOLS_DATA_MANTLE, POOLS_DATA_SONIC, POOLS_DATA_HYPERLIQUID, };
@@ -1,6 +1,7 @@
1
1
  import { POOLS_DATA_ETHEREUM } from "./ethereum.js";
2
2
  import { LLAMMAS_DATA_ETHEREUM } from "./ethereum.js";
3
3
  import { POOLS_DATA_POLYGON } from "./polygon.js";
4
+ import { POOLS_DATA_FANTOM } from "./fantom.js";
4
5
  import { POOLS_DATA_AVALANCHE } from "./avalanche.js";
5
6
  import { POOLS_DATA_ARBITRUM } from "./arbitrum.js";
6
7
  import { POOLS_DATA_OPTIMISM } from "./optimism.js";
@@ -17,4 +18,4 @@ import { POOLS_DATA_XLAYER } from "./xlayer.js";
17
18
  import { POOLS_DATA_MANTLE } from "./mantle.js";
18
19
  import { POOLS_DATA_SONIC } from "./sonic.js";
19
20
  import { POOLS_DATA_HYPERLIQUID } from "./hyperliquid.js";
20
- export { POOLS_DATA_ETHEREUM, LLAMMAS_DATA_ETHEREUM, POOLS_DATA_POLYGON, POOLS_DATA_AVALANCHE, POOLS_DATA_ARBITRUM, POOLS_DATA_OPTIMISM, POOLS_DATA_XDAI, POOLS_DATA_MOONBEAM, POOLS_DATA_AURORA, POOLS_DATA_KAVA, POOLS_DATA_CELO, POOLS_DATA_ZKSYNC, POOLS_DATA_BASE, POOLS_DATA_BSC, POOLS_DATA_FRAXTAL, POOLS_DATA_XLAYER, POOLS_DATA_MANTLE, POOLS_DATA_SONIC, POOLS_DATA_HYPERLIQUID, };
21
+ export { POOLS_DATA_ETHEREUM, LLAMMAS_DATA_ETHEREUM, POOLS_DATA_POLYGON, POOLS_DATA_FANTOM, POOLS_DATA_AVALANCHE, POOLS_DATA_ARBITRUM, POOLS_DATA_OPTIMISM, POOLS_DATA_XDAI, POOLS_DATA_MOONBEAM, POOLS_DATA_AURORA, POOLS_DATA_KAVA, POOLS_DATA_CELO, POOLS_DATA_ZKSYNC, POOLS_DATA_BASE, POOLS_DATA_BSC, POOLS_DATA_FRAXTAL, POOLS_DATA_XLAYER, POOLS_DATA_MANTLE, POOLS_DATA_SONIC, POOLS_DATA_HYPERLIQUID, };
@@ -1,5 +1,5 @@
1
1
  export const volumeNetworks = {
2
- getVolumes: [1, 10, 56, 100, 137, 252, 999, 8453, 42161, 146],
2
+ getVolumes: [1, 10, 56, 100, 137, 250, 252, 999, 8453, 42161, 146],
3
3
  getSubgraphData: [43114],
4
4
  getFactoryAPYs: [196, 324, 1284, 2222, 5000, 42220, 1313161554],
5
5
  };
package/lib/curve.js CHANGED
@@ -54,7 +54,7 @@ import { L2Networks } from "./constants/L2Networks.js";
54
54
  import { getTwocryptoFactoryPoolData } from "./factory/factory-twocrypto.js";
55
55
  import { applyFeeDataOverride, computeEip1559Fees, computeLegacyOrFallback, fetchFeeHistory, getNetworkConstants, } from "./utils.js";
56
56
  import { _setPoolsFromApi } from "./cached.js";
57
- export const OLD_CHAINS = [1, 10, 56, 100, 137, 1284, 2222, 8453, 42161, 42220, 43114, 1313161554]; // these chains have non-ng pools
57
+ export const OLD_CHAINS = [1, 10, 56, 100, 137, 250, 1284, 2222, 8453, 42161, 42220, 43114, 1313161554]; // these chains have non-ng pools
58
58
  export const memoizedContract = () => {
59
59
  const cache = {};
60
60
  return (address, abi, provider) => {
@@ -378,6 +378,11 @@ export const checkVyperVulnerability = (chainId, poolId, implementation) => {
378
378
  "0xA9134FaE98F92217f457918505375Ae91fdc5e3c",
379
379
  "0xf31bcdf0B9a5eCD7AB463eB905551fBc32e51856",
380
380
  ].map((a) => a.toLowerCase()),
381
+ 250: [
382
+ "0xE6358f6a45B502477e83CC1CDa759f540E4459ee",
383
+ "0x5d58Eb45e97B43e471AF05cD2b11CeB4106E1b1a",
384
+ "0xb11Dc44A9f981fAF1669dca6DD40c3cc2554A2ce",
385
+ ].map((a) => a.toLowerCase()),
381
386
  42161: [
382
387
  "0x7DA64233Fefb352f8F501B357c018158ED8aA455",
383
388
  "0xAAe75FAebCae43b9d541Fd875622BE48D9B4f5D0",
@@ -247,6 +247,68 @@ export function routeGraphWorker() {
247
247
  tvl: Infinity,
248
248
  }];
249
249
  }
250
+ // svZCHF <-> ZCHF (Ethereum only)
251
+ if (chainId === 1) {
252
+ routerGraph[constants.COINS.zchf] = {};
253
+ routerGraph[constants.COINS.zchf][constants.COINS.svzchf] = [{
254
+ poolId: "svZCHF wrapper",
255
+ swapAddress: constants.COINS.svzchf,
256
+ inputCoinAddress: constants.COINS.zchf,
257
+ outputCoinAddress: constants.COINS.svzchf,
258
+ swapParams: [0, 1, 9, 0, 0],
259
+ poolAddress: constants.ZERO_ADDRESS,
260
+ basePool: constants.ZERO_ADDRESS,
261
+ baseToken: constants.ZERO_ADDRESS,
262
+ secondBasePool: constants.ZERO_ADDRESS,
263
+ secondBaseToken: constants.ZERO_ADDRESS,
264
+ tvl: Infinity,
265
+ }];
266
+ routerGraph[constants.COINS.svzchf] = {};
267
+ routerGraph[constants.COINS.svzchf][constants.COINS.zchf] = [{
268
+ poolId: "svZCHF wrapper",
269
+ swapAddress: constants.COINS.svzchf,
270
+ inputCoinAddress: constants.COINS.svzchf,
271
+ outputCoinAddress: constants.COINS.zchf,
272
+ swapParams: [1, 0, 9, 0, 0],
273
+ poolAddress: constants.ZERO_ADDRESS,
274
+ basePool: constants.ZERO_ADDRESS,
275
+ baseToken: constants.ZERO_ADDRESS,
276
+ secondBasePool: constants.ZERO_ADDRESS,
277
+ secondBaseToken: constants.ZERO_ADDRESS,
278
+ tvl: Infinity,
279
+ }];
280
+ }
281
+ // syrupUSDC <-> USDC (Ethereum only)
282
+ if (chainId === 1) {
283
+ routerGraph[constants.COINS.usdc] = {};
284
+ routerGraph[constants.COINS.usdc][constants.COINS.syrupusdc] = [{
285
+ poolId: "syrupUSDC wrapper",
286
+ swapAddress: constants.COINS.syrupusdc,
287
+ inputCoinAddress: constants.COINS.usdc,
288
+ outputCoinAddress: constants.COINS.syrupusdc,
289
+ swapParams: [0, 1, 9, 0, 0],
290
+ poolAddress: constants.ZERO_ADDRESS,
291
+ basePool: constants.ZERO_ADDRESS,
292
+ baseToken: constants.ZERO_ADDRESS,
293
+ secondBasePool: constants.ZERO_ADDRESS,
294
+ secondBaseToken: constants.ZERO_ADDRESS,
295
+ tvl: Infinity,
296
+ }];
297
+ routerGraph[constants.COINS.syrupusdc] = {};
298
+ routerGraph[constants.COINS.syrupusdc][constants.COINS.usdc] = [{
299
+ poolId: "syrupUSDC wrapper",
300
+ swapAddress: constants.COINS.syrupusdc,
301
+ inputCoinAddress: constants.COINS.syrupusdc,
302
+ outputCoinAddress: constants.COINS.usdc,
303
+ swapParams: [1, 0, 9, 0, 0],
304
+ poolAddress: constants.ZERO_ADDRESS,
305
+ basePool: constants.ZERO_ADDRESS,
306
+ baseToken: constants.ZERO_ADDRESS,
307
+ secondBasePool: constants.ZERO_ADDRESS,
308
+ secondBaseToken: constants.ZERO_ADDRESS,
309
+ tvl: Infinity,
310
+ }];
311
+ }
250
312
  // USDe -> sUSDe (Ethereum only)
251
313
  if (chainId === 1) {
252
314
  routerGraph[constants.COINS.usde] = {};
@@ -302,6 +364,7 @@ export function routeGraphWorker() {
302
364
  if (blacklistedPools.has(poolAddress))
303
365
  continue;
304
366
  const excludedUnderlyingSwaps = (poolId === 'ib' && chainId === 1) ||
367
+ (poolId === 'geist' && chainId === 250) ||
305
368
  (poolId === 'saave' && chainId === 1);
306
369
  // Wrapped coin <-> LP "swaps" (actually add_liquidity/remove_liquidity_one_coin)
307
370
  if (!poolData.is_fake && !poolData.is_llamma && wrappedCoinAddresses.length < 6) {
package/lib/utils.js CHANGED
@@ -356,6 +356,7 @@ export function _getUsdRate(assetId) {
356
356
  137: 'polygon-pos',
357
357
  146: 'sonic',
358
358
  196: 'x-layer',
359
+ 250: 'fantom',
359
360
  252: 'fraxtal',
360
361
  324: 'zksync',
361
362
  999: 'hyperliquid',
@@ -376,6 +377,7 @@ export function _getUsdRate(assetId) {
376
377
  137: 'matic-network',
377
378
  146: 'sonic-3',
378
379
  196: 'okb',
380
+ 250: 'fantom',
379
381
  252: 'frax-share',
380
382
  324: 'ethereum',
381
383
  1284: 'moonbeam',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@curvefi/api",
3
- "version": "2.69.13",
3
+ "version": "2.69.15",
4
4
  "description": "JavaScript library for curve.finance",
5
5
  "main": "lib/index.js",
6
6
  "author": "Macket",