const Contract = require('web3-eth-contract'); const uniswapSpell = require('./output/abi/UniswapV2SpellV1.json') const setDeploment = (networkName) => { const deployments = require(`./output/${networkName}.json`); //console.log(deployments); return deployments } export class UniswapSpell { deployments uniswapSpell contract network account provider constructor(account, provider, network) { this.account = account this.network = network this.provider = provider this.deployments = setDeploment(this.network) this.contract = Contract.setProvider(this.provider) this.uniswapSpell = new Contract(uniswapSpell.abi, this.deployments.dfynSpell.address) } // positionId, // spell, // data, public async execute( token0, token1, supplyToken0Amount, supplyToken1Amount, supplyLPAmount, borrowtoken0Amount, borrowtoken1Amount, borrowLPAmount, amtAMin, amtBMin ) { let bytes = await this.uniswapSpell.methods.addLiquidityWERC20( token0, token1, [ supplyToken0Amount, supplyToken1Amount, supplyLPAmount, borrowtoken0Amount, borrowtoken1Amount, borrowLPAmount, amtAMin, amtBMin ] ).encodeABI() return bytes; } } const main = async () => { let spell = new UniswapSpell('0xDDc09B681fD9c9D428690Df42a8C544458508d84', 'https://rinkeby.infura.io/v3/403238924914456d949289598ceffd80', 'rinkeby') // [ // 40000 * 10**6, # 40000 USDT // 50000 * 10**6, # 50000 USDC // 0, // 1000 * 10**6, # 1000 USDT // 200 * 10**6, # 200 USDC // 0, # borrow LP tokens // 0, # min USDT // 0, # min USDC // ] let exe = await spell.execute( '0xB9627B43C888978560BAAaf23faD0c58C678228e', '0x1349129C117e909A4c040b03B029685ccEb4fA61', 1 * 10**6, 1 * 10**6, 0, 0, 0, 0, 0, 0 ) console.log(exe); } main()