Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions cspell.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
"adai",
"addrs",
"aeth",
"agoracro",
"amountstate",
"ampl",
"ampleforth",
Expand Down Expand Up @@ -62,6 +63,9 @@
"cooldown",
"corepack",
"counterparty",
"crona",
"cronaswap",
"cronos",
"cyberconnect",
"cyberlab",
"datas",
Expand Down Expand Up @@ -148,6 +152,7 @@
"millify",
"mintable",
"misoperation",
"mmfinance",
"monofont",
"monospace",
"mooniswap",
Expand Down Expand Up @@ -211,6 +216,8 @@
"shink",
"signup",
"sint",
"smol",
"smolswap",
"solana",
"sollet",
"steelblue",
Expand Down Expand Up @@ -250,6 +257,7 @@
"viet",
"viewbox",
"visualcompletion",
"vvsfinance",
"walletconnect",
"wannaswap",
"wault",
Expand Down
1 change: 1 addition & 0 deletions packages/mask/shared/flags.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
1 change: 1 addition & 0 deletions packages/mask/src/components/shared/ApplicationBoard.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,7 @@ const SUPPORTED_CHAIN_ID_LIST = [
ChainId.Fantom,
ChainId.Aurora,
ChainId.Avalanche,
ChainId.Cronos,
]

export interface MaskAppEntry {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,11 @@ const useStyles = makeStyles()({
height: 16,
verticalAlign: 'bottom',
},
agora: {
width: 16,
height: 16,
verticalAlign: 'bottom',
},
NFTScan: {
width: 16,
height: 16,
Expand All @@ -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
Expand All @@ -37,6 +43,8 @@ export function CollectibleProviderIcon(props: CollectibleProviderIconProps) {
return <OpenSeaIcon classes={{ root: classes.opensea }} viewBox="0 0 16 16" />
case NonFungibleAssetProvider.RARIBLE:
return <RaribleIcon classes={{ root: classes.rarible }} viewBox="0 0 16 16" />
case NonFungibleAssetProvider.AGORA:
return <img src={AgoraIcon} className={classes.agora} />
default:
unreachable(props.provider)
}
Expand Down
1 change: 1 addition & 0 deletions packages/mask/src/plugins/Collectible/base.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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+)/,
]),
},
}
2 changes: 2 additions & 0 deletions packages/mask/src/plugins/Collectible/hooks/useAssetOrder.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ export function useAssetOrder(provider: NonFungibleAssetProvider, token?: Collec
return
case NonFungibleAssetProvider.NFTSCAN:
return
case NonFungibleAssetProvider.AGORA:
return
default:
unreachable(provider)
}
Expand Down
11 changes: 11 additions & 0 deletions packages/mask/src/plugins/Collectible/pipes/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,13 @@ export const resolveLinkOnRarible = createLookupTableResolver<ChainId, string>(
'https://rarible.com',
)

export const resolveLinkOnAgora = createLookupTableResolver<ChainId, string>(
{
[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}`
Expand All @@ -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 ''
}
Expand Down Expand Up @@ -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 ''
}
Expand Down
Binary file added packages/mask/src/plugins/EVM/assets/agoracro.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added packages/mask/src/plugins/EVM/assets/cronos.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
10 changes: 10 additions & 0 deletions packages/mask/src/plugins/EVM/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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[] = [
{
Expand Down
10 changes: 10 additions & 0 deletions packages/mask/src/plugins/EVM/services/Asset/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
Expand All @@ -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)
}
Expand All @@ -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)
}
Expand All @@ -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)
}
Expand All @@ -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)
}
Expand Down
6 changes: 6 additions & 0 deletions packages/mask/src/plugins/EVM/services/NFT/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
Expand All @@ -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:
Expand All @@ -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
Expand All @@ -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)
}
Expand Down
1 change: 1 addition & 0 deletions packages/mask/src/plugins/ITO/base.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ export const base: Plugin.Shared.Definition = {
ChainId.Aurora,
ChainId.Avalanche,
ChainId.Fantom,
ChainId.Cronos,
],
},
},
Expand Down
1 change: 1 addition & 0 deletions packages/mask/src/plugins/RedPacket/base.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ export const base: Plugin.Shared.Definition = {
ChainId.Fantom,
ChainId.Avalanche,
ChainId.Aurora,
ChainId.Cronos,
],
},
},
Expand Down
2 changes: 2 additions & 0 deletions packages/mask/src/plugins/Trader/apis/trader/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
1 change: 1 addition & 0 deletions packages/mask/src/plugins/Trader/base.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ export const base: Plugin.Shared.Definition = {
ChainId.Aurora,
ChainId.Avalanche,
ChainId.Fantom,
ChainId.Cronos,
],
},
},
Expand Down
1 change: 1 addition & 0 deletions packages/mask/src/plugins/Trader/constants/0x.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ export const ZRX_BASE_URL: Record<NetworkType, string> = {
[NetworkType.Fuse]: '',
[NetworkType.Metis]: '',
[NetworkType.Optimistic]: '',
[NetworkType.Cronos]: '',
}

export const ZRX_AFFILIATE_ADDRESS = '0x934B510D4C9103E6a87AEf13b816fb080286D649'
14 changes: 14 additions & 0 deletions packages/mask/src/plugins/Trader/constants/cronaswap.ts
Original file line number Diff line number Diff line change
@@ -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]),
}
1 change: 1 addition & 0 deletions packages/mask/src/plugins/Trader/constants/dodo.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,5 @@ export const networkNames: Record<NetworkType, string> = {
[NetworkType.Fuse]: '',
[NetworkType.Metis]: '',
[NetworkType.Optimistic]: '',
[NetworkType.Cronos]: '',
}
4 changes: 4 additions & 0 deletions packages/mask/src/plugins/Trader/constants/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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'
14 changes: 14 additions & 0 deletions packages/mask/src/plugins/Trader/constants/mmfinance.ts
Original file line number Diff line number Diff line change
@@ -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]),
}
1 change: 1 addition & 0 deletions packages/mask/src/plugins/Trader/constants/openocean.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,5 @@ export const networkNames: Record<NetworkType, string> = {
[NetworkType.Fuse]: '',
[NetworkType.Metis]: '',
[NetworkType.Optimistic]: '',
[NetworkType.Cronos]: '',
}
14 changes: 14 additions & 0 deletions packages/mask/src/plugins/Trader/constants/smolswap.ts
Original file line number Diff line number Diff line change
@@ -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]),
}
5 changes: 5 additions & 0 deletions packages/mask/src/plugins/Trader/constants/trader.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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',
Expand Down Expand Up @@ -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)
Expand Down
14 changes: 14 additions & 0 deletions packages/mask/src/plugins/Trader/constants/vvsfinance.ts
Original file line number Diff line number Diff line change
@@ -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]),
}
2 changes: 2 additions & 0 deletions packages/mask/src/plugins/Trader/pipes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@ export const resolveTradeProviderName = createLookupTableResolver<TradeProvider,
[TradeProvider.PANGOLIN]: 'PangolinDex',
[TradeProvider.TRISOLARIS]: 'Trisolaris',
[TradeProvider.WANNASWAP]: 'WannaSwap',
[TradeProvider.VVSFINANCE]: 'VvsFinance',
[TradeProvider.SMOLSWAP]: 'SmolSwap',
},
(tradeProvider) => {
throw new Error(`Unknown provider type: ${tradeProvider}`)
Expand Down
1 change: 1 addition & 0 deletions packages/mask/src/plugins/Trader/trader/0x/useTrade.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
Loading