/**
 * @file Compound
 * @desc This file defines the constructor of the `Compound` class.
 * @hidden
 */
import { ethers } from 'ethers';
import * as eth from './eth';
import * as util from './util';
import * as comp from './comp';
import * as api from './api';
import { Provider, CompoundOptions, CompoundInstance } from './types';
/**
 * Creates an instance of the Compound.js SDK.
 *
 * @param {Provider | string} [provider] Optional Ethereum network provider.
 *     Defaults to Ethers.js fallback mainnet provider.
 * @param {object} [options] Optional provider options.
 *
 * @example
 * ```
 * var compound = new Compound(window.ethereum); // web browser
 *
 * var compound = new Compound('http://127.0.0.1:8545'); // HTTP provider
 *
 * var compound = new Compound(); // Uses Ethers.js fallback mainnet (for testing only)
 *
 * var compound = new Compound('ropsten'); // Uses Ethers.js fallback (for testing only)
 *
 * // Init with private key (server side)
 * var compound = new Compound('https://mainnet.infura.io/v3/_your_project_id_', {
 *   privateKey: '0x_your_private_key_', // preferably with environment variable
 * });
 *
 * // Init with HD mnemonic (server side)
 * var compound = new Compound('mainnet' {
 *   mnemonic: 'clutch captain shoe...', // preferably with environment variable
 * });
 * ```
 *
 * @returns {object} Returns an instance of the Compound.js SDK.
 */
declare const Compound: {
    (provider?: Provider | string, options?: CompoundOptions): CompoundInstance;
    eth: typeof eth;
    api: typeof api;
    util: typeof util;
    _ethers: typeof ethers;
    getDecimals: (networkName: string, tokenSym: string) => number;
    getAddress: (networkName: string, tokenSym: string) => any;
    getName: (networkName: string, tokenAddress: string) => any;
    getTokenPairs: (networkName: string) => {
        ctokenSym: string;
        underlySym: string;
        ctokenDecimal: number;
        underlyDecimal: number;
        ctokenIsEther: boolean;
    }[];
    getRateModals: (networkName: string) => any;
    isUnderlyAllowed: (networkName: string, underlyName: string) => boolean;
    isCTokenAllowed: (networkName: string, cToken: string) => boolean;
    isEther: (networkName: string, ctokenSym: string) => boolean;
    comp: {
        getCompBalance: typeof comp.getCompBalance;
        getCompAccrued: typeof comp.getCompAccrued;
    };
};
export = Compound;
