Skip to content

Commit beb9173

Browse files
committed
feat(Metis): add Tethys DEX
1 parent 148c687 commit beb9173

File tree

20 files changed

+276
-104
lines changed

20 files changed

+276
-104
lines changed

cspell.json

Lines changed: 3 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@
111111
"jailbroken",
112112
"jsbi",
113113
"jsonml",
114+
"juicebox",
114115
"kdfparams",
115116
"keccak",
116117
"Kitts",
@@ -153,6 +154,7 @@
153154
"multihop",
154155
"Mutex",
155156
"NETSWAP",
157+
"NETT",
156158
"newsfeed",
157159
"NFTRSS",
158160
"nftscan",
@@ -248,29 +250,7 @@
248250
"xlarge",
249251
"xlink",
250252
"zerion",
251-
"Zubin",
252-
"Choudhary",
253-
"macbinary",
254-
"Choudhary",
255-
"counterparty",
256-
"jailbroken",
257-
"misoperation",
258-
"majeure",
259-
"Serializers",
260-
"Swither",
261-
"nftscan",
262-
"apikey",
263-
"tokenid",
264-
"NFTRSS",
265-
"solana",
266-
"Görli",
267-
"resizer",
268-
"Pageable",
269-
"metaverse",
270-
"hexlify",
271-
"contribs",
272-
"contrib",
273-
"juicebox"
253+
"Zubin"
274254
],
275255
"ignoreWords": [
276256
"cryptopunks",

packages/dashboard/src/pages/Labs/components/SwapSettingDialog.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ export default function SwapSettingDialog({ open, onClose }: SettingDialogProps)
6565
const metisOptions = [
6666
{ label: 'SushiSwap', value: TradeProvider.SUSHISWAP },
6767
{ label: 'NetSwap', value: TradeProvider.NETSWAP },
68+
{ label: 'Tethys', value: TradeProvider.TETHYS },
6869
]
6970

7071
const t = useDashboardI18N()

packages/mask/src/plugins/Trader/SNSAdaptor/trader/TradeProviderIcon.tsx

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import { resolveTradeProviderName } from '../../pipes'
1414

1515
const quickswapIcon = new URL('../../../../resources/quickswap.png', import.meta.url).toString()
1616
const pancakeswapIcon = new URL('../../../../resources/pancakeswap.png', import.meta.url).toString()
17+
const tethysIcon = new URL('../../../../resources/tethys.png', import.meta.url).toString()
1718

1819
const useStyles = makeStyles()((theme) => ({
1920
icon: {
@@ -57,6 +58,14 @@ export function TradeProviderIcon(props: TradeProviderIconProps) {
5758
className={classes.icon}
5859
/>
5960
)
61+
case TradeProvider.TETHYS:
62+
return (
63+
<img
64+
src={tethysIcon}
65+
alt={resolveTradeProviderName(TradeProvider.PANCAKESWAP)}
66+
className={classes.icon}
67+
/>
68+
)
6069
case TradeProvider.DODO:
6170
return <DODOIcon classes={{ root: classes.icon }} />
6271
case TradeProvider.BANCOR:

packages/mask/src/plugins/Trader/constants/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,5 @@ export * from './pancakeswap'
1010
export * from './dodo'
1111
export * from './bancor'
1212
export * from './netswap'
13+
export * from './tethys'
1314
export type { ERC20TokenCustomizedBase, ERC20AgainstToken } from './types'
Lines changed: 4 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,14 @@
11
import { ChainId } from '@masknet/web3-shared-evm'
2-
import {
3-
DAI,
4-
MSKA,
5-
MSKB,
6-
MSKC,
7-
RUNE,
8-
USDC,
9-
USDT,
10-
WBTC,
11-
WNATIVE,
12-
WNATIVE_ONLY,
13-
NFTX,
14-
STETH,
15-
BUSD,
16-
BTCB,
17-
CUSD,
18-
CEUR,
19-
} from './trader'
2+
import { USDC, USDT, WNATIVE, NETT, WNATIVE_ONLY } from './trader'
203
import type { ERC20AgainstToken, ERC20TokenCustomizedBase } from './types'
214

225
/**
236
* Some tokens can only be swapped via certain pairs,
247
* so we override the list of bases that are considered for these tokens.
258
*/
26-
export const SUSHISWAP_CUSTOM_BASES: ERC20TokenCustomizedBase = {}
9+
export const NETSWAP_CUSTOM_BASES: ERC20TokenCustomizedBase = {}
2710

28-
export const SUSHISWAP_BASE_AGAINST_TOKENS: ERC20AgainstToken = {
11+
export const NETSWAP_BASE_AGAINST_TOKENS: ERC20AgainstToken = {
2912
...WNATIVE_ONLY,
30-
[ChainId.Mainnet]: [WNATIVE, DAI, USDC, USDT, WBTC, RUNE, NFTX, STETH].map((x) => x[ChainId.Mainnet]),
31-
[ChainId.Rinkeby]: [WNATIVE, MSKA, MSKB, MSKC].map((x) => x[ChainId.Rinkeby]),
32-
[ChainId.Matic]: [WNATIVE, USDC, WBTC, DAI, USDT].map((x) => x[ChainId.Matic]),
33-
[ChainId.BSC]: [WNATIVE, DAI, BUSD, USDC, USDT, BTCB].map((x) => x[ChainId.BSC]),
34-
[ChainId.xDai]: [WNATIVE, USDC, USDT, WBTC].map((x) => x[ChainId.xDai]),
35-
[ChainId.Celo]: [WNATIVE, CUSD, CEUR].map((x) => x[ChainId.Celo]),
36-
[ChainId.Metis]: [WNATIVE, CUSD, CEUR].map((x) => x[ChainId.Metis]),
13+
[ChainId.Metis]: [WNATIVE, USDC, USDT, NETT].map((x) => x[ChainId.Metis]),
3714
}

packages/mask/src/plugins/Trader/constants/openocean.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,5 @@ export const networkNames: Record<NetworkType, string> = {
1010
[NetworkType.xDai]: 'xdai',
1111
[NetworkType.Celo]: 'celo',
1212
[NetworkType.Fantom]: 'fantom',
13+
[NetworkType.Metis]: 'metis',
1314
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import { ChainId } from '@masknet/web3-shared-evm'
2+
import { USDC, USDT, TETHYS, METIS, WNATIVE, WNATIVE_ONLY } from './trader'
3+
import type { ERC20AgainstToken, ERC20TokenCustomizedBase } from './types'
4+
5+
/**
6+
* Some tokens can only be swapped via certain pairs,
7+
* so we override the list of bases that are considered for these tokens.
8+
*/
9+
export const TETHYS_CUSTOM_BASES: ERC20TokenCustomizedBase = {}
10+
11+
export const TETHYS_BASE_AGAINST_TOKENS: ERC20AgainstToken = {
12+
...WNATIVE_ONLY,
13+
[ChainId.Metis]: [WNATIVE, METIS, USDC, USDT, TETHYS].map((x) => x[ChainId.Metis]),
14+
}

packages/mask/src/plugins/Trader/constants/trader.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,9 @@ export const NFTX = createERC20Tokens('NFTX_ADDRESS', 'NFTX', 'NFTX', 18)
4343
export const STETH = createERC20Tokens('stETH_ADDRESS', 'stakedETH', 'stETH', 18)
4444
export const CUSD = createERC20Tokens('cUSD_ADDRESS', 'Celo Dollar', 'cUSD', 18)
4545
export const CEUR = createERC20Tokens('cEUR_ADDRESS', 'Celo Euro', 'cEUR', 18)
46+
export const NETT = createERC20Tokens('NETT_ADDRESS', 'Netswap Token', 'NETT', 18)
47+
export const METIS = createERC20Tokens('METIS_ADDRESS', 'Metis Token', 'METIS', 18)
48+
export const TETHYS = createERC20Tokens('TETHYS_ADDRESS', 'Tethys', 'TETHYS', 18)
4649

4750
export const WNATIVE = createERC20Tokens(
4851
'WNATIVE_ADDRESS',

packages/mask/src/plugins/Trader/pipes.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ export const resolveTradeProviderName = createLookupTableResolver<TradeProvider,
5858
[TradeProvider.BANCOR]: 'Bancor',
5959
[TradeProvider.NETSWAP]: 'NetSwap',
6060
[TradeProvider.OPENOCEAN]: 'OpenOcean',
61+
[TradeProvider.TETHYS]: 'Tethys',
6162
},
6263
(tradeProvider) => {
6364
throw new Error(`Unknown provider type: ${tradeProvider}`)
@@ -110,6 +111,8 @@ export function resolveTradeProviderLink(tradeProvider: TradeProvider, networkTy
110111
return 'https://netswap.io/#/swap'
111112
case TradeProvider.OPENOCEAN:
112113
return 'https://openocean.finance/classic'
114+
case TradeProvider.TETHYS:
115+
return 'http://tethys.finance'
113116
default:
114117
unreachable(tradeProvider)
115118
}
@@ -172,6 +175,9 @@ export function resolveTradePairLink(tradeProvider: TradeProvider, address: stri
172175
case TradeProvider.OPENOCEAN:
173176
// TODO - OpenOcean
174177
return ``
178+
case TradeProvider.TETHYS:
179+
// TODO - OpenOcean
180+
return ``
175181
default:
176182
unreachable(tradeProvider)
177183
}
@@ -262,6 +268,7 @@ export const resolveZrxTradePoolName = createLookupTableResolver<ZrxTradePool, s
262268
[ZrxTradePool.WaultSwap]: 'WaultSwap',
263269
[ZrxTradePool.xSigma]: 'xSigma',
264270
[ZrxTradePool.NetSwap]: 'NetSwap',
271+
[ZrxTradePool.Tethys]: 'NetSwap',
265272
},
266273
'Unknown',
267274
)

packages/mask/src/plugins/Trader/settings.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ const balancerSettings = createInternalSettings<string>(`${PLUGIN_ID}+tradeProvi
110110
const dodoSettings = createInternalSettings<string>(`${PLUGIN_ID}+tradeProvider+dodo`, '')
111111
const bancorSettings = createInternalSettings<string>(`${PLUGIN_ID}+tradeProvider+bancor`, '')
112112
const netswapSettings = createInternalSettings<string>(`${PLUGIN_ID}+tradeProvider+netswap`, '')
113+
const tethysSettings = createInternalSettings<string>(`${PLUGIN_ID}+tradeProvider+tethys`, '')
113114
const openoceanSettings = createInternalSettings<string>(`${PLUGIN_ID}+tradeProvider+openocean`, '')
114115

115116
/**
@@ -139,6 +140,8 @@ export function getCurrentTradeProviderGeneralSettings(tradeProvider: TradeProvi
139140
return bancorSettings
140141
case TradeProvider.NETSWAP:
141142
return netswapSettings
143+
case TradeProvider.TETHYS:
144+
return tethysSettings
142145
case TradeProvider.OPENOCEAN:
143146
return openoceanSettings
144147
default:

0 commit comments

Comments
 (0)