import { CallOverrides } from "@ethersproject/contracts";
import { ChainId } from "../chain";
import { ContractAddressId, ContractService, WrappedContract } from "../common";
import { Address, Integer, Usdc } from "../types";
export declare const OracleAbi: string[];
/**
 * [[OracleService]] is the main pricing engine, used by all price calculations.
 * It's implemented in the form of a contract that lives on all networks
 * supported by yearn.
 */
export declare class OracleService<T extends ChainId> extends ContractService<T> {
    static abi: string[];
    static contractId: ContractAddressId;
    get contract(): Promise<WrappedContract>;
    /**
     * Fetch all the active Oracle calculations.
     * @param overrides
     * @returns list of calculations contract addresses
     */
    getCalculations(overrides?: CallOverrides): Promise<Address[]>;
    /**
     * Get the suggested Usdc exchange rate for an token.
     * @param token
     * @param overrides
     * @returns Usdc exchange rate (6 decimals)
     */
    getPriceUsdc(token: Address, overrides?: CallOverrides): Promise<Usdc>;
    /**
     * Get the normalized Usdc value for the token and corresponding quantity.
     * @param token
     * @param amount
     * @param overrides
     * @returns Usdc exchange rate (6 decimals)
     */
    getNormalizedValueUsdc(token: Address, amount: Integer, overrides?: CallOverrides): Promise<Usdc>;
    /**
     * Get the token address that lens considers Usdc.
     * @param overrides
     * @returns address
     */
    getUsdcAddress(overrides?: CallOverrides): Promise<Address>;
    /**
     * Test if a token address is a curve liquidity provider token.
     * @param lpToken
     * @param overrides
     * @returns test result
     */
    isCurveLpToken(lpToken: Address, overrides?: CallOverrides): Promise<boolean>;
    /**
     * Get Usdc exchange rate for a curve liquidity provider token.
     * @param lpToken
     * @param overrides
     * @returns Usdc exchange rate (6 decimals)
     */
    getCurvePriceUsdc(lpToken: Address, overrides?: CallOverrides): Promise<Usdc>;
    /**
     * Get Usdc exchange rate of underlying token of the curve liquidity provider
     * token's pool.
     * @param lpToken
     * @param overrides
     * @returns Usdc exchange rate (6 decimals)
     */
    getBasePrice(lpToken: Address, overrides?: CallOverrides): Promise<Usdc>;
    /**
     * Get virtual price for a curve liquidity provider token.
     * @param lpToken
     * @param overrides
     * @returns virtual price
     */
    getVirtualPrice(lpToken: Address, overrides?: CallOverrides): Promise<Integer>;
    /**
     * Get the contract address that lens considers as Curve Registry.
     * @param overrides
     * @returns
     */
    getCurveRegistryAddress(overrides?: CallOverrides): Promise<Integer>;
    /**
     * Test if a token address is an iron bank market.
     * @param token
     * @param overrides
     * @returns test result
     */
    isIronBankMarket(token: Address, overrides?: CallOverrides): Promise<boolean>;
    /**
     * Get Usdc exchange rate for an iron bank market token.
     * @param token
     * @param overrides
     * @returns Usdc exchange rate (6 decimals)
     */
    getIronBankMarketPriceUsdc(token: Address, overrides?: CallOverrides): Promise<Usdc>;
    /**
     * Get all the iron bank market addresses.
     * @param overrides
     * @returns list of iron bank market addresses
     */
    getIronBankMarkets(overrides?: CallOverrides): Promise<Address[]>;
    /**
     * Test if a token address is a sushiswap liquidity provider token.
     * @param token
     * @param overrides
     * @returns test result
     */
    isLpToken(token: Address, overrides?: CallOverrides): Promise<boolean>;
    /**
     * Get exchange rate between two tokens from the sushiswap router.
     * @param token0
     * @param token1
     * @param overrides
     * @returns exchange rate
     */
    getPriceFromRouter(token0: Address, token1: Address, overrides?: CallOverrides): Promise<Integer>;
    /**
     * Get Usdc exchange rate for a token.
     * @param token
     * @param overrides
     * @returns Usdc exchange rate (6 decimals)
     */
    getPriceFromRouterUsdc(token: Address, overrides?: CallOverrides): Promise<Usdc>;
    /**
     * Get total liquidity for a liquidity provider token in Usdc
     * @param token
     * @param overrides
     * @returns Usdc liquidity (6 decimals)
     */
    getLpTokenTotalLiquidityUsdc(token: Address, overrides?: CallOverrides): Promise<Usdc>;
    /**
     * Get Usdc exchange rate for a sushiswap liquidity provider token.
     * @param token
     * @param overrides
     * @returns Usdc exchange rate (6 decimals)
     */
    getLpTokenPriceUsdc(token: Address, overrides?: CallOverrides): Promise<Integer>;
}
