@curvefi/api 2.69.14 → 2.69.16

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.
@@ -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,6 +1,7 @@
1
1
  /**
2
2
  * TwoCrypto pool implementation configurations https://docs.curve.finance/deployments/implementations/#cryptoswap-ng
3
3
  */
4
+ import { IDict } from "../interfaces.js";
4
5
  export type TwoCryptoImplementationIndex = number | string;
5
6
  /**
6
7
  * TwoCrypto implementation indices
@@ -17,9 +18,9 @@ export declare enum TwoCryptoImplementation {
17
18
  */
18
19
  export interface TwoCryptoImplementationInfo {
19
20
  index: TwoCryptoImplementationIndex;
20
- address: string;
21
+ addresses: IDict<string>;
21
22
  description: string;
22
23
  availableInUI: boolean;
23
24
  }
24
25
  export declare const TWOCRYPTO_IMPLEMENTATIONS: TwoCryptoImplementationInfo[];
25
- export declare function getTwoCryptoImplementations(uiOnly?: boolean): TwoCryptoImplementationInfo[];
26
+ export declare function getTwoCryptoImplementations(chainId?: number, uiOnly?: boolean): TwoCryptoImplementationInfo[];
@@ -15,35 +15,51 @@ export var TwoCryptoImplementation;
15
15
  export const TWOCRYPTO_IMPLEMENTATIONS = [
16
16
  {
17
17
  index: TwoCryptoImplementation.DEFAULT,
18
- address: "0x934791f7F391727db92BFF94cd789c4623d14c52",
18
+ addresses: {
19
+ 1: "0x934791f7F391727db92BFF94cd789c4623d14c52",
20
+ },
19
21
  description: "",
20
22
  availableInUI: true,
21
23
  },
22
24
  {
23
25
  index: TwoCryptoImplementation.YB_POOLS_0_PERCENT,
24
- address: "0x82c251317ede0514302EEE1aD48f838a7A6EcE2F",
26
+ addresses: {
27
+ 1: "0x82c251317ede0514302EEE1aD48f838a7A6EcE2F",
28
+ },
25
29
  description: "TwoCrypto (0% DAO fee) — for yb pools",
26
30
  availableInUI: false,
27
31
  },
28
32
  {
29
33
  index: TwoCryptoImplementation.FX_25_PERCENT,
30
- address: "0x3B0df55A2c64Ac7A3ada784eEA0898F0FD3cF17e",
34
+ addresses: {
35
+ 1: "0x3B0df55A2c64Ac7A3ada784eEA0898F0FD3cF17e",
36
+ },
31
37
  description: "TwoCrypto (25% DAO fee) — for FX where the asset issuer will be the main source of LP and donations",
32
38
  availableInUI: false,
33
39
  },
34
40
  {
35
41
  index: TwoCryptoImplementation.FX_REGULAR_50_PERCENT,
36
- address: "0xD1FAeCA80d6FDd1DF4CBcCe4b2551b6Ee63Ae3D6",
42
+ addresses: {
43
+ 1: "0xD1FAeCA80d6FDd1DF4CBcCe4b2551b6Ee63Ae3D6",
44
+ 42161: "0x8c8CD70277b02E24aa9afE3dbAD1Ee10443eff2D",
45
+ },
37
46
  description: "TwoCrypto (50% DAO fee) — for FX / regular pairs (where donations may stream from within Curve protocol)",
38
47
  availableInUI: true,
39
48
  },
40
49
  {
41
50
  index: TwoCryptoImplementation.SETTABLE_ADMIN_FEE,
42
- address: "0xeC1045809e383811Cc74B3D25219e1607A5f32dC",
51
+ addresses: {
52
+ 1: "0xeC1045809e383811Cc74B3D25219e1607A5f32dC",
53
+ },
43
54
  description: "Alternative implementation with settable admin fee for two/tricrypto (default admin fee remains at 50%)",
44
55
  availableInUI: false,
45
56
  },
46
57
  ];
