import { BigNumber } from "bignumber.js";
import { KollateralConfig } from "./config/kollateral-config";
import { Network } from "./static/network";
import { Token } from "./static/tokens";
import { Execution } from "./models/Invocation";
import { TokenAmount } from "./models/token-amount";
import { TransactionConfig } from "web3-core";
export declare class Kollateral {
    static MAX_UINT256: BigNumber;
    private _provider;
    private _config;
    private _web3;
    private _invoker;
    private _kEther;
    private _kErc20s;
    private _kTokens;
    private _erc20Abi;
    constructor(provider: any, config: KollateralConfig);
    static init(provider: any): Promise<Kollateral>;
    static isSupportedNetwork(network: Network): boolean;
    unlock(sender: string, kTokenAddress: string): Promise<boolean>;
    unlockAmount(sender: string, kTokenAddress: string, amount: BigNumber): Promise<boolean>;
    allowance(owner: string, kTokenAddress: string): Promise<BigNumber>;
    isUnlocked(owner: string, kTokenAddress: string): Promise<boolean>;
    mint(sender: string, kTokenAddress: string, amount: BigNumber): Promise<boolean>;
    redeem(sender: string, kTokenAddress: string, amount: BigNumber): Promise<boolean>;
    redeemUnderlying(sender: string, kTokenAddress: string, amount: BigNumber): Promise<boolean>;
    private isKEtherAddress;
    balanceOf(owner: string, tokenAddress: string): Promise<BigNumber>;
    balanceOfUnderlying(owner: string, kTokenAddress: string): Promise<BigNumber>;
    underlyingAmountToNativeAmount(kTokenAddress: string, tokenAmount: BigNumber, ceiling?: boolean): Promise<BigNumber>;
    nativeAmountToUnderlyingAmount(kTokenAddress: string, kTokenAmount: BigNumber): Promise<BigNumber>;
    totalSupply(tokenAddress: string): Promise<BigNumber>;
    totalReserve(kTokenAddress: string): Promise<BigNumber>;
    private tokenOf;
    invoke(execution: Execution, tokenAmount: TokenAmount, txOpt?: TransactionConfig): Promise<void>;
    totalLiquidity(token: Token): Promise<BigNumber>;
    faucet(sender: string, tokenAmount: TokenAmount): Promise<boolean>;
    private getTokenAddressOrThrow;
    private valueOrDefault;
    private dataOrDefault;
}
export * from './static/tokens';
export * from './static/ktokens';
export * from './static/network';
export * from './static/invoker';
