diff --git a/cspell.json b/cspell.json index aa4c82a87783..62b6ce58cb82 100644 --- a/cspell.json +++ b/cspell.json @@ -17,6 +17,7 @@ "adai", "addrs", "aeth", + "agoracro", "amountstate", "ampl", "ampleforth", @@ -62,6 +63,9 @@ "cooldown", "corepack", "counterparty", + "crona", + "cronaswap", + "cronos", "cyberconnect", "cyberlab", "datas", @@ -148,6 +152,7 @@ "millify", "mintable", "misoperation", + "mmfinance", "monofont", "monospace", "mooniswap", @@ -211,6 +216,8 @@ "shink", "signup", "sint", + "smol", + "smolswap", "solana", "sollet", "steelblue", @@ -250,6 +257,7 @@ "viet", "viewbox", "visualcompletion", + "vvsfinance", "walletconnect", "wannaswap", "wault", diff --git a/packages/mask/shared/flags.ts b/packages/mask/shared/flags.ts index 3a02f63f634e..b338f589269f 100644 --- a/packages/mask/shared/flags.ts +++ b/packages/mask/shared/flags.ts @@ -57,6 +57,7 @@ export const Flags = { flow_enabled: true, celo_enabled: true, aurora_enabled: true, + cronos_enabled: true, nft_airdrop_enabled: false, post_actions_enabled: false, next_id_tip_enabled: false, diff --git a/packages/mask/src/components/shared/ApplicationBoard.tsx b/packages/mask/src/components/shared/ApplicationBoard.tsx index d30e2849a02f..7ac2f7fb75bb 100644 --- a/packages/mask/src/components/shared/ApplicationBoard.tsx +++ b/packages/mask/src/components/shared/ApplicationBoard.tsx @@ -111,6 +111,7 @@ const SUPPORTED_CHAIN_ID_LIST = [ ChainId.Fantom, ChainId.Aurora, ChainId.Avalanche, + ChainId.Cronos, ] export interface MaskAppEntry { diff --git a/packages/mask/src/plugins/Collectible/SNSAdaptor/CollectibleProviderIcon.tsx b/packages/mask/src/plugins/Collectible/SNSAdaptor/CollectibleProviderIcon.tsx index 0b7815f6f68b..40b714e911a0 100644 --- a/packages/mask/src/plugins/Collectible/SNSAdaptor/CollectibleProviderIcon.tsx +++ b/packages/mask/src/plugins/Collectible/SNSAdaptor/CollectibleProviderIcon.tsx @@ -15,6 +15,11 @@ const useStyles = makeStyles()({ height: 16, verticalAlign: 'bottom', }, + agora: { + width: 16, + height: 16, + verticalAlign: 'bottom', + }, NFTScan: { width: 16, height: 16, @@ -23,6 +28,7 @@ const useStyles = makeStyles()({ }) const NFTScanIcon = new URL('../../../resources/NFTScanIcon.png', import.meta.url).toString() +const AgoraIcon = new URL('../../../resources/agoracro.png', import.meta.url).toString() export interface CollectibleProviderIconProps { provider: NonFungibleAssetProvider @@ -37,6 +43,8 @@ export function CollectibleProviderIcon(props: CollectibleProviderIconProps) { return case NonFungibleAssetProvider.RARIBLE: return + case NonFungibleAssetProvider.AGORA: + return default: unreachable(props.provider) } diff --git a/packages/mask/src/plugins/Collectible/base.ts b/packages/mask/src/plugins/Collectible/base.ts index a63f7ded5c20..cd95dcc13778 100644 --- a/packages/mask/src/plugins/Collectible/base.ts +++ b/packages/mask/src/plugins/Collectible/base.ts @@ -16,6 +16,7 @@ export const base: Plugin.Shared.Definition = { postContent: new Set([ /opensea.io\/assets\/(0x[\dA-Fa-f]{40})\/(\d+)/, /rarible.com\/token\/(0x[\dA-Fa-f]{40}):(\d+)/, + /agoracro.com\/explore\/(0x[\dA-Fa-f]{40}):(\d+)/, ]), }, } diff --git a/packages/mask/src/plugins/Collectible/hooks/useAssetOrder.ts b/packages/mask/src/plugins/Collectible/hooks/useAssetOrder.ts index 1b4f2ca7f4b4..8e48c8eb8496 100644 --- a/packages/mask/src/plugins/Collectible/hooks/useAssetOrder.ts +++ b/packages/mask/src/plugins/Collectible/hooks/useAssetOrder.ts @@ -32,6 +32,8 @@ export function useAssetOrder(provider: NonFungibleAssetProvider, token?: Collec return case NonFungibleAssetProvider.NFTSCAN: return + case NonFungibleAssetProvider.AGORA: + return default: unreachable(provider) } diff --git a/packages/mask/src/plugins/Collectible/pipes/index.ts b/packages/mask/src/plugins/Collectible/pipes/index.ts index b8c9dabd7f80..50cb842026d9 100644 --- a/packages/mask/src/plugins/Collectible/pipes/index.ts +++ b/packages/mask/src/plugins/Collectible/pipes/index.ts @@ -88,6 +88,13 @@ export const resolveLinkOnRarible = createLookupTableResolver( 'https://rarible.com', ) +export const resolveLinkOnAgora = createLookupTableResolver( + { + [ChainId.Cronos]: 'https://agoracro.com/', + }, + 'https://agoracro.com/', +) + export function resolveTraitLinkOnOpenSea(chainId: ChainId, slug: string, search: string, value: string) { if (chainId === ChainId.Rinkeby) { return `https://testnets.opensea.io/assets/${slug}?search[stringTraits][0][name]=${search}&search[stringTraits][0][values][0]=${value}` @@ -109,6 +116,8 @@ export function resolveAssetLinkOnCurrentProvider( return urlcat(resolveLinkOnRarible(chainId), '/token/:address/:id', { address, id }) case NonFungibleAssetProvider.NFTSCAN: return '' + case NonFungibleAssetProvider.AGORA: + return '' default: return '' } @@ -140,6 +149,8 @@ export function resolveAvatarLinkOnCurrentProvider(chainId: ChainId, asset: any, return urlcat(resolveLinkOnRarible(chainId), `/collection/${asset.token_address ?? ''}`) case NonFungibleAssetProvider.NFTSCAN: return '' + case NonFungibleAssetProvider.AGORA: + return '' default: return '' } diff --git a/packages/mask/src/plugins/EVM/assets/agoracro.png b/packages/mask/src/plugins/EVM/assets/agoracro.png new file mode 100644 index 000000000000..342782ac48b8 Binary files /dev/null and b/packages/mask/src/plugins/EVM/assets/agoracro.png differ diff --git a/packages/mask/src/plugins/EVM/assets/cronos.png b/packages/mask/src/plugins/EVM/assets/cronos.png new file mode 100644 index 000000000000..d9a7c1442ee2 Binary files /dev/null and b/packages/mask/src/plugins/EVM/assets/cronos.png differ diff --git a/packages/mask/src/plugins/EVM/constants.ts b/packages/mask/src/plugins/EVM/constants.ts index c49be1afb4b8..9c5559393381 100644 --- a/packages/mask/src/plugins/EVM/constants.ts +++ b/packages/mask/src/plugins/EVM/constants.ts @@ -167,6 +167,16 @@ export const PLUGIN_NETWORKS: Web3Plugin.NetworkDescriptor[] = [ iconColor: 'rgb(112, 212, 74)', isMainnet: true, }, + { + ID: `${PLUGIN_ID}_cronos`, + networkSupporterPluginID: PLUGIN_ID, + chainId: ChainId.Cronos, + type: NetworkType.Cronos, + name: 'Aurora', + icon: new URL('./assets/cronos.png', import.meta.url), + iconColor: 'rgb(6, 18, 34)', + isMainnet: true, + }, ] export const PLUGIN_PROVIDERS: Web3Plugin.ProviderDescriptor[] = [ { diff --git a/packages/mask/src/plugins/EVM/services/Asset/index.ts b/packages/mask/src/plugins/EVM/services/Asset/index.ts index 272066f1ba89..ab17dd2aebec 100644 --- a/packages/mask/src/plugins/EVM/services/Asset/index.ts +++ b/packages/mask/src/plugins/EVM/services/Asset/index.ts @@ -56,6 +56,8 @@ export async function getAsset(options: AssetOption) { return case NonFungibleAssetProvider.RARIBLE: return Rarible.getAsset(options.address, options.tokenId, { chainId: options.chainId }) + case NonFungibleAssetProvider.AGORA: + return Rarible.getAsset(options.address, options.tokenId, { chainId: options.chainId }) default: unreachable(options.provider) } @@ -74,6 +76,8 @@ export async function getOrders(options: OrderOption) { return [] case NonFungibleAssetProvider.RARIBLE: return Rarible.getOrders(address, tokenId, side, { chainId }) + case NonFungibleAssetProvider.AGORA: + return Rarible.getOrders(address, tokenId, side, { chainId }) default: unreachable(provider) } @@ -88,6 +92,8 @@ export async function getListings(options: ListOption) { return [] case NonFungibleAssetProvider.RARIBLE: return Rarible.getListings(address, tokenId, { chainId }) + case NonFungibleAssetProvider.AGORA: + return Rarible.getListings(address, tokenId, { chainId }) default: unreachable(provider) } @@ -102,6 +108,8 @@ export async function getHistory(options: HistoryOption) { return [] case NonFungibleAssetProvider.RARIBLE: return Rarible.getHistory(address, tokenId) + case NonFungibleAssetProvider.AGORA: + return Rarible.getHistory(address, tokenId) default: unreachable(provider) } @@ -116,6 +124,8 @@ export async function getCollections(options: CollectionOption) { return defaultPageableData case NonFungibleAssetProvider.NFTSCAN: return defaultPageableData + case NonFungibleAssetProvider.AGORA: + return defaultPageableData default: unreachable(provider) } diff --git a/packages/mask/src/plugins/EVM/services/NFT/index.ts b/packages/mask/src/plugins/EVM/services/NFT/index.ts index 11bf09b1d6dc..b41841e1f9cc 100644 --- a/packages/mask/src/plugins/EVM/services/NFT/index.ts +++ b/packages/mask/src/plugins/EVM/services/NFT/index.ts @@ -39,6 +39,8 @@ export async function getNFT(options: NFTOption) { return NFTScan.getToken(address, tokenId) case NonFungibleAssetProvider.RARIBLE: return Rarible.getToken(address, tokenId) + case NonFungibleAssetProvider.AGORA: + return Rarible.getToken(address, tokenId) default: unreachable(provider) } @@ -50,6 +52,7 @@ export async function getNFTBalance(options: BalanceOption) { case NonFungibleAssetProvider.RARIBLE: case NonFungibleAssetProvider.OPENSEA: case NonFungibleAssetProvider.NFTSCAN: + case NonFungibleAssetProvider.AGORA: return NFTScan.getContractBalance(address) default: @@ -62,6 +65,7 @@ export async function getNFTContract(options: ContractOption) { switch (provider) { case NonFungibleAssetProvider.OPENSEA: case NonFungibleAssetProvider.NFTSCAN: + case NonFungibleAssetProvider.AGORA: return OpenSea.getContract(contractAddress, chainId) case NonFungibleAssetProvider.RARIBLE: return @@ -79,6 +83,8 @@ export async function getNFTsByPagination(options: NFTsByPaginationOption) { return NFTScan.getTokens(from, options) case NonFungibleAssetProvider.RARIBLE: return Rarible.getTokens(from, options) + case NonFungibleAssetProvider.AGORA: + return Rarible.getTokens(from, options) default: unreachable(provider) } diff --git a/packages/mask/src/plugins/ITO/base.ts b/packages/mask/src/plugins/ITO/base.ts index eceee4b13b46..ef0830e0e36b 100644 --- a/packages/mask/src/plugins/ITO/base.ts +++ b/packages/mask/src/plugins/ITO/base.ts @@ -25,6 +25,7 @@ export const base: Plugin.Shared.Definition = { ChainId.Aurora, ChainId.Avalanche, ChainId.Fantom, + ChainId.Cronos, ], }, }, diff --git a/packages/mask/src/plugins/RedPacket/base.ts b/packages/mask/src/plugins/RedPacket/base.ts index 5be12ed3fc1b..4d108acd251c 100644 --- a/packages/mask/src/plugins/RedPacket/base.ts +++ b/packages/mask/src/plugins/RedPacket/base.ts @@ -26,6 +26,7 @@ export const base: Plugin.Shared.Definition = { ChainId.Fantom, ChainId.Avalanche, ChainId.Aurora, + ChainId.Cronos, ], }, }, diff --git a/packages/mask/src/plugins/Trader/apis/trader/index.ts b/packages/mask/src/plugins/Trader/apis/trader/index.ts index 3e562ea63401..d4b50f282661 100644 --- a/packages/mask/src/plugins/Trader/apis/trader/index.ts +++ b/packages/mask/src/plugins/Trader/apis/trader/index.ts @@ -50,6 +50,8 @@ export async function getAvailableTraderProviders(chainId: ChainId) { return [TradeProvider.SUSHISWAP] case NetworkType.Aurora: return [TradeProvider.DODO, TradeProvider.WANNASWAP, TradeProvider.TRISOLARIS] + case NetworkType.Cronos: + return [TradeProvider.VVSFINANCE, TradeProvider.SMOLSWAP, TradeProvider.MMFINANCE, TradeProvider.CRONASWAP] case NetworkType.Boba: case NetworkType.Fuse: case NetworkType.Metis: diff --git a/packages/mask/src/plugins/Trader/base.ts b/packages/mask/src/plugins/Trader/base.ts index 2c575a7ae707..fd03c270e483 100644 --- a/packages/mask/src/plugins/Trader/base.ts +++ b/packages/mask/src/plugins/Trader/base.ts @@ -23,6 +23,7 @@ export const base: Plugin.Shared.Definition = { ChainId.Aurora, ChainId.Avalanche, ChainId.Fantom, + ChainId.Cronos, ], }, }, diff --git a/packages/mask/src/plugins/Trader/constants/0x.ts b/packages/mask/src/plugins/Trader/constants/0x.ts index 06be52d5c29f..c4a0b81a7ad4 100644 --- a/packages/mask/src/plugins/Trader/constants/0x.ts +++ b/packages/mask/src/plugins/Trader/constants/0x.ts @@ -14,6 +14,7 @@ export const ZRX_BASE_URL: Record = { [NetworkType.Fuse]: '', [NetworkType.Metis]: '', [NetworkType.Optimistic]: '', + [NetworkType.Cronos]: '', } export const ZRX_AFFILIATE_ADDRESS = '0x934B510D4C9103E6a87AEf13b816fb080286D649' diff --git a/packages/mask/src/plugins/Trader/constants/cronaswap.ts b/packages/mask/src/plugins/Trader/constants/cronaswap.ts new file mode 100644 index 000000000000..c94dbdbfc0db --- /dev/null +++ b/packages/mask/src/plugins/Trader/constants/cronaswap.ts @@ -0,0 +1,14 @@ +import { ChainId } from '@masknet/web3-shared-evm' +import { DAI, USDC, USDT, WBTC, SMOL, WNATIVE, WNATIVE_ONLY } from './trader' +import type { ERC20AgainstToken, ERC20TokenCustomizedBase } from './types' + +/** + * Some tokens can only be swapped via certain pairs, + * so we override the list of bases that are considered for these tokens. + */ +export const CRONASWAP_CUSTOM_BASES: ERC20TokenCustomizedBase = {} + +export const CRONASWAP_BASE_AGAINST_TOKENS: ERC20AgainstToken = { + ...WNATIVE_ONLY, + [ChainId.Cronos]: [WNATIVE, SMOL, DAI, USDT, USDC, WBTC].map((x) => x[ChainId.Cronos]), +} diff --git a/packages/mask/src/plugins/Trader/constants/dodo.ts b/packages/mask/src/plugins/Trader/constants/dodo.ts index 7996fe13525e..413fd964d08d 100644 --- a/packages/mask/src/plugins/Trader/constants/dodo.ts +++ b/packages/mask/src/plugins/Trader/constants/dodo.ts @@ -16,4 +16,5 @@ export const networkNames: Record = { [NetworkType.Fuse]: '', [NetworkType.Metis]: '', [NetworkType.Optimistic]: '', + [NetworkType.Cronos]: '', } diff --git a/packages/mask/src/plugins/Trader/constants/index.ts b/packages/mask/src/plugins/Trader/constants/index.ts index 7cde5749d988..2e40ad686b7a 100644 --- a/packages/mask/src/plugins/Trader/constants/index.ts +++ b/packages/mask/src/plugins/Trader/constants/index.ts @@ -13,4 +13,8 @@ export * from './traderjoe' export * from './pangolindex' export * from './wannaswap' export * from './trisolaris' +export * from './vvsfinance' +export * from './mmfinance' +export * from './cronaswap' +export * from './smolswap' export type { ERC20TokenCustomizedBase, ERC20AgainstToken } from './types' diff --git a/packages/mask/src/plugins/Trader/constants/mmfinance.ts b/packages/mask/src/plugins/Trader/constants/mmfinance.ts new file mode 100644 index 000000000000..9fe6189b3641 --- /dev/null +++ b/packages/mask/src/plugins/Trader/constants/mmfinance.ts @@ -0,0 +1,14 @@ +import { ChainId } from '@masknet/web3-shared-evm' +import { DAI, USDC, USDT, WBTC, MMF, WNATIVE, WNATIVE_ONLY } from './trader' +import type { ERC20AgainstToken, ERC20TokenCustomizedBase } from './types' + +/** + * Some tokens can only be swapped via certain pairs, + * so we override the list of bases that are considered for these tokens. + */ +export const MMFINANCE_CUSTOM_BASES: ERC20TokenCustomizedBase = {} + +export const MMFINANCE_BASE_AGAINST_TOKENS: ERC20AgainstToken = { + ...WNATIVE_ONLY, + [ChainId.Cronos]: [WNATIVE, MMF, DAI, USDT, USDC, WBTC].map((x) => x[ChainId.Cronos]), +} diff --git a/packages/mask/src/plugins/Trader/constants/openocean.ts b/packages/mask/src/plugins/Trader/constants/openocean.ts index 862e158999b1..3d86c44ef972 100644 --- a/packages/mask/src/plugins/Trader/constants/openocean.ts +++ b/packages/mask/src/plugins/Trader/constants/openocean.ts @@ -16,4 +16,5 @@ export const networkNames: Record = { [NetworkType.Fuse]: '', [NetworkType.Metis]: '', [NetworkType.Optimistic]: '', + [NetworkType.Cronos]: '', } diff --git a/packages/mask/src/plugins/Trader/constants/smolswap.ts b/packages/mask/src/plugins/Trader/constants/smolswap.ts new file mode 100644 index 000000000000..52bf402a8688 --- /dev/null +++ b/packages/mask/src/plugins/Trader/constants/smolswap.ts @@ -0,0 +1,14 @@ +import { ChainId } from '@masknet/web3-shared-evm' +import { DAI, USDC, USDT, WBTC, SMOL, WNATIVE, WNATIVE_ONLY } from './trader' +import type { ERC20AgainstToken, ERC20TokenCustomizedBase } from './types' + +/** + * Some tokens can only be swapped via certain pairs, + * so we override the list of bases that are considered for these tokens. + */ +export const SMOLSWAP_CUSTOM_BASES: ERC20TokenCustomizedBase = {} + +export const SMOLSWAP_BASE_AGAINST_TOKENS: ERC20AgainstToken = { + ...WNATIVE_ONLY, + [ChainId.Cronos]: [WNATIVE, SMOL, DAI, USDT, USDC, WBTC].map((x) => x[ChainId.Cronos]), +} diff --git a/packages/mask/src/plugins/Trader/constants/trader.ts b/packages/mask/src/plugins/Trader/constants/trader.ts index 6f8cdc2d5594..8ee7f3e25a62 100644 --- a/packages/mask/src/plugins/Trader/constants/trader.ts +++ b/packages/mask/src/plugins/Trader/constants/trader.ts @@ -50,6 +50,10 @@ export const CUSD = createERC20Tokens('cUSD_ADDRESS', 'Celo Dollar', 'cUSD', 18) export const CEUR = createERC20Tokens('cEUR_ADDRESS', 'Celo Euro', 'cEUR', 18) export const JOE = createERC20Tokens('JOE_ADDRESS', 'JoeToken', 'JOE', 18) export const PNG = createERC20Tokens('PNG_ADDRESS', 'Pangolin', 'PNG', 18) +export const VVS = createERC20Tokens('VVS_ADDRESS', 'VVSToken', 'VVS', 18) +export const SMOL = createERC20Tokens('SMOL_ADDRESS', 'SmolSwap', 'Smol', 18) +export const MMF = createERC20Tokens('MMF_ADDRESS', 'Mad Meerkat Finance', 'MMF', 18) +export const CRONA = createERC20Tokens('CRONA_ADDRESS', 'CronaSwap Token', 'CRONA', 18) export const WNATIVE = createERC20Tokens( 'WNATIVE_ADDRESS', @@ -77,6 +81,7 @@ export const WNATIVE_ONLY: ERC20AgainstToken = { [ChainId.Fantom]: [WNATIVE[ChainId.Fantom]], [ChainId.Aurora]: [WNATIVE[ChainId.Aurora]], [ChainId.Aurora_Testnet]: [WNATIVE[ChainId.Aurora_Testnet]], + [ChainId.Cronos]: [WNATIVE[ChainId.Cronos]], } export const BIPS_BASE = new BigNumber(10000) diff --git a/packages/mask/src/plugins/Trader/constants/vvsfinance.ts b/packages/mask/src/plugins/Trader/constants/vvsfinance.ts new file mode 100644 index 000000000000..8e634dadfa75 --- /dev/null +++ b/packages/mask/src/plugins/Trader/constants/vvsfinance.ts @@ -0,0 +1,14 @@ +import { ChainId } from '@masknet/web3-shared-evm' +import { DAI, USDC, USDT, WBTC, VVS, WNATIVE, WNATIVE_ONLY } from './trader' +import type { ERC20AgainstToken, ERC20TokenCustomizedBase } from './types' + +/** + * Some tokens can only be swapped via certain pairs, + * so we override the list of bases that are considered for these tokens. + */ +export const VVSFINANCE_CUSTOM_BASES: ERC20TokenCustomizedBase = {} + +export const VVSFINANCE_BASE_AGAINST_TOKENS: ERC20AgainstToken = { + ...WNATIVE_ONLY, + [ChainId.Cronos]: [WNATIVE, VVS, DAI, USDT, USDC, WBTC].map((x) => x[ChainId.Cronos]), +} diff --git a/packages/mask/src/plugins/Trader/pipes.ts b/packages/mask/src/plugins/Trader/pipes.ts index c5fa9424b3c1..dc2233cf2ba3 100644 --- a/packages/mask/src/plugins/Trader/pipes.ts +++ b/packages/mask/src/plugins/Trader/pipes.ts @@ -40,6 +40,8 @@ export const resolveTradeProviderName = createLookupTableResolver { throw new Error(`Unknown provider type: ${tradeProvider}`) diff --git a/packages/mask/src/plugins/Trader/trader/0x/useTrade.ts b/packages/mask/src/plugins/Trader/trader/0x/useTrade.ts index b6c224570cd2..cdfe58a89e6d 100644 --- a/packages/mask/src/plugins/Trader/trader/0x/useTrade.ts +++ b/packages/mask/src/plugins/Trader/trader/0x/useTrade.ts @@ -34,6 +34,7 @@ export function getNativeTokenLabel(networkType: NetworkType) { case NetworkType.Metis: case NetworkType.Avalanche: case NetworkType.Optimistic: + case NetworkType.Cronos: return NATIVE_TOKEN_ADDRESS default: safeUnreachable(networkType) diff --git a/packages/mask/src/plugins/Trader/trader/useAllTradeComputed.ts b/packages/mask/src/plugins/Trader/trader/useAllTradeComputed.ts index 085da9903ab5..1f41124ebd91 100644 --- a/packages/mask/src/plugins/Trader/trader/useAllTradeComputed.ts +++ b/packages/mask/src/plugins/Trader/trader/useAllTradeComputed.ts @@ -247,6 +247,54 @@ export function useAllTradeComputed( const wannaswap = useUniswapTradeComputed(wannaswap_.value, inputToken, outputToken) const wannaSwapEstimateGas = useUniswapTradeGasLimit(wannaswap, TradeProvider.WANNASWAP) + // Vvsfinance + const vvsfinance_ = useUniswapV2Trade( + TradeProvider.VVSFINANCE, + TradeStrategy.ExactIn, + inputAmount_, + '0', + tradeProviders.some((x) => x === TradeProvider.VVSFINANCE) ? inputToken : undefined, + tradeProviders.some((x) => x === TradeProvider.VVSFINANCE) ? outputToken : undefined, + ) + const vvsfinance = useUniswapTradeComputed(vvsfinance_.value, inputToken, outputToken) + const vvsfinanceEstimateGas = useUniswapTradeGasLimit(vvsfinance, TradeProvider.VVSFINANCE) + + // SmolSwap + const smolswap_ = useUniswapV2Trade( + TradeProvider.SMOLSWAP, + TradeStrategy.ExactIn, + inputAmount_, + '0', + tradeProviders.some((x) => x === TradeProvider.SMOLSWAP) ? inputToken : undefined, + tradeProviders.some((x) => x === TradeProvider.SMOLSWAP) ? outputToken : undefined, + ) + const smolswap = useUniswapTradeComputed(smolswap_.value, inputToken, outputToken) + const smolswapEstimateGas = useUniswapTradeGasLimit(smolswap, TradeProvider.SMOLSWAP) + + // MM finance + const mmfinance_ = useUniswapV2Trade( + TradeProvider.MMFINANCE, + TradeStrategy.ExactIn, + inputAmount_, + '0', + tradeProviders.some((x) => x === TradeProvider.MMFINANCE) ? inputToken : undefined, + tradeProviders.some((x) => x === TradeProvider.MMFINANCE) ? outputToken : undefined, + ) + const mmfinance = useUniswapTradeComputed(mmfinance_.value, inputToken, outputToken) + const mmfinanceEstimateGas = useUniswapTradeGasLimit(mmfinance, TradeProvider.MMFINANCE) + + // CronaSwap + const cronaswap_ = useUniswapV2Trade( + TradeProvider.CRONASWAP, + TradeStrategy.ExactIn, + inputAmount_, + '0', + tradeProviders.some((x) => x === TradeProvider.CRONASWAP) ? inputToken : undefined, + tradeProviders.some((x) => x === TradeProvider.CRONASWAP) ? outputToken : undefined, + ) + const cronaswap = useUniswapTradeComputed(cronaswap_.value, inputToken, outputToken) + const cronaswapEstimateGas = useUniswapTradeGasLimit(cronaswap, TradeProvider.MMFINANCE) + const allTradeResult = [ { provider: TradeProvider.UNISWAP_V2, ...uniswapV2_, value: uniswapV2, gas: uniswapV2EstimateGas }, { provider: TradeProvider.SUSHISWAP, ...sushiSwap_, value: sushiSwap, gas: sushiSwapEstimateGas }, @@ -263,6 +311,10 @@ export function useAllTradeComputed( { provider: TradeProvider.OPENOCEAN, ...openocean_, value: openocean, gas: openoceanSwapEstimateGas }, { provider: TradeProvider.WANNASWAP, ...wannaswap_, value: wannaswap, gas: wannaSwapEstimateGas }, { provider: TradeProvider.TRISOLARIS, ...trisolaris_, value: trisolaris, gas: trisolarisEstimateGas }, + { provider: TradeProvider.VVSFINANCE, ...vvsfinance_, value: vvsfinance, gas: vvsfinanceEstimateGas }, + { provider: TradeProvider.CRONASWAP, ...cronaswap_, value: cronaswap, gas: cronaswapEstimateGas }, + { provider: TradeProvider.MMFINANCE, ...mmfinance_, value: mmfinance, gas: mmfinanceEstimateGas }, + { provider: TradeProvider.SMOLSWAP, ...smolswap_, value: smolswap, gas: smolswapEstimateGas }, ] return nativeToken_.value diff --git a/packages/mask/src/plugins/Trader/trader/useGetTradeContext.ts b/packages/mask/src/plugins/Trader/trader/useGetTradeContext.ts index 77533cc926e2..27aa50134812 100644 --- a/packages/mask/src/plugins/Trader/trader/useGetTradeContext.ts +++ b/packages/mask/src/plugins/Trader/trader/useGetTradeContext.ts @@ -21,6 +21,14 @@ import { WANNASWAP_CUSTOM_BASES, TRISOLARIS_BASE_AGAINST_TOKENS, TRISOLARIS_CUSTOM_BASES, + VVSFINANCE_BASE_AGAINST_TOKENS, + VVSFINANCE_CUSTOM_BASES, + SMOLSWAP_BASE_AGAINST_TOKENS, + SMOLSWAP_CUSTOM_BASES, + CRONASWAP_BASE_AGAINST_TOKENS, + CRONASWAP_CUSTOM_BASES, + MMFINANCE_BASE_AGAINST_TOKENS, + MMFINANCE_CUSTOM_BASES, } from '../constants' import { unreachable } from '@dimensiondev/kit' import { TargetChainIdContext } from './useTargetChainIdContext' @@ -150,6 +158,54 @@ export function useGetTradeContext(tradeProvider?: TradeProvider) { ADDITIONAL_TOKENS: {}, CUSTOM_TOKENS: TRISOLARIS_CUSTOM_BASES, } + case TradeProvider.VVSFINANCE: + return { + TYPE: tradeProvider, + IS_UNISWAP_V2_LIKE: true, + GRAPH_API: DEX_TRADE.VVSFINANCE_THEGRAPH, + INIT_CODE_HASH: DEX_TRADE.VVSFINANCE_INIT_CODE_HASH, + ROUTER_CONTRACT_ADDRESS: DEX_TRADE.VVSFINANCE_ROUTER_ADDRESS, + FACTORY_CONTRACT_ADDRESS: DEX_TRADE.VVSFINANCE_FACTORY_ADDRESS, + AGAINST_TOKENS: VVSFINANCE_BASE_AGAINST_TOKENS, + ADDITIONAL_TOKENS: {}, + CUSTOM_TOKENS: VVSFINANCE_CUSTOM_BASES, + } + case TradeProvider.CRONASWAP: + return { + TYPE: tradeProvider, + IS_UNISWAP_V2_LIKE: true, + GRAPH_API: DEX_TRADE.CRONASWAP_THEGRAPH, + INIT_CODE_HASH: DEX_TRADE.CRONASWAP_INIT_CODE_HASH, + ROUTER_CONTRACT_ADDRESS: DEX_TRADE.CRONASWAP_ROUTER_ADDRESS, + FACTORY_CONTRACT_ADDRESS: DEX_TRADE.CRONASWAP_FACTORY_ADDRESS, + AGAINST_TOKENS: CRONASWAP_BASE_AGAINST_TOKENS, + ADDITIONAL_TOKENS: {}, + CUSTOM_TOKENS: CRONASWAP_CUSTOM_BASES, + } + case TradeProvider.SMOLSWAP: + return { + TYPE: tradeProvider, + IS_UNISWAP_V2_LIKE: true, + GRAPH_API: DEX_TRADE.SMOLSWAP_THEGRAPH, + INIT_CODE_HASH: DEX_TRADE.SMOLSWAP_INIT_CODE_HASH, + ROUTER_CONTRACT_ADDRESS: DEX_TRADE.SMOLSWAP_ROUTER_ADDRESS, + FACTORY_CONTRACT_ADDRESS: DEX_TRADE.SMOLSWAP_FACTORY_ADDRESS, + AGAINST_TOKENS: SMOLSWAP_BASE_AGAINST_TOKENS, + ADDITIONAL_TOKENS: {}, + CUSTOM_TOKENS: SMOLSWAP_CUSTOM_BASES, + } + case TradeProvider.MMFINANCE: + return { + TYPE: tradeProvider, + IS_UNISWAP_V2_LIKE: true, + GRAPH_API: DEX_TRADE.MMFINANCE_THEGRAPH, + INIT_CODE_HASH: DEX_TRADE.MMFINANCE_INIT_CODE_HASH, + ROUTER_CONTRACT_ADDRESS: DEX_TRADE.MMFINANCE_ROUTER_ADDRESS, + FACTORY_CONTRACT_ADDRESS: DEX_TRADE.MMFINANCE_FACTORY_ADDRESS, + AGAINST_TOKENS: MMFINANCE_BASE_AGAINST_TOKENS, + ADDITIONAL_TOKENS: {}, + CUSTOM_TOKENS: MMFINANCE_CUSTOM_BASES, + } case TradeProvider.ZRX: return { TYPE: tradeProvider, diff --git a/packages/mask/src/plugins/Trader/trader/useTradeCallback.ts b/packages/mask/src/plugins/Trader/trader/useTradeCallback.ts index c678a4013af9..7f4badaa93f1 100644 --- a/packages/mask/src/plugins/Trader/trader/useTradeCallback.ts +++ b/packages/mask/src/plugins/Trader/trader/useTradeCallback.ts @@ -100,6 +100,14 @@ export function useTradeCallback( return uniswapV2Like case TradeProvider.TRISOLARIS: return uniswapV2Like + case TradeProvider.VVSFINANCE: + return uniswapV2Like + case TradeProvider.SMOLSWAP: + return uniswapV2Like + case TradeProvider.MMFINANCE: + return uniswapV2Like + case TradeProvider.CRONASWAP: + return uniswapV2Like case TradeProvider.ZRX: return zrx case TradeProvider.BALANCER: diff --git a/packages/mask/src/plugins/Trader/trader/useTradeContext.ts b/packages/mask/src/plugins/Trader/trader/useTradeContext.ts index 3db649333430..948051bd6e76 100644 --- a/packages/mask/src/plugins/Trader/trader/useTradeContext.ts +++ b/packages/mask/src/plugins/Trader/trader/useTradeContext.ts @@ -21,6 +21,14 @@ import { WANNASWAP_CUSTOM_BASES, TRISOLARIS_CUSTOM_BASES, TRISOLARIS_BASE_AGAINST_TOKENS, + VVSFINANCE_CUSTOM_BASES, + VVSFINANCE_BASE_AGAINST_TOKENS, + CRONASWAP_BASE_AGAINST_TOKENS, + CRONASWAP_CUSTOM_BASES, + MMFINANCE_BASE_AGAINST_TOKENS, + MMFINANCE_CUSTOM_BASES, + SMOLSWAP_BASE_AGAINST_TOKENS, + SMOLSWAP_CUSTOM_BASES, } from '../constants' import type { TradeContext as TradeContext_ } from '../types' import { TargetChainIdContext } from './useTargetChainIdContext' @@ -128,6 +136,54 @@ export function useTradeContext(tradeProvider: TradeProvider) { ADDITIONAL_TOKENS: {}, CUSTOM_TOKENS: TRISOLARIS_CUSTOM_BASES, } + case TradeProvider.VVSFINANCE: + return { + TYPE: tradeProvider, + IS_UNISWAP_V2_LIKE: true, + GRAPH_API: DEX_TRADE.VVSFINANCE_THEGRAPH, + INIT_CODE_HASH: DEX_TRADE.VVSFINANCE_INIT_CODE_HASH, + ROUTER_CONTRACT_ADDRESS: DEX_TRADE.VVSFINANCE_ROUTER_ADDRESS, + FACTORY_CONTRACT_ADDRESS: DEX_TRADE.VVSFINANCE_FACTORY_ADDRESS, + AGAINST_TOKENS: VVSFINANCE_BASE_AGAINST_TOKENS, + ADDITIONAL_TOKENS: {}, + CUSTOM_TOKENS: VVSFINANCE_CUSTOM_BASES, + } + case TradeProvider.SMOLSWAP: + return { + TYPE: tradeProvider, + IS_UNISWAP_V2_LIKE: true, + GRAPH_API: DEX_TRADE.SMOLSWAP_THEGRAPH, + INIT_CODE_HASH: DEX_TRADE.SMOLSWAP_INIT_CODE_HASH, + ROUTER_CONTRACT_ADDRESS: DEX_TRADE.SMOLSWAP_ROUTER_ADDRESS, + FACTORY_CONTRACT_ADDRESS: DEX_TRADE.SMOLSWAP_FACTORY_ADDRESS, + AGAINST_TOKENS: SMOLSWAP_BASE_AGAINST_TOKENS, + ADDITIONAL_TOKENS: {}, + CUSTOM_TOKENS: SMOLSWAP_CUSTOM_BASES, + } + case TradeProvider.CRONASWAP: + return { + TYPE: tradeProvider, + IS_UNISWAP_V2_LIKE: true, + GRAPH_API: DEX_TRADE.CRONASWAP_THEGRAPH, + INIT_CODE_HASH: DEX_TRADE.CRONASWAP_INIT_CODE_HASH, + ROUTER_CONTRACT_ADDRESS: DEX_TRADE.CRONASWAP_ROUTER_ADDRESS, + FACTORY_CONTRACT_ADDRESS: DEX_TRADE.CRONASWAP_FACTORY_ADDRESS, + AGAINST_TOKENS: CRONASWAP_BASE_AGAINST_TOKENS, + ADDITIONAL_TOKENS: {}, + CUSTOM_TOKENS: CRONASWAP_CUSTOM_BASES, + } + case TradeProvider.MMFINANCE: + return { + TYPE: tradeProvider, + IS_UNISWAP_V2_LIKE: true, + GRAPH_API: DEX_TRADE.MMFINANCE_THEGRAPH, + INIT_CODE_HASH: DEX_TRADE.MMFINANCE_INIT_CODE_HASH, + ROUTER_CONTRACT_ADDRESS: DEX_TRADE.MMFINANCE_ROUTER_ADDRESS, + FACTORY_CONTRACT_ADDRESS: DEX_TRADE.MMFINANCE_FACTORY_ADDRESS, + AGAINST_TOKENS: MMFINANCE_BASE_AGAINST_TOKENS, + ADDITIONAL_TOKENS: {}, + CUSTOM_TOKENS: MMFINANCE_CUSTOM_BASES, + } case TradeProvider.ZRX: return { TYPE: tradeProvider, diff --git a/packages/mask/src/plugins/Trader/types/trader.ts b/packages/mask/src/plugins/Trader/types/trader.ts index fb0d655737ee..c5e9b6afc117 100644 --- a/packages/mask/src/plugins/Trader/types/trader.ts +++ b/packages/mask/src/plugins/Trader/types/trader.ts @@ -75,6 +75,10 @@ export enum ZrxTradePool { PangolinDex = 'PangolinDex', Trisolaris = 'Trisolaris', WannaSwap = 'WannaSwap', + Vvsfinance = 'Vvsfinance', + SmolSwap = 'SmolSwap', + Mmfinance = 'Mmfinance', + CronaSwap = 'CronaSwap', } export interface TradeComputed { diff --git a/packages/mask/src/plugins/Wallet/services/account.ts b/packages/mask/src/plugins/Wallet/services/account.ts index 2b3759fc6beb..df3284470201 100644 --- a/packages/mask/src/plugins/Wallet/services/account.ts +++ b/packages/mask/src/plugins/Wallet/services/account.ts @@ -128,5 +128,6 @@ export async function getSupportedNetworks() { Flags.fantom_enabled ? NetworkType.Fantom : undefined, Flags.avalanche_enabled ? NetworkType.Avalanche : undefined, Flags.aurora_enabled ? NetworkType.Aurora : undefined, + Flags.cronos_enabled ? NetworkType.Cronos : undefined, ].filter(Boolean) as NetworkType[] } diff --git a/packages/mask/src/resources/AgoraIcon.tsx b/packages/mask/src/resources/AgoraIcon.tsx new file mode 100644 index 000000000000..3d1a3314b48f --- /dev/null +++ b/packages/mask/src/resources/AgoraIcon.tsx @@ -0,0 +1,15 @@ +import { SvgIconProps, SvgIcon } from '@mui/material' + +const svg = ( + + + + +) + +export function AgoraIcon(props: SvgIconProps) { + return {svg} +} diff --git a/packages/mask/src/resources/agoracro.png b/packages/mask/src/resources/agoracro.png new file mode 100644 index 000000000000..342782ac48b8 Binary files /dev/null and b/packages/mask/src/resources/agoracro.png differ diff --git a/packages/public-api/src/web.ts b/packages/public-api/src/web.ts index fb4d55ad81ed..d35655c12eff 100644 --- a/packages/public-api/src/web.ts +++ b/packages/public-api/src/web.ts @@ -216,6 +216,10 @@ export enum TradeProvider { TRISOLARIS = 12, TRADERJOE = 13, PANGOLIN = 14, + VVSFINANCE = 15, + SMOLSWAP = 16, + MMFINANCE = 17, + CRONASWAP = 18, } /** Supported language settings */ export enum LanguageOptions { diff --git a/packages/web3-constants/evm/token.json b/packages/web3-constants/evm/token.json index f6fe2360d0d4..ed4feb0bd123 100644 --- a/packages/web3-constants/evm/token.json +++ b/packages/web3-constants/evm/token.json @@ -899,6 +899,86 @@ "Aurora": "", "Aurora_Testnet": "" }, + "VVS_ADDRESS": { + "Mainnet": "", + "Ropsten": "", + "Rinkeby": "", + "Kovan": "", + "Gorli": "", + "BSC": "", + "BSCT": "", + "Matic": "", + "Mumbai": "", + "Arbitrum": "", + "Arbitrum_Rinkeby": "", + "xDai": "", + "Avalanche": "0x60781C2586D68229fde47564546784ab3fACA982", + "Avalanche_Fuji": "", + "Celo": "", + "Fantom": "", + "Aurora": "", + "Aurora_Testnet": "" + }, + "SMOL_ADDRESS": { + "Mainnet": "", + "Ropsten": "", + "Rinkeby": "", + "Kovan": "", + "Gorli": "", + "BSC": "", + "BSCT": "", + "Matic": "", + "Mumbai": "", + "Arbitrum": "", + "Arbitrum_Rinkeby": "", + "xDai": "", + "Avalanche": "", + "Avalanche_Fuji": "", + "Celo": "", + "Fantom": "", + "Aurora": "", + "Aurora_Testnet": "" + }, + "MMF_ADDRESS": { + "Mainnet": "", + "Ropsten": "", + "Rinkeby": "", + "Kovan": "", + "Gorli": "", + "BSC": "", + "BSCT": "", + "Matic": "", + "Mumbai": "", + "Arbitrum": "", + "Arbitrum_Rinkeby": "", + "xDai": "", + "Avalanche": "", + "Avalanche_Fuji": "", + "Celo": "", + "Fantom": "", + "Aurora": "", + "Aurora_Testnet": "" + }, + "CRONA_ADDRESS": { + "Mainnet": "", + "Ropsten": "", + "Rinkeby": "", + "Kovan": "", + "Gorli": "", + "BSC": "", + "BSCT": "", + "Matic": "", + "Mumbai": "", + "Arbitrum": "", + "Arbitrum_Rinkeby": "", + "xDai": "", + "Avalanche": "", + "Avalanche_Fuji": "", + "Celo": "", + "Fantom": "", + "Aurora": "", + "Aurora_Testnet": "" + }, "ETHER_ADDRESS": { "Mainnet": "", "Ropsten": "", diff --git a/packages/web3-constants/evm/trader.json b/packages/web3-constants/evm/trader.json index b656354c3839..a380a691d8cb 100644 --- a/packages/web3-constants/evm/trader.json +++ b/packages/web3-constants/evm/trader.json @@ -1018,5 +1018,325 @@ "Fantom": "", "Aurora": "0x754e1d90e536e4c1df81b7f030f47b4ca80c87120e145c294f098c83a6cb5ace", "Aurora_Testnet": "" + }, + "VVSFINANCE_ROUTER_ADDRESS": { + "Mainnet": "", + "Ropsten": "", + "Rinkeby": "", + "Kovan": "", + "Gorli": "", + "BSC": "", + "BSCT": "", + "Matic": "", + "Mumbai": "", + "Arbitrum": "", + "Arbitrum_Rinkeby": "", + "xDai": "", + "Avalanche": "", + "Avalanche_Fuji": "", + "Celo": "", + "Fantom": "", + "Aurora": "", + "Aurora_Testnet": "" + }, + "VVSFINANCE_FACTORY_ADDRESS": { + "Mainnet": "", + "Ropsten": "", + "Rinkeby": "", + "Kovan": "", + "Gorli": "", + "BSC": "", + "BSCT": "", + "Matic": "", + "Mumbai": "", + "Arbitrum": "", + "Arbitrum_Rinkeby": "", + "xDai": "", + "Avalanche": "", + "Avalanche_Fuji": "", + "Celo": "", + "Fantom": "", + "Aurora": "", + "Aurora_Testnet": "" + }, + "VVSFINANCE_THEGRAPH": { + "Mainnet": "", + "Ropsten": "", + "Rinkeby": "", + "Kovan": "", + "Gorli": "", + "BSC": "", + "BSCT": "", + "Matic": "", + "Mumbai": "", + "Arbitrum": "", + "Arbitrum_Rinkeby": "", + "xDai": "", + "Avalanche": "", + "Avalanche_Fuji": "", + "Celo": "", + "Fantom": "", + "Aurora": "", + "Aurora_Testnet": "" + }, + "VVSFINANCE_INIT_CODE_HASH": { + "Mainnet": "", + "Ropsten": "", + "Rinkeby": "", + "Kovan": "", + "Gorli": "", + "BSC": "", + "BSCT": "", + "Matic": "", + "Mumbai": "", + "Arbitrum": "", + "Arbitrum_Rinkeby": "", + "xDai": "", + "Avalanche": "", + "Avalanche_Fuji": "", + "Celo": "", + "Fantom": "", + "Aurora": "", + "Aurora_Testnet": "" + }, + "SMOLSWAP_ROUTER_ADDRESS": { + "Mainnet": "", + "Ropsten": "", + "Rinkeby": "", + "Kovan": "", + "Gorli": "", + "BSC": "", + "BSCT": "", + "Matic": "", + "Mumbai": "", + "Arbitrum": "", + "Arbitrum_Rinkeby": "", + "xDai": "", + "Avalanche": "", + "Avalanche_Fuji": "", + "Celo": "", + "Fantom": "", + "Aurora": "", + "Aurora_Testnet": "" + }, + "SMOLSWAP_FACTORY_ADDRESS": { + "Mainnet": "", + "Ropsten": "", + "Rinkeby": "", + "Kovan": "", + "Gorli": "", + "BSC": "", + "BSCT": "", + "Matic": "", + "Mumbai": "", + "Arbitrum": "", + "Arbitrum_Rinkeby": "", + "xDai": "", + "Avalanche": "", + "Avalanche_Fuji": "", + "Celo": "", + "Fantom": "", + "Aurora": "", + "Aurora_Testnet": "" + }, + "SMOLSWAP_THEGRAPH": { + "Mainnet": "", + "Ropsten": "", + "Rinkeby": "", + "Kovan": "", + "Gorli": "", + "BSC": "", + "BSCT": "", + "Matic": "", + "Mumbai": "", + "Arbitrum": "", + "Arbitrum_Rinkeby": "", + "xDai": "", + "Avalanche": "", + "Avalanche_Fuji": "", + "Celo": "", + "Fantom": "", + "Aurora": "", + "Aurora_Testnet": "" + }, + "SMOLSWAP_INIT_CODE_HASH": { + "Mainnet": "", + "Ropsten": "", + "Rinkeby": "", + "Kovan": "", + "Gorli": "", + "BSC": "", + "BSCT": "", + "Matic": "", + "Mumbai": "", + "Arbitrum": "", + "Arbitrum_Rinkeby": "", + "xDai": "", + "Avalanche": "", + "Avalanche_Fuji": "", + "Celo": "", + "Fantom": "", + "Aurora": "", + "Aurora_Testnet": "" + }, + "CRONASWAP_ROUTER_ADDRESS": { + "Mainnet": "", + "Ropsten": "", + "Rinkeby": "", + "Kovan": "", + "Gorli": "", + "BSC": "", + "BSCT": "", + "Matic": "", + "Mumbai": "", + "Arbitrum": "", + "Arbitrum_Rinkeby": "", + "xDai": "", + "Avalanche": "", + "Avalanche_Fuji": "", + "Celo": "", + "Fantom": "", + "Aurora": "", + "Aurora_Testnet": "" + }, + "CRONASWAP_FACTORY_ADDRESS": { + "Mainnet": "", + "Ropsten": "", + "Rinkeby": "", + "Kovan": "", + "Gorli": "", + "BSC": "", + "BSCT": "", + "Matic": "", + "Mumbai": "", + "Arbitrum": "", + "Arbitrum_Rinkeby": "", + "xDai": "", + "Avalanche": "", + "Avalanche_Fuji": "", + "Celo": "", + "Fantom": "", + "Aurora": "", + "Aurora_Testnet": "" + }, + "CRONASWAP_THEGRAPH": { + "Mainnet": "", + "Ropsten": "", + "Rinkeby": "", + "Kovan": "", + "Gorli": "", + "BSC": "", + "BSCT": "", + "Matic": "", + "Mumbai": "", + "Arbitrum": "", + "Arbitrum_Rinkeby": "", + "xDai": "", + "Avalanche": "", + "Avalanche_Fuji": "", + "Celo": "", + "Fantom": "", + "Aurora": "", + "Aurora_Testnet": "" + }, + "CRONASWAP_INIT_CODE_HASH": { + "Mainnet": "", + "Ropsten": "", + "Rinkeby": "", + "Kovan": "", + "Gorli": "", + "BSC": "", + "BSCT": "", + "Matic": "", + "Mumbai": "", + "Arbitrum": "", + "Arbitrum_Rinkeby": "", + "xDai": "", + "Avalanche": "", + "Avalanche_Fuji": "", + "Celo": "", + "Fantom": "", + "Aurora": "", + "Aurora_Testnet": "" + }, + "MMFINANCE_ROUTER_ADDRESS": { + "Mainnet": "", + "Ropsten": "", + "Rinkeby": "", + "Kovan": "", + "Gorli": "", + "BSC": "", + "BSCT": "", + "Matic": "", + "Mumbai": "", + "Arbitrum": "", + "Arbitrum_Rinkeby": "", + "xDai": "", + "Avalanche": "", + "Avalanche_Fuji": "", + "Celo": "", + "Fantom": "", + "Aurora": "", + "Aurora_Testnet": "" + }, + "MMFINANCE_FACTORY_ADDRESS": { + "Mainnet": "", + "Ropsten": "", + "Rinkeby": "", + "Kovan": "", + "Gorli": "", + "BSC": "", + "BSCT": "", + "Matic": "", + "Mumbai": "", + "Arbitrum": "", + "Arbitrum_Rinkeby": "", + "xDai": "", + "Avalanche": "", + "Avalanche_Fuji": "", + "Celo": "", + "Fantom": "", + "Aurora": "", + "Aurora_Testnet": "" + }, + "MMFINANCE_THEGRAPH": { + "Mainnet": "", + "Ropsten": "", + "Rinkeby": "", + "Kovan": "", + "Gorli": "", + "BSC": "", + "BSCT": "", + "Matic": "", + "Mumbai": "", + "Arbitrum": "", + "Arbitrum_Rinkeby": "", + "xDai": "", + "Avalanche": "", + "Avalanche_Fuji": "", + "Celo": "", + "Fantom": "", + "Aurora": "", + "Aurora_Testnet": "" + }, + "MMFINANCE_INIT_CODE_HASH": { + "Mainnet": "", + "Ropsten": "", + "Rinkeby": "", + "Kovan": "", + "Gorli": "", + "BSC": "", + "BSCT": "", + "Matic": "", + "Mumbai": "", + "Arbitrum": "", + "Arbitrum_Rinkeby": "", + "xDai": "", + "Avalanche": "", + "Avalanche_Fuji": "", + "Celo": "", + "Fantom": "", + "Aurora": "", + "Aurora_Testnet": "" } } diff --git a/packages/web3-shared/evm/assets/chains.json b/packages/web3-shared/evm/assets/chains.json index 23f44392849e..a4c78e9eb868 100644 --- a/packages/web3-shared/evm/assets/chains.json +++ b/packages/web3-shared/evm/assets/chains.json @@ -1282,9 +1282,22 @@ "explorers": [{ "name": "kcc-scan", "url": "https://scan-testnet.kcc.network", "standard": "EIP3091" }] }, { - "name": "Lisinski", + "name": "Cronos Mainnet Beta", "chain": "CRO", "network": "mainnet", + "rpc": ["https://evm-cronos.crypto.org"], + "faucets": [], + "features": [], + "nativeCurrency": { "name": "Cronos", "symbol": "CRO", "decimals": 18 }, + "infoURL": "https://cronos.crypto.org/", + "shortName": "cro", + "chainId": 25, + "networkId": 25 + }, + { + "name": "Lisinski", + "chain": "LCRO", + "network": "mainnet", "rpc": ["https://rpc-bitfalls1.lisinski.online"], "faucets": ["https://pipa.lisinski.online"], "features": [], diff --git a/packages/web3-shared/evm/pipes/index.ts b/packages/web3-shared/evm/pipes/index.ts index 34a54a1a422b..a447bd1e5d88 100644 --- a/packages/web3-shared/evm/pipes/index.ts +++ b/packages/web3-shared/evm/pipes/index.ts @@ -96,6 +96,7 @@ export const resolveNetworkAddressPrefix = createLookupTableResolver [NetworkType.Celo]: 'Celo', [NetworkType.Fantom]: 'Fantom', [NetworkType.Aurora]: 'Aurora', + [NetworkType.Cronos]: 'Cronos', }, 'Unknown', ) @@ -145,6 +147,7 @@ export const resolveChainColor = createLookupTableResolver( [ChainId.Fantom]: 'rgb(19, 181, 236)', [ChainId.Aurora]: 'rgb(112, 212, 74)', [ChainId.Aurora_Testnet]: 'rgb(112, 212, 74)', + [ChainId.Cronos]: 'rgb(6, 18, 34)', }, 'rgb(214, 217, 220)', ) @@ -197,6 +200,8 @@ export function resolveCollectibleProviderLink(chainId: ChainId, provider: NonFu return 'https://rarible.com' case NonFungibleAssetProvider.NFTSCAN: return 'https://nftscan.com' + case NonFungibleAssetProvider.AGORA: + return 'https://agoracro.com/' default: unreachable(provider) } @@ -212,6 +217,8 @@ export function resolveCollectibleAssetLink(chainId: ChainId, provider: NonFungi return '' case NonFungibleAssetProvider.NFTSCAN: return '' + case NonFungibleAssetProvider.AGORA: + return '' default: unreachable(provider) } @@ -232,6 +239,8 @@ export function resolveCollectibleLink( return '' case NonFungibleAssetProvider.NFTSCAN: return '' + case NonFungibleAssetProvider.AGORA: + return '' default: unreachable(provider) } diff --git a/packages/web3-shared/evm/types/index.ts b/packages/web3-shared/evm/types/index.ts index 7840867421cc..06701d1531d2 100644 --- a/packages/web3-shared/evm/types/index.ts +++ b/packages/web3-shared/evm/types/index.ts @@ -78,6 +78,9 @@ export enum ChainId { // Optimistic Optimistic = 10, + + // Cronos + Cronos = 25, } export enum ProviderType { @@ -113,6 +116,7 @@ export enum NetworkType { Fuse = 'Fuse', Metis = 'Metis', Optimistic = 'Optimistic', + Cronos = 'Cronos', } export interface Wallet { @@ -583,6 +587,7 @@ export enum NonFungibleAssetProvider { OPENSEA = 'OpenSea', RARIBLE = 'Rarible', NFTSCAN = 'NFTScan', + AGORA = 'AGORA', } export type UnboxTransactionObject = T extends NonPayableTransactionObject diff --git a/packages/web3-shared/evm/utils/chainDetailed.ts b/packages/web3-shared/evm/utils/chainDetailed.ts index 1cceb01fa697..79fcb77c14f4 100644 --- a/packages/web3-shared/evm/utils/chainDetailed.ts +++ b/packages/web3-shared/evm/utils/chainDetailed.ts @@ -95,6 +95,7 @@ export const getChainIdFromNetworkType = createLookupTableResolver = { [NetworkType.Boba]: 'Boba', [NetworkType.Fuse]: 'Fuse', [NetworkType.Metis]: 'Metis', - [NetworkType.Optimistic]: 'Optimistic', + [NetworkType.Optimistic]: 'OP', + [NetworkType.Cronos]: 'CRO', } export function getNetworkTypeFromChainId(chainId: ChainId, value?: boolean) { const chainDetailed = getChainDetailed(chainId)