47
- export function getTwoCryptoImplementations(uiOnly = false) {
48
- return uiOnly ? TWOCRYPTO_IMPLEMENTATIONS.filter((impl) => impl.availableInUI) : TWOCRYPTO_IMPLEMENTATIONS;
58
+ export function getTwoCryptoImplementations(chainId, uiOnly = false) {
59
+ let implementations = TWOCRYPTO_IMPLEMENTATIONS;
60
+ if (uiOnly)
61
+ implementations = implementations.filter((impl) => impl.availableInUI);
62
+ if (chainId)
63
+ implementations = implementations.filter((impl) => chainId in impl.addresses);
64
+ return implementations;
49
65
  }
@@ -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) => {
package/lib/index.d.ts CHANGED
@@ -2,7 +2,6 @@ import { ethers } from "ethers";
2
2
  import { PoolTemplate } from "./pools/index.js";
3
3
  import { getSupportedNetworks } from "./bridge.js";
4
4
  import { deployCryptoPoolEstimateGas, deployTwocryptoPoolEstimateGas } from './factory/deploy.js';
5
- import { getTwoCryptoImplementations } from './constants/twoCryptoImplementations.js';
6
5
  export declare const createCurve: () => {
7
6
  init: (this: ReturnType<typeof createCurve>, providerType: "JsonRpc" | "Web3" | "Infura" | "Alchemy" | "NoRPC", providerSettings: "NoRPC" | {
8
7
  url?: string;
@@ -157,7 +156,7 @@ export declare const createCurve: () => {
157
156
  getDeployedGaugeMirrorAddressByTx: (tx: ethers.ContractTransactionResponse) => Promise<string>;
158
157
  fetchRecentlyDeployedPool: (poolAddress: string) => Promise<string>;
159
158
  gaugeImplementation: () => string;
160
- getImplementations: typeof getTwoCryptoImplementations;
159
+ getImplementations: (uiOnly?: boolean) => import("./constants/twoCryptoImplementations.js").TwoCryptoImplementationInfo[];
161
160
  estimateGas: {
162
161
  deployPool: typeof deployTwocryptoPoolEstimateGas;
163
162
  deployGauge: (poolAddress: string) => Promise<number>;
@@ -491,7 +490,7 @@ declare const _default: {
491
490
  getDeployedGaugeMirrorAddressByTx: (tx: ethers.ContractTransactionResponse) => Promise<string>;
492
491
  fetchRecentlyDeployedPool: (poolAddress: string) => Promise<string>;
493
492
  gaugeImplementation: () => string;
494
- getImplementations: typeof getTwoCryptoImplementations;
493
+ getImplementations: (uiOnly?: boolean) => import("./constants/twoCryptoImplementations.js").TwoCryptoImplementationInfo[];
495
494
  estimateGas: {
496
495
  deployPool: typeof deployTwocryptoPoolEstimateGas;
497
496
  deployGauge: (poolAddress: string) => Promise<number>;
package/lib/index.js CHANGED
@@ -148,7 +148,7 @@ export const createCurve = () => {
148
148
  getDeployedGaugeMirrorAddressByTx: getDeployedGaugeMirrorAddressByTx.bind(_curve),
149
149
  fetchRecentlyDeployedPool: _curve.fetchRecentlyDeployedTwocryptoFactoryPool.bind(_curve),
150
150
  gaugeImplementation: () => _curve.getGaugeImplementation("factory-twocrypto"),
151
- getImplementations: getTwoCryptoImplementations,
151
+ getImplementations: (uiOnly) => getTwoCryptoImplementations(_curve.chainId, uiOnly),
152
152
  estimateGas: {
153
153
  deployPool: deployTwocryptoPoolEstimateGas, //
154
154
  deployGauge: (poolAddress) => __awaiter(void 0, void 0, void 0, function* () { return deployGaugeEstimateGas.call(_curve, poolAddress, _curve.constants.ALIASES.twocrypto_factory); }),
@@ -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",
@@ -364,6 +364,7 @@ export function routeGraphWorker() {
364
364
  if (blacklistedPools.has(poolAddress))
365
365
  continue;
366
366
  const excludedUnderlyingSwaps = (poolId === 'ib' && chainId === 1) ||
367
+ (poolId === 'geist' && chainId === 250) ||
367
368
  (poolId === 'saave' && chainId === 1);
368
369
  // Wrapped coin <-> LP "swaps" (actually add_liquidity/remove_liquidity_one_coin)
369
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.14",
3
+ "version": "2.69.16",
4
4
  "description": "JavaScript library for curve.finance",
5
5
  "main": "lib/index.js",
6
6
  "author": "Macket",