diff --git a/funding.json b/funding.json new file mode 100644 index 0000000000..7c588d1ca6 --- /dev/null +++ b/funding.json @@ -0,0 +1,5 @@ +{ + "opRetro": { + "projectId": "0x1c33980ce1d1290b5300719114dbe2cade0b820cb2b45321b715fd53d7abc8d2" + } +} diff --git a/package-lock.json b/package-lock.json index e2fb141f99..9e81a94a0c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "devDependencies": { "@aave/protocol-js": "^4.3.0", "@balancer-labs/assets": "github:balancer-labs/assets#master", - "@balancer-labs/sdk": "^1.1.6-beta.19", + "@balancer-labs/sdk": "^1.1.6-beta.20", "@balancer-labs/typechain": "^1.0.0", "@balancer-labs/v2-deployments": "^3.2.0", "@cowprotocol/contracts": "^1.3.1", @@ -1602,9 +1602,9 @@ } }, "node_modules/@balancer-labs/sdk": { - "version": "1.1.6-beta.19", - "resolved": "https://registry.npmjs.org/@balancer-labs/sdk/-/sdk-1.1.6-beta.19.tgz", - "integrity": "sha512-JvAE1aKUgdeQ6wJOvvgirsWtQLgOSCxz13735PHBeLpjSytaDC/u1zJ8FTE33aiboBvIVZhXXicZHcOtJ3Xf5g==", + "version": "1.1.6-beta.22", + "resolved": "https://registry.npmjs.org/@balancer-labs/sdk/-/sdk-1.1.6-beta.22.tgz", + "integrity": "sha512-UI5AQDovsft34cY+mNG0XgQGDeCccJY5q+Xc+xWoUf6GJRXeKfStbG0NtZd2XkXVYpLAjgHoehyTdz1+C/cCWw==", "dev": true, "dependencies": { "@balancer-labs/sor": "^4.1.1-beta.17", @@ -29763,9 +29763,9 @@ } }, "@balancer-labs/sdk": { - "version": "1.1.6-beta.19", - "resolved": "https://registry.npmjs.org/@balancer-labs/sdk/-/sdk-1.1.6-beta.19.tgz", - "integrity": "sha512-JvAE1aKUgdeQ6wJOvvgirsWtQLgOSCxz13735PHBeLpjSytaDC/u1zJ8FTE33aiboBvIVZhXXicZHcOtJ3Xf5g==", + "version": "1.1.6-beta.22", + "resolved": "https://registry.npmjs.org/@balancer-labs/sdk/-/sdk-1.1.6-beta.22.tgz", + "integrity": "sha512-UI5AQDovsft34cY+mNG0XgQGDeCccJY5q+Xc+xWoUf6GJRXeKfStbG0NtZd2XkXVYpLAjgHoehyTdz1+C/cCWw==", "dev": true, "requires": { "@balancer-labs/sor": "^4.1.1-beta.17", diff --git a/package.json b/package.json index 1ab5adbdae..9c8e68b9a9 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "devDependencies": { "@aave/protocol-js": "^4.3.0", "@balancer-labs/assets": "github:balancer-labs/assets#master", - "@balancer-labs/sdk": "^1.1.6-beta.19", + "@balancer-labs/sdk": "^1.1.6-beta.20", "@balancer-labs/typechain": "^1.0.0", "@balancer-labs/v2-deployments": "^3.2.0", "@cowprotocol/contracts": "^1.3.1", diff --git a/src/assets/data/contracts/fraxtal.json b/src/assets/data/contracts/fraxtal.json new file mode 100644 index 0000000000..2876f7bf65 --- /dev/null +++ b/src/assets/data/contracts/fraxtal.json @@ -0,0 +1,29 @@ +{ + "ComposableStablePoolFactory": "0x4bdCc2fb18AEb9e2d281b0278D946445070EAda7", + "ManagedPoolFactory": "0x7A2535f5fB47b8e44c02Ef5D9990588313fe8F05", + "WeightedPoolFactory": "0x9dA18982a33FD0c7051B19F0d7C76F2d5E7e017c", + "BalancerQueries": "0x4132f7AcC9dB7A6cF7BE2Dd3A9DC8b30C7E6E6c8", + "BalancerRelayer": "0xb541765F540447646A9545E0A4800A0Bacf9E13D", + "BatchRelayerLibrary": "0x662112B8CB18889e81459b92CA0f894a2ef2c1B8", + "ProtocolFeePercentagesProvider": "0xf23b4DB826DbA14c0e857029dfF076b1c0264843", + "Vault": "0xBA12222222228d8Ba445958a75a0704d566BF2C8", + "Authorizer": "0xE39B5e3B6D74016b2F6A9673D7d7493B6DF549d5", + "AuthorizerAdaptor": "0x36caC20dd805d128c1a6Dd16eeA845C574b5A17C", + "AuthorizerAdaptorEntrypoint": "0xb9F8AB3ED3F3aCBa64Bc6cd2DcA74B7F38fD7B88", + "AuthorizerWithAdaptorValidation": "0x6817149cb753BF529565B4D023d7507eD2ff4Bc0", + "ChildChainGauge": "0x4fb47126Fa83A8734991E41B942Ac29A3266C968", + "ChildChainGaugeFactory": "0xc3ccacE87f6d3A81724075ADcb5ddd85a8A1bB68", + "L2LayerZeroBridgeForwarder": "0xa523f47A933D5020b23629dDf689695AA94612Dc", + "ProtocolFeesCollector": "0xce88686553686DA562CE7Cea497CE749DA109f9F", + "ProtocolFeesWithdrawer": "0x85a80afee867aDf27B50BdB7b76DA70f1E853062", + "VotingEscrowDelegationProxy": "0xE3881627B8DeeBCCF9c23B291430a549Fc0bE5F7", + "BalancerHelpers": "0x8E9aa87E45e92bad84D5F8DD1bff34Fb92637dE9", + "BatchRelayerQueryLibrary": "0x4DdFc173C8F67808AE8F7913DccFfa6bdBFE5b0e", + "ChainlinkRateProviderFactory": "0x3f170631ed9821Ca51A59D996aB095162438DC10", + "GaugeWorkingBalanceHelper": "0x83E443EF4f9963C77bd860f94500075556668cb8", + "L2BalancerPseudoMinter": "0x9805dcfD25e6De36bad8fe9D3Fe2c9b44B764102", + "MockLiquidityBootstrappingPool": "0xaeace3B34BcA1BFe585e4B0Bb303e60e0771F139", + "NoProtocolFeeLiquidityBootstrappingPoolFactory": "0x956CCab09898C0AF2aCa5e6C229c3aD4E93d9288", + "NullVotingEscrow": "0x5cF4928a3205728bd12830E1840F7DB85c62a4B9", + "ProtocolIdRegistry": "0x9dd5Db2d38b50bEF682cE532bCca5DfD203915E1" +} diff --git a/src/assets/data/contracts/mode.json b/src/assets/data/contracts/mode.json new file mode 100644 index 0000000000..084aa04f71 --- /dev/null +++ b/src/assets/data/contracts/mode.json @@ -0,0 +1,27 @@ +{ + "ComposableStablePoolFactory": "0x5DbAd78818D4c8958EfF2d5b95b28385A22113Cd", + "ManagedPoolFactory": "0x043A2daD730d585C44FB79D2614F295D2d625412", + "WeightedPoolFactory": "0xc3ccacE87f6d3A81724075ADcb5ddd85a8A1bB68", + "BalancerQueries": "0x36caC20dd805d128c1a6Dd16eeA845C574b5A17C", + "BalancerRelayer": "0xb541765F540447646A9545E0A4800A0Bacf9E13D", + "BatchRelayerLibrary": "0x662112B8CB18889e81459b92CA0f894a2ef2c1B8", + "ProtocolFeePercentagesProvider": "0x85a80afee867aDf27B50BdB7b76DA70f1E853062", + "Vault": "0xBA12222222228d8Ba445958a75a0704d566BF2C8", + "Authorizer": "0xE39B5e3B6D74016b2F6A9673D7d7493B6DF549d5", + "AuthorizerAdaptor": "0xf23b4DB826DbA14c0e857029dfF076b1c0264843", + "AuthorizerAdaptorEntrypoint": "0x76578ecf9a141296Ec657847fb45B0585bCDa3a6", + "AuthorizerWithAdaptorValidation": "0x013D4382F291be5688AFBcc741Ee8A24C66B2C92", + "ChildChainGauge": "0xE3881627B8DeeBCCF9c23B291430a549Fc0bE5F7", + "ChildChainGaugeFactory": "0x4fb47126Fa83A8734991E41B942Ac29A3266C968", + "ProtocolFeesCollector": "0xce88686553686DA562CE7Cea497CE749DA109f9F", + "ProtocolFeesWithdrawer": "0x9Ac3E70dB606659Bf32D4BdFbb687AD193FD1F5B", + "VotingEscrowDelegationProxy": "0x9805dcfD25e6De36bad8fe9D3Fe2c9b44B764102", + "BalancerHelpers": "0x8E9aa87E45e92bad84D5F8DD1bff34Fb92637dE9", + "BatchRelayerQueryLibrary": "0x4DdFc173C8F67808AE8F7913DccFfa6bdBFE5b0e", + "ChainlinkRateProviderFactory": "0x96484f2aBF5e58b15176dbF1A799627B53F13B6d", + "L2BalancerPseudoMinter": "0x5cF4928a3205728bd12830E1840F7DB85c62a4B9", + "MockLiquidityBootstrappingPool": "0x197868C915E50cD7eB34EB2F56009E0BF9aa09EB", + "NoProtocolFeeLiquidityBootstrappingPoolFactory": "0xE42FFA682A26EF8F25891db4882932711D42e467", + "NullVotingEscrow": "0x9dd5Db2d38b50bEF682cE532bCca5DfD203915E1", + "ProtocolIdRegistry": "0xb9F8AB3ED3F3aCBa64Bc6cd2DcA74B7F38fD7B88" +} diff --git a/src/assets/images/icons/networks/fraxtal.svg b/src/assets/images/icons/networks/fraxtal.svg new file mode 100644 index 0000000000..215a9e24b9 --- /dev/null +++ b/src/assets/images/icons/networks/fraxtal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/icons/networks/mode.svg b/src/assets/images/icons/networks/mode.svg new file mode 100644 index 0000000000..42af10f83a --- /dev/null +++ b/src/assets/images/icons/networks/mode.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/contextual/pages/vebal/LMVoting/composables/useLMVotingFilters.spec.ts b/src/components/contextual/pages/vebal/LMVoting/composables/useLMVotingFilters.spec.ts index d8e5fd8ae1..6ca48e71be 100644 --- a/src/components/contextual/pages/vebal/LMVoting/composables/useLMVotingFilters.spec.ts +++ b/src/components/contextual/pages/vebal/LMVoting/composables/useLMVotingFilters.spec.ts @@ -101,5 +101,7 @@ it('calculates networkFilters', async () => { expiredGauges ); - expect(networkFilters).toEqual([1, 10, 100, 137, 1101, 8453, 42161, 43114]); + expect(networkFilters).toEqual([ + 1, 10, 100, 137, 252, 1101, 8453, 42161, 43114, + ]); }); diff --git a/src/constants/pool-lists/csp-issue.ts b/src/constants/pool-lists/csp-issue.ts index fa5682b49f..706ab262f5 100644 --- a/src/constants/pool-lists/csp-issue.ts +++ b/src/constants/pool-lists/csp-issue.ts @@ -26,6 +26,8 @@ export const NO_RECOVERY_EXIT_POOL_IDS: Record = { [Network.FANTOM]: [], [Network.GOERLI]: [], [Network.OPTIMISM]: [], + [Network.FRAXTAL]: [], + [Network.MODE]: [], }; export const CSP_ISSUE_POOL_IDS: Record = { @@ -417,6 +419,8 @@ export const CSP_ISSUE_POOL_IDS: Record = { '0x593acbfb1eaf3b6ec86fa60325d816996fdcbc0d000000000000000000000038', '0xd1af4974fcc995cf36ba40b189caa92964a9126d0000000000000000000000f1', ], + [Network.FRAXTAL]: [], + [Network.MODE]: [], }; export const HIGH_RISK_POOL_IDS: string[] = [ diff --git a/src/lib/config/fraxtal/contracts.ts b/src/lib/config/fraxtal/contracts.ts new file mode 100644 index 0000000000..6de709ca16 --- /dev/null +++ b/src/lib/config/fraxtal/contracts.ts @@ -0,0 +1,28 @@ +import { Contracts } from '../types'; +import * as fraxtal from '@/assets/data/contracts/fraxtal.json'; + +const contracts: Contracts = { + merkleRedeem: '', + merkleOrchard: '', + multicall: '0xcA11bde05977b3631167028862bE2a173976CA11', + authorizer: fraxtal.Authorizer, + vault: fraxtal.Vault, + weightedPoolFactory: fraxtal.WeightedPoolFactory, + stablePoolFactory: fraxtal.ComposableStablePoolFactory, + lidoRelayer: '', + balancerHelpers: fraxtal.BalancerHelpers, + batchRelayer: fraxtal.BalancerRelayer, + gaugeFactory: fraxtal.ChildChainGaugeFactory, + balancerMinter: fraxtal.L2BalancerPseudoMinter, + gaugeController: '', + tokenAdmin: '', + veBAL: '', + veDelegationProxy: fraxtal.VotingEscrowDelegationProxy, + veBALHelpers: '', + feeDistributor: '', + feeDistributorDeprecated: '', + faucet: '', + gaugeWorkingBalanceHelper: fraxtal.GaugeWorkingBalanceHelper, +}; + +export default contracts; diff --git a/src/lib/config/fraxtal/index.ts b/src/lib/config/fraxtal/index.ts new file mode 100644 index 0000000000..713895d694 --- /dev/null +++ b/src/lib/config/fraxtal/index.ts @@ -0,0 +1,76 @@ +import { Config } from '../types'; +import contracts from './contracts'; +import pools from './pools'; +import tokenlists from './tokenlists'; +import tokens from './tokens'; +import rateProviders from './rateProviders'; + +const config: Config = { + key: '252', + chainId: 252, + layerZeroChainId: 255, + chainName: 'Fraxtal', + name: 'Fraxtal', + shortName: 'Fraxtal', + monorepoName: 'fraxtal', + slug: 'fraxtal', + network: 'fraxtal', + trustWalletNetwork: 'fraxtal', + unknown: false, + visibleInUI: true, + testNetwork: false, + rpc: 'https://rpc.frax.com/', + ws: '', + blockTime: 13, + explorer: 'https://fraxscan.com/', + explorerName: 'The Fraxtal Explorer', + subgraph: + 'https://api.goldsky.com/api/public/project_clwhu1vopoigi01wmbn514m1z/subgraphs/balancer-fraxtal-v2/latest/gn', + balancerApi: 'https://api.balancer.fi', + poolsUrlV2: '', + subgraphs: { + main: [ + 'https://api.goldsky.com/api/public/project_clwhu1vopoigi01wmbn514m1z/subgraphs/balancer-fraxtal-v2/latest/gn', + ], + aave: '', + gauge: + 'https://api.goldsky.com/api/public/project_clwhu1vopoigi01wmbn514m1z/subgraphs/balancer-gauges-fraxtal/latest/gn', + blocks: '', + }, + bridgeUrl: '', + supportsEIP1559: false, + supportsElementPools: false, + supportsVeBalSync: true, + nativeAsset: { + name: 'FraxEther', + address: '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE', + symbol: 'frxETH', + decimals: 18, + deeplinkId: 'ether', + logoURI: 'tokens/eth.png', + minTransactionBuffer: '0.005', + }, + thirdParty: { + coingecko: { + nativeAssetId: 'frax-ether', + platformId: 'fraxtal', + }, + }, + addresses: { + ...contracts, + }, + keys: { + infura: '', + alchemy: '', + }, + gauges: { + type: 5, + weight: 0, + }, + pools, + tokenlists, + tokens, + rateProviders, +}; + +export default config; diff --git a/src/lib/config/fraxtal/pools.ts b/src/lib/config/fraxtal/pools.ts new file mode 100644 index 0000000000..590371669f --- /dev/null +++ b/src/lib/config/fraxtal/pools.ts @@ -0,0 +1,62 @@ +import { CSP_ISSUE_POOL_IDS } from '@/constants/pool-lists/csp-issue'; +import { PoolWarning, Pools } from '@/types/pools'; +import { Network } from '../types'; + +const pools: Pools = { + IdsMap: {}, + Pagination: { + PerPage: 10, + PerPool: 10, + PerPoolInitial: 5, + }, + BoostsEnabled: true, + DelegateOwner: '0xba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1b', + ZeroAddress: '0x0000000000000000000000000000000000000000', + DynamicFees: { + Gauntlet: [], + }, + BlockList: [], + IncludedPoolTypes: [ + 'Weighted', + 'Stable', + 'MetaStable', + 'GyroE', + 'ComposableStable', + ], + Stable: { + AllowList: [], + }, + Investment: { + AllowList: [], + }, + Weighted: { + AllowList: [], + }, + Factories: { + '0x4bdcc2fb18aeb9e2d281b0278d946445070eada7': 'composableStablePool', + '0x9da18982a33fd0c7051b19f0d7c76f2d5e7e017c': 'weightedPool', + }, + Stakable: { + VotingGaugePools: [ + '0xa0b92b33beafce388ce0092afdcd0ca77323eb12000000000000000000000006', + '0xa0af0b88796c1aa67e93db89fead2ab7aa3d6747000000000000000000000007', + '0x33251abecb0364df98a27a8d5d7b5ccddc774c42000000000000000000000008', + '0x1570315476480fa80cec1fff07a20c1df1adfd53000200000000000000000009', + ], + AllowList: [], + }, + Deep: [], + BoostedApr: [], + Metadata: {}, + DisabledJoins: [], + BrandedRedirect: { + Gyro2: 'gyro', + Gyro3: 'gyro', + GyroE: 'gyro', + }, + Issues: { + [PoolWarning.CspPoolVulnWarning]: CSP_ISSUE_POOL_IDS[Network.MODE], + }, +}; + +export default pools; diff --git a/src/lib/config/fraxtal/rateProviders.ts b/src/lib/config/fraxtal/rateProviders.ts new file mode 100644 index 0000000000..52b936a377 --- /dev/null +++ b/src/lib/config/fraxtal/rateProviders.ts @@ -0,0 +1,10 @@ +import { convertKeysToLowerCase } from '@/lib/utils/objects'; +import { RateProviders } from '../types'; + +const rateProviders: RateProviders = { + '*': { + '0x0000000000000000000000000000000000000000': true, + }, +}; + +export default convertKeysToLowerCase(rateProviders); diff --git a/src/lib/config/fraxtal/tokenlists.ts b/src/lib/config/fraxtal/tokenlists.ts new file mode 100644 index 0000000000..ec6d5a4d29 --- /dev/null +++ b/src/lib/config/fraxtal/tokenlists.ts @@ -0,0 +1,11 @@ +import { TokenListURLMap } from '@/types/TokenList'; + +const tokenlists: TokenListURLMap = { + Balancer: { + Allowlisted: + 'https://raw.githubusercontent.com/balancer/tokenlists/main/generated/balancer.tokenlist.json', + }, + External: [], +}; + +export default tokenlists; diff --git a/src/lib/config/fraxtal/tokens.ts b/src/lib/config/fraxtal/tokens.ts new file mode 100644 index 0000000000..66e9ea90e1 --- /dev/null +++ b/src/lib/config/fraxtal/tokens.ts @@ -0,0 +1,19 @@ +import { TokenConstants } from '../types'; + +const tokens: TokenConstants = { + Popular: { + Symbols: ['USDT', 'DAI', 'USDC', 'BAL', 'wfrxETH'], + }, + InitialSwapTokens: { + input: '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE', + output: '0xfc00000000000000000000000000000000000006', + }, + Addresses: { + nativeAsset: '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE', + wNativeAsset: '0xfc00000000000000000000000000000000000006', + WETH: '', + BAL: '', + }, +}; + +export default tokens; diff --git a/src/lib/config/gnosis-chain/pools.ts b/src/lib/config/gnosis-chain/pools.ts index f520a0d60f..ff77face61 100644 --- a/src/lib/config/gnosis-chain/pools.ts +++ b/src/lib/config/gnosis-chain/pools.ts @@ -41,6 +41,7 @@ const pools: Pools = { '0x72a040c63496c9306ab3409a11dff73176e203fd00000000000000000000006a', // sBAL3/crvUSD '0xc9f00c3a713008ddf69b768d90d4978549bfdf9400000000000000000000006d', // crvUSD/sDAI '0x7644fa5d0ea14fcf3e813fdf93ca9544f8567655000000000000000000000066', // stabal3 + '0x95a2e3f73cdcef576a7d9b9e0d11efb5df90f166000200000000000000000088', // 80REG-20GNO '0xC66936A47E6D40DD050A8419B4352825D9082241000000000000000000000090', ], }, diff --git a/src/lib/config/index.ts b/src/lib/config/index.ts index 2e567520c6..76c5872dab 100644 --- a/src/lib/config/index.ts +++ b/src/lib/config/index.ts @@ -10,6 +10,8 @@ import optimism from './optimism'; import polygon from './polygon'; import sepolia from './sepolia'; import zkevm from './zkevm'; +import fraxtal from './fraxtal'; +import mode from './mode'; const config: Record = { [Network.MAINNET]: mainnet, @@ -22,6 +24,8 @@ const config: Record = { [Network.AVALANCHE]: avalanche, [Network.SEPOLIA]: sepolia, [Network.BASE]: base, + [Network.FRAXTAL]: fraxtal, + [Network.MODE]: mode, }; export default config; diff --git a/src/lib/config/mode/contracts.ts b/src/lib/config/mode/contracts.ts new file mode 100644 index 0000000000..26880ddc57 --- /dev/null +++ b/src/lib/config/mode/contracts.ts @@ -0,0 +1,29 @@ +import { Contracts } from '../types'; +import * as mode from '@/assets/data/contracts/mode.json'; + +const contracts: Contracts = { + merkleRedeem: '', + merkleOrchard: '', + multicall: '0xcA11bde05977b3631167028862bE2a173976CA11', + authorizer: mode.Authorizer, + vault: mode.Vault, + weightedPoolFactory: mode.WeightedPoolFactory, + stablePoolFactory: mode.ComposableStablePoolFactory, + lidoRelayer: '', + balancerHelpers: mode.BalancerHelpers, + batchRelayer: mode.BalancerRelayer, + gaugeFactory: mode.ChildChainGaugeFactory, + balancerMinter: mode.L2BalancerPseudoMinter, + gaugeController: '', + tokenAdmin: '', + veBAL: '', + veDelegationProxy: mode.VotingEscrowDelegationProxy, + veBALHelpers: '', + feeDistributor: '', + feeDistributorDeprecated: '', + faucet: '', + gaugeRewardsHelper: '', + gaugeWorkingBalanceHelper: '', +}; + +export default contracts; diff --git a/src/lib/config/mode/index.ts b/src/lib/config/mode/index.ts new file mode 100644 index 0000000000..f92ffc319c --- /dev/null +++ b/src/lib/config/mode/index.ts @@ -0,0 +1,76 @@ +import { Config } from '../types'; +import contracts from './contracts'; +import pools from './pools'; +import tokenlists from './tokenlists'; +import tokens from './tokens'; +import rateProviders from './rateProviders'; + +const config: Config = { + key: '34443', + chainId: 34443, + layerZeroChainId: 260, + chainName: 'Mode', + name: 'Mode', + shortName: 'Mode', + monorepoName: 'mode', + slug: 'mode', + network: 'mode', + trustWalletNetwork: 'mode', + unknown: false, + visibleInUI: true, + testNetwork: false, + rpc: 'https://1rpc.io/mode', + ws: '', + blockTime: 13, + explorer: 'https://modescan.io/', + explorerName: 'The Mode Explorer', + subgraph: + 'https://api.studio.thegraph.com/proxy/75376/balancer-mode-v2/version/latest', + balancerApi: 'https://api.balancer.fi', + poolsUrlV2: '', + subgraphs: { + main: [ + 'https://api.studio.thegraph.com/proxy/75376/balancer-mode-v2/version/latest', + ], + aave: '', + gauge: + 'https://api.studio.thegraph.com/query/75376/balancer-gauges-mode/version/latest', + blocks: '', + }, + bridgeUrl: '', + supportsEIP1559: false, + supportsElementPools: false, + supportsVeBalSync: true, + nativeAsset: { + name: 'Ether', + address: '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE', + symbol: 'ETH', + decimals: 18, + deeplinkId: 'ether', + logoURI: 'tokens/eth.png', + minTransactionBuffer: '0.005', + }, + thirdParty: { + coingecko: { + nativeAssetId: 'ethereum', + platformId: 'mode', + }, + }, + addresses: { + ...contracts, + }, + keys: { + infura: '', + alchemy: '', + }, + gauges: { + type: 5, + weight: 0, + }, + pools, + tokenlists, + tokens, + rateProviders, +}; + +export default config; diff --git a/src/lib/config/mode/pools.ts b/src/lib/config/mode/pools.ts new file mode 100644 index 0000000000..2c821fc2a3 --- /dev/null +++ b/src/lib/config/mode/pools.ts @@ -0,0 +1,57 @@ +import { CSP_ISSUE_POOL_IDS } from '@/constants/pool-lists/csp-issue'; +import { PoolWarning, Pools } from '@/types/pools'; +import { Network } from '../types'; + +const pools: Pools = { + IdsMap: {}, + Pagination: { + PerPage: 10, + PerPool: 10, + PerPoolInitial: 5, + }, + BoostsEnabled: true, + DelegateOwner: '0xba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1b', + ZeroAddress: '0x0000000000000000000000000000000000000000', + DynamicFees: { + Gauntlet: [], + }, + BlockList: [], + IncludedPoolTypes: [ + 'Weighted', + 'Stable', + 'MetaStable', + 'GyroE', + 'ComposableStable', + ], + Stable: { + AllowList: [], + }, + Investment: { + AllowList: [], + }, + Weighted: { + AllowList: [], + }, + Factories: { + '0x5dbad78818d4c8958eff2d5b95b28385a22113cd': 'composableStablePool', + '0xc3ccace87f6d3a81724075adcb5ddd85a8a1bb68': 'weightedPool', + }, + Stakable: { + VotingGaugePools: [], + AllowList: [], + }, + Deep: [], + BoostedApr: [], + Metadata: {}, + DisabledJoins: [], + BrandedRedirect: { + Gyro2: 'gyro', + Gyro3: 'gyro', + GyroE: 'gyro', + }, + Issues: { + [PoolWarning.CspPoolVulnWarning]: CSP_ISSUE_POOL_IDS[Network.MODE], + }, +}; + +export default pools; diff --git a/src/lib/config/mode/rateProviders.ts b/src/lib/config/mode/rateProviders.ts new file mode 100644 index 0000000000..52b936a377 --- /dev/null +++ b/src/lib/config/mode/rateProviders.ts @@ -0,0 +1,10 @@ +import { convertKeysToLowerCase } from '@/lib/utils/objects'; +import { RateProviders } from '../types'; + +const rateProviders: RateProviders = { + '*': { + '0x0000000000000000000000000000000000000000': true, + }, +}; + +export default convertKeysToLowerCase(rateProviders); diff --git a/src/lib/config/mode/tokenlists.ts b/src/lib/config/mode/tokenlists.ts new file mode 100644 index 0000000000..ec6d5a4d29 --- /dev/null +++ b/src/lib/config/mode/tokenlists.ts @@ -0,0 +1,11 @@ +import { TokenListURLMap } from '@/types/TokenList'; + +const tokenlists: TokenListURLMap = { + Balancer: { + Allowlisted: + 'https://raw.githubusercontent.com/balancer/tokenlists/main/generated/balancer.tokenlist.json', + }, + External: [], +}; + +export default tokenlists; diff --git a/src/lib/config/mode/tokens.ts b/src/lib/config/mode/tokens.ts new file mode 100644 index 0000000000..f26415bf05 --- /dev/null +++ b/src/lib/config/mode/tokens.ts @@ -0,0 +1,19 @@ +import { TokenConstants } from '../types'; + +const tokens: TokenConstants = { + Popular: { + Symbols: ['USDC', 'USDT', 'WETH'], + }, + InitialSwapTokens: { + input: '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE', + output: '0x4200000000000000000000000000000000000006', + }, + Addresses: { + nativeAsset: '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE', + wNativeAsset: '0x4200000000000000000000000000000000000006', + WETH: '', + BAL: '', + }, +}; + +export default tokens; diff --git a/src/lib/config/types.ts b/src/lib/config/types.ts index cd7dd23000..127f62844d 100644 --- a/src/lib/config/types.ts +++ b/src/lib/config/types.ts @@ -84,6 +84,8 @@ export enum Network { ARBITRUM = 42161, AVALANCHE = 43114, SEPOLIA = 11155111, + FRAXTAL = 252, + MODE = 34443, } export interface Config { diff --git a/src/providers/cross-chain-sync.provider.spec.ts b/src/providers/cross-chain-sync.provider.spec.ts index f0eec501ea..c513726134 100644 --- a/src/providers/cross-chain-sync.provider.spec.ts +++ b/src/providers/cross-chain-sync.provider.spec.ts @@ -43,8 +43,10 @@ describe('Returns correct Sync state by network', () => { 10, 100, 137, + 252, 1101, 8453, + 34443, 42161, 43114, ], @@ -67,8 +69,10 @@ describe('Returns correct Sync state by network', () => { 10, 100, 137, + 252, 1101, 8453, + 34443, 43114, ], } @@ -101,8 +105,10 @@ describe('Returns correct Sync state by network', () => { 10, 100, 137, + 252, 1101, 8453, + 34443, 43114, ], } @@ -121,6 +127,8 @@ test('Calculates L2 network balances', async () => { "100": "0.0000", "1101": "0.0000", "137": "0.0000", + "252": "0.0000", + "34443": "0.0000", "42161": "0.0904", "43114": "0.0000", "8453": "0.0000",