import { CallOverrides } from "@ethersproject/contracts";
import { ChainId } from "../chain";
import { ServiceInterface } from "../common";
import { Address, Balance, CyTokenUserMetadata, IronBankMarket, IronBankMarketDynamic, IronBankMarketStatic, IronBankUserSummary, Position, Token } from "../types";
export declare class IronBankInterface<T extends ChainId> extends ServiceInterface<T> {
    private cachedFetcherGet;
    private cachedFetcherGetDynamic;
    private cachedFetcherTokens;
    /**
     * Get all IronBank markets.
     * @param addresses filter, if not provided all positions are returned
     * @param overrides
     * @returns
     */
    get(addresses?: Address[], overrides?: CallOverrides): Promise<IronBankMarket[]>;
    /**
     * Get static part of IronBank markets.
     * @param addresses filter, if not provided all positions are returned
     * @param overrides
     * @returns
     */
    getStatic(addresses?: Address[], overrides?: CallOverrides): Promise<IronBankMarketStatic[]>;
    /**
     * Get dynamic part of IronBank markets.
     * @param addresses filter, if not provided all positions are returned
     * @param overrides
     * @returns
     */
    getDynamic(addresses?: Address[], overrides?: CallOverrides): Promise<IronBankMarketDynamic[]>;
    /**
     * Get IronBank market positions for a particular address.
     * @param address
     * @param addresses filter, if not provided all positions are returned
     * @param overrides
     * @returns
     */
    positionsOf(address: Address, addresses?: Address[], overrides?: CallOverrides): Promise<Position[]>;
    /**
     * Get the IronBank User Summary for a particular address.
     * @param address
     * @param overrides
     * @returns
     */
    summaryOf(address: Address, overrides?: CallOverrides): Promise<IronBankUserSummary>;
    /**
     * Get the IronBank User Metadata for a particular address.
     * @param address
     * @param addresses
     * @param overrides
     * @returns
     */
    metadataOf(address: Address, addresses?: Address[], overrides?: CallOverrides): Promise<CyTokenUserMetadata[]>;
    /**
     * Get all IronBank market's underlying token balances for a particular
     * address.
     * @param address
     * @param overrides
     * @returns
     */
    balances(address: Address, overrides?: CallOverrides): Promise<Balance[]>;
    /**
     * Get all IronBank market's underlying tokens.
     * @param overrides
     * @returns
     */
    tokens(overrides?: CallOverrides): Promise<Token[]>;
}
