import { BigNumber, BigNumberish, CallOverrides, ContractTransaction, Overrides } from 'ethers';
import { BigNumber as BN } from 'bignumber.js';
export declare type TokenInfo = {
    name?: string;
    symbol?: string;
    decimals: number;
    native: boolean;
    balance: number;
    balanceBN: BN;
    imageUri?: string;
    spenderAllowance?: number;
    approve?: (spender: string, amount: BigNumberish, overrides?: Overrides) => Promise<ContractTransaction>;
    transfer?: (recipient: string, amount: BigNumberish, overrides?: Overrides) => Promise<ContractTransaction>;
    allowance?: (owner: string, spender: string, overrides?: CallOverrides) => Promise<BigNumber>;
};
export declare type Tokens = {
    [address: string]: TokenInfo;
};
export declare function tokensReducer(tokens: Tokens, action: {
    type: 'addToken';
    payload: {
        id: string;
        token: TokenInfo;
    };
} | {
    type: 'resetTokens';
} | {
    type: 'updateTokenBalanceAllowance';
    payload: {
        id: string;
        balance: number;
        balanceBN: BN;
        spenderAllowance: number;
    };
}): Tokens;
