| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- const HttpKit = require('./kit/HttpKit')
- const Config = require('./Config.js')
- const PrivateConfig = require('./PrivateConfig.js')
- const chainID = 56
- class OneInch {}
- OneInch.price = async function (fromTokenAddress = '0xe9e7cea3dedca5984780bafc599bd69add087d56',
- fromTokenDecimals = 18,
- amount = Config.baseTokenAmount,
- toTokenAddress = '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c') {
- fromTokenAddress = fromTokenAddress.toLowerCase()
- toTokenAddress = toTokenAddress.toLowerCase()
- amount = amount * (10 ** fromTokenDecimals)
- const url = `https://api.1inch.exchange/v3.0/${chainID}/quote?fromTokenAddress=${fromTokenAddress}&amount=${amount}` +
- `&toTokenAddress=${toTokenAddress}`
- const { data: rst } = await HttpKit.get(url)
- if (!rst || !rst.toToken || !rst.toTokenAmount) {
- return rst
- }
- const toTokenAmount = parseFloat(rst.toTokenAmount) / (10 ** rst.toToken.decimals)
- const fromTokenAmount = amount / (10 ** fromTokenDecimals)
- const price = fromTokenAmount / toTokenAmount
- rst.price = price
- Config.estimatedGas = rst.estimatedGas
- if (toTokenAddress.toLowerCase() === '0xe9e7cea3dedca5984780bafc599bd69add087d56') {
- rst.price = 1 / rst.price
- }
- return rst.price
- }
- OneInch.swap = async function (fromTokenAddress = '0xe9e7cea3dedca5984780bafc599bd69add087d56',
- toTokenAddress = '0x111111111117dc0aa78b770fa6a738034120c302',
- fromTokenDecimals = 18,
- amount = 100,
- gas = Config.estimatedGas,
- fromAddress = PrivateConfig.address,
- slippage = 1) {
- amount = amount * (10 ** fromTokenDecimals)
- const url = `https://api.1inch.exchange/v3.0/${chainID}/swap?fromTokenAddress=${fromTokenAddress}&toTokenAddress=${toTokenAddress}`
- + `&amount=${amount}&fromAddress=${fromAddress}&slippage=${slippage}`
- const { data: rst } = await HttpKit.get(url, {
- 'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4464.0 Safari/537.36 Edg/91.0.852.0'
- })
- if (rst && rst.toToken && rst.fromToken) {
- const fromTokenAmount = parseFloat(rst.fromTokenAmount) / (10 ** rst.fromToken.decimals)
- const toTokenAmount = parseFloat(rst.toTokenAmount) / (10 ** rst.toToken.decimals)
- rst.price = fromTokenAmount / toTokenAmount
- }
- return rst
- }
- module.exports = OneInch
|