import type { BaseContract, BigNumber, BigNumberish, BytesLike, CallOverrides, ContractTransaction, Overrides, PopulatedTransaction, Signer, utils } from "ethers";
import type { FunctionFragment, Result, EventFragment } from "@ethersproject/abi";
import type { Listener, Provider } from "@ethersproject/providers";
import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common";
export declare namespace LeveredPositionsLens {
    type PositionInfoStruct = {
        collateralAssetPrice: BigNumberish;
        borrowedAssetPrice: BigNumberish;
        positionSupplyAmount: BigNumberish;
        positionValue: BigNumberish;
        debtAmount: BigNumberish;
        debtValue: BigNumberish;
        equityAmount: BigNumberish;
        equityValue: BigNumberish;
        currentApy: BigNumberish;
        debtRatio: BigNumberish;
        liquidationThreshold: BigNumberish;
        safetyBuffer: BigNumberish;
    };
    type PositionInfoStructOutput = [
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber
    ] & {
        collateralAssetPrice: BigNumber;
        borrowedAssetPrice: BigNumber;
        positionSupplyAmount: BigNumber;
        positionValue: BigNumber;
        debtAmount: BigNumber;
        debtValue: BigNumber;
        equityAmount: BigNumber;
        equityValue: BigNumber;
        currentApy: BigNumber;
        debtRatio: BigNumber;
        liquidationThreshold: BigNumber;
        safetyBuffer: BigNumber;
    };
}
export interface LeveredPositionsLensInterface extends utils.Interface {
    functions: {
        "factory()": FunctionFragment;
        "getBorrowRateAtRatio(address,address,uint256,uint256)": FunctionFragment;
        "getBorrowableMarketsAndRates(address)": FunctionFragment;
        "getCollateralMarkets()": FunctionFragment;
        "getLeverageRatioAfterFunding(address,uint256)": FunctionFragment;
        "getNetAPY(uint256,uint256,address,address,uint256)": FunctionFragment;
        "getNetApyForPosition(address,uint256)": FunctionFragment;
        "getNetApyForPositionAfterFunding(address,uint256,uint256)": FunctionFragment;
        "getPositionInfo(address,uint256)": FunctionFragment;
        "getPositionsInfo(address[],uint256[])": FunctionFragment;
        "initialize(address)": FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: "factory" | "getBorrowRateAtRatio" | "getBorrowableMarketsAndRates" | "getCollateralMarkets" | "getLeverageRatioAfterFunding" | "getNetAPY" | "getNetApyForPosition" | "getNetApyForPositionAfterFunding" | "getPositionInfo" | "getPositionsInfo" | "initialize"): FunctionFragment;
    encodeFunctionData(functionFragment: "factory", values?: undefined): string;
    encodeFunctionData(functionFragment: "getBorrowRateAtRatio", values: [string, string, BigNumberish, BigNumberish]): string;
    encodeFunctionData(functionFragment: "getBorrowableMarketsAndRates", values: [string]): string;
    encodeFunctionData(functionFragment: "getCollateralMarkets", values?: undefined): string;
    encodeFunctionData(functionFragment: "getLeverageRatioAfterFunding", values: [string, BigNumberish]): string;
    encodeFunctionData(functionFragment: "getNetAPY", values: [BigNumberish, BigNumberish, string, string, BigNumberish]): string;
    encodeFunctionData(functionFragment: "getNetApyForPosition", values: [string, BigNumberish]): string;
    encodeFunctionData(functionFragment: "getNetApyForPositionAfterFunding", values: [string, BigNumberish, BigNumberish]): string;
    encodeFunctionData(functionFragment: "getPositionInfo", values: [string, BigNumberish]): string;
    encodeFunctionData(functionFragment: "getPositionsInfo", values: [string[], BigNumberish[]]): string;
    encodeFunctionData(functionFragment: "initialize", values: [string]): string;
    decodeFunctionResult(functionFragment: "factory", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getBorrowRateAtRatio", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getBorrowableMarketsAndRates", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getCollateralMarkets", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getLeverageRatioAfterFunding", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getNetAPY", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getNetApyForPosition", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getNetApyForPositionAfterFunding", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getPositionInfo", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getPositionsInfo", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result;
    events: {
        "Initialized(uint8)": EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment;
}
export interface InitializedEventObject {
    version: number;
}
export type InitializedEvent = TypedEvent<[number], InitializedEventObject>;
export type InitializedEventFilter = TypedEventFilter<InitializedEvent>;
export interface LeveredPositionsLens extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: LeveredPositionsLensInterface;
    queryFilter<TEvent extends TypedEvent>(event: TypedEventFilter<TEvent>, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise<Array<TEvent>>;
    listeners<TEvent extends TypedEvent>(eventFilter?: TypedEventFilter<TEvent>): Array<TypedListener<TEvent>>;
    listeners(eventName?: string): Array<Listener>;
    removeAllListeners<TEvent extends TypedEvent>(eventFilter: TypedEventFilter<TEvent>): this;
    removeAllListeners(eventName?: string): this;
    off: OnEvent<this>;
    on: OnEvent<this>;
    once: OnEvent<this>;
    removeListener: OnEvent<this>;
    functions: {
        factory(overrides?: CallOverrides): Promise<[string]>;
        getBorrowRateAtRatio(_collateralMarket: string, _stableMarket: string, _equityAmount: BigNumberish, _targetLeverageRatio: BigNumberish, overrides?: CallOverrides): Promise<[BigNumber]>;
        getBorrowableMarketsAndRates(_collateralMarket: string, overrides?: CallOverrides): Promise<[
            string[],
            string[],
            BigNumber[],
            string[],
            string[],
            BigNumber[],
            number[]
        ] & {
            markets: string[];
            underlyings: string[];
            underlyingsPrices: BigNumber[];
            names: string[];
            symbols: string[];
            rates: BigNumber[];
            decimals: number[];
        }>;
        getCollateralMarkets(overrides?: CallOverrides): Promise<[
            string[],
            string[],
            string[],
            BigNumber[],
            string[],
            string[],
            number[],
            BigNumber[],
            BigNumber[]
        ] & {
            markets: string[];
            poolOfMarket: string[];
            underlyings: string[];
            underlyingPrices: BigNumber[];
            names: string[];
            symbols: string[];
            decimals: number[];
            totalUnderlyingSupplied: BigNumber[];
            ratesPerBlock: BigNumber[];
        }>;
        getLeverageRatioAfterFunding(pos: string, newFunding: BigNumberish, overrides?: CallOverrides): Promise<[BigNumber]>;
        getNetAPY(_supplyAPY: BigNumberish, _supplyAmount: BigNumberish, _collateralMarket: string, _stableMarket: string, _targetLeverageRatio: BigNumberish, overrides?: CallOverrides): Promise<[BigNumber] & {
            netAPY: BigNumber;
        }>;
        getNetApyForPosition(pos: string, supplyAPY: BigNumberish, overrides?: CallOverrides): Promise<[BigNumber]>;
        getNetApyForPositionAfterFunding(pos: string, supplyAPY: BigNumberish, newFunding: BigNumberish, overrides?: CallOverrides): Promise<[BigNumber]>;
        getPositionInfo(pos: string, supplyApy: BigNumberish, overrides?: CallOverrides): Promise<[
            LeveredPositionsLens.PositionInfoStructOutput
        ] & {
            info: LeveredPositionsLens.PositionInfoStructOutput;
        }>;
        getPositionsInfo(positions: string[], supplyApys: BigNumberish[], overrides?: CallOverrides): Promise<[
            LeveredPositionsLens.PositionInfoStructOutput[]
        ] & {
            infos: LeveredPositionsLens.PositionInfoStructOutput[];
        }>;
        initialize(_factory: string, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
    };
    factory(overrides?: CallOverrides): Promise<string>;
    getBorrowRateAtRatio(_collateralMarket: string, _stableMarket: string, _equityAmount: BigNumberish, _targetLeverageRatio: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
    getBorrowableMarketsAndRates(_collateralMarket: string, overrides?: CallOverrides): Promise<[
        string[],
        string[],
        BigNumber[],
        string[],
        string[],
        BigNumber[],
        number[]
    ] & {
        markets: string[];
        underlyings: string[];
        underlyingsPrices: BigNumber[];
        names: string[];
        symbols: string[];
        rates: BigNumber[];
        decimals: number[];
    }>;
    getCollateralMarkets(overrides?: CallOverrides): Promise<[
        string[],
        string[],
        string[],
        BigNumber[],
        string[],
        string[],
        number[],
        BigNumber[],
        BigNumber[]
    ] & {
        markets: string[];
        poolOfMarket: string[];
        underlyings: string[];
        underlyingPrices: BigNumber[];
        names: string[];
        symbols: string[];
        decimals: number[];
        totalUnderlyingSupplied: BigNumber[];
        ratesPerBlock: BigNumber[];
    }>;
    getLeverageRatioAfterFunding(pos: string, newFunding: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
    getNetAPY(_supplyAPY: BigNumberish, _supplyAmount: BigNumberish, _collateralMarket: string, _stableMarket: string, _targetLeverageRatio: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
    getNetApyForPosition(pos: string, supplyAPY: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
    getNetApyForPositionAfterFunding(pos: string, supplyAPY: BigNumberish, newFunding: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
    getPositionInfo(pos: string, supplyApy: BigNumberish, overrides?: CallOverrides): Promise<LeveredPositionsLens.PositionInfoStructOutput>;
    getPositionsInfo(positions: string[], supplyApys: BigNumberish[], overrides?: CallOverrides): Promise<LeveredPositionsLens.PositionInfoStructOutput[]>;
    initialize(_factory: string, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    callStatic: {
        factory(overrides?: CallOverrides): Promise<string>;
        getBorrowRateAtRatio(_collateralMarket: string, _stableMarket: string, _equityAmount: BigNumberish, _targetLeverageRatio: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        getBorrowableMarketsAndRates(_collateralMarket: string, overrides?: CallOverrides): Promise<[
            string[],
            string[],
            BigNumber[],
            string[],
            string[],
            BigNumber[],
            number[]
        ] & {
            markets: string[];
            underlyings: string[];
            underlyingsPrices: BigNumber[];
            names: string[];
            symbols: string[];
            rates: BigNumber[];
            decimals: number[];
        }>;
        getCollateralMarkets(overrides?: CallOverrides): Promise<[
            string[],
            string[],
            string[],
            BigNumber[],
            string[],
            string[],
            number[],
            BigNumber[],
            BigNumber[]
        ] & {
            markets: string[];
            poolOfMarket: string[];
            underlyings: string[];
            underlyingPrices: BigNumber[];
            names: string[];
            symbols: string[];
            decimals: number[];
            totalUnderlyingSupplied: BigNumber[];
            ratesPerBlock: BigNumber[];
        }>;
        getLeverageRatioAfterFunding(pos: string, newFunding: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        getNetAPY(_supplyAPY: BigNumberish, _supplyAmount: BigNumberish, _collateralMarket: string, _stableMarket: string, _targetLeverageRatio: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        getNetApyForPosition(pos: string, supplyAPY: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        getNetApyForPositionAfterFunding(pos: string, supplyAPY: BigNumberish, newFunding: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        getPositionInfo(pos: string, supplyApy: BigNumberish, overrides?: CallOverrides): Promise<LeveredPositionsLens.PositionInfoStructOutput>;
        getPositionsInfo(positions: string[], supplyApys: BigNumberish[], overrides?: CallOverrides): Promise<LeveredPositionsLens.PositionInfoStructOutput[]>;
        initialize(_factory: string, overrides?: CallOverrides): Promise<void>;
    };
    filters: {
        "Initialized(uint8)"(version?: null): InitializedEventFilter;
        Initialized(version?: null): InitializedEventFilter;
    };
    estimateGas: {
        factory(overrides?: CallOverrides): Promise<BigNumber>;
        getBorrowRateAtRatio(_collateralMarket: string, _stableMarket: string, _equityAmount: BigNumberish, _targetLeverageRatio: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        getBorrowableMarketsAndRates(_collateralMarket: string, overrides?: CallOverrides): Promise<BigNumber>;
        getCollateralMarkets(overrides?: CallOverrides): Promise<BigNumber>;
        getLeverageRatioAfterFunding(pos: string, newFunding: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        getNetAPY(_supplyAPY: BigNumberish, _supplyAmount: BigNumberish, _collateralMarket: string, _stableMarket: string, _targetLeverageRatio: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        getNetApyForPosition(pos: string, supplyAPY: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        getNetApyForPositionAfterFunding(pos: string, supplyAPY: BigNumberish, newFunding: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        getPositionInfo(pos: string, supplyApy: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        getPositionsInfo(positions: string[], supplyApys: BigNumberish[], overrides?: CallOverrides): Promise<BigNumber>;
        initialize(_factory: string, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
    };
    populateTransaction: {
        factory(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getBorrowRateAtRatio(_collateralMarket: string, _stableMarket: string, _equityAmount: BigNumberish, _targetLeverageRatio: BigNumberish, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getBorrowableMarketsAndRates(_collateralMarket: string, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getCollateralMarkets(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getLeverageRatioAfterFunding(pos: string, newFunding: BigNumberish, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getNetAPY(_supplyAPY: BigNumberish, _supplyAmount: BigNumberish, _collateralMarket: string, _stableMarket: string, _targetLeverageRatio: BigNumberish, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getNetApyForPosition(pos: string, supplyAPY: BigNumberish, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getNetApyForPositionAfterFunding(pos: string, supplyAPY: BigNumberish, newFunding: BigNumberish, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getPositionInfo(pos: string, supplyApy: BigNumberish, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getPositionsInfo(positions: string[], supplyApys: BigNumberish[], overrides?: CallOverrides): Promise<PopulatedTransaction>;
        initialize(_factory: string, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
    };
}
