Implement ERC20Wrapper and it's first method getBalanceAsync
This commit is contained in:
parent
f3d5690d56
commit
6686443317
@ -13,6 +13,7 @@ import compareVersions = require('compare-versions');
|
|||||||
import {ExchangeWrapper} from './contract_wrappers/exchange_wrapper';
|
import {ExchangeWrapper} from './contract_wrappers/exchange_wrapper';
|
||||||
import {TokenRegistryWrapper} from './contract_wrappers/token_registry_wrapper';
|
import {TokenRegistryWrapper} from './contract_wrappers/token_registry_wrapper';
|
||||||
import {ecSignatureSchema} from './schemas/ec_signature_schema';
|
import {ecSignatureSchema} from './schemas/ec_signature_schema';
|
||||||
|
import {ERC20Wrapper} from './contract_wrappers/erc20_wrapper';
|
||||||
import {SolidityTypes, ECSignature, ZeroExError} from './types';
|
import {SolidityTypes, ECSignature, ZeroExError} from './types';
|
||||||
|
|
||||||
const MAX_DIGITS_IN_UNSIGNED_256_INT = 78;
|
const MAX_DIGITS_IN_UNSIGNED_256_INT = 78;
|
||||||
@ -21,6 +22,7 @@ export class ZeroEx {
|
|||||||
public web3Wrapper: Web3Wrapper;
|
public web3Wrapper: Web3Wrapper;
|
||||||
public exchange: ExchangeWrapper;
|
public exchange: ExchangeWrapper;
|
||||||
public tokenRegistry: TokenRegistryWrapper;
|
public tokenRegistry: TokenRegistryWrapper;
|
||||||
|
public erc20: ERC20Wrapper;
|
||||||
/**
|
/**
|
||||||
* Computes the orderHash given the order parameters and returns it as a hex encoded string.
|
* Computes the orderHash given the order parameters and returns it as a hex encoded string.
|
||||||
*/
|
*/
|
||||||
@ -135,6 +137,7 @@ export class ZeroEx {
|
|||||||
this.web3Wrapper = new Web3Wrapper(web3);
|
this.web3Wrapper = new Web3Wrapper(web3);
|
||||||
this.exchange = new ExchangeWrapper(this.web3Wrapper);
|
this.exchange = new ExchangeWrapper(this.web3Wrapper);
|
||||||
this.tokenRegistry = new TokenRegistryWrapper(this.web3Wrapper);
|
this.tokenRegistry = new TokenRegistryWrapper(this.web3Wrapper);
|
||||||
|
this.erc20 = new ERC20Wrapper(this.web3Wrapper);
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Signs an orderHash and returns it's elliptic curve signature
|
* Signs an orderHash and returns it's elliptic curve signature
|
||||||
|
28
src/contract_wrappers/erc20_wrapper.ts
Normal file
28
src/contract_wrappers/erc20_wrapper.ts
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
import * as _ from 'lodash';
|
||||||
|
import * as BigNumber from 'bignumber.js';
|
||||||
|
import {Web3Wrapper} from '../web3_wrapper';
|
||||||
|
import {assert} from '../utils/assert';
|
||||||
|
import {ContractWrapper} from './contract_wrapper';
|
||||||
|
import * as TokenArtifacts from '../artifacts/Token.json';
|
||||||
|
import {ERC20Contract} from '../types';
|
||||||
|
|
||||||
|
export class ERC20Wrapper extends ContractWrapper {
|
||||||
|
constructor(web3Wrapper: Web3Wrapper) {
|
||||||
|
super(web3Wrapper);
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Returns an owner's ERC20 token balance
|
||||||
|
*/
|
||||||
|
public async getBalanceAsync(tokenAddress: string, ownerAddress: string): Promise<BigNumber.BigNumber> {
|
||||||
|
assert.isETHAddressHex('ownerAddress', ownerAddress);
|
||||||
|
assert.isETHAddressHex('tokenAddress', tokenAddress);
|
||||||
|
|
||||||
|
const contractInstance = await this.instantiateContractIfExistsAsync((TokenArtifacts as any), tokenAddress);
|
||||||
|
const tokenContract = contractInstance as ERC20Contract;
|
||||||
|
let balance = await tokenContract.balanceOf.call(ownerAddress);
|
||||||
|
// The BigNumber instance returned by Web3 is of a much older version then our own, we therefore
|
||||||
|
// should always re-instantiate the returned BigNumber after retrieval.
|
||||||
|
balance = _.isUndefined(balance) ? new BigNumber(0) : new BigNumber(balance);
|
||||||
|
return balance;
|
||||||
|
}
|
||||||
|
}
|
@ -30,6 +30,12 @@ export interface ExchangeContract {
|
|||||||
isValidSignature: any;
|
isValidSignature: any;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface ERC20Contract {
|
||||||
|
balanceOf: {
|
||||||
|
call: (address: string) => Promise<BigNumber.BigNumber>;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
export interface TokenRegistryContract {
|
export interface TokenRegistryContract {
|
||||||
getTokenMetaData: any;
|
getTokenMetaData: any;
|
||||||
getTokenAddresses: any;
|
getTokenAddresses: any;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user