const Contract = require('web3-eth-contract'); const hamoraAbi = require('./output/abi/HomoraBank.json') const { UniswapSpell } = require('./UniswapSpell') const IERC20 = require('./interfaceAbi/IERC20.json') const BigNumber = require('bignumber.js'); const web3 = require('web3') const setDeploment = (networkName) => { const deployments = require(`./output/${networkName}.json`); //console.log(deployments); return deployments } export class HamoraBank { account provider network deployments bank contract token0 token1 lpToken constructor (account, provider, network) { this.account = account this.network = network this.deployments = setDeploment(this.network) this.provider = provider this.contract = Contract.setProvider(this.provider) this.bank = new Contract(hamoraAbi.abi, this.deployments.hamoraBank.address) } public async getCaster(){ let caster = await this.bank.methods.caster().call(); return caster } public async getPositions(){ let positions = await this.bank.methods.nextPositionId().call(); return positions - 1 } public async farm(token0, token1, token0Amount, token1amount){ const uniswapSpell = new UniswapSpell(this.account, this.provider, this.network) let tokenA = new Contract(IERC20.abi, token0) let tokenB = new Contract(IERC20.abi, token1) // await tokenA.methods.approve( // this.deployments.hamoraBank.address, // new BigNumber(web3.utils.toWei(token0Amount, "ether" )) // ) //.send({ from: this.account }) // await tokenB.methods.approve( // this.deployments.hamoraBank.address, // token0Amount // ) // .send({ from: this.account }) const execute = await this.bank.methods.execute( 0, '0xc91E090D23Ac1A5b3A952F902869add2F6AbDb3D', await uniswapSpell.execute( token0, token1, token0Amount, token1amount, 0, 0, 0, 0, 0, 0 ) ).call() console.log(execute); } } const main = async () => { let bank = new HamoraBank('0xDDc09B681fD9c9D428690Df42a8C544458508d84', 'https://rinkeby.infura.io/v3/403238924914456d949289598ceffd80', 'rinkeby') let banks = await bank.getCaster() let positions = await bank.getPositions() let farm = await bank.farm( '0xB9627B43C888978560BAAaf23faD0c58C678228e', '0x1349129C117e909A4c040b03B029685ccEb4fA61', 100e6, 100e6 ) console.log( 'banks', banks, 'positions', positions ); } main()