diff --git a/src/bridge/bridge.ts b/src/bridge/bridge.ts index bf693335..397e3216 100644 --- a/src/bridge/bridge.ts +++ b/src/bridge/bridge.ts @@ -685,7 +685,6 @@ export namespace Bridge { Tokens.DAI.id, Tokens.WBTC.id ]) - easyDepositETH.push(Tokens.WETH.id) } let {castArgs, isEasy, txn} = this.checkEasyArgs(args, this.l1BridgeZapEth, easyDeposits, easyRedeems, easyDepositETH); @@ -804,7 +803,8 @@ export namespace Bridge { Tokens.SYN.id, Tokens.HIGH.id, Tokens.DOG.id, Tokens.FRAX.id, Tokens.UST.id, Tokens.GOHM.id, Tokens.NEWO.id, Tokens.SDT.id, Tokens.LUNA.id, - Tokens.USDB.id, Tokens.H20.id, Tokens.SFI.id + Tokens.USDB.id, Tokens.H20.id, Tokens.SFI.id, + Tokens.BTCB.id ]; // use `L2BridgeZap.redeem()` @@ -818,6 +818,16 @@ export namespace Bridge { if (chainIdTo === ChainId.ETH) { easyRedeems.push(Tokens.WETH.id) } + + easyDepositETH.push(Tokens.WKLAY.id) + } + + if (this.chainId === ChainId.POLYGON) { + easyDepositETH.push(Tokens.WMATIC.id) + } + + if (this.chainId === ChainId.FANTOM) { + easyDepositETH.push(Tokens.WFTM.id) } BridgeUtils.DepositIfChainTokens.forEach((depositIfChainArgs) => { @@ -1210,6 +1220,15 @@ export namespace Bridge { case SwapType.MOVR: bridgeTokens = BridgeUtils.checkReplaceTokens(Tokens.MOVR, Tokens.WMOVR); break; + case SwapType.KLAY: + bridgeTokens = BridgeUtils.checkReplaceTokens(Tokens.KLAY, Tokens.WKLAY); + break; + case SwapType.MATIC: + bridgeTokens = BridgeUtils.checkReplaceTokens(Tokens.MATIC, Tokens.WMATIC); + break; + case SwapType.FTM: + bridgeTokens = BridgeUtils.checkReplaceTokens(Tokens.FTM, Tokens.WFTM); + break; case SwapType.JEWEL: bridgeTokens = BridgeUtils.checkReplaceTokens(Tokens.GAS_JEWEL, Tokens.JEWEL); break; diff --git a/src/bridge/bridgeutils.ts b/src/bridge/bridgeutils.ts index e849c4cb..ad3c5b85 100644 --- a/src/bridge/bridgeutils.ts +++ b/src/bridge/bridgeutils.ts @@ -39,7 +39,10 @@ export namespace BridgeUtils { ChainId.BOBA, ChainId.ARBITRUM, ChainId.AVALANCHE, - ChainId.DFK + ChainId.DFK, + ChainId.KLAYTN, + ChainId.POLYGON, + ChainId.FANTOM ]; export const isL2ETHChain = (chainId: number): boolean => L2_ETH_CHAINS.includes(chainId); @@ -91,12 +94,36 @@ export namespace BridgeUtils { redeemChainIds: [ChainId.MOONBEAM, ChainId.DFK], depositEth: true }, + { + chainId: ChainId.AVALANCHE, + tokens: [Tokens.BTCB], + redeemChainIds: [ChainId.DFK], + depositEth: false + }, { chainId: ChainId.MOONRIVER, tokens: [Tokens.MOVR, Tokens.WMOVR], redeemChainIds: [ChainId.MOONBEAM], depositEth: true, }, + { + chainId: ChainId.FANTOM, + tokens: [Tokens.FTM, Tokens.WFTM], + redeemChainIds: [ChainId.DFK], + depositEth: true, + }, + { + chainId: ChainId.POLYGON, + tokens: [Tokens.MATIC, Tokens.WMATIC], + redeemChainIds: [ChainId.DFK], + depositEth: true, + }, + { + chainId: ChainId.KLAYTN, + tokens: [Tokens.KLAY, Tokens.WKLAY], + redeemChainIds: [ChainId.DFK], + depositEth: true, + }, { chainId: ChainId.HARMONY, tokens: [Tokens.XJEWEL], diff --git a/src/internal/swaptype.ts b/src/internal/swaptype.ts index 9e8bff54..a1b1712b 100644 --- a/src/internal/swaptype.ts +++ b/src/internal/swaptype.ts @@ -14,6 +14,11 @@ export const SwapType = { SOLAR: "SOLAR", AVAX: "AVAX", MOVR: "MOVR", + FTM: "FTM", + KLAY: "KLAY", + MATIC: "MATIC", + BTCB: "BTCB", + LINK: "LINK", UST: "UST", NEWO: "NEWO", SDT: "SDT", @@ -39,5 +44,6 @@ export const mintBurnSwapTypes: SwapType[] = [ SwapType.SDT, SwapType.LUNA, SwapType.USDB, SwapType.JEWEL, SwapType.XJEWEL, SwapType.VSTA, SwapType.H20, SwapType.SFI, SwapType.WBTC, - SwapType.SFI + SwapType.SFI, SwapType.BTCB, SwapType.KLAY, + SwapType.MATIC, SwapType.FTM ]; \ No newline at end of file diff --git a/src/tokens.ts b/src/tokens.ts index 15a08d61..e793e331 100644 --- a/src/tokens.ts +++ b/src/tokens.ts @@ -751,6 +751,115 @@ export namespace Tokens { swapType: SwapType.SFI }); + + /** + * FTM is the native currency of the Fantom chain. + * See {@link FTM} for the "wrapped" ERC20 variant of this token. + */ + export const FTM = new BaseToken({ + name: "Fantom", + symbol: "FTM", + decimals: 18, + addresses: { + [ChainId.FANTOM]: "", + }, + swapType: SwapType.FTM, + isGasToken: true, + }); + + export const WFTM = new WrapperToken({ + name: "Wrapped MOVR", + symbol: "wMOVR", + decimals: 18, + addresses: { + [ChainId.FANTOM]: "0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83", + [ChainId.DFK]: "0x2Df041186C844F8a2e2b63F16145Bc6Ff7d23E25", + }, + swapType: SwapType.FTM, + underlyingToken: FTM, + }); + + /** + * KLAY is the native currency of the Klaytn chain. + * See {@link KLAY} for the "wrapped" ERC20 variant of this token. + */ + export const KLAY = new BaseToken({ + name: "Klaytn", + symbol: "KLAY", + decimals: 18, + addresses: { + [ChainId.KLAYTN]: "", + }, + swapType: SwapType.KLAY, + isGasToken: true, + }); + + export const WKLAY = new WrapperToken({ + name: "Wrapped KLAY", + symbol: "WKLAY", + decimals: 18, + addresses: { + [ChainId.KLAYTN]: "0x5819b6af194a78511c79c85ea68d2377a7e9335f", + [ChainId.DFK]: "0x97855Ba65aa7ed2F65Ed832a776537268158B78a", + }, + swapType: SwapType.KLAY, + underlyingToken: KLAY, + }); + + + /** + * MATIC is the native currency of the Polygon chain. + * See {@link MATIC} for the "wrapped" ERC20 variant of this token. + */ + export const MATIC = new BaseToken({ + name: "Matic", + symbol: "MATIC", + decimals: 18, + addresses: { + [ChainId.POLYGON]: "", + }, + swapType: SwapType.MATIC, + isGasToken: true, + }); + + export const WMATIC = new WrapperToken({ + name: "Wrapped MATIC", + symbol: "WMATIC", + decimals: 18, + addresses: { + [ChainId.POLYGON]: "0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270", + [ChainId.DFK]: "0xD17a41Cd199edF1093A9Be4404EaDe52Ec19698e", + }, + swapType: SwapType.MATIC, + underlyingToken: MATIC, + }); + + + export const BTCB = new BaseToken({ + name: "Bitcoin", + symbol: "BTC.b", + decimals: 8, + addresses: { + [ChainId.DFK]: "0x7516EB8B8Edfa420f540a162335eACF3ea05a247", + [ChainId.AVALANCHE]: "0x152b9d0FdC40C096757F570A51E494bd4b943E50" + }, + swapType: SwapType.BTCB + }); + + export const LINK = new BaseToken({ + name: "ChainLink", + symbol: "LINK", + decimals: 18, + addresses: { + [ChainId.ETH]: "0x514910771af9ca656af840dff83e8264ecf986ca", + [ChainId.DFK]: "" + }, + swapType: SwapType.LINK + }); + + + + export const mintBurnTokens: Token[] = [ NUSD, SYN, NETH, HIGH, DOG, JUMP, diff --git a/src/tokenswap.ts b/src/tokenswap.ts index ae513f9d..a491305b 100644 --- a/src/tokenswap.ts +++ b/src/tokenswap.ts @@ -694,6 +694,15 @@ export namespace TokenSwap { case SwapType.MOVR: intermediateToken = Tokens.WMOVR; break; + case SwapType.FTM: + intermediateToken = Tokens.WFTM; + break; + case SwapType.MATIC: + intermediateToken = Tokens.WMATIC; + break; + case SwapType.KLAY: + intermediateToken = Tokens.WKLAY; + break; case SwapType.DFKTEARS: intermediateToken = Tokens.DFKTEARS; break;