From b1246e86ac37170591ec488f58761c805529326a Mon Sep 17 00:00:00 2001 From: stephen <991266+stxphxn@users.noreply.github.com> Date: Thu, 8 Feb 2024 20:52:02 +0700 Subject: [PATCH 01/13] =?UTF-8?q?Add=20Celo=20=E2=9C=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/favicon.ico | Bin 15406 -> 15406 bytes src/assets/images/icons/networks/celo.svg | 13 +++++++++++++ src/composables/useNetwork.ts | 7 +++---- src/lib/config/index.ts | 12 ++++++------ .../trustwallet/walletconnect.connector.ts | 5 ++++- src/services/web3/wallet.service.ts | 2 +- 6 files changed, 27 insertions(+), 12 deletions(-) create mode 100644 src/assets/images/icons/networks/celo.svg diff --git a/public/favicon.ico b/public/favicon.ico index d4839360a1fc9da6635ee71d7a6f87735b8c6e2f..b56297f508866ded15ea9e77db330b3583a824a5 100644 GIT binary patch literal 15406 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 literal 15406 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 + + + + + + + + + diff --git a/src/composables/useNetwork.ts b/src/composables/useNetwork.ts index 571d7d318..cca2f13ce 100644 --- a/src/composables/useNetwork.ts +++ b/src/composables/useNetwork.ts @@ -24,7 +24,7 @@ const NETWORK_ID = urlNetworkId || localStorageNetworkId || (Number(import.meta.env.VITE_NETWORK) as Network) || - Network.TELOS; + Network.CELO; if (windowAvailable) localStorage.setItem('networkId', NETWORK_ID.toString()); export const networkSlug = config[NETWORK_ID].slug; export const networkConfig = config[NETWORK_ID]; @@ -37,8 +37,7 @@ export const networkId = ref(NETWORK_ID); export const isMainnet = computed( () => - networkId.value === Network.TELOS || - networkId.value === Network.TELOSTESTNET + networkId.value === Network.CELO || networkId.value === Network.TELOSTESTNET ); export const isPolygon = computed(() => networkId.value === Network.POLYGON); export const isZkevm = computed(() => networkId.value === Network.ZKEVM); @@ -125,7 +124,7 @@ export function handleNetworkSlug( ) { const networkFromUrl = networkFromSlug(networkSlug); const localStorageNetwork = networkFor( - localStorage.getItem('networkId') ?? '40' + localStorage.getItem('networkId') ?? '42220' ); if (!networkFromUrl) { // missing or incorrect network name -> next() withtout network change diff --git a/src/lib/config/index.ts b/src/lib/config/index.ts index 3814c2b0c..a8ac69726 100644 --- a/src/lib/config/index.ts +++ b/src/lib/config/index.ts @@ -10,14 +10,14 @@ import { Config, Network } from './types'; // import polygon from './polygon'; // import sepolia from './sepolia'; // import zkevm from './zkevm'; -import telos from './telos'; -import telosTestnet from './telos-testnet'; -// import celo from './celo'; +// import telos from './telos'; +// import telosTestnet from './telos-testnet'; +import celo from './celo'; const config: Record = { - [Network.TELOS]: telos, - [Network.TELOSTESTNET]: telosTestnet, - // [Network.CELO]: celo, + // [Network.TELOS]: telos, + // [Network.TELOSTESTNET]: telosTestnet, + [Network.CELO]: celo, // [Network.MAINNET]: mainnet, // [Network.GOERLI]: goerli, // [Network.POLYGON]: polygon, diff --git a/src/services/web3/connectors/trustwallet/walletconnect.connector.ts b/src/services/web3/connectors/trustwallet/walletconnect.connector.ts index f1d60d6f8..83d1c8a27 100644 --- a/src/services/web3/connectors/trustwallet/walletconnect.connector.ts +++ b/src/services/web3/connectors/trustwallet/walletconnect.connector.ts @@ -16,6 +16,7 @@ const { // ZKEVM, TELOS, TELOSTESTNET, + CELO, } = Network; export class WalletConnectConnector extends Connector { @@ -23,7 +24,7 @@ export class WalletConnectConnector extends Connector { async connect() { const provider = await EthereumProvider.init({ projectId: '90da6e11e9ce2448f2872dae5e52b189', - chains: [TELOS], + chains: [TELOS, CELO], optionalChains: [ // AVALANCHE, // ARBITRUM, @@ -32,6 +33,7 @@ export class WalletConnectConnector extends Connector { // POLYGON, // ZKEVM, TELOSTESTNET, + CELO, ], rpcMap: { // [MAINNET]: configService.getNetworkRpc(MAINNET), @@ -43,6 +45,7 @@ export class WalletConnectConnector extends Connector { // [ZKEVM]: configService.getNetworkRpc(ZKEVM), [TELOS]: configService.getNetworkRpc(TELOS), [TELOSTESTNET]: configService.getNetworkRpc(TELOSTESTNET), + [CELO]: configService.getNetworkRpc(CELO), }, showQrModal: true, qrModalOptions: { themeMode: useDarkMode().darkMode ? 'dark' : 'light' }, diff --git a/src/services/web3/wallet.service.ts b/src/services/web3/wallet.service.ts index 0124936a9..190615f1a 100644 --- a/src/services/web3/wallet.service.ts +++ b/src/services/web3/wallet.service.ts @@ -26,7 +26,7 @@ export default class WalletService { private readonly config: ConfigService = configService ) { this.appProvider = this.rpcProviderService.jsonProvider; - this.ensProvider = this.rpcProviderService.getJsonProvider(Network.TELOS); + this.ensProvider = this.rpcProviderService.getJsonProvider(Network.CELO); } public setUserProvider(provider: ComputedRef) { From 7f01579dabe91c8332a21b840cc7bda3cca0e9c5 Mon Sep 17 00:00:00 2001 From: stephen <991266+stxphxn@users.noreply.github.com> Date: Wed, 14 Feb 2024 21:32:58 +0700 Subject: [PATCH 02/13] Update --- package-lock.json | 14 +- package.json | 2 +- .../pages/pool/add-liquidity/Page.vue | 1 + src/lib/config/celo/index.ts | 4 +- src/lib/config/celo/tokens.ts | 4 +- src/lib/config/gnosis-chain/contracts.ts | 27 ++- src/lib/config/gnosis-chain/index.ts | 11 +- src/lib/config/gnosis-chain/pools.ts | 157 +++--------------- src/lib/config/gnosis-chain/tokenlists.ts | 2 +- src/lib/config/gnosis-chain/tokens.ts | 6 +- src/lib/config/index.ts | 4 +- src/lib/config/telos/rewards.ts | 65 ++++++++ src/pages/index.vue | 12 +- 13 files changed, 128 insertions(+), 181 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1dad79d4c..6bd57161b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -42,7 +42,7 @@ "@popperjs/core": "^2.9.2", "@sentry/browser": "^7.17.4", "@sentry/tracing": "^7.17.4", - "@symmetric-v3/sdk": "^1.2.9-beta.1", + "@symmetric-v3/sdk": "^1.2.10-beta.1", "@tanstack/vue-query": "^4.22.0", "@testing-library/jest-dom": "^5.16.1", "@testing-library/vue": "^7.0.0", @@ -6833,9 +6833,9 @@ } }, "node_modules/@symmetric-v3/sdk": { - "version": "1.2.9-beta.1", - "resolved": "https://registry.npmjs.org/@symmetric-v3/sdk/-/sdk-1.2.9-beta.1.tgz", - "integrity": "sha512-0x45+GZMFeRX7TsIj6nI6aYgMq2JF2/kCeB7Mh300pxF4AoFVapA1cCfi4kty84DMWKxTHxpU7qTN9RlayuVGw==", + "version": "1.2.10-beta.1", + "resolved": "https://registry.npmjs.org/@symmetric-v3/sdk/-/sdk-1.2.10-beta.1.tgz", + "integrity": "sha512-NT9EerA0jH6UlxvHMefFap23iQaxQEKxmg6KqjrzL0cFa8vYfX8Xby6PEfhh4cV/pklJejoZ3HUhgnBYdDKZlg==", "dev": true, "dependencies": { "@balancer-labs/sor": "^4.1.1-beta.16", @@ -34329,9 +34329,9 @@ } }, "@symmetric-v3/sdk": { - "version": "1.2.9-beta.1", - "resolved": "https://registry.npmjs.org/@symmetric-v3/sdk/-/sdk-1.2.9-beta.1.tgz", - "integrity": "sha512-0x45+GZMFeRX7TsIj6nI6aYgMq2JF2/kCeB7Mh300pxF4AoFVapA1cCfi4kty84DMWKxTHxpU7qTN9RlayuVGw==", + "version": "1.2.10-beta.1", + "resolved": "https://registry.npmjs.org/@symmetric-v3/sdk/-/sdk-1.2.10-beta.1.tgz", + "integrity": "sha512-NT9EerA0jH6UlxvHMefFap23iQaxQEKxmg6KqjrzL0cFa8vYfX8Xby6PEfhh4cV/pklJejoZ3HUhgnBYdDKZlg==", "dev": true, "requires": { "@balancer-labs/sor": "^4.1.1-beta.16", diff --git a/package.json b/package.json index 6f3828cdd..5a35cd0e0 100644 --- a/package.json +++ b/package.json @@ -74,7 +74,7 @@ "@popperjs/core": "^2.9.2", "@sentry/browser": "^7.17.4", "@sentry/tracing": "^7.17.4", - "@symmetric-v3/sdk": "^1.2.9-beta.1", + "@symmetric-v3/sdk": "^1.2.10-beta.1", "@tanstack/vue-query": "^4.22.0", "@testing-library/jest-dom": "^5.16.1", "@testing-library/vue": "^7.0.0", diff --git a/src/components/contextual/pages/pool/add-liquidity/Page.vue b/src/components/contextual/pages/pool/add-liquidity/Page.vue index d5bae30e8..d53a5ae28 100644 --- a/src/components/contextual/pages/pool/add-liquidity/Page.vue +++ b/src/components/contextual/pages/pool/add-liquidity/Page.vue @@ -20,6 +20,7 @@ const props = defineProps(); const pool = toRef(props, 'pool'); +console.log(pool); /** * PROVIDERS */ diff --git a/src/lib/config/celo/index.ts b/src/lib/config/celo/index.ts index c97214d25..840e6dac9 100644 --- a/src/lib/config/celo/index.ts +++ b/src/lib/config/celo/index.ts @@ -35,12 +35,12 @@ const config: Config = { blocks: '', }, bridgeUrl: '', - supportsEIP1559: false, + supportsEIP1559: true, supportsElementPools: false, blockTime: 2, nativeAsset: { name: 'Celo', - address: '0x471EcE3750Da237f93B8E339c536989b8978a438', + address: '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE', symbol: 'CELO', decimals: 18, deeplinkId: 'celo', diff --git a/src/lib/config/celo/tokens.ts b/src/lib/config/celo/tokens.ts index be5483144..3b3702540 100644 --- a/src/lib/config/celo/tokens.ts +++ b/src/lib/config/celo/tokens.ts @@ -10,8 +10,8 @@ const tokens: TokenConstants = { }, Addresses: { nativeAsset: '0x471EcE3750Da237f93B8E339c536989b8978a438', - wNativeAsset: '0x471EcE3750Da237f93B8E339c536989b8978a438', - WETH: '0x471EcE3750Da237f93B8E339c536989b8978a438', + wNativeAsset: '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE', + WETH: '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE', BAL: '0x8427bD503dd3169cCC9aFF7326c15258Bc305478', bbaUSD: '', bbaUSDv2: '', diff --git a/src/lib/config/gnosis-chain/contracts.ts b/src/lib/config/gnosis-chain/contracts.ts index fe1db8f09..8f003a7a8 100644 --- a/src/lib/config/gnosis-chain/contracts.ts +++ b/src/lib/config/gnosis-chain/contracts.ts @@ -1,30 +1,27 @@ import { Contracts } from '../types'; -import * as gnosis from '@/assets/data/contracts/gnosis.json'; const contracts: Contracts = { merkleRedeem: '', - merkleOrchard: '0x35b50C7955e7D0E8298e043C9F4dCDef737b9f5a', - multicall: '0xbb6fab6b627947dae0a75808250d8b2652952cb5', - authorizer: gnosis.Authorizer, - vault: gnosis.Vault, - weightedPoolFactory: gnosis.WeightedPoolFactory, - stablePoolFactory: gnosis.StablePoolFactory, + merkleOrchard: '', + multicall: '0xFAa296891cA6CECAF2D86eF5F7590316d0A17dA0', + authorizer: '0xAb758532D05d2A2fc7b2853ebe54Ac17fE17Ea7f', + vault: '0x24F87b37F4F249Da61D89c3FF776a55c321B2773', + weightedPoolFactory: '0xb13A501fA658389e437E3047d56F2Bf945207a5A', + stablePoolFactory: '0xF9e6BE5A015Da5dc29B42ff345bB7Dd1b6C60aC7', lidoRelayer: '', - balancerHelpers: gnosis.BalancerHelpers, - batchRelayer: gnosis.BalancerRelayer, - gaugeFactory: gnosis.ChildChainLiquidityGaugeFactory, - balancerMinter: gnosis.L2BalancerPseudoMinter, + balancerHelpers: '0xe007Ba1c5665567175B4d462f8dba14506e7f592', + batchRelayer: '0xDCE2ea355530c098f5B9410b6B2663E0FFf246Bf', + gaugeFactory: '', + balancerMinter: '', gaugeController: '', tokenAdmin: '', veBAL: '', - veDelegationProxy: '0x7A2535f5fB47b8e44c02Ef5D9990588313fe8F05', + veDelegationProxy: '', veBALHelpers: '', feeDistributor: '', feeDistributorDeprecated: '', faucet: '', - gaugeRewardsHelper: gnosis.ChildChainGaugeRewardHelper, - gaugeWorkingBalanceHelper: gnosis.ChildChainGaugeWorkingBalanceHelper, - gaugeCheckpointer: gnosis.ChildChainGaugeCheckpointer, + gaugeRewardsHelper: '', }; export default contracts; diff --git a/src/lib/config/gnosis-chain/index.ts b/src/lib/config/gnosis-chain/index.ts index f3bda7ca0..a8ecb189b 100644 --- a/src/lib/config/gnosis-chain/index.ts +++ b/src/lib/config/gnosis-chain/index.ts @@ -9,7 +9,7 @@ const config: Config = { key: '100', chainId: 100, layerZeroChainId: 145, - supportsVeBalSync: true, + supportsVeBalSync: false, chainName: 'Gnosis Chain', name: 'Gnosis Chain', shortName: 'Gnosis', @@ -25,17 +25,16 @@ const config: Config = { publicRpc: 'https://rpc.gnosis.gateway.fm', explorer: 'https://gnosisscan.io', explorerName: 'Gnosisscan', - balancerApi: 'https://api.balancer.fi', + balancerApi: '', subgraph: - 'https://api.thegraph.com/subgraphs/name/balancer-labs/balancer-gnosis-chain-v2', + 'https://api.thegraph.com/subgraphs/name/centfinance/symmetric-v2-gnosis', poolsUrlV2: '', subgraphs: { main: [ - 'https://api.thegraph.com/subgraphs/name/balancer-labs/balancer-gnosis-chain-v2', + 'https://api.thegraph.com/subgraphs/name/centfinance/symmetric-v2-gnosis', ], aave: '', - gauge: - 'https://api.thegraph.com/subgraphs/name/balancer-labs/balancer-gauges-gnosis-chain', + gauge: '', blocks: '', }, bridgeUrl: 'https://bridge.gnosischain.com/', diff --git a/src/lib/config/gnosis-chain/pools.ts b/src/lib/config/gnosis-chain/pools.ts index 47e6cd58d..4663c9ab3 100644 --- a/src/lib/config/gnosis-chain/pools.ts +++ b/src/lib/config/gnosis-chain/pools.ts @@ -1,10 +1,15 @@ -import { Protocol } from '@/composables/useProtocols'; -import { CSP_ISSUE_POOL_IDS } from '@/constants/pool-lists/csp-issue'; -import { PoolFeature, PoolWarning, Pools } from '@/types/pools'; -import { Network } from '../types'; +import { Pools } from '@/types/pools'; const pools: Pools = { - IdsMap: {}, + IdsMap: { + staBAL: '', + bbAaveUSD: { + v1: '', + v2: '', + v3: '', + }, + veBAL: '', + }, Pagination: { PerPage: 10, PerPool: 10, @@ -27,16 +32,7 @@ const pools: Pools = { 'ComposableStable', ], Stable: { - AllowList: [ - '0xfedb19ec000d38d92af4b21436870f115db22725000000000000000000000010', // bb-ag-usd - '0x9949f1884b61a8265e12056650c1ac4677a75403000000000000000000000014', // 2EUR (EURe) - '0xa611a551b95b205ccd9490657acf7899daee5db700000000000000000000002e', // EURe / bb-ag-usd - '0x5c78d05b8ecf97507d1cf70646082c54faa4da95000000000000000000000030', // agEUR / EURe - '0xbad20c15a773bf03ab973302f61fabcea5101f0a000000000000000000000034', // WETH / wstETH - '0xe15cac1df3621e001f76210ab12a7f1a1691481f000000000000000000000044', // bb-ag-USD - '0x2086f52651837600180de173b09470f54ef7491000000000000000000000004f', // xdai-usdc-usdt - '0x0c1b9ce6bf6c01f587c2ee98b0ef4b20c6648753000000000000000000000050', // eure-stabal3 - ], + AllowList: [], }, Investment: { AllowList: [], @@ -44,133 +40,22 @@ const pools: Pools = { Weighted: { // Only effective after given timestamp here: usePool.ts#createdAfterTimestamp // see useDisabledJoinPool.ts#nonAllowedWeightedPoolAfterTimestamp for logic. - AllowList: [ - '0xa99fd9950b5d5dceeaf4939e221dca8ca9b938ab000100000000000000000025', // 25WETH-25BAL-25GNO-25wxDAI - '0x388cae2f7d3704c937313d990298ba67d70a3709000200000000000000000026', // 50AGVE-50GNO - '0x4bcf6b48906fa0f68bea1fc255869a41241d4851000200000000000000000021', // 50WXDAI-50MPS - '0x5519e2d8a0af0944ea639c6dbad69a174de3ecf800010000000000000000003b', // 25BAL-25GNO-25bb-WETH-wstETH-25wxDAI - '0xbc130c4989e10941142b34f054eb38d69fdce9df000200000000000000000049', // 20XOC-80USDC - '0xba1a5b19d09a79dada039b1f974015c5a989d5fd000100000000000000000046', // agUSD-agWETH-agWBTC - '0x4de21b365d6543661d0e105e579a34b963862497000200000000000000000045', // 50bbagGNO-50bbagUSD - '0x0c1b9ce6bf6c01f587c2ee98b0ef4b20c6648753000000000000000000000050', - '0x00df7f58e1cf932ebe5f54de5970fb2bdf0ef06d00010000000000000000005b', // B-50wstETH-25BAL-25AURA - '0x4cdabe9e07ca393943acfb9286bbbd0d0a310ff600020000000000000000005c', // B-50wstETH-50COW - '0xeb30c85cc528537f5350cf5684ce6a4538e13394000200000000000000000059', // B-50USD-50wstETH - '0x4683e340a8049261057d5ab1b29c8d840e75695e00020000000000000000005a', // B-50wstETH-50GNO - '0xb8bb1ce9c6e5401d66fe2126db6e7387e1e24ffe00020000000000000000003d', // WETH/GNO - '0x274dedb9356c3e1e24bfe2bf3d4349fbdbfa0d14000200000000000000000054', // staBAL/GNO - '0x66888e4f35063ad8bb11506a6fde5024fb4f1db0000100000000000000000053', // WETH/staBAL/WBTC - '0x7caef9e452ce161dec936ace7eab571d1023b20900020000000000000000005d', // B-50wstETH-50NEXT - '0x77e5bf699db38c578b2982c3e262e9c5f1f50fd0000200000000000000000061', // B-50USD-50bIBTA - '0xe85eb550e98ee66d19c667de24c5c8e10fee6504000200000000000000000060', // B-50USD-50bCSPX - '0xf6bfffb47bc125564cbb6cc0e7633eb7addaefce00020000000000000000005e', // B-50USD-50bIB01 - ], - }, - Factories: { - '0xc128468b7ce63ea702c1f104d55a2566b13d3abd': 'composableStablePool', // ComposableStable V3 - '0xc128a9954e6c874ea3d62ce62b468ba073093f25': 'weightedPool', // WeightedPool V3 - '0x6cad2ea22bfa7f4c14aae92e47f510cd5c509bc7': 'weightedPool', // weighted pool v4 - '0xd87f44df0159dc78029ab9ca7d7e57e7249f5acd': 'composableStablePool', // ComposableStable V4 - '0x4bdcc2fb18aeb9e2d281b0278d946445070eada7': 'composableStablePool', // ComposableStable V5 + AllowList: [], }, + Factories: {}, Stakable: { - VotingGaugePools: [ - '0x66f33ae36dd80327744207a48122f874634b3ada000100000000000000000013', - '0xf48f01dcb2cbb3ee1f6aab0e742c2d3941039d56000200000000000000000012', - '0xb973ca96a3f0d61045f53255e319aedb6ed49240000200000000000000000011', - '0xfedb19ec000d38d92af4b21436870f115db22725000000000000000000000010', - '0xbad20c15a773bf03ab973302f61fabcea5101f0a000000000000000000000034', - '0x5c78d05b8ecf97507d1cf70646082c54faa4da95000000000000000000000030', - '0x21d4c792ea7e38e0d0819c2011a2b1cb7252bd9900020000000000000000001e', - '0xba1a5b19d09a79dada039b1f974015c5a989d5fd000100000000000000000046', - '0x4de21b365d6543661d0e105e579a34b963862497000200000000000000000045', - '0xe15cac1df3621e001f76210ab12a7f1a1691481f000000000000000000000044', - '0xb8bb1ce9c6e5401d66fe2126db6e7387e1e24ffe00020000000000000000003d', - '0x66888e4f35063ad8bb11506a6fde5024fb4f1db0000100000000000000000053', - '0x2086f52651837600180de173b09470f54ef7491000000000000000000000004f', - '0x274dedb9356c3e1e24bfe2bf3d4349fbdbfa0d14000200000000000000000054', - '0x0c1b9ce6bf6c01f587c2ee98b0ef4b20c6648753000000000000000000000050', - '0xeb30c85cc528537f5350cf5684ce6a4538e13394000200000000000000000059', - '0x4683e340a8049261057d5ab1b29c8d840e75695e00020000000000000000005a', - '0x4cdabe9e07ca393943acfb9286bbbd0d0a310ff600020000000000000000005c', - '0x00df7f58e1cf932ebe5f54de5970fb2bdf0ef06d00010000000000000000005b', - ], + VotingGaugePools: [], AllowList: [], }, - Metadata: { - '0xfedb19ec000d38d92af4b21436870f115db22725000000000000000000000010': { - name: 'Balancer Boosted Agave USD', - hasIcon: false, - features: { - [PoolFeature.Boosted]: { - featureProtocols: [Protocol.Agave], - }, - }, - }, - '0x4de21b365d6543661d0e105e579a34b963862497000200000000000000000045': { - name: 'Balancer Boosted Agave GNO/USD', - hasIcon: false, - features: { - [PoolFeature.Boosted]: { - featureProtocols: [Protocol.Agave], - }, - }, - }, - '0xf48f01dcb2cbb3ee1f6aab0e742c2d3941039d56000200000000000000000012': { - name: 'Balancer Boosted Agave GNO/WETH', - hasIcon: false, - features: { - [PoolFeature.Boosted]: { - featureProtocols: [Protocol.Agave], - }, - }, - }, - '0xba1a5b19d09a79dada039b1f974015c5a989d5fd000100000000000000000046': { - name: 'Balancer Boosted Agave WETH/WBTC/USD', - hasIcon: false, - features: { - [PoolFeature.Boosted]: { - featureProtocols: [Protocol.Agave], - }, - }, - }, - }, - Deep: [ - '0xfedb19ec000d38d92af4b21436870f115db22725000000000000000000000010', // agave stable - '0x66f33ae36dd80327744207a48122f874634b3ada000100000000000000000013', // agave tricrypto - '0xb973ca96a3f0d61045f53255e319aedb6ed49240000200000000000000000011', // agave gno/usdc - '0xf48f01dcb2cbb3ee1f6aab0e742c2d3941039d56000200000000000000000012', // agave gno/weth - '0xe15cac1df3621e001f76210ab12a7f1a1691481f000000000000000000000044', // bb-ag-USD - '0xba1a5b19d09a79dada039b1f974015c5a989d5fd000100000000000000000046', // agUSD-agWETH-agWBTC - '0x4de21b365d6543661d0e105e579a34b963862497000200000000000000000045', // 50bbagGNO-50bbagUSD - ], - Deprecated: { - '0xf48f01dcb2cbb3ee1f6aab0e742c2d3941039d56000200000000000000000012': { - newPool: - '0xb8bb1ce9c6e5401d66fe2126db6e7387e1e24ffe00020000000000000000003d', - description: 'deprecatedPool.hasNewPool.description', - }, - '0xba1a5b19d09a79dada039b1f974015c5a989d5fd000100000000000000000046': { - newPool: - '0x66888e4f35063ad8bb11506a6fde5024fb4f1db0000100000000000000000053', - description: 'deprecatedPool.hasNewPool.description', - }, - '0xe15cac1df3621e001f76210ab12a7f1a1691481f000000000000000000000044': { - newPool: - '0x2086f52651837600180de173b09470f54ef7491000000000000000000000004f', - description: 'deprecatedPool.hasNewPool.description', - }, - '0x4de21b365d6543661d0e105e579a34b963862497000200000000000000000045': { - newPool: - '0x274dedb9356c3e1e24bfe2bf3d4349fbdbfa0d14000200000000000000000054', - description: 'deprecatedPool.hasNewPool.description', - }, - }, + Metadata: {}, + Deep: [], BoostedApr: [], - DisabledJoins: [...CSP_ISSUE_POOL_IDS[Network.GNOSIS]], - Issues: { - [PoolWarning.CspPoolVulnWarning]: CSP_ISSUE_POOL_IDS[Network.GNOSIS], + DisabledJoins: [], + Deprecated: { + deprecatedid: {}, //Used for unit testing }, + ExitViaInternalBalance: [], + Risks: {}, }; export default pools; diff --git a/src/lib/config/gnosis-chain/tokenlists.ts b/src/lib/config/gnosis-chain/tokenlists.ts index bab8a53dc..00138df0f 100644 --- a/src/lib/config/gnosis-chain/tokenlists.ts +++ b/src/lib/config/gnosis-chain/tokenlists.ts @@ -3,7 +3,7 @@ import { TokenListURLMap } from '@/types/TokenList'; const tokenlists: TokenListURLMap = { Balancer: { Allowlisted: - 'https://raw.githubusercontent.com/balancer/tokenlists/main/generated/balancer.tokenlist.json', + 'https://raw.githubusercontent.com/centfinance/Symmetric.WebInterface-v2/develop/src/lib/config/listed.tokenlist.json', }, External: [ 'https://unpkg.com/@1hive/default-token-list@latest/build/honeyswap-default.tokenlist.json', diff --git a/src/lib/config/gnosis-chain/tokens.ts b/src/lib/config/gnosis-chain/tokens.ts index 00601e328..ad159dccb 100644 --- a/src/lib/config/gnosis-chain/tokens.ts +++ b/src/lib/config/gnosis-chain/tokens.ts @@ -2,17 +2,17 @@ import { TokenConstants } from '../types'; const tokens: TokenConstants = { Popular: { - Symbols: ['WXDAI', 'WETH', 'BAL'], + Symbols: ['WXDAI', 'WETH', 'SYMM'], }, InitialSwapTokens: { input: '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE', - output: '0xDDAfbb505ad214D7b80b1f830fcCc89B60fb7A83', + output: '0xc45b3c1c24d5f54e7a2cf288ac668c74dd507a84', }, Addresses: { nativeAsset: '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE', wNativeAsset: '0xe91D153E0b41518A2Ce8Dd3D7944Fa863463a97d', WETH: '0x6A023CCd1ff6F2045C3309768eAd9E68F978f6e1', - BAL: '0x7eF541E2a22058048904fE5744f9c7E4C57AF717', + BAL: '0xc45b3c1c24d5f54e7a2cf288ac668c74dd507a84', }, }; diff --git a/src/lib/config/index.ts b/src/lib/config/index.ts index a8ac69726..1c50342e8 100644 --- a/src/lib/config/index.ts +++ b/src/lib/config/index.ts @@ -4,7 +4,7 @@ import { Config, Network } from './types'; // import avalanche from './avalanche'; // import base from './base'; // import goerli from './goerli'; -// import gnosisChain from './gnosis-chain'; +import gnosisChain from './gnosis-chain'; // import mainnet from './mainnet'; // import optimism from './optimism'; // import polygon from './polygon'; @@ -23,7 +23,7 @@ const config: Record = { // [Network.POLYGON]: polygon, // [Network.ARBITRUM]: arbitrum, // [Network.OPTIMISM]: optimism, - // [Network.GNOSIS]: gnosisChain, + [Network.GNOSIS]: gnosisChain, // [Network.ZKEVM]: zkevm, // [Network.AVALANCHE]: avalanche, // [Network.SEPOLIA]: sepolia, diff --git a/src/lib/config/telos/rewards.ts b/src/lib/config/telos/rewards.ts index d7ca24c46..d0ca48085 100644 --- a/src/lib/config/telos/rewards.ts +++ b/src/lib/config/telos/rewards.ts @@ -477,4 +477,69 @@ export const rewards = { decimals: 18, }, }, + 1707955200: { + '0x2d714951f7165a51e8bd61f92d8a979ab0ed4b59000200000000000000000006': { + symbol: 'WTLOS-USDT', + token: '0xD102cE6A4dB07D247fcc28F366A623Df0938CA9E', + tokenSymbol: 'WTLOS', + gauge: '0xa9d436ab58989354a5c3705f24a5130779055e47', + rate: BigInt('3000000000000000000000') / BigInt('604800'), + period_finish: 0, + decimals: 18, + }, + '0x058d4893efa235d86cceed5a7eef0809b76c8c66000000000000000000000004': { + symbol: 'USDC-USDT', + token: '0xD102cE6A4dB07D247fcc28F366A623Df0938CA9E', + tokenSymbol: 'WTLOS', + gauge: '0xe4c412962fab7f2d406c43a8da95c68f9d60f24e', + rate: BigInt('2000000000000000000000') / BigInt('604800'), + period_finish: 0, + decimals: 18, + }, + '0x9a77bd2edbbb68173275cda967b76e9213949ace000000000000000000000008': { + symbol: 'STLOS-WTLOS', + token: '0xD102cE6A4dB07D247fcc28F366A623Df0938CA9E', + tokenSymbol: 'WTLOS', + gauge: '0xec678e92afe25bc5ba4bc2e1ff386c775270e49e', + rate: BigInt('3000000000000000000000') / BigInt('604800'), + period_finish: 0, + decimals: 18, + }, + '0x0ca5d4b7aeeca61aff78c8f734596ec88456d5c300010000000000000000000a': { + symbol: 'BTCb-ETH-USDC', + token: '0xD102cE6A4dB07D247fcc28F366A623Df0938CA9E', + tokenSymbol: 'WTLOS', + gauge: '0x760dd84074f735bd3836718c0916a828d1dda502', + rate: BigInt('1000000000000000000000') / BigInt('604800'), + period_finish: 0, + decimals: 18, + }, + '0x5e99843486cf052baf0925a0cdeb40920477295900000000000000000000000b': { + symbol: 'USDM/USDC-USDT', + token: '0xD102cE6A4dB07D247fcc28F366A623Df0938CA9E', + tokenSymbol: 'WTLOS', + gauge: '0x6e0c092b93b5c075239ee61cae811924028899ea', + rate: BigInt('2000000000000000000000') / BigInt('604800'), + period_finish: 0, + decimals: 18, + }, + '0x38c2609cabbe6cce553eb842b78ea59e5a73552800000000000000000000000e': { + symbol: 'rfTLOS-STLOS', + token: '0xD102cE6A4dB07D247fcc28F366A623Df0938CA9E', + tokenSymbol: 'WTLOS', + gauge: '0x5967e7572f925b5e133963ce792001148f57dc08', + rate: BigInt('1000000000000000000000') / BigInt('604800'), + period_finish: 0, + decimals: 18, + }, + '0x2b014535525aad053b8811c22a337e57caae82df00020000000000000000000f': { + symbol: 'WTLOS-USDC', + token: '0xD102cE6A4dB07D247fcc28F366A623Df0938CA9E', + tokenSymbol: 'WTLOS', + gauge: '0x9614933e16d6753ee9be1736b2850862984fdc3a', + rate: BigInt('1500000000000000000000') / BigInt('604800'), + period_finish: 0, + decimals: 18, + }, + }, }; diff --git a/src/pages/index.vue b/src/pages/index.vue index 386f7a0e3..06ae9fe7d 100644 --- a/src/pages/index.vue +++ b/src/pages/index.vue @@ -4,7 +4,7 @@ import axios from 'axios'; import HomePageHero from '@/components/heros/HomePageHero.vue'; import TokenSearchInput from '@/components/inputs/TokenSearchInput.vue'; -import FeaturedProtocols from '@/components/sections/FeaturedProtocols.vue'; +// import FeaturedProtocols from '@/components/sections/FeaturedProtocols.vue'; import PoolsTable from '@/components/tables/PoolsTable/PoolsTable.vue'; import usePoolFilters from '@/composables/pools/usePoolFilters'; import useBreakpoints from '@/composables/useBreakpoints'; @@ -47,8 +47,8 @@ const filterPoolAttributes = ref([]); */ const router = useRouter(); const { injectPrices, getToken, tokens } = useTokens(); -const { appNetworkConfig } = useNetwork(); -const isElementSupported = appNetworkConfig.supportsElementPools; +// const { appNetworkConfig } = useNetwork(); +// const isElementSupported = appNetworkConfig.supportsElementPools; const { selectedTokens, addSelectedToken, removeSelectedToken } = usePoolFilters(); @@ -334,13 +334,13 @@ onBeforeMount(async () => { @on-column-sort="onColumnSort" @load-more="loadMorePools" /> -
+
From 54287ca1a0503016e200addde7bbc3dc61f95dfa Mon Sep 17 00:00:00 2001 From: stephen <991266+stxphxn@users.noreply.github.com> Date: Tue, 5 Mar 2024 20:29:13 +0700 Subject: [PATCH 03/13] Update SDK --- package-lock.json | 14 +++++++------- package.json | 2 +- .../AddLiquidityForm/AddLiquidityForm.vue | 14 +++++++++----- src/lib/config/celo/tokens.ts | 8 ++++---- src/lib/utils/index.ts | 3 ++- src/providers/tokens.provider.ts | 5 +++++ 6 files changed, 28 insertions(+), 18 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6bd57161b..2bbaa86ad 100644 --- a/package-lock.json +++ b/package-lock.json @@ -42,7 +42,7 @@ "@popperjs/core": "^2.9.2", "@sentry/browser": "^7.17.4", "@sentry/tracing": "^7.17.4", - "@symmetric-v3/sdk": "^1.2.10-beta.1", + "@symmetric-v3/sdk": "^1.2.11-beta.1", "@tanstack/vue-query": "^4.22.0", "@testing-library/jest-dom": "^5.16.1", "@testing-library/vue": "^7.0.0", @@ -6833,9 +6833,9 @@ } }, "node_modules/@symmetric-v3/sdk": { - "version": "1.2.10-beta.1", - "resolved": "https://registry.npmjs.org/@symmetric-v3/sdk/-/sdk-1.2.10-beta.1.tgz", - "integrity": "sha512-NT9EerA0jH6UlxvHMefFap23iQaxQEKxmg6KqjrzL0cFa8vYfX8Xby6PEfhh4cV/pklJejoZ3HUhgnBYdDKZlg==", + "version": "1.2.11-beta.1", + "resolved": "https://registry.npmjs.org/@symmetric-v3/sdk/-/sdk-1.2.11-beta.1.tgz", + "integrity": "sha512-GhTi4La+KPsmPynXxywZoGexcEjvIRjVOLWTZfWNs0JIgGBHpPTB49jqorVTjgw7w6+DA90UvRJIjqc4KJFUmA==", "dev": true, "dependencies": { "@balancer-labs/sor": "^4.1.1-beta.16", @@ -34329,9 +34329,9 @@ } }, "@symmetric-v3/sdk": { - "version": "1.2.10-beta.1", - "resolved": "https://registry.npmjs.org/@symmetric-v3/sdk/-/sdk-1.2.10-beta.1.tgz", - "integrity": "sha512-NT9EerA0jH6UlxvHMefFap23iQaxQEKxmg6KqjrzL0cFa8vYfX8Xby6PEfhh4cV/pklJejoZ3HUhgnBYdDKZlg==", + "version": "1.2.11-beta.1", + "resolved": "https://registry.npmjs.org/@symmetric-v3/sdk/-/sdk-1.2.11-beta.1.tgz", + "integrity": "sha512-GhTi4La+KPsmPynXxywZoGexcEjvIRjVOLWTZfWNs0JIgGBHpPTB49jqorVTjgw7w6+DA90UvRJIjqc4KJFUmA==", "dev": true, "requires": { "@balancer-labs/sor": "^4.1.1-beta.16", diff --git a/package.json b/package.json index 5a35cd0e0..9f5597cea 100644 --- a/package.json +++ b/package.json @@ -74,7 +74,7 @@ "@popperjs/core": "^2.9.2", "@sentry/browser": "^7.17.4", "@sentry/tracing": "^7.17.4", - "@symmetric-v3/sdk": "^1.2.10-beta.1", + "@symmetric-v3/sdk": "^1.2.11-beta.1", "@tanstack/vue-query": "^4.22.0", "@testing-library/jest-dom": "^5.16.1", "@testing-library/vue": "^7.0.0", diff --git a/src/components/forms/pool_actions/AddLiquidityForm/AddLiquidityForm.vue b/src/components/forms/pool_actions/AddLiquidityForm/AddLiquidityForm.vue index fee0b52ce..aad84249d 100644 --- a/src/components/forms/pool_actions/AddLiquidityForm/AddLiquidityForm.vue +++ b/src/components/forms/pool_actions/AddLiquidityForm/AddLiquidityForm.vue @@ -86,11 +86,15 @@ const excludedTokens = computed((): string[] => { }); const joinTokensWithBalance = computed(() => - poolJoinTokens.value.filter( - address => - includesAddress(tokensWithBalance.value, address) || - isSameAddress(address, wrappedNativeAsset.value.address) - ) + poolJoinTokens.value.filter(address => { + console.log('address', address); + console.log('tokensWithBalance.value', tokensWithBalance.value); + address + ? includesAddress(tokensWithBalance.value, address) + : false || wrappedNativeAsset.value.address + ? isSameAddress(address, wrappedNativeAsset.value.address) + : false; + }) ); const joinTokensWithoutBalance = computed(() => diff --git a/src/lib/config/celo/tokens.ts b/src/lib/config/celo/tokens.ts index 3b3702540..d7a26bc7a 100644 --- a/src/lib/config/celo/tokens.ts +++ b/src/lib/config/celo/tokens.ts @@ -6,12 +6,12 @@ const tokens: TokenConstants = { }, InitialSwapTokens: { input: '0x471EcE3750Da237f93B8E339c536989b8978a438', - output: '0xb19382073c7A0aDdbb56Ac6AF1808Fa49e377B75', + output: '0x765DE816845861e75A25fCA122bb6898B8B1282a', }, Addresses: { - nativeAsset: '0x471EcE3750Da237f93B8E339c536989b8978a438', - wNativeAsset: '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE', - WETH: '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE', + nativeAsset: '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE', + wNativeAsset: '', + WETH: '', BAL: '0x8427bD503dd3169cCC9aFF7326c15258Bc305478', bbaUSD: '', bbaUSDv2: '', diff --git a/src/lib/utils/index.ts b/src/lib/utils/index.ts index ca29f1bdf..ecc0c3d05 100644 --- a/src/lib/utils/index.ts +++ b/src/lib/utils/index.ts @@ -144,7 +144,8 @@ export function isSameAddress(address1: string, address2: string): boolean { } export function includesAddress(addresses: string[], address: string): boolean { - if (!address) return false; + if (!address || !addresses) return false; + console.log('addresses', addresses, 'address', address); addresses = addresses.map(a => (a ? getAddress(a) : '')); return addresses.includes(getAddress(address)); } diff --git a/src/providers/tokens.provider.ts b/src/providers/tokens.provider.ts index 2db9d3982..7e7d26a1a 100644 --- a/src/providers/tokens.provider.ts +++ b/src/providers/tokens.provider.ts @@ -43,6 +43,7 @@ import useWeb3 from '@/services/web3/useWeb3'; import { tokenListService } from '@/services/token-list/token-list.service'; import { AmountToApprove } from '@/composables/approvals/useTokenApprovalActions'; import BigNumber from 'bignumber.js'; +// import { Token } from '@symmetric-v3/sdk'; const { uris: tokenListUris } = tokenListService; @@ -454,6 +455,7 @@ export const tokensProvider = ( * Get single token from state */ function getToken(address: string): TokenInfo { + if (!address) return { address: '' } as TokenInfo; address = getAddressFromPoolId(address); // In case pool ID has been passed return selectByAddressFast(tokens.value, getAddress(address)) as TokenInfo; } @@ -498,6 +500,9 @@ export const tokensProvider = ( * Returns true if the token is the native asset or wrapped native asset */ function isWethOrEth(tokenAddress: string): boolean { + console.log(wrappedNativeAsset.value); + if (!nativeAsset || !nativeAsset.address || !wrappedNativeAsset.value) + return false; return ( isSameAddress(tokenAddress, nativeAsset.address) || isSameAddress(tokenAddress, wrappedNativeAsset.value.address) From e7ab6c4e31d55cfc50a8a2ce51187bfc86a9ecba Mon Sep 17 00:00:00 2001 From: stephen <991266+stxphxn@users.noreply.github.com> Date: Wed, 13 Mar 2024 16:32:34 +0700 Subject: [PATCH 04/13] Fix celo joins --- package-lock.json | 14 +++++++------- package.json | 2 +- .../AddLiquidityForm/AddLiquidityForm.vue | 6 +++--- .../navs/AppNav/AppSidebar/SidebarContent.vue | 7 ++++--- src/composables/useVeBAL.ts | 6 ++++-- src/lib/config/celo/tokens.ts | 2 +- src/lib/config/index.ts | 4 ++-- src/lib/utils/index.ts | 1 - 8 files changed, 22 insertions(+), 20 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2bbaa86ad..528e8ed43 100644 --- a/package-lock.json +++ b/package-lock.json @@ -42,7 +42,7 @@ "@popperjs/core": "^2.9.2", "@sentry/browser": "^7.17.4", "@sentry/tracing": "^7.17.4", - "@symmetric-v3/sdk": "^1.2.11-beta.1", + "@symmetric-v3/sdk": "^1.2.12-beta.1", "@tanstack/vue-query": "^4.22.0", "@testing-library/jest-dom": "^5.16.1", "@testing-library/vue": "^7.0.0", @@ -6833,9 +6833,9 @@ } }, "node_modules/@symmetric-v3/sdk": { - "version": "1.2.11-beta.1", - "resolved": "https://registry.npmjs.org/@symmetric-v3/sdk/-/sdk-1.2.11-beta.1.tgz", - "integrity": "sha512-GhTi4La+KPsmPynXxywZoGexcEjvIRjVOLWTZfWNs0JIgGBHpPTB49jqorVTjgw7w6+DA90UvRJIjqc4KJFUmA==", + "version": "1.2.12-beta.1", + "resolved": "https://registry.npmjs.org/@symmetric-v3/sdk/-/sdk-1.2.12-beta.1.tgz", + "integrity": "sha512-+juxKXm5nk/P67zFwbcKfYzXMYFNnriP3NbxSZZ0MT0OIeUQeW0FpO/LR5fVQJwtuhAPjP6L6BenOVP4JnNJ5Q==", "dev": true, "dependencies": { "@balancer-labs/sor": "^4.1.1-beta.16", @@ -34329,9 +34329,9 @@ } }, "@symmetric-v3/sdk": { - "version": "1.2.11-beta.1", - "resolved": "https://registry.npmjs.org/@symmetric-v3/sdk/-/sdk-1.2.11-beta.1.tgz", - "integrity": "sha512-GhTi4La+KPsmPynXxywZoGexcEjvIRjVOLWTZfWNs0JIgGBHpPTB49jqorVTjgw7w6+DA90UvRJIjqc4KJFUmA==", + "version": "1.2.12-beta.1", + "resolved": "https://registry.npmjs.org/@symmetric-v3/sdk/-/sdk-1.2.12-beta.1.tgz", + "integrity": "sha512-+juxKXm5nk/P67zFwbcKfYzXMYFNnriP3NbxSZZ0MT0OIeUQeW0FpO/LR5fVQJwtuhAPjP6L6BenOVP4JnNJ5Q==", "dev": true, "requires": { "@balancer-labs/sor": "^4.1.1-beta.16", diff --git a/package.json b/package.json index 9f5597cea..73f971588 100644 --- a/package.json +++ b/package.json @@ -74,7 +74,7 @@ "@popperjs/core": "^2.9.2", "@sentry/browser": "^7.17.4", "@sentry/tracing": "^7.17.4", - "@symmetric-v3/sdk": "^1.2.11-beta.1", + "@symmetric-v3/sdk": "^1.2.12-beta.1", "@tanstack/vue-query": "^4.22.0", "@testing-library/jest-dom": "^5.16.1", "@testing-library/vue": "^7.0.0", diff --git a/src/components/forms/pool_actions/AddLiquidityForm/AddLiquidityForm.vue b/src/components/forms/pool_actions/AddLiquidityForm/AddLiquidityForm.vue index aad84249d..92d2f154c 100644 --- a/src/components/forms/pool_actions/AddLiquidityForm/AddLiquidityForm.vue +++ b/src/components/forms/pool_actions/AddLiquidityForm/AddLiquidityForm.vue @@ -87,9 +87,7 @@ const excludedTokens = computed((): string[] => { const joinTokensWithBalance = computed(() => poolJoinTokens.value.filter(address => { - console.log('address', address); - console.log('tokensWithBalance.value', tokensWithBalance.value); - address + return address ? includesAddress(tokensWithBalance.value, address) : false || wrappedNativeAsset.value.address ? isSameAddress(address, wrappedNativeAsset.value.address) @@ -97,6 +95,8 @@ const joinTokensWithBalance = computed(() => }) ); +console.log('joinTokensWithBalance', joinTokensWithBalance.value); + const joinTokensWithoutBalance = computed(() => poolJoinTokens.value.filter( address => !includesAddress(tokensWithBalance.value, address) diff --git a/src/components/navs/AppNav/AppSidebar/SidebarContent.vue b/src/components/navs/AppNav/AppSidebar/SidebarContent.vue index 9220aa456..5e83c7aec 100644 --- a/src/components/navs/AppNav/AppSidebar/SidebarContent.vue +++ b/src/components/navs/AppNav/AppSidebar/SidebarContent.vue @@ -38,14 +38,15 @@ const router = useRouter(); */ const blockIcon = ref(); +console.log('isVeBalSupported', isVeBalSupported); const navLinks = [ - { label: t('pool'), path: '/', goal: Goals.ClickNavPools }, + { label: t('pool'), path: `/${networkSlug}`, goal: Goals.ClickNavPools }, { label: t('swap'), path: `/${networkSlug}/swap`, goal: Goals.ClickNavSwap }, { label: t('claim'), path: `/${networkSlug}/claim`, goal: Goals.ClickNavClaim, - hide: !isVeBalSupported, + hide: !isVeBalSupported.value, }, { label: t('portfolio'), @@ -56,7 +57,7 @@ const navLinks = [ label: 'vTSYMM', path: `/${networkSlug}/vtsymm`, goal: Goals.ClickNavVebal, - hide: !isVeBalSupported, + hide: !isVeBalSupported.value, }, // { // label: 'Airdrop', diff --git a/src/composables/useVeBAL.ts b/src/composables/useVeBAL.ts index 589ab856a..23b6654c0 100644 --- a/src/composables/useVeBAL.ts +++ b/src/composables/useVeBAL.ts @@ -18,8 +18,10 @@ const showRedirectModal = ref(false); /** * COMPUTED */ -export const isVeBalSupported = computed( - () => configService.network.addresses.veBAL !== '' +export const isVeBalSupported = computed(() => + configService.network.addresses.veBAL + ? configService.network.addresses.veBAL !== '' + : false ); export const isGaugesSupported = computed( diff --git a/src/lib/config/celo/tokens.ts b/src/lib/config/celo/tokens.ts index d7a26bc7a..cbc864409 100644 --- a/src/lib/config/celo/tokens.ts +++ b/src/lib/config/celo/tokens.ts @@ -12,7 +12,7 @@ const tokens: TokenConstants = { nativeAsset: '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE', wNativeAsset: '', WETH: '', - BAL: '0x8427bD503dd3169cCC9aFF7326c15258Bc305478', + BAL: '0x8427bd503dd3169ccc9aff7326c15258bc305478', bbaUSD: '', bbaUSDv2: '', rETH: '', diff --git a/src/lib/config/index.ts b/src/lib/config/index.ts index 1c50342e8..cb2b44e84 100644 --- a/src/lib/config/index.ts +++ b/src/lib/config/index.ts @@ -10,12 +10,12 @@ import gnosisChain from './gnosis-chain'; // import polygon from './polygon'; // import sepolia from './sepolia'; // import zkevm from './zkevm'; -// import telos from './telos'; +import telos from './telos'; // import telosTestnet from './telos-testnet'; import celo from './celo'; const config: Record = { - // [Network.TELOS]: telos, + [Network.TELOS]: telos, // [Network.TELOSTESTNET]: telosTestnet, [Network.CELO]: celo, // [Network.MAINNET]: mainnet, diff --git a/src/lib/utils/index.ts b/src/lib/utils/index.ts index ecc0c3d05..a75264033 100644 --- a/src/lib/utils/index.ts +++ b/src/lib/utils/index.ts @@ -145,7 +145,6 @@ export function isSameAddress(address1: string, address2: string): boolean { export function includesAddress(addresses: string[], address: string): boolean { if (!address || !addresses) return false; - console.log('addresses', addresses, 'address', address); addresses = addresses.map(a => (a ? getAddress(a) : '')); return addresses.includes(getAddress(address)); } From b134ef0bd2702009b67e3dde46fba0533a24ffd3 Mon Sep 17 00:00:00 2001 From: stephen <991266+stxphxn@users.noreply.github.com> Date: Wed, 27 Mar 2024 22:56:50 +0700 Subject: [PATCH 05/13] Update rewards --- src/lib/config/telos/rewards.ts | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/lib/config/telos/rewards.ts b/src/lib/config/telos/rewards.ts index d35348f3c..5d44138ee 100644 --- a/src/lib/config/telos/rewards.ts +++ b/src/lib/config/telos/rewards.ts @@ -813,4 +813,33 @@ export const rewards = { decimals: 18, }, }, + 1711584000: { + '0x2d714951f7165a51e8bd61f92d8a979ab0ed4b59000200000000000000000006': { + symbol: 'WTLOS-USDT', + token: '0xD102cE6A4dB07D247fcc28F366A623Df0938CA9E', + tokenSymbol: 'WTLOS', + gauge: '0xa9d436ab58989354a5c3705f24a5130779055e47', + rate: BigInt('500000000000000000000') / BigInt('604800'), + period_finish: 0, + decimals: 18, + }, + '0x058d4893efa235d86cceed5a7eef0809b76c8c66000000000000000000000004': { + symbol: 'USDC-USDT', + token: '0xD102cE6A4dB07D247fcc28F366A623Df0938CA9E', + tokenSymbol: 'WTLOS', + gauge: '0xe4c412962fab7f2d406c43a8da95c68f9d60f24e', + rate: BigInt('500000000000000000000') / BigInt('604800'), + period_finish: 0, + decimals: 18, + }, + '0x9a77bd2edbbb68173275cda967b76e9213949ace000000000000000000000008': { + symbol: 'STLOS-WTLOS', + token: '0xD102cE6A4dB07D247fcc28F366A623Df0938CA9E', + tokenSymbol: 'WTLOS', + gauge: '0xec678e92afe25bc5ba4bc2e1ff386c775270e49e', + rate: BigInt('2000000000000000000000') / BigInt('604800'), + period_finish: 0, + decimals: 18, + }, + }, }; From f3d4d17184b04a69f3262ecc03e097a548ffe487 Mon Sep 17 00:00:00 2001 From: stephen <991266+stxphxn@users.noreply.github.com> Date: Thu, 28 Mar 2024 23:33:42 +0700 Subject: [PATCH 06/13] Add Meter config --- package-lock.json | 28 ++++++++ src/assets/data/contracts/meter.json | 12 ++++ src/lib/config/index.ts | 2 + src/lib/config/meter/contracts.ts | 30 ++++++++ src/lib/config/meter/index.ts | 69 ++++++++++++++++++ src/lib/config/meter/keys.ts | 5 ++ src/lib/config/meter/pools.ts | 64 +++++++++++++++++ src/lib/config/meter/rateProviders.ts | 9 +++ src/lib/config/meter/tokenlists.ts | 14 ++++ src/lib/config/meter/tokens.ts | 33 +++++++++ src/lib/config/types.ts | 1 + src/lib/scripts/addresses-meter.json | 72 +++++++++++++++++++ ...dresses-temp.json => addresses-telos.json} | 0 .../scripts/contract-addresses.generator.ts | 16 ++++- 14 files changed, 353 insertions(+), 2 deletions(-) create mode 100644 src/assets/data/contracts/meter.json create mode 100644 src/lib/config/meter/contracts.ts create mode 100644 src/lib/config/meter/index.ts create mode 100644 src/lib/config/meter/keys.ts create mode 100644 src/lib/config/meter/pools.ts create mode 100644 src/lib/config/meter/rateProviders.ts create mode 100644 src/lib/config/meter/tokenlists.ts create mode 100644 src/lib/config/meter/tokens.ts create mode 100644 src/lib/scripts/addresses-meter.json rename src/lib/scripts/{addresses-temp.json => addresses-telos.json} (100%) diff --git a/package-lock.json b/package-lock.json index b06dd49a7..0fb0c020b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -73,6 +73,7 @@ "clsx": "^2.0.0", "color": "^4.2.3", "color.js": "^1.2.0", + "cross-env": "^7.0.3", "date-fns": "^2.21.1", "debounce-promise": "^3.1.2", "echarts": "^5.3.2", @@ -11700,6 +11701,24 @@ "dev": true, "license": "MIT" }, + "node_modules/cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "bin": { + "cross-env": "src/bin/cross-env.js", + "cross-env-shell": "src/bin/cross-env-shell.js" + }, + "engines": { + "node": ">=10.14", + "npm": ">=6", + "yarn": ">=1" + } + }, "node_modules/cross-fetch": { "version": "3.1.5", "dev": true, @@ -38029,6 +38048,15 @@ "version": "1.1.1", "dev": true }, + "cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.1" + } + }, "cross-fetch": { "version": "3.1.5", "dev": true, diff --git a/src/assets/data/contracts/meter.json b/src/assets/data/contracts/meter.json new file mode 100644 index 000000000..71e6b81d9 --- /dev/null +++ b/src/assets/data/contracts/meter.json @@ -0,0 +1,12 @@ +{ + "Authorizer": "0xA99e6dA471b63D1F23509A2141f9c3a76EF1f8ec", + "BalancerHelpers": "0xcA1e43769c7627889F465cC56C33D6673650364e", + "ComposableStablePoolFactory": "0x7aa0DBFaCa97734F4E4Ae5DF0E3f2f957D76018F", + "MockComposableStablePool": "0x4f2E1EBaa28e1053234d837e032536Dc39EA15D5", + "MockWeightedPool": "0x2659c88DDB5B03224E10404258F3F2d2F1c85C60", + "ProtocolFeePercentagesProvider": "0x4EEA4e1bA940BD93A98A674946905B36831d01D5", + "ProtocolFeesCollector": "0xb6bbC092FE2cEAbe696642382713e976d3db3AF1", + "SymmToken": "0x6ab5792b887Eb3F63A8915240F926e829982d3F5", + "Vault": "0x913f21E596790aFC6AA45229E9ff8b7d0A473D5A", + "WeightedPoolFactory": "0xbd5A48ED2c877033EF379e342eC9c6fe16dC5710" +} diff --git a/src/lib/config/index.ts b/src/lib/config/index.ts index 3814c2b0c..dfe5688d9 100644 --- a/src/lib/config/index.ts +++ b/src/lib/config/index.ts @@ -11,11 +11,13 @@ import { Config, Network } from './types'; // import sepolia from './sepolia'; // import zkevm from './zkevm'; import telos from './telos'; +import meter from './meter'; import telosTestnet from './telos-testnet'; // import celo from './celo'; const config: Record = { [Network.TELOS]: telos, + [Network.METER]: meter, [Network.TELOSTESTNET]: telosTestnet, // [Network.CELO]: celo, // [Network.MAINNET]: mainnet, diff --git a/src/lib/config/meter/contracts.ts b/src/lib/config/meter/contracts.ts new file mode 100644 index 000000000..0dd393c1d --- /dev/null +++ b/src/lib/config/meter/contracts.ts @@ -0,0 +1,30 @@ +import { Contracts } from '../types'; +import * as meter from '@/assets/data/contracts/meter.json'; + +const contracts: Contracts = { + merkleRedeem: '', + merkleOrchard: '', + merkleOrchardV2: '', + multicall: '0xca11bde05977b3631167028862be2a173976ca11', + authorizer: meter.Authorizer, + vault: meter.Vault, + weightedPoolFactory: meter.WeightedPoolFactory, + stablePoolFactory: meter.ComposableStablePoolFactory, + lidoRelayer: '', + balancerHelpers: meter.BalancerHelpers, + balancerQueries: '', + batchRelayer: '', + veBAL: '', + gaugeController: '', + gaugeFactory: '', + balancerMinter: '', + tokenAdmin: '', + veDelegationProxy: '', + veBALHelpers: '', + feeDistributor: '', + feeDistributorDeprecated: '', + faucet: '', + omniVotingEscrow: '', +}; + +export default contracts; diff --git a/src/lib/config/meter/index.ts b/src/lib/config/meter/index.ts new file mode 100644 index 000000000..bbace7bce --- /dev/null +++ b/src/lib/config/meter/index.ts @@ -0,0 +1,69 @@ +import { Config } from '../types'; +import contracts from './contracts'; +import keys from './keys'; +import pools from './pools'; +import tokenlists from './tokenlists'; +import tokens from './tokens'; +import rateProviders from './rateProviders'; + +const config: Config = { + key: '82', + chainId: 82, + chainName: 'Meter', + name: 'Meter', + shortName: 'meter', + monorepoName: 'meter', + slug: 'meter', + network: 'meter', + trustWalletNetwork: 'meter', + unknown: false, + visibleInUI: true, + testNetwork: false, + rpc: 'https://rpc.meter.io', + ws: ``, + explorer: 'https://explorer.meter.io/', + explorerName: 'Meter Explorer', + subgraph: 'http://graph.meter.io:8000/subgraphs/name/symmetric-meter', + balancerApi: '', + poolsUrlV2: + 'https://storageapi.fleek.co/johngrantuk-team-bucket/poolsV2.json', + subgraphs: { + main: ['http://graph.meter.io:8000/subgraphs/name/symmetric-meter'], + aave: '', + gauge: '', + blocks: '', + }, + bridgeUrl: 'https://passport.meter.io/', + supportsEIP1559: false, + supportsElementPools: false, + blockTime: 1.5, + nativeAsset: { + name: 'MTR', + address: '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE', + symbol: 'MTR', + decimals: 18, + deeplinkId: 'meter', + logoURI: 'tokens/mtr.png', + minTransactionBuffer: '0.1', + }, + thirdParty: { + coingecko: { + nativeAssetId: 'meter', + platformId: 'ethereum', + }, + }, + addresses: { + ...contracts, + }, + pools, + tokens, + keys, + gauges: { + type: 2, + weight: 100, + }, + tokenlists, + rateProviders, +}; + +export default config; diff --git a/src/lib/config/meter/keys.ts b/src/lib/config/meter/keys.ts new file mode 100644 index 000000000..b9731e6b3 --- /dev/null +++ b/src/lib/config/meter/keys.ts @@ -0,0 +1,5 @@ +import { Keys } from '../types'; + +const keys: Keys = {}; + +export default keys; diff --git a/src/lib/config/meter/pools.ts b/src/lib/config/meter/pools.ts new file mode 100644 index 000000000..aee3161c0 --- /dev/null +++ b/src/lib/config/meter/pools.ts @@ -0,0 +1,64 @@ +import { Pools } from '@/types/pools'; + +const pools: Pools = { + IdsMap: { + veBAL: '0xbf0fa44e5611c31429188b7dcc59ffe794d1980e000200000000000000000009', + }, + Pagination: { + PerPage: 15, + PerPool: 15, + PerPoolInitial: 5, + }, + BoostsEnabled: true, + DelegateOwner: '0xa29F1CA1957c164877F6A277C9791ACA3Ad4BD6D', + ZeroAddress: '0x0000000000000000000000000000000000000000', + DynamicFees: { + Gauntlet: [], + }, + BlockList: [], + IncludedPoolTypes: [ + 'Weighted', + 'Stable', + 'MetaStable', + 'LiquidityBootstrapping', + 'Investment', + 'StablePhantom', + 'ComposableStable', + 'Managed', + ], + Stable: { + AllowList: [], + }, + Investment: { + AllowList: [], + }, + Weighted: { + // Only effective after given timestamp here: usePool.ts#createdAfterTimestamp + // see useDisabledJoinPool.ts#nonAllowedWeightedPoolAfterTimestamp for logic. + AllowList: [], + }, + Factories: { + '0xdd58d43a829067129b8c37f1924d31b1896ac0c6': 'weightedPool', // Weighted V5 + '0x98add7dc34a382e188be709a72ca8fcdf7e548db': 'composableStablePool', // ComposableStable V5 + '0x4ed870363d69f0f2c565332342efc68ca82b544b': 'managedPool', + '0x266b53bb135f2dbc324b5c5aa281e84f1c105b26': 'liquidityBootstrappingPool', + }, + Stakable: { + VotingGaugePools: [], + AllowList: [], + }, + Metadata: { + '0x6fbfcf88db1aada31f34215b2a1df7fafb4883e900000000000000000000000c': { + name: 'Symmetric Team Allocation', + hasIcon: false, + }, + }, + Deep: [], + Deprecated: {}, + GaugeMigration: {}, + BoostedApr: [], + DisabledJoins: [], + Issues: {}, +}; + +export default pools; diff --git a/src/lib/config/meter/rateProviders.ts b/src/lib/config/meter/rateProviders.ts new file mode 100644 index 000000000..a2072658f --- /dev/null +++ b/src/lib/config/meter/rateProviders.ts @@ -0,0 +1,9 @@ +import { RateProviders } from '../types'; + +const rateProviders: RateProviders = { + '*': { + '0x0000000000000000000000000000000000000000': true, + }, +}; + +export default rateProviders; diff --git a/src/lib/config/meter/tokenlists.ts b/src/lib/config/meter/tokenlists.ts new file mode 100644 index 000000000..27fd711e9 --- /dev/null +++ b/src/lib/config/meter/tokenlists.ts @@ -0,0 +1,14 @@ +import { TokenListURLMap } from '@/types/TokenList'; + +const tokenlists: TokenListURLMap = { + Balancer: { + Allowlisted: + 'https://raw.githubusercontent.com/centfinance/tokenlists/main/generated/symmetric.tokenlist.json', + }, + External: [ + // 'https://raw.githubusercontent.com/telosnetwork/token-list/main/telosevm.tokenlist.json', + // 'https://raw.githubusercontent.com/swapsicledex/swapsicle-default-token-list/master/swapsicle.tokenlist.json', + ], +}; + +export default tokenlists; diff --git a/src/lib/config/meter/tokens.ts b/src/lib/config/meter/tokens.ts new file mode 100644 index 000000000..5dd357384 --- /dev/null +++ b/src/lib/config/meter/tokens.ts @@ -0,0 +1,33 @@ +import { TokenConstants } from '../types'; + +const tokens: TokenConstants = { + Popular: { + Symbols: ['TSYMM', 'WTLOS', 'USDC', 'USDT', 'STLOS'], + }, + InitialSwapTokens: { + input: '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE', + output: '0x8d97cea50351fb4329d591682b148d43a0c3611b', + }, + Addresses: { + nativeAsset: '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE', + wNativeAsset: '0x160361ce13ec33c993b5cca8f62b6864943eb083', + WETH: '0x160361ce13ec33c993b5cca8f62b6864943eb083', + BAL: '0x6ab5792b887Eb3F63A8915240F926e829982d3F5', + rETH: '', + // wstETH: '0xB4B01216a5Bc8F1C8A33CD990A1239030E60C905', + }, + PriceChainMap: { + /** + * Addresses must be lower case and map from goerli to mainnet, e.g + * [goerli address]: mainnet address + */ + // USDT + '0x5fa41671c48e3c951afc30816947126ccc8c162e': + '0xdac17f958d2ee523a2206206994597c13d831ec7', + // USDC + '0xd86e243fc0007e6226b07c9a50c9d70d78299eb5': + '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', + }, +}; + +export default tokens; diff --git a/src/lib/config/types.ts b/src/lib/config/types.ts index 3f41f19ea..5d6125e06 100644 --- a/src/lib/config/types.ts +++ b/src/lib/config/types.ts @@ -85,6 +85,7 @@ export enum Network { AVALANCHE = 43114, SEPOLIA = 11155111, TELOS = 40, + METER = 82, TELOSTESTNET = 41, CELO = 42220, } diff --git a/src/lib/scripts/addresses-meter.json b/src/lib/scripts/addresses-meter.json new file mode 100644 index 000000000..2ed73d762 --- /dev/null +++ b/src/lib/scripts/addresses-meter.json @@ -0,0 +1,72 @@ +{ + "20210418-authorizer": { + "contracts": [ + { + "name": "Authorizer", + "address": "0xA99e6dA471b63D1F23509A2141f9c3a76EF1f8ec" + } + ], + "status": "ACTIVE" + }, + "20210418-vault": { + "contracts": [ + { + "name": "Vault", + "address": "0x913f21E596790aFC6AA45229E9ff8b7d0A473D5A" + }, + { + "name": "ProtocolFeesCollector", + "address": "0xb6bbC092FE2cEAbe696642382713e976d3db3AF1" + }, + { + "name": "BalancerHelpers", + "address": "0xcA1e43769c7627889F465cC56C33D6673650364e" + } + ], + "status": "ACTIVE" + }, + "20220725-protocol-fee-percentages-provider": { + "contracts": [ + { + "name": "ProtocolFeePercentagesProvider", + "address": "0x4EEA4e1bA940BD93A98A674946905B36831d01D5" + } + ], + "status": "ACTIVE" + }, + "20230320-weighted-pool-v4": { + "contracts": [ + { + "name": "WeightedPoolFactory", + "address": "0xbd5A48ED2c877033EF379e342eC9c6fe16dC5710" + }, + { + "name": "MockWeightedPool", + "address": "0x2659c88DDB5B03224E10404258F3F2d2F1c85C60" + } + ], + "status": "ACTIVE" + }, + "20230711-composable-stable-pool-v5": { + "contracts": [ + { + "name": "ComposableStablePoolFactory", + "address": "0x7aa0DBFaCa97734F4E4Ae5DF0E3f2f957D76018F" + }, + { + "name": "MockComposableStablePool", + "address": "0x4f2E1EBaa28e1053234d837e032536Dc39EA15D5" + } + ], + "status": "ACTIVE" + }, + "20231122-tsymm-token": { + "contracts": [ + { + "name": "SymmToken", + "address": "0x6ab5792b887Eb3F63A8915240F926e829982d3F5" + } + ], + "status": "ACTIVE" + } +} diff --git a/src/lib/scripts/addresses-temp.json b/src/lib/scripts/addresses-telos.json similarity index 100% rename from src/lib/scripts/addresses-temp.json rename to src/lib/scripts/addresses-telos.json diff --git a/src/lib/scripts/contract-addresses.generator.ts b/src/lib/scripts/contract-addresses.generator.ts index 6baf09129..580c15b9f 100644 --- a/src/lib/scripts/contract-addresses.generator.ts +++ b/src/lib/scripts/contract-addresses.generator.ts @@ -46,10 +46,22 @@ type ContractMap = Record; // } // })(); +interface Contract { + name: string; + address: string; +} + +interface AddressValue { + contracts: Contract[]; +} + +type Addresses = Record; + async function generate() { - const network = 'telos'; + const network = 'meter'; + console.log(`Generating contract addresses for network ${network}...`); - const addresses: any = require(`./addresses-temp.json`); + const addresses: Addresses = require(`./addresses-${network}.json`); const contracts: ContractMap = {}; for (const [, value] of Object.entries(addresses)) { From 1dc7a5d28547ffc223127be9f890495fc4a1905d Mon Sep 17 00:00:00 2001 From: stephen <991266+stxphxn@users.noreply.github.com> Date: Tue, 2 Apr 2024 20:00:51 +0700 Subject: [PATCH 07/13] Add meter theme --- package-lock.json | 42 ++------- package.json | 2 +- public/tokens/mtr.png | Bin 0 -> 5980 bytes src/App.vue | 1 + src/assets/css/tailwind.css | 101 +++++++++++++++++++++ src/assets/images/icons/networks/meter.svg | 5 + src/lib/config/meter/index.ts | 2 +- src/lib/config/meter/pools.ts | 23 ++--- 8 files changed, 125 insertions(+), 51 deletions(-) create mode 100644 public/tokens/mtr.png create mode 100644 src/assets/images/icons/networks/meter.svg diff --git a/package-lock.json b/package-lock.json index 0fb0c020b..5b891258b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -42,7 +42,7 @@ "@popperjs/core": "^2.9.2", "@sentry/browser": "^7.17.4", "@sentry/tracing": "^7.17.4", - "@symmetric-v3/sdk": "^1.2.13-beta.1", + "@symmetric-v3/sdk": "^1.2.14-beta.1", "@tanstack/vue-query": "^4.22.0", "@testing-library/jest-dom": "^5.16.1", "@testing-library/vue": "^7.0.0", @@ -73,7 +73,6 @@ "clsx": "^2.0.0", "color": "^4.2.3", "color.js": "^1.2.0", - "cross-env": "^7.0.3", "date-fns": "^2.21.1", "debounce-promise": "^3.1.2", "echarts": "^5.3.2", @@ -6834,9 +6833,9 @@ } }, "node_modules/@symmetric-v3/sdk": { - "version": "1.2.13-beta.1", - "resolved": "https://registry.npmjs.org/@symmetric-v3/sdk/-/sdk-1.2.13-beta.1.tgz", - "integrity": "sha512-bP6997+d/ETOpPpd2R7eir0rv2X8vBGg0jORiVmxDMIAavrwBeFh3FyeT11My09hIdk5bv9tUolme7PUB54yVg==", + "version": "1.2.14-beta.1", + "resolved": "https://registry.npmjs.org/@symmetric-v3/sdk/-/sdk-1.2.14-beta.1.tgz", + "integrity": "sha512-p1vd2ZRLVO5K+4KtRqjwtNcSYpqMYwx/JeZd+/kZ31PKfpm/b62td8Mqi+d052YpQo7vSQDFMdPmrVgzC6u+wg==", "dev": true, "dependencies": { "@balancer-labs/sor": "^4.1.1-beta.16", @@ -11701,24 +11700,6 @@ "dev": true, "license": "MIT" }, - "node_modules/cross-env": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", - "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.1" - }, - "bin": { - "cross-env": "src/bin/cross-env.js", - "cross-env-shell": "src/bin/cross-env-shell.js" - }, - "engines": { - "node": ">=10.14", - "npm": ">=6", - "yarn": ">=1" - } - }, "node_modules/cross-fetch": { "version": "3.1.5", "dev": true, @@ -34348,9 +34329,9 @@ } }, "@symmetric-v3/sdk": { - "version": "1.2.13-beta.1", - "resolved": "https://registry.npmjs.org/@symmetric-v3/sdk/-/sdk-1.2.13-beta.1.tgz", - "integrity": "sha512-bP6997+d/ETOpPpd2R7eir0rv2X8vBGg0jORiVmxDMIAavrwBeFh3FyeT11My09hIdk5bv9tUolme7PUB54yVg==", + "version": "1.2.14-beta.1", + "resolved": "https://registry.npmjs.org/@symmetric-v3/sdk/-/sdk-1.2.14-beta.1.tgz", + "integrity": "sha512-p1vd2ZRLVO5K+4KtRqjwtNcSYpqMYwx/JeZd+/kZ31PKfpm/b62td8Mqi+d052YpQo7vSQDFMdPmrVgzC6u+wg==", "dev": true, "requires": { "@balancer-labs/sor": "^4.1.1-beta.16", @@ -38048,15 +38029,6 @@ "version": "1.1.1", "dev": true }, - "cross-env": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", - "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.1" - } - }, "cross-fetch": { "version": "3.1.5", "dev": true, diff --git a/package.json b/package.json index 891d0abd2..c94e0267b 100644 --- a/package.json +++ b/package.json @@ -74,7 +74,7 @@ "@popperjs/core": "^2.9.2", "@sentry/browser": "^7.17.4", "@sentry/tracing": "^7.17.4", - "@symmetric-v3/sdk": "^1.2.13-beta.1", + "@symmetric-v3/sdk": "^1.2.14-beta.1", "@tanstack/vue-query": "^4.22.0", "@testing-library/jest-dom": "^5.16.1", "@testing-library/vue": "^7.0.0", diff --git a/public/tokens/mtr.png b/public/tokens/mtr.png new file mode 100644 index 0000000000000000000000000000000000000000..06c08282071d11aee22ee72615a27767a322d578 GIT binary patch literal 5980 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 literal 0 HcmV?d00001 diff --git a/src/App.vue b/src/App.vue index 0e2afea44..dda6eb804 100644 --- a/src/App.vue +++ b/src/App.vue @@ -87,6 +87,7 @@ const themeMap = { celo: 'celo', sepolia: 'celo', 'gnosis-chain': 'gnosis-chain', + meter: 'meter', }; // Function to update theme based on the route slug const updateTheme = () => { diff --git a/src/assets/css/tailwind.css b/src/assets/css/tailwind.css index 35d9ce3e2..3af03016d 100644 --- a/src/assets/css/tailwind.css +++ b/src/assets/css/tailwind.css @@ -401,6 +401,107 @@ html[data-theme='gnosis-chain'] { --color-orange-900: 120, 53, 15; } +html[data-theme='meter'] { + /* Gray */ + + /* Gray scale with a navy touch */ + --color-gray-50: 242, 242, 245; /* Lightest, almost white with a hint of blue */ + --color-gray-100: 230, 230, 240; /* Very light gray with a subtle blue undertone */ + --color-gray-200: 215, 215, 230; /* Clear, light gray-blue */ + --color-gray-300: 190, 190, 210; /* Brighter, leading up to the deeper shades */ + --color-gray-400: 150, 150, 180; /* Transitioning more into the blue spectrum */ + --color-gray-500: 110, 110, 150; /* Slightly desaturated blue */ + --color-gray-600: 80, 80, 120; /* Deeper blue, maintaining a grayish vibe */ + --color-gray-700: 50, 50, 90; /* Darker blue-gray, getting closer to navy */ + --color-gray-800: 30, 30, 60; /* Deep navy, still a bit of lightness */ + --color-gray-850: 20, 25, 53; /* Very dark navy, almost matching --color-gray-900 */ + --color-gray-900: 10, 25, 47; /* New, very dark navy blue */ + + /* Primary */ + --color-primary-50: 83, 85, 94; + --color-primary-100: 73, 75, 84; + --color-primary-200: 63, 65, 74; + --color-primary-300: 53, 55, 64; + --color-primary-400: 43, 45, 54; + --color-primary-500: 33, 35, 44; + --color-primary-600: 23, 25, 34; + --color-primary-700: 13, 15, 24; + --color-primary-800: 3, 5, 14; + --color-primary-900: 0, 0, 4; + + /* Primary Dark */ + --color-primary-dark-50: 106, 124, 255; + --color-primary-dark-100: 96, 114, 255; + --color-primary-dark-200: 86, 104, 255; + --color-primary-dark-300: 76, 94, 255; + --color-primary-dark-400: 66, 84, 255; + --color-primary-dark-500: 56, 74, 255; + --color-primary-dark-600: 46, 64, 245; + --color-primary-dark-700: 36, 54, 235; + --color-primary-dark-800: 26, 44, 225; + --color-primary-dark-900: 16, 34, 215; + + /* Blue */ + --color-blue-50: 250, 255, 255; /* Lightest, almost white with a hint of blue */ + --color-blue-100: 235, 245, 255; /* Very light blue */ + --color-blue-200: 215, 235, 255; /* Clear, light blue */ + --color-blue-300: 185, 215, 255; /* Brighter, leading up to the vibrant 400 */ + --color-blue-400: 51, 153, 255; /* New, much brighter base color */ + --color-blue-500: 41, 143, 235; /* Slightly less bright for contrast */ + --color-blue-600: 31, 133, 215; /* Maintaining a vibrant gradient */ + --color-blue-700: 21, 123, 195; /* Darker yet still bright */ + --color-blue-800: 11, 113, 175; /* Deeper blue, retaining brightness */ + --color-blue-900: 1, 103, 155; /* Darkest in the series, still vivid */ + + /* Transition from Pink to Navy Blue */ + --color-pink-50: 253, 242, 255; /* Lightest, almost white with a hint of pink */ + --color-pink-100: 252, 231, 255; /* Very light pink */ + --color-pink-200: 251, 207, 255; /* Clear, light pink */ + --color-pink-300: 245, 178, 255; /* Transitioning towards blue */ + --color-pink-400: 238, 150, 255; /* Deeper pink, edging into purple */ + --color-pink-500: 231, 122, 220; /* Purple, as a bridge to darker blue */ + --color-pink-600: 0, 31, 63; /* Navy Blue, the new base color */ + --color-pink-700: 0, 28, 57; /* Slightly darker navy */ + --color-pink-800: 0, 25, 51; /* Even darker, maintaining the gradient */ + --color-pink-900: 0, 22, 45; /* Darkest in the series, deep navy */ + + /* Transition from Light Blue to Navy Blue */ + --color-purple-50: 240, 245, 255; /* Lightest blue, almost white */ + --color-purple-100: 230, 235, 255; /* Very light blue */ + --color-purple-200: 210, 220, 255; /* Clear, light blue */ + --color-purple-300: 180, 200, 255; /* Brighter, leading up to the vibrant mid-tones */ + --color-purple-400: 150, 170, 255; /* Transition shade towards deeper blue */ + --color-purple-500: 120, 140, 255; /* Adjusted to fit the new base color, still quite bright */ + --color-purple-600: 0, 31, 63; /* Navy Blue, the new base color */ + --color-purple-700: 0, 28, 57; /* Slightly darker navy */ + --color-purple-800: 0, 25, 51; /* Darker, maintaining the gradient */ + --color-purple-900: 0, 22, 45; /* Darkest in the series, deep navy */ + + /* Yellow */ + --color-yellow-50: 255, 255, 240; /* Lightest, almost white with a hint of yellow */ + --color-yellow-100: 255, 255, 230; /* Very light yellow */ + --color-yellow-200: 255, 255, 210; /* Clear, light yellow */ + --color-yellow-300: 255, 255, 190; /* Brighter, leading up to the vibrant 400 */ + --color-yellow-400: 255, 255, 170; /* New, much brighter base color */ + --color-yellow-500: 255, 250, 150; /* Adjusted to fit the new base color */ + --color-yellow-600: 255, 245, 130; /* Brighter, maintaining the gradient */ + --color-yellow-700: 255, 240, 110; /* Incrementally brighter */ + --color-yellow-800: 255, 235, 90; /* Keeping the brightness up */ + --color-yellow-900: 255, 230, 70; /* Brightest deep shade */ + + /* Orange */ + --color-orange-50: 255, 251, 235; + --color-orange-100: 254, 243, 199; + --color-orange-200: 253, 230, 138; + --color-orange-300: 252, 211, 77; + --color-orange-400: 251, 191, 36; + --color-orange-500: 245, 158, 11; + --color-orange-600: 217, 119, 6; + --color-orange-700: 180, 83, 9; + --color-orange-800: 146, 64, 14; + --color-orange-900: 120, 53, 15; +} + @layer utilities { .text-primary { @apply text-gray-900 dark:text-gray-100; diff --git a/src/assets/images/icons/networks/meter.svg b/src/assets/images/icons/networks/meter.svg new file mode 100644 index 000000000..a89464115 --- /dev/null +++ b/src/assets/images/icons/networks/meter.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/lib/config/meter/index.ts b/src/lib/config/meter/index.ts index bbace7bce..308e16b54 100644 --- a/src/lib/config/meter/index.ts +++ b/src/lib/config/meter/index.ts @@ -19,7 +19,7 @@ const config: Config = { unknown: false, visibleInUI: true, testNetwork: false, - rpc: 'https://rpc.meter.io', + rpc: 'https://meter.blockpi.network/v1/rpc/216bb10a3653b0a8131afee4f6cf1982945022b4', ws: ``, explorer: 'https://explorer.meter.io/', explorerName: 'Meter Explorer', diff --git a/src/lib/config/meter/pools.ts b/src/lib/config/meter/pools.ts index aee3161c0..28250e93d 100644 --- a/src/lib/config/meter/pools.ts +++ b/src/lib/config/meter/pools.ts @@ -2,7 +2,7 @@ import { Pools } from '@/types/pools'; const pools: Pools = { IdsMap: { - veBAL: '0xbf0fa44e5611c31429188b7dcc59ffe794d1980e000200000000000000000009', + veBAL: '0x0000000000000000000000000000000000000000', }, Pagination: { PerPage: 15, @@ -10,12 +10,12 @@ const pools: Pools = { PerPoolInitial: 5, }, BoostsEnabled: true, - DelegateOwner: '0xa29F1CA1957c164877F6A277C9791ACA3Ad4BD6D', + DelegateOwner: '0x51db3Cc6431fe6297270360dE47345B0149E1F51', ZeroAddress: '0x0000000000000000000000000000000000000000', DynamicFees: { Gauntlet: [], }, - BlockList: [], + BlockList: [''], IncludedPoolTypes: [ 'Weighted', 'Stable', @@ -27,7 +27,9 @@ const pools: Pools = { 'Managed', ], Stable: { - AllowList: [], + AllowList: [ + '0x1ff97abe4c5a4b7ff90949b637e71626bef0dcee000000000000000000000002', //USDT-USDC-suUSD + ], }, Investment: { AllowList: [], @@ -38,21 +40,14 @@ const pools: Pools = { AllowList: [], }, Factories: { - '0xdd58d43a829067129b8c37f1924d31b1896ac0c6': 'weightedPool', // Weighted V5 - '0x98add7dc34a382e188be709a72ca8fcdf7e548db': 'composableStablePool', // ComposableStable V5 - '0x4ed870363d69f0f2c565332342efc68ca82b544b': 'managedPool', - '0x266b53bb135f2dbc324b5c5aa281e84f1c105b26': 'liquidityBootstrappingPool', + '0xbd5A48ED2c877033EF379e342eC9c6fe16dC5710': 'weightedPool', // Weighted V5 + '0x7aa0DBFaCa97734F4E4Ae5DF0E3f2f957D76018F': 'composableStablePool', // ComposableStable V5 }, Stakable: { VotingGaugePools: [], AllowList: [], }, - Metadata: { - '0x6fbfcf88db1aada31f34215b2a1df7fafb4883e900000000000000000000000c': { - name: 'Symmetric Team Allocation', - hasIcon: false, - }, - }, + Metadata: {}, Deep: [], Deprecated: {}, GaugeMigration: {}, From 8f28f605cc4e88be76c5ad400412b12fbf047c7e Mon Sep 17 00:00:00 2001 From: stephen <991266+stxphxn@users.noreply.github.com> Date: Wed, 3 Apr 2024 19:22:04 +0700 Subject: [PATCH 08/13] =?UTF-8?q?Add=20initial=20pools=20=E2=9C=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/lib/config/meter/pools.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/lib/config/meter/pools.ts b/src/lib/config/meter/pools.ts index 28250e93d..23c873e30 100644 --- a/src/lib/config/meter/pools.ts +++ b/src/lib/config/meter/pools.ts @@ -37,7 +37,9 @@ const pools: Pools = { Weighted: { // Only effective after given timestamp here: usePool.ts#createdAfterTimestamp // see useDisabledJoinPool.ts#nonAllowedWeightedPoolAfterTimestamp for logic. - AllowList: [], + AllowList: [ + '0xd9fe77653c2b75cf3442c365a3f1f9c7ed1612c7000200000000000000000003', //MTRG/USDT-USDC-suUSD + ], }, Factories: { '0xbd5A48ED2c877033EF379e342eC9c6fe16dC5710': 'weightedPool', // Weighted V5 @@ -48,7 +50,9 @@ const pools: Pools = { AllowList: [], }, Metadata: {}, - Deep: [], + Deep: [ + '0xd9fe77653c2b75cf3442c365a3f1f9c7ed1612c7000200000000000000000003', //MTRG/USDT-USDC-suUSD + ], Deprecated: {}, GaugeMigration: {}, BoostedApr: [], From 2e1677ccfea910ff46259fe22a96f92086a4f496 Mon Sep 17 00:00:00 2001 From: stephen <991266+stxphxn@users.noreply.github.com> Date: Thu, 4 Apr 2024 01:52:47 +0700 Subject: [PATCH 09/13] update --- src/lib/config/index.ts | 12 ++------ src/lib/config/telos/rewards.ts | 29 ++++++++++++++++++ .../pool/decorators/pool.decorator.ts | 30 ++++++++++--------- 3 files changed, 47 insertions(+), 24 deletions(-) diff --git a/src/lib/config/index.ts b/src/lib/config/index.ts index cb2b44e84..3d5cd4fd8 100644 --- a/src/lib/config/index.ts +++ b/src/lib/config/index.ts @@ -13,21 +13,13 @@ import gnosisChain from './gnosis-chain'; import telos from './telos'; // import telosTestnet from './telos-testnet'; import celo from './celo'; +import meter from './meter'; const config: Record = { [Network.TELOS]: telos, - // [Network.TELOSTESTNET]: telosTestnet, [Network.CELO]: celo, - // [Network.MAINNET]: mainnet, - // [Network.GOERLI]: goerli, - // [Network.POLYGON]: polygon, - // [Network.ARBITRUM]: arbitrum, - // [Network.OPTIMISM]: optimism, [Network.GNOSIS]: gnosisChain, - // [Network.ZKEVM]: zkevm, - // [Network.AVALANCHE]: avalanche, - // [Network.SEPOLIA]: sepolia, - // [Network.BASE]: base, + [Network.METER]: meter, }; export default config; diff --git a/src/lib/config/telos/rewards.ts b/src/lib/config/telos/rewards.ts index 5d44138ee..1d6f8a75c 100644 --- a/src/lib/config/telos/rewards.ts +++ b/src/lib/config/telos/rewards.ts @@ -842,4 +842,33 @@ export const rewards = { decimals: 18, }, }, + 1712188800: { + '0x2d714951f7165a51e8bd61f92d8a979ab0ed4b59000200000000000000000006': { + symbol: 'WTLOS-USDT', + token: '0xD102cE6A4dB07D247fcc28F366A623Df0938CA9E', + tokenSymbol: 'WTLOS', + gauge: '0xa9d436ab58989354a5c3705f24a5130779055e47', + rate: BigInt('500000000000000000000') / BigInt('604800'), + period_finish: 0, + decimals: 18, + }, + '0x058d4893efa235d86cceed5a7eef0809b76c8c66000000000000000000000004': { + symbol: 'USDC-USDT', + token: '0xD102cE6A4dB07D247fcc28F366A623Df0938CA9E', + tokenSymbol: 'WTLOS', + gauge: '0xe4c412962fab7f2d406c43a8da95c68f9d60f24e', + rate: BigInt('500000000000000000000') / BigInt('604800'), + period_finish: 0, + decimals: 18, + }, + '0x9a77bd2edbbb68173275cda967b76e9213949ace000000000000000000000008': { + symbol: 'STLOS-WTLOS', + token: '0xD102cE6A4dB07D247fcc28F366A623Df0938CA9E', + tokenSymbol: 'WTLOS', + gauge: '0xec678e92afe25bc5ba4bc2e1ff386c775270e49e', + rate: BigInt('2000000000000000000000') / BigInt('604800'), + period_finish: 0, + decimals: 18, + }, + }, }; diff --git a/src/services/pool/decorators/pool.decorator.ts b/src/services/pool/decorators/pool.decorator.ts index 08144b2d7..cca394b94 100644 --- a/src/services/pool/decorators/pool.decorator.ts +++ b/src/services/pool/decorators/pool.decorator.ts @@ -6,6 +6,7 @@ import { TokenInfoMap } from '@/types/TokenList'; import PoolService from '../pool.service'; import { PoolMulticaller } from './pool.multicaller'; import axios from 'axios'; +import { configService } from '@/services/config/config.service'; /** * @summary Decorates a set of pools with additonal data. @@ -21,26 +22,28 @@ export class PoolDecorator { tokens: TokenInfoMap, fullDecoration = true ): Promise { - const rewardData: any = localStorage.getItem('REWARD_PRICE'); - if (rewardData) { - const { timestamp } = JSON.parse(rewardData); - if (isPriceOutdated(timestamp)) { + if (configService.network.chainId === 40) { + const rewardData: any = localStorage.getItem('REWARD_PRICE'); + if (rewardData) { + const { timestamp } = JSON.parse(rewardData); + if (isPriceOutdated(timestamp)) { + setRewardPriceInLocalStorage() + .then(() => { + console.log('REWARD_PRICE has been updated in local storage'); + }) + .catch(error => { + console.error('Error:', error); + }); + } + } else { setRewardPriceInLocalStorage() .then(() => { - console.log('REWARD_PRICE has been updated in local storage'); + console.log('REWARD_PRICE has been set in local storage'); }) .catch(error => { console.error('Error:', error); }); } - } else { - setRewardPriceInLocalStorage() - .then(() => { - console.log('REWARD_PRICE has been set in local storage'); - }) - .catch(error => { - console.error('Error:', error); - }); } const processedPools = this.pools.map(pool => { const poolService = new this.poolServiceClass(pool); @@ -63,7 +66,6 @@ export class PoolDecorator { // decoration of them if the pool came from the API. if (fullDecoration) { const poolSnapshot = poolSnapshots.find(p => p.id === pool.id); - console.log(poolSnapshot); poolService.setFeesSnapshot(poolSnapshot); poolService.setVolumeSnapshot(poolSnapshot); await poolService.setTotalLiquidity(); From e5fa50e9b5f828af13b68b248ef51f2fb318b7bb Mon Sep 17 00:00:00 2001 From: stephen <991266+stxphxn@users.noreply.github.com> Date: Thu, 4 Apr 2024 19:56:17 +0700 Subject: [PATCH 10/13] Update logos --- index.html | 2 +- package-lock.json | 7 ++++-- package.json | 2 +- public/{favicon.ico => celo-favicon.ico} | Bin public/celo-favicon.png | Bin 0 -> 5575 bytes public/gnosis-chain-favicon.png | Bin 0 -> 2096 bytes public/images/logos/celo-logo.svg | 29 ++++++++++++++++++++++ public/images/logos/gnosis-chain-logo.svg | 6 +++++ public/images/logos/meter-logo.svg | 29 ++++++++++++++++++++++ public/images/logos/telos-logo.svg | 6 +++++ public/meter-favicon.png | Bin 0 -> 4783 bytes public/telos-favicon.png | Bin 0 -> 1933 bytes src/components/images/AppIcon.vue | 16 ++++++------ src/composables/useNetwork.ts | 3 ++- src/composables/usePoolHelpers.ts | 5 ++-- src/lib/config/meter/tokens.ts | 5 ++-- src/pages/index.vue | 4 ++- src/plugins/router/nav-guards.ts | 3 ++- src/services/config/config.service.ts | 2 +- 19 files changed, 99 insertions(+), 20 deletions(-) rename public/{favicon.ico => celo-favicon.ico} (100%) create mode 100644 public/celo-favicon.png create mode 100644 public/gnosis-chain-favicon.png create mode 100644 public/images/logos/celo-logo.svg create mode 100644 public/images/logos/gnosis-chain-logo.svg create mode 100644 public/images/logos/meter-logo.svg create mode 100644 public/images/logos/telos-logo.svg create mode 100644 public/meter-favicon.png create mode 100644 public/telos-favicon.png diff --git a/index.html b/index.html index 82fccda1b..d562affba 100644 --- a/index.html +++ b/index.html @@ -4,7 +4,7 @@ - + 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/images/logos/gnosis-chain-logo.svg b/public/images/logos/gnosis-chain-logo.svg new file mode 100644 index 000000000..39c2e3a38 --- /dev/null +++ b/public/images/logos/gnosis-chain-logo.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/public/images/logos/meter-logo.svg b/public/images/logos/meter-logo.svg new file mode 100644 index 000000000..873bb1be5 --- /dev/null +++ b/public/images/logos/meter-logo.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/images/logos/telos-logo.svg b/public/images/logos/telos-logo.svg new file mode 100644 index 000000000..d741ec968 --- /dev/null +++ b/public/images/logos/telos-logo.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/public/meter-favicon.png b/public/meter-favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..947912513e39e171a55238843106e7c5fc123f70 GIT binary patch literal 4783 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 T%CLY@00000NkvXXu0mjfUciHm literal 0 HcmV?d00001 diff --git a/src/components/images/AppIcon.vue b/src/components/images/AppIcon.vue index 6a988f060..77b31ee61 100644 --- a/src/components/images/AppIcon.vue +++ b/src/components/images/AppIcon.vue @@ -2,6 +2,7 @@ import { computed } from 'vue'; import useDarkMode from '@/composables/useDarkMode'; +import useNetwork from '@/composables/useNetwork'; /** * TYPES @@ -22,6 +23,12 @@ const props = withDefaults(defineProps(), { */ const { darkMode } = useDarkMode(); +const { networkSlug } = useNetwork(); + +const logo = computed(() => { + return `/images/logos/${networkSlug}-logo.svg`; +}); + // const slug = useNetwork().networkSlug; /** @@ -31,11 +38,6 @@ const useDarkLogo = computed(() => (props.forceDark ? true : darkMode.value)); diff --git a/src/composables/useNetwork.ts b/src/composables/useNetwork.ts index cca2f13ce..d6c6cbd33 100644 --- a/src/composables/useNetwork.ts +++ b/src/composables/useNetwork.ts @@ -37,7 +37,8 @@ export const networkId = ref(NETWORK_ID); export const isMainnet = computed( () => - networkId.value === Network.CELO || networkId.value === Network.TELOSTESTNET + networkId.value === Network.TELOS || + networkId.value === Network.TELOSTESTNET ); export const isPolygon = computed(() => networkId.value === Network.POLYGON); export const isZkevm = computed(() => networkId.value === Network.ZKEVM); diff --git a/src/composables/usePoolHelpers.ts b/src/composables/usePoolHelpers.ts index 2b88aaccb..8b152928a 100644 --- a/src/composables/usePoolHelpers.ts +++ b/src/composables/usePoolHelpers.ts @@ -32,7 +32,7 @@ import { cloneDeep, uniq, uniqWith } from 'lodash'; import { appUrl, getNetworkSlug, - isMainnet, + // isMainnet, isPoolBoostsEnabled, } from './useNetwork'; import useNumbers, { FNumFormats, numF } from './useNumbers'; @@ -792,8 +792,7 @@ export function usePoolHelpers(pool: Ref | Ref) { (): boolean => !!pool.value && isWrappedNativeAsset(pool.value) ); const isMainnetWstETHPool = computed( - (): boolean => - !!pool.value && includesWstEth(pool.value.tokensList) && isMainnet.value + (): boolean => !!pool.value && includesWstEth(pool.value.tokensList) // && isMainnet.value ); const poolJoinTokens = computed((): string[] => diff --git a/src/lib/config/meter/tokens.ts b/src/lib/config/meter/tokens.ts index 5dd357384..6a3e7893a 100644 --- a/src/lib/config/meter/tokens.ts +++ b/src/lib/config/meter/tokens.ts @@ -2,7 +2,7 @@ import { TokenConstants } from '../types'; const tokens: TokenConstants = { Popular: { - Symbols: ['TSYMM', 'WTLOS', 'USDC', 'USDT', 'STLOS'], + Symbols: ['WMTR', 'MTRG', 'USDC.eth', 'USDT.eth', 'mSYMM'], }, InitialSwapTokens: { input: '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE', @@ -14,7 +14,8 @@ const tokens: TokenConstants = { WETH: '0x160361ce13ec33c993b5cca8f62b6864943eb083', BAL: '0x6ab5792b887Eb3F63A8915240F926e829982d3F5', rETH: '', - // wstETH: '0xB4B01216a5Bc8F1C8A33CD990A1239030E60C905', + stETH: '0x215d603293357ca222be92a1bf75eec38def0aad', + wstETH: '0xe2de616fbd8cb9180b26fcfb1b761a232fe56717', }, PriceChainMap: { /** diff --git a/src/pages/index.vue b/src/pages/index.vue index 80e9af80b..fc98e08de 100644 --- a/src/pages/index.vue +++ b/src/pages/index.vue @@ -195,7 +195,9 @@ watch(poolTypeFilter, newPoolTypeFilter => { }); onBeforeMount(async () => { - await getTokenPrices(); + if (networkSlug === 'telos') { + await getTokenPrices(); + } }); diff --git a/src/plugins/router/nav-guards.ts b/src/plugins/router/nav-guards.ts index 0e633a751..a17d1f21f 100644 --- a/src/plugins/router/nav-guards.ts +++ b/src/plugins/router/nav-guards.ts @@ -1,4 +1,5 @@ import { ref } from 'vue'; +import { useFavicon } from '@vueuse/core'; import { // getRedirectUrlFor, handleNetworkSlug, @@ -92,7 +93,7 @@ function applyNetworkPathRedirects(router: Router): Router { const networkChangeCallback = () => { hardRedirectTo(`/#${to.fullPath}`); }; - + useFavicon(`/${networkSlugFromUrl}-favicon.png`); handleNetworkSlug( networkSlugFromUrl, noNetworkChangeCallback, diff --git a/src/services/config/config.service.ts b/src/services/config/config.service.ts index 226ee2aad..5ad68947f 100644 --- a/src/services/config/config.service.ts +++ b/src/services/config/config.service.ts @@ -21,7 +21,7 @@ export default class ConfigService { public get env(): Env { return { APP_ENV: import.meta.env.VITE_ENV || 'development', - APP_DOMAIN: import.meta.env.VITE_DOMAIN || 'telos.symm.fi', + APP_DOMAIN: import.meta.env.VITE_DOMAIN || 'app.symm.fi', APP_HOST: import.meta.env.VITE_HOST || 'symm.fi', API_URL: import.meta.env.VITE_API_URL || 'https://api-v3.balancer.fi/graphql', From 9657112c55972e7497cb422d18df0abde6becb4b Mon Sep 17 00:00:00 2001 From: stephen <991266+stxphxn@users.noreply.github.com> Date: Sat, 6 Apr 2024 14:16:53 +0700 Subject: [PATCH 11/13] Add subgraph --- src/lib/config/meter/index.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/lib/config/meter/index.ts b/src/lib/config/meter/index.ts index 308e16b54..94757d470 100644 --- a/src/lib/config/meter/index.ts +++ b/src/lib/config/meter/index.ts @@ -23,12 +23,15 @@ const config: Config = { ws: ``, explorer: 'https://explorer.meter.io/', explorerName: 'Meter Explorer', - subgraph: 'http://graph.meter.io:8000/subgraphs/name/symmetric-meter', + subgraph: + 'https://graph-meter.voltswap.finance/subgraphs/name/symmetric-meter', balancerApi: '', poolsUrlV2: 'https://storageapi.fleek.co/johngrantuk-team-bucket/poolsV2.json', subgraphs: { - main: ['http://graph.meter.io:8000/subgraphs/name/symmetric-meter'], + main: [ + 'https://graph-meter.voltswap.finance/subgraphs/name/symmetric-meter', + ], aave: '', gauge: '', blocks: '', From 6bec2dd14ae8fa49b5ffa846f4856ac485c4425b Mon Sep 17 00:00:00 2001 From: stephen <991266+stxphxn@users.noreply.github.com> Date: Mon, 8 Apr 2024 19:27:10 +0700 Subject: [PATCH 12/13] Add Relayer --- src/assets/data/contracts/meter.json | 13 ++++- src/lib/config/meter/contracts.ts | 4 +- src/lib/config/meter/pools.ts | 4 +- src/lib/scripts/addresses-meter.json | 81 +++++++++++++++++++++++++++- 4 files changed, 96 insertions(+), 6 deletions(-) diff --git a/src/assets/data/contracts/meter.json b/src/assets/data/contracts/meter.json index 71e6b81d9..c37a2b942 100644 --- a/src/assets/data/contracts/meter.json +++ b/src/assets/data/contracts/meter.json @@ -1,12 +1,23 @@ { "Authorizer": "0xA99e6dA471b63D1F23509A2141f9c3a76EF1f8ec", + "AuthorizerAdaptor": "0xD37f767df06fC690B0C24716D46Ca4db04b34c1b", + "AuthorizerAdaptorEntrypoint": "0xbdfBEB1afcB6411d91A8dCCfC0ce293a53a20542", + "AuthorizerWithAdaptorValidation": "0x5cbA76e20467742BCbbB38D2d14e16B66C2CAc0a", "BalancerHelpers": "0xcA1e43769c7627889F465cC56C33D6673650364e", + "BalancerMinter": "0x18730De270BBD50C13430fAAF20BD96A491c0de1", + "BalancerQueries": "0x90FA60B7dbD665978d0a686147A894589BEB8281", + "BalancerRelayer": "0xB35B39Be5B520E40Ad67435168Cfd3DA86B1ED55", + "BatchRelayerLibrary": "0x61e6106CE69DdFDda28AaE767d889aF1E396d32a", + "BatchRelayerQueryLibrary": "0x65b457d134EE5Ba6a5De9202835E0523d2424E3E", "ComposableStablePoolFactory": "0x7aa0DBFaCa97734F4E4Ae5DF0E3f2f957D76018F", + "GaugeController": "0xf6b4173Fd50c7DBdfa50f0D2EEd1207c02C31E02", "MockComposableStablePool": "0x4f2E1EBaa28e1053234d837e032536Dc39EA15D5", "MockWeightedPool": "0x2659c88DDB5B03224E10404258F3F2d2F1c85C60", + "MSYMMTokenAdmin": "0x694d28317F8D8c41D3D471687D92695A187D7f81", "ProtocolFeePercentagesProvider": "0x4EEA4e1bA940BD93A98A674946905B36831d01D5", "ProtocolFeesCollector": "0xb6bbC092FE2cEAbe696642382713e976d3db3AF1", - "SymmToken": "0x6ab5792b887Eb3F63A8915240F926e829982d3F5", + "SymmToken": "0x663345e09F4F4437F3D5df39BA5c2B5690532206", "Vault": "0x913f21E596790aFC6AA45229E9ff8b7d0A473D5A", + "VotingEscrow": "0xF533A5C6B5d24831E138d66Fb88F28dc72fAFE9a", "WeightedPoolFactory": "0xbd5A48ED2c877033EF379e342eC9c6fe16dC5710" } diff --git a/src/lib/config/meter/contracts.ts b/src/lib/config/meter/contracts.ts index 0dd393c1d..a8d425006 100644 --- a/src/lib/config/meter/contracts.ts +++ b/src/lib/config/meter/contracts.ts @@ -12,8 +12,8 @@ const contracts: Contracts = { stablePoolFactory: meter.ComposableStablePoolFactory, lidoRelayer: '', balancerHelpers: meter.BalancerHelpers, - balancerQueries: '', - batchRelayer: '', + balancerQueries: meter.PoolDataQueries, + batchRelayer: meter.BalancerRelayer, veBAL: '', gaugeController: '', gaugeFactory: '', diff --git a/src/lib/config/meter/pools.ts b/src/lib/config/meter/pools.ts index 23c873e30..077cf9736 100644 --- a/src/lib/config/meter/pools.ts +++ b/src/lib/config/meter/pools.ts @@ -42,8 +42,8 @@ const pools: Pools = { ], }, Factories: { - '0xbd5A48ED2c877033EF379e342eC9c6fe16dC5710': 'weightedPool', // Weighted V5 - '0x7aa0DBFaCa97734F4E4Ae5DF0E3f2f957D76018F': 'composableStablePool', // ComposableStable V5 + '0xbd5a48ed2c877033ef379e342ec9c6fe16dc5710': 'weightedPool', // Weighted V5 + '0x7aa0dbfaca97734f4e4ae5df0e3f2f957d76018f': 'composableStablePool', // ComposableStable V5 }, Stakable: { VotingGaugePools: [], diff --git a/src/lib/scripts/addresses-meter.json b/src/lib/scripts/addresses-meter.json index 2ed73d762..1ced5e440 100644 --- a/src/lib/scripts/addresses-meter.json +++ b/src/lib/scripts/addresses-meter.json @@ -25,6 +25,50 @@ ], "status": "ACTIVE" }, + "20220325-authorizer-adaptor": { + "contracts": [ + { + "name": "AuthorizerAdaptor", + "address": "0xD37f767df06fC690B0C24716D46Ca4db04b34c1b" + } + ], + "status": "ACTIVE" + }, + "20220325-balancer-token-admin": { + "contracts": [ + { + "name": "MSYMMTokenAdmin", + "address": "0x694d28317F8D8c41D3D471687D92695A187D7f81" + } + ], + "status": "ACTIVE" + }, + "20220325-gauge-controller": { + "contracts": [ + { + "name": "VotingEscrow", + "address": "0xF533A5C6B5d24831E138d66Fb88F28dc72fAFE9a" + }, + { + "name": "GaugeController", + "address": "0xf6b4173Fd50c7DBdfa50f0D2EEd1207c02C31E02" + }, + { + "name": "BalancerMinter", + "address": "0x18730De270BBD50C13430fAAF20BD96A491c0de1" + } + ], + "status": "ACTIVE" + }, + "20220721-balancer-queries": { + "contracts": [ + { + "name": "BalancerQueries", + "address": "0x90FA60B7dbD665978d0a686147A894589BEB8281" + } + ], + "status": "ACTIVE" + }, "20220725-protocol-fee-percentages-provider": { "contracts": [ { @@ -34,6 +78,15 @@ ], "status": "ACTIVE" }, + "20221124-authorizer-adaptor-entrypoint": { + "contracts": [ + { + "name": "AuthorizerAdaptorEntrypoint", + "address": "0xbdfBEB1afcB6411d91A8dCCfC0ce293a53a20542" + } + ], + "status": "ACTIVE" + }, "20230320-weighted-pool-v4": { "contracts": [ { @@ -47,6 +100,15 @@ ], "status": "ACTIVE" }, + "20230414-authorizer-wrapper": { + "contracts": [ + { + "name": "AuthorizerWithAdaptorValidation", + "address": "0x5cbA76e20467742BCbbB38D2d14e16B66C2CAc0a" + } + ], + "status": "ACTIVE" + }, "20230711-composable-stable-pool-v5": { "contracts": [ { @@ -60,11 +122,28 @@ ], "status": "ACTIVE" }, + "20231031-batch-relayer-v6": { + "contracts": [ + { + "name": "BatchRelayerLibrary", + "address": "0x61e6106CE69DdFDda28AaE767d889aF1E396d32a" + }, + { + "name": "BatchRelayerQueryLibrary", + "address": "0x65b457d134EE5Ba6a5De9202835E0523d2424E3E" + }, + { + "name": "BalancerRelayer", + "address": "0xB35B39Be5B520E40Ad67435168Cfd3DA86B1ED55" + } + ], + "status": "ACTIVE" + }, "20231122-tsymm-token": { "contracts": [ { "name": "SymmToken", - "address": "0x6ab5792b887Eb3F63A8915240F926e829982d3F5" + "address": "0x663345e09F4F4437F3D5df39BA5c2B5690532206" } ], "status": "ACTIVE" From 4ef4c0f5930993e5be94781d4f6643865accaeb8 Mon Sep 17 00:00:00 2001 From: stephen <991266+stxphxn@users.noreply.github.com> Date: Mon, 8 Apr 2024 19:50:29 +0700 Subject: [PATCH 13/13] =?UTF-8?q?Update=20SDK=20=F0=9F=94=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 97c241eb2..d1d318dc8 100644 --- a/package.json +++ b/package.json @@ -74,7 +74,7 @@ "@popperjs/core": "^2.9.2", "@sentry/browser": "^7.17.4", "@sentry/tracing": "^7.17.4", - "@symmetric-v3/sdk": "^1.2.14-beta.1", + "@symmetric-v3/sdk": "^1.2.15-beta.1", "@tanstack/vue-query": "^4.22.0", "@testing-library/jest-dom": "^5.16.1", "@testing-library/vue": "^7.0.0",