import { JsonRpcProvider, Web3Provider } from "@ethersproject/providers";
import { ChainAddresses, ChainConfig, ChainDeployment, ChainParams, DeployedPlugins, FundingStrategy, InterestRateModel, RedemptionStrategy, SupportedAsset, SupportedChains } from "@ionicprotocol/types";
import { SignerWithAddress } from "@nomiclabs/hardhat-ethers/signers";
import { BigNumber, Contract, Signer } from "ethers";
import { EIP20Interface } from "../../typechain/EIP20Interface";
import { FeeDistributor } from "../../typechain/FeeDistributor";
import { IonicERC4626 as IonicERC4626 } from "../../typechain/IonicERC4626";
import { IonicFlywheelLensRouter as IonicFlywheelLensRouter } from "../../typechain/IonicFlywheelLensRouter";
import { IonicLiquidator } from "../../typechain/IonicLiquidator";
import { PoolDirectory } from "../../typechain/PoolDirectory";
import { PoolLens } from "../../typechain/PoolLens";
import { PoolLensSecondary } from "../../typechain/PoolLensSecondary";
import { Unitroller } from "../../typechain/Unitroller";
import { ChainLiquidationConfig } from "../modules/liquidation/config";
export type SupportedProvider = JsonRpcProvider | Web3Provider;
export type SupportedSigners = Signer | SignerWithAddress;
export type SignerOrProvider = SupportedSigners | SupportedProvider;
export type StaticContracts = {
    FeeDistributor: FeeDistributor;
    IonicFlywheelLensRouter: IonicFlywheelLensRouter;
    PoolDirectory: PoolDirectory;
    PoolLens: PoolLens;
    PoolLensSecondary: PoolLensSecondary;
    IonicLiquidator: IonicLiquidator;
    [contractName: string]: Contract;
};
export interface Logger {
    trace(message?: string, ...optionalParams: any[]): void;
    debug(message?: string, ...optionalParams: any[]): void;
    info(message?: string, ...optionalParams: any[]): void;
    warn(message?: string, ...optionalParams: any[]): void;
    error(message?: string, ...optionalParams: any[]): void;
    [x: string]: any;
}
export declare class IonicBase {
    static CTOKEN_ERROR_CODES: string[];
    _provider: SupportedProvider;
    _signer: SupportedSigners | null;
    static isSupportedProvider(provider: unknown): provider is SupportedProvider;
    static isSupportedSigner(signer: unknown): signer is SupportedSigners;
    static isSupportedSignerOrProvider(signerOrProvider: unknown): signerOrProvider is SignerOrProvider;
    _contracts: StaticContracts | undefined;
    chainConfig: ChainConfig;
    availableOracles: Array<string>;
    chainId: SupportedChains;
    chainDeployment: ChainDeployment;
    chainSpecificAddresses: ChainAddresses;
    chainSpecificParams: ChainParams;
    deployedPlugins: DeployedPlugins;
    marketToPlugin: Record<string, string>;
    liquidationConfig: ChainLiquidationConfig;
    supportedAssets: SupportedAsset[];
    redemptionStrategies: RedemptionStrategy[];
    fundingStrategies: FundingStrategy[];
    logger: Logger;
    get provider(): SupportedProvider;
    get signer(): SupportedSigners;
    set contracts(newContracts: Partial<StaticContracts>);
    get contracts(): StaticContracts;
    setSigner(signer: Signer): this;
    removeSigner(provider: SupportedProvider): this;
    constructor(signerOrProvider: SignerOrProvider, chainConfig: ChainConfig, logger?: Logger);
    deployPool(poolName: string, enforceWhitelist: boolean, closeFactor: BigNumber, liquidationIncentive: BigNumber, priceOracle: string, // Contract address
    whitelist: string[]): Promise<[string, string, string, number?]>;
    identifyInterestRateModel(interestRateModelAddress: string): Promise<InterestRateModel>;
    getInterestRateModel(assetAddress: string): Promise<InterestRateModel>;
    getPriceOracle(oracleAddress: string): string;
    getEIP20TokenInstance(address: string, signerOrProvider?: SignerOrProvider): EIP20Interface;
    getUnitrollerInstance(address: string, signerOrProvider?: SignerOrProvider): Unitroller;
    getPoolDirectoryInstance(signerOrProvider?: SignerOrProvider): Contract;
    getErc4626PluginInstance(address: string, signerOrProvider?: SignerOrProvider): IonicERC4626;
}
declare const IonicBaseWithModules: {
    new (...args: any[]): {
        getTotalValueLocked(whitelistedAdmin?: boolean): Promise<{
            totalSupply: BigNumber;
            totalBorrow: BigNumber;
        }>;
        getLiveAssets(): Promise<Set<SupportedAsset>>;
        _provider: SupportedProvider;
        _signer: SupportedSigners | null;
        _contracts: StaticContracts | undefined;
        chainConfig: ChainConfig;
        availableOracles: Array<string>;
        chainId: SupportedChains;
        chainDeployment: ChainDeployment;
        chainSpecificAddresses: ChainAddresses;
        chainSpecificParams: ChainParams;
        deployedPlugins: DeployedPlugins;
        marketToPlugin: Record<string, string>;
        liquidationConfig: ChainLiquidationConfig;
        supportedAssets: SupportedAsset[];
        redemptionStrategies: RedemptionStrategy[];
        fundingStrategies: FundingStrategy[];
        logger: Logger;
        readonly provider: SupportedProvider;
        readonly signer: SupportedSigners;
        contracts: StaticContracts;
        setSigner(signer: Signer): any;
        removeSigner(provider: SupportedProvider): any;
        deployPool(poolName: string, enforceWhitelist: boolean, closeFactor: BigNumber, liquidationIncentive: BigNumber, priceOracle: string, whitelist: string[]): Promise<[string, string, string, number?]>;
        identifyInterestRateModel(interestRateModelAddress: string): Promise<InterestRateModel>;
        getInterestRateModel(assetAddress: string): Promise<InterestRateModel>;
        getPriceOracle(oracleAddress: string): string;
        getEIP20TokenInstance(address: string, signerOrProvider?: SignerOrProvider): EIP20Interface;
        getUnitrollerInstance(address: string, signerOrProvider?: SignerOrProvider): Unitroller;
        getPoolDirectoryInstance(signerOrProvider?: SignerOrProvider): Contract;
        getErc4626PluginInstance(address: string, signerOrProvider?: SignerOrProvider): IonicERC4626;
    };
} & {
    new (...args: any[]): {
        fetchGasForCall(amount: BigNumber, address: string): Promise<{
            gasWEI: BigNumber;
            gasPrice: BigNumber;
            estimatedGas: BigNumber;
        }>;
        approve(cTokenAddress: string, underlyingTokenAddress: string): Promise<any>;
        enterMarkets(cTokenAddress: string, comptrollerAddress: string): Promise<import("ethers").ContractTransaction>;
        mint(cTokenAddress: string, amount: BigNumber): Promise<{
            errorCode: number;
            tx?: undefined;
        } | {
            tx: import("ethers").ContractTransaction;
            errorCode: null;
        }>;
        repay(cTokenAddress: string, isRepayingMax: boolean, amount: BigNumber): Promise<{
            errorCode: number;
            tx?: undefined;
        } | {
            tx: import("ethers").ContractTransaction;
            errorCode: null;
        }>;
        borrow(cTokenAddress: string, amount: BigNumber): Promise<{
            errorCode: number;
            tx?: undefined;
        } | {
            tx: import("ethers").ContractTransaction;
            errorCode: null;
        }>;
        withdraw(cTokenAddress: string, amount: BigNumber): Promise<{
            errorCode: number;
            tx?: undefined;
        } | {
            tx: import("ethers").ContractTransaction;
            errorCode: null;
        }>;
        swap(inputToken: string, amount: BigNumber, outputToken: string): Promise<import("ethers").ContractTransaction>;
        approveLiquidatorsRegistry(underlying: string): Promise<any>;
        getSwapTokens(outputToken: string): Promise<{
            underlyingToken: string;
            underlyingSymbol: string;
            underlyingDecimals: number;
        }[]>;
        getAmountOutAndSlippageOfSwap(inputToken: string, amount: BigNumber, outputToken: string): Promise<[BigNumber, BigNumber] & {
            outputAmount: BigNumber;
            slippage: BigNumber;
        }>;
        createContractInstance<T extends Contract>(abi: import("ethers").ContractInterface): (address: string, signerOrProvider?: SignerOrProvider) => T;
        createUnitroller: (address: string, signerOrProvider?: SignerOrProvider) => Unitroller;
        createIonicFlywheel: (address: string, signerOrProvider?: SignerOrProvider) => import("../../typechain/IonicFlywheel").IonicFlywheel;
        createFlywheelStaticRewards: (address: string, signerOrProvider?: SignerOrProvider) => import("../../typechain/FlywheelStaticRewards").FlywheelStaticRewards;
        createJumpRateModel: (address: string, signerOrProvider?: SignerOrProvider) => import("../../typechain/JumpRateModel").JumpRateModel;
        createComptroller(comptrollerAddress: string, signerOrProvider?: SignerOrProvider): import("../../typechain/IonicComptroller").IonicComptroller;
        createICErc20(address: string, signerOrProvider?: SignerOrProvider): import("../../typechain/ICErc20").ICErc20;
        createICErc20PluginRewards(cTokenAddress: string, signerOrProvider?: SignerOrProvider): import("../../typechain/ICErc20PluginRewards").ICErc20PluginRewards;
        createMasterPriceOracle(signerOrProvider?: SignerOrProvider): import("../../typechain/MasterPriceOracle").MasterPriceOracle;
        createCompoundMarketERC4626(address: string, signerOrProvider?: SignerOrProvider): import("../../typechain/CompoundMarketERC4626").CompoundMarketERC4626;
        createOptimizedAPRVault(address: string, signerOrProvider?: SignerOrProvider): import("../../typechain/OptimizedAPRVaultFirstExtension").OptimizedAPRVaultFirstExtension & import("../../typechain/OptimizedAPRVaultSecondExtension").OptimizedAPRVaultSecondExtension;
        createOptimizedVaultsRegistry(signerOrProvider?: SignerOrProvider): import("../../typechain/OptimizedVaultsRegistry").OptimizedVaultsRegistry;
        createIonicFlywheelLensRouter(signerOrProvider?: SignerOrProvider): IonicFlywheelLensRouter;
        createLeveredPositionFactory(signerOrProvider?: SignerOrProvider): import("../../typechain/ILeveredPositionFactory").ILeveredPositionFactory;
        createLeveredPosition(address: string, signerOrProvider?: SignerOrProvider): import("../../typechain/LeveredPosition").LeveredPosition;
        createLeveredPositionLens(signerOrProvider?: SignerOrProvider): import("../../typechain/LeveredPositionsLens").LeveredPositionsLens;
        createPoolLensSecondary(signerOrProvider?: SignerOrProvider): PoolLensSecondary;
        createILiquidatorsRegistry(signerOrProvider?: SignerOrProvider): import("../../typechain/ILiquidatorsRegistry").ILiquidatorsRegistry;
        createAuthoritiesRegistry(signerOrProvider?: SignerOrProvider): import("../../typechain/AuthoritiesRegistry").AuthoritiesRegistry;
        createPoolRolesAuthority(poolAuthAddress: string, signerOrProvider?: SignerOrProvider): import("../../typechain/PoolRolesAuthority").PoolRolesAuthority;
        _provider: SupportedProvider;
        _signer: SupportedSigners | null;
        _contracts: StaticContracts | undefined;
        chainConfig: ChainConfig;
        availableOracles: Array<string>;
        chainId: SupportedChains;
        chainDeployment: ChainDeployment;
        chainSpecificAddresses: ChainAddresses;
        chainSpecificParams: ChainParams;
        deployedPlugins: DeployedPlugins;
        marketToPlugin: Record<string, string>;
        liquidationConfig: ChainLiquidationConfig;
        supportedAssets: SupportedAsset[];
        redemptionStrategies: RedemptionStrategy[];
        fundingStrategies: FundingStrategy[];
        logger: Logger;
        readonly provider: SupportedProvider;
        readonly signer: SupportedSigners;
        contracts: StaticContracts;
        setSigner(signer: Signer): any;
        removeSigner(provider: SupportedProvider): any;
        deployPool(poolName: string, enforceWhitelist: boolean, closeFactor: BigNumber, liquidationIncentive: BigNumber, priceOracle: string, whitelist: string[]): Promise<[string, string, string, number?]>;
        identifyInterestRateModel(interestRateModelAddress: string): Promise<InterestRateModel>;
        getInterestRateModel(assetAddress: string): Promise<InterestRateModel>;
        getPriceOracle(oracleAddress: string): string;
        getEIP20TokenInstance(address: string, signerOrProvider?: SignerOrProvider): EIP20Interface;
        getUnitrollerInstance(address: string, signerOrProvider?: SignerOrProvider): Unitroller;
        getPoolDirectoryInstance(signerOrProvider?: SignerOrProvider): Contract;
        getErc4626PluginInstance(address: string, signerOrProvider?: SignerOrProvider): IonicERC4626;
    };
} & {
    new (...args: any[]): {
        chainLiquidationConfig: ChainLiquidationConfig;
        getPotentialLiquidations(excludedComptrollers?: string[], maxHealthFactor?: BigNumber, configOverrides?: ChainLiquidationConfig | undefined): Promise<[import("../modules/liquidation/utils").LiquidatablePool[], import("../modules/liquidation/utils").ErroredPool[]]>;
        liquidatePositions(liquidatablePool: import("../modules/liquidation/utils").LiquidatablePool): Promise<[{
            tx: import("../modules/liquidation/utils").EncodedLiquidationTx;
            error: string;
        }[], import("@ethersproject/abstract-provider").TransactionResponse[]]>;
        createContractInstance<T_1 extends Contract>(abi: import("ethers").ContractInterface): (address: string, signerOrProvider?: SignerOrProvider) => T_1;
        createUnitroller: (address: string, signerOrProvider?: SignerOrProvider) => Unitroller;
        createIonicFlywheel: (address: string, signerOrProvider?: SignerOrProvider) => import("../../typechain/IonicFlywheel").IonicFlywheel;
        createFlywheelStaticRewards: (address: string, signerOrProvider?: SignerOrProvider) => import("../../typechain/FlywheelStaticRewards").FlywheelStaticRewards;
        createJumpRateModel: (address: string, signerOrProvider?: SignerOrProvider) => import("../../typechain/JumpRateModel").JumpRateModel;
        createComptroller(comptrollerAddress: string, signerOrProvider?: SignerOrProvider): import("../../typechain/IonicComptroller").IonicComptroller;
        createICErc20(address: string, signerOrProvider?: SignerOrProvider): import("../../typechain/ICErc20").ICErc20;
        createICErc20PluginRewards(cTokenAddress: string, signerOrProvider?: SignerOrProvider): import("../../typechain/ICErc20PluginRewards").ICErc20PluginRewards;
        createMasterPriceOracle(signerOrProvider?: SignerOrProvider): import("../../typechain/MasterPriceOracle").MasterPriceOracle;
        createCompoundMarketERC4626(address: string, signerOrProvider?: SignerOrProvider): import("../../typechain/CompoundMarketERC4626").CompoundMarketERC4626;
        createOptimizedAPRVault(address: string, signerOrProvider?: SignerOrProvider): import("../../typechain/OptimizedAPRVaultFirstExtension").OptimizedAPRVaultFirstExtension & import("../../typechain/OptimizedAPRVaultSecondExtension").OptimizedAPRVaultSecondExtension;
        createOptimizedVaultsRegistry(signerOrProvider?: SignerOrProvider): import("../../typechain/OptimizedVaultsRegistry").OptimizedVaultsRegistry;
        createIonicFlywheelLensRouter(signerOrProvider?: SignerOrProvider): IonicFlywheelLensRouter;
        createLeveredPositionFactory(signerOrProvider?: SignerOrProvider): import("../../typechain/ILeveredPositionFactory").ILeveredPositionFactory;
        createLeveredPosition(address: string, signerOrProvider?: SignerOrProvider): import("../../typechain/LeveredPosition").LeveredPosition;
        createLeveredPositionLens(signerOrProvider?: SignerOrProvider): import("../../typechain/LeveredPositionsLens").LeveredPositionsLens;
        createPoolLensSecondary(signerOrProvider?: SignerOrProvider): PoolLensSecondary;
        createILiquidatorsRegistry(signerOrProvider?: SignerOrProvider): import("../../typechain/ILiquidatorsRegistry").ILiquidatorsRegistry;
        createAuthoritiesRegistry(signerOrProvider?: SignerOrProvider): import("../../typechain/AuthoritiesRegistry").AuthoritiesRegistry;
        createPoolRolesAuthority(poolAuthAddress: string, signerOrProvider?: SignerOrProvider): import("../../typechain/PoolRolesAuthority").PoolRolesAuthority;
        _provider: SupportedProvider;
        _signer: SupportedSigners | null;
        _contracts: StaticContracts | undefined;
        chainConfig: ChainConfig;
        availableOracles: Array<string>;
        chainId: SupportedChains;
        chainDeployment: ChainDeployment;
        chainSpecificAddresses: ChainAddresses;
        chainSpecificParams: ChainParams;
        deployedPlugins: DeployedPlugins;
        marketToPlugin: Record<string, string>;
        liquidationConfig: ChainLiquidationConfig;
        supportedAssets: SupportedAsset[];
        redemptionStrategies: RedemptionStrategy[];
        fundingStrategies: FundingStrategy[];
        logger: Logger;
        readonly provider: SupportedProvider;
        readonly signer: SupportedSigners;
        contracts: StaticContracts;
        setSigner(signer: Signer): any;
        removeSigner(provider: SupportedProvider): any;
        deployPool(poolName: string, enforceWhitelist: boolean, closeFactor: BigNumber, liquidationIncentive: BigNumber, priceOracle: string, whitelist: string[]): Promise<[string, string, string, number?]>;
        identifyInterestRateModel(interestRateModelAddress: string): Promise<InterestRateModel>;
        getInterestRateModel(assetAddress: string): Promise<InterestRateModel>;
        getPriceOracle(oracleAddress: string): string;
        getEIP20TokenInstance(address: string, signerOrProvider?: SignerOrProvider): EIP20Interface;
        getUnitrollerInstance(address: string, signerOrProvider?: SignerOrProvider): Unitroller;
        getPoolDirectoryInstance(signerOrProvider?: SignerOrProvider): Contract;
        getErc4626PluginInstance(address: string, signerOrProvider?: SignerOrProvider): IonicERC4626;
    };
} & {
    new (...args: any[]): {
        fetchPoolData(poolId: string, overrides?: import("ethers").CallOverrides): Promise<import("@ionicprotocol/types").IonicPoolData | null>;
        fetchPoolsManual(overrides?: import("ethers").CallOverrides): Promise<(import("@ionicprotocol/types").IonicPoolData | null)[] | undefined>;
        fetchPools({ filter, options }: {
            filter: string | null;
            options: {
                from: string;
            };
        }): Promise<import("@ionicprotocol/types").IonicPoolData[]>;
        isAuth(pool: string, market: string, role: import("@ionicprotocol/types").Roles, user: string): Promise<boolean>;
        createContractInstance<T_2 extends Contract>(abi: import("ethers").ContractInterface): (address: string, signerOrProvider?: SignerOrProvider) => T_2;
        createUnitroller: (address: string, signerOrProvider?: SignerOrProvider) => Unitroller;
        createIonicFlywheel: (address: string, signerOrProvider?: SignerOrProvider) => import("../../typechain/IonicFlywheel").IonicFlywheel;
        createFlywheelStaticRewards: (address: string, signerOrProvider?: SignerOrProvider) => import("../../typechain/FlywheelStaticRewards").FlywheelStaticRewards;
        createJumpRateModel: (address: string, signerOrProvider?: SignerOrProvider) => import("../../typechain/JumpRateModel").JumpRateModel;
        createComptroller(comptrollerAddress: string, signerOrProvider?: SignerOrProvider): import("../../typechain/IonicComptroller").IonicComptroller;
        createICErc20(address: string, signerOrProvider?: SignerOrProvider): import("../../typechain/ICErc20").ICErc20;
        createICErc20PluginRewards(cTokenAddress: string, signerOrProvider?: SignerOrProvider): import("../../typechain/ICErc20PluginRewards").ICErc20PluginRewards;
        createMasterPriceOracle(signerOrProvider?: SignerOrProvider): import("../../typechain/MasterPriceOracle").MasterPriceOracle;
        createCompoundMarketERC4626(address: string, signerOrProvider?: SignerOrProvider): import("../../typechain/CompoundMarketERC4626").CompoundMarketERC4626;
        createOptimizedAPRVault(address: string, signerOrProvider?: SignerOrProvider): import("../../typechain/OptimizedAPRVaultFirstExtension").OptimizedAPRVaultFirstExtension & import("../../typechain/OptimizedAPRVaultSecondExtension").OptimizedAPRVaultSecondExtension;
        createOptimizedVaultsRegistry(signerOrProvider?: SignerOrProvider): import("../../typechain/OptimizedVaultsRegistry").OptimizedVaultsRegistry;
        createIonicFlywheelLensRouter(signerOrProvider?: SignerOrProvider): IonicFlywheelLensRouter;
        createLeveredPositionFactory(signerOrProvider?: SignerOrProvider): import("../../typechain/ILeveredPositionFactory").ILeveredPositionFactory;
        createLeveredPosition(address: string, signerOrProvider?: SignerOrProvider): import("../../typechain/LeveredPosition").LeveredPosition;
        createLeveredPositionLens(signerOrProvider?: SignerOrProvider): import("../../typechain/LeveredPositionsLens").LeveredPositionsLens;
        createPoolLensSecondary(signerOrProvider?: SignerOrProvider): PoolLensSecondary;
        createILiquidatorsRegistry(signerOrProvider?: SignerOrProvider): import("../../typechain/ILiquidatorsRegistry").ILiquidatorsRegistry;
        createAuthoritiesRegistry(signerOrProvider?: SignerOrProvider): import("../../typechain/AuthoritiesRegistry").AuthoritiesRegistry;
        createPoolRolesAuthority(poolAuthAddress: string, signerOrProvider?: SignerOrProvider): import("../../typechain/PoolRolesAuthority").PoolRolesAuthority;
        _provider: SupportedProvider;
        _signer: SupportedSigners | null;
        _contracts: StaticContracts | undefined;
        chainConfig: ChainConfig;
        availableOracles: Array<string>;
        chainId: SupportedChains;
        chainDeployment: ChainDeployment;
        chainSpecificAddresses: ChainAddresses;
        chainSpecificParams: ChainParams;
        deployedPlugins: DeployedPlugins;
        marketToPlugin: Record<string, string>;
        liquidationConfig: ChainLiquidationConfig;
        supportedAssets: SupportedAsset[];
        redemptionStrategies: RedemptionStrategy[];
        fundingStrategies: FundingStrategy[];
        logger: Logger;
        readonly provider: SupportedProvider;
        readonly signer: SupportedSigners;
        contracts: StaticContracts;
        setSigner(signer: Signer): any;
        removeSigner(provider: SupportedProvider): any;
        deployPool(poolName: string, enforceWhitelist: boolean, closeFactor: BigNumber, liquidationIncentive: BigNumber, priceOracle: string, whitelist: string[]): Promise<[string, string, string, number?]>;
        identifyInterestRateModel(interestRateModelAddress: string): Promise<InterestRateModel>;
        getInterestRateModel(assetAddress: string): Promise<InterestRateModel>;
        getPriceOracle(oracleAddress: string): string;
        getEIP20TokenInstance(address: string, signerOrProvider?: SignerOrProvider): EIP20Interface;
        getUnitrollerInstance(address: string, signerOrProvider?: SignerOrProvider): Unitroller;
        getPoolDirectoryInstance(signerOrProvider?: SignerOrProvider): Contract;
        getErc4626PluginInstance(address: string, signerOrProvider?: SignerOrProvider): IonicERC4626;
    };
} & {
    new (...args: any[]): {
        COMPTROLLER_ERROR_CODES: string[];
        deployAsset(config: import("@ionicprotocol/types").MarketConfig): Promise<[string, string, import("@ethersproject/abstract-provider").TransactionReceipt]>;
        validateConfiguration(config: import("@ionicprotocol/types").MarketConfig): Promise<void>;
        deployMarket(config: import("@ionicprotocol/types").MarketConfig): Promise<[string, string, import("@ethersproject/abstract-provider").TransactionReceipt]>;
        getUpdatedAssets(mode: import("@ionicprotocol/types").FundOperationMode, index: number, assets: import("@ionicprotocol/types").NativePricedIonicAsset[], amount: BigNumber): Promise<import("@ionicprotocol/types").NativePricedIonicAsset[]>;
        createContractInstance<T_3 extends Contract>(abi: import("ethers").ContractInterface): (address: string, signerOrProvider?: SignerOrProvider) => T_3;
        createUnitroller: (address: string, signerOrProvider?: SignerOrProvider) => Unitroller;
        createIonicFlywheel: (address: string, signerOrProvider?: SignerOrProvider) => import("../../typechain/IonicFlywheel").IonicFlywheel;
        createFlywheelStaticRewards: (address: string, signerOrProvider?: SignerOrProvider) => import("../../typechain/FlywheelStaticRewards").FlywheelStaticRewards;
        createJumpRateModel: (address: string, signerOrProvider?: SignerOrProvider) => import("../../typechain/JumpRateModel").JumpRateModel;
        createComptroller(comptrollerAddress: string, signerOrProvider?: SignerOrProvider): import("../../typechain/IonicComptroller").IonicComptroller;
        createICErc20(address: string, signerOrProvider?: SignerOrProvider): import("../../typechain/ICErc20").ICErc20;
        createICErc20PluginRewards(cTokenAddress: string, signerOrProvider?: SignerOrProvider): import("../../typechain/ICErc20PluginRewards").ICErc20PluginRewards;
        createMasterPriceOracle(signerOrProvider?: SignerOrProvider): import("../../typechain/MasterPriceOracle").MasterPriceOracle;
        createCompoundMarketERC4626(address: string, signerOrProvider?: SignerOrProvider): import("../../typechain/CompoundMarketERC4626").CompoundMarketERC4626;
        createOptimizedAPRVault(address: string, signerOrProvider?: SignerOrProvider): import("../../typechain/OptimizedAPRVaultFirstExtension").OptimizedAPRVaultFirstExtension & import("../../typechain/OptimizedAPRVaultSecondExtension").OptimizedAPRVaultSecondExtension;
        createOptimizedVaultsRegistry(signerOrProvider?: SignerOrProvider): import("../../typechain/OptimizedVaultsRegistry").OptimizedVaultsRegistry;
        createIonicFlywheelLensRouter(signerOrProvider?: SignerOrProvider): IonicFlywheelLensRouter;
        createLeveredPositionFactory(signerOrProvider?: SignerOrProvider): import("../../typechain/ILeveredPositionFactory").ILeveredPositionFactory;
        createLeveredPosition(address: string, signerOrProvider?: SignerOrProvider): import("../../typechain/LeveredPosition").LeveredPosition;
        createLeveredPositionLens(signerOrProvider?: SignerOrProvider): import("../../typechain/LeveredPositionsLens").LeveredPositionsLens;
        createPoolLensSecondary(signerOrProvider?: SignerOrProvider): PoolLensSecondary;
        createILiquidatorsRegistry(signerOrProvider?: SignerOrProvider): import("../../typechain/ILiquidatorsRegistry").ILiquidatorsRegistry;
        createAuthoritiesRegistry(signerOrProvider?: SignerOrProvider): import("../../typechain/AuthoritiesRegistry").AuthoritiesRegistry;
        createPoolRolesAuthority(poolAuthAddress: string, signerOrProvider?: SignerOrProvider): import("../../typechain/PoolRolesAuthority").PoolRolesAuthority;
        _provider: SupportedProvider;
        _signer: SupportedSigners | null;
        _contracts: StaticContracts | undefined;
        chainConfig: ChainConfig;
        availableOracles: Array<string>;
        chainId: SupportedChains;
        chainDeployment: ChainDeployment;
        chainSpecificAddresses: ChainAddresses;
        chainSpecificParams: ChainParams;
        deployedPlugins: DeployedPlugins;
        marketToPlugin: Record<string, string>;
        liquidationConfig: ChainLiquidationConfig;
        supportedAssets: SupportedAsset[];
        redemptionStrategies: RedemptionStrategy[];
        fundingStrategies: FundingStrategy[];
        logger: Logger;
        readonly provider: SupportedProvider;
        readonly signer: SupportedSigners;
        contracts: StaticContracts;
        setSigner(signer: Signer): any;
        removeSigner(provider: SupportedProvider): any;
        deployPool(poolName: string, enforceWhitelist: boolean, closeFactor: BigNumber, liquidationIncentive: BigNumber, priceOracle: string, whitelist: string[]): Promise<[string, string, string, number?]>;
        identifyInterestRateModel(interestRateModelAddress: string): Promise<InterestRateModel>;
        getInterestRateModel(assetAddress: string): Promise<InterestRateModel>;
        getPriceOracle(oracleAddress: string): string;
        getEIP20TokenInstance(address: string, signerOrProvider?: SignerOrProvider): EIP20Interface;
        getUnitrollerInstance(address: string, signerOrProvider?: SignerOrProvider): Unitroller;
        getPoolDirectoryInstance(signerOrProvider?: SignerOrProvider): Contract;
        getErc4626PluginInstance(address: string, signerOrProvider?: SignerOrProvider): IonicERC4626;
        getFlywheelMarketRewardsByPools(pools: string[]): Promise<import("../modules/Flywheel").FlywheelMarketRewardsInfo[][]>;
        getFlywheelMarketRewardsByPool(pool: string): Promise<import("../modules/Flywheel").FlywheelMarketRewardsInfo[]>;
        getFlywheelsByPool(poolAddress: string): Promise<import("../../typechain/IonicFlywheel").IonicFlywheel[]>;
        getFlywheelRewardsInfos(flywheelAddress: string): Promise<Record<string, any>>;
        getFlywheelMarketRewardsByPoolWithAPR(pool: string): Promise<import("../modules/Flywheel").FlywheelMarketRewardsInfo[]>;
        getFlywheelRewardsInfoForMarket(flywheelAddress: string, marketAddress: string): Promise<{
            0: BigNumber;
            1: number;
            length: 2;
            toString: (() => string) & (() => string);
            toLocaleString: (() => string) & (() => string);
            pop(): number | BigNumber | undefined;
            push(...items: (number | BigNumber)[]): number;
            concat(...items: ConcatArray<number | BigNumber>[]): (number | BigNumber)[];
            concat(...items: (number | BigNumber | ConcatArray<number | BigNumber>)[]): (number | BigNumber)[];
            join(separator?: string | undefined): string;
            reverse(): (number | BigNumber)[];
            shift(): number | BigNumber | undefined;
            slice(start?: number | undefined, end?: number | undefined): (number | BigNumber)[];
            sort(compareFn?: ((a: number | BigNumber, b: number | BigNumber) => number) | undefined): [BigNumber, number] & {
                rewardsPerSecond: BigNumber;
                rewardsEndTimestamp: number;
            };
            splice(start: number, deleteCount?: number | undefined): (number | BigNumber)[];
            splice(start: number, deleteCount: number, ...items: (number | BigNumber)[]): (number | BigNumber)[];
            unshift(...items: (number | BigNumber)[]): number;
            indexOf(searchElement: number | BigNumber, fromIndex?: number | undefined): number;
            lastIndexOf(searchElement: number | BigNumber, fromIndex?: number | undefined): number;
            every<S extends number | BigNumber>(predicate: (value: number | BigNumber, index: number, array: (number | BigNumber)[]) => value is S, thisArg?: any): this is S[];
            every(predicate: (value: number | BigNumber, index: number, array: (number | BigNumber)[]) => unknown, thisArg?: any): boolean;
            some(predicate: (value: number | BigNumber, index: number, array: (number | BigNumber)[]) => unknown, thisArg?: any): boolean;
            forEach(callbackfn: (value: number | BigNumber, index: number, array: (number | BigNumber)[]) => void, thisArg?: any): void;
            map<U>(callbackfn: (value: number | BigNumber, index: number, array: (number | BigNumber)[]) => U, thisArg?: any): U[];
            filter<S_1 extends number | BigNumber>(predicate: (value: number | BigNumber, index: number, array: (number | BigNumber)[]) => value is S_1, thisArg?: any): S_1[];
            filter(predicate: (value: number | BigNumber, index: number, array: (number | BigNumber)[]) => unknown, thisArg?: any): (number | BigNumber)[];
            reduce(callbackfn: (previousValue: number | BigNumber, currentValue: number | BigNumber, currentIndex: number, array: (number | BigNumber)[]) => number | BigNumber): number | BigNumber;
            reduce(callbackfn: (previousValue: number | BigNumber, currentValue: number | BigNumber, currentIndex: number, array: (number | BigNumber)[]) => number | BigNumber, initialValue: number | BigNumber): number | BigNumber;
            reduce<U_1>(callbackfn: (previousValue: U_1, currentValue: number | BigNumber, currentIndex: number, array: (number | BigNumber)[]) => U_1, initialValue: U_1): U_1;
            reduceRight(callbackfn: (previousValue: number | BigNumber, currentValue: number | BigNumber, currentIndex: number, array: (number | BigNumber)[]) => number | BigNumber): number | BigNumber;
            reduceRight(callbackfn: (previousValue: number | BigNumber, currentValue: number | BigNumber, currentIndex: number, array: (number | BigNumber)[]) => number | BigNumber, initialValue: number | BigNumber): number | BigNumber;
            reduceRight<U_2>(callbackfn: (previousValue: U_2, currentValue: number | BigNumber, currentIndex: number, array: (number | BigNumber)[]) => U_2, initialValue: U_2): U_2;
            find<S_2 extends number | BigNumber>(predicate: (value: number | BigNumber, index: number, obj: (number | BigNumber)[]) => value is S_2, thisArg?: any): S_2 | undefined;
            find(predicate: (value: number | BigNumber, index: number, obj: (number | BigNumber)[]) => unknown, thisArg?: any): number | BigNumber | undefined;
            findIndex(predicate: (value: number | BigNumber, index: number, obj: (number | BigNumber)[]) => unknown, thisArg?: any): number;
            fill(value: number | BigNumber, start?: number | undefined, end?: number | undefined): [BigNumber, number] & {
                rewardsPerSecond: BigNumber;
                rewardsEndTimestamp: number;
            };
            copyWithin(target: number, start?: number | undefined, end?: number | undefined): [BigNumber, number] & {
                rewardsPerSecond: BigNumber;
                rewardsEndTimestamp: number;
            };
            entries(): IterableIterator<[number, number | BigNumber]>;
            keys(): IterableIterator<number>;
            values(): IterableIterator<number | BigNumber>;
            includes(searchElement: number | BigNumber, fromIndex?: number | undefined): boolean;
            flatMap<U_3, This = undefined>(callback: (this: This, value: number | BigNumber, index: number, array: (number | BigNumber)[]) => U_3 | readonly U_3[], thisArg?: This | undefined): U_3[];
            flat<A, D extends number = 1>(this: A, depth?: D | undefined): FlatArray<A, D>[];
            [Symbol.iterator](): IterableIterator<number | BigNumber>;
            [Symbol.unscopables]: {
                [x: number]: boolean | undefined;
                length?: boolean | undefined;
                toString?: boolean | undefined;
                toLocaleString?: boolean | undefined;
                pop?: boolean | undefined;
                push?: boolean | undefined;
                concat?: boolean | undefined;
                join?: boolean | undefined;
                reverse?: boolean | undefined;
                shift?: boolean | undefined;
                slice?: boolean | undefined;
                sort?: boolean | undefined;
                splice?: boolean | undefined;
                unshift?: boolean | undefined;
                indexOf?: boolean | undefined;
                lastIndexOf?: boolean | undefined;
                every?: boolean | undefined;
                some?: boolean | undefined;
                forEach?: boolean | undefined;
                map?: boolean | undefined;
                filter?: boolean | undefined;
                reduce?: boolean | undefined;
                reduceRight?: boolean | undefined;
                find?: boolean | undefined;
                findIndex?: boolean | undefined;
                fill?: boolean | undefined;
                copyWithin?: boolean | undefined;
                entries?: boolean | undefined;
                keys?: boolean | undefined;
                values?: boolean | undefined;
                includes?: boolean | undefined;
                flatMap?: boolean | undefined;
                flat?: boolean | undefined;
                [Symbol.iterator]?: boolean | undefined;
                readonly [Symbol.unscopables]?: boolean | undefined;
                at?: boolean | undefined;
            };
            at(index: number): number | BigNumber | undefined;
            rewardsPerSecond: BigNumber;
            rewardsEndTimestamp: number;
            enabled: boolean;
        }>;
        getFlywheelClaimableRewardsForMarket(poolAddress: string, market: string, account: string): Promise<import("../modules/Flywheel").FlywheelClaimableRewards[]>;
        getFlywheelClaimableRewardsByMarkets(poolAddress: string, markets: string[], account: string): Promise<import("../modules/Flywheel").FlywheelClaimableRewards[]>;
        getFlywheelClaimableRewardsForPool(poolAddress: string, account: string): Promise<{
            flywheel: string;
            rewardToken: string;
            amount: BigNumber;
        }[]>;
        getAllFlywheelClaimableRewards(account: string): Promise<{
            rewardToken: string;
            amount: BigNumber;
        }[]>;
        getFlywheelEnabledMarkets(flywheelAddress: string): Promise<string[]>;
        setStaticRewardInfo(staticRewardsAddress: string, marketAddress: string, rewardInfo: import("../../typechain/FlywheelStaticRewards").FlywheelStaticRewards.RewardsInfoStruct): Promise<import("ethers").ContractTransaction>;
        setFlywheelRewards(flywheelAddress: string, rewardsAddress: string): Promise<import("ethers").ContractTransaction>;
        addMarketForRewardsToFlywheelCore(flywheelCoreAddress: string, marketAddress: string): Promise<import("ethers").ContractTransaction>;
        addStrategyForRewardsToFlywheelCore(flywheelCoreAddress: string, marketAddress: string): Promise<import("ethers").ContractTransaction>;
        addFlywheelCoreToComptroller(flywheelCoreAddress: string, comptrollerAddress: string): Promise<import("ethers").ContractTransaction>;
        claimRewardsForMarket(market: string, flywheels: string[]): Promise<import("ethers").ContractTransaction>;
        claimRewardsForMarkets(markets: string[], flywheels: string[]): Promise<import("ethers").ContractTransaction>;
        claimRewardsForPool(poolAddress: string): Promise<import("ethers").ContractTransaction>;
        claimRewardsForRewardToken(rewardToken: string): Promise<import("ethers").ContractTransaction>;
        claimAllRewards(): Promise<import("ethers").ContractTransaction>;
    };
} & {
    new (...args: any[]): {
        getFlywheelMarketRewardsByPools(pools: string[]): Promise<import("../modules/Flywheel").FlywheelMarketRewardsInfo[][]>;
        getFlywheelMarketRewardsByPool(pool: string): Promise<import("../modules/Flywheel").FlywheelMarketRewardsInfo[]>;
        getFlywheelsByPool(poolAddress: string): Promise<import("../../typechain/IonicFlywheel").IonicFlywheel[]>;
        getFlywheelRewardsInfos(flywheelAddress: string): Promise<Record<string, any>>;
        getFlywheelMarketRewardsByPoolWithAPR(pool: string): Promise<import("../modules/Flywheel").FlywheelMarketRewardsInfo[]>;
        getFlywheelRewardsInfoForMarket(flywheelAddress: string, marketAddress: string): Promise<{
            0: BigNumber;
            1: number;
            length: 2;
            toString: (() => string) & (() => string);
            toLocaleString: (() => string) & (() => string);
            pop(): number | BigNumber | undefined;
            push(...items: (number | BigNumber)[]): number;
            concat(...items: ConcatArray<number | BigNumber>[]): (number | BigNumber)[];
            concat(...items: (number | BigNumber | ConcatArray<number | BigNumber>)[]): (number | BigNumber)[];
            join(separator?: string | undefined): string;
            reverse(): (number | BigNumber)[];
            shift(): number | BigNumber | undefined;
            slice(start?: number | undefined, end?: number | undefined): (number | BigNumber)[];
            sort(compareFn?: ((a: number | BigNumber, b: number | BigNumber) => number) | undefined): [BigNumber, number] & {
                rewardsPerSecond: BigNumber;
                rewardsEndTimestamp: number;
            };
            splice(start: number, deleteCount?: number | undefined): (number | BigNumber)[];
            splice(start: number, deleteCount: number, ...items: (number | BigNumber)[]): (number | BigNumber)[];
            unshift(...items: (number | BigNumber)[]): number;
            indexOf(searchElement: number | BigNumber, fromIndex?: number | undefined): number;
            lastIndexOf(searchElement: number | BigNumber, fromIndex?: number | undefined): number;
            every<S extends number | BigNumber>(predicate: (value: number | BigNumber, index: number, array: (number | BigNumber)[]) => value is S, thisArg?: any): this is S[];
            every(predicate: (value: number | BigNumber, index: number, array: (number | BigNumber)[]) => unknown, thisArg?: any): boolean;
            some(predicate: (value: number | BigNumber, index: number, array: (number | BigNumber)[]) => unknown, thisArg?: any): boolean;
            forEach(callbackfn: (value: number | BigNumber, index: number, array: (number | BigNumber)[]) => void, thisArg?: any): void;
            map<U>(callbackfn: (value: number | BigNumber, index: number, array: (number | BigNumber)[]) => U, thisArg?: any): U[];
            filter<S_1 extends number | BigNumber>(predicate: (value: number | BigNumber, index: number, array: (number | BigNumber)[]) => value is S_1, thisArg?: any): S_1[];
            filter(predicate: (value: number | BigNumber, index: number, array: (number | BigNumber)[]) => unknown, thisArg?: any): (number | BigNumber)[];
            reduce(callbackfn: (previousValue: number | BigNumber, currentValue: number | BigNumber, currentIndex: number, array: (number | BigNumber)[]) => number | BigNumber): number | BigNumber;
            reduce(callbackfn: (previousValue: number | BigNumber, currentValue: number | BigNumber, currentIndex: number, array: (number | BigNumber)[]) => number | BigNumber, initialValue: number | BigNumber): number | BigNumber;
            reduce<U_1>(callbackfn: (previousValue: U_1, currentValue: number | BigNumber, currentIndex: number, array: (number | BigNumber)[]) => U_1, initialValue: U_1): U_1;
            reduceRight(callbackfn: (previousValue: number | BigNumber, currentValue: number | BigNumber, currentIndex: number, array: (number | BigNumber)[]) => number | BigNumber): number | BigNumber;
            reduceRight(callbackfn: (previousValue: number | BigNumber, currentValue: number | BigNumber, currentIndex: number, array: (number | BigNumber)[]) => number | BigNumber, initialValue: number | BigNumber): number | BigNumber;
            reduceRight<U_2>(callbackfn: (previousValue: U_2, currentValue: number | BigNumber, currentIndex: number, array: (number | BigNumber)[]) => U_2, initialValue: U_2): U_2;
            find<S_2 extends number | BigNumber>(predicate: (value: number | BigNumber, index: number, obj: (number | BigNumber)[]) => value is S_2, thisArg?: any): S_2 | undefined;
            find(predicate: (value: number | BigNumber, index: number, obj: (number | BigNumber)[]) => unknown, thisArg?: any): number | BigNumber | undefined;
            findIndex(predicate: (value: number | BigNumber, index: number, obj: (number | BigNumber)[]) => unknown, thisArg?: any): number;
            fill(value: number | BigNumber, start?: number | undefined, end?: number | undefined): [BigNumber, number] & {
                rewardsPerSecond: BigNumber;
                rewardsEndTimestamp: number;
            };
            copyWithin(target: number, start?: number | undefined, end?: number | undefined): [BigNumber, number] & {
                rewardsPerSecond: BigNumber;
                rewardsEndTimestamp: number;
            };
            entries(): IterableIterator<[number, number | BigNumber]>;
            keys(): IterableIterator<number>;
            values(): IterableIterator<number | BigNumber>;
            includes(searchElement: number | BigNumber, fromIndex?: number | undefined): boolean;
            flatMap<U_3, This = undefined>(callback: (this: This, value: number | BigNumber, index: number, array: (number | BigNumber)[]) => U_3 | readonly U_3[], thisArg?: This | undefined): U_3[];
            flat<A, D extends number = 1>(this: A, depth?: D | undefined): FlatArray<A, D>[];
            [Symbol.iterator](): IterableIterator<number | BigNumber>;
            [Symbol.unscopables]: {
                [x: number]: boolean | undefined;
                length?: boolean | undefined;
                toString?: boolean | undefined;
                toLocaleString?: boolean | undefined;
                pop?: boolean | undefined;
                push?: boolean | undefined;
                concat?: boolean | undefined;
                join?: boolean | undefined;
                reverse?: boolean | undefined;
                shift?: boolean | undefined;
                slice?: boolean | undefined;
                sort?: boolean | undefined;
                splice?: boolean | undefined;
                unshift?: boolean | undefined;
                indexOf?: boolean | undefined;
                lastIndexOf?: boolean | undefined;
                every?: boolean | undefined;
                some?: boolean | undefined;
                forEach?: boolean | undefined;
                map?: boolean | undefined;
                filter?: boolean | undefined;
                reduce?: boolean | undefined;
                reduceRight?: boolean | undefined;
                find?: boolean | undefined;
                findIndex?: boolean | undefined;
                fill?: boolean | undefined;
                copyWithin?: boolean | undefined;
                entries?: boolean | undefined;
                keys?: boolean | undefined;
                values?: boolean | undefined;
                includes?: boolean | undefined;
                flatMap?: boolean | undefined;
                flat?: boolean | undefined;
                [Symbol.iterator]?: boolean | undefined;
                readonly [Symbol.unscopables]?: boolean | undefined;
                at?: boolean | undefined;
            };
            at(index: number): number | BigNumber | undefined;
            rewardsPerSecond: BigNumber;
            rewardsEndTimestamp: number;
            enabled: boolean;
        }>;
        getFlywheelClaimableRewardsForMarket(poolAddress: string, market: string, account: string): Promise<import("../modules/Flywheel").FlywheelClaimableRewards[]>;
        getFlywheelClaimableRewardsByMarkets(poolAddress: string, markets: string[], account: string): Promise<import("../modules/Flywheel").FlywheelClaimableRewards[]>;
        getFlywheelClaimableRewardsForPool(poolAddress: string, account: string): Promise<{
            flywheel: string;
            rewardToken: string;
            amount: BigNumber;
        }[]>;
        getAllFlywheelClaimableRewards(account: string): Promise<{
            rewardToken: string;
            amount: BigNumber;
        }[]>;
        getFlywheelEnabledMarkets(flywheelAddress: string): Promise<string[]>;
        setStaticRewardInfo(staticRewardsAddress: string, marketAddress: string, rewardInfo: import("../../typechain/FlywheelStaticRewards").FlywheelStaticRewards.RewardsInfoStruct): Promise<import("ethers").ContractTransaction>;
        setFlywheelRewards(flywheelAddress: string, rewardsAddress: string): Promise<import("ethers").ContractTransaction>;
        addMarketForRewardsToFlywheelCore(flywheelCoreAddress: string, marketAddress: string): Promise<import("ethers").ContractTransaction>;
        addStrategyForRewardsToFlywheelCore(flywheelCoreAddress: string, marketAddress: string): Promise<import("ethers").ContractTransaction>;
        addFlywheelCoreToComptroller(flywheelCoreAddress: string, comptrollerAddress: string): Promise<import("ethers").ContractTransaction>;
        claimRewardsForMarket(market: string, flywheels: string[]): Promise<import("ethers").ContractTransaction>;
        claimRewardsForMarkets(markets: string[], flywheels: string[]): Promise<import("ethers").ContractTransaction>;
        claimRewardsForPool(poolAddress: string): Promise<import("ethers").ContractTransaction>;
        claimRewardsForRewardToken(rewardToken: string): Promise<import("ethers").ContractTransaction>;
        claimAllRewards(): Promise<import("ethers").ContractTransaction>;
        createContractInstance<T_4 extends Contract>(abi: import("ethers").ContractInterface): (address: string, signerOrProvider?: SignerOrProvider) => T_4;
        createUnitroller: (address: string, signerOrProvider?: SignerOrProvider) => Unitroller;
        createIonicFlywheel: (address: string, signerOrProvider?: SignerOrProvider) => import("../../typechain/IonicFlywheel").IonicFlywheel;
        createFlywheelStaticRewards: (address: string, signerOrProvider?: SignerOrProvider) => import("../../typechain/FlywheelStaticRewards").FlywheelStaticRewards;
        createJumpRateModel: (address: string, signerOrProvider?: SignerOrProvider) => import("../../typechain/JumpRateModel").JumpRateModel;
        createComptroller(comptrollerAddress: string, signerOrProvider?: SignerOrProvider): import("../../typechain/IonicComptroller").IonicComptroller;
        createICErc20(address: string, signerOrProvider?: SignerOrProvider): import("../../typechain/ICErc20").ICErc20;
        createICErc20PluginRewards(cTokenAddress: string, signerOrProvider?: SignerOrProvider): import("../../typechain/ICErc20PluginRewards").ICErc20PluginRewards;
        createMasterPriceOracle(signerOrProvider?: SignerOrProvider): import("../../typechain/MasterPriceOracle").MasterPriceOracle;
        createCompoundMarketERC4626(address: string, signerOrProvider?: SignerOrProvider): import("../../typechain/CompoundMarketERC4626").CompoundMarketERC4626;
        createOptimizedAPRVault(address: string, signerOrProvider?: SignerOrProvider): import("../../typechain/OptimizedAPRVaultFirstExtension").OptimizedAPRVaultFirstExtension & import("../../typechain/OptimizedAPRVaultSecondExtension").OptimizedAPRVaultSecondExtension;
        createOptimizedVaultsRegistry(signerOrProvider?: SignerOrProvider): import("../../typechain/OptimizedVaultsRegistry").OptimizedVaultsRegistry;
        createIonicFlywheelLensRouter(signerOrProvider?: SignerOrProvider): IonicFlywheelLensRouter;
        createLeveredPositionFactory(signerOrProvider?: SignerOrProvider): import("../../typechain/ILeveredPositionFactory").ILeveredPositionFactory;
        createLeveredPosition(address: string, signerOrProvider?: SignerOrProvider): import("../../typechain/LeveredPosition").LeveredPosition;
        createLeveredPositionLens(signerOrProvider?: SignerOrProvider): import("../../typechain/LeveredPositionsLens").LeveredPositionsLens;
        createPoolLensSecondary(signerOrProvider?: SignerOrProvider): PoolLensSecondary;
        createILiquidatorsRegistry(signerOrProvider?: SignerOrProvider): import("../../typechain/ILiquidatorsRegistry").ILiquidatorsRegistry;
        createAuthoritiesRegistry(signerOrProvider?: SignerOrProvider): import("../../typechain/AuthoritiesRegistry").AuthoritiesRegistry;
        createPoolRolesAuthority(poolAuthAddress: string, signerOrProvider?: SignerOrProvider): import("../../typechain/PoolRolesAuthority").PoolRolesAuthority;
        _provider: SupportedProvider;
        _signer: SupportedSigners | null;
        _contracts: StaticContracts | undefined;
        chainConfig: ChainConfig;
        availableOracles: Array<string>;
        chainId: SupportedChains;
        chainDeployment: ChainDeployment;
        chainSpecificAddresses: ChainAddresses;
        chainSpecificParams: ChainParams;
        deployedPlugins: DeployedPlugins;
        marketToPlugin: Record<string, string>;
        liquidationConfig: ChainLiquidationConfig;
        supportedAssets: SupportedAsset[];
        redemptionStrategies: RedemptionStrategy[];
        fundingStrategies: FundingStrategy[];
        logger: Logger;
        readonly provider: SupportedProvider;
        readonly signer: SupportedSigners;
        contracts: StaticContracts;
        setSigner(signer: Signer): any;
        removeSigner(provider: SupportedProvider): any;
        deployPool(poolName: string, enforceWhitelist: boolean, closeFactor: BigNumber, liquidationIncentive: BigNumber, priceOracle: string, whitelist: string[]): Promise<[string, string, string, number?]>;
        identifyInterestRateModel(interestRateModelAddress: string): Promise<InterestRateModel>;
        getInterestRateModel(assetAddress: string): Promise<InterestRateModel>;
        getPriceOracle(oracleAddress: string): string;
        getEIP20TokenInstance(address: string, signerOrProvider?: SignerOrProvider): EIP20Interface;
        getUnitrollerInstance(address: string, signerOrProvider?: SignerOrProvider): Unitroller;
        getPoolDirectoryInstance(signerOrProvider?: SignerOrProvider): Contract;
        getErc4626PluginInstance(address: string, signerOrProvider?: SignerOrProvider): IonicERC4626;
    };
} & {
    new (...args: any[]): {
        getAllVaults(): Promise<import("@ionicprotocol/types").VaultData[]>;
        getClaimableRewardsForVaults(account: string): Promise<import("@ionicprotocol/types").FlywheelRewardsInfoForVault[]>;
        vaultApprove(vault: string, asset: string): Promise<any>;
        vaultDeposit(vault: string, amount: BigNumber): Promise<{
            tx: import("ethers").ContractTransaction;
        }>;
        vaultWithdraw(vault: string, amount: BigNumber): Promise<{
            tx: import("ethers").ContractTransaction;
        }>;
        getUpdatedVault(mode: import("@ionicprotocol/types").FundOperationMode, vault: import("@ionicprotocol/types").VaultData, amount: BigNumber): Promise<import("@ionicprotocol/types").VaultData>;
        getMaxWithdrawVault(vault: string): Promise<BigNumber>;
        getMaxDepositVault(vault: string): Promise<BigNumber>;
        claimRewardsForVault(vault: string): Promise<{
            tx: import("ethers").ContractTransaction;
        }>;
        createContractInstance<T_5 extends Contract>(abi: import("ethers").ContractInterface): (address: string, signerOrProvider?: SignerOrProvider) => T_5;
        createUnitroller: (address: string, signerOrProvider?: SignerOrProvider) => Unitroller;
        createIonicFlywheel: (address: string, signerOrProvider?: SignerOrProvider) => import("../../typechain/IonicFlywheel").IonicFlywheel;
        createFlywheelStaticRewards: (address: string, signerOrProvider?: SignerOrProvider) => import("../../typechain/FlywheelStaticRewards").FlywheelStaticRewards;
        createJumpRateModel: (address: string, signerOrProvider?: SignerOrProvider) => import("../../typechain/JumpRateModel").JumpRateModel;
        createComptroller(comptrollerAddress: string, signerOrProvider?: SignerOrProvider): import("../../typechain/IonicComptroller").IonicComptroller;
        createICErc20(address: string, signerOrProvider?: SignerOrProvider): import("../../typechain/ICErc20").ICErc20;
        createICErc20PluginRewards(cTokenAddress: string, signerOrProvider?: SignerOrProvider): import("../../typechain/ICErc20PluginRewards").ICErc20PluginRewards;
        createMasterPriceOracle(signerOrProvider?: SignerOrProvider): import("../../typechain/MasterPriceOracle").MasterPriceOracle;
        createCompoundMarketERC4626(address: string, signerOrProvider?: SignerOrProvider): import("../../typechain/CompoundMarketERC4626").CompoundMarketERC4626;
        createOptimizedAPRVault(address: string, signerOrProvider?: SignerOrProvider): import("../../typechain/OptimizedAPRVaultFirstExtension").OptimizedAPRVaultFirstExtension & import("../../typechain/OptimizedAPRVaultSecondExtension").OptimizedAPRVaultSecondExtension;
        createOptimizedVaultsRegistry(signerOrProvider?: SignerOrProvider): import("../../typechain/OptimizedVaultsRegistry").OptimizedVaultsRegistry;
        createIonicFlywheelLensRouter(signerOrProvider?: SignerOrProvider): IonicFlywheelLensRouter;
        createLeveredPositionFactory(signerOrProvider?: SignerOrProvider): import("../../typechain/ILeveredPositionFactory").ILeveredPositionFactory;
        createLeveredPosition(address: string, signerOrProvider?: SignerOrProvider): import("../../typechain/LeveredPosition").LeveredPosition;
        createLeveredPositionLens(signerOrProvider?: SignerOrProvider): import("../../typechain/LeveredPositionsLens").LeveredPositionsLens;
        createPoolLensSecondary(signerOrProvider?: SignerOrProvider): PoolLensSecondary;
        createILiquidatorsRegistry(signerOrProvider?: SignerOrProvider): import("../../typechain/ILiquidatorsRegistry").ILiquidatorsRegistry;
        createAuthoritiesRegistry(signerOrProvider?: SignerOrProvider): import("../../typechain/AuthoritiesRegistry").AuthoritiesRegistry;
        createPoolRolesAuthority(poolAuthAddress: string, signerOrProvider?: SignerOrProvider): import("../../typechain/PoolRolesAuthority").PoolRolesAuthority;
        _provider: SupportedProvider;
        _signer: SupportedSigners | null;
        _contracts: StaticContracts | undefined;
        chainConfig: ChainConfig;
        availableOracles: Array<string>;
        chainId: SupportedChains;
        chainDeployment: ChainDeployment;
        chainSpecificAddresses: ChainAddresses;
        chainSpecificParams: ChainParams;
        deployedPlugins: DeployedPlugins;
        marketToPlugin: Record<string, string>;
        liquidationConfig: ChainLiquidationConfig;
        supportedAssets: SupportedAsset[];
        redemptionStrategies: RedemptionStrategy[];
        fundingStrategies: FundingStrategy[];
        logger: Logger;
        readonly provider: SupportedProvider;
        readonly signer: SupportedSigners;
        contracts: StaticContracts;
        setSigner(signer: Signer): any;
        removeSigner(provider: SupportedProvider): any;
        deployPool(poolName: string, enforceWhitelist: boolean, closeFactor: BigNumber, liquidationIncentive: BigNumber, priceOracle: string, whitelist: string[]): Promise<[string, string, string, number?]>;
        identifyInterestRateModel(interestRateModelAddress: string): Promise<InterestRateModel>;
        getInterestRateModel(assetAddress: string): Promise<InterestRateModel>;
        getPriceOracle(oracleAddress: string): string;
        getEIP20TokenInstance(address: string, signerOrProvider?: SignerOrProvider): EIP20Interface;
        getUnitrollerInstance(address: string, signerOrProvider?: SignerOrProvider): Unitroller;
        getPoolDirectoryInstance(signerOrProvider?: SignerOrProvider): Contract;
        getErc4626PluginInstance(address: string, signerOrProvider?: SignerOrProvider): IonicERC4626;
    };
} & {
    new (...args: any[]): {
        getAllLeveredPositions(account: string): Promise<{
            openPositions: import("@ionicprotocol/types").OpenPosition[];
            newPositions: import("@ionicprotocol/types").NewPosition[];
        }>;
        getPositionsByAccount(account: string): Promise<{
            collateralMarket: string;
            borrowMarket: string;
            position: string;
            isClosed: boolean;
        }[]>;
        getPositionSupplyApy(cTokenAddress: string, amount: BigNumber): Promise<any>;
        getPositionBorrowApr(collateralMarket: string, borrowMarket: string, leverageRatio: BigNumber, amount: BigNumber): Promise<BigNumber>;
        leveredFactoryApprove(collateralUnderlying: string): Promise<any>;
        leveredPositionApprove(positionAddress: string, collateralUnderlying: string): Promise<any>;
        createAndFundPosition(collateralMarket: string, borrowMarket: string, fundingAsset: string, fundingAmount: BigNumber): Promise<import("ethers").ContractTransaction>;
        createAndFundPositionAtRatio(collateralMarket: string, borrowMarket: string, fundingAsset: string, fundingAmount: BigNumber, leverageRatio: BigNumber): Promise<import("ethers").ContractTransaction>;
        getRangeOfLeverageRatio(address: string): Promise<[BigNumber, BigNumber]>;
        isPositionClosed(address: string): Promise<boolean>;
        closeLeveredPosition(address: string, withdrawTo?: string | undefined): Promise<import("ethers").ContractTransaction | null>;
        adjustLeverageRatio(address: string, ratio: number): Promise<import("ethers").ContractTransaction>;
        fundPosition(positionAddress: string, underlyingToken: string, amount: BigNumber): Promise<import("ethers").ContractTransaction>;
        getNetAPY(supplyApy: BigNumber, supplyAmount: BigNumber, collateralMarket: string, borrowableMarket: string, leverageRatio: BigNumber): Promise<BigNumber>;
        getCurrentLeverageRatio(positionAddress: string): Promise<BigNumber>;
        getEquityAmount(positionAddress: string): Promise<BigNumber>;
        removeClosedPosition(positionAddress: string): Promise<import("ethers").ContractTransaction>;
        getPositionInfo(positionAddress: string, supplyApy: BigNumber): Promise<import("@ionicprotocol/types").PositionInfo>;
        getNetApyForPositionAfterFunding(positionAddress: string, supplyApy: BigNumber, newFunding: BigNumber): Promise<BigNumber>;
        getLeverageRatioAfterFunding(positionAddress: string, newFunding: BigNumber): Promise<BigNumber>;
        createContractInstance<T_6 extends Contract>(abi: import("ethers").ContractInterface): (address: string, signerOrProvider?: SignerOrProvider) => T_6;
        createUnitroller: (address: string, signerOrProvider?: SignerOrProvider) => Unitroller;
        createIonicFlywheel: (address: string, signerOrProvider?: SignerOrProvider) => import("../../typechain/IonicFlywheel").IonicFlywheel;
        createFlywheelStaticRewards: (address: string, signerOrProvider?: SignerOrProvider) => import("../../typechain/FlywheelStaticRewards").FlywheelStaticRewards;
        createJumpRateModel: (address: string, signerOrProvider?: SignerOrProvider) => import("../../typechain/JumpRateModel").JumpRateModel;
        createComptroller(comptrollerAddress: string, signerOrProvider?: SignerOrProvider): import("../../typechain/IonicComptroller").IonicComptroller;
        createICErc20(address: string, signerOrProvider?: SignerOrProvider): import("../../typechain/ICErc20").ICErc20;
        createICErc20PluginRewards(cTokenAddress: string, signerOrProvider?: SignerOrProvider): import("../../typechain/ICErc20PluginRewards").ICErc20PluginRewards;
        createMasterPriceOracle(signerOrProvider?: SignerOrProvider): import("../../typechain/MasterPriceOracle").MasterPriceOracle;
        createCompoundMarketERC4626(address: string, signerOrProvider?: SignerOrProvider): import("../../typechain/CompoundMarketERC4626").CompoundMarketERC4626;
        createOptimizedAPRVault(address: string, signerOrProvider?: SignerOrProvider): import("../../typechain/OptimizedAPRVaultFirstExtension").OptimizedAPRVaultFirstExtension & import("../../typechain/OptimizedAPRVaultSecondExtension").OptimizedAPRVaultSecondExtension;
        createOptimizedVaultsRegistry(signerOrProvider?: SignerOrProvider): import("../../typechain/OptimizedVaultsRegistry").OptimizedVaultsRegistry;
        createIonicFlywheelLensRouter(signerOrProvider?: SignerOrProvider): IonicFlywheelLensRouter;
        createLeveredPositionFactory(signerOrProvider?: SignerOrProvider): import("../../typechain/ILeveredPositionFactory").ILeveredPositionFactory;
        createLeveredPosition(address: string, signerOrProvider?: SignerOrProvider): import("../../typechain/LeveredPosition").LeveredPosition;
        createLeveredPositionLens(signerOrProvider?: SignerOrProvider): import("../../typechain/LeveredPositionsLens").LeveredPositionsLens;
        createPoolLensSecondary(signerOrProvider?: SignerOrProvider): PoolLensSecondary;
        createILiquidatorsRegistry(signerOrProvider?: SignerOrProvider): import("../../typechain/ILiquidatorsRegistry").ILiquidatorsRegistry;
        createAuthoritiesRegistry(signerOrProvider?: SignerOrProvider): import("../../typechain/AuthoritiesRegistry").AuthoritiesRegistry;
        createPoolRolesAuthority(poolAuthAddress: string, signerOrProvider?: SignerOrProvider): import("../../typechain/PoolRolesAuthority").PoolRolesAuthority;
        _provider: SupportedProvider;
        _signer: SupportedSigners | null;
        _contracts: StaticContracts | undefined;
        chainConfig: ChainConfig;
        availableOracles: Array<string>;
        chainId: SupportedChains;
        chainDeployment: ChainDeployment;
        chainSpecificAddresses: ChainAddresses;
        chainSpecificParams: ChainParams;
        deployedPlugins: DeployedPlugins;
        marketToPlugin: Record<string, string>;
        liquidationConfig: ChainLiquidationConfig;
        supportedAssets: SupportedAsset[];
        redemptionStrategies: RedemptionStrategy[];
        fundingStrategies: FundingStrategy[];
        logger: Logger;
        readonly provider: SupportedProvider;
        readonly signer: SupportedSigners;
        contracts: StaticContracts;
        setSigner(signer: Signer): any;
        removeSigner(provider: SupportedProvider): any;
        deployPool(poolName: string, enforceWhitelist: boolean, closeFactor: BigNumber, liquidationIncentive: BigNumber, priceOracle: string, whitelist: string[]): Promise<[string, string, string, number?]>;
        identifyInterestRateModel(interestRateModelAddress: string): Promise<InterestRateModel>;
        getInterestRateModel(assetAddress: string): Promise<InterestRateModel>;
        getPriceOracle(oracleAddress: string): string;
        getEIP20TokenInstance(address: string, signerOrProvider?: SignerOrProvider): EIP20Interface;
        getUnitrollerInstance(address: string, signerOrProvider?: SignerOrProvider): Unitroller;
        getPoolDirectoryInstance(signerOrProvider?: SignerOrProvider): Contract;
        getErc4626PluginInstance(address: string, signerOrProvider?: SignerOrProvider): IonicERC4626;
    };
} & {
    new (...args: any[]): {
        createContractInstance<T_7 extends Contract>(abi: import("ethers").ContractInterface): (address: string, signerOrProvider?: SignerOrProvider) => T_7;
        createUnitroller: (address: string, signerOrProvider?: SignerOrProvider) => Unitroller;
        createIonicFlywheel: (address: string, signerOrProvider?: SignerOrProvider) => import("../../typechain/IonicFlywheel").IonicFlywheel;
        createFlywheelStaticRewards: (address: string, signerOrProvider?: SignerOrProvider) => import("../../typechain/FlywheelStaticRewards").FlywheelStaticRewards;
        createJumpRateModel: (address: string, signerOrProvider?: SignerOrProvider) => import("../../typechain/JumpRateModel").JumpRateModel;
        createComptroller(comptrollerAddress: string, signerOrProvider?: SignerOrProvider): import("../../typechain/IonicComptroller").IonicComptroller;
        createICErc20(address: string, signerOrProvider?: SignerOrProvider): import("../../typechain/ICErc20").ICErc20;
        createICErc20PluginRewards(cTokenAddress: string, signerOrProvider?: SignerOrProvider): import("../../typechain/ICErc20PluginRewards").ICErc20PluginRewards;
        createMasterPriceOracle(signerOrProvider?: SignerOrProvider): import("../../typechain/MasterPriceOracle").MasterPriceOracle;
        createCompoundMarketERC4626(address: string, signerOrProvider?: SignerOrProvider): import("../../typechain/CompoundMarketERC4626").CompoundMarketERC4626;
        createOptimizedAPRVault(address: string, signerOrProvider?: SignerOrProvider): import("../../typechain/OptimizedAPRVaultFirstExtension").OptimizedAPRVaultFirstExtension & import("../../typechain/OptimizedAPRVaultSecondExtension").OptimizedAPRVaultSecondExtension;
        createOptimizedVaultsRegistry(signerOrProvider?: SignerOrProvider): import("../../typechain/OptimizedVaultsRegistry").OptimizedVaultsRegistry;
        createIonicFlywheelLensRouter(signerOrProvider?: SignerOrProvider): IonicFlywheelLensRouter;
        createLeveredPositionFactory(signerOrProvider?: SignerOrProvider): import("../../typechain/ILeveredPositionFactory").ILeveredPositionFactory;
        createLeveredPosition(address: string, signerOrProvider?: SignerOrProvider): import("../../typechain/LeveredPosition").LeveredPosition;
        createLeveredPositionLens(signerOrProvider?: SignerOrProvider): import("../../typechain/LeveredPositionsLens").LeveredPositionsLens;
        createPoolLensSecondary(signerOrProvider?: SignerOrProvider): PoolLensSecondary;
        createILiquidatorsRegistry(signerOrProvider?: SignerOrProvider): import("../../typechain/ILiquidatorsRegistry").ILiquidatorsRegistry;
        createAuthoritiesRegistry(signerOrProvider?: SignerOrProvider): import("../../typechain/AuthoritiesRegistry").AuthoritiesRegistry;
        createPoolRolesAuthority(poolAuthAddress: string, signerOrProvider?: SignerOrProvider): import("../../typechain/PoolRolesAuthority").PoolRolesAuthority;
        _provider: SupportedProvider;
        _signer: SupportedSigners | null;
        _contracts: StaticContracts | undefined;
        chainConfig: ChainConfig;
        availableOracles: Array<string>;
        chainId: SupportedChains;
        chainDeployment: ChainDeployment;
        chainSpecificAddresses: ChainAddresses;
        chainSpecificParams: ChainParams;
        deployedPlugins: DeployedPlugins;
        marketToPlugin: Record<string, string>;
        liquidationConfig: ChainLiquidationConfig;
        supportedAssets: SupportedAsset[];
        redemptionStrategies: RedemptionStrategy[];
        fundingStrategies: FundingStrategy[];
        logger: Logger;
        readonly provider: SupportedProvider;
        readonly signer: SupportedSigners;
        contracts: StaticContracts;
        setSigner(signer: Signer): any;
        removeSigner(provider: SupportedProvider): any;
        deployPool(poolName: string, enforceWhitelist: boolean, closeFactor: BigNumber, liquidationIncentive: BigNumber, priceOracle: string, whitelist: string[]): Promise<[string, string, string, number?]>;
        identifyInterestRateModel(interestRateModelAddress: string): Promise<InterestRateModel>;
        getInterestRateModel(assetAddress: string): Promise<InterestRateModel>;
        getPriceOracle(oracleAddress: string): string;
        getEIP20TokenInstance(address: string, signerOrProvider?: SignerOrProvider): EIP20Interface;
        getUnitrollerInstance(address: string, signerOrProvider?: SignerOrProvider): Unitroller;
        getPoolDirectoryInstance(signerOrProvider?: SignerOrProvider): Contract;
        getErc4626PluginInstance(address: string, signerOrProvider?: SignerOrProvider): IonicERC4626;
    };
} & {
    new (...args: any[]): {
        ratePerBlockToAPY(ratePerBlock: BigNumber, blocksPerMin: number): number;
        _provider: SupportedProvider;
        _signer: SupportedSigners | null;
        _contracts: StaticContracts | undefined;
        chainConfig: ChainConfig;
        availableOracles: Array<string>;
        chainId: SupportedChains;
        chainDeployment: ChainDeployment;
        chainSpecificAddresses: ChainAddresses;
        chainSpecificParams: ChainParams;
        deployedPlugins: DeployedPlugins;
        marketToPlugin: Record<string, string>;
        liquidationConfig: ChainLiquidationConfig;
        supportedAssets: SupportedAsset[];
        redemptionStrategies: RedemptionStrategy[];
        fundingStrategies: FundingStrategy[];
        logger: Logger;
        readonly provider: SupportedProvider;
        readonly signer: SupportedSigners;
        contracts: StaticContracts;
        setSigner(signer: Signer): any;
        removeSigner(provider: SupportedProvider): any;
        deployPool(poolName: string, enforceWhitelist: boolean, closeFactor: BigNumber, liquidationIncentive: BigNumber, priceOracle: string, whitelist: string[]): Promise<[string, string, string, number?]>;
        identifyInterestRateModel(interestRateModelAddress: string): Promise<InterestRateModel>;
        getInterestRateModel(assetAddress: string): Promise<InterestRateModel>;
        getPriceOracle(oracleAddress: string): string;
        getEIP20TokenInstance(address: string, signerOrProvider?: SignerOrProvider): EIP20Interface;
        getUnitrollerInstance(address: string, signerOrProvider?: SignerOrProvider): Unitroller;
        getPoolDirectoryInstance(signerOrProvider?: SignerOrProvider): Contract;
        getErc4626PluginInstance(address: string, signerOrProvider?: SignerOrProvider): IonicERC4626;
    };
} & typeof IonicBase;
export declare class IonicSdk extends IonicBaseWithModules {
}
export default IonicSdk;
