diff --git a/packages/explorer-ui/components/ChainChart/index.tsx b/packages/explorer-ui/components/ChainChart/index.tsx index 2c2ae7f9cc..e3c24de1fd 100644 --- a/packages/explorer-ui/components/ChainChart/index.tsx +++ b/packages/explorer-ui/components/ChainChart/index.tsx @@ -314,6 +314,12 @@ export const OverviewChart: React.FC = ({ stackId="a" fill={loading ? 'rgba(255, 255, 255, 0.1)' : '#FFEEDA'} /> + )} diff --git a/packages/explorer-ui/graphql/queries/index.ts b/packages/explorer-ui/graphql/queries/index.ts index efedc7b9ae..28389f8e36 100644 --- a/packages/explorer-ui/graphql/queries/index.ts +++ b/packages/explorer-ui/graphql/queries/index.ts @@ -210,6 +210,7 @@ export const DAILY_STATISTICS_BY_CHAIN = gql` base blast scroll + linea total } } diff --git a/packages/synapse-constants/constants/assets/chains/index.ts b/packages/synapse-constants/constants/assets/chains/index.ts index 734055888c..ea0e9e1205 100644 --- a/packages/synapse-constants/constants/assets/chains/index.ts +++ b/packages/synapse-constants/constants/assets/chains/index.ts @@ -17,3 +17,4 @@ export * as moonbeamImg from './moonbeam.svg' export * as moonriverImg from './moonriver.svg' export * as optimismImg from './optimism.svg' export * as polygonImg from './polygon.svg' +export * as lineaImg from './linea.svg' diff --git a/packages/synapse-constants/constants/assets/chains/linea.svg b/packages/synapse-constants/constants/assets/chains/linea.svg new file mode 100644 index 0000000000..33f1bb7bce --- /dev/null +++ b/packages/synapse-constants/constants/assets/chains/linea.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/synapse-constants/constants/assets/explorer/index.ts b/packages/synapse-constants/constants/assets/explorer/index.ts index 2322de0ddb..c826a27ea9 100644 --- a/packages/synapse-constants/constants/assets/explorer/index.ts +++ b/packages/synapse-constants/constants/assets/explorer/index.ts @@ -17,3 +17,5 @@ export * as moonbeamExplorerImg from './moonbeam.svg' export * as moonriverExplorerImg from './moonriver.svg' export * as dogeExplorerImg from './dogechain.svg' export * as baseExplorerImg from './basescan.svg' +export * as scrollExplorerImg from './scroll.svg' +export * as lineaExplorerImg from './linea.svg' diff --git a/packages/synapse-constants/constants/assets/explorer/linea.svg b/packages/synapse-constants/constants/assets/explorer/linea.svg new file mode 100644 index 0000000000..33f1bb7bce --- /dev/null +++ b/packages/synapse-constants/constants/assets/explorer/linea.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/synapse-constants/constants/bridgeMap.ts b/packages/synapse-constants/constants/bridgeMap.ts index 8257707cf1..9becd86da2 100644 --- a/packages/synapse-constants/constants/bridgeMap.ts +++ b/packages/synapse-constants/constants/bridgeMap.ts @@ -31,7 +31,15 @@ export const BRIDGE_MAP = { '0x1B84765dE8B7566e4cEAF4D0fD3c5aF52D3DdE4F': { decimals: 18, symbol: 'nUSD', - origin: ['CCTP.USDC', 'DAI', 'USDC', 'USDT', 'nUSD', 'synFRAX'], + origin: [ + 'CCTP.USDC', + 'DAI', + 'RFQ.USDC', + 'USDC', + 'USDT', + 'nUSD', + 'synFRAX', + ], destination: ['CCTP.USDC', 'nUSD'], swappable: [ '0x5f98805A4E8be255a32880FDeC7F6728C6568bA0', @@ -60,7 +68,15 @@ export const BRIDGE_MAP = { '0x5f98805A4E8be255a32880FDeC7F6728C6568bA0': { decimals: 18, symbol: 'LUSD', - origin: ['CCTP.USDC', 'DAI', 'USDC', 'USDT', 'nUSD', 'synFRAX'], + origin: [ + 'CCTP.USDC', + 'DAI', + 'RFQ.USDC', + 'USDC', + 'USDT', + 'nUSD', + 'synFRAX', + ], destination: ['CCTP.USDC'], swappable: [ '0x1B84765dE8B7566e4cEAF4D0fD3c5aF52D3DdE4F', @@ -82,7 +98,15 @@ export const BRIDGE_MAP = { '0x6B175474E89094C44Da98b954EedeAC495271d0F': { decimals: 18, symbol: 'DAI', - origin: ['CCTP.USDC', 'DAI', 'USDC', 'USDT', 'nUSD', 'synFRAX'], + origin: [ + 'CCTP.USDC', + 'DAI', + 'RFQ.USDC', + 'USDC', + 'USDT', + 'nUSD', + 'synFRAX', + ], destination: ['CCTP.USDC', 'DAI', 'nUSD'], swappable: [ '0x1B84765dE8B7566e4cEAF4D0fD3c5aF52D3DdE4F', @@ -97,7 +121,15 @@ export const BRIDGE_MAP = { '0x6c3ea9036406852006290770BEdFcAbA0e23A0e8': { decimals: 6, symbol: 'PYUSD', - origin: ['CCTP.USDC', 'DAI', 'USDC', 'USDT', 'nUSD', 'synFRAX'], + origin: [ + 'CCTP.USDC', + 'DAI', + 'RFQ.USDC', + 'USDC', + 'USDT', + 'nUSD', + 'synFRAX', + ], destination: ['CCTP.USDC'], swappable: [ '0x1B84765dE8B7566e4cEAF4D0fD3c5aF52D3DdE4F', @@ -126,7 +158,15 @@ export const BRIDGE_MAP = { '0x853d955aCEf822Db058eb8505911ED77F175b99e': { decimals: 18, symbol: 'FRAX', - origin: ['CCTP.USDC', 'DAI', 'USDC', 'USDT', 'nUSD', 'synFRAX'], + origin: [ + 'CCTP.USDC', + 'DAI', + 'RFQ.USDC', + 'USDC', + 'USDT', + 'nUSD', + 'synFRAX', + ], destination: ['CCTP.USDC', 'synFRAX'], swappable: [ '0x1B84765dE8B7566e4cEAF4D0fD3c5aF52D3DdE4F', @@ -148,8 +188,16 @@ export const BRIDGE_MAP = { '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48': { decimals: 6, symbol: 'USDC', - origin: ['CCTP.USDC', 'DAI', 'USDC', 'USDT', 'nUSD', 'synFRAX'], - destination: ['CCTP.USDC', 'USDC', 'nUSD'], + origin: [ + 'CCTP.USDC', + 'DAI', + 'RFQ.USDC', + 'USDC', + 'USDT', + 'nUSD', + 'synFRAX', + ], + destination: ['CCTP.USDC', 'USDC', 'nUSD', 'RFQ.USDC'], swappable: [ '0x1B84765dE8B7566e4cEAF4D0fD3c5aF52D3DdE4F', '0x5f98805A4E8be255a32880FDeC7F6728C6568bA0', @@ -167,6 +215,13 @@ export const BRIDGE_MAP = { destination: ['VSTA'], swappable: [], }, + '0xAdF7C35560035944e805D98fF17d58CDe2449389': { + decimals: 18, + symbol: 'SPEC', + origin: ['SPEC'], + destination: ['SPEC'], + swappable: [], + }, '0xBAac2B4491727D78D2b78815144570b9f2Fe8899': { decimals: 18, symbol: 'DOG', @@ -177,15 +232,15 @@ export const BRIDGE_MAP = { '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2': { decimals: 18, symbol: 'WETH', - origin: ['nETH'], + origin: ['RFQ.ETH', 'nETH'], destination: ['nETH'], swappable: [], }, '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE': { decimals: 18, symbol: 'ETH', - origin: ['nETH'], - destination: ['nETH'], + origin: ['RFQ.ETH', 'nETH'], + destination: ['nETH', 'RFQ.ETH'], swappable: [], }, '0xb753428af26E81097e7fD17f40c88aaA3E04902c': { @@ -198,7 +253,15 @@ export const BRIDGE_MAP = { '0xdAC17F958D2ee523a2206206994597C13D831ec7': { decimals: 6, symbol: 'USDT', - origin: ['CCTP.USDC', 'DAI', 'USDC', 'USDT', 'nUSD', 'synFRAX'], + origin: [ + 'CCTP.USDC', + 'DAI', + 'RFQ.USDC', + 'USDC', + 'USDT', + 'nUSD', + 'synFRAX', + ], destination: ['CCTP.USDC', 'USDT', 'nUSD'], swappable: [ '0x1B84765dE8B7566e4cEAF4D0fD3c5aF52D3DdE4F', @@ -220,7 +283,15 @@ export const BRIDGE_MAP = { '0xf939E0A03FB07F59A73314E73794Be0E57ac1b4E': { decimals: 18, symbol: 'crvUSD', - origin: ['CCTP.USDC', 'DAI', 'USDC', 'USDT', 'nUSD', 'synFRAX'], + origin: [ + 'CCTP.USDC', + 'DAI', + 'RFQ.USDC', + 'USDC', + 'USDT', + 'nUSD', + 'synFRAX', + ], destination: ['CCTP.USDC'], swappable: [ '0x1B84765dE8B7566e4cEAF4D0fD3c5aF52D3DdE4F', @@ -237,8 +308,8 @@ export const BRIDGE_MAP = { '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85': { decimals: 6, symbol: 'USDC', - origin: ['CCTP.USDC', 'nUSD'], - destination: ['CCTP.USDC'], + origin: ['CCTP.USDC', 'RFQ.USDC', 'nUSD'], + destination: ['CCTP.USDC', 'RFQ.USDC'], swappable: [ '0x67C10C397dD0Ba417329543c1a40eb48AAa7cd00', '0x7F5c764cBc14f9669B88837ca1490cCa17c31607', @@ -257,7 +328,7 @@ export const BRIDGE_MAP = { '0x121ab82b49B2BC4c7901CA46B8277962b4350204': { decimals: 18, symbol: 'WETH', - origin: ['nETH'], + origin: ['RFQ.ETH', 'nETH'], destination: ['nETH'], swappable: [ '0x809DC529f07651bD43A172e8dB6f4a7a0d771036', @@ -281,7 +352,7 @@ export const BRIDGE_MAP = { '0x67C10C397dD0Ba417329543c1a40eb48AAa7cd00': { decimals: 18, symbol: 'nUSD', - origin: ['CCTP.USDC', 'nUSD'], + origin: ['CCTP.USDC', 'RFQ.USDC', 'nUSD'], destination: ['CCTP.USDC', 'nUSD'], swappable: [ '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85', @@ -294,7 +365,7 @@ export const BRIDGE_MAP = { '0x7F5c764cBc14f9669B88837ca1490cCa17c31607': { decimals: 6, symbol: 'USDC.e', - origin: ['CCTP.USDC', 'nUSD'], + origin: ['CCTP.USDC', 'RFQ.USDC', 'nUSD'], destination: ['CCTP.USDC', 'nUSD'], swappable: [ '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85', @@ -307,7 +378,7 @@ export const BRIDGE_MAP = { '0x809DC529f07651bD43A172e8dB6f4a7a0d771036': { decimals: 18, symbol: 'nETH', - origin: ['nETH'], + origin: ['RFQ.ETH', 'nETH'], destination: ['nETH'], swappable: [ '0x121ab82b49B2BC4c7901CA46B8277962b4350204', @@ -317,7 +388,7 @@ export const BRIDGE_MAP = { '0x8c6f28f2F1A3C87F0f938b96d27520d9751ec8d9': { decimals: 18, symbol: 'sUSD', - origin: ['CCTP.USDC', 'nUSD'], + origin: ['CCTP.USDC', 'RFQ.USDC', 'nUSD'], destination: ['CCTP.USDC'], swappable: [ '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85', @@ -330,7 +401,7 @@ export const BRIDGE_MAP = { '0x94b008aA00579c1307B0EF2c499aD98a8ce58e58': { decimals: 6, symbol: 'USDT', - origin: ['CCTP.USDC', 'nUSD'], + origin: ['CCTP.USDC', 'RFQ.USDC', 'nUSD'], destination: ['CCTP.USDC'], swappable: [ '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85', @@ -350,7 +421,7 @@ export const BRIDGE_MAP = { '0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1': { decimals: 18, symbol: 'DAI', - origin: ['CCTP.USDC', 'nUSD'], + origin: ['CCTP.USDC', 'RFQ.USDC', 'nUSD'], destination: ['CCTP.USDC'], swappable: [ '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85', @@ -370,8 +441,8 @@ export const BRIDGE_MAP = { '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE': { decimals: 18, symbol: 'ETH', - origin: ['nETH'], - destination: ['nETH'], + origin: ['RFQ.ETH', 'nETH'], + destination: ['nETH', 'RFQ.ETH'], swappable: [ '0x121ab82b49B2BC4c7901CA46B8277962b4350204', '0x809DC529f07651bD43A172e8dB6f4a7a0d771036', @@ -1176,7 +1247,7 @@ export const BRIDGE_MAP = { '0x417Ac0e078398C154EdFadD9Ef675d30Be60Af93': { decimals: 18, symbol: 'crvUSD', - origin: ['CCTP.USDC'], + origin: ['CCTP.USDC', 'RFQ.USDC'], destination: ['CCTP.USDC'], swappable: [ '0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb', @@ -1188,7 +1259,7 @@ export const BRIDGE_MAP = { '0x4200000000000000000000000000000000000006': { decimals: 18, symbol: 'WETH', - origin: ['nETH'], + origin: ['RFQ.ETH', 'nETH'], destination: ['nETH'], swappable: [ '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE', @@ -1205,7 +1276,7 @@ export const BRIDGE_MAP = { '0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb': { decimals: 18, symbol: 'DAI', - origin: ['CCTP.USDC'], + origin: ['CCTP.USDC', 'RFQ.USDC'], destination: ['CCTP.USDC'], swappable: [ '0x417Ac0e078398C154EdFadD9Ef675d30Be60Af93', @@ -1224,8 +1295,8 @@ export const BRIDGE_MAP = { '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913': { decimals: 6, symbol: 'USDC', - origin: ['CCTP.USDC'], - destination: ['CCTP.USDC'], + origin: ['CCTP.USDC', 'RFQ.USDC'], + destination: ['CCTP.USDC', 'RFQ.USDC'], swappable: [ '0x417Ac0e078398C154EdFadD9Ef675d30Be60Af93', '0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb', @@ -1233,10 +1304,17 @@ export const BRIDGE_MAP = { '0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA', ], }, + '0x96419929d7949D6A801A6909c145C8EEf6A40431': { + decimals: 18, + symbol: 'SPEC', + origin: ['SPEC'], + destination: ['SPEC'], + swappable: [], + }, '0xEB466342C4d449BC9f53A865D5Cb90586f405215': { decimals: 6, symbol: 'axlUSDC', - origin: ['CCTP.USDC'], + origin: ['CCTP.USDC', 'RFQ.USDC'], destination: ['CCTP.USDC'], swappable: [ '0x417Ac0e078398C154EdFadD9Ef675d30Be60Af93', @@ -1248,8 +1326,8 @@ export const BRIDGE_MAP = { '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE': { decimals: 18, symbol: 'ETH', - origin: ['nETH'], - destination: ['nETH'], + origin: ['RFQ.ETH', 'nETH'], + destination: ['nETH', 'RFQ.ETH'], swappable: [ '0x4200000000000000000000000000000000000006', '0xb554A55358fF0382Fb21F0a478C3546d1106Be8c', @@ -1258,7 +1336,7 @@ export const BRIDGE_MAP = { '0xb554A55358fF0382Fb21F0a478C3546d1106Be8c': { decimals: 18, symbol: 'nETH', - origin: ['nETH'], + origin: ['RFQ.ETH', 'nETH'], destination: ['nETH'], swappable: [ '0x4200000000000000000000000000000000000006', @@ -1268,7 +1346,7 @@ export const BRIDGE_MAP = { '0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA': { decimals: 6, symbol: 'USDbC', - origin: ['CCTP.USDC'], + origin: ['CCTP.USDC', 'RFQ.USDC'], destination: ['CCTP.USDC'], swappable: [ '0x417Ac0e078398C154EdFadD9Ef675d30Be60Af93', @@ -1303,7 +1381,7 @@ export const BRIDGE_MAP = { '0x17FC002b466eEc40DaE837Fc4bE5c67993ddBd6F': { decimals: 18, symbol: 'FRAX', - origin: ['CCTP.USDC', 'nUSD'], + origin: ['CCTP.USDC', 'RFQ.USDC', 'nUSD'], destination: ['CCTP.USDC'], swappable: [ '0x2913E812Cf0dcCA30FB28E6Cac3d2DCFF4497688', @@ -1316,7 +1394,7 @@ export const BRIDGE_MAP = { '0x2913E812Cf0dcCA30FB28E6Cac3d2DCFF4497688': { decimals: 18, symbol: 'nUSD', - origin: ['CCTP.USDC', 'nUSD'], + origin: ['CCTP.USDC', 'RFQ.USDC', 'nUSD'], destination: ['CCTP.USDC', 'nUSD'], swappable: [ '0x17FC002b466eEc40DaE837Fc4bE5c67993ddBd6F', @@ -1336,7 +1414,7 @@ export const BRIDGE_MAP = { '0x3ea9B0ab55F34Fb188824Ee288CeaEfC63cf908e': { decimals: 18, symbol: 'nETH', - origin: ['nETH'], + origin: ['RFQ.ETH', 'nETH'], destination: ['nETH'], swappable: [ '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1', @@ -1360,7 +1438,7 @@ export const BRIDGE_MAP = { '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1': { decimals: 18, symbol: 'WETH', - origin: ['nETH'], + origin: ['RFQ.ETH', 'nETH'], destination: ['nETH'], swappable: [ '0x3ea9B0ab55F34Fb188824Ee288CeaEfC63cf908e', @@ -1391,7 +1469,7 @@ export const BRIDGE_MAP = { '0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1': { decimals: 18, symbol: 'DAI', - origin: ['CCTP.USDC', 'nUSD'], + origin: ['CCTP.USDC', 'RFQ.USDC', 'nUSD'], destination: ['CCTP.USDC'], swappable: [ '0x17FC002b466eEc40DaE837Fc4bE5c67993ddBd6F', @@ -1404,8 +1482,8 @@ export const BRIDGE_MAP = { '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE': { decimals: 18, symbol: 'ETH', - origin: ['nETH'], - destination: ['nETH'], + origin: ['RFQ.ETH', 'nETH'], + destination: ['nETH', 'RFQ.ETH'], swappable: [ '0x3ea9B0ab55F34Fb188824Ee288CeaEfC63cf908e', '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1', @@ -1414,7 +1492,7 @@ export const BRIDGE_MAP = { '0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8': { decimals: 6, symbol: 'USDC.e', - origin: ['CCTP.USDC', 'nUSD'], + origin: ['CCTP.USDC', 'RFQ.USDC', 'nUSD'], destination: ['CCTP.USDC', 'nUSD'], swappable: [ '0x17FC002b466eEc40DaE837Fc4bE5c67993ddBd6F', @@ -1427,7 +1505,7 @@ export const BRIDGE_MAP = { '0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9': { decimals: 6, symbol: 'USDT', - origin: ['CCTP.USDC', 'nUSD'], + origin: ['CCTP.USDC', 'RFQ.USDC', 'nUSD'], destination: ['CCTP.USDC', 'nUSD'], swappable: [ '0x17FC002b466eEc40DaE837Fc4bE5c67993ddBd6F', @@ -1447,8 +1525,8 @@ export const BRIDGE_MAP = { '0xaf88d065e77c8cC2239327C5EDb3A432268e5831': { decimals: 6, symbol: 'USDC', - origin: ['CCTP.USDC', 'nUSD'], - destination: ['CCTP.USDC'], + origin: ['CCTP.USDC', 'RFQ.USDC', 'nUSD'], + destination: ['CCTP.USDC', 'RFQ.USDC'], swappable: [ '0x17FC002b466eEc40DaE837Fc4bE5c67993ddBd6F', '0x2913E812Cf0dcCA30FB28E6Cac3d2DCFF4497688', @@ -1726,14 +1804,14 @@ export const BRIDGE_MAP = { '0x4300000000000000000000000000000000000003': { decimals: 18, symbol: 'USDB', - origin: ['nUSD'], - destination: ['nUSD'], + origin: ['nUSD', 'RFQ.USDB'], + destination: ['nUSD', 'RFQ.USDB'], swappable: ['0x3194B0A295D87fDAA54DF852c248F7a6BAF6c6e0'], }, '0x4300000000000000000000000000000000000004': { decimals: 18, symbol: 'WETH', - origin: ['nETH'], + origin: ['RFQ.ETH', 'nETH'], destination: ['nETH'], swappable: [ '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE', @@ -1750,8 +1828,8 @@ export const BRIDGE_MAP = { '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE': { decimals: 18, symbol: 'ETH', - origin: ['nETH'], - destination: ['nETH'], + origin: ['RFQ.ETH', 'nETH'], + destination: ['nETH', 'RFQ.ETH'], swappable: [ '0x4300000000000000000000000000000000000004', '0xce971282fAAc9faBcF121944956da7142cccC855', @@ -1760,7 +1838,7 @@ export const BRIDGE_MAP = { '0xce971282fAAc9faBcF121944956da7142cccC855': { decimals: 18, symbol: 'nETH', - origin: ['nETH'], + origin: ['RFQ.ETH', 'nETH'], destination: ['nETH'], swappable: [ '0x4300000000000000000000000000000000000004', diff --git a/packages/synapse-constants/constants/chains/index.ts b/packages/synapse-constants/constants/chains/index.ts index 9d0d62f9b3..d58ce89949 100644 --- a/packages/synapse-constants/constants/chains/index.ts +++ b/packages/synapse-constants/constants/chains/index.ts @@ -75,6 +75,7 @@ export const ChainId = { BASE: 8453, BLAST: 81457, SCROLL: 534352, + LINEA: 59144, AVALANCHE: 43114, DFK: 53935, AURORA: 1313161554, @@ -124,4 +125,7 @@ export const FASTBRIDGE_CONTRACTS = { [ChainId.ETH]: '0x5523D3c98809DdDB82C686E152F5C58B1B0fB59E', [ChainId.OPTIMISM]: '0x5523D3c98809DdDB82C686E152F5C58B1B0fB59E', [ChainId.SCROLL]: '0x5523D3c98809DdDB82C686E152F5C58B1B0fB59E', + [ChainId.LINEA]: '0x34F52752975222d5994C206cE08C1d5B329f24dD', + [ChainId.BLAST]: '0x34F52752975222d5994C206cE08C1d5B329f24dD', + [ChainId.BSC]: '0x5523D3c98809DdDB82C686E152F5C58B1B0fB59E', } diff --git a/packages/synapse-constants/constants/chains/master.ts b/packages/synapse-constants/constants/chains/master.ts index d1da6b3f52..41fd997bbb 100644 --- a/packages/synapse-constants/constants/chains/master.ts +++ b/packages/synapse-constants/constants/chains/master.ts @@ -19,6 +19,7 @@ import moonriverImg from '../assets/chains/moonriver.svg' import optimismImg from '../assets/chains/optimism.svg' import polygonImg from '../assets/chains/polygon.svg' import scrollImg from '../assets/chains/scroll.svg' +import lineaImg from '../assets/chains/linea.svg' import ethExplorerImg from '../assets/explorer/etherscan.svg' import arbitrumExplorerImg from '../assets/explorer/arbitrum.svg' import bnbExplorerImg from '../assets/explorer/bscscan.svg' @@ -40,6 +41,7 @@ import dogeExplorerImg from '../assets/explorer/dogechain.svg' import baseExplorerImg from '../assets/explorer/basescan.svg' import blastExplorerImg from '../assets/explorer/blast.svg' import scrollExplorerImg from '../assets/explorer/scroll.svg' +import lineaExplorerImg from '../assets/explorer/linea.svg' import { Chain } from '../types' export const ETH: Chain = { @@ -478,3 +480,27 @@ export const SCROLL: Chain = { }, color: 'orange', } + +export const LINEA: Chain = { + priorityRank: 90, + id: 59144, + chainSymbol: 'LINEA', + name: 'Linea', + codeName: 'linea', + chainImg: lineaImg, + layer: 2, + rpcUrls: { + primary: 'https://linea.blockpi.network/v1/rpc/public', + fallback: 'https://rpc.linea.build', + }, + explorerUrl: 'https://lineascan.build/', + explorerName: 'LineaScan', + explorerImg: lineaExplorerImg, + blockTime: 3000, + nativeCurrency: { + name: 'Ether', + symbol: 'ETH', + decimals: 18, + }, + color: 'black', +} diff --git a/packages/synapse-constants/constants/tokens/bridgeMap.ts b/packages/synapse-constants/constants/tokens/bridgeMap.ts index 8257707cf1..70f9755d4a 100644 --- a/packages/synapse-constants/constants/tokens/bridgeMap.ts +++ b/packages/synapse-constants/constants/tokens/bridgeMap.ts @@ -31,7 +31,15 @@ export const BRIDGE_MAP = { '0x1B84765dE8B7566e4cEAF4D0fD3c5aF52D3DdE4F': { decimals: 18, symbol: 'nUSD', - origin: ['CCTP.USDC', 'DAI', 'USDC', 'USDT', 'nUSD', 'synFRAX'], + origin: [ + 'CCTP.USDC', + 'DAI', + 'RFQ.USDC', + 'USDC', + 'USDT', + 'nUSD', + 'synFRAX', + ], destination: ['CCTP.USDC', 'nUSD'], swappable: [ '0x5f98805A4E8be255a32880FDeC7F6728C6568bA0', @@ -60,7 +68,15 @@ export const BRIDGE_MAP = { '0x5f98805A4E8be255a32880FDeC7F6728C6568bA0': { decimals: 18, symbol: 'LUSD', - origin: ['CCTP.USDC', 'DAI', 'USDC', 'USDT', 'nUSD', 'synFRAX'], + origin: [ + 'CCTP.USDC', + 'DAI', + 'RFQ.USDC', + 'USDC', + 'USDT', + 'nUSD', + 'synFRAX', + ], destination: ['CCTP.USDC'], swappable: [ '0x1B84765dE8B7566e4cEAF4D0fD3c5aF52D3DdE4F', @@ -82,7 +98,15 @@ export const BRIDGE_MAP = { '0x6B175474E89094C44Da98b954EedeAC495271d0F': { decimals: 18, symbol: 'DAI', - origin: ['CCTP.USDC', 'DAI', 'USDC', 'USDT', 'nUSD', 'synFRAX'], + origin: [ + 'CCTP.USDC', + 'DAI', + 'RFQ.USDC', + 'USDC', + 'USDT', + 'nUSD', + 'synFRAX', + ], destination: ['CCTP.USDC', 'DAI', 'nUSD'], swappable: [ '0x1B84765dE8B7566e4cEAF4D0fD3c5aF52D3DdE4F', @@ -97,7 +121,15 @@ export const BRIDGE_MAP = { '0x6c3ea9036406852006290770BEdFcAbA0e23A0e8': { decimals: 6, symbol: 'PYUSD', - origin: ['CCTP.USDC', 'DAI', 'USDC', 'USDT', 'nUSD', 'synFRAX'], + origin: [ + 'CCTP.USDC', + 'DAI', + 'RFQ.USDC', + 'USDC', + 'USDT', + 'nUSD', + 'synFRAX', + ], destination: ['CCTP.USDC'], swappable: [ '0x1B84765dE8B7566e4cEAF4D0fD3c5aF52D3DdE4F', @@ -126,7 +158,15 @@ export const BRIDGE_MAP = { '0x853d955aCEf822Db058eb8505911ED77F175b99e': { decimals: 18, symbol: 'FRAX', - origin: ['CCTP.USDC', 'DAI', 'USDC', 'USDT', 'nUSD', 'synFRAX'], + origin: [ + 'CCTP.USDC', + 'DAI', + 'RFQ.USDC', + 'USDC', + 'USDT', + 'nUSD', + 'synFRAX', + ], destination: ['CCTP.USDC', 'synFRAX'], swappable: [ '0x1B84765dE8B7566e4cEAF4D0fD3c5aF52D3DdE4F', @@ -148,8 +188,16 @@ export const BRIDGE_MAP = { '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48': { decimals: 6, symbol: 'USDC', - origin: ['CCTP.USDC', 'DAI', 'USDC', 'USDT', 'nUSD', 'synFRAX'], - destination: ['CCTP.USDC', 'USDC', 'nUSD'], + origin: [ + 'CCTP.USDC', + 'DAI', + 'RFQ.USDC', + 'USDC', + 'USDT', + 'nUSD', + 'synFRAX', + ], + destination: ['CCTP.USDC', 'USDC', 'nUSD', 'RFQ.USDC'], swappable: [ '0x1B84765dE8B7566e4cEAF4D0fD3c5aF52D3DdE4F', '0x5f98805A4E8be255a32880FDeC7F6728C6568bA0', @@ -167,6 +215,13 @@ export const BRIDGE_MAP = { destination: ['VSTA'], swappable: [], }, + '0xAdF7C35560035944e805D98fF17d58CDe2449389': { + decimals: 18, + symbol: 'SPEC', + origin: ['SPEC'], + destination: ['SPEC'], + swappable: [], + }, '0xBAac2B4491727D78D2b78815144570b9f2Fe8899': { decimals: 18, symbol: 'DOG', @@ -177,15 +232,15 @@ export const BRIDGE_MAP = { '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2': { decimals: 18, symbol: 'WETH', - origin: ['nETH'], + origin: ['RFQ.ETH', 'nETH'], destination: ['nETH'], swappable: [], }, '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE': { decimals: 18, symbol: 'ETH', - origin: ['nETH'], - destination: ['nETH'], + origin: ['RFQ.ETH', 'nETH'], + destination: ['nETH', 'RFQ.ETH'], swappable: [], }, '0xb753428af26E81097e7fD17f40c88aaA3E04902c': { @@ -198,7 +253,15 @@ export const BRIDGE_MAP = { '0xdAC17F958D2ee523a2206206994597C13D831ec7': { decimals: 6, symbol: 'USDT', - origin: ['CCTP.USDC', 'DAI', 'USDC', 'USDT', 'nUSD', 'synFRAX'], + origin: [ + 'CCTP.USDC', + 'DAI', + 'RFQ.USDC', + 'USDC', + 'USDT', + 'nUSD', + 'synFRAX', + ], destination: ['CCTP.USDC', 'USDT', 'nUSD'], swappable: [ '0x1B84765dE8B7566e4cEAF4D0fD3c5aF52D3DdE4F', @@ -220,7 +283,15 @@ export const BRIDGE_MAP = { '0xf939E0A03FB07F59A73314E73794Be0E57ac1b4E': { decimals: 18, symbol: 'crvUSD', - origin: ['CCTP.USDC', 'DAI', 'USDC', 'USDT', 'nUSD', 'synFRAX'], + origin: [ + 'CCTP.USDC', + 'DAI', + 'RFQ.USDC', + 'USDC', + 'USDT', + 'nUSD', + 'synFRAX', + ], destination: ['CCTP.USDC'], swappable: [ '0x1B84765dE8B7566e4cEAF4D0fD3c5aF52D3DdE4F', @@ -237,8 +308,8 @@ export const BRIDGE_MAP = { '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85': { decimals: 6, symbol: 'USDC', - origin: ['CCTP.USDC', 'nUSD'], - destination: ['CCTP.USDC'], + origin: ['CCTP.USDC', 'RFQ.USDC', 'nUSD'], + destination: ['CCTP.USDC', 'RFQ.USDC'], swappable: [ '0x67C10C397dD0Ba417329543c1a40eb48AAa7cd00', '0x7F5c764cBc14f9669B88837ca1490cCa17c31607', @@ -257,7 +328,7 @@ export const BRIDGE_MAP = { '0x121ab82b49B2BC4c7901CA46B8277962b4350204': { decimals: 18, symbol: 'WETH', - origin: ['nETH'], + origin: ['RFQ.ETH', 'nETH'], destination: ['nETH'], swappable: [ '0x809DC529f07651bD43A172e8dB6f4a7a0d771036', @@ -281,7 +352,7 @@ export const BRIDGE_MAP = { '0x67C10C397dD0Ba417329543c1a40eb48AAa7cd00': { decimals: 18, symbol: 'nUSD', - origin: ['CCTP.USDC', 'nUSD'], + origin: ['CCTP.USDC', 'RFQ.USDC', 'nUSD'], destination: ['CCTP.USDC', 'nUSD'], swappable: [ '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85', @@ -294,7 +365,7 @@ export const BRIDGE_MAP = { '0x7F5c764cBc14f9669B88837ca1490cCa17c31607': { decimals: 6, symbol: 'USDC.e', - origin: ['CCTP.USDC', 'nUSD'], + origin: ['CCTP.USDC', 'RFQ.USDC', 'nUSD'], destination: ['CCTP.USDC', 'nUSD'], swappable: [ '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85', @@ -307,7 +378,7 @@ export const BRIDGE_MAP = { '0x809DC529f07651bD43A172e8dB6f4a7a0d771036': { decimals: 18, symbol: 'nETH', - origin: ['nETH'], + origin: ['RFQ.ETH', 'nETH'], destination: ['nETH'], swappable: [ '0x121ab82b49B2BC4c7901CA46B8277962b4350204', @@ -317,7 +388,7 @@ export const BRIDGE_MAP = { '0x8c6f28f2F1A3C87F0f938b96d27520d9751ec8d9': { decimals: 18, symbol: 'sUSD', - origin: ['CCTP.USDC', 'nUSD'], + origin: ['CCTP.USDC', 'RFQ.USDC', 'nUSD'], destination: ['CCTP.USDC'], swappable: [ '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85', @@ -330,7 +401,7 @@ export const BRIDGE_MAP = { '0x94b008aA00579c1307B0EF2c499aD98a8ce58e58': { decimals: 6, symbol: 'USDT', - origin: ['CCTP.USDC', 'nUSD'], + origin: ['CCTP.USDC', 'RFQ.USDC', 'nUSD'], destination: ['CCTP.USDC'], swappable: [ '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85', @@ -350,7 +421,7 @@ export const BRIDGE_MAP = { '0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1': { decimals: 18, symbol: 'DAI', - origin: ['CCTP.USDC', 'nUSD'], + origin: ['CCTP.USDC', 'RFQ.USDC', 'nUSD'], destination: ['CCTP.USDC'], swappable: [ '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85', @@ -370,8 +441,8 @@ export const BRIDGE_MAP = { '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE': { decimals: 18, symbol: 'ETH', - origin: ['nETH'], - destination: ['nETH'], + origin: ['RFQ.ETH', 'nETH'], + destination: ['nETH', 'RFQ.ETH'], swappable: [ '0x121ab82b49B2BC4c7901CA46B8277962b4350204', '0x809DC529f07651bD43A172e8dB6f4a7a0d771036', @@ -1176,7 +1247,7 @@ export const BRIDGE_MAP = { '0x417Ac0e078398C154EdFadD9Ef675d30Be60Af93': { decimals: 18, symbol: 'crvUSD', - origin: ['CCTP.USDC'], + origin: ['CCTP.USDC', 'RFQ.USDC'], destination: ['CCTP.USDC'], swappable: [ '0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb', @@ -1188,7 +1259,7 @@ export const BRIDGE_MAP = { '0x4200000000000000000000000000000000000006': { decimals: 18, symbol: 'WETH', - origin: ['nETH'], + origin: ['RFQ.ETH', 'nETH'], destination: ['nETH'], swappable: [ '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE', @@ -1205,7 +1276,7 @@ export const BRIDGE_MAP = { '0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb': { decimals: 18, symbol: 'DAI', - origin: ['CCTP.USDC'], + origin: ['CCTP.USDC', 'RFQ.USDC'], destination: ['CCTP.USDC'], swappable: [ '0x417Ac0e078398C154EdFadD9Ef675d30Be60Af93', @@ -1224,8 +1295,8 @@ export const BRIDGE_MAP = { '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913': { decimals: 6, symbol: 'USDC', - origin: ['CCTP.USDC'], - destination: ['CCTP.USDC'], + origin: ['CCTP.USDC', 'RFQ.USDC'], + destination: ['CCTP.USDC', 'RFQ.USDC'], swappable: [ '0x417Ac0e078398C154EdFadD9Ef675d30Be60Af93', '0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb', @@ -1233,10 +1304,17 @@ export const BRIDGE_MAP = { '0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA', ], }, + '0x96419929d7949D6A801A6909c145C8EEf6A40431': { + decimals: 18, + symbol: 'SPEC', + origin: ['SPEC'], + destination: ['SPEC'], + swappable: [], + }, '0xEB466342C4d449BC9f53A865D5Cb90586f405215': { decimals: 6, symbol: 'axlUSDC', - origin: ['CCTP.USDC'], + origin: ['CCTP.USDC', 'RFQ.USDC'], destination: ['CCTP.USDC'], swappable: [ '0x417Ac0e078398C154EdFadD9Ef675d30Be60Af93', @@ -1248,8 +1326,8 @@ export const BRIDGE_MAP = { '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE': { decimals: 18, symbol: 'ETH', - origin: ['nETH'], - destination: ['nETH'], + origin: ['RFQ.ETH', 'nETH'], + destination: ['nETH', 'RFQ.ETH'], swappable: [ '0x4200000000000000000000000000000000000006', '0xb554A55358fF0382Fb21F0a478C3546d1106Be8c', @@ -1258,7 +1336,7 @@ export const BRIDGE_MAP = { '0xb554A55358fF0382Fb21F0a478C3546d1106Be8c': { decimals: 18, symbol: 'nETH', - origin: ['nETH'], + origin: ['RFQ.ETH', 'nETH'], destination: ['nETH'], swappable: [ '0x4200000000000000000000000000000000000006', @@ -1268,7 +1346,7 @@ export const BRIDGE_MAP = { '0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA': { decimals: 6, symbol: 'USDbC', - origin: ['CCTP.USDC'], + origin: ['CCTP.USDC', 'RFQ.USDC'], destination: ['CCTP.USDC'], swappable: [ '0x417Ac0e078398C154EdFadD9Ef675d30Be60Af93', @@ -1303,7 +1381,7 @@ export const BRIDGE_MAP = { '0x17FC002b466eEc40DaE837Fc4bE5c67993ddBd6F': { decimals: 18, symbol: 'FRAX', - origin: ['CCTP.USDC', 'nUSD'], + origin: ['CCTP.USDC', 'RFQ.USDC', 'nUSD'], destination: ['CCTP.USDC'], swappable: [ '0x2913E812Cf0dcCA30FB28E6Cac3d2DCFF4497688', @@ -1316,7 +1394,7 @@ export const BRIDGE_MAP = { '0x2913E812Cf0dcCA30FB28E6Cac3d2DCFF4497688': { decimals: 18, symbol: 'nUSD', - origin: ['CCTP.USDC', 'nUSD'], + origin: ['CCTP.USDC', 'RFQ.USDC', 'nUSD'], destination: ['CCTP.USDC', 'nUSD'], swappable: [ '0x17FC002b466eEc40DaE837Fc4bE5c67993ddBd6F', @@ -1336,7 +1414,7 @@ export const BRIDGE_MAP = { '0x3ea9B0ab55F34Fb188824Ee288CeaEfC63cf908e': { decimals: 18, symbol: 'nETH', - origin: ['nETH'], + origin: ['RFQ.ETH', 'nETH'], destination: ['nETH'], swappable: [ '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1', @@ -1360,7 +1438,7 @@ export const BRIDGE_MAP = { '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1': { decimals: 18, symbol: 'WETH', - origin: ['nETH'], + origin: ['RFQ.ETH', 'nETH'], destination: ['nETH'], swappable: [ '0x3ea9B0ab55F34Fb188824Ee288CeaEfC63cf908e', @@ -1391,7 +1469,7 @@ export const BRIDGE_MAP = { '0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1': { decimals: 18, symbol: 'DAI', - origin: ['CCTP.USDC', 'nUSD'], + origin: ['CCTP.USDC', 'RFQ.USDC', 'nUSD'], destination: ['CCTP.USDC'], swappable: [ '0x17FC002b466eEc40DaE837Fc4bE5c67993ddBd6F', @@ -1404,8 +1482,8 @@ export const BRIDGE_MAP = { '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE': { decimals: 18, symbol: 'ETH', - origin: ['nETH'], - destination: ['nETH'], + origin: ['RFQ.ETH', 'nETH'], + destination: ['nETH', 'RFQ.ETH'], swappable: [ '0x3ea9B0ab55F34Fb188824Ee288CeaEfC63cf908e', '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1', @@ -1414,7 +1492,7 @@ export const BRIDGE_MAP = { '0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8': { decimals: 6, symbol: 'USDC.e', - origin: ['CCTP.USDC', 'nUSD'], + origin: ['CCTP.USDC', 'RFQ.USDC', 'nUSD'], destination: ['CCTP.USDC', 'nUSD'], swappable: [ '0x17FC002b466eEc40DaE837Fc4bE5c67993ddBd6F', @@ -1427,7 +1505,7 @@ export const BRIDGE_MAP = { '0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9': { decimals: 6, symbol: 'USDT', - origin: ['CCTP.USDC', 'nUSD'], + origin: ['CCTP.USDC', 'RFQ.USDC', 'nUSD'], destination: ['CCTP.USDC', 'nUSD'], swappable: [ '0x17FC002b466eEc40DaE837Fc4bE5c67993ddBd6F', @@ -1447,8 +1525,8 @@ export const BRIDGE_MAP = { '0xaf88d065e77c8cC2239327C5EDb3A432268e5831': { decimals: 6, symbol: 'USDC', - origin: ['CCTP.USDC', 'nUSD'], - destination: ['CCTP.USDC'], + origin: ['CCTP.USDC', 'RFQ.USDC', 'nUSD'], + destination: ['CCTP.USDC', 'RFQ.USDC'], swappable: [ '0x17FC002b466eEc40DaE837Fc4bE5c67993ddBd6F', '0x2913E812Cf0dcCA30FB28E6Cac3d2DCFF4497688', @@ -1715,6 +1793,22 @@ export const BRIDGE_MAP = { swappable: [], }, }, + '59144': { + '0x176211869cA2b568f2A7D4EE941E073a821EE1ff': { + origin: ['RFQ.USDC'], + destination: ['RFQ.USDC'], + swappable: [], + symbol: 'USDC', + decimals: 6, + }, + '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE': { + origin: ['RFQ.ETH'], + destination: ['RFQ.ETH'], + swappable: [], + symbol: 'ETH', + decimals: 18, + }, + }, '81457': { '0x3194B0A295D87fDAA54DF852c248F7a6BAF6c6e0': { decimals: 18, @@ -1726,14 +1820,14 @@ export const BRIDGE_MAP = { '0x4300000000000000000000000000000000000003': { decimals: 18, symbol: 'USDB', - origin: ['nUSD'], - destination: ['nUSD'], + origin: ['nUSD', 'RFQ.USDB'], + destination: ['nUSD', 'RFQ.USDB'], swappable: ['0x3194B0A295D87fDAA54DF852c248F7a6BAF6c6e0'], }, '0x4300000000000000000000000000000000000004': { decimals: 18, symbol: 'WETH', - origin: ['nETH'], + origin: ['RFQ.ETH', 'nETH'], destination: ['nETH'], swappable: [ '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE', @@ -1750,8 +1844,8 @@ export const BRIDGE_MAP = { '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE': { decimals: 18, symbol: 'ETH', - origin: ['nETH'], - destination: ['nETH'], + origin: ['RFQ.ETH', 'nETH'], + destination: ['nETH', 'RFQ.ETH'], swappable: [ '0x4300000000000000000000000000000000000004', '0xce971282fAAc9faBcF121944956da7142cccC855', @@ -1760,7 +1854,7 @@ export const BRIDGE_MAP = { '0xce971282fAAc9faBcF121944956da7142cccC855': { decimals: 18, symbol: 'nETH', - origin: ['nETH'], + origin: ['RFQ.ETH', 'nETH'], destination: ['nETH'], swappable: [ '0x4300000000000000000000000000000000000004', @@ -1768,6 +1862,22 @@ export const BRIDGE_MAP = { ], }, }, + '534352': { + '0x06eFdBFf2a14a7c8E15944D1F4A48F9F95F663A4': { + origin: ['RFQ.USDC'], + destination: ['RFQ.USDC'], + swappable: [], + symbol: 'USDC', + decimals: 6, + }, + '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE': { + origin: ['RFQ.ETH'], + destination: ['RFQ.ETH'], + swappable: [], + symbol: 'ETH', + decimals: 18, + }, + }, '1313161554': { '0x07379565cD8B0CaE7c60Dc78e7f601b34AF2A21c': { decimals: 18, diff --git a/packages/synapse-constants/constants/tokens/bridgeable.ts b/packages/synapse-constants/constants/tokens/bridgeable.ts index 677e87af17..98a4469b48 100644 --- a/packages/synapse-constants/constants/tokens/bridgeable.ts +++ b/packages/synapse-constants/constants/tokens/bridgeable.ts @@ -412,6 +412,7 @@ export const USDC = new Token({ [CHAINS.BASE.id]: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913', [CHAINS.POLYGON.id]: '0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359', [CHAINS.SCROLL.id]: '0x06eFdBFf2a14a7c8E15944D1F4A48F9F95F663A4', + [CHAINS.LINEA.id]: '0x176211869cA2b568f2A7D4EE941E073a821EE1ff', }, decimals: { [CHAINS.ETH.id]: 6, @@ -428,6 +429,7 @@ export const USDC = new Token({ [CHAINS.BASE.id]: 6, [CHAINS.POLYGON.id]: 6, [CHAINS.SCROLL.id]: 6, + [CHAINS.LINEA.id]: 6, }, swapExceptions: { [CHAINS.KLAYTN.id]: [CHAINS.ETH.id, CHAINS.DOGE.id], @@ -487,6 +489,7 @@ export const USDT = new Token({ [CHAINS.KLAYTN.id]: '0xd6dAb4CfF47dF175349e6e7eE2BF7c40Bb8C05A3', [CHAINS.ARBITRUM.id]: '0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9', [CHAINS.AVALANCHE.id]: '0x9702230a8ea53601f5cd2dc00fdbc13d4df4a8c7', + [CHAINS.SCROLL.id]: '0xf55BEC9cafDbE8730f096Aa55dad6D22d44099Df', }, swapExceptions: { [CHAINS.KLAYTN.id]: [CHAINS.ETH.id, CHAINS.DOGE.id], @@ -503,6 +506,7 @@ export const USDT = new Token({ [CHAINS.KLAYTN.id]: 6, [CHAINS.ARBITRUM.id]: 6, [CHAINS.AVALANCHE.id]: 6, + [CHAINS.SCROLL.id]: 6, }, symbol: 'USDT', name: 'USD Tether', @@ -785,6 +789,7 @@ export const ETH = new Token({ [CHAINS.DFK.id]: '0xfBDF0E31808d0aa7b9509AA6aBC9754E48C58852', [CHAINS.BLAST.id]: zeroAddress, [CHAINS.SCROLL.id]: nullAddress, + [CHAINS.LINEA.id]: nullAddress, }, decimals: 18, symbol: 'ETH', diff --git a/packages/synapse-constants/constants/tokens/deprecated.ts b/packages/synapse-constants/constants/tokens/deprecated.ts index 7d62b34de2..6ff49c7566 100644 --- a/packages/synapse-constants/constants/tokens/deprecated.ts +++ b/packages/synapse-constants/constants/tokens/deprecated.ts @@ -1,7 +1,6 @@ import usdbLogo from '../assets/icons/usdc.svg' import fusdtLogo from '../assets/icons/usdt.svg' import { Token } from '../types' - import * as CHAINS from '../chains/master' export const USDB = new Token({ diff --git a/packages/synapse-constants/constants/tokens/swapMaster.ts b/packages/synapse-constants/constants/tokens/swapMaster.ts index 41b8ac16c7..e5a94bc9dd 100644 --- a/packages/synapse-constants/constants/tokens/swapMaster.ts +++ b/packages/synapse-constants/constants/tokens/swapMaster.ts @@ -1,7 +1,6 @@ import { Token } from '../types' import usdtLogo from '../assets/icons/usdt.svg' import usdcLogo from '../assets/icons/usdc.svg' - import * as CHAINS from '../chains/master' export const SwapUSDC = new Token({ diff --git a/packages/synapse-constants/package.json b/packages/synapse-constants/package.json index 2947d3dd9a..cc0ea4cffb 100644 --- a/packages/synapse-constants/package.json +++ b/packages/synapse-constants/package.json @@ -1,6 +1,6 @@ { "name": "synapse-constants", - "version": "1.3.20", + "version": "1.3.22", "description": "This is an npm package that maintains all synapse constants", "main": "dist/index.js", "module": "dist/index.js", diff --git a/packages/synapse-constants/abi/IDefaultPool.json b/packages/synapse-constants/scripts/abi/IDefaultPool.json similarity index 100% rename from packages/synapse-constants/abi/IDefaultPool.json rename to packages/synapse-constants/scripts/abi/IDefaultPool.json diff --git a/packages/synapse-constants/abi/IERC20Metadata.json b/packages/synapse-constants/scripts/abi/IERC20Metadata.json similarity index 100% rename from packages/synapse-constants/abi/IERC20Metadata.json rename to packages/synapse-constants/scripts/abi/IERC20Metadata.json diff --git a/packages/synapse-constants/abi/SwapQuoter.json b/packages/synapse-constants/scripts/abi/SwapQuoter.json similarity index 100% rename from packages/synapse-constants/abi/SwapQuoter.json rename to packages/synapse-constants/scripts/abi/SwapQuoter.json diff --git a/packages/synapse-constants/abi/SynapseCCTP.json b/packages/synapse-constants/scripts/abi/SynapseCCTP.json similarity index 100% rename from packages/synapse-constants/abi/SynapseCCTP.json rename to packages/synapse-constants/scripts/abi/SynapseCCTP.json diff --git a/packages/synapse-constants/abi/SynapseCCTPRouter.json b/packages/synapse-constants/scripts/abi/SynapseCCTPRouter.json similarity index 100% rename from packages/synapse-constants/abi/SynapseCCTPRouter.json rename to packages/synapse-constants/scripts/abi/SynapseCCTPRouter.json diff --git a/packages/synapse-constants/abi/SynapseRouter.json b/packages/synapse-constants/scripts/abi/SynapseRouter.json similarity index 100% rename from packages/synapse-constants/abi/SynapseRouter.json rename to packages/synapse-constants/scripts/abi/SynapseRouter.json diff --git a/packages/synapse-constants/data/ignoredBridgeSymbols.json b/packages/synapse-constants/scripts/data/ignoredBridgeSymbols.json similarity index 100% rename from packages/synapse-constants/data/ignoredBridgeSymbols.json rename to packages/synapse-constants/scripts/data/ignoredBridgeSymbols.json diff --git a/packages/synapse-constants/data/legacyTokens.json b/packages/synapse-constants/scripts/data/legacyTokens.json similarity index 100% rename from packages/synapse-constants/data/legacyTokens.json rename to packages/synapse-constants/scripts/data/legacyTokens.json diff --git a/packages/synapse-constants/data/providers.json b/packages/synapse-constants/scripts/data/providers.json similarity index 100% rename from packages/synapse-constants/data/providers.json rename to packages/synapse-constants/scripts/data/providers.json diff --git a/packages/synapse-constants/data/symbolOverrides.json b/packages/synapse-constants/scripts/data/symbolOverrides.json similarity index 100% rename from packages/synapse-constants/data/symbolOverrides.json rename to packages/synapse-constants/scripts/data/symbolOverrides.json diff --git a/packages/synapse-constants/scripts/generateMaps.js b/packages/synapse-constants/scripts/generateMaps.js index 867aa39ad3..f37ada1328 100644 --- a/packages/synapse-constants/scripts/generateMaps.js +++ b/packages/synapse-constants/scripts/generateMaps.js @@ -1,21 +1,21 @@ -const fs = require('fs') -const { execSync } = require('child_process') - const { ethers } = require('ethers') +const { prettyPrintTS } = require('./utils/prettyPrintTs') +const { fetchRfqData } = require('./utils/fetchRfqData') // Provider URLs -const providers = require('../data/providers.json') +const providers = require('./data/providers.json') // List of ignored bridge symbols -const ignoredBridgeSymbols = require('../data/ignoredBridgeSymbols.json') +const ignoredBridgeSymbols = require('./data/ignoredBridgeSymbols.json') // Symbol overrides (for tokens with incorrect on-chain symbols) -const symbolOverrides = require('../data/symbolOverrides.json') +const symbolOverrides = require('./data/symbolOverrides.json') // Contract ABIs -const SynapseRouterABI = require('../abi/SynapseRouter.json') -const SynapseCCTPABI = require('../abi/SynapseCCTP.json') -const SynapseCCTPRouterABI = require('../abi/SynapseCCTPRouter.json') -const SwapQuoterABI = require('../abi/SwapQuoter.json') -const ERC20ABI = require('../abi/IERC20Metadata.json') -const DefaultPoolABI = require('../abi/IDefaultPool.json') +const SynapseRouterABI = require('./abi/SynapseRouter.json') +const SynapseCCTPABI = require('./abi/SynapseCCTP.json') +const SynapseCCTPRouterABI = require('./abi/SynapseCCTPRouter.json') +const SwapQuoterABI = require('./abi/SwapQuoter.json') +const ERC20ABI = require('./abi/IERC20Metadata.json') +const DefaultPoolABI = require('./abi/IDefaultPool.json') +// const rfqResponse = require('./data/rfqResponse.json') // ETH address const ETH = '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE' @@ -30,13 +30,22 @@ const SynapseRouterAddress = '0x7e7a0e201fd38d3adaa9523da6c109a07118c96a' const SynapseCCTPRouterAddress = '0xd5a597d6e7ddf373a92C8f477DAAA673b0902F48' const SynapseCCTPAddress = '0x12715a66773BD9C54534a01aBF01d05F6B4Bd35E' +// Chain IDs where SynapseBridge is allowed +const allowedChainIdsForSynapseBridge = [ + 1, 10, 25, 56, 137, 250, 288, 1088, 1284, 1285, 2000, 7700, 8217, 8453, 81457, + 42161, 43114, 53935, 1313161554, 1666600000, +] + // Chain IDs where SynapseCCTPRouter is allowed const allowedChainIdsForSynapseCCTPRouter = [1, 10, 137, 8453, 42161, 43114] +// Chain IDs where RFQ is allowed +const allowedChainIdsForRfq = [1, 10, 56, 8453, 42161, 59144, 81457, 534352] + // Get SynapseRouter contract instances for each chain const SynapseRouters = {} const SwapQuoters = {} -Object.keys(providers).forEach((chainId) => { +allowedChainIdsForSynapseBridge.forEach((chainId) => { SynapseRouters[chainId] = new ethers.Contract( SynapseRouterAddress, SynapseRouterABI, @@ -69,6 +78,13 @@ allowedChainIdsForSynapseCCTPRouter.forEach((chainId) => { // Function to get list of tokens that could be swapped // into SynapseBridge tokens for a given chain. const getBridgeOriginMap = async (chainId) => { + if (!SwapQuoters[chainId]) { + return { + originMap: {}, + poolSets: [], + } + } + // Get WETH address const weth = await SwapQuoters[chainId].weth() // Get list of supported tokens @@ -254,11 +270,12 @@ const sortMapByKeys = (map) => { }) return sortedMap } - const printMaps = async () => { const bridgeMap = {} const bridgeSymbolsMap = {} console.log('Starting on chains: ', Object.keys(providers)) + + const rfqResponse = await fetchRfqData() await Promise.all( Object.keys(providers).map(async (chainId) => { // Get map from token to set of bridge token symbols @@ -268,6 +285,17 @@ const printMaps = async () => { Object.keys(cctpOriginMap).forEach((token) => { addSetToMap(originMap, token, cctpOriginMap[token]) }) + // Add RFQ.ETH and RFQ.USDC to origin map of tokens bridgeable into nETH or CCTP.USDC respectively + if (allowedChainIdsForRfq.includes(Number(chainId))) { + Object.keys(originMap).forEach((token) => { + if (originMap[token].has('nETH')) { + originMap[token].add('RFQ.ETH') + } + if (originMap[token].has('CCTP.USDC')) { + originMap[token].add('RFQ.USDC') + } + }) + } const tokens = {} await Promise.all( Object.keys(originMap).map(async (token) => { @@ -280,12 +308,72 @@ const printMaps = async () => { } }) ) + + if (allowedChainIdsForRfq.includes(Number(chainId))) { + await Promise.all( + rfqResponse.map(async (quote) => { + const { + origin_chain_id, + origin_token_addr, + dest_chain_id, + dest_token_addr, + } = quote + + const normalizedOriginAddress = + ethers.utils.getAddress(origin_token_addr) + + const normalizedDestAddress = + ethers.utils.getAddress(dest_token_addr) + + if (origin_chain_id === Number(chainId)) { + const originTokenSymbol = await getTokenSymbol( + origin_chain_id, + normalizedOriginAddress + ) + + const rfqOriginSymbol = getRFQSymbol(originTokenSymbol) + + if (!tokens[normalizedOriginAddress]) { + tokens[normalizedOriginAddress] = { + origin: [], + destination: [], + swappable: [], // poolSets are handled during SynapseBridge portion + symbol: originTokenSymbol, + decimals: await getTokenDecimals( + origin_chain_id, + normalizedOriginAddress + ), + } + } + // Add RFQ symbol to origin list if not already present + if ( + !tokens[normalizedOriginAddress].origin.includes( + rfqOriginSymbol + ) + ) { + tokens[normalizedOriginAddress].origin.push(rfqOriginSymbol) + } + // Add RFQ symbol to destination list if not already present + if ( + !tokens[normalizedOriginAddress].destination.includes( + rfqOriginSymbol + ) + ) { + tokens[normalizedOriginAddress].destination.push( + rfqOriginSymbol + ) + } + } + }) + ) + } + bridgeMap[chainId] = sortMapByKeys(tokens) bridgeSymbolsMap[chainId] = sortMapByKeys(extractBridgeSymbolsMap(tokens)) console.log('Finished chain: ', chainId) }) ) - prettyPrintTS(bridgeMap, 'BRIDGE_MAP', './constants/tokens/bridgeMap.ts') + prettyPrintTS(bridgeMap, 'BRIDGE_MAP', './constants/bridgeMap.ts') } @@ -323,6 +411,7 @@ const extractBridgeSymbolsMap = (tokens) => { ...Object.keys(bridgeSymbolsDestinationSets), ]) const bridgeSymbolsMap = {} + bridgeSymbols.forEach((symbol) => { bridgeSymbolsMap[symbol] = { origin: Array.from(bridgeSymbolsOriginSets[symbol]).sort(), @@ -335,6 +424,9 @@ const extractBridgeSymbolsMap = (tokens) => { const getTokenSymbol = async (chainId, token) => { // Check if token is ETH if (token === ETH) { + if (!SwapQuoters[chainId]) { + return 'ETH' + } // Get WETH address from SwapQuoter const weth = await SwapQuoters[chainId].weth() // Return "WETH" symbol without first character @@ -367,13 +459,8 @@ const getTokenDecimals = async (chainId, token) => { return decimals } -// Writes map export to a TypeScript file, then runs prettier on the file -const prettyPrintTS = (map, mapName, fn) => { - console.log(`Writing ${mapName} to ${fn}`) - const json = JSON.stringify(map) - fs.writeFileSync(fn, `export const ${mapName} = ${json}`) - // Run prettier on the file using terminal command: - execSync(`npx prettier --write ${fn}`) +const getRFQSymbol = (symbol) => { + return `RFQ.${symbol}` } printMaps() diff --git a/packages/synapse-constants/scripts/utils/fetchRfqData.js b/packages/synapse-constants/scripts/utils/fetchRfqData.js new file mode 100644 index 0000000000..8289c36d58 --- /dev/null +++ b/packages/synapse-constants/scripts/utils/fetchRfqData.js @@ -0,0 +1,17 @@ +// URL for RFQ quotes +const RFQ_URL = 'https://rfq-api.omnirpc.io/quotes' + +const fetchRfqData = async () => { + try { + const response = await fetch(RFQ_URL) + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`) + } + return await response.json() + } catch (error) { + console.error('Failed to fetch RFQ data:', error) + return [] + } +} + +module.exports = { fetchRfqData } diff --git a/packages/synapse-constants/scripts/utils/prettyPrintTs.js b/packages/synapse-constants/scripts/utils/prettyPrintTs.js new file mode 100644 index 0000000000..61629dafdc --- /dev/null +++ b/packages/synapse-constants/scripts/utils/prettyPrintTs.js @@ -0,0 +1,13 @@ +const fs = require('fs') +const { execSync } = require('child_process') + +// Writes map export to a TypeScript file, then runs prettier on the file +const prettyPrintTS = (map, mapName, fn) => { + console.log(`Writing ${mapName} to ${fn}`) + const json = JSON.stringify(map) + fs.writeFileSync(fn, `export const ${mapName} = ${json}`) + // Run prettier on the file using terminal command: + execSync(`npx prettier --write ${fn}`) +} + +module.exports = { prettyPrintTS } diff --git a/services/explorer/api/server_test.go b/services/explorer/api/server_test.go index 46f592d460..6a5a0b27df 100644 --- a/services/explorer/api/server_test.go +++ b/services/explorer/api/server_test.go @@ -57,6 +57,7 @@ func TestHandleJSONDailyStat(t *testing.T) { Base *float64 "json:\"base\" graphql:\"base\"" Blast *float64 "json:\"blast\" graphql:\"blast\"" Scroll *float64 "json:\"scroll\" graphql:\"scroll\"" + Linea *float64 "json:\"linea\" graphql:\"linea\"" Total *float64 "json:\"total\" graphql:\"total\"" }{ { diff --git a/services/explorer/graphql/client/client.go b/services/explorer/graphql/client/client.go index e74497cea3..04f5498f6d 100644 --- a/services/explorer/graphql/client/client.go +++ b/services/explorer/graphql/client/client.go @@ -128,6 +128,7 @@ type GetDailyStatisticsByChain struct { Base *float64 "json:\"base\" graphql:\"base\"" Blast *float64 "json:\"blast\" graphql:\"blast\"" Scroll *float64 "json:\"scroll\" graphql:\"scroll\"" + Linea *float64 "json:\"linea\" graphql:\"linea\"" Total *float64 "json:\"total\" graphql:\"total\"" } "json:\"response\" graphql:\"response\"" } @@ -500,6 +501,7 @@ const GetDailyStatisticsByChainDocument = `query GetDailyStatisticsByChain ($cha base blast scroll + linea total } } diff --git a/services/explorer/graphql/client/queries/queries.graphql b/services/explorer/graphql/client/queries/queries.graphql index 6359989738..60eb3d63eb 100644 --- a/services/explorer/graphql/client/queries/queries.graphql +++ b/services/explorer/graphql/client/queries/queries.graphql @@ -154,6 +154,7 @@ query GetDailyStatisticsByChain($chainID: Int, $type: DailyStatisticType, $durat base blast scroll + linea total } } diff --git a/services/explorer/graphql/server/graph/model/models_gen.go b/services/explorer/graphql/server/graph/model/models_gen.go index d5c7fda229..d3eeb60af4 100644 --- a/services/explorer/graphql/server/graph/model/models_gen.go +++ b/services/explorer/graphql/server/graph/model/models_gen.go @@ -103,6 +103,7 @@ type DateResultByChain struct { Base *float64 `json:"base,omitempty"` Blast *float64 `json:"blast,omitempty"` Scroll *float64 `json:"scroll,omitempty"` + Linea *float64 `json:"linea,omitempty"` Total *float64 `json:"total,omitempty"` } diff --git a/services/explorer/graphql/server/graph/partials.go b/services/explorer/graphql/server/graph/partials.go index 0e264eb5b7..85519e442b 100644 --- a/services/explorer/graphql/server/graph/partials.go +++ b/services/explorer/graphql/server/graph/partials.go @@ -400,6 +400,7 @@ const dailyVolumeBridgeMvPt1 = ` results[8453] AS base, results[81457] AS blast, results[534352] AS scroll, + results[59144] AS linea, arraySum(mapValues(results)) AS total FROM (SELECT date, maxMap(map(chain_id, total)) AS results FROM (SELECT coalesce(toString(b.date), toString(s.date)) AS date, @@ -443,6 +444,7 @@ const dailyVolumeBridge = ` results[8453] AS base, results[81457] AS blast, results[534352] AS scroll, + results[59144] AS linea, arraySum(mapValues(results)) AS total FROM (SELECT date, maxMap(map(chain_id, total)) AS results FROM (SELECT coalesce(toString(b.date), toString(s.date)) AS date, @@ -538,6 +540,7 @@ SELECT date, results[8453] AS base, results[81457] AS blast, results[534352] AS scroll, + results[59144] AS linea, arraySum(mapValues(results)) AS total FROM (SELECT date, maxMap(map(chain_id, total)) AS results FROM (SELECT coalesce(toString(b.date), toString(s.date), toString(m.date)) AS date, @@ -639,6 +642,7 @@ SELECT date, results[8453] AS base, results[81457] AS blast, results[534352] AS scroll, + results[59144] AS linea, arraySum(mapValues(results)) AS total FROM ( SELECT date, @@ -669,6 +673,7 @@ SELECT date, results[8453] AS base, results[81457] AS blast, results[534352] AS scroll, + results[59144] AS linea, arraySum(mapValues(results)) AS total FROM ( SELECT date, @@ -700,6 +705,7 @@ SELECT date, results[8453] AS base, results[81457] AS blast, results[534352] AS scroll, + results[59144] AS linea, arraySum(mapValues(results)) AS total FROM ( SELECT date, diff --git a/services/explorer/graphql/server/graph/resolver/server.go b/services/explorer/graphql/server/graph/resolver/server.go index 603fcf292d..8abe58001c 100644 --- a/services/explorer/graphql/server/graph/resolver/server.go +++ b/services/explorer/graphql/server/graph/resolver/server.go @@ -116,6 +116,7 @@ type ComplexityRoot struct { Fantom func(childComplexity int) int Harmony func(childComplexity int) int Klaytn func(childComplexity int) int + Linea func(childComplexity int) int Metis func(childComplexity int) int Moonbeam func(childComplexity int) int Moonriver func(childComplexity int) int @@ -603,6 +604,13 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return e.complexity.DateResultByChain.Klaytn(childComplexity), true + case "DateResultByChain.linea": + if e.complexity.DateResultByChain.Linea == nil { + break + } + + return e.complexity.DateResultByChain.Linea(childComplexity), true + case "DateResultByChain.metis": if e.complexity.DateResultByChain.Metis == nil { break @@ -1655,6 +1663,7 @@ type DateResultByChain { base: Float blast: Float scroll: Float + linea: Float total: Float } @@ -4782,6 +4791,47 @@ func (ec *executionContext) fieldContext_DateResultByChain_scroll(ctx context.Co return fc, nil } +func (ec *executionContext) _DateResultByChain_linea(ctx context.Context, field graphql.CollectedField, obj *model.DateResultByChain) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_DateResultByChain_linea(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Linea, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*float64) + fc.Result = res + return ec.marshalOFloat2ᚖfloat64(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_DateResultByChain_linea(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "DateResultByChain", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type Float does not have child fields") + }, + } + return fc, nil +} + func (ec *executionContext) _DateResultByChain_total(ctx context.Context, field graphql.CollectedField, obj *model.DateResultByChain) (ret graphql.Marshaler) { fc, err := ec.fieldContext_DateResultByChain_total(ctx, field) if err != nil { @@ -7138,6 +7188,8 @@ func (ec *executionContext) fieldContext_Query_dailyStatisticsByChain(ctx contex return ec.fieldContext_DateResultByChain_blast(ctx, field) case "scroll": return ec.fieldContext_DateResultByChain_scroll(ctx, field) + case "linea": + return ec.fieldContext_DateResultByChain_linea(ctx, field) case "total": return ec.fieldContext_DateResultByChain_total(ctx, field) } @@ -10380,6 +10432,8 @@ func (ec *executionContext) _DateResultByChain(ctx context.Context, sel ast.Sele out.Values[i] = ec._DateResultByChain_blast(ctx, field, obj) case "scroll": out.Values[i] = ec._DateResultByChain_scroll(ctx, field, obj) + case "linea": + out.Values[i] = ec._DateResultByChain_linea(ctx, field, obj) case "total": out.Values[i] = ec._DateResultByChain_total(ctx, field, obj) default: diff --git a/services/explorer/graphql/server/graph/schema/types.graphql b/services/explorer/graphql/server/graph/schema/types.graphql index c73749fad2..9b8bebdbd0 100644 --- a/services/explorer/graphql/server/graph/schema/types.graphql +++ b/services/explorer/graphql/server/graph/schema/types.graphql @@ -179,6 +179,7 @@ type DateResultByChain { base: Float blast: Float scroll: Float + linea: Float total: Float } diff --git a/services/explorer/static/chainIDs.yaml b/services/explorer/static/chainIDs.yaml index e68c334928..84add22b21 100644 --- a/services/explorer/static/chainIDs.yaml +++ b/services/explorer/static/chainIDs.yaml @@ -18,3 +18,4 @@ 8453: 'Base' 81457: 'Blast' 534352: 'Scroll' +59144: 'Linea'