31 lines
1.2 KiB
TypeScript
31 lines
1.2 KiB
TypeScript
import { BigNumber } from '@0xproject/utils';
|
|
import * as _ from 'lodash';
|
|
import * as Web3 from 'web3';
|
|
|
|
import { DummyTokenContract } from '../src/contract_wrappers/generated/dummy_token';
|
|
|
|
import { BalancesByOwner } from './types';
|
|
|
|
export class Balances {
|
|
private _tokenContractInstances: DummyTokenContract[];
|
|
private _ownerAddresses: string[];
|
|
constructor(tokenContractInstances: DummyTokenContract[], ownerAddresses: string[]) {
|
|
this._tokenContractInstances = tokenContractInstances;
|
|
this._ownerAddresses = ownerAddresses;
|
|
}
|
|
public async getAsync(): Promise<BalancesByOwner> {
|
|
const balancesByOwner: BalancesByOwner = {};
|
|
for (const tokenContractInstance of this._tokenContractInstances) {
|
|
for (const ownerAddress of this._ownerAddresses) {
|
|
let balance = await tokenContractInstance.balanceOf.callAsync(ownerAddress);
|
|
balance = new BigNumber(balance);
|
|
if (_.isUndefined(balancesByOwner[ownerAddress])) {
|
|
balancesByOwner[ownerAddress] = {};
|
|
}
|
|
balancesByOwner[ownerAddress][tokenContractInstance.address] = balance;
|
|
}
|
|
}
|
|
return balancesByOwner;
|
|
}
|
|
}
|