aboutsummaryrefslogtreecommitdiffstats
path: root/packages/contracts/src/utils/asset_wrapper.ts
blob: 4c345aa304de7946283b02295f5614233f8c5287 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import { assetProxyUtils } from '@0xproject/order-utils';
import { BigNumber } from '@0xproject/utils';
import * as _ from 'lodash';

import { AbstractAssetWrapper } from '../abstract/abstract_asset_wrapper';

interface ProxyIdToAssetWrappers {
    [proxyId: number]: AbstractAssetWrapper;
}

export class AssetWrapper {
    private _proxyIdToAssetWrappers: ProxyIdToAssetWrappers;
    constructor(assetWrappers: AbstractAssetWrapper[]) {
        this._proxyIdToAssetWrappers = {};
        _.each(assetWrappers, assetWrapper => {
            const proxyId = assetWrapper.getProxyId();
            this._proxyIdToAssetWrappers[proxyId] = assetWrapper;
        });
    }
    public async getBalanceAsync(owner: string, assetData: string): Promise<BigNumber> {
        const proxyId = assetProxyUtils.decodeAssetDataId(assetData);
        const assetWrapper = this._proxyIdToAssetWrappers[proxyId];
        const balance = await assetWrapper.getBalanceAsync(owner, assetData);
        return balance;
    }
    public async getProxyAllowanceAsync(owner: string, assetData: string): Promise<BigNumber> {
        const proxyId = assetProxyUtils.decodeAssetDataId(assetData);
        const assetWrapper = this._proxyIdToAssetWrappers[proxyId];
        const balance = await assetWrapper.getProxyAllowanceAsync(owner, assetData);
        return balance;
    }
}