import { Route } from '../src/route' import { Pair } from '../src/pair' import { DODO_SDK_DATA } from '../src/data/constants' import { validateAndParseAddress, sortsAddress } from '../src/utils' import { parseFixed, formatFixed } from '@ethersproject/bignumber' import BigNumber from 'bignumber.js' describe('Route', () => { jest.setTimeout(50000); let route: Route; let tokenList: { decimals: number; symbol: string; address: string; source: string; name: string; }[]; beforeAll(async () => { route = new Route(1) tokenList = await route.GetTokenList(); }); it('GetTokenList', async () => { let curRoute = new Route(1) let curTokenList = await curRoute.GetTokenList(); console.log("tokenList", curTokenList['ETH']) }) it('GetTokenByAddr', async () => { const obj = await route.GetTokenByAddr("0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE") console.log("token detail:", obj) }) it('GetOrderHistory', async () => { var ev = await route.GetUserOrderHistory("0xaac153c1344cA14497A5dd22b1F70C28793625aa") console.log("ev:", ev) }) it('GetGasParam', async () => { var res = await route.GasParam(); console.log("res:", res) }) it('Get1inchRoute - Quote', async () => { const fromToken = { symbol: '', address: '0xf629cbd94d3791c9250152bd8dfbdf380e2a3b9c', name: '', decimals: 18, source: '' } // const fromToken = tokenList['USDT'] const toToken = tokenList['ETH'] const swapAmount = parseFixed("2625", fromToken.decimals).toString() const beginTime = new Date().getTime() const routeDetail: any = await route.GetOneInchRoute(fromToken, toToken, swapAmount) const endTime = new Date().getTime() console.log("delay - 1inch:", (endTime - beginTime) / 1000) console.log("routeDetail - 1inch", routeDetail); }) it('Get0xRoute - Quote', async () => { const fromToken = { symbol: '', address: '0xf629cbd94d3791c9250152bd8dfbdf380e2a3b9c', name: '', decimals: 18, source: '' } const toToken = tokenList['ETH'] const swapAmount = parseFixed("2625", fromToken.decimals).toString() const beginTime = new Date().getTime() const routeDetail: any = await route.GetZeroXRoute(fromToken, toToken, swapAmount) const endTime = new Date().getTime() console.log("delay - 0x:", (endTime - beginTime) / 1000) console.log("routeDetail - 0x", routeDetail); }) it('GetDODORoute - Quote', async () => { const fromToken = tokenList['DODO'] const toToken = tokenList['USDT'] const swapAmount = parseFixed("10000", fromToken.decimals).toString() const beginTime = new Date().getTime() const routeDetail: any = await route.GetDODORoute(fromToken, toToken, swapAmount) const endTime = new Date().getTime() console.log("delay - dodo:", (endTime - beginTime) / 1000) console.log("routeDetail - dodo", routeDetail); }) it.only('MakeRoute - Construction', async () => { const fromToken = tokenList['USDC'] // const fromToken = { symbol: '', address: '0xf629cbd94d3791c9250152bd8dfbdf380e2a3b9c', name: '', decimals: 18, source: '' } const toToken = tokenList['DODO'] const swapAmount = parseFixed("2000", fromToken.decimals).toString() const slippage = 5 const addr = "0xaac153c1344cA14497A5dd22b1F70C28793625aa" const deadline = Math.floor(new Date().getTime() / 1000 + 60 * 10) // const routeDetailQuote: any = await route.GetOneInchRoute(fromToken, toToken, swapAmount) // const routeDetailQuote: any = await route.GetZeroXRoute(fromToken, toToken, swapAmount) // const routeDetailQuote: any = await route.GetDODORoute(fromToken, toToken, swapAmount) const routeDetailQuote: any = await route.GetAndMakeDODOAndUniRoute(fromToken, toToken, swapAmount, slippage, addr, deadline); console.log("routeDetailQuote:", routeDetailQuote) const source = routeDetailQuote.useSource const returnAmount = parseFixed(routeDetailQuote.resAmount + "", toToken.decimals).toString(); const minAmount = new BigNumber(returnAmount).multipliedBy(1 - slippage / 100).toFixed(0, BigNumber.ROUND_DOWN); // const routeDetail: any = await route.MakeRoute(fromToken, toToken, swapAmount, minAmount, slippage, addr, deadline, source) const routeDetail: any = await route.MakeRoute(fromToken, toToken, swapAmount, minAmount, slippage, addr, deadline, source) console.log("routeDetail", routeDetail); }) it('dodoGetPair', async () => { const token0Address = tokenList['USDT'].address const token1Address = tokenList['DODO'].address const pair = new Pair(1) var pairDetail = await pair.getPairAddress(token0Address, token1Address) console.log("pair", pairDetail) }) it('Token-Address', async () => { // var DODO = validateAndParseAddress(tokenList['DODO'].address) // var USDT = validateAndParseAddress(tokenList['USDT'].address) // var wCRES = validateAndParseAddress(tokenList['wCRES'].address) // var WOO = validateAndParseAddress(tokenList['WOO'].address) // var WBTC = validateAndParseAddress(tokenList['WBTC'].address) // var WETH = validateAndParseAddress(tokenList['WETH'].address) // var USDC = validateAndParseAddress(tokenList['USDC'].address) // var LINK = validateAndParseAddress(tokenList['LINK'].address) // var AAVE = validateAndParseAddress(tokenList['AAVE'].address) // var SNX = validateAndParseAddress(tokenList['SNX'].address) // var COMP = validateAndParseAddress(tokenList['COMP'].address) // var YFI = validateAndParseAddress(tokenList['YFI'].address) // var FIN = validateAndParseAddress(tokenList['FIN'].address) var KOGE = validateAndParseAddress(tokenList['KOGE'].address) var WBNB = validateAndParseAddress(tokenList['WBNB'].address) var BUSD = validateAndParseAddress(tokenList['BUSD'].address) //KOGE-WBNB let tokens = sortsAddress(KOGE, WBNB) ? [KOGE, WBNB] : [WBNB, KOGE] console.log("KOGE-WBNB key:" + tokens[0] + "+" + tokens[1] + "; base:" + KOGE) //WBNB-BUSD tokens = sortsAddress(WBNB, BUSD) ? [WBNB, BUSD] : [BUSD, WBNB] console.log("WBNB-BUSD key:" + tokens[0] + "+" + tokens[1] + "; base:" + WBNB) // //WETH-USDC // let tokens = sortsAddress(WETH, USDC) ? [WETH, USDC] : [USDC, WETH] // console.log("WETH-USDC key:" + tokens[0] + "+" + tokens[1] + "; base:" + WETH) // //USDT-USDC // tokens = sortsAddress(USDT, USDC) ? [USDT, USDC] : [USDC, USDT] // console.log("USDT-USDC key:" + tokens[0] + "+" + tokens[1] + "; base:" + USDT) // //WBTC-USDC // tokens = sortsAddress(WBTC, USDC) ? [WBTC, USDC] : [USDC, WBTC] // console.log("WBTC-USDC key:" + tokens[0] + "+" + tokens[1] + "; base:" + WBTC) // //LINK-USDC // tokens = sortsAddress(LINK, USDC) ? [LINK, USDC] : [USDC, LINK] // console.log("LINK-USDC key:" + tokens[0] + "+" + tokens[1] + "; base:" + LINK) // //COMP-USDC // tokens = sortsAddress(COMP, USDC) ? [COMP, USDC] : [USDC, COMP] // console.log("COMP-USDC key:" + tokens[0] + "+" + tokens[1] + "; base:" + COMP) // //YFI-USDC // tokens = sortsAddress(YFI, USDC) ? [YFI, USDC] : [USDC, YFI] // console.log("YFI-USDC key:" + tokens[0] + "+" + tokens[1] + "; base:" + YFI) // //DODO-USDT // tokens = sortsAddress(DODO, USDT) ? [DODO, USDT] : [USDT, DODO] // console.log("DODO-USDT key:" + tokens[0] + "+" + tokens[1] + "; base:" + DODO) // //wCRES-USDT // tokens = sortsAddress(wCRES, USDT) ? [wCRES, USDT] : [USDT, wCRES] // console.log("wCRES-USDT key:" + tokens[0] + "+" + tokens[1] + "; base:" + wCRES) // //WOO-USDT // tokens = sortsAddress(WOO, USDT) ? [WOO, USDT] : [USDT, WOO] // console.log("WOO-USDT key:" + tokens[0] + "+" + tokens[1] + "; base:" + WOO) // //AAVE-USDC // tokens = sortsAddress(AAVE, USDC) ? [AAVE, USDC] : [USDC, AAVE] // console.log("AAVE-USDC key:" + tokens[0] + "+" + tokens[1] + "; base:" + AAVE) // //SNX-USDC // tokens = sortsAddress(SNX, USDC) ? [SNX, USDC] : [USDC, SNX] // console.log("SNX-USDC key:" + tokens[0] + "+" + tokens[1] + "; base:" + SNX) // //FIN-USDT // tokens = sortsAddress(FIN, USDT) ? [FIN, USDT] : [USDT, FIN] // console.log("FIN-USDT key:" + tokens[0] + "+" + tokens[1] + "; base:" + FIN) }) it('ApproveJudge', async () => { const fromToken = tokenList['DODO'] const addr = "0xa81f310cf5AD7c5541E5D1aF53f46B999959D84b" const targetAddr = "0xCB859eA579b28e02B87A1FDE08d087ab9dbE5149" // only for test const allowanceAmount = await route.ApproveJudge(fromToken, addr, targetAddr); console.log("allowanceAmount", allowanceAmount); }) it('ApproveHandle', async () => { const fromToken = tokenList['USDC'] // const targetAddr = DODO_SDK_DATA.DODO_APPROVE const targetAddr = "0xE0eE1f72c0Ce4097F204beBD3B7fF508fb26292D" const approveAmount = '0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff' const data = await route.ApproveHandle(fromToken, targetAddr, approveAmount) console.log("data", data) }) })