import { FlywheelRewardsInfoForVault, FundOperationMode, SupportedChains, VaultData } from "@ionicprotocol/types";
import { BigNumber, ContractTransaction } from "ethers";
import { CreateContractsModule } from "./CreateContracts";
export declare function withVaults<TBase extends CreateContractsModule = CreateContractsModule>(Base: TBase): {
    new (...args: any[]): {
        getAllVaults(): Promise<VaultData[]>;
        getClaimableRewardsForVaults(account: string): Promise<FlywheelRewardsInfoForVault[]>;
        vaultApprove(vault: string, asset: string): Promise<any>;
        vaultDeposit(vault: string, amount: BigNumber): Promise<{
            tx: ContractTransaction;
        }>;
        vaultWithdraw(vault: string, amount: BigNumber): Promise<{
            tx: ContractTransaction;
        }>;
        getUpdatedVault(mode: FundOperationMode, vault: VaultData, amount: BigNumber): Promise<VaultData>;
        getMaxWithdrawVault(vault: string): Promise<BigNumber>;
        getMaxDepositVault(vault: string): Promise<BigNumber>;
        claimRewardsForVault(vault: string): Promise<{
            tx: ContractTransaction;
        }>;
        createContractInstance<T extends import("ethers").Contract>(abi: import("ethers").ContractInterface): (address: string, signerOrProvider?: import("../IonicSdk").SignerOrProvider) => T;
        createUnitroller: (address: string, signerOrProvider?: import("../IonicSdk").SignerOrProvider) => import("../../typechain/Unitroller").Unitroller;
        createIonicFlywheel: (address: string, signerOrProvider?: import("../IonicSdk").SignerOrProvider) => import("../../typechain/IonicFlywheel").IonicFlywheel;
        createFlywheelStaticRewards: (address: string, signerOrProvider?: import("../IonicSdk").SignerOrProvider) => import("../../typechain/FlywheelStaticRewards").FlywheelStaticRewards;
        createJumpRateModel: (address: string, signerOrProvider?: import("../IonicSdk").SignerOrProvider) => import("../../typechain/JumpRateModel").JumpRateModel;
        createComptroller(comptrollerAddress: string, signerOrProvider?: import("../IonicSdk").SignerOrProvider): import("../../typechain/IonicComptroller").IonicComptroller;
        createICErc20(address: string, signerOrProvider?: import("../IonicSdk").SignerOrProvider): import("../../typechain/ICErc20").ICErc20;
        createICErc20PluginRewards(cTokenAddress: string, signerOrProvider?: import("../IonicSdk").SignerOrProvider): import("../../typechain/ICErc20PluginRewards").ICErc20PluginRewards;
        createMasterPriceOracle(signerOrProvider?: import("../IonicSdk").SignerOrProvider): import("../../typechain/MasterPriceOracle").MasterPriceOracle;
        createCompoundMarketERC4626(address: string, signerOrProvider?: import("../IonicSdk").SignerOrProvider): import("../../typechain/CompoundMarketERC4626").CompoundMarketERC4626;
        createOptimizedAPRVault(address: string, signerOrProvider?: import("../IonicSdk").SignerOrProvider): import("../../typechain/OptimizedAPRVaultFirstExtension").OptimizedAPRVaultFirstExtension & import("../../typechain/OptimizedAPRVaultSecondExtension").OptimizedAPRVaultSecondExtension;
        createOptimizedVaultsRegistry(signerOrProvider?: import("../IonicSdk").SignerOrProvider): import("../../typechain/OptimizedVaultsRegistry").OptimizedVaultsRegistry;
        createIonicFlywheelLensRouter(signerOrProvider?: import("../IonicSdk").SignerOrProvider): import("../../typechain/IonicFlywheelLensRouter").IonicFlywheelLensRouter;
        createLeveredPositionFactory(signerOrProvider?: import("../IonicSdk").SignerOrProvider): import("../../typechain/ILeveredPositionFactory").ILeveredPositionFactory;
        createLeveredPosition(address: string, signerOrProvider?: import("../IonicSdk").SignerOrProvider): import("../../typechain/LeveredPosition").LeveredPosition;
        createLeveredPositionLens(signerOrProvider?: import("../IonicSdk").SignerOrProvider): import("../../typechain/LeveredPositionsLens").LeveredPositionsLens;
        createPoolLensSecondary(signerOrProvider?: import("../IonicSdk").SignerOrProvider): import("../../typechain/PoolLensSecondary").PoolLensSecondary;
        createILiquidatorsRegistry(signerOrProvider?: import("../IonicSdk").SignerOrProvider): import("../../typechain/ILiquidatorsRegistry").ILiquidatorsRegistry;
        createAuthoritiesRegistry(signerOrProvider?: import("../IonicSdk").SignerOrProvider): import("../../typechain/AuthoritiesRegistry").AuthoritiesRegistry;
        createPoolRolesAuthority(poolAuthAddress: string, signerOrProvider?: import("../IonicSdk").SignerOrProvider): import("../../typechain/PoolRolesAuthority").PoolRolesAuthority;
        _provider: import("../IonicSdk").SupportedProvider;
        _signer: import("../IonicSdk").SupportedSigners | null;
        _contracts: import("../IonicSdk").StaticContracts | undefined;
        chainConfig: import("@ionicprotocol/types").ChainConfig;
        availableOracles: string[];
        chainId: SupportedChains;
        chainDeployment: import("@ionicprotocol/types").ChainDeployment;
        chainSpecificAddresses: import("@ionicprotocol/types").ChainAddresses;
        chainSpecificParams: import("@ionicprotocol/types").ChainParams;
        deployedPlugins: import("@ionicprotocol/types").DeployedPlugins;
        marketToPlugin: Record<string, string>;
        liquidationConfig: import("..").ChainLiquidationConfig;
        supportedAssets: import("@ionicprotocol/types").SupportedAsset[];
        redemptionStrategies: import("@ionicprotocol/types").RedemptionStrategy[];
        fundingStrategies: import("@ionicprotocol/types").FundingStrategy[];
        logger: import("../IonicSdk").Logger;
        readonly provider: import("../IonicSdk").SupportedProvider;
        readonly signer: import("../IonicSdk").SupportedSigners;
        contracts: import("../IonicSdk").StaticContracts;
        setSigner(signer: import("ethers").Signer): any;
        removeSigner(provider: import("../IonicSdk").SupportedProvider): any;
        deployPool(poolName: string, enforceWhitelist: boolean, closeFactor: BigNumber, liquidationIncentive: BigNumber, priceOracle: string, whitelist: string[]): Promise<[string, string, string, (number | undefined)?]>;
        identifyInterestRateModel(interestRateModelAddress: string): Promise<import("@ionicprotocol/types").InterestRateModel>;
        getInterestRateModel(assetAddress: string): Promise<import("@ionicprotocol/types").InterestRateModel>;
        getPriceOracle(oracleAddress: string): string;
        getEIP20TokenInstance(address: string, signerOrProvider?: import("../IonicSdk").SignerOrProvider): import("../../typechain/EIP20Interface").EIP20Interface;
        getUnitrollerInstance(address: string, signerOrProvider?: import("../IonicSdk").SignerOrProvider): import("../../typechain/Unitroller").Unitroller;
        getPoolDirectoryInstance(signerOrProvider?: import("../IonicSdk").SignerOrProvider): import("ethers").Contract;
        getErc4626PluginInstance(address: string, signerOrProvider?: import("../IonicSdk").SignerOrProvider): import("../../typechain/IonicERC4626").IonicERC4626;
    };
} & TBase;
