import type { BaseContract, BigNumber, BigNumberish, BytesLike, CallOverrides, ContractTransaction, Overrides, PopulatedTransaction, Signer, utils } from "ethers";
import type { FunctionFragment, Result } from "@ethersproject/abi";
import type { Listener, Provider } from "@ethersproject/providers";
import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common";
export interface ILeveredPositionFactoryInterface extends utils.Interface {
    functions: {
        "_setLiquidatorsRegistry(address)": FunctionFragment;
        "_setPairWhitelisted(address,address,bool)": FunctionFragment;
        "blocksPerYear()": FunctionFragment;
        "closeAndRemoveUserPosition(address)": FunctionFragment;
        "createAndFundPosition(address,address,address,uint256)": FunctionFragment;
        "createAndFundPositionAtRatio(address,address,address,uint256,uint256)": FunctionFragment;
        "createPosition(address,address)": FunctionFragment;
        "feeDistributor()": FunctionFragment;
        "getAccountsWithOpenPositions()": FunctionFragment;
        "getBorrowableMarketsByCollateral(address)": FunctionFragment;
        "getMinBorrowNative()": FunctionFragment;
        "getPositionsByAccount(address)": FunctionFragment;
        "getPositionsExtension(bytes4)": FunctionFragment;
        "getRedemptionStrategies(address,address)": FunctionFragment;
        "getWhitelistedCollateralMarkets()": FunctionFragment;
        "liquidatorsRegistry()": FunctionFragment;
        "owner()": FunctionFragment;
        "removeClosedPosition(address)": FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: "_setLiquidatorsRegistry" | "_setPairWhitelisted" | "blocksPerYear" | "closeAndRemoveUserPosition" | "createAndFundPosition" | "createAndFundPositionAtRatio" | "createPosition" | "feeDistributor" | "getAccountsWithOpenPositions" | "getBorrowableMarketsByCollateral" | "getMinBorrowNative" | "getPositionsByAccount" | "getPositionsExtension" | "getRedemptionStrategies" | "getWhitelistedCollateralMarkets" | "liquidatorsRegistry" | "owner" | "removeClosedPosition"): FunctionFragment;
    encodeFunctionData(functionFragment: "_setLiquidatorsRegistry", values: [string]): string;
    encodeFunctionData(functionFragment: "_setPairWhitelisted", values: [string, string, boolean]): string;
    encodeFunctionData(functionFragment: "blocksPerYear", values?: undefined): string;
    encodeFunctionData(functionFragment: "closeAndRemoveUserPosition", values: [string]): string;
    encodeFunctionData(functionFragment: "createAndFundPosition", values: [string, string, string, BigNumberish]): string;
    encodeFunctionData(functionFragment: "createAndFundPositionAtRatio", values: [string, string, string, BigNumberish, BigNumberish]): string;
    encodeFunctionData(functionFragment: "createPosition", values: [string, string]): string;
    encodeFunctionData(functionFragment: "feeDistributor", values?: undefined): string;
    encodeFunctionData(functionFragment: "getAccountsWithOpenPositions", values?: undefined): string;
    encodeFunctionData(functionFragment: "getBorrowableMarketsByCollateral", values: [string]): string;
    encodeFunctionData(functionFragment: "getMinBorrowNative", values?: undefined): string;
    encodeFunctionData(functionFragment: "getPositionsByAccount", values: [string]): string;
    encodeFunctionData(functionFragment: "getPositionsExtension", values: [BytesLike]): string;
    encodeFunctionData(functionFragment: "getRedemptionStrategies", values: [string, string]): string;
    encodeFunctionData(functionFragment: "getWhitelistedCollateralMarkets", values?: undefined): string;
    encodeFunctionData(functionFragment: "liquidatorsRegistry", values?: undefined): string;
    encodeFunctionData(functionFragment: "owner", values?: undefined): string;
    encodeFunctionData(functionFragment: "removeClosedPosition", values: [string]): string;
    decodeFunctionResult(functionFragment: "_setLiquidatorsRegistry", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "_setPairWhitelisted", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "blocksPerYear", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "closeAndRemoveUserPosition", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "createAndFundPosition", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "createAndFundPositionAtRatio", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "createPosition", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "feeDistributor", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getAccountsWithOpenPositions", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getBorrowableMarketsByCollateral", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getMinBorrowNative", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getPositionsByAccount", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getPositionsExtension", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getRedemptionStrategies", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getWhitelistedCollateralMarkets", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "liquidatorsRegistry", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "removeClosedPosition", data: BytesLike): Result;
    events: {};
}
export interface ILeveredPositionFactory extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: ILeveredPositionFactoryInterface;
    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: {
        _setLiquidatorsRegistry(_liquidatorsRegistry: string, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        _setPairWhitelisted(_collateralMarket: string, _stableMarket: string, _whitelisted: boolean, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        blocksPerYear(overrides?: CallOverrides): Promise<[BigNumber]>;
        closeAndRemoveUserPosition(position: string, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        createAndFundPosition(_collateralMarket: string, _stableMarket: string, _fundingAsset: string, _fundingAmount: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        createAndFundPositionAtRatio(_collateralMarket: string, _stableMarket: string, _fundingAsset: string, _fundingAmount: BigNumberish, _leverageRatio: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        createPosition(_collateralMarket: string, _stableMarket: string, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        feeDistributor(overrides?: CallOverrides): Promise<[string]>;
        getAccountsWithOpenPositions(overrides?: CallOverrides): Promise<[string[]]>;
        getBorrowableMarketsByCollateral(_collateralMarket: string, overrides?: CallOverrides): Promise<[string[]]>;
        getMinBorrowNative(overrides?: CallOverrides): Promise<[BigNumber]>;
        getPositionsByAccount(account: string, overrides?: CallOverrides): Promise<[string[], boolean[]]>;
        getPositionsExtension(msgSig: BytesLike, overrides?: CallOverrides): Promise<[string]>;
        getRedemptionStrategies(inputToken: string, outputToken: string, overrides?: CallOverrides): Promise<[
            string[],
            string[]
        ] & {
            strategies: string[];
            strategiesData: string[];
        }>;
        getWhitelistedCollateralMarkets(overrides?: CallOverrides): Promise<[string[]]>;
        liquidatorsRegistry(overrides?: CallOverrides): Promise<[string]>;
        owner(overrides?: CallOverrides): Promise<[string]>;
        removeClosedPosition(closedPosition: string, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
    };
    _setLiquidatorsRegistry(_liquidatorsRegistry: string, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    _setPairWhitelisted(_collateralMarket: string, _stableMarket: string, _whitelisted: boolean, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    blocksPerYear(overrides?: CallOverrides): Promise<BigNumber>;
    closeAndRemoveUserPosition(position: string, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    createAndFundPosition(_collateralMarket: string, _stableMarket: string, _fundingAsset: string, _fundingAmount: BigNumberish, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    createAndFundPositionAtRatio(_collateralMarket: string, _stableMarket: string, _fundingAsset: string, _fundingAmount: BigNumberish, _leverageRatio: BigNumberish, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    createPosition(_collateralMarket: string, _stableMarket: string, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    feeDistributor(overrides?: CallOverrides): Promise<string>;
    getAccountsWithOpenPositions(overrides?: CallOverrides): Promise<string[]>;
    getBorrowableMarketsByCollateral(_collateralMarket: string, overrides?: CallOverrides): Promise<string[]>;
    getMinBorrowNative(overrides?: CallOverrides): Promise<BigNumber>;
    getPositionsByAccount(account: string, overrides?: CallOverrides): Promise<[string[], boolean[]]>;
    getPositionsExtension(msgSig: BytesLike, overrides?: CallOverrides): Promise<string>;
    getRedemptionStrategies(inputToken: string, outputToken: string, overrides?: CallOverrides): Promise<[
        string[],
        string[]
    ] & {
        strategies: string[];
        strategiesData: string[];
    }>;
    getWhitelistedCollateralMarkets(overrides?: CallOverrides): Promise<string[]>;
    liquidatorsRegistry(overrides?: CallOverrides): Promise<string>;
    owner(overrides?: CallOverrides): Promise<string>;
    removeClosedPosition(closedPosition: string, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    callStatic: {
        _setLiquidatorsRegistry(_liquidatorsRegistry: string, overrides?: CallOverrides): Promise<void>;
        _setPairWhitelisted(_collateralMarket: string, _stableMarket: string, _whitelisted: boolean, overrides?: CallOverrides): Promise<void>;
        blocksPerYear(overrides?: CallOverrides): Promise<BigNumber>;
        closeAndRemoveUserPosition(position: string, overrides?: CallOverrides): Promise<boolean>;
        createAndFundPosition(_collateralMarket: string, _stableMarket: string, _fundingAsset: string, _fundingAmount: BigNumberish, overrides?: CallOverrides): Promise<string>;
        createAndFundPositionAtRatio(_collateralMarket: string, _stableMarket: string, _fundingAsset: string, _fundingAmount: BigNumberish, _leverageRatio: BigNumberish, overrides?: CallOverrides): Promise<string>;
        createPosition(_collateralMarket: string, _stableMarket: string, overrides?: CallOverrides): Promise<string>;
        feeDistributor(overrides?: CallOverrides): Promise<string>;
        getAccountsWithOpenPositions(overrides?: CallOverrides): Promise<string[]>;
        getBorrowableMarketsByCollateral(_collateralMarket: string, overrides?: CallOverrides): Promise<string[]>;
        getMinBorrowNative(overrides?: CallOverrides): Promise<BigNumber>;
        getPositionsByAccount(account: string, overrides?: CallOverrides): Promise<[string[], boolean[]]>;
        getPositionsExtension(msgSig: BytesLike, overrides?: CallOverrides): Promise<string>;
        getRedemptionStrategies(inputToken: string, outputToken: string, overrides?: CallOverrides): Promise<[
            string[],
            string[]
        ] & {
            strategies: string[];
            strategiesData: string[];
        }>;
        getWhitelistedCollateralMarkets(overrides?: CallOverrides): Promise<string[]>;
        liquidatorsRegistry(overrides?: CallOverrides): Promise<string>;
        owner(overrides?: CallOverrides): Promise<string>;
        removeClosedPosition(closedPosition: string, overrides?: CallOverrides): Promise<boolean>;
    };
    filters: {};
    estimateGas: {
        _setLiquidatorsRegistry(_liquidatorsRegistry: string, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        _setPairWhitelisted(_collateralMarket: string, _stableMarket: string, _whitelisted: boolean, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        blocksPerYear(overrides?: CallOverrides): Promise<BigNumber>;
        closeAndRemoveUserPosition(position: string, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        createAndFundPosition(_collateralMarket: string, _stableMarket: string, _fundingAsset: string, _fundingAmount: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        createAndFundPositionAtRatio(_collateralMarket: string, _stableMarket: string, _fundingAsset: string, _fundingAmount: BigNumberish, _leverageRatio: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        createPosition(_collateralMarket: string, _stableMarket: string, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        feeDistributor(overrides?: CallOverrides): Promise<BigNumber>;
        getAccountsWithOpenPositions(overrides?: CallOverrides): Promise<BigNumber>;
        getBorrowableMarketsByCollateral(_collateralMarket: string, overrides?: CallOverrides): Promise<BigNumber>;
        getMinBorrowNative(overrides?: CallOverrides): Promise<BigNumber>;
        getPositionsByAccount(account: string, overrides?: CallOverrides): Promise<BigNumber>;
        getPositionsExtension(msgSig: BytesLike, overrides?: CallOverrides): Promise<BigNumber>;
        getRedemptionStrategies(inputToken: string, outputToken: string, overrides?: CallOverrides): Promise<BigNumber>;
        getWhitelistedCollateralMarkets(overrides?: CallOverrides): Promise<BigNumber>;
        liquidatorsRegistry(overrides?: CallOverrides): Promise<BigNumber>;
        owner(overrides?: CallOverrides): Promise<BigNumber>;
        removeClosedPosition(closedPosition: string, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
    };
    populateTransaction: {
        _setLiquidatorsRegistry(_liquidatorsRegistry: string, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        _setPairWhitelisted(_collateralMarket: string, _stableMarket: string, _whitelisted: boolean, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        blocksPerYear(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        closeAndRemoveUserPosition(position: string, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        createAndFundPosition(_collateralMarket: string, _stableMarket: string, _fundingAsset: string, _fundingAmount: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        createAndFundPositionAtRatio(_collateralMarket: string, _stableMarket: string, _fundingAsset: string, _fundingAmount: BigNumberish, _leverageRatio: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        createPosition(_collateralMarket: string, _stableMarket: string, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        feeDistributor(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getAccountsWithOpenPositions(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getBorrowableMarketsByCollateral(_collateralMarket: string, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getMinBorrowNative(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getPositionsByAccount(account: string, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getPositionsExtension(msgSig: BytesLike, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getRedemptionStrategies(inputToken: string, outputToken: string, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getWhitelistedCollateralMarkets(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        liquidatorsRegistry(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        owner(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        removeClosedPosition(closedPosition: string, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
    };
}
