From 07bd49ada3a0ee05a40122ed94e0414aceb59472 Mon Sep 17 00:00:00 2001 From: Daniel Isaac Geslin Date: Fri, 12 Jul 2024 18:15:55 +0200 Subject: [PATCH 1/9] wip --- apps/connect/src/App.tsx | 3 + apps/connect/src/env/general.ts | 23 + apps/connect/src/env/index.ts | 1 + apps/connect/src/env/token-bridge.mainnet.ts | 473 +++++++++++++++++++ apps/connect/src/env/token-bridge.testnet.ts | 154 ++++++ apps/connect/src/env/token-bridge.ts | 88 ++++ apps/connect/src/env/usdc-bridge.mainnet.ts | 1 + apps/connect/src/env/usdc-bridge.testnet.ts | 1 + apps/connect/src/utils/isObject.test.ts | 13 + apps/connect/src/utils/isObject.ts | 3 + apps/connect/src/utils/mergeTruthy.test.ts | 37 ++ apps/connect/src/utils/mergeTruthy.ts | 17 + apps/connect/tsconfig.json | 5 + apps/connect/vite.token-bridge.config.ts | 10 +- apps/connect/vite.usdc-bridge.config.ts | 8 + 15 files changed, 836 insertions(+), 1 deletion(-) create mode 100644 apps/connect/src/env/general.ts create mode 100644 apps/connect/src/env/index.ts create mode 100644 apps/connect/src/env/token-bridge.mainnet.ts create mode 100644 apps/connect/src/env/token-bridge.testnet.ts create mode 100644 apps/connect/src/env/token-bridge.ts create mode 100644 apps/connect/src/env/usdc-bridge.mainnet.ts create mode 100644 apps/connect/src/env/usdc-bridge.testnet.ts create mode 100644 apps/connect/src/utils/isObject.test.ts create mode 100644 apps/connect/src/utils/isObject.ts create mode 100644 apps/connect/src/utils/mergeTruthy.test.ts create mode 100644 apps/connect/src/utils/mergeTruthy.ts diff --git a/apps/connect/src/App.tsx b/apps/connect/src/App.tsx index 05027c106..cf490af38 100644 --- a/apps/connect/src/App.tsx +++ b/apps/connect/src/App.tsx @@ -16,6 +16,9 @@ import PrivacyPolicy from "./components/pages/PrivacyPolicy"; import { PrivacyPolicyPath, isPreview, isProduction } from "./utils/constants"; import Banner from "./components/atoms/Banner"; +import * as ENV from "@env"; +console.log("THIS IS THE ENVVVVV_______", ENV); + const defaultConfig: WormholeConnectConfig = { ...wormholeConnectConfig, ...((isPreview || isProduction) && { diff --git a/apps/connect/src/env/general.ts b/apps/connect/src/env/general.ts new file mode 100644 index 000000000..4367ee903 --- /dev/null +++ b/apps/connect/src/env/general.ts @@ -0,0 +1,23 @@ +export const chains = [ + "wormchain", + "osmosis", + "ethereum", + "sui", + "aptos", + "kujira", + "evmos", + "bsc", + "polygon", + "avalanche", + "fantom", + "celo", + "moonbeam", + "base", + "arbitrum", + "optimism", + "scroll", + "xlayer", + "mantle", +]; + +export const PUBLIC_URL = import.meta.env.PUBLIC_URL || ""; diff --git a/apps/connect/src/env/index.ts b/apps/connect/src/env/index.ts new file mode 100644 index 000000000..fb291e2a7 --- /dev/null +++ b/apps/connect/src/env/index.ts @@ -0,0 +1 @@ +export const this_is_a_config = "replace_me with types"; diff --git a/apps/connect/src/env/token-bridge.mainnet.ts b/apps/connect/src/env/token-bridge.mainnet.ts new file mode 100644 index 000000000..53b2d7c35 --- /dev/null +++ b/apps/connect/src/env/token-bridge.mainnet.ts @@ -0,0 +1,473 @@ +import { + ACALA, + ALGORAND, + MORE, + SEI, + wormholeConnectConfig as wormholeConnectConfigBase, +} from "./token-bridge"; +import { mergeTruthy } from "../utils/mergeTruthy"; +import type { WormholeConnectConfig } from "@wormhole-foundation/wormhole-connect"; + +export { navBar } from "./token-bridge"; +export { redirects } from "./token-bridge"; +console.log('MAAAAAIIINNNNN') +export const wormholeConnectConfig = mergeTruthy( + wormholeConnectConfigBase, + { + moreNetworks: { + networks: [ALGORAND, ACALA, SEI, MORE], + } as WormholeConnectConfig["moreNetworks"], + tokensConfig: { + ETHFIethereum: { + key: "ETHFIethereum", + symbol: "ETHFI", + nativeChain: "ethereum", + tokenId: { + chain: "ethereum", + address: "0xfe0c30065b384f05761f15d0cc899d4f9f9cc0eb", + }, + icon: "https://assets.coingecko.com/coins/images/35958/standard/etherfi.jpeg?1710254562", + coinGeckoId: "ether-fi", + decimals: { + default: 18, + Ethereum: 18, + }, + }, + ETHFIarbitrum: { + key: "ETHFIarbitrum", + symbol: "ETHFI", + nativeChain: "arbitrum", + tokenId: { + chain: "arbitrum", + address: "0x7189fb5B6504bbfF6a852B13B7B82a3c118fDc27", + }, + icon: "https://assets.coingecko.com/coins/images/35958/standard/etherfi.jpeg?1710254562", + coinGeckoId: "ether-fi", + decimals: { + default: 18, + Arbitrum: 18, + }, + }, + WOM: { + key: "WOM", + symbol: "WOM", + nativeChain: "bsc", + tokenId: { + chain: "bsc", + address: "0xad6742a35fb341a9cc6ad674738dd8da98b94fb1", + }, + icon: "https://assets.coingecko.com/coins/images/26946/standard/Wombat_Token.png?1696526001", + coinGeckoId: "wombat-exchange", + decimals: { + default: 18, + }, + //Ehtereum, Avalanche, Base, Scroll, Optimism, Arbitrum, BNB Chain + foreignAssets: { + ethereum: { + address: "0xc0B314a8c08637685Fc3daFC477b92028c540CFB", + decimals: 18, + }, + avalanche: { + address: "0xa15E4544D141aa98C4581a1EA10Eb9048c3b3382", + decimals: 18, + }, + base: { + address: "0xD9541B08B375D58ae104EC247d7443D2D7235D64", + decimals: 18, + }, + scroll: { + address: "0x1a7aD8A6171A1EA84DD1E6d649cbd616189660D9", + decimals: 18, + }, + optimism: { + address: "0xD2612B256F6f76feA8C6fbca0BF3166D0d13a668", + decimals: 18, + }, + arbitrum: { + address: "0x7B5EB3940021Ec0e8e463D5dBB4B7B09a89DDF96", + decimals: 18, + }, + }, + }, + "USDC.e": { + key: "USDC.e", + symbol: "USDC.e", + nativeChain: "polygon", + tokenId: { + chain: "polygon", + address: "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174", + }, + icon: "data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' data-name='86977684-12db-4850-8f30-233a7c267d11' width='2000' height='2000' viewBox='0 0 2000 2000' style='max-height: 100%25%3b max-width: 100%25%3b'%3e%3cpath fill='%232775ca' d='M1000 2000c554.17 0 1000-445.83 1000-1000S1554.17 0 1000 0 0 445.83 0 1000s445.83 1000 1000 1000z'%3e%3c/path%3e%3cpath fill='white' d='M1275 1158.33c0-145.83-87.5-195.83-262.5-216.66-125-16.67-150-50-150-108.34s41.67-95.83 125-95.83c75 0 116.67 25 137.5 87.5 4.17 12.5 16.67 20.83 29.17 20.83h66.66c16.67 0 29.17-12.5 29.17-29.16v-4.17c-16.67-91.67-91.67-162.5-187.5-170.83v-100c0-16.67-12.5-29.17-33.33-33.34h-62.5c-16.67 0-29.17 12.5-33.34 33.34v95.83c-125 16.67-204.16 100-204.16 204.17 0 137.5 83.33 191.66 258.33 212.5 116.67 20.83 154.17 45.83 154.17 112.5s-58.34 112.5-137.5 112.5c-108.34 0-145.84-45.84-158.34-108.34-4.16-16.66-16.66-25-29.16-25h-70.84c-16.66 0-29.16 12.5-29.16 29.17v4.17c16.66 104.16 83.33 179.16 220.83 200v100c0 16.66 12.5 29.16 33.33 33.33h62.5c16.67 0 29.17-12.5 33.34-33.33v-100c125-20.84 208.33-108.34 208.33-220.84z'%3e%3c/path%3e%3cpath fill='white' d='M787.5 1595.83c-325-116.66-491.67-479.16-370.83-800 62.5-175 200-308.33 370.83-370.83 16.67-8.33 25-20.83 25-41.67V325c0-16.67-8.33-29.17-25-33.33-4.17 0-12.5 0-16.67 4.16-395.83 125-612.5 545.84-487.5 941.67 75 233.33 254.17 412.5 487.5 487.5 16.67 8.33 33.34 0 37.5-16.67 4.17-4.16 4.17-8.33 4.17-16.66v-58.34c0-12.5-12.5-29.16-25-37.5zm441.67-1300c-16.67-8.33-33.34 0-37.5 16.67-4.17 4.17-4.17 8.33-4.17 16.67v58.33c0 16.67 12.5 33.33 25 41.67 325 116.66 491.67 479.16 370.83 800-62.5 175-200 308.33-370.83 370.83-16.67 8.33-25 20.83-25 41.67V1700c0 16.67 8.33 29.17 25 33.33 4.17 0 12.5 0 16.67-4.16 395.83-125 612.5-545.84 487.5-941.67-75-237.5-258.34-416.67-487.5-491.67z'%3e%3c/path%3e%3c/svg%3e", + coinGeckoId: "bridged-usdc-polygon-pos-bridge", + color: "#FC8E03", + decimals: { + default: 6, + }, + foreignAssets: { + ethereum: { + address: "0x566957eF80F9fd5526CD2BEF8BE67035C0b81130", + decimals: 6, + }, + bsc: { + address: "0x672147dD47674757C457eB155BAA382cc10705Dd", + decimals: 6, + }, + avalanche: { + address: "0x543672E9CBEC728CBBa9C3Ccd99ed80aC3607FA8", + decimals: 6, + }, + sui: { + address: + "0xcf72ec52c0f8ddead746252481fb44ff6e8485a39b803825bde6b00d77cdb0bb::coin::COIN", + decimals: 6, + }, + aptos: { + address: + "0xc7160b1c2415d19a88add188ec726e62aab0045f0aed798106a2ef2994a9101e::coin::T", + decimals: 6, + }, + arbitrum: { + address: "0x9A3Fba8a0870Fb9765023681DAa5390C7919C916", + decimals: 6, + }, + fantom: { + address: "0x6e0e8cf6Ad151e1260A4D398faaEDFC450A9f00a", + decimals: 6, + }, + base: { + address: "0x59f4f969dd3A91A943651C9625E96822DC84Ef94", + decimals: 6, + }, + celo: { + address: "0x0E21B5BdFb6eDBa7d903a610d4DE2F8c72586017", + decimals: 6, + }, + }, + }, + BONK: { + key: "BONK", + symbol: "BONK", + nativeChain: "solana", + tokenId: { + chain: "solana", + address: "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263", + }, + icon: "https://quei6zhlcfsxdfyes577gy7bkxmuz7qqakyt72xlbkyh7fysmoza.arweave.net/hQiPZOsRZXGXBJd_82PhVdlM_hACsT_q6wqwf5cSY7I", + coinGeckoId: "bonk", + color: "#FC8E03", + decimals: { + default: 5, + }, + foreignAssets: { + ethereum: { + address: "0x1151CB3d861920e07a38e03eEAd12C32178567F6", + decimals: 5, + }, + bsc: { + address: "0xA697e272a73744b343528C3Bc4702F2565b2F422", + decimals: 5, + }, + polygon: { + address: "0xe5B49820e5A1063F6F4DdF851327b5E8B2301048", + decimals: 5, + }, + avalanche: { + address: "0xC07C98a93591504584738e4569928DDb3b9f12A7", + decimals: 5, + }, + sui: { + address: + "0x6907963ca849faff0957b9a8269a7a07065e3def2eef49cc33b50ab946ea5a9f::coin::COIN", + decimals: 5, + }, + aptos: { + address: + "0x2a90fae71afc7460ee42b20ee49a9c9b29272905ad71fef92fbd8b3905a24b56::coin::T", + decimals: 5, + }, + arbitrum: { + address: "0x09199d9A5F4448D0848e4395D065e1ad9c4a1F74", + decimals: 5, + }, + wormchain: { + address: + "wormhole10qt8wg0n7z740ssvf3urmvgtjhxpyp74hxqvqt7z226gykuus7eq9mpu8u", + decimals: 5, + }, + osmosis: { + address: + "ibc/CA3733CB0071F480FAE8EF0D9C3D47A49C6589144620A642BBE0D59A293D110E", + decimals: 5, + }, + fantom: { + address: "0x3fEcdF1248fe7642d29f879a75CFC0339659ab93", + decimals: 5, + }, + base: { + address: "0xDF1Cf211D38E7762c9691Be4D779A441a17A6cFC", + decimals: 5, + }, + celo: { + address: "0x3fc50bc066aE2ee280876EeefADfdAbF6cA02894", + decimals: 5, + }, + }, + }, + Wsolana: { + key: "Wsolana", + symbol: "W", + nativeChain: "solana", + tokenId: { + chain: "solana", + address: "85VBFQZC9TZkfaptBWjvUw7YbZjy52A6mjtPGjstQAmQ", + }, + icon: "https://assets.coingecko.com/coins/images/35087/standard/womrhole_logo_full_color_rgb_2000px_72ppi_fb766ac85a.png?1708688954", + coinGeckoId: "wormhole", + decimals: { + default: 6, + }, + }, + Wethereum: { + key: "Wethereum", + symbol: "W", + nativeChain: "ethereum", + tokenId: { + chain: "ethereum", + address: "0xB0fFa8000886e57F86dd5264b9582b2Ad87b2b91", + }, + icon: "https://assets.coingecko.com/coins/images/35087/standard/womrhole_logo_full_color_rgb_2000px_72ppi_fb766ac85a.png?1708688954", + coinGeckoId: "wormhole", + decimals: { + default: 18, + }, + }, + Warbitrum: { + key: "Warbitrum", + symbol: "W", + nativeChain: "arbitrum", + tokenId: { + chain: "arbitrum", + address: "0xB0fFa8000886e57F86dd5264b9582b2Ad87b2b91", + }, + icon: "https://assets.coingecko.com/coins/images/35087/standard/womrhole_logo_full_color_rgb_2000px_72ppi_fb766ac85a.png?1708688954", + coinGeckoId: "wormhole", + decimals: { + default: 18, + }, + }, + Woptimism: { + key: "Woptimism", + symbol: "W", + nativeChain: "optimism", + tokenId: { + chain: "optimism", + address: "0xB0fFa8000886e57F86dd5264b9582b2Ad87b2b91", + }, + icon: "https://assets.coingecko.com/coins/images/35087/standard/womrhole_logo_full_color_rgb_2000px_72ppi_fb766ac85a.png?1708688954", + coinGeckoId: "wormhole", + decimals: { + default: 18, + }, + }, + Wbase: { + key: "Wbase", + symbol: "W", + nativeChain: "base", + tokenId: { + chain: "base", + address: "0xB0fFa8000886e57F86dd5264b9582b2Ad87b2b91", + }, + icon: "https://assets.coingecko.com/coins/images/35087/standard/womrhole_logo_full_color_rgb_2000px_72ppi_fb766ac85a.png?1708688954", + coinGeckoId: "wormhole", + decimals: { + default: 18, + }, + }, + osETHethereum: { + key: "osETHethereum", + symbol: "osETH", + nativeChain: "ethereum", + tokenId: { + chain: "ethereum", + address: "0xf1C9acDc66974dFB6dEcB12aA385b9cD01190E38", + }, + icon: "https://coin-images.coingecko.com/coins/images/33117/large/Frame_27513839.png?1700732599", + coinGeckoId: "stakewise-staked-eth", + decimals: { + default: 18, + }, + }, + osETHarbitrum: { + key: "osETHarbitrum", + symbol: "osETH", + nativeChain: "arbitrum", + tokenId: { + chain: "arbitrum", + address: "0xf7d4e7273E5015C96728A6b02f31C505eE184603", + }, + icon: "https://coin-images.coingecko.com/coins/images/33117/large/Frame_27513839.png?1700732599", + coinGeckoId: "stakewise-staked-eth", + decimals: { + default: 18, + }, + }, + "wstETH ": { + key: "wstETH ", + symbol: "wstETH ", + nativeChain: "bsc", + tokenId: { + chain: "bsc", + address: "0x26c5e01524d2E6280A48F2c50fF6De7e52E9611C", + }, + icon: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3R5bGU9Im1heC1oZWlnaHQ6IDEwMCU7IG1heC13aWR0aDogMTAwJTsiPjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiByeD0iMjU2IiBmaWxsPSIjMDBBM0ZGIj48L3JlY3Q+PHBhdGggb3BhY2l0eT0iMC42IiBkPSJNMzYxLjAxMiAyMzcuODEyTDM2My44NzggMjQyLjIwOUMzOTYuMjA0IDI5MS43OTggMzg4Ljk4NCAzNTYuNzQyIDM0Ni41MiAzOTguMzQ4QzMyMS41MzkgNDIyLjgyNiAyODguNzk4IDQzNS4wNjYgMjU2LjA1NiA0MzUuMDY5QzI1Ni4wNTYgNDM1LjA2OSAyNTYuMDU2IDQzNS4wNjkgMzYxLjAxMiAyMzcuODEyWiIgZmlsbD0id2hpdGUiPjwvcGF0aD48cGF0aCBvcGFjaXR5PSIwLjIiIGQ9Ik0yNTYuMDQ0IDI5Ny43NjRMMzYxIDIzNy44MTJDMjU2LjA0NSA0MzUuMDY5IDI1Ni4wNDQgNDM1LjA2OSAyNTYuMDQ0IDQzNS4wNjlDMjU2LjA0NCAzOTIuMTA4IDI1Ni4wNDQgMzQyLjg4IDI1Ni4wNDQgMjk3Ljc2NFoiIGZpbGw9IndoaXRlIj48L3BhdGg+PHBhdGggZD0iTTE1MC45ODggMjM3LjgxMkwxNDguMTIyIDI0Mi4yMDlDMTE1Ljc5NiAyOTEuNzk4IDEyMy4wMTYgMzU2Ljc0MiAxNjUuNDggMzk4LjM0OEMxOTAuNDYxIDQyMi44MjYgMjIzLjIwMiA0MzUuMDY2IDI1NS45NDQgNDM1LjA2OUMyNTUuOTQ0IDQzNS4wNjkgMjU1Ljk0NCA0MzUuMDY5IDE1MC45ODggMjM3LjgxMloiIGZpbGw9IndoaXRlIj48L3BhdGg+PHBhdGggb3BhY2l0eT0iMC42IiBkPSJNMjU1LjkxNCAyOTcuNzY0TDE1MC45NTggMjM3LjgxMkMyNTUuOTE0IDQzNS4wNjkgMjU1LjkxNCA0MzUuMDY5IDI1NS45MTQgNDM1LjA2OUMyNTUuOTE0IDM5Mi4xMDggMjU1LjkxNCAzNDIuODggMjU1LjkxNCAyOTcuNzY0WiIgZmlsbD0id2hpdGUiPjwvcGF0aD48cGF0aCBvcGFjaXR5PSIwLjIiIGQ9Ik0yNTYuMDgzIDE2My44MzNWMjY3LjIzM0wzNDYuNDkxIDIxNS41NjZMMjU2LjA4MyAxNjMuODMzWiIgZmlsbD0id2hpdGUiPjwvcGF0aD48cGF0aCBvcGFjaXR5PSIwLjYiIGQ9Ik0yNTYuMDU2IDE2My44MzNMMTY1LjU4MyAyMTUuNTY1TDI1Ni4wNTYgMjY3LjIzM1YxNjMuODMzWiIgZmlsbD0id2hpdGUiPjwvcGF0aD48cGF0aCBkPSJNMjU2LjA1NiA3Ni44NzVMMTY1LjU4MyAyMTUuNTk5TDI1Ni4wNTYgMTYzLjcyMlY3Ni44NzVaIiBmaWxsPSJ3aGl0ZSI+PC9wYXRoPjxwYXRoIG9wYWNpdHk9IjAuNiIgZD0iTTI1Ni4wODMgMTYzLjcwNkwzNDYuNTYgMjE1LjU4NUwyNTYuMDgzIDc2Ljc5MTZWMTYzLjcwNloiIGZpbGw9IndoaXRlIj48L3BhdGg+PC9zdmc+Cgo=", + coinGeckoId: "wrapped-steth", + color: "#3AA3FF", + decimals: { + default: 8, + Ethereum: 18, + }, + }, + }, + nttGroups: { + W: { + nttManagers: [ + { + chainName: "solana", + address: "NTtAaoDJhkeHeaVUHnyhwbPNAN6WgBpHkHBTc6d7vLK", + tokenKey: "Wsolana", + transceivers: [ + { + address: "NTtAaoDJhkeHeaVUHnyhwbPNAN6WgBpHkHBTc6d7vLK", + type: "wormhole", + }, + ], + solanaQuoter: "Nqd6XqA8LbsCuG8MLWWuP865NV6jR1MbXeKxD4HLKDJ", + }, + { + chainName: "ethereum", + address: "0xc072B1AEf336eDde59A049699Ef4e8Fa9D594A48", + tokenKey: "Wethereum", + transceivers: [ + { + address: "0xDb55492d7190D1baE8ACbE03911C4E3E7426870c", + type: "wormhole", + }, + ], + }, + { + chainName: "arbitrum", + address: "0x5333d0AcA64a450Add6FeF76D6D1375F726CB484", + tokenKey: "Warbitrum", + transceivers: [ + { + address: "0xD1a8AB69e00266e8B791a15BC47514153A5045a6", + type: "wormhole", + }, + ], + }, + { + chainName: "optimism", + address: "0x1a4F1a790f23Ffb9772966cB6F36dCd658033e13", + tokenKey: "Woptimism", + transceivers: [ + { + address: "0x9bD8b7b527CA4e6738cBDaBdF51C22466756073d", + type: "wormhole", + }, + ], + }, + { + chainName: "base", + address: "0x5333d0AcA64a450Add6FeF76D6D1375F726CB484", + tokenKey: "Wbase", + transceivers: [ + { + address: "0xD1a8AB69e00266e8B791a15BC47514153A5045a6", + type: "wormhole", + }, + ], + }, + ], + }, + osETH: { + nttManagers: [ + { + chainName: "ethereum", + address: "0x896b78fd7e465fb22e80c34ff8f1c5f62fa2c009", + tokenKey: "osETHethereum", + transceivers: [ + { + address: "0xAAFE766B966219C2f3F4271aB8D0Ff1883147AB6", + type: "wormhole", + }, + ], + }, + { + chainName: "arbitrum", + address: "0x485F6Ac6a3B97690910C1546842FfE0629582aD3", + tokenKey: "osETHarbitrum", + transceivers: [ + { + address: "0xAf7ae721070c25dF97043381509DBc042e65736F", + type: "wormhole", + }, + ], + }, + ], + }, + Lido_wstETH: { + displayName: "NTT: Wormhole + Axelar", + nttManagers: [ + { + chainName: "ethereum", + address: "0xb948a93827d68a82F6513Ad178964Da487fe2BD9", + tokenKey: "wstETH", + transceivers: [ + { + address: "0xA1ACC1e6edaB281Febd91E3515093F1DE81F25c0", + type: "wormhole", + }, + ], + }, + { + chainName: "bsc", + address: "0x6981F5621691CBfE3DdD524dE71076b79F0A0278", + tokenKey: "wstETH ", + transceivers: [ + { + address: "0xbe3F7e06872E0dF6CD7FF35B7aa4Bb1446DC9986", + type: "wormhole", + }, + ], + }, + ], + }, + ETHFI: { + nttManagers: [ + { + chainName: "ethereum", + address: "0x344169Cc4abE9459e77bD99D13AA8589b55b6174", + tokenKey: "ETHFIethereum", + transceivers: [ + { + address: "0x3bf4AebcaD920447c5fdD6529239Ab3922ce2186", + type: "wormhole", + }, + ], + }, + { + chainName: "arbitrum", + address: "0x90A82462258F79780498151EF6f663f1D4BE4E3b", + tokenKey: "ETHFIarbitrum", + transceivers: [ + { + address: "0x4386e36B96D437b0F1C04A35E572C10C6627d88a", + type: "wormhole", + }, + ], + }, + ], + }, + }, + } +); diff --git a/apps/connect/src/env/token-bridge.testnet.ts b/apps/connect/src/env/token-bridge.testnet.ts new file mode 100644 index 000000000..1c23ddf45 --- /dev/null +++ b/apps/connect/src/env/token-bridge.testnet.ts @@ -0,0 +1,154 @@ +import { + wormholeConnectConfig as wormholeConnectConfigBase, + ALGORAND, + ACALA, + MORE, +} from "./token-bridge"; +import { mergeTruthy } from "../utils/mergeTruthy"; +import type { WormholeConnectConfig } from "@wormhole-foundation/wormhole-connect"; + +export { navBar } from "./token-bridge"; +export { redirects } from "./token-bridge"; +console.log('TESTTTTTTTTT') +export const wormholeConnectConfig = mergeTruthy( + wormholeConnectConfigBase, + { + moreNetworks: { + networks: [ALGORAND, ACALA, MORE], + } as WormholeConnectConfig["moreNetworks"], + tokensConfig: { + Wsolana: { + key: "Wsolana", + symbol: "W", + nativeChain: "solana", + tokenId: { + chain: "solana", + address: "EetppHswYvV1jjRWoQKC1hejdeBDHR9NNzNtCyRQfrrQ", + }, + icon: "https://assets.coingecko.com/coins/images/35087/standard/womrhole_logo_full_color_rgb_2000px_72ppi_fb766ac85a.png?1708688954", + coinGeckoId: "wormhole", + decimals: { + default: 6, + }, + }, + Wsepolia: { + key: "Wsepolia", + symbol: "Ws", + nativeChain: "sepolia", + tokenId: { + chain: "sepolia", + address: "0x738141EFf659625F2eAD4feECDfCD94155C67f18", + }, + icon: "https://assets.coingecko.com/coins/images/35087/standard/womrhole_logo_full_color_rgb_2000px_72ppi_fb766ac85a.png?1708688954", + coinGeckoId: "wormhole", + decimals: { + default: 18, + }, + }, + Warbitrum_sepolia: { + key: "Warbitrum_sepolia", + symbol: "Ws", + nativeChain: "arbitrum_sepolia", + tokenId: { + chain: "arbitrum_sepolia", + address: "0x395D3C74232D12916ecA8952BA352b4d27818035", + }, + icon: "https://assets.coingecko.com/coins/images/35087/standard/womrhole_logo_full_color_rgb_2000px_72ppi_fb766ac85a.png?1708688954", + coinGeckoId: "wormhole", + decimals: { + default: 18, + }, + }, + Wbase_sepolia: { + key: "Wbase_sepolia", + symbol: "Ws", + nativeChain: "base_sepolia", + tokenId: { + chain: "base_sepolia", + address: "0x1d30E78B7C7fbbcef87ae6e97B5389b2e470CA4a", + }, + icon: "https://assets.coingecko.com/coins/images/35087/standard/womrhole_logo_full_color_rgb_2000px_72ppi_fb766ac85a.png?1708688954", + coinGeckoId: "wormhole", + decimals: { + default: 18, + }, + }, + Woptimism_sepolia: { + key: "Woptimism_sepolia", + symbol: "Ws", + nativeChain: "optimism_sepolia", + tokenId: { + chain: "optimism_sepolia", + address: "0xdDFeABcCf2063CD66f53a1218e23c681Ba6e7962", + }, + icon: "https://assets.coingecko.com/coins/images/35087/standard/womrhole_logo_full_color_rgb_2000px_72ppi_fb766ac85a.png?1708688954", + coinGeckoId: "wormhole", + decimals: { + default: 18, + }, + }, + }, + nttGroups: { + W: { + nttManagers: [ + { + chainName: "solana", + address: "NTtAaoDJhkeHeaVUHnyhwbPNAN6WgBpHkHBTc6d7vLK", + tokenKey: "Wsolana", + transceivers: [ + { + address: "NTtAaoDJhkeHeaVUHnyhwbPNAN6WgBpHkHBTc6d7vLK", + type: "wormhole", + }, + ], + solanaQuoter: "Nqd6XqA8LbsCuG8MLWWuP865NV6jR1MbXeKxD4HLKDJ", + }, + { + chainName: "sepolia", + address: "0x06413c42e913327Bc9a08B7C1E362BAE7C0b9598", + tokenKey: "Wsepolia", + transceivers: [ + { + address: "0x649fF7B32C2DE771043ea105c4aAb2D724497238", + type: "wormhole", + }, + ], + }, + { + chainName: "arbitrum_sepolia", + address: "0xCeC6FB4F352bf3DC2b95E1c41831E4D2DBF9a35D", + tokenKey: "Warbitrum_sepolia", + transceivers: [ + { + address: "0xfA42603152E4f133F5F3DA610CDa91dF5821d8bc", + type: "wormhole", + }, + ], + }, + { + chainName: "base_sepolia", + address: "0x8b9E328bE1b1Bc7501B413d04EBF7479B110775c", + tokenKey: "Wbase_sepolia", + transceivers: [ + { + address: "0x149987472333cD48ac6D28293A338a1EEa6Be7EE", + type: "wormhole", + }, + ], + }, + { + chainName: "optimism_sepolia", + address: "0x27F9Fdd3eaD5aA9A5D827Ca860Be28442A1e7582", + tokenKey: "Woptimism_sepolia", + transceivers: [ + { + address: "0xeCF0496DE01e9Aa4ADB50ae56dB550f52003bdB7", + type: "wormhole", + }, + ], + }, + ], + }, + }, + } +); diff --git a/apps/connect/src/env/token-bridge.ts b/apps/connect/src/env/token-bridge.ts new file mode 100644 index 000000000..9688fe7e8 --- /dev/null +++ b/apps/connect/src/env/token-bridge.ts @@ -0,0 +1,88 @@ +import type { WormholeConnectConfig } from "@wormhole-foundation/wormhole-connect"; +import { chains, PUBLIC_URL } from "./general"; + +type MoreChainDefinition = NonNullable['networks'][0]; + +const ADVANCE_TOOLS_HREF = `${PUBLIC_URL}/advanced-tools/`; +const ADVANCE_TOOLS_HREF_TEMPLATE = `${ADVANCE_TOOLS_HREF}#/transfer?sourceChain={:sourceChain}&targetChain={:targetChain}`; +const USDC_BRIDGE_HREF = `${PUBLIC_URL}/usdc-bridge/`; +const PRIVACY_POLICY_HREF = `${PUBLIC_URL}/#/privacy-policy/`; + + +export const ALGORAND = { + icon: "data:image/svg+xml,%3Csvg width='80' height='80' viewBox='0 0 80 80' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cmask id='mask0_5964_23764' style='mask-type:alpha' maskUnits='userSpaceOnUse' x='0' y='0' width='80' height='80'%3E%3Crect width='80' height='80' fill='%23D9D9D9'/%3E%3C/mask%3E%3Cg mask='url(%23mask0_5964_23764)'%3E%3Cpath d='M17.1382 72.7516L27.3034 55.1578L37.4598 37.6258L47.5588 20.032L49.2361 17.2424L49.9732 20.032L53.0718 31.6141L49.6024 37.6258L39.4461 55.1578L29.3471 72.7516H41.4853L51.6461 55.1578L56.9118 46.0519L59.3925 55.1578L64.0977 72.7516H75L70.2948 55.1578L65.5852 37.6258L64.3493 33.1015L71.9059 20.032H60.8799L60.5048 18.7299L56.6647 4.35825L56.1703 2.5H45.577L45.3298 2.87077L35.4162 20.032L25.2554 37.6258L15.1608 55.1578L5 72.7516H17.1382Z' fill='white'/%3E%3C/g%3E%3C/svg%3E%0A", + name: "algorand", + label: "Algorand", +} as MoreChainDefinition; + +export const ACALA = { + icon: "data:image/svg+xml,%3Csvg fill='none' viewBox='0 0 490 490' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M245 490c135.31 0 245-109.69 245-245S380.31 0 245 0 0 109.69 0 245s109.69 245 245 245zm1-23c122.61 0 222-99.393 222-222S368.607 23 246 23 24 122.393 24 245s99.393 222 222 222zm-1-17c113.22 0 205-91.782 205-205S358.218 40 245 40 40 131.782 40 245s91.782 205 205 205zm.5-25c99.687 0 180.5-80.813 180.5-180.5S345.187 64 245.5 64 65 144.813 65 244.5 145.813 425 245.5 425zM235.313 98.66l130.68 226.7 14.012-24.31-116.66-202.39zm-125.31 201.98 111.84-194.03.231.4.22-.382 132.54 229.93h-28.025l-33.484-58.088c-15.215-4.81-31.414-7.404-48.22-7.404-8.663 0-17.117.605-25.336 1.812l16.14-27.956c3.047-.149 6.113-.224 9.196-.224 10.267 0 20.339.831 30.154 2.43l-53.195-92.284-98.05 170.1zm76.035-2.949 50.256-87.186-14.012-24.309-86.676 150.37h28.025l.266-.462c24.037-14.472 51.619-21.787 81.737-21.787 19.232 0 37.67 3.397 54.747 9.625l-18.775-32.52a187.14 187.14 0 0 0-35.972-3.472c-20.842 0-40.885 3.425-59.596 9.744z' clip-rule='evenodd' fill='url(%23a)' fill-rule='evenodd'/%3E%3Cdefs%3E%3ClinearGradient id='a' x1='462.5' x2='101' y1='490' y2='43.5' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%235A81FF' offset='0'/%3E%3Cstop stop-color='%23E40C5B' offset='.524'/%3E%3Cstop stop-color='%23FF4C3B' offset='1'/%3E%3C/linearGradient%3E%3C/defs%3E%3C/svg%3E", + name: "acala", + label: "Acala", +} as MoreChainDefinition; + +export const SEI = { + icon: "data:image/svg+xml,%3Csvg width='256' height='256' viewBox='0 0 256 256' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='m 127.67411,256 c 38.02499,0 72.18784,-16.49691 95.68658,-42.70676 -10.93123,-9.47577 -27.40461,-10.05162 -39.04159,-0.68556 l -2.22314,1.78953 c -21.30703,17.14908 -52.35448,14.61676 -70.58505,-5.7577 -9.94332,-11.11197 -26.972141,-12.24661 -38.308517,-2.55277 L 47.570215,228.00608 C 69.524032,245.52451 97.372724,256 127.67411,256 Z m 41.60702,-61.98133 C 189.57566,177.68394 218.1014,178.27 237.62049,194.0459 249.28754,174.76386 256,152.16374 256,128.00034 c 0,-26.85042 -8.28793,-51.769568 -22.45139,-72.350916 -9.131,-1.939587 -19.02787,0.325741 -26.54036,6.966212 l -2.13843,1.889976 C 184.37854,82.617466 153.24774,81.516899 134.09348,62.003681 123.64732,51.36103 106.58366,51.011574 95.70776,61.217474 L 65.879285,89.2086 49.470132,71.811468 79.298607,43.820001 C 99.6717,24.70176 131.636,25.356444 151.20497,45.292785 c 10.2248,10.416813 26.8437,11.004304 37.78245,1.335536 l 2.13842,-1.889909 c 6.64005,-5.869189 14.32197,-9.825846 22.366,-11.906837 C 190.75623,12.421275 160.66937,0 127.67411,0 62.5305,0 8.7242884,48.41669 0.45065936,111.14157 20.23734,101.67056 44.644196,105.31504 60.77713,121.79424 c 10.185043,10.40324 26.584631,11.50108 38.071994,2.54936 l 16.677656,-12.99623 c 20.96064,-16.333367 50.58976,-15.542866 70.64448,1.88493 l 32.46987,28.21744 -15.73073,18.00977 -32.46987,-28.21675 c -11.40333,-9.91056 -28.25178,-10.36033 -40.17025,-1.07263 l -16.67765,12.9969 C 92.486461,159.61353 62.356352,157.59639 43.643919,138.48264 32.762761,127.36794 14.966434,126.98019 3.609064,137.61037 L 0,140.98839 c 2.7009241,26.73389 13.649562,51.04108 30.269414,70.34973 l 27.34647,-23.38517 c 21.235909,-18.16038 53.135306,-16.03488 71.761456,4.78115 9.73221,10.87688 26.30602,12.22823 37.67997,3.07342 z' fill='%23ffffff' id='path1050' style='stroke-width:6.82333' /%3E%3C/svg%3E", + name: "sei", + label: "Sei", +} as MoreChainDefinition; + +export const MORE = { + icon: "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='91' height='91' viewBox='0 0 91 91' fill='none'%3E%3Ccircle cx='45.5' cy='45.5' r='45.5' fill='%23E8E8EC'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M26.833 25.8333C26.2807 25.8333 25.833 26.281 25.833 26.8333V63.1666C25.833 63.7189 26.2807 64.1666 26.833 64.1666H63.1663C63.7186 64.1666 64.1663 63.7189 64.1663 63.1666V48.7333C64.1663 48.4571 63.9425 48.2333 63.6663 48.2333C63.3902 48.2333 63.1663 48.4571 63.1663 48.7333V63.1666H26.833V26.8333L41.2663 26.8333C41.5425 26.8333 41.7663 26.6094 41.7663 26.3333C41.7663 26.0571 41.5425 25.8333 41.2663 25.8333H26.833ZM64.0199 25.9797C64.0321 25.9919 64.0435 26.0046 64.0542 26.0177L64.1663 26.324L64.1663 26.3342V37.5333C64.1663 37.8094 63.9425 38.0333 63.6663 38.0333C63.3902 38.0333 63.1663 37.8094 63.1663 37.5333V27.5404L41.6199 49.0868C41.4246 49.2821 41.1081 49.2821 40.9128 49.0868C40.7175 48.8915 40.7175 48.575 40.9128 48.3797L62.4592 26.8333H52.4663C52.1902 26.8333 51.9663 26.6094 51.9663 26.3333C51.9663 26.0571 52.1902 25.8333 52.4663 25.8333H63.666H63.6663C63.6823 25.8333 63.6983 25.834 63.7143 25.8355C63.7632 25.8402 63.8116 25.8521 63.8577 25.8712C63.9167 25.8956 63.972 25.9318 64.0199 25.9797Z' fill='%230F1022'/%3E%3Cpath d='M63.1663 63.1666V64.1666H64.1663V63.1666H63.1663ZM26.833 63.1666H25.833V64.1666H26.833V63.1666ZM26.833 26.8333L26.833 25.8333L25.833 25.8333V26.8333H26.833ZM41.2663 26.8333L41.2663 25.8333H41.2663L41.2663 26.8333ZM64.0542 26.0177L64.9934 25.6742L64.9356 25.5161L64.8292 25.3857L64.0542 26.0177ZM64.0199 25.9797L64.727 25.2726L64.727 25.2726L64.0199 25.9797ZM64.1663 26.324L65.1662 26.3158L65.1648 26.1429L65.1054 25.9806L64.1663 26.324ZM64.1663 26.3342L65.1664 26.3342L65.1663 26.326L64.1663 26.3342ZM63.1663 27.5404H64.1663V25.1261L62.4592 26.8333L63.1663 27.5404ZM40.9128 49.0868L40.2057 49.7939L40.2057 49.7939L40.9128 49.0868ZM40.9128 48.3797L40.2057 47.6726L40.2057 47.6726L40.9128 48.3797ZM62.4592 26.8333L63.1663 27.5404L64.8734 25.8333H62.4592V26.8333ZM63.7143 25.8355L63.8096 24.8401L63.8095 24.8401L63.7143 25.8355ZM63.8577 25.8712L64.2401 24.9472L64.24 24.9472L63.8577 25.8712ZM26.833 26.8333V26.8333V24.8333C25.7284 24.8333 24.833 25.7287 24.833 26.8333H26.833ZM26.833 63.1666V26.8333H24.833V63.1666H26.833ZM26.833 63.1666H26.833H24.833C24.833 64.2712 25.7284 65.1666 26.833 65.1666V63.1666ZM63.1663 63.1666H26.833V65.1666H63.1663V63.1666ZM63.1663 63.1666V65.1666C64.2709 65.1666 65.1663 64.2712 65.1663 63.1666H63.1663ZM63.1663 48.7333V63.1666H65.1663V48.7333H63.1663ZM63.6663 49.2333C63.3902 49.2333 63.1663 49.0094 63.1663 48.7333H65.1663C65.1663 47.9048 64.4948 47.2333 63.6663 47.2333V49.2333ZM64.1663 48.7333C64.1663 49.0094 63.9425 49.2333 63.6663 49.2333V47.2333C62.8379 47.2333 62.1663 47.9048 62.1663 48.7333H64.1663ZM64.1663 63.1666V48.7333H62.1663V63.1666H64.1663ZM26.833 64.1666H63.1663V62.1666H26.833V64.1666ZM25.833 26.8333V63.1666H27.833V26.8333H25.833ZM41.2663 25.8333L26.833 25.8333L26.833 27.8333L41.2663 27.8333L41.2663 25.8333ZM40.7663 26.3333C40.7663 26.0571 40.9902 25.8333 41.2663 25.8333V27.8333C42.0948 27.8333 42.7663 27.1617 42.7663 26.3333H40.7663ZM41.2663 26.8333C40.9902 26.8333 40.7663 26.6094 40.7663 26.3333H42.7663C42.7663 25.5048 42.0948 24.8333 41.2663 24.8333V26.8333ZM26.833 26.8333H41.2663V24.8333H26.833V26.8333ZM64.8292 25.3857C64.7971 25.3464 64.763 25.3086 64.727 25.2726L63.3128 26.6868C63.3012 26.6752 63.2899 26.6628 63.2793 26.6497L64.8292 25.3857ZM65.1054 25.9806L64.9934 25.6742L63.1151 26.3611L63.2271 26.6675L65.1054 25.9806ZM65.1663 26.326L65.1662 26.3158L63.1663 26.3322L63.1664 26.3425L65.1663 26.326ZM65.1663 37.5333V26.3342H63.1663V37.5333H65.1663ZM63.6663 39.0333C64.4948 39.0333 65.1663 38.3617 65.1663 37.5333H63.1663C63.1663 37.2571 63.3902 37.0333 63.6663 37.0333V39.0333ZM62.1663 37.5333C62.1663 38.3617 62.8379 39.0333 63.6663 39.0333V37.0333C63.9425 37.0333 64.1663 37.2571 64.1663 37.5333H62.1663ZM62.1663 27.5404V37.5333H64.1663V27.5404H62.1663ZM42.327 49.7939L63.8734 28.2475L62.4592 26.8333L40.9128 48.3797L42.327 49.7939ZM40.2057 49.7939C40.7915 50.3797 41.7412 50.3797 42.327 49.7939L40.9128 48.3797C41.108 48.1844 41.4246 48.1844 41.6199 48.3797L40.2057 49.7939ZM40.2057 47.6726C39.6199 48.2584 39.6199 49.2081 40.2057 49.7939L41.6199 48.3797C41.8152 48.575 41.8152 48.8915 41.6199 49.0868L40.2057 47.6726ZM61.7521 26.1261L40.2057 47.6726L41.6199 49.0868L63.1663 27.5404L61.7521 26.1261ZM52.4663 27.8333H62.4592V25.8333H52.4663V27.8333ZM50.9663 26.3333C50.9663 27.1617 51.6379 27.8333 52.4663 27.8333V25.8333C52.7425 25.8333 52.9663 26.0571 52.9663 26.3333H50.9663ZM52.4663 24.8333C51.6379 24.8333 50.9663 25.5048 50.9663 26.3333H52.9663C52.9663 26.6094 52.7425 26.8333 52.4663 26.8333V24.8333ZM63.666 24.8333H52.4663V26.8333H63.666V24.8333ZM63.6663 24.8333H63.666V26.8333H63.6663V24.8333ZM63.8095 24.8401C63.7619 24.8355 63.7141 24.8333 63.6663 24.8333V26.8333C63.6505 26.8333 63.6347 26.8325 63.619 26.831L63.8095 24.8401ZM64.24 24.9472C64.1011 24.8897 63.9559 24.8541 63.8096 24.8401L63.619 26.831C63.5706 26.8264 63.5221 26.8146 63.4754 26.7952L64.24 24.9472ZM64.727 25.2726C64.5845 25.1301 64.4184 25.0209 64.2401 24.9472L63.4754 26.7952C63.4151 26.7702 63.3594 26.7334 63.3128 26.6868L64.727 25.2726Z' fill='%230F1022'/%3E%3C/svg%3E", + name: "more", + label: "More networks", + showOpenInNewIcon: false, + href: ADVANCE_TOOLS_HREF, +} as MoreChainDefinition; + +export const navBar = [ + { label: "Home", active: true, href: `${PUBLIC_URL}/` }, + { + label: "Staking", + href: "https://www.tally.xyz/gov/wormhole", + isBlank: true, + }, + { label: "Rewards", href: `${PUBLIC_URL}/rewards-dashboard/`, isBlank: true }, + { label: "USDC", href: USDC_BRIDGE_HREF }, + { label: "Privacy Policy", href: PRIVACY_POLICY_HREF }, +]; + +export const redirects = { + source: [ + "#/nft", + "#/redeem", + "#/nft-origin-verifier", + "#/token-origin-verifier", + "#/register", + "#/migrate/Ethereum/:legacyAsset/", + "#/migrate/BinanceSmartChain/:legacyAsset/", + "#/migrate/Celo/:legacyAsset/", + "#/migrate/Ethereum/", + "#/migrate/BinanceSmartChain/", + "#/migrate/Celo/", + "#/stats", + "#/withdraw-tokens-terra", + "#/unwrap-native", + "#/custody-addresses", + ], + target: ADVANCE_TOOLS_HREF, +}; + +export const wormholeConnectConfig: WormholeConnectConfig = { + cctpWarning: { + href: USDC_BRIDGE_HREF, + }, + networks: [...chains, "solana", "injective", "klaytn"], + moreNetworks: { + href: ADVANCE_TOOLS_HREF_TEMPLATE, + target: "_blank", + description: + "Advance Tools offers unlimited transfers across chains for tokens and NFTs wrapped by Wormhole.", + networks: [], + }, + moreTokens: { + label: "More tokens ...", + href: ADVANCE_TOOLS_HREF_TEMPLATE, + }, + tokensConfig: {}, +}; diff --git a/apps/connect/src/env/usdc-bridge.mainnet.ts b/apps/connect/src/env/usdc-bridge.mainnet.ts new file mode 100644 index 000000000..00fc6e16e --- /dev/null +++ b/apps/connect/src/env/usdc-bridge.mainnet.ts @@ -0,0 +1 @@ +export const this_is_a_config = "USDC MAIN"; diff --git a/apps/connect/src/env/usdc-bridge.testnet.ts b/apps/connect/src/env/usdc-bridge.testnet.ts new file mode 100644 index 000000000..c805b3749 --- /dev/null +++ b/apps/connect/src/env/usdc-bridge.testnet.ts @@ -0,0 +1 @@ +export const this_is_a_config = "USDC TEST"; diff --git a/apps/connect/src/utils/isObject.test.ts b/apps/connect/src/utils/isObject.test.ts new file mode 100644 index 000000000..2f951b0e2 --- /dev/null +++ b/apps/connect/src/utils/isObject.test.ts @@ -0,0 +1,13 @@ +import { isObject } from "./isObject"; + +describe("isObject", () => { + it("should return true on valid objects", () => { + expect(isObject({})).toBe(true); + }); + + it("should return false on invalid objects", () => { + expect(isObject(null)).toBe(false); + expect(isObject([])).toBe(false); + expect(isObject("random")).toBe(false); + }); +}); diff --git a/apps/connect/src/utils/isObject.ts b/apps/connect/src/utils/isObject.ts new file mode 100644 index 000000000..daecea4b5 --- /dev/null +++ b/apps/connect/src/utils/isObject.ts @@ -0,0 +1,3 @@ +export const isObject = (item: any): boolean => { + return !!item && typeof item === "object" && !Array.isArray(item); +}; diff --git a/apps/connect/src/utils/mergeTruthy.test.ts b/apps/connect/src/utils/mergeTruthy.test.ts new file mode 100644 index 000000000..f8a54d707 --- /dev/null +++ b/apps/connect/src/utils/mergeTruthy.test.ts @@ -0,0 +1,37 @@ +import { mergeTruthy } from "./mergeTruthy"; + +describe("mergeTruthy", () => { + it("should merge using values from A and B only when B is truthy", () => { + const a = { a: 1, b: 2, c: 5 }; + const b = { a: undefined, b: 3, c: 0 }; + expect(mergeTruthy(a, b as unknown)).toEqual({ a: 1, b: 3, c: 0 }); + }); + + it("should merge deeply", () => { + const a = { a: 1, b: { c: 2, d: 3 } }; + const b = { a: 4, b: { c: undefined, d: 6 } }; + expect(mergeTruthy(a, b as unknown)).toEqual({ a: 4, b: { c: 2, d: 6 } }); + }); + + it("should NOT merge deeply when value is an array", () => { + const a = { a: 1, b: [1, 2, 3] }; + const b = { a: undefined, b: [4] }; + expect(mergeTruthy(a, b as unknown)).toEqual({ a: 1, b: [4] }); + }); + + it("should create new references for objects", () => { + const a = { a: 1, b: { c: 2, d: 3 } }; + const b = { a: 4, b: { c: undefined, d: 6 } }; + const c = mergeTruthy(a, b as unknown); + expect(c).toEqual({ a: 4, b: { c: 2, d: 6 } }); + expect(c.b).not.toBe(a.b); + expect(c.b).not.toBe(b.b); + }); + + it("should merge using a custom is truthy function", () => { + const a = { a: 1, b: 2 }; + const b = { a: 3, b: 4 }; + const fn = (arg: unknown) => arg !== 4; + expect(mergeTruthy(a, b, fn)).toEqual({ a: 3, b: 2 }); + }); +}); diff --git a/apps/connect/src/utils/mergeTruthy.ts b/apps/connect/src/utils/mergeTruthy.ts new file mode 100644 index 000000000..e82825b3b --- /dev/null +++ b/apps/connect/src/utils/mergeTruthy.ts @@ -0,0 +1,17 @@ +import { isObject } from "./isObject"; + +/** deep merges args with a condition per node returning a new instance */ +export const mergeTruthy = ( + a: Partial, + b: Partial, + isTruthy = (arg: any) => ![null, undefined].includes(arg) +): T => { + const shouldLoop = isObject(a) && isObject(b); + if (!shouldLoop) return (isTruthy(b) ? b : a) as T; + const keyList = Array.from(new Set([...Object.keys(a!), ...Object.keys(b!)])); + + return keyList.reduce((total, key) => { + total[key] = mergeTruthy(a[key], b[key], isTruthy); + return total; + }, {}) as T; +}; diff --git a/apps/connect/tsconfig.json b/apps/connect/tsconfig.json index bec1c0de8..a928164fa 100644 --- a/apps/connect/tsconfig.json +++ b/apps/connect/tsconfig.json @@ -20,6 +20,11 @@ "noUnusedLocals": true, "noUnusedParameters": true, "noFallthroughCasesInSwitch": true, + + "baseUrl": ".", + "paths": { + "@env": ["./src/env/index.ts"], + } }, "include": ["src"], "references": [{ "path": "./tsconfig.node.json" }], diff --git a/apps/connect/vite.token-bridge.config.ts b/apps/connect/vite.token-bridge.config.ts index 2905af62c..c85483c37 100644 --- a/apps/connect/vite.token-bridge.config.ts +++ b/apps/connect/vite.token-bridge.config.ts @@ -1,6 +1,7 @@ import { defineConfig } from 'vite' import viteConfig, { chains } from './vite.config' import type { WormholeConnectConfig } from '@wormhole-foundation/wormhole-connect' +import { resolve } from 'path'; const PUBLIC_URL = viteConfig.base; const ADVANCE_TOOLS_HREF = `${PUBLIC_URL}/advanced-tools/` @@ -634,6 +635,13 @@ const MAINNET_TOKEN_CONFIG: WormholeConnectConfig = { // https://vitejs.dev/config/ export default defineConfig({ ...viteConfig, + resolve: { + ...viteConfig.resolve, + alias: [ + ...(viteConfig.resolve?.alias as any || []), + { find: '@env', replacement: resolve(__dirname, `./src/env/token-bridge.${process.env.VITE_APP_CLUSTER === 'mainnet' ? 'mainnet' : 'testnet'}.ts`) } + ] + }, define: { ...viteConfig?.define, navBar: [ @@ -682,4 +690,4 @@ export default defineConfig({ ...(process.env.VITE_APP_CLUSTER === 'mainnet' ? MAINNET_TOKEN_CONFIG : TESTNET_TOKEN_CONFIG) } } -}) \ No newline at end of file +}) diff --git a/apps/connect/vite.usdc-bridge.config.ts b/apps/connect/vite.usdc-bridge.config.ts index 3b37bba6b..c1ae03f08 100644 --- a/apps/connect/vite.usdc-bridge.config.ts +++ b/apps/connect/vite.usdc-bridge.config.ts @@ -1,5 +1,6 @@ import { defineConfig } from 'vite' import viteConfig from './vite.config' +import { resolve } from 'path'; const PUBLIC_URL = viteConfig.base; const TESTNET_NETWORKS = ['goerli', 'fuji', 'arbitrumgoerli', 'optimismgoerli', 'basegoerli', "mumbai", "solana"]; @@ -8,6 +9,13 @@ const MAINNET_NETWORKS = ["ethereum", "avalanche", "arbitrum", "optimism", "base // https://vitejs.dev/config/ export default defineConfig({ ...viteConfig, + resolve: { + ...viteConfig.resolve, + alias: [ + ...(viteConfig.resolve?.alias as any || []), + { find: '@env', replacement: resolve(__dirname, `./src/env/token-bridge.${process.env.VITE_APP_CLUSTER === 'mainnet' ? 'mainnet' : 'testnet'}.ts`) } + ] + }, base: `${PUBLIC_URL}/usdc-bridge/`, define: { ...viteConfig?.define, From 1c86e944d60583aec79859480b23728e4801d7d6 Mon Sep 17 00:00:00 2001 From: Daniel Isaac Geslin Date: Mon, 15 Jul 2024 11:18:55 +0200 Subject: [PATCH 2/9] wip --- apps/connect/jest.config.ts | 3 + apps/connect/jest.setup.tsx | 2 - apps/connect/package.json | 7 +- apps/connect/src/App.tsx | 8 +- apps/connect/src/components/atoms/NavBar.tsx | 7 +- apps/connect/src/components/atoms/Version.tsx | 5 +- apps/connect/src/env/common.ts | 85 ++ apps/connect/src/env/general.ts | 23 - apps/connect/src/env/index.ts | 2 +- apps/connect/src/env/token-bridge.mainnet.ts | 893 +++++++++--------- apps/connect/src/env/token-bridge.testnet.ts | 284 +++--- apps/connect/src/env/token-bridge.ts | 109 ++- apps/connect/src/env/usdc-bridge.mainnet.ts | 23 +- apps/connect/src/env/usdc-bridge.testnet.ts | 23 +- apps/connect/src/env/usdc-bridge.ts | 46 + apps/connect/src/hooks/useFormatAssetParam.ts | 5 +- apps/connect/src/main.tsx | 7 +- apps/connect/src/utils/isObject.ts | 1 + ...{mergeTruthy.test.ts => mergeDeep.test.ts} | 17 +- .../utils/{mergeTruthy.ts => mergeDeep.ts} | 7 +- apps/connect/src/vite-env.d.ts | 26 - apps/connect/vite.config.ts | 97 +- apps/connect/vite.token-bridge.config.ts | 698 +------------- apps/connect/vite.usdc-bridge.config.ts | 44 +- 24 files changed, 897 insertions(+), 1525 deletions(-) create mode 100644 apps/connect/src/env/common.ts delete mode 100644 apps/connect/src/env/general.ts create mode 100644 apps/connect/src/env/usdc-bridge.ts rename apps/connect/src/utils/{mergeTruthy.test.ts => mergeDeep.test.ts} (69%) rename apps/connect/src/utils/{mergeTruthy.ts => mergeDeep.ts} (72%) diff --git a/apps/connect/jest.config.ts b/apps/connect/jest.config.ts index 093af77df..1d90d6872 100644 --- a/apps/connect/jest.config.ts +++ b/apps/connect/jest.config.ts @@ -10,4 +10,7 @@ export default { transform: { ".(ts|tsx)": "ts-jest", }, + moduleNameMapper: { + "@env": "/src/env/index.ts" + }, } as Config; diff --git a/apps/connect/jest.setup.tsx b/apps/connect/jest.setup.tsx index f29e61e9b..cc1bcbd57 100644 --- a/apps/connect/jest.setup.tsx +++ b/apps/connect/jest.setup.tsx @@ -5,6 +5,4 @@ import { TextEncoder, TextDecoder } from "util"; Object.assign(global, { TextDecoder, TextEncoder, - navBar: [], - wormholeConnectConfig: {}, }); diff --git a/apps/connect/package.json b/apps/connect/package.json index dec200c45..3b586c1f8 100644 --- a/apps/connect/package.json +++ b/apps/connect/package.json @@ -5,10 +5,15 @@ "type": "module", "scripts": { "dev:usdc-bridge": "vite --config ./vite.usdc-bridge.config.ts", + "dev:usdc-bridge:mainnet": " VITE_APP_CLUSTER=mainnet npm run dev:usdc-bridge", + "dev:usdc-bridge:testnet": " VITE_APP_CLUSTER=testnet npm run dev:usdc-bridge", "build:usdc-bridge": "tsc && vite build --config ./vite.usdc-bridge.config.ts", "dev:token-bridge": "vite --config ./vite.token-bridge.config.ts", + "dev:token-bridge:mainnet": "VITE_APP_CLUSTER=mainnet npm run dev:token-bridge", + "dev:token-bridge:testnet": "VITE_APP_CLUSTER=testnet npm run dev:token-bridge", "build:token-bridge": "tsc && vite build --config ./vite.token-bridge.config.ts", - "dev": "vite", + "dev": "npm run dev:token-bridge:mainnet", + "start": "npm run dev", "build": "tsc && vite build", "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", "prettier": "prettier --check ./src", diff --git a/apps/connect/src/App.tsx b/apps/connect/src/App.tsx index cf490af38..b1b2dacac 100644 --- a/apps/connect/src/App.tsx +++ b/apps/connect/src/App.tsx @@ -15,12 +15,10 @@ import { useRoutes } from "react-router-dom"; import PrivacyPolicy from "./components/pages/PrivacyPolicy"; import { PrivacyPolicyPath, isPreview, isProduction } from "./utils/constants"; import Banner from "./components/atoms/Banner"; - -import * as ENV from "@env"; -console.log("THIS IS THE ENVVVVV_______", ENV); +import { ENV } from "@env"; const defaultConfig: WormholeConnectConfig = { - ...wormholeConnectConfig, + ...ENV.wormholeConnectConfig, ...((isPreview || isProduction) && { eventHandler: eventHandler, }), @@ -81,7 +79,7 @@ export default function Root() { ]); return ( <> - {versions.map(({ appName, version }, idx) => ( + {ENV.versions.map(({ appName, version }, idx) => ( ({ background: "transparent", @@ -85,7 +86,7 @@ const Spacer = styled("div")(() => ({ const womrholescanButton = ( @@ -105,7 +106,7 @@ export default function NavBar() {
- {navBar.map(({ label, active, href, isBlank }, idx) => ( + {ENV.navBar.map(({ label, active, href, isBlank }, idx) => ( - {navBar.map(({ label, href }, idx) => ( + {ENV.navBar.map(({ label, href }, idx) => ( diff --git a/apps/connect/src/components/atoms/Version.tsx b/apps/connect/src/components/atoms/Version.tsx index c22c8ca9c..a9b7fe7ac 100644 --- a/apps/connect/src/components/atoms/Version.tsx +++ b/apps/connect/src/components/atoms/Version.tsx @@ -1,13 +1,14 @@ import React from "react"; import Footer from "./Footer"; +import { ENV } from "@env"; export default function Version() { return (
- {versions.map(({ appName, version }, idx) => ( + {ENV.versions.map(({ appName, version }, idx) => ( {appName}: {version} - {idx < versions.length - 1 &&
} + {idx < ENV.versions.length - 1 &&
}
))}
diff --git a/apps/connect/src/env/common.ts b/apps/connect/src/env/common.ts new file mode 100644 index 000000000..7901497e5 --- /dev/null +++ b/apps/connect/src/env/common.ts @@ -0,0 +1,85 @@ +import type { WormholeConnectConfig } from "@wormhole-foundation/wormhole-connect"; +import packageJson from "../../package.json"; + +const rpcs = (chains: string[], template: (chain: string) => string) => + chains + .map((chain: string) => ({ [chain]: template(chain) })) + .reduce((acc, cur) => ({ ...acc, ...cur }), {}); +const asRpcHost = (chain: string) => + `https://and76cjzpa.execute-api.us-east-2.amazonaws.com/${chain}/`; +export const chains = [ + "wormchain", + "osmosis", + "ethereum", + "sui", + "aptos", + "kujira", + "evmos", + "bsc", + "polygon", + "avalanche", + "fantom", + "celo", + "moonbeam", + "base", + "arbitrum", + "optimism", + "scroll", + "xlayer", + "mantle", +]; + +const MAINNET_RPCS = { + rpcs: { + ...rpcs(chains, asRpcHost), + solana: "https://wormhole.rpcpool.com/", + }, +}; + +export const PUBLIC_URL = import.meta.env.PUBLIC_URL || ""; + +export const versions: Env["versions"] = [ + { + appName: "Portal Bridge", + version: `v${import.meta.env.VITE_APP_VERSION || "0.0.0"}`, + }, + { + appName: "Wormhole Connect", + version: `v${packageJson.version}`, + }, +]; + +export const wormholeConnectConfigCommon: Partial = { + walletConnectProjectId: + import.meta.env.VITE_APP_WALLET_CONNECT_PROJECT_ID || "", + + env: import.meta.env.VITE_APP_CLUSTER || "mainnet", + ...(import.meta.env.VITE_APP_CLUSTER === "mainnet" ? MAINNET_RPCS : {}), + showHamburgerMenu: false, + explorer: { + href: `https://wormholescan.io/#/txs?address={:address}&network=${import.meta.env.VITE_APP_CLUSTER || "testnet"}`, + }, + menu: [ + { + label: "Advanced Tools", + href: `${import.meta.env.PUBLIC_URL}/advanced-tools/`, + order: 1, + }, + { + label: "Privacy Policy", + href: `${import.meta.env.PUBLIC_URL}/#/privacy-policy/`, + }, + ], +}; + +export interface Env { + wormholeConnectConfig: WormholeConnectConfig; + navBar: { + label: string; + active?: boolean; + href: string; + isBlank?: boolean; + }[]; + redirects?: { source: string[]; target: string }; + versions: { version: string; appName: string }[]; +} diff --git a/apps/connect/src/env/general.ts b/apps/connect/src/env/general.ts deleted file mode 100644 index 4367ee903..000000000 --- a/apps/connect/src/env/general.ts +++ /dev/null @@ -1,23 +0,0 @@ -export const chains = [ - "wormchain", - "osmosis", - "ethereum", - "sui", - "aptos", - "kujira", - "evmos", - "bsc", - "polygon", - "avalanche", - "fantom", - "celo", - "moonbeam", - "base", - "arbitrum", - "optimism", - "scroll", - "xlayer", - "mantle", -]; - -export const PUBLIC_URL = import.meta.env.PUBLIC_URL || ""; diff --git a/apps/connect/src/env/index.ts b/apps/connect/src/env/index.ts index fb291e2a7..6b9e0a396 100644 --- a/apps/connect/src/env/index.ts +++ b/apps/connect/src/env/index.ts @@ -1 +1 @@ -export const this_is_a_config = "replace_me with types"; +export { ENV } from "./token-bridge"; diff --git a/apps/connect/src/env/token-bridge.mainnet.ts b/apps/connect/src/env/token-bridge.mainnet.ts index 53b2d7c35..690ee9d88 100644 --- a/apps/connect/src/env/token-bridge.mainnet.ts +++ b/apps/connect/src/env/token-bridge.mainnet.ts @@ -1,473 +1,468 @@ -import { - ACALA, - ALGORAND, - MORE, - SEI, - wormholeConnectConfig as wormholeConnectConfigBase, -} from "./token-bridge"; -import { mergeTruthy } from "../utils/mergeTruthy"; +import { ACALA, ALGORAND, MORE, SEI, ENV as ENV_BASE } from "./token-bridge"; +import { mergeDeep } from "../utils/mergeDeep"; import type { WormholeConnectConfig } from "@wormhole-foundation/wormhole-connect"; +import { Env } from "./common"; -export { navBar } from "./token-bridge"; -export { redirects } from "./token-bridge"; -console.log('MAAAAAIIINNNNN') -export const wormholeConnectConfig = mergeTruthy( - wormholeConnectConfigBase, - { - moreNetworks: { - networks: [ALGORAND, ACALA, SEI, MORE], - } as WormholeConnectConfig["moreNetworks"], - tokensConfig: { - ETHFIethereum: { - key: "ETHFIethereum", - symbol: "ETHFI", - nativeChain: "ethereum", - tokenId: { - chain: "ethereum", - address: "0xfe0c30065b384f05761f15d0cc899d4f9f9cc0eb", - }, - icon: "https://assets.coingecko.com/coins/images/35958/standard/etherfi.jpeg?1710254562", - coinGeckoId: "ether-fi", - decimals: { - default: 18, - Ethereum: 18, - }, - }, - ETHFIarbitrum: { - key: "ETHFIarbitrum", - symbol: "ETHFI", - nativeChain: "arbitrum", - tokenId: { - chain: "arbitrum", - address: "0x7189fb5B6504bbfF6a852B13B7B82a3c118fDc27", - }, - icon: "https://assets.coingecko.com/coins/images/35958/standard/etherfi.jpeg?1710254562", - coinGeckoId: "ether-fi", - decimals: { - default: 18, - Arbitrum: 18, - }, - }, - WOM: { - key: "WOM", - symbol: "WOM", - nativeChain: "bsc", - tokenId: { - chain: "bsc", - address: "0xad6742a35fb341a9cc6ad674738dd8da98b94fb1", - }, - icon: "https://assets.coingecko.com/coins/images/26946/standard/Wombat_Token.png?1696526001", - coinGeckoId: "wombat-exchange", - decimals: { - default: 18, - }, - //Ehtereum, Avalanche, Base, Scroll, Optimism, Arbitrum, BNB Chain - foreignAssets: { - ethereum: { - address: "0xc0B314a8c08637685Fc3daFC477b92028c540CFB", - decimals: 18, - }, - avalanche: { - address: "0xa15E4544D141aa98C4581a1EA10Eb9048c3b3382", - decimals: 18, - }, - base: { - address: "0xD9541B08B375D58ae104EC247d7443D2D7235D64", - decimals: 18, - }, - scroll: { - address: "0x1a7aD8A6171A1EA84DD1E6d649cbd616189660D9", - decimals: 18, - }, - optimism: { - address: "0xD2612B256F6f76feA8C6fbca0BF3166D0d13a668", - decimals: 18, - }, - arbitrum: { - address: "0x7B5EB3940021Ec0e8e463D5dBB4B7B09a89DDF96", - decimals: 18, +export const ENV: Env = { + ...ENV_BASE, + wormholeConnectConfig: mergeDeep( + ENV_BASE.wormholeConnectConfig, + { + moreNetworks: { + networks: [ALGORAND, ACALA, SEI, MORE], + } as WormholeConnectConfig["moreNetworks"], + tokensConfig: { + ETHFIethereum: { + key: "ETHFIethereum", + symbol: "ETHFI", + nativeChain: "ethereum", + tokenId: { + chain: "ethereum", + address: "0xfe0c30065b384f05761f15d0cc899d4f9f9cc0eb", + }, + icon: "https://assets.coingecko.com/coins/images/35958/standard/etherfi.jpeg?1710254562", + coinGeckoId: "ether-fi", + decimals: { + default: 18, + Ethereum: 18, }, }, - }, - "USDC.e": { - key: "USDC.e", - symbol: "USDC.e", - nativeChain: "polygon", - tokenId: { - chain: "polygon", - address: "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174", - }, - icon: "data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' data-name='86977684-12db-4850-8f30-233a7c267d11' width='2000' height='2000' viewBox='0 0 2000 2000' style='max-height: 100%25%3b max-width: 100%25%3b'%3e%3cpath fill='%232775ca' d='M1000 2000c554.17 0 1000-445.83 1000-1000S1554.17 0 1000 0 0 445.83 0 1000s445.83 1000 1000 1000z'%3e%3c/path%3e%3cpath fill='white' d='M1275 1158.33c0-145.83-87.5-195.83-262.5-216.66-125-16.67-150-50-150-108.34s41.67-95.83 125-95.83c75 0 116.67 25 137.5 87.5 4.17 12.5 16.67 20.83 29.17 20.83h66.66c16.67 0 29.17-12.5 29.17-29.16v-4.17c-16.67-91.67-91.67-162.5-187.5-170.83v-100c0-16.67-12.5-29.17-33.33-33.34h-62.5c-16.67 0-29.17 12.5-33.34 33.34v95.83c-125 16.67-204.16 100-204.16 204.17 0 137.5 83.33 191.66 258.33 212.5 116.67 20.83 154.17 45.83 154.17 112.5s-58.34 112.5-137.5 112.5c-108.34 0-145.84-45.84-158.34-108.34-4.16-16.66-16.66-25-29.16-25h-70.84c-16.66 0-29.16 12.5-29.16 29.17v4.17c16.66 104.16 83.33 179.16 220.83 200v100c0 16.66 12.5 29.16 33.33 33.33h62.5c16.67 0 29.17-12.5 33.34-33.33v-100c125-20.84 208.33-108.34 208.33-220.84z'%3e%3c/path%3e%3cpath fill='white' d='M787.5 1595.83c-325-116.66-491.67-479.16-370.83-800 62.5-175 200-308.33 370.83-370.83 16.67-8.33 25-20.83 25-41.67V325c0-16.67-8.33-29.17-25-33.33-4.17 0-12.5 0-16.67 4.16-395.83 125-612.5 545.84-487.5 941.67 75 233.33 254.17 412.5 487.5 487.5 16.67 8.33 33.34 0 37.5-16.67 4.17-4.16 4.17-8.33 4.17-16.66v-58.34c0-12.5-12.5-29.16-25-37.5zm441.67-1300c-16.67-8.33-33.34 0-37.5 16.67-4.17 4.17-4.17 8.33-4.17 16.67v58.33c0 16.67 12.5 33.33 25 41.67 325 116.66 491.67 479.16 370.83 800-62.5 175-200 308.33-370.83 370.83-16.67 8.33-25 20.83-25 41.67V1700c0 16.67 8.33 29.17 25 33.33 4.17 0 12.5 0 16.67-4.16 395.83-125 612.5-545.84 487.5-941.67-75-237.5-258.34-416.67-487.5-491.67z'%3e%3c/path%3e%3c/svg%3e", - coinGeckoId: "bridged-usdc-polygon-pos-bridge", - color: "#FC8E03", - decimals: { - default: 6, - }, - foreignAssets: { - ethereum: { - address: "0x566957eF80F9fd5526CD2BEF8BE67035C0b81130", - decimals: 6, - }, - bsc: { - address: "0x672147dD47674757C457eB155BAA382cc10705Dd", - decimals: 6, - }, - avalanche: { - address: "0x543672E9CBEC728CBBa9C3Ccd99ed80aC3607FA8", - decimals: 6, + ETHFIarbitrum: { + key: "ETHFIarbitrum", + symbol: "ETHFI", + nativeChain: "arbitrum", + tokenId: { + chain: "arbitrum", + address: "0x7189fb5B6504bbfF6a852B13B7B82a3c118fDc27", + }, + icon: "https://assets.coingecko.com/coins/images/35958/standard/etherfi.jpeg?1710254562", + coinGeckoId: "ether-fi", + decimals: { + default: 18, + Arbitrum: 18, }, - sui: { - address: - "0xcf72ec52c0f8ddead746252481fb44ff6e8485a39b803825bde6b00d77cdb0bb::coin::COIN", - decimals: 6, - }, - aptos: { - address: - "0xc7160b1c2415d19a88add188ec726e62aab0045f0aed798106a2ef2994a9101e::coin::T", - decimals: 6, - }, - arbitrum: { - address: "0x9A3Fba8a0870Fb9765023681DAa5390C7919C916", - decimals: 6, - }, - fantom: { - address: "0x6e0e8cf6Ad151e1260A4D398faaEDFC450A9f00a", - decimals: 6, - }, - base: { - address: "0x59f4f969dd3A91A943651C9625E96822DC84Ef94", - decimals: 6, - }, - celo: { - address: "0x0E21B5BdFb6eDBa7d903a610d4DE2F8c72586017", - decimals: 6, - }, - }, - }, - BONK: { - key: "BONK", - symbol: "BONK", - nativeChain: "solana", - tokenId: { - chain: "solana", - address: "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263", - }, - icon: "https://quei6zhlcfsxdfyes577gy7bkxmuz7qqakyt72xlbkyh7fysmoza.arweave.net/hQiPZOsRZXGXBJd_82PhVdlM_hACsT_q6wqwf5cSY7I", - coinGeckoId: "bonk", - color: "#FC8E03", - decimals: { - default: 5, }, - foreignAssets: { - ethereum: { - address: "0x1151CB3d861920e07a38e03eEAd12C32178567F6", - decimals: 5, - }, - bsc: { - address: "0xA697e272a73744b343528C3Bc4702F2565b2F422", - decimals: 5, - }, - polygon: { - address: "0xe5B49820e5A1063F6F4DdF851327b5E8B2301048", - decimals: 5, - }, - avalanche: { - address: "0xC07C98a93591504584738e4569928DDb3b9f12A7", - decimals: 5, - }, - sui: { - address: - "0x6907963ca849faff0957b9a8269a7a07065e3def2eef49cc33b50ab946ea5a9f::coin::COIN", - decimals: 5, - }, - aptos: { - address: - "0x2a90fae71afc7460ee42b20ee49a9c9b29272905ad71fef92fbd8b3905a24b56::coin::T", - decimals: 5, - }, - arbitrum: { - address: "0x09199d9A5F4448D0848e4395D065e1ad9c4a1F74", - decimals: 5, - }, - wormchain: { - address: - "wormhole10qt8wg0n7z740ssvf3urmvgtjhxpyp74hxqvqt7z226gykuus7eq9mpu8u", - decimals: 5, - }, - osmosis: { - address: - "ibc/CA3733CB0071F480FAE8EF0D9C3D47A49C6589144620A642BBE0D59A293D110E", - decimals: 5, - }, - fantom: { - address: "0x3fEcdF1248fe7642d29f879a75CFC0339659ab93", - decimals: 5, + WOM: { + key: "WOM", + symbol: "WOM", + nativeChain: "bsc", + tokenId: { + chain: "bsc", + address: "0xad6742a35fb341a9cc6ad674738dd8da98b94fb1", + }, + icon: "https://assets.coingecko.com/coins/images/26946/standard/Wombat_Token.png?1696526001", + coinGeckoId: "wombat-exchange", + decimals: { + default: 18, + }, + //Ehtereum, Avalanche, Base, Scroll, Optimism, Arbitrum, BNB Chain + foreignAssets: { + ethereum: { + address: "0xc0B314a8c08637685Fc3daFC477b92028c540CFB", + decimals: 18, + }, + avalanche: { + address: "0xa15E4544D141aa98C4581a1EA10Eb9048c3b3382", + decimals: 18, + }, + base: { + address: "0xD9541B08B375D58ae104EC247d7443D2D7235D64", + decimals: 18, + }, + scroll: { + address: "0x1a7aD8A6171A1EA84DD1E6d649cbd616189660D9", + decimals: 18, + }, + optimism: { + address: "0xD2612B256F6f76feA8C6fbca0BF3166D0d13a668", + decimals: 18, + }, + arbitrum: { + address: "0x7B5EB3940021Ec0e8e463D5dBB4B7B09a89DDF96", + decimals: 18, + }, }, - base: { - address: "0xDF1Cf211D38E7762c9691Be4D779A441a17A6cFC", - decimals: 5, - }, - celo: { - address: "0x3fc50bc066aE2ee280876EeefADfdAbF6cA02894", - decimals: 5, - }, - }, - }, - Wsolana: { - key: "Wsolana", - symbol: "W", - nativeChain: "solana", - tokenId: { - chain: "solana", - address: "85VBFQZC9TZkfaptBWjvUw7YbZjy52A6mjtPGjstQAmQ", - }, - icon: "https://assets.coingecko.com/coins/images/35087/standard/womrhole_logo_full_color_rgb_2000px_72ppi_fb766ac85a.png?1708688954", - coinGeckoId: "wormhole", - decimals: { - default: 6, }, - }, - Wethereum: { - key: "Wethereum", - symbol: "W", - nativeChain: "ethereum", - tokenId: { - chain: "ethereum", - address: "0xB0fFa8000886e57F86dd5264b9582b2Ad87b2b91", + "USDC.e": { + key: "USDC.e", + symbol: "USDC.e", + nativeChain: "polygon", + tokenId: { + chain: "polygon", + address: "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174", + }, + icon: "data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' data-name='86977684-12db-4850-8f30-233a7c267d11' width='2000' height='2000' viewBox='0 0 2000 2000' style='max-height: 100%25%3b max-width: 100%25%3b'%3e%3cpath fill='%232775ca' d='M1000 2000c554.17 0 1000-445.83 1000-1000S1554.17 0 1000 0 0 445.83 0 1000s445.83 1000 1000 1000z'%3e%3c/path%3e%3cpath fill='white' d='M1275 1158.33c0-145.83-87.5-195.83-262.5-216.66-125-16.67-150-50-150-108.34s41.67-95.83 125-95.83c75 0 116.67 25 137.5 87.5 4.17 12.5 16.67 20.83 29.17 20.83h66.66c16.67 0 29.17-12.5 29.17-29.16v-4.17c-16.67-91.67-91.67-162.5-187.5-170.83v-100c0-16.67-12.5-29.17-33.33-33.34h-62.5c-16.67 0-29.17 12.5-33.34 33.34v95.83c-125 16.67-204.16 100-204.16 204.17 0 137.5 83.33 191.66 258.33 212.5 116.67 20.83 154.17 45.83 154.17 112.5s-58.34 112.5-137.5 112.5c-108.34 0-145.84-45.84-158.34-108.34-4.16-16.66-16.66-25-29.16-25h-70.84c-16.66 0-29.16 12.5-29.16 29.17v4.17c16.66 104.16 83.33 179.16 220.83 200v100c0 16.66 12.5 29.16 33.33 33.33h62.5c16.67 0 29.17-12.5 33.34-33.33v-100c125-20.84 208.33-108.34 208.33-220.84z'%3e%3c/path%3e%3cpath fill='white' d='M787.5 1595.83c-325-116.66-491.67-479.16-370.83-800 62.5-175 200-308.33 370.83-370.83 16.67-8.33 25-20.83 25-41.67V325c0-16.67-8.33-29.17-25-33.33-4.17 0-12.5 0-16.67 4.16-395.83 125-612.5 545.84-487.5 941.67 75 233.33 254.17 412.5 487.5 487.5 16.67 8.33 33.34 0 37.5-16.67 4.17-4.16 4.17-8.33 4.17-16.66v-58.34c0-12.5-12.5-29.16-25-37.5zm441.67-1300c-16.67-8.33-33.34 0-37.5 16.67-4.17 4.17-4.17 8.33-4.17 16.67v58.33c0 16.67 12.5 33.33 25 41.67 325 116.66 491.67 479.16 370.83 800-62.5 175-200 308.33-370.83 370.83-16.67 8.33-25 20.83-25 41.67V1700c0 16.67 8.33 29.17 25 33.33 4.17 0 12.5 0 16.67-4.16 395.83-125 612.5-545.84 487.5-941.67-75-237.5-258.34-416.67-487.5-491.67z'%3e%3c/path%3e%3c/svg%3e", + coinGeckoId: "bridged-usdc-polygon-pos-bridge", + color: "#FC8E03", + decimals: { + default: 6, + }, + foreignAssets: { + ethereum: { + address: "0x566957eF80F9fd5526CD2BEF8BE67035C0b81130", + decimals: 6, + }, + bsc: { + address: "0x672147dD47674757C457eB155BAA382cc10705Dd", + decimals: 6, + }, + avalanche: { + address: "0x543672E9CBEC728CBBa9C3Ccd99ed80aC3607FA8", + decimals: 6, + }, + sui: { + address: + "0xcf72ec52c0f8ddead746252481fb44ff6e8485a39b803825bde6b00d77cdb0bb::coin::COIN", + decimals: 6, + }, + aptos: { + address: + "0xc7160b1c2415d19a88add188ec726e62aab0045f0aed798106a2ef2994a9101e::coin::T", + decimals: 6, + }, + arbitrum: { + address: "0x9A3Fba8a0870Fb9765023681DAa5390C7919C916", + decimals: 6, + }, + fantom: { + address: "0x6e0e8cf6Ad151e1260A4D398faaEDFC450A9f00a", + decimals: 6, + }, + base: { + address: "0x59f4f969dd3A91A943651C9625E96822DC84Ef94", + decimals: 6, + }, + celo: { + address: "0x0E21B5BdFb6eDBa7d903a610d4DE2F8c72586017", + decimals: 6, + }, + }, }, - icon: "https://assets.coingecko.com/coins/images/35087/standard/womrhole_logo_full_color_rgb_2000px_72ppi_fb766ac85a.png?1708688954", - coinGeckoId: "wormhole", - decimals: { - default: 18, + BONK: { + key: "BONK", + symbol: "BONK", + nativeChain: "solana", + tokenId: { + chain: "solana", + address: "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263", + }, + icon: "https://quei6zhlcfsxdfyes577gy7bkxmuz7qqakyt72xlbkyh7fysmoza.arweave.net/hQiPZOsRZXGXBJd_82PhVdlM_hACsT_q6wqwf5cSY7I", + coinGeckoId: "bonk", + color: "#FC8E03", + decimals: { + default: 5, + }, + foreignAssets: { + ethereum: { + address: "0x1151CB3d861920e07a38e03eEAd12C32178567F6", + decimals: 5, + }, + bsc: { + address: "0xA697e272a73744b343528C3Bc4702F2565b2F422", + decimals: 5, + }, + polygon: { + address: "0xe5B49820e5A1063F6F4DdF851327b5E8B2301048", + decimals: 5, + }, + avalanche: { + address: "0xC07C98a93591504584738e4569928DDb3b9f12A7", + decimals: 5, + }, + sui: { + address: + "0x6907963ca849faff0957b9a8269a7a07065e3def2eef49cc33b50ab946ea5a9f::coin::COIN", + decimals: 5, + }, + aptos: { + address: + "0x2a90fae71afc7460ee42b20ee49a9c9b29272905ad71fef92fbd8b3905a24b56::coin::T", + decimals: 5, + }, + arbitrum: { + address: "0x09199d9A5F4448D0848e4395D065e1ad9c4a1F74", + decimals: 5, + }, + wormchain: { + address: + "wormhole10qt8wg0n7z740ssvf3urmvgtjhxpyp74hxqvqt7z226gykuus7eq9mpu8u", + decimals: 5, + }, + osmosis: { + address: + "ibc/CA3733CB0071F480FAE8EF0D9C3D47A49C6589144620A642BBE0D59A293D110E", + decimals: 5, + }, + fantom: { + address: "0x3fEcdF1248fe7642d29f879a75CFC0339659ab93", + decimals: 5, + }, + base: { + address: "0xDF1Cf211D38E7762c9691Be4D779A441a17A6cFC", + decimals: 5, + }, + celo: { + address: "0x3fc50bc066aE2ee280876EeefADfdAbF6cA02894", + decimals: 5, + }, + }, }, - }, - Warbitrum: { - key: "Warbitrum", - symbol: "W", - nativeChain: "arbitrum", - tokenId: { - chain: "arbitrum", - address: "0xB0fFa8000886e57F86dd5264b9582b2Ad87b2b91", + Wsolana: { + key: "Wsolana", + symbol: "W", + nativeChain: "solana", + tokenId: { + chain: "solana", + address: "85VBFQZC9TZkfaptBWjvUw7YbZjy52A6mjtPGjstQAmQ", + }, + icon: "https://assets.coingecko.com/coins/images/35087/standard/womrhole_logo_full_color_rgb_2000px_72ppi_fb766ac85a.png?1708688954", + coinGeckoId: "wormhole", + decimals: { + default: 6, + }, }, - icon: "https://assets.coingecko.com/coins/images/35087/standard/womrhole_logo_full_color_rgb_2000px_72ppi_fb766ac85a.png?1708688954", - coinGeckoId: "wormhole", - decimals: { - default: 18, + Wethereum: { + key: "Wethereum", + symbol: "W", + nativeChain: "ethereum", + tokenId: { + chain: "ethereum", + address: "0xB0fFa8000886e57F86dd5264b9582b2Ad87b2b91", + }, + icon: "https://assets.coingecko.com/coins/images/35087/standard/womrhole_logo_full_color_rgb_2000px_72ppi_fb766ac85a.png?1708688954", + coinGeckoId: "wormhole", + decimals: { + default: 18, + }, }, - }, - Woptimism: { - key: "Woptimism", - symbol: "W", - nativeChain: "optimism", - tokenId: { - chain: "optimism", - address: "0xB0fFa8000886e57F86dd5264b9582b2Ad87b2b91", + Warbitrum: { + key: "Warbitrum", + symbol: "W", + nativeChain: "arbitrum", + tokenId: { + chain: "arbitrum", + address: "0xB0fFa8000886e57F86dd5264b9582b2Ad87b2b91", + }, + icon: "https://assets.coingecko.com/coins/images/35087/standard/womrhole_logo_full_color_rgb_2000px_72ppi_fb766ac85a.png?1708688954", + coinGeckoId: "wormhole", + decimals: { + default: 18, + }, }, - icon: "https://assets.coingecko.com/coins/images/35087/standard/womrhole_logo_full_color_rgb_2000px_72ppi_fb766ac85a.png?1708688954", - coinGeckoId: "wormhole", - decimals: { - default: 18, + Woptimism: { + key: "Woptimism", + symbol: "W", + nativeChain: "optimism", + tokenId: { + chain: "optimism", + address: "0xB0fFa8000886e57F86dd5264b9582b2Ad87b2b91", + }, + icon: "https://assets.coingecko.com/coins/images/35087/standard/womrhole_logo_full_color_rgb_2000px_72ppi_fb766ac85a.png?1708688954", + coinGeckoId: "wormhole", + decimals: { + default: 18, + }, }, - }, - Wbase: { - key: "Wbase", - symbol: "W", - nativeChain: "base", - tokenId: { - chain: "base", - address: "0xB0fFa8000886e57F86dd5264b9582b2Ad87b2b91", + Wbase: { + key: "Wbase", + symbol: "W", + nativeChain: "base", + tokenId: { + chain: "base", + address: "0xB0fFa8000886e57F86dd5264b9582b2Ad87b2b91", + }, + icon: "https://assets.coingecko.com/coins/images/35087/standard/womrhole_logo_full_color_rgb_2000px_72ppi_fb766ac85a.png?1708688954", + coinGeckoId: "wormhole", + decimals: { + default: 18, + }, }, - icon: "https://assets.coingecko.com/coins/images/35087/standard/womrhole_logo_full_color_rgb_2000px_72ppi_fb766ac85a.png?1708688954", - coinGeckoId: "wormhole", - decimals: { - default: 18, + osETHethereum: { + key: "osETHethereum", + symbol: "osETH", + nativeChain: "ethereum", + tokenId: { + chain: "ethereum", + address: "0xf1C9acDc66974dFB6dEcB12aA385b9cD01190E38", + }, + icon: "https://coin-images.coingecko.com/coins/images/33117/large/Frame_27513839.png?1700732599", + coinGeckoId: "stakewise-staked-eth", + decimals: { + default: 18, + }, }, - }, - osETHethereum: { - key: "osETHethereum", - symbol: "osETH", - nativeChain: "ethereum", - tokenId: { - chain: "ethereum", - address: "0xf1C9acDc66974dFB6dEcB12aA385b9cD01190E38", + osETHarbitrum: { + key: "osETHarbitrum", + symbol: "osETH", + nativeChain: "arbitrum", + tokenId: { + chain: "arbitrum", + address: "0xf7d4e7273E5015C96728A6b02f31C505eE184603", + }, + icon: "https://coin-images.coingecko.com/coins/images/33117/large/Frame_27513839.png?1700732599", + coinGeckoId: "stakewise-staked-eth", + decimals: { + default: 18, + }, }, - icon: "https://coin-images.coingecko.com/coins/images/33117/large/Frame_27513839.png?1700732599", - coinGeckoId: "stakewise-staked-eth", - decimals: { - default: 18, + "wstETH ": { + key: "wstETH ", + symbol: "wstETH ", + nativeChain: "bsc", + tokenId: { + chain: "bsc", + address: "0x26c5e01524d2E6280A48F2c50fF6De7e52E9611C", + }, + icon: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3R5bGU9Im1heC1oZWlnaHQ6IDEwMCU7IG1heC13aWR0aDogMTAwJTsiPjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiByeD0iMjU2IiBmaWxsPSIjMDBBM0ZGIj48L3JlY3Q+PHBhdGggb3BhY2l0eT0iMC42IiBkPSJNMzYxLjAxMiAyMzcuODEyTDM2My44NzggMjQyLjIwOUMzOTYuMjA0IDI5MS43OTggMzg4Ljk4NCAzNTYuNzQyIDM0Ni41MiAzOTguMzQ4QzMyMS41MzkgNDIyLjgyNiAyODguNzk4IDQzNS4wNjYgMjU2LjA1NiA0MzUuMDY5QzI1Ni4wNTYgNDM1LjA2OSAyNTYuMDU2IDQzNS4wNjkgMzYxLjAxMiAyMzcuODEyWiIgZmlsbD0id2hpdGUiPjwvcGF0aD48cGF0aCBvcGFjaXR5PSIwLjIiIGQ9Ik0yNTYuMDQ0IDI5Ny43NjRMMzYxIDIzNy44MTJDMjU2LjA0NSA0MzUuMDY5IDI1Ni4wNDQgNDM1LjA2OSAyNTYuMDQ0IDQzNS4wNjlDMjU2LjA0NCAzOTIuMTA4IDI1Ni4wNDQgMzQyLjg4IDI1Ni4wNDQgMjk3Ljc2NFoiIGZpbGw9IndoaXRlIj48L3BhdGg+PHBhdGggZD0iTTE1MC45ODggMjM3LjgxMkwxNDguMTIyIDI0Mi4yMDlDMTE1Ljc5NiAyOTEuNzk4IDEyMy4wMTYgMzU2Ljc0MiAxNjUuNDggMzk4LjM0OEMxOTAuNDYxIDQyMi44MjYgMjIzLjIwMiA0MzUuMDY2IDI1NS45NDQgNDM1LjA2OUMyNTUuOTQ0IDQzNS4wNjkgMjU1Ljk0NCA0MzUuMDY5IDE1MC45ODggMjM3LjgxMloiIGZpbGw9IndoaXRlIj48L3BhdGg+PHBhdGggb3BhY2l0eT0iMC42IiBkPSJNMjU1LjkxNCAyOTcuNzY0TDE1MC45NTggMjM3LjgxMkMyNTUuOTE0IDQzNS4wNjkgMjU1LjkxNCA0MzUuMDY5IDI1NS45MTQgNDM1LjA2OUMyNTUuOTE0IDM5Mi4xMDggMjU1LjkxNCAzNDIuODggMjU1LjkxNCAyOTcuNzY0WiIgZmlsbD0id2hpdGUiPjwvcGF0aD48cGF0aCBvcGFjaXR5PSIwLjIiIGQ9Ik0yNTYuMDgzIDE2My44MzNWMjY3LjIzM0wzNDYuNDkxIDIxNS41NjZMMjU2LjA4MyAxNjMuODMzWiIgZmlsbD0id2hpdGUiPjwvcGF0aD48cGF0aCBvcGFjaXR5PSIwLjYiIGQ9Ik0yNTYuMDU2IDE2My44MzNMMTY1LjU4MyAyMTUuNTY1TDI1Ni4wNTYgMjY3LjIzM1YxNjMuODMzWiIgZmlsbD0id2hpdGUiPjwvcGF0aD48cGF0aCBkPSJNMjU2LjA1NiA3Ni44NzVMMTY1LjU4MyAyMTUuNTk5TDI1Ni4wNTYgMTYzLjcyMlY3Ni44NzVaIiBmaWxsPSJ3aGl0ZSI+PC9wYXRoPjxwYXRoIG9wYWNpdHk9IjAuNiIgZD0iTTI1Ni4wODMgMTYzLjcwNkwzNDYuNTYgMjE1LjU4NUwyNTYuMDgzIDc2Ljc5MTZWMTYzLjcwNloiIGZpbGw9IndoaXRlIj48L3BhdGg+PC9zdmc+Cgo=", + coinGeckoId: "wrapped-steth", + color: "#3AA3FF", + decimals: { + default: 8, + Ethereum: 18, + }, }, }, - osETHarbitrum: { - key: "osETHarbitrum", - symbol: "osETH", - nativeChain: "arbitrum", - tokenId: { - chain: "arbitrum", - address: "0xf7d4e7273E5015C96728A6b02f31C505eE184603", + nttGroups: { + W: { + nttManagers: [ + { + chainName: "solana", + address: "NTtAaoDJhkeHeaVUHnyhwbPNAN6WgBpHkHBTc6d7vLK", + tokenKey: "Wsolana", + transceivers: [ + { + address: "NTtAaoDJhkeHeaVUHnyhwbPNAN6WgBpHkHBTc6d7vLK", + type: "wormhole", + }, + ], + solanaQuoter: "Nqd6XqA8LbsCuG8MLWWuP865NV6jR1MbXeKxD4HLKDJ", + }, + { + chainName: "ethereum", + address: "0xc072B1AEf336eDde59A049699Ef4e8Fa9D594A48", + tokenKey: "Wethereum", + transceivers: [ + { + address: "0xDb55492d7190D1baE8ACbE03911C4E3E7426870c", + type: "wormhole", + }, + ], + }, + { + chainName: "arbitrum", + address: "0x5333d0AcA64a450Add6FeF76D6D1375F726CB484", + tokenKey: "Warbitrum", + transceivers: [ + { + address: "0xD1a8AB69e00266e8B791a15BC47514153A5045a6", + type: "wormhole", + }, + ], + }, + { + chainName: "optimism", + address: "0x1a4F1a790f23Ffb9772966cB6F36dCd658033e13", + tokenKey: "Woptimism", + transceivers: [ + { + address: "0x9bD8b7b527CA4e6738cBDaBdF51C22466756073d", + type: "wormhole", + }, + ], + }, + { + chainName: "base", + address: "0x5333d0AcA64a450Add6FeF76D6D1375F726CB484", + tokenKey: "Wbase", + transceivers: [ + { + address: "0xD1a8AB69e00266e8B791a15BC47514153A5045a6", + type: "wormhole", + }, + ], + }, + ], }, - icon: "https://coin-images.coingecko.com/coins/images/33117/large/Frame_27513839.png?1700732599", - coinGeckoId: "stakewise-staked-eth", - decimals: { - default: 18, + osETH: { + nttManagers: [ + { + chainName: "ethereum", + address: "0x896b78fd7e465fb22e80c34ff8f1c5f62fa2c009", + tokenKey: "osETHethereum", + transceivers: [ + { + address: "0xAAFE766B966219C2f3F4271aB8D0Ff1883147AB6", + type: "wormhole", + }, + ], + }, + { + chainName: "arbitrum", + address: "0x485F6Ac6a3B97690910C1546842FfE0629582aD3", + tokenKey: "osETHarbitrum", + transceivers: [ + { + address: "0xAf7ae721070c25dF97043381509DBc042e65736F", + type: "wormhole", + }, + ], + }, + ], }, - }, - "wstETH ": { - key: "wstETH ", - symbol: "wstETH ", - nativeChain: "bsc", - tokenId: { - chain: "bsc", - address: "0x26c5e01524d2E6280A48F2c50fF6De7e52E9611C", + Lido_wstETH: { + displayName: "NTT: Wormhole + Axelar", + nttManagers: [ + { + chainName: "ethereum", + address: "0xb948a93827d68a82F6513Ad178964Da487fe2BD9", + tokenKey: "wstETH", + transceivers: [ + { + address: "0xA1ACC1e6edaB281Febd91E3515093F1DE81F25c0", + type: "wormhole", + }, + ], + }, + { + chainName: "bsc", + address: "0x6981F5621691CBfE3DdD524dE71076b79F0A0278", + tokenKey: "wstETH ", + transceivers: [ + { + address: "0xbe3F7e06872E0dF6CD7FF35B7aa4Bb1446DC9986", + type: "wormhole", + }, + ], + }, + ], }, - icon: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3R5bGU9Im1heC1oZWlnaHQ6IDEwMCU7IG1heC13aWR0aDogMTAwJTsiPjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiByeD0iMjU2IiBmaWxsPSIjMDBBM0ZGIj48L3JlY3Q+PHBhdGggb3BhY2l0eT0iMC42IiBkPSJNMzYxLjAxMiAyMzcuODEyTDM2My44NzggMjQyLjIwOUMzOTYuMjA0IDI5MS43OTggMzg4Ljk4NCAzNTYuNzQyIDM0Ni41MiAzOTguMzQ4QzMyMS41MzkgNDIyLjgyNiAyODguNzk4IDQzNS4wNjYgMjU2LjA1NiA0MzUuMDY5QzI1Ni4wNTYgNDM1LjA2OSAyNTYuMDU2IDQzNS4wNjkgMzYxLjAxMiAyMzcuODEyWiIgZmlsbD0id2hpdGUiPjwvcGF0aD48cGF0aCBvcGFjaXR5PSIwLjIiIGQ9Ik0yNTYuMDQ0IDI5Ny43NjRMMzYxIDIzNy44MTJDMjU2LjA0NSA0MzUuMDY5IDI1Ni4wNDQgNDM1LjA2OSAyNTYuMDQ0IDQzNS4wNjlDMjU2LjA0NCAzOTIuMTA4IDI1Ni4wNDQgMzQyLjg4IDI1Ni4wNDQgMjk3Ljc2NFoiIGZpbGw9IndoaXRlIj48L3BhdGg+PHBhdGggZD0iTTE1MC45ODggMjM3LjgxMkwxNDguMTIyIDI0Mi4yMDlDMTE1Ljc5NiAyOTEuNzk4IDEyMy4wMTYgMzU2Ljc0MiAxNjUuNDggMzk4LjM0OEMxOTAuNDYxIDQyMi44MjYgMjIzLjIwMiA0MzUuMDY2IDI1NS45NDQgNDM1LjA2OUMyNTUuOTQ0IDQzNS4wNjkgMjU1Ljk0NCA0MzUuMDY5IDE1MC45ODggMjM3LjgxMloiIGZpbGw9IndoaXRlIj48L3BhdGg+PHBhdGggb3BhY2l0eT0iMC42IiBkPSJNMjU1LjkxNCAyOTcuNzY0TDE1MC45NTggMjM3LjgxMkMyNTUuOTE0IDQzNS4wNjkgMjU1LjkxNCA0MzUuMDY5IDI1NS45MTQgNDM1LjA2OUMyNTUuOTE0IDM5Mi4xMDggMjU1LjkxNCAzNDIuODggMjU1LjkxNCAyOTcuNzY0WiIgZmlsbD0id2hpdGUiPjwvcGF0aD48cGF0aCBvcGFjaXR5PSIwLjIiIGQ9Ik0yNTYuMDgzIDE2My44MzNWMjY3LjIzM0wzNDYuNDkxIDIxNS41NjZMMjU2LjA4MyAxNjMuODMzWiIgZmlsbD0id2hpdGUiPjwvcGF0aD48cGF0aCBvcGFjaXR5PSIwLjYiIGQ9Ik0yNTYuMDU2IDE2My44MzNMMTY1LjU4MyAyMTUuNTY1TDI1Ni4wNTYgMjY3LjIzM1YxNjMuODMzWiIgZmlsbD0id2hpdGUiPjwvcGF0aD48cGF0aCBkPSJNMjU2LjA1NiA3Ni44NzVMMTY1LjU4MyAyMTUuNTk5TDI1Ni4wNTYgMTYzLjcyMlY3Ni44NzVaIiBmaWxsPSJ3aGl0ZSI+PC9wYXRoPjxwYXRoIG9wYWNpdHk9IjAuNiIgZD0iTTI1Ni4wODMgMTYzLjcwNkwzNDYuNTYgMjE1LjU4NUwyNTYuMDgzIDc2Ljc5MTZWMTYzLjcwNloiIGZpbGw9IndoaXRlIj48L3BhdGg+PC9zdmc+Cgo=", - coinGeckoId: "wrapped-steth", - color: "#3AA3FF", - decimals: { - default: 8, - Ethereum: 18, + ETHFI: { + nttManagers: [ + { + chainName: "ethereum", + address: "0x344169Cc4abE9459e77bD99D13AA8589b55b6174", + tokenKey: "ETHFIethereum", + transceivers: [ + { + address: "0x3bf4AebcaD920447c5fdD6529239Ab3922ce2186", + type: "wormhole", + }, + ], + }, + { + chainName: "arbitrum", + address: "0x90A82462258F79780498151EF6f663f1D4BE4E3b", + tokenKey: "ETHFIarbitrum", + transceivers: [ + { + address: "0x4386e36B96D437b0F1C04A35E572C10C6627d88a", + type: "wormhole", + }, + ], + }, + ], }, }, - }, - nttGroups: { - W: { - nttManagers: [ - { - chainName: "solana", - address: "NTtAaoDJhkeHeaVUHnyhwbPNAN6WgBpHkHBTc6d7vLK", - tokenKey: "Wsolana", - transceivers: [ - { - address: "NTtAaoDJhkeHeaVUHnyhwbPNAN6WgBpHkHBTc6d7vLK", - type: "wormhole", - }, - ], - solanaQuoter: "Nqd6XqA8LbsCuG8MLWWuP865NV6jR1MbXeKxD4HLKDJ", - }, - { - chainName: "ethereum", - address: "0xc072B1AEf336eDde59A049699Ef4e8Fa9D594A48", - tokenKey: "Wethereum", - transceivers: [ - { - address: "0xDb55492d7190D1baE8ACbE03911C4E3E7426870c", - type: "wormhole", - }, - ], - }, - { - chainName: "arbitrum", - address: "0x5333d0AcA64a450Add6FeF76D6D1375F726CB484", - tokenKey: "Warbitrum", - transceivers: [ - { - address: "0xD1a8AB69e00266e8B791a15BC47514153A5045a6", - type: "wormhole", - }, - ], - }, - { - chainName: "optimism", - address: "0x1a4F1a790f23Ffb9772966cB6F36dCd658033e13", - tokenKey: "Woptimism", - transceivers: [ - { - address: "0x9bD8b7b527CA4e6738cBDaBdF51C22466756073d", - type: "wormhole", - }, - ], - }, - { - chainName: "base", - address: "0x5333d0AcA64a450Add6FeF76D6D1375F726CB484", - tokenKey: "Wbase", - transceivers: [ - { - address: "0xD1a8AB69e00266e8B791a15BC47514153A5045a6", - type: "wormhole", - }, - ], - }, - ], - }, - osETH: { - nttManagers: [ - { - chainName: "ethereum", - address: "0x896b78fd7e465fb22e80c34ff8f1c5f62fa2c009", - tokenKey: "osETHethereum", - transceivers: [ - { - address: "0xAAFE766B966219C2f3F4271aB8D0Ff1883147AB6", - type: "wormhole", - }, - ], - }, - { - chainName: "arbitrum", - address: "0x485F6Ac6a3B97690910C1546842FfE0629582aD3", - tokenKey: "osETHarbitrum", - transceivers: [ - { - address: "0xAf7ae721070c25dF97043381509DBc042e65736F", - type: "wormhole", - }, - ], - }, - ], - }, - Lido_wstETH: { - displayName: "NTT: Wormhole + Axelar", - nttManagers: [ - { - chainName: "ethereum", - address: "0xb948a93827d68a82F6513Ad178964Da487fe2BD9", - tokenKey: "wstETH", - transceivers: [ - { - address: "0xA1ACC1e6edaB281Febd91E3515093F1DE81F25c0", - type: "wormhole", - }, - ], - }, - { - chainName: "bsc", - address: "0x6981F5621691CBfE3DdD524dE71076b79F0A0278", - tokenKey: "wstETH ", - transceivers: [ - { - address: "0xbe3F7e06872E0dF6CD7FF35B7aa4Bb1446DC9986", - type: "wormhole", - }, - ], - }, - ], - }, - ETHFI: { - nttManagers: [ - { - chainName: "ethereum", - address: "0x344169Cc4abE9459e77bD99D13AA8589b55b6174", - tokenKey: "ETHFIethereum", - transceivers: [ - { - address: "0x3bf4AebcaD920447c5fdD6529239Ab3922ce2186", - type: "wormhole", - }, - ], - }, - { - chainName: "arbitrum", - address: "0x90A82462258F79780498151EF6f663f1D4BE4E3b", - tokenKey: "ETHFIarbitrum", - transceivers: [ - { - address: "0x4386e36B96D437b0F1C04A35E572C10C6627d88a", - type: "wormhole", - }, - ], - }, - ], - }, - }, - } -); + } + ), +}; diff --git a/apps/connect/src/env/token-bridge.testnet.ts b/apps/connect/src/env/token-bridge.testnet.ts index 1c23ddf45..460edfa23 100644 --- a/apps/connect/src/env/token-bridge.testnet.ts +++ b/apps/connect/src/env/token-bridge.testnet.ts @@ -1,154 +1,150 @@ -import { - wormholeConnectConfig as wormholeConnectConfigBase, - ALGORAND, - ACALA, - MORE, -} from "./token-bridge"; -import { mergeTruthy } from "../utils/mergeTruthy"; +import { ALGORAND, ACALA, MORE, ENV as ENV_BASE } from "./token-bridge"; +import { mergeDeep } from "../utils/mergeDeep"; import type { WormholeConnectConfig } from "@wormhole-foundation/wormhole-connect"; +import { Env } from "./common"; -export { navBar } from "./token-bridge"; -export { redirects } from "./token-bridge"; -console.log('TESTTTTTTTTT') -export const wormholeConnectConfig = mergeTruthy( - wormholeConnectConfigBase, - { - moreNetworks: { - networks: [ALGORAND, ACALA, MORE], - } as WormholeConnectConfig["moreNetworks"], - tokensConfig: { - Wsolana: { - key: "Wsolana", - symbol: "W", - nativeChain: "solana", - tokenId: { - chain: "solana", - address: "EetppHswYvV1jjRWoQKC1hejdeBDHR9NNzNtCyRQfrrQ", - }, - icon: "https://assets.coingecko.com/coins/images/35087/standard/womrhole_logo_full_color_rgb_2000px_72ppi_fb766ac85a.png?1708688954", - coinGeckoId: "wormhole", - decimals: { - default: 6, - }, - }, - Wsepolia: { - key: "Wsepolia", - symbol: "Ws", - nativeChain: "sepolia", - tokenId: { - chain: "sepolia", - address: "0x738141EFf659625F2eAD4feECDfCD94155C67f18", - }, - icon: "https://assets.coingecko.com/coins/images/35087/standard/womrhole_logo_full_color_rgb_2000px_72ppi_fb766ac85a.png?1708688954", - coinGeckoId: "wormhole", - decimals: { - default: 18, - }, - }, - Warbitrum_sepolia: { - key: "Warbitrum_sepolia", - symbol: "Ws", - nativeChain: "arbitrum_sepolia", - tokenId: { - chain: "arbitrum_sepolia", - address: "0x395D3C74232D12916ecA8952BA352b4d27818035", - }, - icon: "https://assets.coingecko.com/coins/images/35087/standard/womrhole_logo_full_color_rgb_2000px_72ppi_fb766ac85a.png?1708688954", - coinGeckoId: "wormhole", - decimals: { - default: 18, - }, - }, - Wbase_sepolia: { - key: "Wbase_sepolia", - symbol: "Ws", - nativeChain: "base_sepolia", - tokenId: { - chain: "base_sepolia", - address: "0x1d30E78B7C7fbbcef87ae6e97B5389b2e470CA4a", - }, - icon: "https://assets.coingecko.com/coins/images/35087/standard/womrhole_logo_full_color_rgb_2000px_72ppi_fb766ac85a.png?1708688954", - coinGeckoId: "wormhole", - decimals: { - default: 18, - }, - }, - Woptimism_sepolia: { - key: "Woptimism_sepolia", - symbol: "Ws", - nativeChain: "optimism_sepolia", - tokenId: { - chain: "optimism_sepolia", - address: "0xdDFeABcCf2063CD66f53a1218e23c681Ba6e7962", +export const ENV: Env = { + ...ENV_BASE, + wormholeConnectConfig: mergeDeep( + ENV_BASE.wormholeConnectConfig, + { + moreNetworks: { + networks: [ALGORAND, ACALA, MORE], + } as WormholeConnectConfig["moreNetworks"], + tokensConfig: { + Wsolana: { + key: "Wsolana", + symbol: "W", + nativeChain: "solana", + tokenId: { + chain: "solana", + address: "EetppHswYvV1jjRWoQKC1hejdeBDHR9NNzNtCyRQfrrQ", + }, + icon: "https://assets.coingecko.com/coins/images/35087/standard/womrhole_logo_full_color_rgb_2000px_72ppi_fb766ac85a.png?1708688954", + coinGeckoId: "wormhole", + decimals: { + default: 6, + }, }, - icon: "https://assets.coingecko.com/coins/images/35087/standard/womrhole_logo_full_color_rgb_2000px_72ppi_fb766ac85a.png?1708688954", - coinGeckoId: "wormhole", - decimals: { - default: 18, + Wsepolia: { + key: "Wsepolia", + symbol: "Ws", + nativeChain: "sepolia", + tokenId: { + chain: "sepolia", + address: "0x738141EFf659625F2eAD4feECDfCD94155C67f18", + }, + icon: "https://assets.coingecko.com/coins/images/35087/standard/womrhole_logo_full_color_rgb_2000px_72ppi_fb766ac85a.png?1708688954", + coinGeckoId: "wormhole", + decimals: { + default: 18, + }, }, - }, - }, - nttGroups: { - W: { - nttManagers: [ - { - chainName: "solana", - address: "NTtAaoDJhkeHeaVUHnyhwbPNAN6WgBpHkHBTc6d7vLK", - tokenKey: "Wsolana", - transceivers: [ - { - address: "NTtAaoDJhkeHeaVUHnyhwbPNAN6WgBpHkHBTc6d7vLK", - type: "wormhole", - }, - ], - solanaQuoter: "Nqd6XqA8LbsCuG8MLWWuP865NV6jR1MbXeKxD4HLKDJ", + Warbitrum_sepolia: { + key: "Warbitrum_sepolia", + symbol: "Ws", + nativeChain: "arbitrum_sepolia", + tokenId: { + chain: "arbitrum_sepolia", + address: "0x395D3C74232D12916ecA8952BA352b4d27818035", }, - { - chainName: "sepolia", - address: "0x06413c42e913327Bc9a08B7C1E362BAE7C0b9598", - tokenKey: "Wsepolia", - transceivers: [ - { - address: "0x649fF7B32C2DE771043ea105c4aAb2D724497238", - type: "wormhole", - }, - ], + icon: "https://assets.coingecko.com/coins/images/35087/standard/womrhole_logo_full_color_rgb_2000px_72ppi_fb766ac85a.png?1708688954", + coinGeckoId: "wormhole", + decimals: { + default: 18, }, - { - chainName: "arbitrum_sepolia", - address: "0xCeC6FB4F352bf3DC2b95E1c41831E4D2DBF9a35D", - tokenKey: "Warbitrum_sepolia", - transceivers: [ - { - address: "0xfA42603152E4f133F5F3DA610CDa91dF5821d8bc", - type: "wormhole", - }, - ], + }, + Wbase_sepolia: { + key: "Wbase_sepolia", + symbol: "Ws", + nativeChain: "base_sepolia", + tokenId: { + chain: "base_sepolia", + address: "0x1d30E78B7C7fbbcef87ae6e97B5389b2e470CA4a", }, - { - chainName: "base_sepolia", - address: "0x8b9E328bE1b1Bc7501B413d04EBF7479B110775c", - tokenKey: "Wbase_sepolia", - transceivers: [ - { - address: "0x149987472333cD48ac6D28293A338a1EEa6Be7EE", - type: "wormhole", - }, - ], + icon: "https://assets.coingecko.com/coins/images/35087/standard/womrhole_logo_full_color_rgb_2000px_72ppi_fb766ac85a.png?1708688954", + coinGeckoId: "wormhole", + decimals: { + default: 18, }, - { - chainName: "optimism_sepolia", - address: "0x27F9Fdd3eaD5aA9A5D827Ca860Be28442A1e7582", - tokenKey: "Woptimism_sepolia", - transceivers: [ - { - address: "0xeCF0496DE01e9Aa4ADB50ae56dB550f52003bdB7", - type: "wormhole", - }, - ], + }, + Woptimism_sepolia: { + key: "Woptimism_sepolia", + symbol: "Ws", + nativeChain: "optimism_sepolia", + tokenId: { + chain: "optimism_sepolia", + address: "0xdDFeABcCf2063CD66f53a1218e23c681Ba6e7962", + }, + icon: "https://assets.coingecko.com/coins/images/35087/standard/womrhole_logo_full_color_rgb_2000px_72ppi_fb766ac85a.png?1708688954", + coinGeckoId: "wormhole", + decimals: { + default: 18, }, - ], + }, + }, + nttGroups: { + W: { + nttManagers: [ + { + chainName: "solana", + address: "NTtAaoDJhkeHeaVUHnyhwbPNAN6WgBpHkHBTc6d7vLK", + tokenKey: "Wsolana", + transceivers: [ + { + address: "NTtAaoDJhkeHeaVUHnyhwbPNAN6WgBpHkHBTc6d7vLK", + type: "wormhole", + }, + ], + solanaQuoter: "Nqd6XqA8LbsCuG8MLWWuP865NV6jR1MbXeKxD4HLKDJ", + }, + { + chainName: "sepolia", + address: "0x06413c42e913327Bc9a08B7C1E362BAE7C0b9598", + tokenKey: "Wsepolia", + transceivers: [ + { + address: "0x649fF7B32C2DE771043ea105c4aAb2D724497238", + type: "wormhole", + }, + ], + }, + { + chainName: "arbitrum_sepolia", + address: "0xCeC6FB4F352bf3DC2b95E1c41831E4D2DBF9a35D", + tokenKey: "Warbitrum_sepolia", + transceivers: [ + { + address: "0xfA42603152E4f133F5F3DA610CDa91dF5821d8bc", + type: "wormhole", + }, + ], + }, + { + chainName: "base_sepolia", + address: "0x8b9E328bE1b1Bc7501B413d04EBF7479B110775c", + tokenKey: "Wbase_sepolia", + transceivers: [ + { + address: "0x149987472333cD48ac6D28293A338a1EEa6Be7EE", + type: "wormhole", + }, + ], + }, + { + chainName: "optimism_sepolia", + address: "0x27F9Fdd3eaD5aA9A5D827Ca860Be28442A1e7582", + tokenKey: "Woptimism_sepolia", + transceivers: [ + { + address: "0xeCF0496DE01e9Aa4ADB50ae56dB550f52003bdB7", + type: "wormhole", + }, + ], + }, + ], + }, }, - }, - } -); + } + ), +}; diff --git a/apps/connect/src/env/token-bridge.ts b/apps/connect/src/env/token-bridge.ts index 9688fe7e8..7460c08ff 100644 --- a/apps/connect/src/env/token-bridge.ts +++ b/apps/connect/src/env/token-bridge.ts @@ -1,14 +1,15 @@ import type { WormholeConnectConfig } from "@wormhole-foundation/wormhole-connect"; -import { chains, PUBLIC_URL } from "./general"; +import { chains, Env, PUBLIC_URL, versions, wormholeConnectConfigCommon } from "./common"; -type MoreChainDefinition = NonNullable['networks'][0]; +type MoreChainDefinition = NonNullable< + WormholeConnectConfig["moreNetworks"] +>["networks"][0]; const ADVANCE_TOOLS_HREF = `${PUBLIC_URL}/advanced-tools/`; const ADVANCE_TOOLS_HREF_TEMPLATE = `${ADVANCE_TOOLS_HREF}#/transfer?sourceChain={:sourceChain}&targetChain={:targetChain}`; const USDC_BRIDGE_HREF = `${PUBLIC_URL}/usdc-bridge/`; const PRIVACY_POLICY_HREF = `${PUBLIC_URL}/#/privacy-policy/`; - export const ALGORAND = { icon: "data:image/svg+xml,%3Csvg width='80' height='80' viewBox='0 0 80 80' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cmask id='mask0_5964_23764' style='mask-type:alpha' maskUnits='userSpaceOnUse' x='0' y='0' width='80' height='80'%3E%3Crect width='80' height='80' fill='%23D9D9D9'/%3E%3C/mask%3E%3Cg mask='url(%23mask0_5964_23764)'%3E%3Cpath d='M17.1382 72.7516L27.3034 55.1578L37.4598 37.6258L47.5588 20.032L49.2361 17.2424L49.9732 20.032L53.0718 31.6141L49.6024 37.6258L39.4461 55.1578L29.3471 72.7516H41.4853L51.6461 55.1578L56.9118 46.0519L59.3925 55.1578L64.0977 72.7516H75L70.2948 55.1578L65.5852 37.6258L64.3493 33.1015L71.9059 20.032H60.8799L60.5048 18.7299L56.6647 4.35825L56.1703 2.5H45.577L45.3298 2.87077L35.4162 20.032L25.2554 37.6258L15.1608 55.1578L5 72.7516H17.1382Z' fill='white'/%3E%3C/g%3E%3C/svg%3E%0A", name: "algorand", @@ -35,54 +36,60 @@ export const MORE = { href: ADVANCE_TOOLS_HREF, } as MoreChainDefinition; -export const navBar = [ - { label: "Home", active: true, href: `${PUBLIC_URL}/` }, - { - label: "Staking", - href: "https://www.tally.xyz/gov/wormhole", - isBlank: true, - }, - { label: "Rewards", href: `${PUBLIC_URL}/rewards-dashboard/`, isBlank: true }, - { label: "USDC", href: USDC_BRIDGE_HREF }, - { label: "Privacy Policy", href: PRIVACY_POLICY_HREF }, -]; - -export const redirects = { - source: [ - "#/nft", - "#/redeem", - "#/nft-origin-verifier", - "#/token-origin-verifier", - "#/register", - "#/migrate/Ethereum/:legacyAsset/", - "#/migrate/BinanceSmartChain/:legacyAsset/", - "#/migrate/Celo/:legacyAsset/", - "#/migrate/Ethereum/", - "#/migrate/BinanceSmartChain/", - "#/migrate/Celo/", - "#/stats", - "#/withdraw-tokens-terra", - "#/unwrap-native", - "#/custody-addresses", +export const ENV: Env = { + versions, + navBar: [ + { label: "Home", active: true, href: `${PUBLIC_URL}/` }, + { + label: "Staking", + href: "https://www.tally.xyz/gov/wormhole", + isBlank: true, + }, + { + label: "Rewards", + href: `${PUBLIC_URL}/rewards-dashboard/`, + isBlank: true, + }, + { label: "USDC", href: USDC_BRIDGE_HREF }, + { label: "Privacy Policy", href: PRIVACY_POLICY_HREF }, ], - target: ADVANCE_TOOLS_HREF, -}; - -export const wormholeConnectConfig: WormholeConnectConfig = { - cctpWarning: { - href: USDC_BRIDGE_HREF, - }, - networks: [...chains, "solana", "injective", "klaytn"], - moreNetworks: { - href: ADVANCE_TOOLS_HREF_TEMPLATE, - target: "_blank", - description: - "Advance Tools offers unlimited transfers across chains for tokens and NFTs wrapped by Wormhole.", - networks: [], - }, - moreTokens: { - label: "More tokens ...", - href: ADVANCE_TOOLS_HREF_TEMPLATE, + redirects: { + source: [ + "#/nft", + "#/redeem", + "#/nft-origin-verifier", + "#/token-origin-verifier", + "#/register", + "#/migrate/Ethereum/:legacyAsset/", + "#/migrate/BinanceSmartChain/:legacyAsset/", + "#/migrate/Celo/:legacyAsset/", + "#/migrate/Ethereum/", + "#/migrate/BinanceSmartChain/", + "#/migrate/Celo/", + "#/stats", + "#/withdraw-tokens-terra", + "#/unwrap-native", + "#/custody-addresses", + ], + target: ADVANCE_TOOLS_HREF, }, - tokensConfig: {}, + wormholeConnectConfig: { + ...wormholeConnectConfigCommon, + cctpWarning: { + href: USDC_BRIDGE_HREF, + }, + networks: [...chains, "solana", "injective", "klaytn"], + moreNetworks: { + href: ADVANCE_TOOLS_HREF_TEMPLATE, + target: "_blank", + description: + "Advance Tools offers unlimited transfers across chains for tokens and NFTs wrapped by Wormhole.", + networks: [], + }, + moreTokens: { + label: "More tokens ...", + href: ADVANCE_TOOLS_HREF_TEMPLATE, + }, + tokensConfig: {}, + } as WormholeConnectConfig, }; diff --git a/apps/connect/src/env/usdc-bridge.mainnet.ts b/apps/connect/src/env/usdc-bridge.mainnet.ts index 00fc6e16e..3706a11d0 100644 --- a/apps/connect/src/env/usdc-bridge.mainnet.ts +++ b/apps/connect/src/env/usdc-bridge.mainnet.ts @@ -1 +1,22 @@ -export const this_is_a_config = "USDC MAIN"; +import { ENV as ENV_BASE } from "./usdc-bridge"; +import { mergeDeep } from "../utils/mergeDeep"; +import type { WormholeConnectConfig } from "@wormhole-foundation/wormhole-connect"; +import { Env } from "./common"; + +export const ENV: Env = { + ...ENV_BASE, + wormholeConnectConfig: mergeDeep( + ENV_BASE.wormholeConnectConfig, + { + networks: [ + "ethereum", + "avalanche", + "arbitrum", + "optimism", + "base", + "polygon", + "solana", + ], + } + ), +}; diff --git a/apps/connect/src/env/usdc-bridge.testnet.ts b/apps/connect/src/env/usdc-bridge.testnet.ts index c805b3749..2103b530d 100644 --- a/apps/connect/src/env/usdc-bridge.testnet.ts +++ b/apps/connect/src/env/usdc-bridge.testnet.ts @@ -1 +1,22 @@ -export const this_is_a_config = "USDC TEST"; +import { ENV as ENV_BASE } from "./usdc-bridge"; +import { mergeDeep } from "../utils/mergeDeep"; +import type { WormholeConnectConfig } from "@wormhole-foundation/wormhole-connect"; +import { Env } from "./common"; + +export const ENV: Env = { + ...ENV_BASE, + wormholeConnectConfig: mergeDeep( + ENV_BASE.wormholeConnectConfig, + { + networks: [ + "goerli", + "fuji", + "arbitrumgoerli", + "optimismgoerli", + "basegoerli", + "mumbai", + "solana", + ], + } + ), +}; diff --git a/apps/connect/src/env/usdc-bridge.ts b/apps/connect/src/env/usdc-bridge.ts new file mode 100644 index 000000000..3fc7b6a61 --- /dev/null +++ b/apps/connect/src/env/usdc-bridge.ts @@ -0,0 +1,46 @@ +import type { WormholeConnectConfig } from "@wormhole-foundation/wormhole-connect"; +import { + Env, + PUBLIC_URL, + versions, + wormholeConnectConfigCommon, +} from "./common"; + +export const ENV: Env = { + versions, + navBar: [ + { label: "Home", href: `${PUBLIC_URL}/` }, + { + label: "Staking", + href: "https://www.tally.xyz/gov/wormhole", + isBlank: true, + }, + { + label: "Rewards", + href: `${PUBLIC_URL}/rewards-dashboard/`, + isBlank: true, + }, + { label: "USDC", active: true, href: `${PUBLIC_URL}/usdc-bridge` }, + { label: "Privacy Policy", href: `${PUBLIC_URL}/privacy-policy` }, + ], + redirects: undefined, + wormholeConnectConfig: { + ...wormholeConnectConfigCommon, + pageHeader: { + text: "USDC Transfer", + align: "center", + }, + routes: ["cctpManual", "cctpRelay"], + tokens: [ + "USDCeth", + "USDCavax", + "USDCarbitrum", + "USDCoptimism", + "USDCbase", + "USDCpolygon", + "USDCsol", + ], + partnerLogo: + "data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8' standalone='no'%3F%3E%3Csvg class='white-mode ' id='Layer_2' data-name='Layer 2' role='button' viewBox='0 0 912 242' version='1.1' sodipodi:docname='circle.svg' width='912' height='242' inkscape:version='1.2.2 (b0a84865, 2022-12-01)' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' xmlns='http://www.w3.org/2000/svg' xmlns:svg='http://www.w3.org/2000/svg'%3E%3Cdefs id='defs95'%3E%3Cstyle id='style83'%3E .cls-1-1 %7B fill: %23ffffff; %7D .cls-2 %7B fill: %23ffffff; %7D .cls-3 %7B fill: %23ffffff; %7D %3C/style%3E%3ClinearGradient id='linear-gradient' x1='177.86' y1='291.17999' x2='341.06' y2='127.98' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='%233D3652' id='stop85' /%3E%3Cstop offset='1' stop-color='%233D3652' id='stop87' /%3E%3C/linearGradient%3E%3ClinearGradient id='linear-gradient-2' x1='96.43' y1='207.75' x2='259.64001' y2='44.549999' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='%233D3652' id='stop90' /%3E%3Cstop offset='1' stop-color='%233D3652' id='stop92' /%3E%3C/linearGradient%3E%3C/defs%3E%3Cpath class='cls-1-1' d='m 219.58983,63.44052 -5,-8.78 a 5.14,5.14 0 0 0 -8.11,-1.08 l -11.5,11.49 a 5.17,5.17 0 0 0 -0.64,6.51 90.22,90.22 0 0 1 10,20.58 v 0 a 90.2,90.2 0 0 1 -85.45,119 89.38,89.38 0 0 1 -42.259999,-10.49 l 19.449999,-19.46 a 64.41,64.41 0 0 0 80.77,-88.29 5.15,5.15 0 0 0 -8.29,-1.41 l -11.64,11.56 a 5.14,5.14 0 0 0 -1.37,4.82 l 1,4.18 a 38.63,38.63 0 0 1 -56.75,42.39 l -5.13,-2.94 a 5.13,5.13 0 0 0 -6.199999,0.83 l -47.51,47.5 a 5.15,5.15 0 0 0 0.51,7.73 l 7,5.37 a 114.86,114.86 0 0 0 70.459999,23.88 116,116 0 0 0 100.66,-173.39 z' id='path97' /%3E%3Cpath class='cls-2' d='m 189.36983,28.890522 a 114.83,114.83 0 0 0 -70.46,-23.89 A 116,116 0 0 0 18.219831,178.44052 l 5,8.77 a 5.16,5.16 0 0 0 8.12,1.09 l 11.48,-11.48 a 5.19,5.19 0 0 0 0.64,-6.5 89.81,89.81 0 0 1 -10,-20.58 v 0 a 90.2,90.2 0 0 1 85.449999,-118.999998 89.29,89.29 0 0 1 42.25,10.52 l -19.46,19.449998 a 64.39,64.39 0 0 0 -87.209999,60.23 c 0,1.07 0.29,5.95 0.38,6.79 a 64.76,64.76 0 0 0 6.07,21.27 5.16,5.16 0 0 0 8.3,1.41 l 11.64,-11.65 a 5.15,5.15 0 0 0 1.38,-4.81 l -1,-4.19 a 38.62,38.62 0 0 1 56.749999,-42.38 l 5.13,2.94 a 5.16,5.16 0 0 0 6.2,-0.83 l 47.5,-47.499998 a 5.16,5.16 0 0 0 -0.5,-7.74 z' id='path99' /%3E%3Cg class='logo-header-text' data-svg-origin='385.4800109863281 103.79999542236328' id='g113' transform='translate(-99.84016,-46.929478)'%3E%3Cpath class='cls-3' d='m 484.48,199.84 a 4.7,4.7 0 0 0 -6.09,0.14 c -7.45,5.78 -16.09,11.13 -28.72,11.13 -23.12,0 -41.93,-19.47 -41.93,-43.42 0,-23.95 18.74,-43.59 41.76,-43.59 10,0 20.8,4.21 28.74,11.18 a 4.67,4.67 0 0 0 3.62,1.62 4.08,4.08 0 0 0 3,-1.7 l 7.52,-7.74 a 4.83,4.83 0 0 0 1.47,-3.58 4.93,4.93 0 0 0 -1.72,-3.54 C 479,108.9 465.81,103.8 449.32,103.8 c -35.2,0 -63.84,28.82 -63.84,64.24 a 63.94,63.94 0 0 0 63.84,63.89 60.32,60.32 0 0 0 43,-17.3 5.32,5.32 0 0 0 1.52,-3.85 4.21,4.21 0 0 0 -1.36,-3 z' data-svg-origin='385.4800109863281 103.80000305175781' style='visibility:inherit;opacity:1' id='path101' /%3E%3Cpath class='cls-3' d='m 539.21,105.54 h -11.39 a 5,5 0 0 0 -4.83,4.85 v 115 a 5,5 0 0 0 4.83,4.86 h 11.39 a 5,5 0 0 0 4.83,-4.86 v -115 a 5,5 0 0 0 -4.83,-4.85 z' data-svg-origin='522.989990234375 105.54000091552734' style='visibility:inherit;opacity:1' id='path103' /%3E%3Cpath class='cls-3' d='m 674,144.25 c 0,-21.34 -17.57,-38.71 -39.17,-38.71 h -46.97 a 4.85,4.85 0 0 0 -4.83,4.85 v 115 a 4.85,4.85 0 0 0 4.83,4.86 h 11.22 a 5,5 0 0 0 4.83,-4.86 v -42.77 h 23.54 L 650,227.77 a 4.72,4.72 0 0 0 4.15,2.43 h 13.46 a 4.83,4.83 0 0 0 4.27,-2.29 5.14,5.14 0 0 0 0,-5 L 649,180.27 c 15.46,-6.87 25,-20.53 25,-36.02 z m -21.05,0.35 c 0,10.83 -8.93,20 -19.5,20 h -29.19 v -39.11 h 29.15 c 10.59,0 19.5,8.75 19.5,19.11 z' data-svg-origin='583.0299682617188 105.54000091552734' style='visibility:inherit;opacity:1' id='path105' /%3E%3Cpath class='cls-3' d='m 796.59,199.84 a 4.7,4.7 0 0 0 -6.09,0.14 c -7.45,5.78 -16.09,11.13 -28.72,11.13 -23.12,0 -41.93,-19.47 -41.93,-43.42 0,-23.95 18.73,-43.59 41.75,-43.59 10,0 20.8,4.21 28.75,11.18 a 4.65,4.65 0 0 0 3.65,1.62 4.08,4.08 0 0 0 3,-1.7 l 7.52,-7.74 a 4.82,4.82 0 0 0 1.46,-3.58 4.88,4.88 0 0 0 -1.71,-3.54 c -13.1,-11.44 -26.29,-16.54 -42.78,-16.54 -35.2,0 -63.84,28.82 -63.84,64.24 a 63.94,63.94 0 0 0 63.84,63.89 60.34,60.34 0 0 0 43,-17.3 5.33,5.33 0 0 0 1.52,-3.86 4.2,4.2 0 0 0 -1.36,-3 z' data-svg-origin='697.6499633789062 103.79999542236328' style='visibility:inherit;opacity:1' id='path107' /%3E%3Cpath class='cls-3' d='m 901.35,210.94 h -45.2 V 110.39 a 5,5 0 0 0 -4.83,-4.85 h -11.39 a 4.85,4.85 0 0 0 -4.83,4.85 v 115 a 4.85,4.85 0 0 0 4.83,4.86 h 61.42 a 4.85,4.85 0 0 0 4.84,-4.86 v -9.55 a 4.85,4.85 0 0 0 -4.84,-4.9 z' data-svg-origin='835.0999755859375 105.54000091552734' style='visibility:inherit;opacity:1' id='path109' /%3E%3Cpath class='cls-3' d='m 1003.67,125 a 4.85,4.85 0 0 0 4.83,-4.85 v -9.73 a 4.85,4.85 0 0 0 -4.83,-4.85 h -69 a 4.85,4.85 0 0 0 -4.83,4.85 v 115 a 4.85,4.85 0 0 0 4.83,4.86 h 69 a 4.85,4.85 0 0 0 4.83,-4.86 v -9.55 a 4.85,4.85 0 0 0 -4.83,-4.85 h -53 v -34.31 h 44.51 a 4.85,4.85 0 0 0 4.84,-4.85 v -9.72 a 5,5 0 0 0 -4.84,-4.86 H 950.7 V 125 Z' data-svg-origin='929.8399658203125 105.56999969482422' style='visibility:inherit;opacity:1' id='path111' /%3E%3C/g%3E%3C/svg%3E%0A", + } as WormholeConnectConfig, +}; diff --git a/apps/connect/src/hooks/useFormatAssetParam.ts b/apps/connect/src/hooks/useFormatAssetParam.ts index 4d497ccfe..976f58024 100644 --- a/apps/connect/src/hooks/useFormatAssetParam.ts +++ b/apps/connect/src/hooks/useFormatAssetParam.ts @@ -1,12 +1,13 @@ +import { ENV } from "@env"; import { MAINNET, TESTNET } from "@wormhole-foundation/wormhole-connect"; import { useMemo } from "react"; const tokensList = - wormholeConnectConfig.env === "mainnet" ? MAINNET.tokens : TESTNET.tokens; + ENV.wormholeConnectConfig.env === "mainnet" ? MAINNET.tokens : TESTNET.tokens; function getFormatedAsset(asset: string | null): string | null { const allTokens = { ...tokensList, - ...wormholeConnectConfig?.tokensConfig, + ...ENV.wormholeConnectConfig?.tokensConfig, }; if (allTokens && asset) { const tokenParam = Object.values(allTokens).find( diff --git a/apps/connect/src/main.tsx b/apps/connect/src/main.tsx index c8c7d1bab..c3c94aeeb 100644 --- a/apps/connect/src/main.tsx +++ b/apps/connect/src/main.tsx @@ -7,11 +7,12 @@ import theme from "./theme/portal.ts"; import Background from "./components/atoms/Background.tsx"; import App from "./App.tsx"; import { HashRouter } from "react-router-dom"; +import { ENV } from "@env"; -if (redirects && redirects?.source?.length > 0) { - const matcher = new RegExp(redirects.source.join("|")); +if (ENV.redirects && ENV.redirects?.source?.length > 0) { + const matcher = new RegExp(ENV.redirects.source.join("|")); if (matcher.test(window.location.hash)) { - window.location.href = `${redirects.target}${window.location.hash}`; + window.location.href = `${ENV.redirects.target}${window.location.hash}`; } } diff --git a/apps/connect/src/utils/isObject.ts b/apps/connect/src/utils/isObject.ts index daecea4b5..ce19c9296 100644 --- a/apps/connect/src/utils/isObject.ts +++ b/apps/connect/src/utils/isObject.ts @@ -1,3 +1,4 @@ +/* eslint @typescript-eslint/no-explicit-any: 0 */ export const isObject = (item: any): boolean => { return !!item && typeof item === "object" && !Array.isArray(item); }; diff --git a/apps/connect/src/utils/mergeTruthy.test.ts b/apps/connect/src/utils/mergeDeep.test.ts similarity index 69% rename from apps/connect/src/utils/mergeTruthy.test.ts rename to apps/connect/src/utils/mergeDeep.test.ts index f8a54d707..e57b2930c 100644 --- a/apps/connect/src/utils/mergeTruthy.test.ts +++ b/apps/connect/src/utils/mergeDeep.test.ts @@ -1,28 +1,31 @@ -import { mergeTruthy } from "./mergeTruthy"; +import { mergeDeep } from "./mergeDeep"; -describe("mergeTruthy", () => { +describe("mergeDeep", () => { it("should merge using values from A and B only when B is truthy", () => { const a = { a: 1, b: 2, c: 5 }; const b = { a: undefined, b: 3, c: 0 }; - expect(mergeTruthy(a, b as unknown)).toEqual({ a: 1, b: 3, c: 0 }); + expect(mergeDeep(a, b)).toEqual({ a: 1, b: 3, c: 0 }); }); it("should merge deeply", () => { const a = { a: 1, b: { c: 2, d: 3 } }; const b = { a: 4, b: { c: undefined, d: 6 } }; - expect(mergeTruthy(a, b as unknown)).toEqual({ a: 4, b: { c: 2, d: 6 } }); + expect(mergeDeep(a, b)).toEqual({ + a: 4, + b: { c: 2, d: 6 }, + }); }); it("should NOT merge deeply when value is an array", () => { const a = { a: 1, b: [1, 2, 3] }; const b = { a: undefined, b: [4] }; - expect(mergeTruthy(a, b as unknown)).toEqual({ a: 1, b: [4] }); + expect(mergeDeep(a, b)).toEqual({ a: 1, b: [4] }); }); it("should create new references for objects", () => { const a = { a: 1, b: { c: 2, d: 3 } }; const b = { a: 4, b: { c: undefined, d: 6 } }; - const c = mergeTruthy(a, b as unknown); + const c = mergeDeep(a, b); expect(c).toEqual({ a: 4, b: { c: 2, d: 6 } }); expect(c.b).not.toBe(a.b); expect(c.b).not.toBe(b.b); @@ -32,6 +35,6 @@ describe("mergeTruthy", () => { const a = { a: 1, b: 2 }; const b = { a: 3, b: 4 }; const fn = (arg: unknown) => arg !== 4; - expect(mergeTruthy(a, b, fn)).toEqual({ a: 3, b: 2 }); + expect(mergeDeep(a, b, fn)).toEqual({ a: 3, b: 2 }); }); }); diff --git a/apps/connect/src/utils/mergeTruthy.ts b/apps/connect/src/utils/mergeDeep.ts similarity index 72% rename from apps/connect/src/utils/mergeTruthy.ts rename to apps/connect/src/utils/mergeDeep.ts index e82825b3b..55564694e 100644 --- a/apps/connect/src/utils/mergeTruthy.ts +++ b/apps/connect/src/utils/mergeDeep.ts @@ -1,7 +1,8 @@ +/* eslint @typescript-eslint/no-explicit-any: 0 */ import { isObject } from "./isObject"; /** deep merges args with a condition per node returning a new instance */ -export const mergeTruthy = ( +export const mergeDeep = ( a: Partial, b: Partial, isTruthy = (arg: any) => ![null, undefined].includes(arg) @@ -11,7 +12,7 @@ export const mergeTruthy = ( const keyList = Array.from(new Set([...Object.keys(a!), ...Object.keys(b!)])); return keyList.reduce((total, key) => { - total[key] = mergeTruthy(a[key], b[key], isTruthy); + total[key] = mergeDeep((a as any)[key], (b as any)[key], isTruthy); return total; - }, {}) as T; + }, {} as any) as T; }; diff --git a/apps/connect/src/vite-env.d.ts b/apps/connect/src/vite-env.d.ts index e026a2ce6..11f02fe2a 100644 --- a/apps/connect/src/vite-env.d.ts +++ b/apps/connect/src/vite-env.d.ts @@ -1,27 +1 @@ /// - -import type { WormholeConnectConfig } from "@wormhole-foundation/wormhole-connect"; - -type NavLink = { - label: string; - active?: boolean; - href: string; - isBlank?: boolean; -}; - -type Redirect = { - source: string[]; - target: string; -}; - -type Version = { - version: string; - appName: string; -}; - -declare global { - declare const wormholeConnectConfig: WormholeConnectConfig; - declare const navBar: NavLink[]; - declare const redirects: Redirect; - declare const versions: Version[]; -} diff --git a/apps/connect/vite.config.ts b/apps/connect/vite.config.ts index 55f8008a3..2cb98184e 100644 --- a/apps/connect/vite.config.ts +++ b/apps/connect/vite.config.ts @@ -1,102 +1,25 @@ -import { defineConfig } from 'vite' -import react from '@vitejs/plugin-react-swc' -import { readFileSync } from 'fs' -import { resolve } from 'path' - -function readPackageVersion(packageName: string): { version: string } { - try { - const packageJsonFile = resolve(import.meta.dirname, 'node_modules', packageName, 'package.json'); - return JSON.parse(readFileSync(packageJsonFile, 'utf-8')) - } catch (e) { - return { version: undefined } - } -} - -const wcPackageJson = readPackageVersion('@wormhole-foundation/wormhole-connect') - -const rpcs = (chains: string[], template: (chain: string) => string) => chains.map((chain: string) => ({ [chain]: template(chain) })).reduce((acc, cur) => ({ ...acc, ...cur }), {}); -const asRpcHost = (chain: string) => `https://and76cjzpa.execute-api.us-east-2.amazonaws.com/${chain}/`; -export const chains = [ - "wormchain", - "osmosis", - "ethereum", - "sui", - "aptos", - "kujira", - "evmos", - "bsc", - "polygon", - "avalanche", - "fantom", - "celo", - "moonbeam", - "base", - "arbitrum", - "optimism", - "scroll", - "xlayer", - "mantle" -] - -const MAINNET_RPCS = { - rpcs: { - ...rpcs(chains, asRpcHost), - solana: "https://wormhole.rpcpool.com/", - } -} - -const VITE_APP_CLUSTER = process.env.VITE_APP_CLUSTER || 'testnet' +import { defineConfig } from "vite"; +import react from "@vitejs/plugin-react-swc"; // https://vitejs.dev/config/ export default defineConfig({ - base: process.env.PUBLIC_URL || '', + base: process.env.PUBLIC_URL || "", build: { rollupOptions: { output: { - entryFileNames: 'pb-[name]-[hash].js', - assetFileNames: 'pb-[name]-[hash][extname]', + entryFileNames: "pb-[name]-[hash].js", + assetFileNames: "pb-[name]-[hash][extname]", }, }, }, resolve: { alias: [ - { find: '@certusone/wormhole-sdk', replacement: "@certusone/wormhole-sdk/lib/cjs/utils/consts.js" } - ] - }, - define: { - versions: [ { - appName: 'Portal Bridge', - version: `v${process.env.VITE_APP_VERSION || '0.0.0'}` + find: "@certusone/wormhole-sdk", + replacement: "@certusone/wormhole-sdk/lib/cjs/utils/consts.js", }, - { - appName: 'Wormhole Connect', - version: `v${wcPackageJson.version}` - } ], - redirects: {}, - wormholeConnectConfig: { - walletConnectProjectId: process.env.VITE_APP_WALLET_CONNECT_PROJECT_ID || '', - env: process.env.VITE_APP_CLUSTER || 'mainnet', - ...(process.env.VITE_APP_CLUSTER === 'mainnet' ? MAINNET_RPCS : {}), - showHamburgerMenu: false, - explorer: { - href: `https://wormholescan.io/#/txs?address={:address}&network=${VITE_APP_CLUSTER}`, - }, - menu: [ - { - label: 'Advanced Tools', - href: `${process.env.PUBLIC_URL}/advanced-tools/`, - order: 1 - }, - { - label: 'Privacy Policy', - href: `${process.env.PUBLIC_URL}/#/privacy-policy/`, - } - ] - } }, - plugins: [ - react() - ], -}) + define: {}, + plugins: [react()], +}); diff --git a/apps/connect/vite.token-bridge.config.ts b/apps/connect/vite.token-bridge.config.ts index c85483c37..d1c6843d2 100644 --- a/apps/connect/vite.token-bridge.config.ts +++ b/apps/connect/vite.token-bridge.config.ts @@ -1,636 +1,7 @@ -import { defineConfig } from 'vite' -import viteConfig, { chains } from './vite.config' -import type { WormholeConnectConfig } from '@wormhole-foundation/wormhole-connect' -import { resolve } from 'path'; - -const PUBLIC_URL = viteConfig.base; -const ADVANCE_TOOLS_HREF = `${PUBLIC_URL}/advanced-tools/` -const ADVANCE_TOOLS_HREF_TEMPLATE = `${ADVANCE_TOOLS_HREF}#/transfer?sourceChain={:sourceChain}&targetChain={:targetChain}` -const USDC_BRIDGE_HREF = `${PUBLIC_URL}/usdc-bridge/` -const PRIVACY_POLICY_HREF = `${PUBLIC_URL}/#/privacy-policy/` - -const ALGORAND = { - icon: "data:image/svg+xml,%3Csvg width='80' height='80' viewBox='0 0 80 80' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cmask id='mask0_5964_23764' style='mask-type:alpha' maskUnits='userSpaceOnUse' x='0' y='0' width='80' height='80'%3E%3Crect width='80' height='80' fill='%23D9D9D9'/%3E%3C/mask%3E%3Cg mask='url(%23mask0_5964_23764)'%3E%3Cpath d='M17.1382 72.7516L27.3034 55.1578L37.4598 37.6258L47.5588 20.032L49.2361 17.2424L49.9732 20.032L53.0718 31.6141L49.6024 37.6258L39.4461 55.1578L29.3471 72.7516H41.4853L51.6461 55.1578L56.9118 46.0519L59.3925 55.1578L64.0977 72.7516H75L70.2948 55.1578L65.5852 37.6258L64.3493 33.1015L71.9059 20.032H60.8799L60.5048 18.7299L56.6647 4.35825L56.1703 2.5H45.577L45.3298 2.87077L35.4162 20.032L25.2554 37.6258L15.1608 55.1578L5 72.7516H17.1382Z' fill='white'/%3E%3C/g%3E%3C/svg%3E%0A", - name: "algorand", - label: "Algorand", -} - -const ACALA = { - icon: "data:image/svg+xml,%3Csvg fill='none' viewBox='0 0 490 490' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M245 490c135.31 0 245-109.69 245-245S380.31 0 245 0 0 109.69 0 245s109.69 245 245 245zm1-23c122.61 0 222-99.393 222-222S368.607 23 246 23 24 122.393 24 245s99.393 222 222 222zm-1-17c113.22 0 205-91.782 205-205S358.218 40 245 40 40 131.782 40 245s91.782 205 205 205zm.5-25c99.687 0 180.5-80.813 180.5-180.5S345.187 64 245.5 64 65 144.813 65 244.5 145.813 425 245.5 425zM235.313 98.66l130.68 226.7 14.012-24.31-116.66-202.39zm-125.31 201.98 111.84-194.03.231.4.22-.382 132.54 229.93h-28.025l-33.484-58.088c-15.215-4.81-31.414-7.404-48.22-7.404-8.663 0-17.117.605-25.336 1.812l16.14-27.956c3.047-.149 6.113-.224 9.196-.224 10.267 0 20.339.831 30.154 2.43l-53.195-92.284-98.05 170.1zm76.035-2.949 50.256-87.186-14.012-24.309-86.676 150.37h28.025l.266-.462c24.037-14.472 51.619-21.787 81.737-21.787 19.232 0 37.67 3.397 54.747 9.625l-18.775-32.52a187.14 187.14 0 0 0-35.972-3.472c-20.842 0-40.885 3.425-59.596 9.744z' clip-rule='evenodd' fill='url(%23a)' fill-rule='evenodd'/%3E%3Cdefs%3E%3ClinearGradient id='a' x1='462.5' x2='101' y1='490' y2='43.5' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%235A81FF' offset='0'/%3E%3Cstop stop-color='%23E40C5B' offset='.524'/%3E%3Cstop stop-color='%23FF4C3B' offset='1'/%3E%3C/linearGradient%3E%3C/defs%3E%3C/svg%3E", - name: "acala", - label: "Acala", -} - -const SEI = { - icon: "data:image/svg+xml,%3Csvg width='256' height='256' viewBox='0 0 256 256' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='m 127.67411,256 c 38.02499,0 72.18784,-16.49691 95.68658,-42.70676 -10.93123,-9.47577 -27.40461,-10.05162 -39.04159,-0.68556 l -2.22314,1.78953 c -21.30703,17.14908 -52.35448,14.61676 -70.58505,-5.7577 -9.94332,-11.11197 -26.972141,-12.24661 -38.308517,-2.55277 L 47.570215,228.00608 C 69.524032,245.52451 97.372724,256 127.67411,256 Z m 41.60702,-61.98133 C 189.57566,177.68394 218.1014,178.27 237.62049,194.0459 249.28754,174.76386 256,152.16374 256,128.00034 c 0,-26.85042 -8.28793,-51.769568 -22.45139,-72.350916 -9.131,-1.939587 -19.02787,0.325741 -26.54036,6.966212 l -2.13843,1.889976 C 184.37854,82.617466 153.24774,81.516899 134.09348,62.003681 123.64732,51.36103 106.58366,51.011574 95.70776,61.217474 L 65.879285,89.2086 49.470132,71.811468 79.298607,43.820001 C 99.6717,24.70176 131.636,25.356444 151.20497,45.292785 c 10.2248,10.416813 26.8437,11.004304 37.78245,1.335536 l 2.13842,-1.889909 c 6.64005,-5.869189 14.32197,-9.825846 22.366,-11.906837 C 190.75623,12.421275 160.66937,0 127.67411,0 62.5305,0 8.7242884,48.41669 0.45065936,111.14157 20.23734,101.67056 44.644196,105.31504 60.77713,121.79424 c 10.185043,10.40324 26.584631,11.50108 38.071994,2.54936 l 16.677656,-12.99623 c 20.96064,-16.333367 50.58976,-15.542866 70.64448,1.88493 l 32.46987,28.21744 -15.73073,18.00977 -32.46987,-28.21675 c -11.40333,-9.91056 -28.25178,-10.36033 -40.17025,-1.07263 l -16.67765,12.9969 C 92.486461,159.61353 62.356352,157.59639 43.643919,138.48264 32.762761,127.36794 14.966434,126.98019 3.609064,137.61037 L 0,140.98839 c 2.7009241,26.73389 13.649562,51.04108 30.269414,70.34973 l 27.34647,-23.38517 c 21.235909,-18.16038 53.135306,-16.03488 71.761456,4.78115 9.73221,10.87688 26.30602,12.22823 37.67997,3.07342 z' fill='%23ffffff' id='path1050' style='stroke-width:6.82333' /%3E%3C/svg%3E", - name: "sei", - label: "Sei" -} - -const MORE = { - icon: "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='91' height='91' viewBox='0 0 91 91' fill='none'%3E%3Ccircle cx='45.5' cy='45.5' r='45.5' fill='%23E8E8EC'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M26.833 25.8333C26.2807 25.8333 25.833 26.281 25.833 26.8333V63.1666C25.833 63.7189 26.2807 64.1666 26.833 64.1666H63.1663C63.7186 64.1666 64.1663 63.7189 64.1663 63.1666V48.7333C64.1663 48.4571 63.9425 48.2333 63.6663 48.2333C63.3902 48.2333 63.1663 48.4571 63.1663 48.7333V63.1666H26.833V26.8333L41.2663 26.8333C41.5425 26.8333 41.7663 26.6094 41.7663 26.3333C41.7663 26.0571 41.5425 25.8333 41.2663 25.8333H26.833ZM64.0199 25.9797C64.0321 25.9919 64.0435 26.0046 64.0542 26.0177L64.1663 26.324L64.1663 26.3342V37.5333C64.1663 37.8094 63.9425 38.0333 63.6663 38.0333C63.3902 38.0333 63.1663 37.8094 63.1663 37.5333V27.5404L41.6199 49.0868C41.4246 49.2821 41.1081 49.2821 40.9128 49.0868C40.7175 48.8915 40.7175 48.575 40.9128 48.3797L62.4592 26.8333H52.4663C52.1902 26.8333 51.9663 26.6094 51.9663 26.3333C51.9663 26.0571 52.1902 25.8333 52.4663 25.8333H63.666H63.6663C63.6823 25.8333 63.6983 25.834 63.7143 25.8355C63.7632 25.8402 63.8116 25.8521 63.8577 25.8712C63.9167 25.8956 63.972 25.9318 64.0199 25.9797Z' fill='%230F1022'/%3E%3Cpath d='M63.1663 63.1666V64.1666H64.1663V63.1666H63.1663ZM26.833 63.1666H25.833V64.1666H26.833V63.1666ZM26.833 26.8333L26.833 25.8333L25.833 25.8333V26.8333H26.833ZM41.2663 26.8333L41.2663 25.8333H41.2663L41.2663 26.8333ZM64.0542 26.0177L64.9934 25.6742L64.9356 25.5161L64.8292 25.3857L64.0542 26.0177ZM64.0199 25.9797L64.727 25.2726L64.727 25.2726L64.0199 25.9797ZM64.1663 26.324L65.1662 26.3158L65.1648 26.1429L65.1054 25.9806L64.1663 26.324ZM64.1663 26.3342L65.1664 26.3342L65.1663 26.326L64.1663 26.3342ZM63.1663 27.5404H64.1663V25.1261L62.4592 26.8333L63.1663 27.5404ZM40.9128 49.0868L40.2057 49.7939L40.2057 49.7939L40.9128 49.0868ZM40.9128 48.3797L40.2057 47.6726L40.2057 47.6726L40.9128 48.3797ZM62.4592 26.8333L63.1663 27.5404L64.8734 25.8333H62.4592V26.8333ZM63.7143 25.8355L63.8096 24.8401L63.8095 24.8401L63.7143 25.8355ZM63.8577 25.8712L64.2401 24.9472L64.24 24.9472L63.8577 25.8712ZM26.833 26.8333V26.8333V24.8333C25.7284 24.8333 24.833 25.7287 24.833 26.8333H26.833ZM26.833 63.1666V26.8333H24.833V63.1666H26.833ZM26.833 63.1666H26.833H24.833C24.833 64.2712 25.7284 65.1666 26.833 65.1666V63.1666ZM63.1663 63.1666H26.833V65.1666H63.1663V63.1666ZM63.1663 63.1666V65.1666C64.2709 65.1666 65.1663 64.2712 65.1663 63.1666H63.1663ZM63.1663 48.7333V63.1666H65.1663V48.7333H63.1663ZM63.6663 49.2333C63.3902 49.2333 63.1663 49.0094 63.1663 48.7333H65.1663C65.1663 47.9048 64.4948 47.2333 63.6663 47.2333V49.2333ZM64.1663 48.7333C64.1663 49.0094 63.9425 49.2333 63.6663 49.2333V47.2333C62.8379 47.2333 62.1663 47.9048 62.1663 48.7333H64.1663ZM64.1663 63.1666V48.7333H62.1663V63.1666H64.1663ZM26.833 64.1666H63.1663V62.1666H26.833V64.1666ZM25.833 26.8333V63.1666H27.833V26.8333H25.833ZM41.2663 25.8333L26.833 25.8333L26.833 27.8333L41.2663 27.8333L41.2663 25.8333ZM40.7663 26.3333C40.7663 26.0571 40.9902 25.8333 41.2663 25.8333V27.8333C42.0948 27.8333 42.7663 27.1617 42.7663 26.3333H40.7663ZM41.2663 26.8333C40.9902 26.8333 40.7663 26.6094 40.7663 26.3333H42.7663C42.7663 25.5048 42.0948 24.8333 41.2663 24.8333V26.8333ZM26.833 26.8333H41.2663V24.8333H26.833V26.8333ZM64.8292 25.3857C64.7971 25.3464 64.763 25.3086 64.727 25.2726L63.3128 26.6868C63.3012 26.6752 63.2899 26.6628 63.2793 26.6497L64.8292 25.3857ZM65.1054 25.9806L64.9934 25.6742L63.1151 26.3611L63.2271 26.6675L65.1054 25.9806ZM65.1663 26.326L65.1662 26.3158L63.1663 26.3322L63.1664 26.3425L65.1663 26.326ZM65.1663 37.5333V26.3342H63.1663V37.5333H65.1663ZM63.6663 39.0333C64.4948 39.0333 65.1663 38.3617 65.1663 37.5333H63.1663C63.1663 37.2571 63.3902 37.0333 63.6663 37.0333V39.0333ZM62.1663 37.5333C62.1663 38.3617 62.8379 39.0333 63.6663 39.0333V37.0333C63.9425 37.0333 64.1663 37.2571 64.1663 37.5333H62.1663ZM62.1663 27.5404V37.5333H64.1663V27.5404H62.1663ZM42.327 49.7939L63.8734 28.2475L62.4592 26.8333L40.9128 48.3797L42.327 49.7939ZM40.2057 49.7939C40.7915 50.3797 41.7412 50.3797 42.327 49.7939L40.9128 48.3797C41.108 48.1844 41.4246 48.1844 41.6199 48.3797L40.2057 49.7939ZM40.2057 47.6726C39.6199 48.2584 39.6199 49.2081 40.2057 49.7939L41.6199 48.3797C41.8152 48.575 41.8152 48.8915 41.6199 49.0868L40.2057 47.6726ZM61.7521 26.1261L40.2057 47.6726L41.6199 49.0868L63.1663 27.5404L61.7521 26.1261ZM52.4663 27.8333H62.4592V25.8333H52.4663V27.8333ZM50.9663 26.3333C50.9663 27.1617 51.6379 27.8333 52.4663 27.8333V25.8333C52.7425 25.8333 52.9663 26.0571 52.9663 26.3333H50.9663ZM52.4663 24.8333C51.6379 24.8333 50.9663 25.5048 50.9663 26.3333H52.9663C52.9663 26.6094 52.7425 26.8333 52.4663 26.8333V24.8333ZM63.666 24.8333H52.4663V26.8333H63.666V24.8333ZM63.6663 24.8333H63.666V26.8333H63.6663V24.8333ZM63.8095 24.8401C63.7619 24.8355 63.7141 24.8333 63.6663 24.8333V26.8333C63.6505 26.8333 63.6347 26.8325 63.619 26.831L63.8095 24.8401ZM64.24 24.9472C64.1011 24.8897 63.9559 24.8541 63.8096 24.8401L63.619 26.831C63.5706 26.8264 63.5221 26.8146 63.4754 26.7952L64.24 24.9472ZM64.727 25.2726C64.5845 25.1301 64.4184 25.0209 64.2401 24.9472L63.4754 26.7952C63.4151 26.7702 63.3594 26.7334 63.3128 26.6868L64.727 25.2726Z' fill='%230F1022'/%3E%3C/svg%3E", - name: "more", - label: "More networks", - showOpenInNewIcon: false, - href: ADVANCE_TOOLS_HREF, -} - -const MAINNET_MORE_NETWORKS = [ALGORAND, ACALA, SEI, MORE]; -const TESTNET_MORE_NETWORKS = [ALGORAND, ACALA, MORE]; - -const TESTNET_TOKEN_CONFIG: WormholeConnectConfig = { - tokensConfig: { - Wsolana: { - key: 'Wsolana', - symbol: 'W', - nativeChain: 'solana', - tokenId: { - chain: 'solana', - address: 'EetppHswYvV1jjRWoQKC1hejdeBDHR9NNzNtCyRQfrrQ', - }, - icon: 'https://assets.coingecko.com/coins/images/35087/standard/womrhole_logo_full_color_rgb_2000px_72ppi_fb766ac85a.png?1708688954', - coinGeckoId: 'wormhole', - decimals: { - default: 6, - }, - }, - Wsepolia: { - key: 'Wsepolia', - symbol: 'Ws', - nativeChain: 'sepolia', - tokenId: { - chain: 'sepolia', - address: '0x738141EFf659625F2eAD4feECDfCD94155C67f18', - }, - icon: 'https://assets.coingecko.com/coins/images/35087/standard/womrhole_logo_full_color_rgb_2000px_72ppi_fb766ac85a.png?1708688954', - coinGeckoId: 'wormhole', - decimals: { - default: 18, - }, - }, - Warbitrum_sepolia: { - key: 'Warbitrum_sepolia', - symbol: 'Ws', - nativeChain: 'arbitrum_sepolia', - tokenId: { - chain: 'arbitrum_sepolia', - address: '0x395D3C74232D12916ecA8952BA352b4d27818035', - }, - icon: 'https://assets.coingecko.com/coins/images/35087/standard/womrhole_logo_full_color_rgb_2000px_72ppi_fb766ac85a.png?1708688954', - coinGeckoId: 'wormhole', - decimals: { - default: 18, - }, - }, - Wbase_sepolia: { - key: 'Wbase_sepolia', - symbol: 'Ws', - nativeChain: 'base_sepolia', - tokenId: { - chain: 'base_sepolia', - address: '0x1d30E78B7C7fbbcef87ae6e97B5389b2e470CA4a', - }, - icon: 'https://assets.coingecko.com/coins/images/35087/standard/womrhole_logo_full_color_rgb_2000px_72ppi_fb766ac85a.png?1708688954', - coinGeckoId: 'wormhole', - decimals: { - default: 18, - }, - }, - Woptimism_sepolia: { - key: 'Woptimism_sepolia', - symbol: 'Ws', - nativeChain: 'optimism_sepolia', - tokenId: { - chain: 'optimism_sepolia', - address: '0xdDFeABcCf2063CD66f53a1218e23c681Ba6e7962', - }, - icon: 'https://assets.coingecko.com/coins/images/35087/standard/womrhole_logo_full_color_rgb_2000px_72ppi_fb766ac85a.png?1708688954', - coinGeckoId: 'wormhole', - decimals: { - default: 18, - }, - }, - }, - nttGroups: { - W: { - nttManagers: [ - { - chainName: 'solana', - address: 'NTtAaoDJhkeHeaVUHnyhwbPNAN6WgBpHkHBTc6d7vLK', - tokenKey: 'Wsolana', - transceivers: [ - { - address: 'NTtAaoDJhkeHeaVUHnyhwbPNAN6WgBpHkHBTc6d7vLK', - type: 'wormhole', - }, - ], - solanaQuoter: 'Nqd6XqA8LbsCuG8MLWWuP865NV6jR1MbXeKxD4HLKDJ', - }, - { - chainName: 'sepolia', - address: '0x06413c42e913327Bc9a08B7C1E362BAE7C0b9598', - tokenKey: 'Wsepolia', - transceivers: [ - { - address: '0x649fF7B32C2DE771043ea105c4aAb2D724497238', - type: 'wormhole', - }, - ], - }, - { - chainName: 'arbitrum_sepolia', - address: '0xCeC6FB4F352bf3DC2b95E1c41831E4D2DBF9a35D', - tokenKey: 'Warbitrum_sepolia', - transceivers: [ - { - address: '0xfA42603152E4f133F5F3DA610CDa91dF5821d8bc', - type: 'wormhole', - }, - ], - }, - { - chainName: 'base_sepolia', - address: '0x8b9E328bE1b1Bc7501B413d04EBF7479B110775c', - tokenKey: 'Wbase_sepolia', - transceivers: [ - { - address: '0x149987472333cD48ac6D28293A338a1EEa6Be7EE', - type: 'wormhole', - }, - ], - }, - { - chainName: 'optimism_sepolia', - address: '0x27F9Fdd3eaD5aA9A5D827Ca860Be28442A1e7582', - tokenKey: 'Woptimism_sepolia', - transceivers: [ - { - address: '0xeCF0496DE01e9Aa4ADB50ae56dB550f52003bdB7', - type: 'wormhole', - }, - ], - }, - ], - }, - }, -} - -const MAINNET_TOKEN_CONFIG: WormholeConnectConfig = { - tokensConfig: { - "ETHFIethereum": { - key: "ETHFIethereum", - symbol: "ETHFI", - nativeChain: 'ethereum', - tokenId: { - chain: 'ethereum', - address: '0xfe0c30065b384f05761f15d0cc899d4f9f9cc0eb', - }, - icon: "https://assets.coingecko.com/coins/images/35958/standard/etherfi.jpeg?1710254562", - coinGeckoId: "ether-fi", - decimals: { - default: 18, - Ethereum: 18 - }, - }, - "ETHFIarbitrum": { - key: "ETHFIarbitrum", - symbol: "ETHFI", - nativeChain: 'arbitrum', - tokenId: { - chain: 'arbitrum', - address: '0x7189fb5B6504bbfF6a852B13B7B82a3c118fDc27', - }, - icon: "https://assets.coingecko.com/coins/images/35958/standard/etherfi.jpeg?1710254562", - coinGeckoId: "ether-fi", - decimals: { - default: 18, - Arbitrum: 18 - }, - }, - WOM: { - key: "WOM", - symbol: "WOM", - nativeChain: 'bsc', - tokenId: { - chain: 'bsc', - address: '0xad6742a35fb341a9cc6ad674738dd8da98b94fb1', - }, - icon: "https://assets.coingecko.com/coins/images/26946/standard/Wombat_Token.png?1696526001", - coinGeckoId: "wombat-exchange", - decimals: { - default: 18 - }, - //Ehtereum, Avalanche, Base, Scroll, Optimism, Arbitrum, BNB Chain - foreignAssets: { - ethereum: { - address: "0xc0B314a8c08637685Fc3daFC477b92028c540CFB", - decimals: 18 - }, - avalanche: { - address: "0xa15E4544D141aa98C4581a1EA10Eb9048c3b3382", - decimals: 18 - }, - base: { - address: "0xD9541B08B375D58ae104EC247d7443D2D7235D64", - decimals: 18 - }, - scroll: { - address: "0x1a7aD8A6171A1EA84DD1E6d649cbd616189660D9", - decimals: 18 - }, - optimism: { - address: "0xD2612B256F6f76feA8C6fbca0BF3166D0d13a668", - decimals: 18 - }, - arbitrum: { - address: "0x7B5EB3940021Ec0e8e463D5dBB4B7B09a89DDF96", - decimals: 18 - } - } - }, - "USDC.e": { - key: 'USDC.e', - symbol: 'USDC.e', - nativeChain: 'polygon', - tokenId: { - chain: 'polygon', - address: '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174', - }, - icon: "data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' data-name='86977684-12db-4850-8f30-233a7c267d11' width='2000' height='2000' viewBox='0 0 2000 2000' style='max-height: 100%25%3b max-width: 100%25%3b'%3e%3cpath fill='%232775ca' d='M1000 2000c554.17 0 1000-445.83 1000-1000S1554.17 0 1000 0 0 445.83 0 1000s445.83 1000 1000 1000z'%3e%3c/path%3e%3cpath fill='white' d='M1275 1158.33c0-145.83-87.5-195.83-262.5-216.66-125-16.67-150-50-150-108.34s41.67-95.83 125-95.83c75 0 116.67 25 137.5 87.5 4.17 12.5 16.67 20.83 29.17 20.83h66.66c16.67 0 29.17-12.5 29.17-29.16v-4.17c-16.67-91.67-91.67-162.5-187.5-170.83v-100c0-16.67-12.5-29.17-33.33-33.34h-62.5c-16.67 0-29.17 12.5-33.34 33.34v95.83c-125 16.67-204.16 100-204.16 204.17 0 137.5 83.33 191.66 258.33 212.5 116.67 20.83 154.17 45.83 154.17 112.5s-58.34 112.5-137.5 112.5c-108.34 0-145.84-45.84-158.34-108.34-4.16-16.66-16.66-25-29.16-25h-70.84c-16.66 0-29.16 12.5-29.16 29.17v4.17c16.66 104.16 83.33 179.16 220.83 200v100c0 16.66 12.5 29.16 33.33 33.33h62.5c16.67 0 29.17-12.5 33.34-33.33v-100c125-20.84 208.33-108.34 208.33-220.84z'%3e%3c/path%3e%3cpath fill='white' d='M787.5 1595.83c-325-116.66-491.67-479.16-370.83-800 62.5-175 200-308.33 370.83-370.83 16.67-8.33 25-20.83 25-41.67V325c0-16.67-8.33-29.17-25-33.33-4.17 0-12.5 0-16.67 4.16-395.83 125-612.5 545.84-487.5 941.67 75 233.33 254.17 412.5 487.5 487.5 16.67 8.33 33.34 0 37.5-16.67 4.17-4.16 4.17-8.33 4.17-16.66v-58.34c0-12.5-12.5-29.16-25-37.5zm441.67-1300c-16.67-8.33-33.34 0-37.5 16.67-4.17 4.17-4.17 8.33-4.17 16.67v58.33c0 16.67 12.5 33.33 25 41.67 325 116.66 491.67 479.16 370.83 800-62.5 175-200 308.33-370.83 370.83-16.67 8.33-25 20.83-25 41.67V1700c0 16.67 8.33 29.17 25 33.33 4.17 0 12.5 0 16.67-4.16 395.83-125 612.5-545.84 487.5-941.67-75-237.5-258.34-416.67-487.5-491.67z'%3e%3c/path%3e%3c/svg%3e", - coinGeckoId: 'bridged-usdc-polygon-pos-bridge', - color: '#FC8E03', - decimals: { - default: 6, - }, - foreignAssets: { - ethereum: { - address: '0x566957eF80F9fd5526CD2BEF8BE67035C0b81130', - decimals: 6, - }, - bsc: { - address: '0x672147dD47674757C457eB155BAA382cc10705Dd', - decimals: 6, - }, - avalanche: { - address: '0x543672E9CBEC728CBBa9C3Ccd99ed80aC3607FA8', - decimals: 6, - }, - sui: { - address: - '0xcf72ec52c0f8ddead746252481fb44ff6e8485a39b803825bde6b00d77cdb0bb::coin::COIN', - decimals: 6, - }, - aptos: { - address: - '0xc7160b1c2415d19a88add188ec726e62aab0045f0aed798106a2ef2994a9101e::coin::T', - decimals: 6, - }, - arbitrum: { - address: '0x9A3Fba8a0870Fb9765023681DAa5390C7919C916', - decimals: 6, - }, - fantom: { - address: '0x6e0e8cf6Ad151e1260A4D398faaEDFC450A9f00a', - decimals: 6, - }, - base: { - address: '0x59f4f969dd3A91A943651C9625E96822DC84Ef94', - decimals: 6, - }, - celo: { - address: '0x0E21B5BdFb6eDBa7d903a610d4DE2F8c72586017', - decimals: 6, - }, - }, - }, - BONK: { - key: 'BONK', - symbol: 'BONK', - nativeChain: 'solana', - tokenId: { - chain: 'solana', - address: 'DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263', - }, - icon: "https://quei6zhlcfsxdfyes577gy7bkxmuz7qqakyt72xlbkyh7fysmoza.arweave.net/hQiPZOsRZXGXBJd_82PhVdlM_hACsT_q6wqwf5cSY7I", - coinGeckoId: 'bonk', - color: '#FC8E03', - decimals: { - default: 5, - }, - foreignAssets: { - ethereum: { - address: '0x1151CB3d861920e07a38e03eEAd12C32178567F6', - decimals: 5, - }, - bsc: { - address: '0xA697e272a73744b343528C3Bc4702F2565b2F422', - decimals: 5, - }, - polygon: { - address: '0xe5B49820e5A1063F6F4DdF851327b5E8B2301048', - decimals: 5, - }, - avalanche: { - address: '0xC07C98a93591504584738e4569928DDb3b9f12A7', - decimals: 5, - }, - sui: { - address: - '0x6907963ca849faff0957b9a8269a7a07065e3def2eef49cc33b50ab946ea5a9f::coin::COIN', - decimals: 5, - }, - aptos: { - address: - '0x2a90fae71afc7460ee42b20ee49a9c9b29272905ad71fef92fbd8b3905a24b56::coin::T', - decimals: 5, - }, - arbitrum: { - address: '0x09199d9A5F4448D0848e4395D065e1ad9c4a1F74', - decimals: 5, - }, - wormchain: { - address: - 'wormhole10qt8wg0n7z740ssvf3urmvgtjhxpyp74hxqvqt7z226gykuus7eq9mpu8u', - decimals: 5, - }, - osmosis: { - address: - 'ibc/CA3733CB0071F480FAE8EF0D9C3D47A49C6589144620A642BBE0D59A293D110E', - decimals: 5, - }, - fantom: { - address: '0x3fEcdF1248fe7642d29f879a75CFC0339659ab93', - decimals: 5, - }, - base: { - address: '0xDF1Cf211D38E7762c9691Be4D779A441a17A6cFC', - decimals: 5, - }, - celo: { - address: '0x3fc50bc066aE2ee280876EeefADfdAbF6cA02894', - decimals: 5, - }, - }, - }, - Wsolana: { - key: 'Wsolana', - symbol: 'W', - nativeChain: 'solana', - tokenId: { - chain: 'solana', - address: '85VBFQZC9TZkfaptBWjvUw7YbZjy52A6mjtPGjstQAmQ', - }, - icon: 'https://assets.coingecko.com/coins/images/35087/standard/womrhole_logo_full_color_rgb_2000px_72ppi_fb766ac85a.png?1708688954', - coinGeckoId: 'wormhole', - decimals: { - default: 6, - }, - }, - Wethereum: { - key: 'Wethereum', - symbol: 'W', - nativeChain: 'ethereum', - tokenId: { - chain: 'ethereum', - address: '0xB0fFa8000886e57F86dd5264b9582b2Ad87b2b91', - }, - icon: 'https://assets.coingecko.com/coins/images/35087/standard/womrhole_logo_full_color_rgb_2000px_72ppi_fb766ac85a.png?1708688954', - coinGeckoId: 'wormhole', - decimals: { - default: 18, - }, - }, - Warbitrum: { - key: 'Warbitrum', - symbol: 'W', - nativeChain: 'arbitrum', - tokenId: { - chain: 'arbitrum', - address: '0xB0fFa8000886e57F86dd5264b9582b2Ad87b2b91', - }, - icon: 'https://assets.coingecko.com/coins/images/35087/standard/womrhole_logo_full_color_rgb_2000px_72ppi_fb766ac85a.png?1708688954', - coinGeckoId: 'wormhole', - decimals: { - default: 18, - }, - }, - Woptimism: { - key: 'Woptimism', - symbol: 'W', - nativeChain: 'optimism', - tokenId: { - chain: 'optimism', - address: '0xB0fFa8000886e57F86dd5264b9582b2Ad87b2b91', - }, - icon: 'https://assets.coingecko.com/coins/images/35087/standard/womrhole_logo_full_color_rgb_2000px_72ppi_fb766ac85a.png?1708688954', - coinGeckoId: 'wormhole', - decimals: { - default: 18, - }, - }, - Wbase: { - key: 'Wbase', - symbol: 'W', - nativeChain: 'base', - tokenId: { - chain: 'base', - address: '0xB0fFa8000886e57F86dd5264b9582b2Ad87b2b91', - }, - icon: 'https://assets.coingecko.com/coins/images/35087/standard/womrhole_logo_full_color_rgb_2000px_72ppi_fb766ac85a.png?1708688954', - coinGeckoId: 'wormhole', - decimals: { - default: 18, - }, - }, - osETHethereum: { - key: 'osETHethereum', - symbol: 'osETH', - nativeChain: 'ethereum', - tokenId: { - chain: 'ethereum', - address: '0xf1C9acDc66974dFB6dEcB12aA385b9cD01190E38', - }, - icon: 'https://coin-images.coingecko.com/coins/images/33117/large/Frame_27513839.png?1700732599', - coinGeckoId: 'stakewise-staked-eth', - decimals: { - default: 18, - }, - }, - osETHarbitrum: { - key: 'osETHarbitrum', - symbol: 'osETH', - nativeChain: 'arbitrum', - tokenId: { - chain: 'arbitrum', - address: '0xf7d4e7273E5015C96728A6b02f31C505eE184603', - }, - icon: 'https://coin-images.coingecko.com/coins/images/33117/large/Frame_27513839.png?1700732599', - coinGeckoId: 'stakewise-staked-eth', - decimals: { - default: 18, - }, - }, - 'wstETH ': { - key: 'wstETH ', - symbol: 'wstETH ', - nativeChain: 'bsc', - tokenId: { - chain: 'bsc', - address: '0x26c5e01524d2E6280A48F2c50fF6De7e52E9611C', - }, - icon: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3R5bGU9Im1heC1oZWlnaHQ6IDEwMCU7IG1heC13aWR0aDogMTAwJTsiPjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiByeD0iMjU2IiBmaWxsPSIjMDBBM0ZGIj48L3JlY3Q+PHBhdGggb3BhY2l0eT0iMC42IiBkPSJNMzYxLjAxMiAyMzcuODEyTDM2My44NzggMjQyLjIwOUMzOTYuMjA0IDI5MS43OTggMzg4Ljk4NCAzNTYuNzQyIDM0Ni41MiAzOTguMzQ4QzMyMS41MzkgNDIyLjgyNiAyODguNzk4IDQzNS4wNjYgMjU2LjA1NiA0MzUuMDY5QzI1Ni4wNTYgNDM1LjA2OSAyNTYuMDU2IDQzNS4wNjkgMzYxLjAxMiAyMzcuODEyWiIgZmlsbD0id2hpdGUiPjwvcGF0aD48cGF0aCBvcGFjaXR5PSIwLjIiIGQ9Ik0yNTYuMDQ0IDI5Ny43NjRMMzYxIDIzNy44MTJDMjU2LjA0NSA0MzUuMDY5IDI1Ni4wNDQgNDM1LjA2OSAyNTYuMDQ0IDQzNS4wNjlDMjU2LjA0NCAzOTIuMTA4IDI1Ni4wNDQgMzQyLjg4IDI1Ni4wNDQgMjk3Ljc2NFoiIGZpbGw9IndoaXRlIj48L3BhdGg+PHBhdGggZD0iTTE1MC45ODggMjM3LjgxMkwxNDguMTIyIDI0Mi4yMDlDMTE1Ljc5NiAyOTEuNzk4IDEyMy4wMTYgMzU2Ljc0MiAxNjUuNDggMzk4LjM0OEMxOTAuNDYxIDQyMi44MjYgMjIzLjIwMiA0MzUuMDY2IDI1NS45NDQgNDM1LjA2OUMyNTUuOTQ0IDQzNS4wNjkgMjU1Ljk0NCA0MzUuMDY5IDE1MC45ODggMjM3LjgxMloiIGZpbGw9IndoaXRlIj48L3BhdGg+PHBhdGggb3BhY2l0eT0iMC42IiBkPSJNMjU1LjkxNCAyOTcuNzY0TDE1MC45NTggMjM3LjgxMkMyNTUuOTE0IDQzNS4wNjkgMjU1LjkxNCA0MzUuMDY5IDI1NS45MTQgNDM1LjA2OUMyNTUuOTE0IDM5Mi4xMDggMjU1LjkxNCAzNDIuODggMjU1LjkxNCAyOTcuNzY0WiIgZmlsbD0id2hpdGUiPjwvcGF0aD48cGF0aCBvcGFjaXR5PSIwLjIiIGQ9Ik0yNTYuMDgzIDE2My44MzNWMjY3LjIzM0wzNDYuNDkxIDIxNS41NjZMMjU2LjA4MyAxNjMuODMzWiIgZmlsbD0id2hpdGUiPjwvcGF0aD48cGF0aCBvcGFjaXR5PSIwLjYiIGQ9Ik0yNTYuMDU2IDE2My44MzNMMTY1LjU4MyAyMTUuNTY1TDI1Ni4wNTYgMjY3LjIzM1YxNjMuODMzWiIgZmlsbD0id2hpdGUiPjwvcGF0aD48cGF0aCBkPSJNMjU2LjA1NiA3Ni44NzVMMTY1LjU4MyAyMTUuNTk5TDI1Ni4wNTYgMTYzLjcyMlY3Ni44NzVaIiBmaWxsPSJ3aGl0ZSI+PC9wYXRoPjxwYXRoIG9wYWNpdHk9IjAuNiIgZD0iTTI1Ni4wODMgMTYzLjcwNkwzNDYuNTYgMjE1LjU4NUwyNTYuMDgzIDc2Ljc5MTZWMTYzLjcwNloiIGZpbGw9IndoaXRlIj48L3BhdGg+PC9zdmc+Cgo=", - coinGeckoId: 'wrapped-steth', - color: '#3AA3FF', - decimals: { - default: 8, - Ethereum: 18, - }, - }, - }, - nttGroups: { - W: { - nttManagers: [ - { - chainName: 'solana', - address: 'NTtAaoDJhkeHeaVUHnyhwbPNAN6WgBpHkHBTc6d7vLK', - tokenKey: 'Wsolana', - transceivers: [ - { - address: 'NTtAaoDJhkeHeaVUHnyhwbPNAN6WgBpHkHBTc6d7vLK', - type: 'wormhole', - }, - ], - solanaQuoter: 'Nqd6XqA8LbsCuG8MLWWuP865NV6jR1MbXeKxD4HLKDJ', - }, - { - chainName: 'ethereum', - address: '0xc072B1AEf336eDde59A049699Ef4e8Fa9D594A48', - tokenKey: 'Wethereum', - transceivers: [ - { - address: '0xDb55492d7190D1baE8ACbE03911C4E3E7426870c', - type: 'wormhole', - }, - ], - }, - { - chainName: 'arbitrum', - address: '0x5333d0AcA64a450Add6FeF76D6D1375F726CB484', - tokenKey: 'Warbitrum', - transceivers: [ - { - address: '0xD1a8AB69e00266e8B791a15BC47514153A5045a6', - type: 'wormhole', - }, - ], - }, - { - chainName: 'optimism', - address: '0x1a4F1a790f23Ffb9772966cB6F36dCd658033e13', - tokenKey: 'Woptimism', - transceivers: [ - { - address: '0x9bD8b7b527CA4e6738cBDaBdF51C22466756073d', - type: 'wormhole', - }, - ], - }, - { - chainName: 'base', - address: '0x5333d0AcA64a450Add6FeF76D6D1375F726CB484', - tokenKey: 'Wbase', - transceivers: [ - { - address: '0xD1a8AB69e00266e8B791a15BC47514153A5045a6', - type: 'wormhole', - }, - ], - }, - ], - }, - osETH: { - nttManagers: [ - { - chainName: 'ethereum', - address: '0x896b78fd7e465fb22e80c34ff8f1c5f62fa2c009', - tokenKey: 'osETHethereum', - transceivers: [ - { - address: '0xAAFE766B966219C2f3F4271aB8D0Ff1883147AB6', - type: 'wormhole', - }, - ], - }, - { - chainName: 'arbitrum', - address: '0x485F6Ac6a3B97690910C1546842FfE0629582aD3', - tokenKey: 'osETHarbitrum', - transceivers: [ - { - address: '0xAf7ae721070c25dF97043381509DBc042e65736F', - type: 'wormhole', - }, - ], - } - ] - }, - Lido_wstETH: { - displayName: 'NTT: Wormhole + Axelar', - nttManagers: [ - { - chainName: 'ethereum', - address: '0xb948a93827d68a82F6513Ad178964Da487fe2BD9', - tokenKey: 'wstETH', - transceivers: [ - { - address: '0xA1ACC1e6edaB281Febd91E3515093F1DE81F25c0', - type: 'wormhole', - }, - ], - }, - { - chainName: 'bsc', - address: '0x6981F5621691CBfE3DdD524dE71076b79F0A0278', - tokenKey: 'wstETH ', - transceivers: [ - { - address: '0xbe3F7e06872E0dF6CD7FF35B7aa4Bb1446DC9986', - type: 'wormhole', - }, - ], - }, - ], - }, - "ETHFI": { - nttManagers: [ - { - chainName: 'ethereum', - address: '0x344169Cc4abE9459e77bD99D13AA8589b55b6174', - tokenKey: 'ETHFIethereum', - transceivers: [ - { - address: '0x3bf4AebcaD920447c5fdD6529239Ab3922ce2186', - type: 'wormhole', - }, - ], - }, - { - chainName: 'arbitrum', - address: '0x90A82462258F79780498151EF6f663f1D4BE4E3b', - tokenKey: 'ETHFIarbitrum', - transceivers: [ - { - address: '0x4386e36B96D437b0F1C04A35E572C10C6627d88a', - type: 'wormhole', - }, - ], - } - ] - } - }, - -} +import { defineConfig } from "vite"; +import viteConfig from "./vite.config"; +import { resolve } from "path"; // https://vitejs.dev/config/ export default defineConfig({ @@ -638,56 +9,15 @@ export default defineConfig({ resolve: { ...viteConfig.resolve, alias: [ - ...(viteConfig.resolve?.alias as any || []), - { find: '@env', replacement: resolve(__dirname, `./src/env/token-bridge.${process.env.VITE_APP_CLUSTER === 'mainnet' ? 'mainnet' : 'testnet'}.ts`) } - ] - }, - define: { - ...viteConfig?.define, - navBar: [ - { label: "Home", active: true, href: `${PUBLIC_URL}/` }, - { label: "Staking", href: "https://www.tally.xyz/gov/wormhole", isBlank: true }, - { label: "Rewards", href: `${PUBLIC_URL}/rewards-dashboard/` , isBlank: true }, - { label: "USDC", href: USDC_BRIDGE_HREF }, - { label: "Privacy Policy", href: PRIVACY_POLICY_HREF }, - ], - redirects: { - source: [ - "#/nft", - "#/redeem", - "#/nft-origin-verifier", - "#/token-origin-verifier", - "#/register", - "#/migrate/Ethereum/:legacyAsset/", - "#/migrate/BinanceSmartChain/:legacyAsset/", - "#/migrate/Celo/:legacyAsset/", - "#/migrate/Ethereum/", - "#/migrate/BinanceSmartChain/", - "#/migrate/Celo/", - "#/stats", - "#/withdraw-tokens-terra", - "#/unwrap-native", - "#/custody-addresses" - ], - target: ADVANCE_TOOLS_HREF - }, - wormholeConnectConfig: { - ...viteConfig?.define?.wormholeConnectConfig, - cctpWarning: { - href: USDC_BRIDGE_HREF - }, - networks: [...chains, "solana", "injective", "klaytn"], - moreNetworks: { - href: ADVANCE_TOOLS_HREF_TEMPLATE, - target: "_blank", - description: "Advance Tools offers unlimited transfers across chains for tokens and NFTs wrapped by Wormhole.", - networks: process.env.VITE_APP_CLUSTER === 'mainnet' ? MAINNET_MORE_NETWORKS : TESTNET_MORE_NETWORKS, + ...((viteConfig.resolve?.alias as NonNullable<[]>) || []), + { + find: "@env", + replacement: resolve( + __dirname, + `./src/env/token-bridge.${process.env.VITE_APP_CLUSTER === "mainnet" ? "mainnet" : "testnet"}.ts` + ), }, - moreTokens: { - label: "More tokens ...", - href: ADVANCE_TOOLS_HREF_TEMPLATE, - }, - ...(process.env.VITE_APP_CLUSTER === 'mainnet' ? MAINNET_TOKEN_CONFIG : TESTNET_TOKEN_CONFIG) - } - } -}) + ], + }, + define: {}, +}); diff --git a/apps/connect/vite.usdc-bridge.config.ts b/apps/connect/vite.usdc-bridge.config.ts index c1ae03f08..f686c6565 100644 --- a/apps/connect/vite.usdc-bridge.config.ts +++ b/apps/connect/vite.usdc-bridge.config.ts @@ -1,10 +1,8 @@ -import { defineConfig } from 'vite' -import viteConfig from './vite.config' -import { resolve } from 'path'; +import { defineConfig } from "vite"; +import viteConfig from "./vite.config"; +import { resolve } from "path"; const PUBLIC_URL = viteConfig.base; -const TESTNET_NETWORKS = ['goerli', 'fuji', 'arbitrumgoerli', 'optimismgoerli', 'basegoerli', "mumbai", "solana"]; -const MAINNET_NETWORKS = ["ethereum", "avalanche", "arbitrum", "optimism", "base", "polygon", "solana"]; // https://vitejs.dev/config/ export default defineConfig({ @@ -12,30 +10,16 @@ export default defineConfig({ resolve: { ...viteConfig.resolve, alias: [ - ...(viteConfig.resolve?.alias as any || []), - { find: '@env', replacement: resolve(__dirname, `./src/env/token-bridge.${process.env.VITE_APP_CLUSTER === 'mainnet' ? 'mainnet' : 'testnet'}.ts`) } - ] + ...((viteConfig.resolve?.alias as NonNullable<[]>) || []), + { + find: "@env", + replacement: resolve( + __dirname, + `./src/env/usdc-bridge.${process.env.VITE_APP_CLUSTER === "mainnet" ? "mainnet" : "testnet"}.ts` + ), + }, + ], }, base: `${PUBLIC_URL}/usdc-bridge/`, - define: { - ...viteConfig?.define, - navBar: [ - { label: "Home", href: `${PUBLIC_URL}/` }, - { label: "Staking", href: "https://www.tally.xyz/gov/wormhole", isBlank: true }, - { label: "Rewards", href: `${PUBLIC_URL}/rewards-dashboard/` , isBlank: true }, - { label: "USDC", active: true, href: `${PUBLIC_URL}/usdc-bridge` }, - { label: "Privacy Policy", href: `${PUBLIC_URL}/privacy-policy` }, - ], - wormholeConnectConfig: { - ...viteConfig?.define?.wormholeConnectConfig, - pageHeader: { - text: 'USDC Transfer', - align: 'center' - }, - routes: ["cctpManual", "cctpRelay"], - networks: process.env.VITE_APP_CLUSTER === 'mainnet' ? MAINNET_NETWORKS : TESTNET_NETWORKS, - tokens: ["USDCeth", "USDCavax", "USDCarbitrum", "USDCoptimism", "USDCbase", "USDCpolygon", "USDCsol" ], - partnerLogo: "data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8' standalone='no'%3F%3E%3Csvg class='white-mode ' id='Layer_2' data-name='Layer 2' role='button' viewBox='0 0 912 242' version='1.1' sodipodi:docname='circle.svg' width='912' height='242' inkscape:version='1.2.2 (b0a84865, 2022-12-01)' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' xmlns='http://www.w3.org/2000/svg' xmlns:svg='http://www.w3.org/2000/svg'%3E%3Cdefs id='defs95'%3E%3Cstyle id='style83'%3E .cls-1-1 %7B fill: %23ffffff; %7D .cls-2 %7B fill: %23ffffff; %7D .cls-3 %7B fill: %23ffffff; %7D %3C/style%3E%3ClinearGradient id='linear-gradient' x1='177.86' y1='291.17999' x2='341.06' y2='127.98' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='%233D3652' id='stop85' /%3E%3Cstop offset='1' stop-color='%233D3652' id='stop87' /%3E%3C/linearGradient%3E%3ClinearGradient id='linear-gradient-2' x1='96.43' y1='207.75' x2='259.64001' y2='44.549999' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='%233D3652' id='stop90' /%3E%3Cstop offset='1' stop-color='%233D3652' id='stop92' /%3E%3C/linearGradient%3E%3C/defs%3E%3Cpath class='cls-1-1' d='m 219.58983,63.44052 -5,-8.78 a 5.14,5.14 0 0 0 -8.11,-1.08 l -11.5,11.49 a 5.17,5.17 0 0 0 -0.64,6.51 90.22,90.22 0 0 1 10,20.58 v 0 a 90.2,90.2 0 0 1 -85.45,119 89.38,89.38 0 0 1 -42.259999,-10.49 l 19.449999,-19.46 a 64.41,64.41 0 0 0 80.77,-88.29 5.15,5.15 0 0 0 -8.29,-1.41 l -11.64,11.56 a 5.14,5.14 0 0 0 -1.37,4.82 l 1,4.18 a 38.63,38.63 0 0 1 -56.75,42.39 l -5.13,-2.94 a 5.13,5.13 0 0 0 -6.199999,0.83 l -47.51,47.5 a 5.15,5.15 0 0 0 0.51,7.73 l 7,5.37 a 114.86,114.86 0 0 0 70.459999,23.88 116,116 0 0 0 100.66,-173.39 z' id='path97' /%3E%3Cpath class='cls-2' d='m 189.36983,28.890522 a 114.83,114.83 0 0 0 -70.46,-23.89 A 116,116 0 0 0 18.219831,178.44052 l 5,8.77 a 5.16,5.16 0 0 0 8.12,1.09 l 11.48,-11.48 a 5.19,5.19 0 0 0 0.64,-6.5 89.81,89.81 0 0 1 -10,-20.58 v 0 a 90.2,90.2 0 0 1 85.449999,-118.999998 89.29,89.29 0 0 1 42.25,10.52 l -19.46,19.449998 a 64.39,64.39 0 0 0 -87.209999,60.23 c 0,1.07 0.29,5.95 0.38,6.79 a 64.76,64.76 0 0 0 6.07,21.27 5.16,5.16 0 0 0 8.3,1.41 l 11.64,-11.65 a 5.15,5.15 0 0 0 1.38,-4.81 l -1,-4.19 a 38.62,38.62 0 0 1 56.749999,-42.38 l 5.13,2.94 a 5.16,5.16 0 0 0 6.2,-0.83 l 47.5,-47.499998 a 5.16,5.16 0 0 0 -0.5,-7.74 z' id='path99' /%3E%3Cg class='logo-header-text' data-svg-origin='385.4800109863281 103.79999542236328' id='g113' transform='translate(-99.84016,-46.929478)'%3E%3Cpath class='cls-3' d='m 484.48,199.84 a 4.7,4.7 0 0 0 -6.09,0.14 c -7.45,5.78 -16.09,11.13 -28.72,11.13 -23.12,0 -41.93,-19.47 -41.93,-43.42 0,-23.95 18.74,-43.59 41.76,-43.59 10,0 20.8,4.21 28.74,11.18 a 4.67,4.67 0 0 0 3.62,1.62 4.08,4.08 0 0 0 3,-1.7 l 7.52,-7.74 a 4.83,4.83 0 0 0 1.47,-3.58 4.93,4.93 0 0 0 -1.72,-3.54 C 479,108.9 465.81,103.8 449.32,103.8 c -35.2,0 -63.84,28.82 -63.84,64.24 a 63.94,63.94 0 0 0 63.84,63.89 60.32,60.32 0 0 0 43,-17.3 5.32,5.32 0 0 0 1.52,-3.85 4.21,4.21 0 0 0 -1.36,-3 z' data-svg-origin='385.4800109863281 103.80000305175781' style='visibility:inherit;opacity:1' id='path101' /%3E%3Cpath class='cls-3' d='m 539.21,105.54 h -11.39 a 5,5 0 0 0 -4.83,4.85 v 115 a 5,5 0 0 0 4.83,4.86 h 11.39 a 5,5 0 0 0 4.83,-4.86 v -115 a 5,5 0 0 0 -4.83,-4.85 z' data-svg-origin='522.989990234375 105.54000091552734' style='visibility:inherit;opacity:1' id='path103' /%3E%3Cpath class='cls-3' d='m 674,144.25 c 0,-21.34 -17.57,-38.71 -39.17,-38.71 h -46.97 a 4.85,4.85 0 0 0 -4.83,4.85 v 115 a 4.85,4.85 0 0 0 4.83,4.86 h 11.22 a 5,5 0 0 0 4.83,-4.86 v -42.77 h 23.54 L 650,227.77 a 4.72,4.72 0 0 0 4.15,2.43 h 13.46 a 4.83,4.83 0 0 0 4.27,-2.29 5.14,5.14 0 0 0 0,-5 L 649,180.27 c 15.46,-6.87 25,-20.53 25,-36.02 z m -21.05,0.35 c 0,10.83 -8.93,20 -19.5,20 h -29.19 v -39.11 h 29.15 c 10.59,0 19.5,8.75 19.5,19.11 z' data-svg-origin='583.0299682617188 105.54000091552734' style='visibility:inherit;opacity:1' id='path105' /%3E%3Cpath class='cls-3' d='m 796.59,199.84 a 4.7,4.7 0 0 0 -6.09,0.14 c -7.45,5.78 -16.09,11.13 -28.72,11.13 -23.12,0 -41.93,-19.47 -41.93,-43.42 0,-23.95 18.73,-43.59 41.75,-43.59 10,0 20.8,4.21 28.75,11.18 a 4.65,4.65 0 0 0 3.65,1.62 4.08,4.08 0 0 0 3,-1.7 l 7.52,-7.74 a 4.82,4.82 0 0 0 1.46,-3.58 4.88,4.88 0 0 0 -1.71,-3.54 c -13.1,-11.44 -26.29,-16.54 -42.78,-16.54 -35.2,0 -63.84,28.82 -63.84,64.24 a 63.94,63.94 0 0 0 63.84,63.89 60.34,60.34 0 0 0 43,-17.3 5.33,5.33 0 0 0 1.52,-3.86 4.2,4.2 0 0 0 -1.36,-3 z' data-svg-origin='697.6499633789062 103.79999542236328' style='visibility:inherit;opacity:1' id='path107' /%3E%3Cpath class='cls-3' d='m 901.35,210.94 h -45.2 V 110.39 a 5,5 0 0 0 -4.83,-4.85 h -11.39 a 4.85,4.85 0 0 0 -4.83,4.85 v 115 a 4.85,4.85 0 0 0 4.83,4.86 h 61.42 a 4.85,4.85 0 0 0 4.84,-4.86 v -9.55 a 4.85,4.85 0 0 0 -4.84,-4.9 z' data-svg-origin='835.0999755859375 105.54000091552734' style='visibility:inherit;opacity:1' id='path109' /%3E%3Cpath class='cls-3' d='m 1003.67,125 a 4.85,4.85 0 0 0 4.83,-4.85 v -9.73 a 4.85,4.85 0 0 0 -4.83,-4.85 h -69 a 4.85,4.85 0 0 0 -4.83,4.85 v 115 a 4.85,4.85 0 0 0 4.83,4.86 h 69 a 4.85,4.85 0 0 0 4.83,-4.86 v -9.55 a 4.85,4.85 0 0 0 -4.83,-4.85 h -53 v -34.31 h 44.51 a 4.85,4.85 0 0 0 4.84,-4.85 v -9.72 a 5,5 0 0 0 -4.84,-4.86 H 950.7 V 125 Z' data-svg-origin='929.8399658203125 105.56999969482422' style='visibility:inherit;opacity:1' id='path111' /%3E%3C/g%3E%3C/svg%3E%0A" - } - } -}) + define: {}, +}); From e3b25f1855026f76cf8d4f3712005c45dc1c917a Mon Sep 17 00:00:00 2001 From: Daniel Isaac Geslin Date: Mon, 15 Jul 2024 11:36:01 +0200 Subject: [PATCH 3/9] fixed testing --- apps/connect/jest.setup.tsx | 2 ++ apps/connect/package-lock.json | 20 +++++++++++++++++++ apps/connect/package.json | 17 ++++++++-------- apps/connect/src/env/common.ts | 17 ++++++++-------- apps/connect/src/env/env-vars.ts | 1 + .../src/hooks/useFormatAssetParam.test.ts | 2 +- 6 files changed, 42 insertions(+), 17 deletions(-) create mode 100644 apps/connect/src/env/env-vars.ts diff --git a/apps/connect/jest.setup.tsx b/apps/connect/jest.setup.tsx index cc1bcbd57..2c31d132e 100644 --- a/apps/connect/jest.setup.tsx +++ b/apps/connect/jest.setup.tsx @@ -6,3 +6,5 @@ Object.assign(global, { TextDecoder, TextEncoder, }); + +jest.mock("./src/env/env-vars.ts", () => ({ envVars: process.env })); diff --git a/apps/connect/package-lock.json b/apps/connect/package-lock.json index a00fdbb19..52fa1596f 100644 --- a/apps/connect/package-lock.json +++ b/apps/connect/package-lock.json @@ -34,6 +34,7 @@ "@typescript-eslint/eslint-plugin": "^6.0.0", "@typescript-eslint/parser": "^6.0.0", "@vitejs/plugin-react-swc": "^3.6.0", + "cross-env": "^7.0.3", "eslint": "^8.45.0", "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-react-refresh": "^0.4.3", @@ -20312,6 +20313,25 @@ "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, + "license": "MIT", + "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.8", "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", diff --git a/apps/connect/package.json b/apps/connect/package.json index 3b586c1f8..e037a0dae 100644 --- a/apps/connect/package.json +++ b/apps/connect/package.json @@ -5,23 +5,23 @@ "type": "module", "scripts": { "dev:usdc-bridge": "vite --config ./vite.usdc-bridge.config.ts", - "dev:usdc-bridge:mainnet": " VITE_APP_CLUSTER=mainnet npm run dev:usdc-bridge", - "dev:usdc-bridge:testnet": " VITE_APP_CLUSTER=testnet npm run dev:usdc-bridge", + "dev:usdc-bridge:mainnet": "cross-env VITE_APP_CLUSTER=mainnet npm run dev:usdc-bridge", + "dev:usdc-bridge:testnet": "cross-env VITE_APP_CLUSTER=testnet npm run dev:usdc-bridge", "build:usdc-bridge": "tsc && vite build --config ./vite.usdc-bridge.config.ts", "dev:token-bridge": "vite --config ./vite.token-bridge.config.ts", - "dev:token-bridge:mainnet": "VITE_APP_CLUSTER=mainnet npm run dev:token-bridge", - "dev:token-bridge:testnet": "VITE_APP_CLUSTER=testnet npm run dev:token-bridge", + "dev:token-bridge:mainnet": "cross-env VITE_APP_CLUSTER=mainnet npm run dev:token-bridge", + "dev:token-bridge:testnet": "cross-env VITE_APP_CLUSTER=testnet npm run dev:token-bridge", "build:token-bridge": "tsc && vite build --config ./vite.token-bridge.config.ts", "dev": "npm run dev:token-bridge:mainnet", "start": "npm run dev", "build": "tsc && vite build", "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", "prettier": "prettier --check ./src", - "preview": "vite preview", - "format": "yarn prettier --write ./src", + "preview": "cross-env VITE_APP_CLUSTER=mainnet vite preview", + "format": "npm run prettier --write ./src", "ts:check": "tsc --project ./tsconfig.json --noEmit --skipLibCheck", - "test": "jest", - "test:watch": "jest --watch" + "test": "cross-env VITE_APP_CLUSTER=testnet jest", + "test:watch": "npm run test -- --watch" }, "dependencies": { "@certusone/wormhole-sdk": "^0.10.10", @@ -50,6 +50,7 @@ "@typescript-eslint/eslint-plugin": "^6.0.0", "@typescript-eslint/parser": "^6.0.0", "@vitejs/plugin-react-swc": "^3.6.0", + "cross-env": "^7.0.3", "eslint": "^8.45.0", "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-react-refresh": "^0.4.3", diff --git a/apps/connect/src/env/common.ts b/apps/connect/src/env/common.ts index 7901497e5..62e6f0dd5 100644 --- a/apps/connect/src/env/common.ts +++ b/apps/connect/src/env/common.ts @@ -1,5 +1,6 @@ import type { WormholeConnectConfig } from "@wormhole-foundation/wormhole-connect"; import packageJson from "../../package.json"; +import { envVars } from "./env-vars"; const rpcs = (chains: string[], template: (chain: string) => string) => chains @@ -36,12 +37,12 @@ const MAINNET_RPCS = { }, }; -export const PUBLIC_URL = import.meta.env.PUBLIC_URL || ""; +export const PUBLIC_URL = envVars.PUBLIC_URL || ""; export const versions: Env["versions"] = [ { appName: "Portal Bridge", - version: `v${import.meta.env.VITE_APP_VERSION || "0.0.0"}`, + version: `v${envVars.VITE_APP_VERSION || "0.0.0"}`, }, { appName: "Wormhole Connect", @@ -51,23 +52,23 @@ export const versions: Env["versions"] = [ export const wormholeConnectConfigCommon: Partial = { walletConnectProjectId: - import.meta.env.VITE_APP_WALLET_CONNECT_PROJECT_ID || "", + envVars.VITE_APP_WALLET_CONNECT_PROJECT_ID || "", - env: import.meta.env.VITE_APP_CLUSTER || "mainnet", - ...(import.meta.env.VITE_APP_CLUSTER === "mainnet" ? MAINNET_RPCS : {}), + env: envVars.VITE_APP_CLUSTER || "mainnet", + ...(envVars.VITE_APP_CLUSTER === "mainnet" ? MAINNET_RPCS : {}), showHamburgerMenu: false, explorer: { - href: `https://wormholescan.io/#/txs?address={:address}&network=${import.meta.env.VITE_APP_CLUSTER || "testnet"}`, + href: `https://wormholescan.io/#/txs?address={:address}&network=${envVars.VITE_APP_CLUSTER || "testnet"}`, }, menu: [ { label: "Advanced Tools", - href: `${import.meta.env.PUBLIC_URL}/advanced-tools/`, + href: `${envVars.PUBLIC_URL}/advanced-tools/`, order: 1, }, { label: "Privacy Policy", - href: `${import.meta.env.PUBLIC_URL}/#/privacy-policy/`, + href: `${envVars.PUBLIC_URL}/#/privacy-policy/`, }, ], }; diff --git a/apps/connect/src/env/env-vars.ts b/apps/connect/src/env/env-vars.ts new file mode 100644 index 000000000..0084e00f9 --- /dev/null +++ b/apps/connect/src/env/env-vars.ts @@ -0,0 +1 @@ +export const envVars = import.meta.env; diff --git a/apps/connect/src/hooks/useFormatAssetParam.test.ts b/apps/connect/src/hooks/useFormatAssetParam.test.ts index ec834c674..72b179ab7 100644 --- a/apps/connect/src/hooks/useFormatAssetParam.test.ts +++ b/apps/connect/src/hooks/useFormatAssetParam.test.ts @@ -12,7 +12,7 @@ describe("useFormatAssetParam", () => { expect(result.current).toEqual(null); }); - it("should get a formatted asset ussing an address", () => { + it("should get a formatted asset using an address", () => { const { result } = renderHook(() => useFormatAssetParam("0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6") ); From 105791918eb1d22853f3640207b10e7b229e6cce Mon Sep 17 00:00:00 2001 From: Daniel Isaac Geslin Date: Mon, 15 Jul 2024 11:43:00 +0200 Subject: [PATCH 4/9] fix in megreDeep util --- apps/connect/src/utils/mergeDeep.ts | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/apps/connect/src/utils/mergeDeep.ts b/apps/connect/src/utils/mergeDeep.ts index 55564694e..4630a57d7 100644 --- a/apps/connect/src/utils/mergeDeep.ts +++ b/apps/connect/src/utils/mergeDeep.ts @@ -11,8 +11,11 @@ export const mergeDeep = ( if (!shouldLoop) return (isTruthy(b) ? b : a) as T; const keyList = Array.from(new Set([...Object.keys(a!), ...Object.keys(b!)])); - return keyList.reduce((total, key) => { - total[key] = mergeDeep((a as any)[key], (b as any)[key], isTruthy); - return total; - }, {} as any) as T; + return keyList.reduce( + (total, key) => ({ + ...total, + [key]: mergeDeep((a as any)[key], (b as any)[key], isTruthy), + }), + {} as T + ) as T; }; From 5ee647a7bbc314d8ca19693cfcec3eb9ed5ff0a4 Mon Sep 17 00:00:00 2001 From: Daniel Isaac Geslin Date: Mon, 15 Jul 2024 11:58:02 +0200 Subject: [PATCH 5/9] run prettier --- apps/connect/package.json | 2 +- apps/connect/src/env/common.ts | 3 +-- apps/connect/src/env/token-bridge.ts | 8 +++++++- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/apps/connect/package.json b/apps/connect/package.json index e037a0dae..08186ccd3 100644 --- a/apps/connect/package.json +++ b/apps/connect/package.json @@ -18,7 +18,7 @@ "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", "prettier": "prettier --check ./src", "preview": "cross-env VITE_APP_CLUSTER=mainnet vite preview", - "format": "npm run prettier --write ./src", + "format": "npm run prettier -- --write ./src", "ts:check": "tsc --project ./tsconfig.json --noEmit --skipLibCheck", "test": "cross-env VITE_APP_CLUSTER=testnet jest", "test:watch": "npm run test -- --watch" diff --git a/apps/connect/src/env/common.ts b/apps/connect/src/env/common.ts index 62e6f0dd5..8180b72a9 100644 --- a/apps/connect/src/env/common.ts +++ b/apps/connect/src/env/common.ts @@ -51,8 +51,7 @@ export const versions: Env["versions"] = [ ]; export const wormholeConnectConfigCommon: Partial = { - walletConnectProjectId: - envVars.VITE_APP_WALLET_CONNECT_PROJECT_ID || "", + walletConnectProjectId: envVars.VITE_APP_WALLET_CONNECT_PROJECT_ID || "", env: envVars.VITE_APP_CLUSTER || "mainnet", ...(envVars.VITE_APP_CLUSTER === "mainnet" ? MAINNET_RPCS : {}), diff --git a/apps/connect/src/env/token-bridge.ts b/apps/connect/src/env/token-bridge.ts index 7460c08ff..b578fa7c1 100644 --- a/apps/connect/src/env/token-bridge.ts +++ b/apps/connect/src/env/token-bridge.ts @@ -1,5 +1,11 @@ import type { WormholeConnectConfig } from "@wormhole-foundation/wormhole-connect"; -import { chains, Env, PUBLIC_URL, versions, wormholeConnectConfigCommon } from "./common"; +import { + chains, + Env, + PUBLIC_URL, + versions, + wormholeConnectConfigCommon, +} from "./common"; type MoreChainDefinition = NonNullable< WormholeConnectConfig["moreNetworks"] From 4b1b26d6d2b7eaa1e574cb8ee9ac784334989917 Mon Sep 17 00:00:00 2001 From: Daniel Isaac Geslin Date: Mon, 15 Jul 2024 14:37:21 +0200 Subject: [PATCH 6/9] changed default to testnet --- apps/connect/package.json | 2 +- apps/connect/src/env/common.ts | 12 +++++------- apps/connect/src/env/token-bridge.mainnet.ts | 3 ++- apps/connect/src/env/usdc-bridge.mainnet.ts | 3 ++- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/apps/connect/package.json b/apps/connect/package.json index 08186ccd3..71960fd3c 100644 --- a/apps/connect/package.json +++ b/apps/connect/package.json @@ -12,7 +12,7 @@ "dev:token-bridge:mainnet": "cross-env VITE_APP_CLUSTER=mainnet npm run dev:token-bridge", "dev:token-bridge:testnet": "cross-env VITE_APP_CLUSTER=testnet npm run dev:token-bridge", "build:token-bridge": "tsc && vite build --config ./vite.token-bridge.config.ts", - "dev": "npm run dev:token-bridge:mainnet", + "dev": "npm run dev:token-bridge:testnet", "start": "npm run dev", "build": "tsc && vite build", "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", diff --git a/apps/connect/src/env/common.ts b/apps/connect/src/env/common.ts index 8180b72a9..64d7c8615 100644 --- a/apps/connect/src/env/common.ts +++ b/apps/connect/src/env/common.ts @@ -30,11 +30,9 @@ export const chains = [ "mantle", ]; -const MAINNET_RPCS = { - rpcs: { - ...rpcs(chains, asRpcHost), - solana: "https://wormhole.rpcpool.com/", - }, +export const MAINNET_RPCS = { + ...rpcs(chains, asRpcHost), + solana: "https://wormhole.rpcpool.com/", }; export const PUBLIC_URL = envVars.PUBLIC_URL || ""; @@ -53,8 +51,8 @@ export const versions: Env["versions"] = [ export const wormholeConnectConfigCommon: Partial = { walletConnectProjectId: envVars.VITE_APP_WALLET_CONNECT_PROJECT_ID || "", - env: envVars.VITE_APP_CLUSTER || "mainnet", - ...(envVars.VITE_APP_CLUSTER === "mainnet" ? MAINNET_RPCS : {}), + env: envVars.VITE_APP_CLUSTER || "testnet", + rpcs: {}, showHamburgerMenu: false, explorer: { href: `https://wormholescan.io/#/txs?address={:address}&network=${envVars.VITE_APP_CLUSTER || "testnet"}`, diff --git a/apps/connect/src/env/token-bridge.mainnet.ts b/apps/connect/src/env/token-bridge.mainnet.ts index 690ee9d88..706dc1308 100644 --- a/apps/connect/src/env/token-bridge.mainnet.ts +++ b/apps/connect/src/env/token-bridge.mainnet.ts @@ -1,13 +1,14 @@ import { ACALA, ALGORAND, MORE, SEI, ENV as ENV_BASE } from "./token-bridge"; import { mergeDeep } from "../utils/mergeDeep"; import type { WormholeConnectConfig } from "@wormhole-foundation/wormhole-connect"; -import { Env } from "./common"; +import { Env, MAINNET_RPCS } from "./common"; export const ENV: Env = { ...ENV_BASE, wormholeConnectConfig: mergeDeep( ENV_BASE.wormholeConnectConfig, { + rpcs: MAINNET_RPCS, moreNetworks: { networks: [ALGORAND, ACALA, SEI, MORE], } as WormholeConnectConfig["moreNetworks"], diff --git a/apps/connect/src/env/usdc-bridge.mainnet.ts b/apps/connect/src/env/usdc-bridge.mainnet.ts index 3706a11d0..0f50f86c1 100644 --- a/apps/connect/src/env/usdc-bridge.mainnet.ts +++ b/apps/connect/src/env/usdc-bridge.mainnet.ts @@ -1,13 +1,14 @@ import { ENV as ENV_BASE } from "./usdc-bridge"; import { mergeDeep } from "../utils/mergeDeep"; import type { WormholeConnectConfig } from "@wormhole-foundation/wormhole-connect"; -import { Env } from "./common"; +import { Env, MAINNET_RPCS } from "./common"; export const ENV: Env = { ...ENV_BASE, wormholeConnectConfig: mergeDeep( ENV_BASE.wormholeConnectConfig, { + rpcs: MAINNET_RPCS, networks: [ "ethereum", "avalanche", From a786215834b412788ba9a0142fd34f897b9d19ab Mon Sep 17 00:00:00 2001 From: Daniel Isaac Geslin Date: Mon, 15 Jul 2024 16:51:35 +0200 Subject: [PATCH 7/9] run gen logos script in token-list --- apps/token-list/assets/BBL_wh.png | Bin 0 -> 8249 bytes apps/token-list/assets/BBL_wh_small.png | Bin 0 -> 2496 bytes apps/token-list/assets/DAO_wh.png | Bin 0 -> 9862 bytes apps/token-list/assets/DAO_wh_small.png | Bin 0 -> 2976 bytes apps/token-list/assets/EMC_wh.png | Bin 0 -> 11931 bytes apps/token-list/assets/EMC_wh_small.png | Bin 0 -> 3315 bytes apps/token-list/assets/IRL_wh.png | Bin 0 -> 7530 bytes apps/token-list/assets/IRL_wh_small.png | Bin 0 -> 2514 bytes apps/token-list/assets/MDT_wh.png | Bin 0 -> 10657 bytes apps/token-list/assets/MDT_wh_small.png | Bin 0 -> 3245 bytes apps/token-list/assets/QUACK_wh.png | Bin 0 -> 18806 bytes apps/token-list/assets/QUACK_wh_small.png | Bin 0 -> 4397 bytes apps/token-list/assets/SDEX_wh.png | Bin 0 -> 9935 bytes apps/token-list/assets/SDEX_wh_small.png | Bin 0 -> 3159 bytes apps/token-list/assets/SPX_wh.png | Bin 0 -> 17302 bytes apps/token-list/assets/SPX_wh_small.png | Bin 0 -> 4438 bytes apps/token-list/assets/preview.md | 104 +++++++++++++++++++++ apps/token-list/assets/stTAO_wh.png | Bin 0 -> 9860 bytes apps/token-list/assets/stTAO_wh_small.png | Bin 0 -> 3224 bytes apps/token-list/assets/wBRAWL_wh.png | Bin 0 -> 12938 bytes apps/token-list/assets/wBRAWL_wh_small.png | Bin 0 -> 3505 bytes apps/token-list/assets/wWAM_wh.png | Bin 0 -> 11802 bytes apps/token-list/assets/wWAM_wh_small.png | Bin 0 -> 3766 bytes 23 files changed, 104 insertions(+) create mode 100644 apps/token-list/assets/BBL_wh.png create mode 100644 apps/token-list/assets/BBL_wh_small.png create mode 100644 apps/token-list/assets/DAO_wh.png create mode 100644 apps/token-list/assets/DAO_wh_small.png create mode 100644 apps/token-list/assets/EMC_wh.png create mode 100644 apps/token-list/assets/EMC_wh_small.png create mode 100644 apps/token-list/assets/IRL_wh.png create mode 100644 apps/token-list/assets/IRL_wh_small.png create mode 100644 apps/token-list/assets/MDT_wh.png create mode 100644 apps/token-list/assets/MDT_wh_small.png create mode 100644 apps/token-list/assets/QUACK_wh.png create mode 100644 apps/token-list/assets/QUACK_wh_small.png create mode 100644 apps/token-list/assets/SDEX_wh.png create mode 100644 apps/token-list/assets/SDEX_wh_small.png create mode 100644 apps/token-list/assets/SPX_wh.png create mode 100644 apps/token-list/assets/SPX_wh_small.png create mode 100644 apps/token-list/assets/stTAO_wh.png create mode 100644 apps/token-list/assets/stTAO_wh_small.png create mode 100644 apps/token-list/assets/wBRAWL_wh.png create mode 100644 apps/token-list/assets/wBRAWL_wh_small.png create mode 100644 apps/token-list/assets/wWAM_wh.png create mode 100644 apps/token-list/assets/wWAM_wh_small.png diff --git a/apps/token-list/assets/BBL_wh.png b/apps/token-list/assets/BBL_wh.png new file mode 100644 index 0000000000000000000000000000000000000000..92760cec8a05a6c96a99519b53ba964fcea4928d GIT binary patch literal 8249 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 bd8F~FzcG>w&!&6*5&%$9(3G!{wF>?Z8z=PX literal 0 HcmV?d00001 diff --git a/apps/token-list/assets/BBL_wh_small.png b/apps/token-list/assets/BBL_wh_small.png new file mode 100644 index 0000000000000000000000000000000000000000..5cd8e4950b7f2b0586d5a432e576d29cef0f3bf6 GIT binary patch literal 2496 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 KMNUMnLSTZ8Alj?| literal 0 HcmV?d00001 diff --git a/apps/token-list/assets/DAO_wh.png b/apps/token-list/assets/DAO_wh.png new file mode 100644 index 0000000000000000000000000000000000000000..e92b95cb1cab546988d0aae078f9963723ec5f7c GIT binary patch literal 9862 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 literal 0 HcmV?d00001 diff --git a/apps/token-list/assets/EMC_wh_small.png b/apps/token-list/assets/EMC_wh_small.png new file mode 100644 index 0000000000000000000000000000000000000000..90c2c1e6f1f6382cd116585d3111991a0fc6fa38 GIT binary patch literal 3315 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 literal 0 HcmV?d00001 diff --git a/apps/token-list/assets/IRL_wh.png b/apps/token-list/assets/IRL_wh.png new file mode 100644 index 0000000000000000000000000000000000000000..ee1afac9ae81e1bf5b50b312c3320049aea0a35a GIT binary patch literal 7530 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 hCm#L(j06l7GSDumWS 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 literal 0 HcmV?d00001 diff --git a/apps/token-list/assets/MDT_wh_small.png b/apps/token-list/assets/MDT_wh_small.png new file mode 100644 index 0000000000000000000000000000000000000000..03dc61c3a92f119e11a058739ae3b8fcbef7de5d GIT binary patch literal 3245 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 literal 0 HcmV?d00001 diff --git a/apps/token-list/assets/QUACK_wh.png b/apps/token-list/assets/QUACK_wh.png new file mode 100644 index 0000000000000000000000000000000000000000..1ec8008a067faf36c5d4c11e78c13240650c62dc GIT binary patch literal 18806 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 literal 0 HcmV?d00001 diff --git a/apps/token-list/assets/QUACK_wh_small.png b/apps/token-list/assets/QUACK_wh_small.png new file mode 100644 index 0000000000000000000000000000000000000000..cc7e905fea7d052576a696eec6b1409f0b3de776 GIT binary patch literal 4397 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 literal 0 HcmV?d00001 diff --git a/apps/token-list/assets/SDEX_wh.png b/apps/token-list/assets/SDEX_wh.png new file mode 100644 index 0000000000000000000000000000000000000000..627873a515df609e170a769bc1de911ca081a620 GIT binary patch literal 9935 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 N002ovPDHLkV1l#TQ&Ru{ literal 0 HcmV?d00001 diff --git a/apps/token-list/assets/SDEX_wh_small.png b/apps/token-list/assets/SDEX_wh_small.png new file mode 100644 index 0000000000000000000000000000000000000000..5b7f90bad2e9ef8dbe6111b1fffd5ceae5514150 GIT binary patch literal 3159 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 literal 0 HcmV?d00001 diff --git a/apps/token-list/assets/SPX_wh.png b/apps/token-list/assets/SPX_wh.png new file mode 100644 index 0000000000000000000000000000000000000000..5b957aaf69473a57c983b90e21898dcd98e783de GIT binary patch literal 17302 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 B8`}T? literal 0 HcmV?d00001 diff --git a/apps/token-list/assets/SPX_wh_small.png b/apps/token-list/assets/SPX_wh_small.png new file mode 100644 index 0000000000000000000000000000000000000000..af07e36d6b8cb79a6b1775b4bdcfcb54e8b466d7 GIT binary patch literal 4438 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 literal 0 HcmV?d00001 diff --git a/apps/token-list/assets/preview.md b/apps/token-list/assets/preview.md index 8db2ee452..41e0b99b5 100644 --- a/apps/token-list/assets/preview.md +++ b/apps/token-list/assets/preview.md @@ -139,6 +139,78 @@ https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/as https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/BONK_wh.png ``` +### IRL +![IRL](IRL_wh.png) +![IRL](IRL_wh_small.png) + +``` +https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/IRL_wh.png +``` + +### QUACK +![QUACK](QUACK_wh.png) +![QUACK](QUACK_wh_small.png) + +``` +https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/QUACK_wh.png +``` + +### SDEX +![SDEX](SDEX_wh.png) +![SDEX](SDEX_wh_small.png) + +``` +https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/SDEX_wh.png +``` + +### stTAO +![stTAO](stTAO_wh.png) +![stTAO](stTAO_wh_small.png) + +``` +https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/stTAO_wh.png +``` + +### MDT +![MDT](MDT_wh.png) +![MDT](MDT_wh_small.png) + +``` +https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/MDT_wh.png +``` + +### wWAM +![wWAM](wWAM_wh.png) +![wWAM](wWAM_wh_small.png) + +``` +https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/wWAM_wh.png +``` + +### EMC +![EMC](EMC_wh.png) +![EMC](EMC_wh_small.png) + +``` +https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/EMC_wh.png +``` + +### DAO +![DAO](DAO_wh.png) +![DAO](DAO_wh_small.png) + +``` +https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/DAO_wh.png +``` + +### SPX +![SPX](SPX_wh.png) +![SPX](SPX_wh_small.png) + +``` +https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/SPX_wh.png +``` + ## source chain: Ethereum ### 1INCH @@ -1065,6 +1137,14 @@ https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/as https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/UNW_wh.png ``` +### wBRAWL +![wBRAWL](wBRAWL_wh.png) +![wBRAWL](wBRAWL_wh_small.png) + +``` +https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/wBRAWL_wh.png +``` + ## source chain: Polygon ### DAIpo @@ -1123,6 +1203,14 @@ https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/as https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/WOM_wh.png ``` +### BBL +![BBL](BBL_wh.png) +![BBL](BBL_wh_small.png) + +``` +https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/BBL_wh.png +``` + ## source chain: Avalanche ### AVAX @@ -1173,6 +1261,14 @@ https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/as https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/USDTav_wh.png ``` +### BKN +![BKN](BKN_wh.png) +![BKN](BKN_wh_small.png) + +``` +https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/BKN_wh.png +``` + ## source chain: Oasis ### ROSE @@ -1297,3 +1393,11 @@ https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/as https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/TBTC_wh.png ``` +### SPX +![SPX](SPX_wh.png) +![SPX](SPX_wh_small.png) + +``` +https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/SPX_wh.png +``` + diff --git a/apps/token-list/assets/stTAO_wh.png b/apps/token-list/assets/stTAO_wh.png new file mode 100644 index 0000000000000000000000000000000000000000..f1949082679a75b3fcd3c9db1c143476592b0a43 GIT binary patch literal 9860 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 I0W=HxKVI^*e*gdg literal 0 HcmV?d00001 diff --git a/apps/token-list/assets/stTAO_wh_small.png b/apps/token-list/assets/stTAO_wh_small.png new file mode 100644 index 0000000000000000000000000000000000000000..7eb61041e96781b78734799c526d5037cd3c1616 GIT binary patch literal 3224 zcmV;J3}^F+P)7?ZM~d3fj7XDi!gF5+`eK<3AjH{!bYvsjS6NMZN!L1i9&GBDAQp?AJ$5CY3*Kl>8;0lMjPvY zjmVnopL{@+_g$^@^*U=b8if`?i$W_seD;)w7L5`)Y8-$2!?z#(*{8?*!ig+hy2URx z>Frv~pBtsLIEPk41T-plHlk3XvNEz~Px)w3k#h2bii(o&{LRZ7GehI5FPg+uFa3g1 z-eXFf##xjSln5?zgqa8zf;g~|Bg$A@1WE*j0%sAN_B{Ww?(V)9wtQ`uKQy-aB8g1Z zslPVjeZ#ph_x2T7u-39*@l39}aSqeUrl3Tyk)yYJfYT>BXm7oOHlUP31gs5+>-aZ% zyZiqe_%3|Tp>_WJ`DsBAEVb6&AR@I<6wL;v_`cycdz&&Z{Nu0hFiQJM1S1+7I?BqY z@cVys3tAKnhug5BV_I1e#U%+!%ZezkET;QHFK_K`Ala9}_jES&l*WijE0Mdu_p3ko z&F4WxT3T9G0}lariAas-c^-gsj-m7Sx4zDM2hR}m4Mr3;gsNGkJoNBw?0fAv7u$Nc zb!{y+gszLdcuG+;H9=|F6c%1riSHR+{=otIE+_FlgAzsD#KGBLcGvW8_)J7vT3S|X ztsl46uJ?UE9s~hV6b%yqFrMb*@e6Ew`o9ndMri~g?tA>%x9{P#fBS$S6>-OX%X#ay z6JTLMT_rA;BZ-7hdBs$2zGESoWXO-6*^5FjD(e|7D$vT@^;;$T!Gi~l!^FbuCD0U!d0>pvpML@1?DB1C~@?Y+xsK5>EewkxdLu$*7~`imEYmkfQduTZH5%ZQ-aPyrDv4KM&2;gha)7S?mo$O6bP4l(ZFM6JL zXC{*&l}e4ND*|EQXl?04E6Ei(p|CKbYga zV;)`Y{b0fO2C*r}vYV?}{dv4hsWE10J}(Tx7{kR&mw4uxXXv{+ zfYBPQvf)r%Qb>Pql7fVfjlhPMg2EWRmj@{=FQTVw0IfAfD>Q;p3au4qPjrF^Ma6N1 zZ2ifeDVz|IlP6D3(OUnr@B0%XA(EX#zPEilCmN0r^RwPiWUI9e9mW{Q8Ix^M82*hD zlo~Qp4IknF=W<0-A(HI~6e^k!5v}#p@p$}>WHLDsbz-p?yLRnj_wJt~Vu+%2&KS^2 z(bLsWX;~prkgeRXvTi)7>n) zX%4L?F0t^snG9S_qqU;4x)d#f*sRy87nO1AS8F+a_!7yh>1?Qq!YG3v$MO={w{M?O zNY4cU;&WHM~qwvCRCj@(tp<-Rk+{gTdw#GzlG;;yf*prO8v+4IUMEid9+ zV<$JST}WS75+%Z{d1cI6FpY&PW^((3ODQfZ;NUCGXr&SPI4q5mSMw5?J$v>oB69ac zy)hJ0`}Xa-=6dJVW->wFumLg8&~oeo-5q`0`?VX``^s@v-nM{g(~CIY+(k{@45n8V zQ&f_mVs;5jZ>eVKt+RRarK7Z;x`OcyimW%Bv+YXUD|v}TQS^}S`~Ihk+-UGTkCv7e zcJACcLYB((@=@3OLv1)pgqZK~#?Ox8fc2YJa{S+>kTT#ue_tp_*B9eU>rdB1GQktM(N{qptG`n{kqP_VF zv6z=lauIwJBeLOfPx(6_Pxsr{*!a6z>%Go7Z#<90<8k)v*~8||oAc@wd6nG0bTh>T zr5K%C35vpnptWX3o^MOR$}k}*3UN_fIRCF zt@RDQ?|b9b4W$&_-QDcoy_@yx*Hc_vJfhzkf^{L&3q!&S3HmRmFuow7Fn-oMJsksF zy)=kI@RUXygRgaN>J}7P5(1sd*+2c(e`HDIB?2tT%OD34p}V`AC!TnM`Sa%^B4ZK} z0f*&WQ#X5mdWw$L0dNk%<)-G`@-}x27efTBppkIgI+lUf+Ny~p zxl)SS+FBMbUOZgUMP&GQI-SN^oBJ;an#I>wvF7U)H23VKXW$~9@^B%z5U|+W#N(T{P&ex)F1B7J-5Wpzo@Xd3iBVdWpt5!f)z_6GG28p# zch>ZdYD*qF^SVPs2*Z%=+qY9+Uq7l&U0ogb+;b0$7A<1u&Yhe+dv=6QGSkn2hF5v` z@drpJgX{+gmkmSXE3}{O!#tx&rz1UyL@8G8C5Ovlp*Ff~8Q%gY%nl#MYs=g!7rvEyUiKPHj6bLU=BO1++s$dV-! zs+ki)U0vOnp=FH0TKmSldGmV4x<7CCYmE7qOeT{WZMF%+kX5TzjhVoc!Sw0VS-Em0 zVHl2(<<>YEt@V%djggl~eSLksbMCcREH*+Gh9NaIHQaaKeUr6&1n$58eyXafh@xnO zEEbF5ocm>4Tid(&#>h)#{Es;a8V+CGe$ni?K{_~B8# zp_C#Bf^8d*n2 z2R%JKD5WSVDPhKp8N;&b>S~^Q?m5=1Su<);O(YVeQmMUB6m6Y|jT8Qe-PqVT&lvNn z=Xpy;TcgC|ahjW(dGW;;*|TR4{r&v_Y}&MmC!c(h;^Jc7e*0~nfBt#q&YjDnk3LFG zP0gtFBOZ?v1VKX(1nZY9S#tJsB?8$`roc~(G0R3HliN+8si}zr2M%!T*fHAM+gY`0 z6&p5eVBx}rL{T(c;YZ7hcsx!Rh7G_UFIceP*hFoc^tM7{W8*x}^M2@g-nyZ+#x(5YiDQYAEwjk z?~BMlJRZL$iJfxl!TI(A`q|RD9 z%Q;s}*2q4sb(?dpDT<;G3knJv=FFLM`SX1Km-rH2;!FJh!T$iI)cNr!cZ&r80000< KMNUMnLSTZ42v9x% literal 0 HcmV?d00001 diff --git a/apps/token-list/assets/wBRAWL_wh.png b/apps/token-list/assets/wBRAWL_wh.png new file mode 100644 index 0000000000000000000000000000000000000000..5c1a68cbb48afffd2b215e68a6e1ce110fd7647e GIT binary patch literal 12938 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 IM6N<$f(?>AH~;_u literal 0 HcmV?d00001 diff --git a/apps/token-list/assets/wWAM_wh_small.png b/apps/token-list/assets/wWAM_wh_small.png new file mode 100644 index 0000000000000000000000000000000000000000..d6837eba8e6753a3efe580fb1cac128635042c97 GIT binary patch literal 3766 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 literal 0 HcmV?d00001 From b02f9b1977e45af9f5790a930cdd6b0fe0498a2b Mon Sep 17 00:00:00 2001 From: Daniel Isaac Geslin Date: Mon, 15 Jul 2024 17:11:32 +0200 Subject: [PATCH 8/9] run gen script in token-list --- apps/token-list/content/dest_base.md | 2 +- apps/token-list/content/dest_solana.md | 2 +- apps/token-list/content/source_base.md | 2 +- apps/token-list/content/source_bsc.md | 2 +- apps/token-list/content/source_ethereum.md | 2 +- apps/token-list/content/source_polygon.md | 2 +- apps/token-list/content/source_solana.md | 18 +++++++++--------- apps/token-list/src/markets.json | 22 +++++++++++----------- 8 files changed, 26 insertions(+), 26 deletions(-) diff --git a/apps/token-list/content/dest_base.md b/apps/token-list/content/dest_base.md index e73b855b5..4d984e0fd 100644 --- a/apps/token-list/content/dest_base.md +++ b/apps/token-list/content/dest_base.md @@ -6,7 +6,7 @@ _See [by_dest.csv](by_dest.csv) ([raw](https://raw.githubusercontent.com/xlabs/p | img | symbol | name | address | decimals | origin | sourceAddress | sourceDecimals | markets | symbol | |:----------------------------------------------------------------------------------------------------------|:---------|:-----------------------------------------------------------------|:---------------------------------------------------------------------------------------------------------------------|-----------:|:---------|:------------------------------------------------------------------------------------------------------------------------|-----------------:|:-------------------------------------------------------------------|:-----------------| -| | SPX | [SPX6900](http://coingecko.com/en/coins/spx6900) | [0x50dA645f148798F68EF2d7dB7C1CB22A6819bb2C](https://basescan.org//token/0x50dA645f148798F68EF2d7dB7C1CB22A6819bb2C) | 8 | ethereum | [0xe0f63a424a4439cbe457d80e4f4b51ad25b2c56c](https://etherscan.io/address/0xe0f63a424a4439cbe457d80e4f4b51ad25b2c56c) | 8 | [uniswap](https://app.uniswap.org/) | SPX | +| ![SPX](https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/SPX_wh.png) | SPX | [SPX6900](http://coingecko.com/en/coins/spx6900) | [0x50dA645f148798F68EF2d7dB7C1CB22A6819bb2C](https://basescan.org//token/0x50dA645f148798F68EF2d7dB7C1CB22A6819bb2C) | 8 | ethereum | [0xe0f63a424a4439cbe457d80e4f4b51ad25b2c56c](https://etherscan.io/address/0xe0f63a424a4439cbe457d80e4f4b51ad25b2c56c) | 8 | [uniswap](https://app.uniswap.org/) | SPX | | ![TBTC](https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/TBTC_wh.png) | TBTC | [Threshold Bitcoin](http://coingecko.com/en/coins/tbtc) | [0x236aa50979D5f3De3Bd1Eeb40E81137F22ab794b](https://basescan.org//token/0x236aa50979D5f3De3Bd1Eeb40E81137F22ab794b) | 8 | solana | [6DNSN2BJsaPFdFFc1zP37kkeNe4Usc1Sqkzr9C9vPWcU](https://solscan.io/address/6DNSN2BJsaPFdFFc1zP37kkeNe4Usc1Sqkzr9C9vPWcU) | 18 | [threshold network](https://dashboard.threshold.network/TBTC/mint) | TBTC | | ![WELL](https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/WELL_wh.png) | WELL | [Moonwell](http://coingecko.com/en/coins/moonwell) | [0xff8adec2221f9f4d8dfbafa6b9a297d17603493d](https://basescan.org//token/0xff8adec2221f9f4d8dfbafa6b9a297d17603493d) | 18 | moonbeam | [0x511ab53f793683763e5a8829738301368a2411e3](https://moonscan.io/address/0x511ab53f793683763e5a8829738301368a2411e3) | 18 | [balancer](https://app.balancer.fi/#/trade) | WELL | | ![WOM](https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/WOM_wh.png) | WOM | [Wombat Exchange](http://coingecko.com/en/coins/wombat-exchange) | [0xD9541B08B375D58ae104EC247d7443D2D7235D64](https://basescan.org//token/0xD9541B08B375D58ae104EC247d7443D2D7235D64) | 18 | bsc | [0xad6742a35fb341a9cc6ad674738dd8da98b94fb1](https://bscscan.com/address/0xad6742a35fb341a9cc6ad674738dd8da98b94fb1) | 18 | | WOM | \ No newline at end of file diff --git a/apps/token-list/content/dest_solana.md b/apps/token-list/content/dest_solana.md index bb4834aed..c4acf4b6d 100644 --- a/apps/token-list/content/dest_solana.md +++ b/apps/token-list/content/dest_solana.md @@ -85,7 +85,7 @@ _See [by_dest.csv](by_dest.csv) ([raw](https://raw.githubusercontent.com/xlabs/p | ![SNX](https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/SNX_wh.png) | SNX | [Synthetix Network Token (Portal)](http://coingecko.com/en/coins/synthetix-network-token) | [8cTNUtcV2ueC3royJ642uRnvTxorJAWLZc58gxAo7y56](https://solscan.io/token/8cTNUtcV2ueC3royJ642uRnvTxorJAWLZc58gxAo7y56) | 8 | ethereum | [0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f](https://etherscan.io/address/0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f) | 18 | | | | SNX | | ![SOS](https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/SOS_wh.png) | SOS | [OpenDAO (Portal)](http://coingecko.com/en/coins/opendao) | [6Q5fvsJ6kgAFmisgDqqyaFd9FURYzHf8MCUbpAUaGZnE](https://solscan.io/token/6Q5fvsJ6kgAFmisgDqqyaFd9FURYzHf8MCUbpAUaGZnE) | 8 | ethereum | [0x3b484b82567a09e2588a13d54d032153f0c0aee0](https://etherscan.io/address/0x3b484b82567a09e2588a13d54d032153f0c0aee0) | 18 | | | | SOS | | ![SPELL](https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/SPELL_wh.png) | SPELL | [Spell Token (Portal)](http://coingecko.com/en/coins/spell-token) | [BCsFXYm81iqXyYmrLKgAp3AePcgLHnirb8FjTs6sjM7U](https://solscan.io/token/BCsFXYm81iqXyYmrLKgAp3AePcgLHnirb8FjTs6sjM7U) | 8 | ethereum | [0x090185f2135308bad17527004364ebcc2d37e5f6](https://etherscan.io/address/0x090185f2135308bad17527004364ebcc2d37e5f6) | 18 | | | | SPELL | -| | SPX | [SPX6900](http://coingecko.com/en/coins/spx6900) | [J3NKxxXZcnNiMjKw9hYb2K4LUxgwB6t1FtPtQVsv3KFr](https://solscan.io/token/J3NKxxXZcnNiMjKw9hYb2K4LUxgwB6t1FtPtQVsv3KFr) | 8 | ethereum | [0xe0f63a424a4439cbe457d80e4f4b51ad25b2c56c](https://etherscan.io/address/0xe0f63a424a4439cbe457d80e4f4b51ad25b2c56c) | 8 | [raydium](https://raydium.io/swap/) | | | SPX | +| ![SPX](https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/SPX_wh.png) | SPX | [SPX6900](http://coingecko.com/en/coins/spx6900) | [J3NKxxXZcnNiMjKw9hYb2K4LUxgwB6t1FtPtQVsv3KFr](https://solscan.io/token/J3NKxxXZcnNiMjKw9hYb2K4LUxgwB6t1FtPtQVsv3KFr) | 8 | ethereum | [0xe0f63a424a4439cbe457d80e4f4b51ad25b2c56c](https://etherscan.io/address/0xe0f63a424a4439cbe457d80e4f4b51ad25b2c56c) | 8 | [raydium](https://raydium.io/swap/) | | | SPX | | ![SRMet](https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/SRMet_wh.png) | SRMet | [Serum (Portal from Ethereum)](http://coingecko.com/en/coins/serum) | [xnorPhAzWXUczCP3KjU5yDxmKKZi5cSbxytQ1LgE3kG](https://solscan.io/token/xnorPhAzWXUczCP3KjU5yDxmKKZi5cSbxytQ1LgE3kG) | 6 | ethereum | [0x476c5e26a75bd202a9683ffd34359c0cc15be0ff](https://etherscan.io/address/0x476c5e26a75bd202a9683ffd34359c0cc15be0ff) | 6 | | | | SRMet | | ![SUSHI](https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/SUSHI_wh.png) | SUSHI | [SushiToken (Portal)](http://coingecko.com/en/coins/sushi) | [ChVzxWRmrTeSgwd3Ui3UumcN8KX7VK3WaD4KGeSKpypj](https://solscan.io/token/ChVzxWRmrTeSgwd3Ui3UumcN8KX7VK3WaD4KGeSKpypj) | 8 | ethereum | [0x6b3595068778dd592e39a122f4f5a5cf09c90fe2](https://etherscan.io/address/0x6b3595068778dd592e39a122f4f5a5cf09c90fe2) | 18 | [raydium](https://raydium.io/swap/) | 3uWVMWu7cwMnYMAAdtsZNwaaqeeeZHARGZwcExnQiFay | T3aC6qcPAJtX1gqkckfSxBPdPWziz5fLYRt5Dz3Nafq | SUSHI | | ![SWAG](https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/SWAG_wh.png) | SWAG | [SWAG Finance (Portal)](http://coingecko.com/en/coins/swag-finance) | [5hcdG6NjQwiNhVa9bcyaaDsCyA1muPQ6WRzQwHfgeeKo](https://solscan.io/token/5hcdG6NjQwiNhVa9bcyaaDsCyA1muPQ6WRzQwHfgeeKo) | 8 | ethereum | [0x87edffde3e14c7a66c9b9724747a1c5696b742e6](https://etherscan.io/address/0x87edffde3e14c7a66c9b9724747a1c5696b742e6) | 18 | | wSkeLMv3ktJyLm51bvQWxY2saGKqGxbnUFimPxbgEvQ | 6URQ4zFWvPm1fhJCKKWorrh8X3mmTFiDDyXEUmSf8Rb2 | SWAG | diff --git a/apps/token-list/content/source_base.md b/apps/token-list/content/source_base.md index 7a77337f6..c99f14308 100644 --- a/apps/token-list/content/source_base.md +++ b/apps/token-list/content/source_base.md @@ -5,5 +5,5 @@ _See [by_source.csv](by_source.csv) ([raw](https://raw.githubusercontent.com/xla | img | symbol | name | sourceAddress | solAddress | solDecimals | solMarkets | ethAddress | ethDecimals | ethMarkets | terraAddress | terraDecimals | terraMarkets | bscAddress | bscDecimals | bscMarkets | maticAddress | maticDecimals | maticMarkets | avaxAddress | avaxDecimals | avaxMarkets | oasisAddress | oasisDecimals | oasisMarkets | algorandAddress | algorandDecimals | algorandMarkets | auroraAddress | auroraDecimals | auroraMarkets | ftmAddress | ftmDecimals | ftmMarkets | karuraAddress | karuraDecimals | karuraMarkets | acalaAddress | acalaDecimals | acalaMarkets | klaytnAddress | klaytnDecimals | klaytnMarkets | celoAddress | celoDecimals | celoMarkets | nearAddress | nearDecimals | nearMarkets | moonbeamAddress | moonbeamDecimals | moonbeamMarkets | terra2Address | terra2Decimals | terra2Markets | injectiveAddress | injectiveDecimals | injectiveMarkets | suiAddress | suiDecimals | suiMarkets | aptosAddress | aptosDecimals | aptosMarkets | arbitrumAddress | arbitrumDecimals | arbitrumMarkets | optimismAddress | optimismDecimals | optimismMarkets | xplaAddress | xplaDecimals | xplaMarkets | symbol | |:----------------------------------------------------------------------------------------------------------|:---------|:--------------------------------------------------------|:-----------------------------------------------------------------------------------------------------------------------|:------------------------------------------------------------------------------------------------------------------------|--------------:|:-------------------------------------------------------------------|:----------------------------------------------------------------------------------------------------------------------|--------------:|:-------------------------------------------------------------------|:---------------|:----------------|:---------------|:-------------|:--------------|:-------------|:-------------------------------------------------------------------------------------------------------------------------|----------------:|:-------------------------------------------------------------------|:--------------|:---------------|:--------------|:---------------|:----------------|:---------------|:------------------|:-------------------|:------------------|:----------------|:-----------------|:----------------|:-------------|:--------------|:-------------|:----------------|:-----------------|:----------------|:---------------|:----------------|:---------------|:----------------|:-----------------|:----------------|:--------------|:---------------|:--------------|:--------------|:---------------|:--------------|:------------------|:-------------------|:------------------|:----------------|:-----------------|:----------------|:-------------------|:--------------------|:-------------------|:-------------|:--------------|:-------------|:---------------|:----------------|:---------------|:----------------------------------------------------------------------------------------------------------------------|-------------------:|:-------------------------------------------------------------------|:----------------------------------------------------------------------------------------------------------------------------------|-------------------:|:------------------|:--------------|:---------------|:--------------|:-----------------| -| | SPX | [SPX6900](http://coingecko.com/en/coins/spx6900) | [0x50dA645f148798F68EF2d7dB7C1CB22A6819bb2C](https://basescan.org//address/0x50dA645f148798F68EF2d7dB7C1CB22A6819bb2C) | | nan | | | nan | | | | | | | | | nan | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | nan | | | nan | | | | | SPX | +| ![SPX](https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/SPX_wh.png) | SPX | [SPX6900](http://coingecko.com/en/coins/spx6900) | [0x50dA645f148798F68EF2d7dB7C1CB22A6819bb2C](https://basescan.org//address/0x50dA645f148798F68EF2d7dB7C1CB22A6819bb2C) | | nan | | | nan | | | | | | | | | nan | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | nan | | | nan | | | | | SPX | | ![TBTC](https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/TBTC_wh.png) | TBTC | [Threshold Bitcoin](http://coingecko.com/en/coins/tbtc) | [0x236aa50979D5f3De3Bd1Eeb40E81137F22ab794b](https://basescan.org//address/0x236aa50979D5f3De3Bd1Eeb40E81137F22ab794b) | [6DNSN2BJsaPFdFFc1zP37kkeNe4Usc1Sqkzr9C9vPWcU](https://solscan.io/address/6DNSN2BJsaPFdFFc1zP37kkeNe4Usc1Sqkzr9C9vPWcU) | 8 | [threshold network](https://dashboard.threshold.network/TBTC/mint) | [0x18084fbA666a33d37592fA2633fD49a74DD93a88](https://etherscan.io/address/0x18084fbA666a33d37592fA2633fD49a74DD93a88) | 8 | [threshold network](https://dashboard.threshold.network/TBTC/mint) | | | | | | | [0x236aa50979D5f3De3Bd1Eeb40E81137F22ab794b](https://polygonscan.com/address/0x236aa50979D5f3De3Bd1Eeb40E81137F22ab794b) | 8 | [threshold network](https://dashboard.threshold.network/TBTC/mint) | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [0x6c84a8f1c29108F47a79964b5Fe888D4f4D0dE40](https://arbiscan.io//address/0x6c84a8f1c29108F47a79964b5Fe888D4f4D0dE40) | 8 | [threshold network](https://dashboard.threshold.network/TBTC/mint) | [0x6c84a8f1c29108F47a79964b5Fe888D4f4D0dE40](https://optimistic.etherscan.io//address/0x6c84a8f1c29108F47a79964b5Fe888D4f4D0dE40) | 8 | | | | | TBTC | \ No newline at end of file diff --git a/apps/token-list/content/source_bsc.md b/apps/token-list/content/source_bsc.md index 60492eb13..32bf094bf 100644 --- a/apps/token-list/content/source_bsc.md +++ b/apps/token-list/content/source_bsc.md @@ -15,4 +15,4 @@ _See [by_source.csv](by_source.csv) ([raw](https://raw.githubusercontent.com/xla | ![USDTbs](https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/USDTbs_wh.png) | USDTbs | [Tether USD (Portal from BSC)](http://coingecko.com/en/coins/tether) | [0x55d398326f99059fF775485246999027B3197955](https://bscscan.com/address/0x55d398326f99059fF775485246999027B3197955) | [8qJSyQprMC57TWKaYEmetUR3UUiTP2M3hXdcvFhkZdmv](https://solscan.io/address/8qJSyQprMC57TWKaYEmetUR3UUiTP2M3hXdcvFhkZdmv) | 8 | [saber](https://app.saber.so/), [mercurial](https://mercurial.finance/), [jupiter](https://jup.ag/) | [0xDe60aDfDdAAbaAAC3dAFa57B26AcC91Cb63728c4](https://etherscan.io/address/0xDe60aDfDdAAbaAAC3dAFa57B26AcC91Cb63728c4) | 18 | | [terra1vlqeghv5mt5udh96kt5zxlh2wkh8q4kewkr0dd](https://finder.terra.money/columbus-5/address/terra1vlqeghv5mt5udh96kt5zxlh2wkh8q4kewkr0dd) | 8 | | | nan | | [0xA67BCC0D06d7d13A13A2AE30bF30f1B434f5a28B](https://snowtrace.io/address/0xA67BCC0D06d7d13A13A2AE30bF30f1B434f5a28B) | 18 | | [0x366EF31C8dc715cbeff5fA54Ad106dC9c25C6153](https://explorer.oasis.updev.si/address/0x366EF31C8dc715cbeff5fA54Ad106dC9c25C6153) | 18 | | | | | | | | | | | | | | | | | | | | | | | | | | | nan | | | nan | | | | | | | | | | | | nan | | | nan | | | | | | nan | | USDTbs | | ![WMX](https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/WMX_wh.png) | WMX | [Wombex Finance](http://coingecko.com/en/coins/wombex) | [0xa75d9ca2a0a1D547409D82e1B06618EC284A2CeD](https://bscscan.com/address/0xa75d9ca2a0a1D547409D82e1B06618EC284A2CeD) | | nan | | | nan | | | nan | | | nan | | | nan | | | nan | | | | | | | | | | | | | | | | | | | | | | | | | | | nan | | | nan | | | | | | | | | | | [0x5190F06EaceFA2C552dc6BD5e763b81C73293293](https://arbiscan.io//address/0x5190F06EaceFA2C552dc6BD5e763b81C73293293) | 18 | [camelot](https://app.camelot.exchange/) | | nan | | | | | | nan | | WMX | | ![WOM](https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/WOM_wh.png) | WOM | [Wombat Exchange](http://coingecko.com/en/coins/wombat-exchange) | [0xad6742a35fb341a9cc6ad674738dd8da98b94fb1](https://bscscan.com/address/0xad6742a35fb341a9cc6ad674738dd8da98b94fb1) | | nan | | [0xc0B314a8c08637685Fc3daFC477b92028c540CFB](https://etherscan.io/address/0xc0B314a8c08637685Fc3daFC477b92028c540CFB) | 18 | [pancakeswap](https://pancakeswap.finance/swap) | | nan | | [0x77749d37A87BFf80060c00152B213F61341A6de5](https://polygonscan.com/address/0x77749d37A87BFf80060c00152B213F61341A6de5) | 18 | | [0xa15E4544D141aa98C4581a1EA10Eb9048c3b3382](https://snowtrace.io/address/0xa15E4544D141aa98C4581a1EA10Eb9048c3b3382) | 18 | | | nan | | | | | | | | | | | | | | | | | | | | | | | | | | | nan | | | nan | | | | | | | | | | | [0x7b5eb3940021ec0e8e463d5dbb4b7b09a89ddf96](https://arbiscan.io//address/0x7b5eb3940021ec0e8e463d5dbb4b7b09a89ddf96) | 18 | [uniswap](https://app.uniswap.org/) | [0xD2612B256F6f76feA8C6fbca0BF3166D0d13a668](https://optimistic.etherscan.io//address/0xD2612B256F6f76feA8C6fbca0BF3166D0d13a668) | 18 | | | | | [0xD9541B08B375D58ae104EC247d7443D2D7235D64](https://basescan.org//address/0xD9541B08B375D58ae104EC247d7443D2D7235D64) | 18 | | WOM | -| | wBRAWL | [BitBrawl](http://coingecko.com/en/coins/bitbrawl) | [0xcf32c644fed4FeFF94017a10B2882Bf71eE740dD](https://bscscan.com/address/0xcf32c644fed4FeFF94017a10B2882Bf71eE740dD) | | nan | | | nan | | | nan | | | nan | | | nan | | | nan | | | | | | | | | | | | | | | | | | | | | | | | | | | nan | | | nan | | | | | | | | | | | | nan | | | nan | | | | | | nan | | wBRAWL | \ No newline at end of file +| ![wBRAWL](https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/wBRAWL_wh.png) | wBRAWL | [BitBrawl](http://coingecko.com/en/coins/bitbrawl) | [0xcf32c644fed4FeFF94017a10B2882Bf71eE740dD](https://bscscan.com/address/0xcf32c644fed4FeFF94017a10B2882Bf71eE740dD) | | nan | | | nan | | | nan | | | nan | | | nan | | | nan | | | | | | | | | | | | | | | | | | | | | | | | | | | nan | | | nan | | | | | | | | | | | | nan | | | nan | | | | | | nan | | wBRAWL | \ No newline at end of file diff --git a/apps/token-list/content/source_ethereum.md b/apps/token-list/content/source_ethereum.md index 118b89c7f..fe5f2494d 100644 --- a/apps/token-list/content/source_ethereum.md +++ b/apps/token-list/content/source_ethereum.md @@ -80,7 +80,7 @@ _See [by_source.csv](by_source.csv) ([raw](https://raw.githubusercontent.com/xla | ![SNX](https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/SNX_wh.png) | SNX | [Synthetix Network Token (Portal)](http://coingecko.com/en/coins/synthetix-network-token) | [0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f](https://etherscan.io/address/0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f) | [8cTNUtcV2ueC3royJ642uRnvTxorJAWLZc58gxAo7y56](https://solscan.io/address/8cTNUtcV2ueC3royJ642uRnvTxorJAWLZc58gxAo7y56) | 8 | | | nan | | | nan | | | nan | | | nan | | | nan | | | nan | | | nan | | | nan | | | | | | | | | nan | | | nan | | | | | | nan | | | nan | | | | | | | | | nan | | | nan | | | nan | | | | | | nan | | SNX | | ![SOS](https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/SOS_wh.png) | SOS | [OpenDAO (Portal)](http://coingecko.com/en/coins/opendao) | [0x3b484b82567a09e2588a13d54d032153f0c0aee0](https://etherscan.io/address/0x3b484b82567a09e2588a13d54d032153f0c0aee0) | [6Q5fvsJ6kgAFmisgDqqyaFd9FURYzHf8MCUbpAUaGZnE](https://solscan.io/address/6Q5fvsJ6kgAFmisgDqqyaFd9FURYzHf8MCUbpAUaGZnE) | 8 | | | nan | | | nan | | | nan | | | nan | | | nan | | | nan | | | nan | | | nan | | | | | | | | | nan | | | nan | | | | | | nan | | | nan | | | | | | | | | nan | | | nan | | | nan | | | | | | nan | | SOS | | ![SPELL](https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/SPELL_wh.png) | SPELL | [Spell Token (Portal)](http://coingecko.com/en/coins/spell-token) | [0x090185f2135308bad17527004364ebcc2d37e5f6](https://etherscan.io/address/0x090185f2135308bad17527004364ebcc2d37e5f6) | [BCsFXYm81iqXyYmrLKgAp3AePcgLHnirb8FjTs6sjM7U](https://solscan.io/address/BCsFXYm81iqXyYmrLKgAp3AePcgLHnirb8FjTs6sjM7U) | 8 | | | nan | | | nan | | | nan | | | nan | | | nan | | | nan | | | nan | | | nan | | | | | | | | | nan | | | nan | | | | | | nan | | | nan | | | | | | | | | nan | | | nan | | | nan | | | | | | nan | | SPELL | -| | SPX | [SPX6900](http://coingecko.com/en/coins/spx6900) | [0xe0f63a424a4439cbe457d80e4f4b51ad25b2c56c](https://etherscan.io/address/0xe0f63a424a4439cbe457d80e4f4b51ad25b2c56c) | [J3NKxxXZcnNiMjKw9hYb2K4LUxgwB6t1FtPtQVsv3KFr](https://solscan.io/address/J3NKxxXZcnNiMjKw9hYb2K4LUxgwB6t1FtPtQVsv3KFr) | 8 | [raydium](https://raydium.io/swap/) | | nan | | | nan | | | nan | | | nan | | | nan | | | nan | | | nan | | | nan | | | | | | | | | nan | | | nan | | | | | | nan | | | nan | | | | | | | | | nan | | | nan | | | nan | | | | | [0x50dA645f148798F68EF2d7dB7C1CB22A6819bb2C](https://basescan.org//address/0x50dA645f148798F68EF2d7dB7C1CB22A6819bb2C) | 8 | [uniswap](https://app.uniswap.org/) | SPX | +| ![SPX](https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/SPX_wh.png) | SPX | [SPX6900](http://coingecko.com/en/coins/spx6900) | [0xe0f63a424a4439cbe457d80e4f4b51ad25b2c56c](https://etherscan.io/address/0xe0f63a424a4439cbe457d80e4f4b51ad25b2c56c) | [J3NKxxXZcnNiMjKw9hYb2K4LUxgwB6t1FtPtQVsv3KFr](https://solscan.io/address/J3NKxxXZcnNiMjKw9hYb2K4LUxgwB6t1FtPtQVsv3KFr) | 8 | [raydium](https://raydium.io/swap/) | | nan | | | nan | | | nan | | | nan | | | nan | | | nan | | | nan | | | nan | | | | | | | | | nan | | | nan | | | | | | nan | | | nan | | | | | | | | | nan | | | nan | | | nan | | | | | [0x50dA645f148798F68EF2d7dB7C1CB22A6819bb2C](https://basescan.org//address/0x50dA645f148798F68EF2d7dB7C1CB22A6819bb2C) | 8 | [uniswap](https://app.uniswap.org/) | SPX | | ![SRMet](https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/SRMet_wh.png) | SRMet | [Serum (Portal from Ethereum)](http://coingecko.com/en/coins/serum) | [0x476c5e26a75bd202a9683ffd34359c0cc15be0ff](https://etherscan.io/address/0x476c5e26a75bd202a9683ffd34359c0cc15be0ff) | [xnorPhAzWXUczCP3KjU5yDxmKKZi5cSbxytQ1LgE3kG](https://solscan.io/address/xnorPhAzWXUczCP3KjU5yDxmKKZi5cSbxytQ1LgE3kG) | 6 | | | nan | | [0xd63CDf02853D759831550fAe7dF8FFfE0B317b39](https://bscscan.com/address/0xd63CDf02853D759831550fAe7dF8FFfE0B317b39) | 6 | | | nan | | | nan | | | nan | | | nan | | | nan | | | nan | | | | | | | | | nan | | | nan | | | | | | nan | | | nan | | | | | | | | | nan | | | nan | | | nan | | | | | | nan | | SRMet | | ![SUSHI](https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/SUSHI_wh.png) | SUSHI | [SushiToken (Portal)](http://coingecko.com/en/coins/sushi) | [0x6b3595068778dd592e39a122f4f5a5cf09c90fe2](https://etherscan.io/address/0x6b3595068778dd592e39a122f4f5a5cf09c90fe2) | [ChVzxWRmrTeSgwd3Ui3UumcN8KX7VK3WaD4KGeSKpypj](https://solscan.io/address/ChVzxWRmrTeSgwd3Ui3UumcN8KX7VK3WaD4KGeSKpypj) | 8 | [raydium](https://raydium.io/swap/) | [terra1csvuzlf92nyemu6tv25h0l79etpe8hz3h5vn4a](https://finder.terra.money/columbus-5/address/terra1csvuzlf92nyemu6tv25h0l79etpe8hz3h5vn4a) | 8 | | [0x3524fd7488fdb1F4723BBc22C9cbD1Bf89f46E3B](https://bscscan.com/address/0x3524fd7488fdb1F4723BBc22C9cbD1Bf89f46E3B) | 18 | | | nan | | | nan | | | nan | | | nan | | | nan | | | nan | | | | | | | | | nan | | | nan | | | | | | nan | | | nan | | | | | | | | | nan | | | nan | | | nan | | | | | | nan | | SUSHI | | ![SWAG](https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/SWAG_wh.png) | SWAG | [SWAG Finance (Portal)](http://coingecko.com/en/coins/swag-finance) | [0x87edffde3e14c7a66c9b9724747a1c5696b742e6](https://etherscan.io/address/0x87edffde3e14c7a66c9b9724747a1c5696b742e6) | [5hcdG6NjQwiNhVa9bcyaaDsCyA1muPQ6WRzQwHfgeeKo](https://solscan.io/address/5hcdG6NjQwiNhVa9bcyaaDsCyA1muPQ6WRzQwHfgeeKo) | 8 | | | nan | | | nan | | | nan | | | nan | | | nan | | | nan | | | nan | | | nan | | | | | | | | | nan | | | nan | | | | | | nan | | | nan | | | | | | | | | nan | | | nan | | | nan | | | | | | nan | | SWAG | diff --git a/apps/token-list/content/source_polygon.md b/apps/token-list/content/source_polygon.md index a6f7c7fa4..3cc0bec5d 100644 --- a/apps/token-list/content/source_polygon.md +++ b/apps/token-list/content/source_polygon.md @@ -5,7 +5,7 @@ _See [by_source.csv](by_source.csv) ([raw](https://raw.githubusercontent.com/xla | img | symbol | name | sourceAddress | solAddress | solDecimals | solMarkets | ethAddress | ethDecimals | ethMarkets | terraAddress | terraDecimals | terraMarkets | bscAddress | bscDecimals | bscMarkets | avaxAddress | avaxDecimals | avaxMarkets | oasisAddress | oasisDecimals | oasisMarkets | algorandAddress | algorandDecimals | algorandMarkets | auroraAddress | auroraDecimals | auroraMarkets | ftmAddress | ftmDecimals | ftmMarkets | karuraAddress | karuraDecimals | karuraMarkets | acalaAddress | acalaDecimals | acalaMarkets | klaytnAddress | klaytnDecimals | klaytnMarkets | celoAddress | celoDecimals | celoMarkets | nearAddress | nearDecimals | nearMarkets | moonbeamAddress | moonbeamDecimals | moonbeamMarkets | terra2Address | terra2Decimals | terra2Markets | injectiveAddress | injectiveDecimals | injectiveMarkets | suiAddress | suiDecimals | suiMarkets | aptosAddress | aptosDecimals | aptosMarkets | arbitrumAddress | arbitrumDecimals | arbitrumMarkets | optimismAddress | optimismDecimals | optimismMarkets | xplaAddress | xplaDecimals | xplaMarkets | baseAddress | baseDecimals | baseMarkets | symbol | |:----------------------------------------------------------------------------------------------------------------|:---------|:-------------------------------------------------------------------------------|:-------------------------------------------------------------------------------------------------------------------------|:------------------------------------------------------------------------------------------------------------------------|--------------:|:-------------------------------------------------------------------|:----------------------------------------------------------------------------------------------------------------------|--------------:|:-------------------------------------------------------------------|:-------------------------------------------------------------------------------------------------------------------------------------------|----------------:|:---------------|:---------------------------------------------------------------------------------------------------------------------|--------------:|:------------------------------------------------|:----------------------------------------------------------------------------------------------------------------------|---------------:|:--------------|:---------------------------------------------------------------------------------------------------------------------------------|----------------:|:---------------|:------------------|:-------------------|:------------------|:----------------|:-----------------|:----------------|:-------------|:--------------|:-------------|:----------------|:-----------------|:----------------|:---------------|:----------------|:---------------|:----------------|:-----------------|:----------------|:--------------|:---------------|:--------------|:--------------|:---------------|:--------------|:------------------|:-------------------|:------------------|:----------------|:-----------------|:----------------|:-------------------|:--------------------|:-------------------|:-------------|:--------------|:-------------|:---------------|:----------------|:---------------|:----------------------------------------------------------------------------------------------------------------------|-------------------:|:-------------------------------------------------------------------|:----------------------------------------------------------------------------------------------------------------------------------|-------------------:|:-------------------------------------------------------------------|:--------------|:---------------|:--------------|:-----------------------------------------------------------------------------------------------------------------------|---------------:|:-------------------------------------------------------------------|:-----------------| -| | BBL | [Beoble](http://coingecko.com/en/coins/beoble) | [0xD979c468a68062e7bdff4Ba6DF7842DfD3492E0f](https://polygonscan.com/address/0xD979c468a68062e7bdff4Ba6DF7842DfD3492E0f) | | nan | | | nan | | | nan | | | nan | | | nan | | | nan | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | nan | | | nan | | | | | | nan | | BBL | +| ![BBL](https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/BBL_wh.png) | BBL | [Beoble](http://coingecko.com/en/coins/beoble) | [0xD979c468a68062e7bdff4Ba6DF7842DfD3492E0f](https://polygonscan.com/address/0xD979c468a68062e7bdff4Ba6DF7842DfD3492E0f) | | nan | | | nan | | | nan | | | nan | | | nan | | | nan | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | nan | | | nan | | | | | | nan | | BBL | | ![DAIpo](https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/DAIpo_wh.png) | DAIpo | [DAI (Portal from Polygon)](http://coingecko.com/en/coins/dai) | [0x8f3cf7ad23cd3cadbd9735aff958023239c6a063](https://polygonscan.com/address/0x8f3cf7ad23cd3cadbd9735aff958023239c6a063) | [4Fo67MYQpVhZj9R7jQTd63FPAnWbPpaafAUxsMGX2geP](https://solscan.io/address/4Fo67MYQpVhZj9R7jQTd63FPAnWbPpaafAUxsMGX2geP) | 8 | | | nan | | | nan | | | nan | | | nan | | | nan | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | nan | | | nan | | | | | | nan | | DAIpo | | ![MATICpo](https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/MATICpo_wh.png) | MATICpo | [MATIC (Portal from Polygon)](http://coingecko.com/en/coins/polygon) | [0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270](https://polygonscan.com/address/0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270) | [Gz7VkD4MacbEB6yC5XD3HcumEiYx2EtDYYrfikGsvopG](https://solscan.io/address/Gz7VkD4MacbEB6yC5XD3HcumEiYx2EtDYYrfikGsvopG) | 8 | | [0x7c9f4C87d911613Fe9ca58b579f737911AAD2D43](https://etherscan.io/address/0x7c9f4C87d911613Fe9ca58b579f737911AAD2D43) | 18 | | [terra1dtqlfecglk47yplfrtwjzyagkgcqqngd5lgjp8](https://finder.terra.money/columbus-5/address/terra1dtqlfecglk47yplfrtwjzyagkgcqqngd5lgjp8) | 8 | | [0xc836d8dC361E44DbE64c4862D55BA041F88Ddd39](https://bscscan.com/address/0xc836d8dC361E44DbE64c4862D55BA041F88Ddd39) | 18 | | [0xf2f13f0B7008ab2FA4A2418F4ccC3684E49D20Eb](https://snowtrace.io/address/0xf2f13f0B7008ab2FA4A2418F4ccC3684E49D20Eb) | 18 | | | nan | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | nan | | | nan | | | | | | nan | | MATICpo | | ![QUICK](https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/QUICK_wh.png) | QUICK | [Quickswap (Portal)](http://coingecko.com/en/coins/quickswap) | [0x831753dd7087cac61ab5644b308642cc1c33dc13](https://polygonscan.com/address/0x831753dd7087cac61ab5644b308642cc1c33dc13) | [5njTmK53Ss5jkiHHZvzabVzZj6ztu6WYWpAPYgbVnbjs](https://solscan.io/address/5njTmK53Ss5jkiHHZvzabVzZj6ztu6WYWpAPYgbVnbjs) | 8 | | | nan | | | nan | | | nan | | | nan | | | nan | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | nan | | | nan | | | | | | nan | | QUICK | diff --git a/apps/token-list/content/source_solana.md b/apps/token-list/content/source_solana.md index e32409422..ffc0a8fae 100644 --- a/apps/token-list/content/source_solana.md +++ b/apps/token-list/content/source_solana.md @@ -6,19 +6,19 @@ _See [by_source.csv](by_source.csv) ([raw](https://raw.githubusercontent.com/xla | img | symbol | name | sourceAddress | ethAddress | ethDecimals | ethMarkets | terraAddress | terraDecimals | terraMarkets | bscAddress | bscDecimals | bscMarkets | maticAddress | maticDecimals | maticMarkets | avaxAddress | avaxDecimals | avaxMarkets | oasisAddress | oasisDecimals | oasisMarkets | algorandAddress | algorandDecimals | algorandMarkets | auroraAddress | auroraDecimals | auroraMarkets | ftmAddress | ftmDecimals | ftmMarkets | karuraAddress | karuraDecimals | karuraMarkets | acalaAddress | acalaDecimals | acalaMarkets | klaytnAddress | klaytnDecimals | klaytnMarkets | celoAddress | celoDecimals | celoMarkets | nearAddress | nearDecimals | nearMarkets | moonbeamAddress | moonbeamDecimals | moonbeamMarkets | terra2Address | terra2Decimals | terra2Markets | injectiveAddress | injectiveDecimals | injectiveMarkets | suiAddress | suiDecimals | suiMarkets | aptosAddress | aptosDecimals | aptosMarkets | arbitrumAddress | arbitrumDecimals | arbitrumMarkets | optimismAddress | optimismDecimals | optimismMarkets | xplaAddress | xplaDecimals | xplaMarkets | baseAddress | baseDecimals | baseMarkets | symbol | |:--------------------------------------------------------------------------------------------------------------|:---------|:----------------------------------------------------------------------------------|:------------------------------------------------------------------------------------------------------------------------|:----------------------------------------------------------------------------------------------------------------------|--------------:|:-------------------------------------------------------------------|:-------------------------------------------------------------------------------------------------------------------------------------------|----------------:|:---------------|:---------------------------------------------------------------------------------------------------------------------|--------------:|:------------------------------------------------|:-------------------------------------------------------------------------------------------------------------------------|----------------:|:--------------------------------------------------------------------------|:----------------------------------------------------------------------------------------------------------------------|---------------:|:--------------|:---------------------------------------------------------------------------------------------------------------------------------|----------------:|:---------------|:------------------|:-------------------|:------------------|:------------------------------------------------------------------------------------------------------------------------|-----------------:|:----------------|:---------------------------------------------------------------------------------------------------------------------|--------------:|:-------------|:----------------|:-----------------|:----------------|:---------------|:----------------|:---------------|:----------------|:-----------------|:----------------|:--------------|:---------------|:--------------|:--------------|:---------------|:--------------|:------------------|:-------------------|:------------------|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------:|:----------------|:------------------------------------------------------------------------------------------------------------------------------------|--------------------:|:-------------------------------|:-------------|:--------------|:-------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------:|:---------------|:----------------------------------------------------------------------------------------------------------------------|-------------------:|:-------------------------------------------------------------------|:----------------------------------------------------------------------------------------------------------------------------------|-------------------:|:-------------------------------------------------------------------|:--------------|:---------------|:--------------|:-----------------------------------------------------------------------------------------------------------------------|---------------:|:-------------------------------------------------------------------|:-----------------| | ![BONK](https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/BONK_wh.png) | BONK | [BONK (Portal)](http://coingecko.com/en/coins/bonk) | [DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263](https://solscan.io/address/DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263) | [0x1151CB3d861920e07a38e03eEAd12C32178567F6](https://etherscan.io/address/0x1151CB3d861920e07a38e03eEAd12C32178567F6) | 5 | [uniswap](https://app.uniswap.org/), [curve](https://curve.fi/) | | nan | | [0xA697e272a73744b343528C3Bc4702F2565b2F422](https://bscscan.com/address/0xA697e272a73744b343528C3Bc4702F2565b2F422) | 5 | [pancakeswap](https://pancakeswap.finance/swap) | [0xe5B49820e5A1063F6F4DdF851327b5E8B2301048](https://polygonscan.com/address/0xe5B49820e5A1063F6F4DdF851327b5E8B2301048) | 5 | [quickswap](https://quickswap.exchange/), [sushi](https://app.sushi.com/) | | nan | | | nan | | | | | | nan | | | nan | | | | | | | | | | | | | | | | | | | | | nan | | [inj14rry9q6dym3dgcwzq79yay0e9azdz55jr465ch](https://explorer.injective.network/address/inj14rry9q6dym3dgcwzq79yay0e9azdz55jr465ch) | 5 | [helix](https://helixapp.com/) | | | | [0x2a90fae71afc7460ee42b20ee49a9c9b29272905ad71fef92fbd8b3905a24b56](https://explorer.aptoslabs.com//address/0x2a90fae71afc7460ee42b20ee49a9c9b29272905ad71fef92fbd8b3905a24b56) | 5 | | [0x09199d9a5f4448d0848e4395d065e1ad9c4a1f74](https://arbiscan.io//address/0x09199d9a5f4448d0848e4395d065e1ad9c4a1f74) | 5 | [uniswap](https://app.uniswap.org/) | | nan | | | | | | nan | | BONK | -| | DAO | [DAO Maker](http://coingecko.com/en/coins/dao-maker) | [85aM5XJhdDeUw4MbGKM56zmWnsRyh76zUVut97uPjiCg](https://solscan.io/address/85aM5XJhdDeUw4MbGKM56zmWnsRyh76zUVut97uPjiCg) | | nan | | | nan | | | nan | | | nan | | | nan | | | nan | | | | | | nan | | | nan | | | | | | | | | | | | | | | | | | | | | nan | | | nan | | | | | | nan | | | nan | | | nan | | | | | | nan | | DAO | +| ![DAO](https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/DAO_wh.png) | DAO | [DAO Maker](http://coingecko.com/en/coins/dao-maker) | [85aM5XJhdDeUw4MbGKM56zmWnsRyh76zUVut97uPjiCg](https://solscan.io/address/85aM5XJhdDeUw4MbGKM56zmWnsRyh76zUVut97uPjiCg) | | nan | | | nan | | | nan | | | nan | | | nan | | | nan | | | | | | nan | | | nan | | | | | | | | | | | | | | | | | | | | | nan | | | nan | | | | | | nan | | | nan | | | nan | | | | | | nan | | DAO | | ![DUST](https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/DUST_wh.png) | DUST | [DUST Protocol](http://coingecko.com/en/coins/dust-token) | [DUSTawucrTsGU8hcqRdHDCbuYhCPADMLM2VcCb8VnFnQ](https://solscan.io/address/DUSTawucrTsGU8hcqRdHDCbuYhCPADMLM2VcCb8VnFnQ) | [0xb5b1b659da79a2507c27aad509f15b4874edc0cc](https://etherscan.io/address/0xb5b1b659da79a2507c27aad509f15b4874edc0cc) | 9 | | | nan | | | nan | | [0x4987a49c253c38b3259092e9aac10ec0c7ef7542](https://polygonscan.com/address/0x4987a49c253c38b3259092e9aac10ec0c7ef7542) | 9 | | | nan | | | nan | | | | | | nan | | | nan | | | | | | | | | | | | | | | | | | | | | nan | | | nan | | | | | | nan | | | nan | | | nan | | | | | | nan | | DUST | -| | EMC | [Edge Matrix Computing](http://coingecko.com/en/coins/edge-matrix-computing) | [4k1634D3jyZVxPLFU9zLnaWccTwrCLBrPXAoNtkYVYRC](https://solscan.io/address/4k1634D3jyZVxPLFU9zLnaWccTwrCLBrPXAoNtkYVYRC) | | nan | | | nan | | | nan | | | nan | | | nan | | | nan | | | | | | nan | | | nan | | | | | | | | | | | | | | | | | | | | | nan | | | nan | | | | | | nan | | | nan | | | nan | | | | | | nan | | EMC | -| | IRL | [Rebase GG IRL](http://coingecko.com/en/coins/rebase-gg-irl) | [HEmgGwgn6naqNatkU9ST2wHa4X9HRMmxE7qE8vWuV7L2](https://solscan.io/address/HEmgGwgn6naqNatkU9ST2wHa4X9HRMmxE7qE8vWuV7L2) | | nan | | | nan | | | nan | | | nan | | | nan | | | nan | | | | | | nan | | | nan | | | | | | | | | | | | | | | | | | | | | nan | | | nan | | | | | | nan | | | nan | | | nan | | | | | | nan | | IRL | +| ![EMC](https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/EMC_wh.png) | EMC | [Edge Matrix Computing](http://coingecko.com/en/coins/edge-matrix-computing) | [4k1634D3jyZVxPLFU9zLnaWccTwrCLBrPXAoNtkYVYRC](https://solscan.io/address/4k1634D3jyZVxPLFU9zLnaWccTwrCLBrPXAoNtkYVYRC) | | nan | | | nan | | | nan | | | nan | | | nan | | | nan | | | | | | nan | | | nan | | | | | | | | | | | | | | | | | | | | | nan | | | nan | | | | | | nan | | | nan | | | nan | | | | | | nan | | EMC | +| ![IRL](https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/IRL_wh.png) | IRL | [Rebase GG IRL](http://coingecko.com/en/coins/rebase-gg-irl) | [HEmgGwgn6naqNatkU9ST2wHa4X9HRMmxE7qE8vWuV7L2](https://solscan.io/address/HEmgGwgn6naqNatkU9ST2wHa4X9HRMmxE7qE8vWuV7L2) | | nan | | | nan | | | nan | | | nan | | | nan | | | nan | | | | | | nan | | | nan | | | | | | | | | | | | | | | | | | | | | nan | | | nan | | | | | | nan | | | nan | | | nan | | | | | | nan | | IRL | | ![KING](https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/KING_wh.png) | KING | [KING (Portal)](http://coingecko.com/en/coins/king) | [9noXzpXnkyEcKF3AeXqUHTdR59V5uvrRBUZ9bwfQwxeq](https://solscan.io/address/9noXzpXnkyEcKF3AeXqUHTdR59V5uvrRBUZ9bwfQwxeq) | [0xE28027c99C7746fFb56B0113e5d9708aC86fAE8f](https://etherscan.io/address/0xE28027c99C7746fFb56B0113e5d9708aC86fAE8f) | 9 | [uniswap](https://app.uniswap.org/) | | nan | | | nan | | | nan | | | nan | | | nan | | | | | | nan | | | nan | | | | | | | | | | | | | | | | | | | | | nan | | | nan | | | | | | nan | | | nan | | | nan | | | | | | nan | | KING | -| | MDT | [Measurable Data](http://coingecko.com/en/coins/measurable-data-token) | [8Wqbst4qAN2FqBCCh5gdXq2WJ7vTNWEY4oNLrpUg7Tya](https://solscan.io/address/8Wqbst4qAN2FqBCCh5gdXq2WJ7vTNWEY4oNLrpUg7Tya) | | nan | | | nan | | | nan | | | nan | | | nan | | | nan | | | | | | nan | | | nan | | | | | | | | | | | | | | | | | | | | | nan | | | nan | | | | | | nan | | | nan | | | nan | | | | | | nan | | MDT | +| ![MDT](https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/MDT_wh.png) | MDT | [Measurable Data](http://coingecko.com/en/coins/measurable-data-token) | [8Wqbst4qAN2FqBCCh5gdXq2WJ7vTNWEY4oNLrpUg7Tya](https://solscan.io/address/8Wqbst4qAN2FqBCCh5gdXq2WJ7vTNWEY4oNLrpUg7Tya) | | nan | | | nan | | | nan | | | nan | | | nan | | | nan | | | | | | nan | | | nan | | | | | | | | | | | | | | | | | | | | | nan | | | nan | | | | | | nan | | | nan | | | nan | | | | | | nan | | MDT | | ![PYTH](https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/PYTH_wh.png) | PYTH | [Pyth Network](http://coingecko.com/en/coins/pyth-network) | [HZ1JovNiVvGrGNiiYvEozEVgZ58xaU3RKwX8eACQBCt3](https://solscan.io/address/HZ1JovNiVvGrGNiiYvEozEVgZ58xaU3RKwX8eACQBCt3) | | nan | | | nan | | | nan | | | nan | | | nan | | | nan | | | | | | nan | | | nan | | | | | | | | | | | | | | | | | | | | | nan | | | nan | | | | | | nan | | | nan | | | nan | | | | | | nan | | PYTH | -| | QUACK | [QUACK](http://coingecko.com/en/coins/quack) | [9HGziACBczM3VorD3B6ZYtj6BA595jq8erzsSVtUNo6N](https://solscan.io/address/9HGziACBczM3VorD3B6ZYtj6BA595jq8erzsSVtUNo6N) | | nan | | | nan | | | nan | | | nan | | | nan | | | nan | | | | | | nan | | | nan | | | | | | | | | | | | | | | | | | | | | nan | | | nan | | | | | | nan | | | nan | | | nan | | | | | | nan | | QUACK | +| ![QUACK](https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/QUACK_wh.png) | QUACK | [QUACK](http://coingecko.com/en/coins/quack) | [9HGziACBczM3VorD3B6ZYtj6BA595jq8erzsSVtUNo6N](https://solscan.io/address/9HGziACBczM3VorD3B6ZYtj6BA595jq8erzsSVtUNo6N) | | nan | | | nan | | | nan | | | nan | | | nan | | | nan | | | | | | nan | | | nan | | | | | | | | | | | | | | | | | | | | | nan | | | nan | | | | | | nan | | | nan | | | nan | | | | | | nan | | QUACK | | ![RAY](https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/RAY_wh.png) | RAY | [Raydium (Portal)](http://coingecko.com/en/coins/raydium) | [4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R](https://solscan.io/address/4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R) | [0xE617dd80c621a5072bD8cBa65E9d76c07327004d](https://etherscan.io/address/0xE617dd80c621a5072bD8cBa65E9d76c07327004d) | 6 | | [terra1ht5sepn28z999jx33sdduuxm9acthad507jg9q](https://finder.terra.money/columbus-5/address/terra1ht5sepn28z999jx33sdduuxm9acthad507jg9q) | 6 | | [0x13b6A55662f6591f8B8408Af1C73B017E32eEdB8](https://bscscan.com/address/0x13b6A55662f6591f8B8408Af1C73B017E32eEdB8) | 6 | | | nan | | | nan | | | nan | | | | | | nan | | | nan | | | | | | | | | | | | | | | | | | | | | nan | | | nan | | | | | | nan | | | nan | | | nan | | | | | | nan | | RAY | | ![SBR](https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/SBR_wh.png) | SBR | [Saber (Portal)](http://coingecko.com/en/coins/saber) | [Saber2gLauYim4Mvftnrasomsv6NvAuncvMEZwcLpD1](https://solscan.io/address/Saber2gLauYim4Mvftnrasomsv6NvAuncvMEZwcLpD1) | | nan | | [terra17h82zsq6q8x5tsgm5ugcx4gytw3axguvzt4pkc](https://finder.terra.money/columbus-5/address/terra17h82zsq6q8x5tsgm5ugcx4gytw3axguvzt4pkc) | 6 | | [0x75344E5693ed5ecAdF4f292fFeb866c2cF8afCF1](https://bscscan.com/address/0x75344E5693ed5ecAdF4f292fFeb866c2cF8afCF1) | 6 | | | nan | | | nan | | | nan | | | | | | nan | | | nan | | | | | | | | | | | | | | | | | | | | | nan | | | nan | | | | | | nan | | | nan | | | nan | | | | | | nan | | SBR | -| | SDEX | [SmarDex](http://coingecko.com/en/coins/smardex) | [9dzSzFvPsKDoY2gdWErsuz2H1o4tbzvgBhrNZ9cvkD2j](https://solscan.io/address/9dzSzFvPsKDoY2gdWErsuz2H1o4tbzvgBhrNZ9cvkD2j) | | nan | | | nan | | | nan | | | nan | | | nan | | | nan | | | | | | nan | | | nan | | | | | | | | | | | | | | | | | | | | | nan | | | nan | | | | | | nan | | | nan | | | nan | | | | | | nan | | SDEX | +| ![SDEX](https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/SDEX_wh.png) | SDEX | [SmarDex](http://coingecko.com/en/coins/smardex) | [9dzSzFvPsKDoY2gdWErsuz2H1o4tbzvgBhrNZ9cvkD2j](https://solscan.io/address/9dzSzFvPsKDoY2gdWErsuz2H1o4tbzvgBhrNZ9cvkD2j) | | nan | | | nan | | | nan | | | nan | | | nan | | | nan | | | | | | nan | | | nan | | | | | | | | | | | | | | | | | | | | | nan | | | nan | | | | | | nan | | | nan | | | nan | | | | | | nan | | SDEX | | ![SOL](https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/SOL_wh.png) | SOL | [SOL (Portal)](http://coingecko.com/en/coins/solana) | [So11111111111111111111111111111111111111112](https://solscan.io/address/So11111111111111111111111111111111111111112) | [0xD31a59c85aE9D8edEFeC411D448f90841571b89c](https://etherscan.io/address/0xD31a59c85aE9D8edEFeC411D448f90841571b89c) | 9 | [uniswap](https://app.uniswap.org/) | [terra190tqwgqx7s8qrknz6kckct7v607cu068gfujpk](https://finder.terra.money/columbus-5/address/terra190tqwgqx7s8qrknz6kckct7v607cu068gfujpk) | 8 | | [0xfA54fF1a158B5189Ebba6ae130CEd6bbd3aEA76e](https://bscscan.com/address/0xfA54fF1a158B5189Ebba6ae130CEd6bbd3aEA76e) | 9 | | [0xd93f7e271cb87c23aaa73edc008a79646d1f9912](https://polygonscan.com/address/0xd93f7e271cb87c23aaa73edc008a79646d1f9912) | 9 | | [0xFE6B19286885a4F7F55AdAD09C3Cd1f906D2478F](https://snowtrace.io/address/0xFE6B19286885a4F7F55AdAD09C3Cd1f906D2478F) | 9 | | [0xd17dDAC91670274F7ba1590a06EcA0f2FD2b12bc](https://explorer.oasis.updev.si/address/0xd17dDAC91670274F7ba1590a06EcA0f2FD2b12bc) | 9 | | | | | | nan | | [0xd99021C2A33e4Cf243010539c9e9b7c52E0236c1](https://ftmscan.com/address/0xd99021C2A33e4Cf243010539c9e9b7c52E0236c1) | 9 | | | | | | | | | | | | | | | | | | | | [terra1ctelwayk6t2zu30a8v9kdg3u2gr0slpjdfny5pjp7m3tuquk32ysugyjdg](https://finder.terra.money/address/terra1ctelwayk6t2zu30a8v9kdg3u2gr0slpjdfny5pjp7m3tuquk32ysugyjdg) | 8 | | [inj1sthrn5ep8ls5vzz8f9gp89khhmedahhdkqa8z3](https://explorer.injective.network/address/inj1sthrn5ep8ls5vzz8f9gp89khhmedahhdkqa8z3) | 8 | [helix](https://helixapp.com/) | | | | | nan | | | nan | | | nan | | | | | | nan | | SOL | -| | SPX | [SPX6900](http://coingecko.com/en/coins/spx6900) | [J3NKxxXZcnNiMjKw9hYb2K4LUxgwB6t1FtPtQVsv3KFr](https://solscan.io/address/J3NKxxXZcnNiMjKw9hYb2K4LUxgwB6t1FtPtQVsv3KFr) | | nan | | | nan | | | nan | | | nan | | | nan | | | nan | | | | | | nan | | | nan | | | | | | | | | | | | | | | | | | | | | nan | | | nan | | | | | | nan | | | nan | | | nan | | | | | | nan | | SPX | +| ![SPX](https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/SPX_wh.png) | SPX | [SPX6900](http://coingecko.com/en/coins/spx6900) | [J3NKxxXZcnNiMjKw9hYb2K4LUxgwB6t1FtPtQVsv3KFr](https://solscan.io/address/J3NKxxXZcnNiMjKw9hYb2K4LUxgwB6t1FtPtQVsv3KFr) | | nan | | | nan | | | nan | | | nan | | | nan | | | nan | | | | | | nan | | | nan | | | | | | | | | | | | | | | | | | | | | nan | | | nan | | | | | | nan | | | nan | | | nan | | | | | | nan | | SPX | | ![SRMso](https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/SRMso_wh.png) | SRMso | [Serum (Portal from Solana)](http://coingecko.com/en/coins/serum) | [SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt](https://solscan.io/address/SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt) | [0xE3ADAA4fb7c92AB833Ee08B3561D9c434aA2A3eE](https://etherscan.io/address/0xE3ADAA4fb7c92AB833Ee08B3561D9c434aA2A3eE) | 6 | | [terra1dkam9wd5yvaswv4yq3n2aqd4wm5j8n82qc0c7c](https://finder.terra.money/columbus-5/address/terra1dkam9wd5yvaswv4yq3n2aqd4wm5j8n82qc0c7c) | 6 | | [0x12BeffdCEcb547640DC30e1495E4B9cdc21922b4](https://bscscan.com/address/0x12BeffdCEcb547640DC30e1495E4B9cdc21922b4) | 6 | | | nan | | | nan | | | nan | | | | | | nan | | | nan | | | | | | | | | | | | | | | | | | | | | nan | | | nan | | | | | | nan | | | nan | | | nan | | | | | | nan | | SRMso | | ![TBTC](https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/TBTC_wh.png) | TBTC | [Threshold Bitcoin](http://coingecko.com/en/coins/tbtc) | [6DNSN2BJsaPFdFFc1zP37kkeNe4Usc1Sqkzr9C9vPWcU](https://solscan.io/address/6DNSN2BJsaPFdFFc1zP37kkeNe4Usc1Sqkzr9C9vPWcU) | [0x18084fbA666a33d37592fA2633fD49a74DD93a88](https://etherscan.io/address/0x18084fbA666a33d37592fA2633fD49a74DD93a88) | 8 | [threshold network](https://dashboard.threshold.network/TBTC/mint) | | nan | | | nan | | [0x236aa50979D5f3De3Bd1Eeb40E81137F22ab794b](https://polygonscan.com/address/0x236aa50979D5f3De3Bd1Eeb40E81137F22ab794b) | 8 | [threshold network](https://dashboard.threshold.network/TBTC/mint) | | nan | | | nan | | | | | | nan | | | nan | | | | | | | | | | | | | | | | | | | | | nan | | | nan | | | | | | nan | | [0x6c84a8f1c29108F47a79964b5Fe888D4f4D0dE40](https://arbiscan.io//address/0x6c84a8f1c29108F47a79964b5Fe888D4f4D0dE40) | 8 | [threshold network](https://dashboard.threshold.network/TBTC/mint) | [0x6c84a8f1c29108F47a79964b5Fe888D4f4D0dE40](https://optimistic.etherscan.io//address/0x6c84a8f1c29108F47a79964b5Fe888D4f4D0dE40) | 8 | [threshold network](https://dashboard.threshold.network/TBTC/mint) | | | | [0x236aa50979D5f3De3Bd1Eeb40E81137F22ab794b](https://basescan.org//address/0x236aa50979D5f3De3Bd1Eeb40E81137F22ab794b) | 8 | [threshold network](https://dashboard.threshold.network/TBTC/mint) | TBTC | | ![USDCso](https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/USDCso_wh.png) | USDCso | [USD Coin (Portal from Solana)](http://coingecko.com/en/coins/usd-coin) | [EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v](https://solscan.io/address/EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v) | [0x41f7B8b9b897276b7AAE926a9016935280b44E97](https://etherscan.io/address/0x41f7B8b9b897276b7AAE926a9016935280b44E97) | 6 | [uniswap](https://app.uniswap.org/) | [terra1e6mq63y64zcxz8xyu5van4tgkhemj3r86yvgu4](https://finder.terra.money/columbus-5/address/terra1e6mq63y64zcxz8xyu5van4tgkhemj3r86yvgu4) | 6 | | [0x91Ca579B0D47E5cfD5D0862c21D5659d39C8eCf0](https://bscscan.com/address/0x91Ca579B0D47E5cfD5D0862c21D5659d39C8eCf0) | 6 | | [0x576cf361711cd940cd9c397bb98c4c896cbd38de](https://polygonscan.com/address/0x576cf361711cd940cd9c397bb98c4c896cbd38de) | 6 | | [0x0950Fc1AD509358dAeaD5eB8020a3c7d8b43b9DA](https://snowtrace.io/address/0x0950Fc1AD509358dAeaD5eB8020a3c7d8b43b9DA) | 6 | | [0x1d1149a53deB36F2836Ae7877c9176413aDfA4A8](https://explorer.oasis.updev.si/address/0x1d1149a53deB36F2836Ae7877c9176413aDfA4A8) | 6 | | | | | [0xDd1DaFedeBa5F9851C4F4a2876E0f3aF3c774B1A](https://aurorascan.dev/address/0xDd1DaFedeBa5F9851C4F4a2876E0f3aF3c774B1A) | 6 | | [0xb8398DA4FB3BC4306B9D9d9d13d9573e7d0E299f](https://ftmscan.com/address/0xb8398DA4FB3BC4306B9D9d9d13d9573e7d0E299f) | 6 | | | | | | | | | | | | | | | | | | | | | nan | | | nan | | | | | | nan | | | nan | | | nan | | | | | | nan | | USDCso | @@ -26,5 +26,5 @@ _See [by_source.csv](by_source.csv) ([raw](https://raw.githubusercontent.com/xla | ![XTAG](https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/XTAG_wh.png) | XTAG | [XTAG Token (Portal)](http://coingecko.com/en/coins/xhashtag) | [5gs8nf4wojB5EXgDUWNLwXpknzgV2YWDhveAeBZpVLbp](https://solscan.io/address/5gs8nf4wojB5EXgDUWNLwXpknzgV2YWDhveAeBZpVLbp) | | nan | | | nan | | | nan | | | nan | | [0xa608d79c5f695c0d4c0e773a4938b57e18e0fc57](https://snowtrace.io/address/0xa608d79c5f695c0d4c0e773a4938b57e18e0fc57) | 6 | | | nan | | | | | | nan | | | nan | | | | | | | | | | | | | | | | | | | | | nan | | | nan | | | | | | nan | | | nan | | | nan | | | | | | nan | | XTAG | | ![ZBC](https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/ZBC_wh.png) | ZBC | [Wrapped Zebec Token](http://coingecko.com/en/coins/zebec-protocol) | [wzbcJyhGhQDLTV1S99apZiiBdE4jmYfbw99saMMdP59](https://solscan.io/address/wzbcJyhGhQDLTV1S99apZiiBdE4jmYfbw99saMMdP59) | | nan | | | nan | | [0x37a56cdcd83dce2868f721de58cb3830c44c6303](https://bscscan.com/address/0x37a56cdcd83dce2868f721de58cb3830c44c6303) | 9 | [pancakeswap](https://pancakeswap.finance/swap) | | nan | | | nan | | | nan | | | | | | nan | | | nan | | | | | | | | | | | | | | | | | | | | | nan | | | nan | | | | | | nan | | | nan | | | nan | | | | | | nan | | ZBC | | ![mSOL](https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/mSOL_wh.png) | mSOL | [Marinade staked SOL (Portal)](http://coingecko.com/en/coins/marinade-staked-sol) | [mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So](https://solscan.io/address/mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So) | [0x756bFb452cFE36A5Bc82e4F5f4261A89a18c242b](https://etherscan.io/address/0x756bFb452cFE36A5Bc82e4F5f4261A89a18c242b) | 9 | | [terra1qvlpf2v0zmru3gtex40sqq02wxp39x3cjh359y](https://finder.terra.money/columbus-5/address/terra1qvlpf2v0zmru3gtex40sqq02wxp39x3cjh359y) | 8 | | | nan | | | nan | | | nan | | [0x5E11A4f64D3B9fA042dB9e1AA918F735038FdfD8](https://explorer.oasis.updev.si/address/0x5E11A4f64D3B9fA042dB9e1AA918F735038FdfD8) | 9 | | | | | | nan | | | nan | | | | | | | | | | | | | | | | | | | | | nan | | | nan | | | | | | nan | | | nan | | | nan | | | | | | nan | | mSOL | -| | stTAO | [Tensorplex Staked TAO](http://coingecko.com/en/coins/tensorplex-staked-tao) | [ERWNqRejMisqmzTjon7peJhfCXLEGNS2Yo1tgMQN5aiG](https://solscan.io/address/ERWNqRejMisqmzTjon7peJhfCXLEGNS2Yo1tgMQN5aiG) | | nan | | | nan | | | nan | | | nan | | | nan | | | nan | | | | | | nan | | | nan | | | | | | | | | | | | | | | | | | | | | nan | | | nan | | | | | | nan | | | nan | | | nan | | | | | | nan | | stTAO | -| | wWAM | [Wam](http://coingecko.com/en/coins/wam) | [7hdeo5QciUF8S2vfsx6uRJkdNVADBU3DDcXW4zjDcMin](https://solscan.io/address/7hdeo5QciUF8S2vfsx6uRJkdNVADBU3DDcXW4zjDcMin) | | nan | | | nan | | | nan | | | nan | | | nan | | | nan | | | | | | nan | | | nan | | | | | | | | | | | | | | | | | | | | | nan | | | nan | | | | | | nan | | | nan | | | nan | | | | | | nan | | wWAM | \ No newline at end of file +| ![stTAO](https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/stTAO_wh.png) | stTAO | [Tensorplex Staked TAO](http://coingecko.com/en/coins/tensorplex-staked-tao) | [ERWNqRejMisqmzTjon7peJhfCXLEGNS2Yo1tgMQN5aiG](https://solscan.io/address/ERWNqRejMisqmzTjon7peJhfCXLEGNS2Yo1tgMQN5aiG) | | nan | | | nan | | | nan | | | nan | | | nan | | | nan | | | | | | nan | | | nan | | | | | | | | | | | | | | | | | | | | | nan | | | nan | | | | | | nan | | | nan | | | nan | | | | | | nan | | stTAO | +| ![wWAM](https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/wWAM_wh.png) | wWAM | [Wam](http://coingecko.com/en/coins/wam) | [7hdeo5QciUF8S2vfsx6uRJkdNVADBU3DDcXW4zjDcMin](https://solscan.io/address/7hdeo5QciUF8S2vfsx6uRJkdNVADBU3DDcXW4zjDcMin) | | nan | | | nan | | | nan | | | nan | | | nan | | | nan | | | | | | nan | | | nan | | | | | | | | | | | | | | | | | | | | | nan | | | nan | | | | | | nan | | | nan | | | nan | | | | | | nan | | wWAM | \ No newline at end of file diff --git a/apps/token-list/src/markets.json b/apps/token-list/src/markets.json index b5bbad0ef..ba03ae440 100644 --- a/apps/token-list/src/markets.json +++ b/apps/token-list/src/markets.json @@ -3544,7 +3544,7 @@ "symbol": "SLP" }, "4k1634D3jyZVxPLFU9zLnaWccTwrCLBrPXAoNtkYVYRC": { - "logo": "https://github.com/XLabs/portal-bridge-ui/assets/20446095/8113f852-15a0-4b23-bcd5-bc32999f13b6", + "logo": "https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/EMC_wh.png", "symbol": "EMC" }, "4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R": { @@ -3616,7 +3616,7 @@ "symbol": "CRV" }, "7hdeo5QciUF8S2vfsx6uRJkdNVADBU3DDcXW4zjDcMin": { - "logo": "https://github.com/XLabs/portal-bridge-ui/assets/20446095/214043c7-f2f5-4626-8ab4-f9c0ef0ba0e6", + "logo": "https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/wWAM_wh.png", "symbol": "wWAM" }, "7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs": { @@ -3624,7 +3624,7 @@ "symbol": "ETH" }, "85aM5XJhdDeUw4MbGKM56zmWnsRyh76zUVut97uPjiCg": { - "logo": "https://github.com/XLabs/portal-bridge-ui/assets/20446095/4481e786-5e1c-45d4-9201-374da5596de1", + "logo": "https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/DAO_wh.png", "symbol": "DAO" }, "8FU95xFJhUUkyyCLU13HSzDLs7oC4QZdXQHL6SCeab36": { @@ -3636,7 +3636,7 @@ "symbol": "ILV" }, "8Wqbst4qAN2FqBCCh5gdXq2WJ7vTNWEY4oNLrpUg7Tya": { - "logo": "https://github.com/XLabs/portal-bridge-ui/assets/20446095/fd9a50b1-7031-4b9a-a354-e3abca2dac8c", + "logo": "https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/MDT_wh.png", "symbol": "MDT" }, "8cTNUtcV2ueC3royJ642uRnvTxorJAWLZc58gxAo7y56": { @@ -3660,7 +3660,7 @@ "symbol": "PERP" }, "9HGziACBczM3VorD3B6ZYtj6BA595jq8erzsSVtUNo6N": { - "logo": "https://github.com/XLabs/portal-bridge-ui/assets/20446095/e7a64f61-3d53-4fcf-b120-7e46fa119bfe", + "logo": "https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/QUACK_wh.png", "symbol": "QUACK" }, "9LzCMqDgTKYz9Drzqnpgee3SGa89up3a247ypMj2xrqM": { @@ -3668,7 +3668,7 @@ "symbol": "AUDIO" }, "9dzSzFvPsKDoY2gdWErsuz2H1o4tbzvgBhrNZ9cvkD2j": { - "logo": "https://github.com/XLabs/portal-bridge-ui/assets/20446095/b180131a-28ba-481a-bb27-369ffe20f735", + "logo": "https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/SDEX_wh.png", "symbol": "SDEX" }, "9gP2kCy3wA1ctvYWQk75guqXuHfrEomqydHLtcTCqiLa": { @@ -3832,7 +3832,7 @@ "symbol": "USDCso" }, "ERWNqRejMisqmzTjon7peJhfCXLEGNS2Yo1tgMQN5aiG": { - "logo": "https://github.com/XLabs/portal-bridge-ui/assets/20446095/9141de46-8ff3-4c5b-bbeb-87631465d635", + "logo": "https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/stTAO_wh.png", "symbol": "stTAO" }, "EXExWvT6VyYxEjFzF5BrUxt5GZMPVZnd48y3iWrRefMq": { @@ -3908,7 +3908,7 @@ "symbol": "LRC" }, "HEmgGwgn6naqNatkU9ST2wHa4X9HRMmxE7qE8vWuV7L2": { - "logo": "https://github.com/XLabs/portal-bridge-ui/assets/20446095/297015bc-2d7e-4fba-a79b-dd2ad25d3733", + "logo": "https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/IRL_wh.png", "symbol": "IRL" }, "HGsLG4PnZ28L8A4R5nPqKgZd86zUUdmfnkTRnuFJ5dAX": { @@ -3944,7 +3944,7 @@ "symbol": "AXSet" }, "J3NKxxXZcnNiMjKw9hYb2K4LUxgwB6t1FtPtQVsv3KFr": { - "logo": "https://github.com/XLabs/portal-bridge-ui/assets/20446095/a451e791-be79-4fb6-a248-2f765f5ede12", + "logo": "https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/SPX_wh.png", "symbol": "SPX" }, "J8LKx7pr9Zxh9nMhhT7X3EBmj5RzuhFrHKyJAe2F2i9S": { @@ -5037,7 +5037,7 @@ "symbol": "MATICpo" }, "0xcf32c644fed4FeFF94017a10B2882Bf71eE740dD": { - "logo": "https://github.com/XLabs/portal-bridge-ui/assets/20446095/f2293277-9b06-4911-aa55-a80d2d189d67", + "logo": "https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/wBRAWL_wh.png", "symbol": "wBRAWL" }, "0xd63CDf02853D759831550fAe7dF8FFfE0B317b39": { @@ -5119,7 +5119,7 @@ "symbol": "LUNA" }, "0xD979c468a68062e7bdff4Ba6DF7842DfD3492E0f": { - "logo": "https://github.com/XLabs/portal-bridge-ui/assets/20446095/378f648e-a981-49fb-a25a-ac1685d3d20c", + "logo": "https://raw.githubusercontent.com/xlabs/portal-bridge-ui/main/apps/token-list/assets/BBL_wh.png", "symbol": "BBL" }, "0xE6469Ba6D2fD6130788E0eA9C0a0515900563b59": { From 522465d71a1c0902624daf34289d48d58e9c8ff5 Mon Sep 17 00:00:00 2001 From: Daniel Isaac Geslin Date: Mon, 15 Jul 2024 17:14:55 +0200 Subject: [PATCH 9/9] testing ci --- apps/connect/src/App.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/connect/src/App.tsx b/apps/connect/src/App.tsx index b1b2dacac..b8c2ca51d 100644 --- a/apps/connect/src/App.tsx +++ b/apps/connect/src/App.tsx @@ -1,3 +1,4 @@ +// DON'T MERGE import type { ChainName, WormholeConnectConfig,