import Web3 from 'web3';
import { BorrowingCore } from '../../web3-contracts/BorrowingCore';
import { SystemContractInstance } from '../SystemContractInstance';
import { BorrowingTotals, QNonPayableTx, Vault, VaultStats } from '../../types';
import { TransactionReceipt } from 'web3-eth';
import { CompoundRateKeeperInstance } from '../common/CompoundRateKeeperInstance';
/**
 * Borrowing core instance to interact with Borrowing core contract.
 * See [onchain documentation](@system-contracts-repo/@network/BorrowingCore/) for more details.
 * An instance of this class for a deployed network can be obtained via {@link ContractRegistryInstance.borrowingCore}
 */
export declare class BorrowingCoreInstance extends SystemContractInstance<BorrowingCore> {
    constructor(web3: Web3, address: string);
    /** @deprecated use getCompoundRateKeeper */
    compoundRateKeeper(colKey: string): Promise<string>;
    /**
     * [External documentation](@system-contracts-repo/@network/BorrowingCore/#getcompoundratekeeper)
     */
    getCompoundRateKeeper(colKey: string): Promise<CompoundRateKeeperInstance>;
    /**
     * [External documentation](@system-contracts-repo/@network/BorrowingCore/#totalstcbackedbycol)
     */
    totalStcBackedByCol(colKey: string): Promise<string>;
    /**
     * [External documentation](@system-contracts-repo/@network/BorrowingCore/#updatecompoundrate)
     */
    updateCompoundRate(col: string, txOptions?: QNonPayableTx): Promise<TransactionReceipt>;
    /**
     * [External documentation](@system-contracts-repo/@network/BorrowingCore/#uservaults)
     */
    userVaults(address: string, vaultId: number | string): Promise<Vault>;
    /**
     * [External documentation](@system-contracts-repo/@network/BorrowingCore/#uservaultscount)
     */
    userVaultsCount(address: string): Promise<string>;
    /**
     * [External documentation](@system-contracts-repo/@network/BorrowingCore/#createvault)
     */
    createVault(colKey: string, txOPtions?: QNonPayableTx): Promise<TransactionReceipt>;
    /**
     * [External documentation](@system-contracts-repo/@network/BorrowingCore/#depositcol)
     */
    depositCol(vaultId: string | number, amount: string | number, txOptions?: QNonPayableTx): Promise<TransactionReceipt>;
    /**
     * [External documentation](@system-contracts-repo/@network/BorrowingCore/#generatestc)
     */
    generateStc(vaultId: string | number, stcAmount: string | number, txOptions?: QNonPayableTx): Promise<TransactionReceipt>;
    /**
     * [External documentation](@system-contracts-repo/@network/BorrowingCore/#clearvault)
     */
    clearVault(user: string, vaultId: number | string, amount: number | string, txOptions?: QNonPayableTx): Promise<TransactionReceipt>;
    /**
     * [External documentation](@system-contracts-repo/@network/BorrowingCore/#liquidate)
     */
    liquidate(user: string, vaultId: number | string, txOptions?: QNonPayableTx): Promise<TransactionReceipt>;
    /**
     * [External documentation](@system-contracts-repo/@network/BorrowingCore/#transfercol)
     */
    transferCol(user: string, vaultId: number | string, recipient: string, txOptions?: QNonPayableTx): Promise<TransactionReceipt>;
    /**
     * [External documentation](@system-contracts-repo/@network/BorrowingCore/#paybackstc)
     */
    payBackStc(vaultId: string | number, amount: string | number, txOptions?: QNonPayableTx): Promise<TransactionReceipt>;
    /**
     * [External documentation](@system-contracts-repo/@network/BorrowingCore/#withdrawcol)
     */
    withdrawCol(vaultId: string | number, amount: string | number, txOptions?: QNonPayableTx): Promise<TransactionReceipt>;
    /**
     * [External documentation](@system-contracts-repo/@network/BorrowingCore/#getaggregatedtotals)
     */
    getAggregatedTotals(): Promise<BorrowingTotals>;
    /**
     * Retrieve all user vaults
     * @param address account
     * @returns user vaults
     */
    getAllUserVaults(address: string): Promise<Vault[]>;
    /**
     * [External documentation](@system-contracts-repo/@network/BorrowingCore/#uservaults)
     */
    getUserVault(address: string, vaultId: string | number): Promise<Vault>;
    /**
     * [External documentation](@system-contracts-repo/@network/BorrowingCore/#userVaultsCount)
     */
    getUserVaultsCount(address: string): Promise<string | number>;
    /**
     * [External documentation](@system-contracts-repo/@network/BorrowingCore/#getvaultstats)
     */
    getVaultStats(address: string, vaultId: string | number): Promise<VaultStats>;
    /**
     * [External documentation](@system-contracts-repo/@network/BorrowingCore/#getfulldebt)
     */
    getFullDebt(address: string, vaultId: string | number): Promise<string>;
    /**
     * [External documentation](@system-contracts-repo/@network/BorrowingCore/#getcurrentcolratio)
     */
    getCurrentColRatio(address: string, vaultId: string | number): Promise<string>;
    /**
     * [External documentation](@system-contracts-repo/@network/BorrowingCore/#totalStcBackedByCol)
     */
    getTotalStcBackedByCol(colKey: string): Promise<string>;
}
