import { getDefaultProvider } from '@ethersproject/providers';

import { Contract, Provider } from '../src';

import poolAbi from './abi/aaveV2Pool.json';

async function run(): Promise<void> {
  const provider = getDefaultProvider('mainnet');
  const ethcallProvider = new Provider();
  await ethcallProvider.init(provider);

  const stablecoins = [
    '0x4Fabb145d64652a948d72533023f6E7A623C7C53',
    '0x6B175474E89094C44Da98b954EedeAC495271d0F',
    '0x056Fd409E1d7A124BD7017459dFEa2F387b6d5Cd',
    '0x03ab458634910AaD20eF5f1C8ee96F1D6ac54919',
    '0x57Ab1ec28D129707052df4dF418D58a2D46d5f51',
    '0x0000000000085d4780B73119b644AE5ecd22b376',
    '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
    '0x8E870D67F660D95d5be530380D0eC0bd388289E1',
    '0xdAC17F958D2ee523a2206206994597C13D831ec7',
  ];

  const poolAddress = '0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9';
  const poolContract = new Contract(poolAddress, poolAbi);
  const calls = stablecoins.map((asset) => {
    return poolContract.getReserveData(asset);
  });
  const data = await ethcallProvider.all(calls);
  console.log(data);
}

export default run;