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)