import type { BaseContract, BigNumber, BigNumberish, BytesLike, CallOverrides, ContractTransaction, Overrides, PayableOverrides, PopulatedTransaction, Signer, utils } from 'ethers';
import type { FunctionFragment, Result, EventFragment } from '@ethersproject/abi';
import type { Listener, Provider } from '@ethersproject/providers';
import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent, PromiseOrValue } from './common';
export interface MeshswapSinglePoolFactoryInterface extends utils.Interface {
    functions: {
        'changeOperator(address)': FunctionFragment;
        'sendReward(address,uint256)': FunctionFragment;
        'transferDebt(address,address,address)': FunctionFragment;
        'changeInterestRateModel(address)': FunctionFragment;
        'plusPoolFactory()': FunctionFragment;
        'nativeWithdrawer()': FunctionFragment;
        'setPoolReserveFactor(address,uint256)': FunctionFragment;
        'getPoolAddressByIndex(uint256)': FunctionFragment;
        'repay(address,address,uint256)': FunctionFragment;
        'repayInsurance(address,address,uint256)': FunctionFragment;
        'getPlusPoolFactory()': FunctionFragment;
        'borrowBalanceInfo(address,address,address)': FunctionFragment;
        'changeMiningRate(address[],uint256[])': FunctionFragment;
        'borrowBalanceCurrent(address,address,address)': FunctionFragment;
        'singlePools(uint256)': FunctionFragment;
        'borrow(address,address,uint256)': FunctionFragment;
        'singlePoolVault(address)': FunctionFragment;
        'version()': FunctionFragment;
        'totalMined()': FunctionFragment;
        'operator()': FunctionFragment;
        'governance()': FunctionFragment;
        'setWithdrawActive(address,bool)': FunctionFragment;
        'changeNextOwner(address)': FunctionFragment;
        'changeOwner()': FunctionFragment;
        'mining()': FunctionFragment;
        'singlePoolExist(address)': FunctionFragment;
        'nextOwner()': FunctionFragment;
        'getTotalMined()': FunctionFragment;
        'changeNativeWithdrawer(address)': FunctionFragment;
        'owner()': FunctionFragment;
        'getPoolCount()': FunctionFragment;
        'createPool(address)': FunctionFragment;
        'setSinglePoolImpl(address)': FunctionFragment;
        'borrowBalanceStored(address,address,address)': FunctionFragment;
        'entered()': FunctionFragment;
        'WETH()': FunctionFragment;
        'setDepositActive(address,bool)': FunctionFragment;
        'lastMined()': FunctionFragment;
        'reducePoolReserves(address,address,uint256)': FunctionFragment;
        'setPlusPoolFactory(address)': FunctionFragment;
        'singlePoolImpl()': FunctionFragment;
        'setPoolInterestRateModel(address,address)': FunctionFragment;
        '__SinglePoolFactory_init(address,address,address,address)': FunctionFragment;
        'interestRateModel()': FunctionFragment;
        'mesh()': FunctionFragment;
        'updateTotalMined()': FunctionFragment;
        'getPoolAddressByToken(address)': FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: 'changeOperator' | 'sendReward' | 'transferDebt' | 'changeInterestRateModel' | 'plusPoolFactory' | 'nativeWithdrawer' | 'setPoolReserveFactor' | 'getPoolAddressByIndex' | 'repay' | 'repayInsurance' | 'getPlusPoolFactory' | 'borrowBalanceInfo' | 'changeMiningRate' | 'borrowBalanceCurrent' | 'singlePools' | 'borrow' | 'singlePoolVault' | 'version' | 'totalMined' | 'operator' | 'governance' | 'setWithdrawActive' | 'changeNextOwner' | 'changeOwner' | 'mining' | 'singlePoolExist' | 'nextOwner' | 'getTotalMined' | 'changeNativeWithdrawer' | 'owner' | 'getPoolCount' | 'createPool' | 'setSinglePoolImpl' | 'borrowBalanceStored' | 'entered' | 'WETH' | 'setDepositActive' | 'lastMined' | 'reducePoolReserves' | 'setPlusPoolFactory' | 'singlePoolImpl' | 'setPoolInterestRateModel' | '__SinglePoolFactory_init' | 'interestRateModel' | 'mesh' | 'updateTotalMined' | 'getPoolAddressByToken'): FunctionFragment;
    encodeFunctionData(functionFragment: 'changeOperator', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'sendReward', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'transferDebt', values: [PromiseOrValue<string>, PromiseOrValue<string>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'changeInterestRateModel', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'plusPoolFactory', values?: undefined): string;
    encodeFunctionData(functionFragment: 'nativeWithdrawer', values?: undefined): string;
    encodeFunctionData(functionFragment: 'setPoolReserveFactor', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'getPoolAddressByIndex', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'repay', values: [PromiseOrValue<string>, PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'repayInsurance', values: [PromiseOrValue<string>, PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'getPlusPoolFactory', values?: undefined): string;
    encodeFunctionData(functionFragment: 'borrowBalanceInfo', values: [PromiseOrValue<string>, PromiseOrValue<string>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'changeMiningRate', values: [PromiseOrValue<string>[], PromiseOrValue<BigNumberish>[]]): string;
    encodeFunctionData(functionFragment: 'borrowBalanceCurrent', values: [PromiseOrValue<string>, PromiseOrValue<string>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'singlePools', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'borrow', values: [PromiseOrValue<string>, PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'singlePoolVault', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'version', values?: undefined): string;
    encodeFunctionData(functionFragment: 'totalMined', values?: undefined): string;
    encodeFunctionData(functionFragment: 'operator', values?: undefined): string;
    encodeFunctionData(functionFragment: 'governance', values?: undefined): string;
    encodeFunctionData(functionFragment: 'setWithdrawActive', values: [PromiseOrValue<string>, PromiseOrValue<boolean>]): string;
    encodeFunctionData(functionFragment: 'changeNextOwner', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'changeOwner', values?: undefined): string;
    encodeFunctionData(functionFragment: 'mining', values?: undefined): string;
    encodeFunctionData(functionFragment: 'singlePoolExist', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'nextOwner', values?: undefined): string;
    encodeFunctionData(functionFragment: 'getTotalMined', values?: undefined): string;
    encodeFunctionData(functionFragment: 'changeNativeWithdrawer', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'owner', values?: undefined): string;
    encodeFunctionData(functionFragment: 'getPoolCount', values?: undefined): string;
    encodeFunctionData(functionFragment: 'createPool', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'setSinglePoolImpl', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'borrowBalanceStored', values: [PromiseOrValue<string>, PromiseOrValue<string>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'entered', values?: undefined): string;
    encodeFunctionData(functionFragment: 'WETH', values?: undefined): string;
    encodeFunctionData(functionFragment: 'setDepositActive', values: [PromiseOrValue<string>, PromiseOrValue<boolean>]): string;
    encodeFunctionData(functionFragment: 'lastMined', values?: undefined): string;
    encodeFunctionData(functionFragment: 'reducePoolReserves', values: [PromiseOrValue<string>, PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'setPlusPoolFactory', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'singlePoolImpl', values?: undefined): string;
    encodeFunctionData(functionFragment: 'setPoolInterestRateModel', values: [PromiseOrValue<string>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: '__SinglePoolFactory_init', values: [PromiseOrValue<string>, PromiseOrValue<string>, PromiseOrValue<string>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'interestRateModel', values?: undefined): string;
    encodeFunctionData(functionFragment: 'mesh', values?: undefined): string;
    encodeFunctionData(functionFragment: 'updateTotalMined', values?: undefined): string;
    encodeFunctionData(functionFragment: 'getPoolAddressByToken', values: [PromiseOrValue<string>]): string;
    decodeFunctionResult(functionFragment: 'changeOperator', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'sendReward', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'transferDebt', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'changeInterestRateModel', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'plusPoolFactory', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'nativeWithdrawer', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setPoolReserveFactor', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getPoolAddressByIndex', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'repay', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'repayInsurance', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getPlusPoolFactory', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'borrowBalanceInfo', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'changeMiningRate', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'borrowBalanceCurrent', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'singlePools', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'borrow', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'singlePoolVault', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'version', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'totalMined', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'operator', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'governance', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setWithdrawActive', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'changeNextOwner', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'changeOwner', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'mining', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'singlePoolExist', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'nextOwner', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getTotalMined', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'changeNativeWithdrawer', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'owner', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getPoolCount', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'createPool', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setSinglePoolImpl', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'borrowBalanceStored', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'entered', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'WETH', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setDepositActive', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'lastMined', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'reducePoolReserves', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setPlusPoolFactory', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'singlePoolImpl', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setPoolInterestRateModel', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: '__SinglePoolFactory_init', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'interestRateModel', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'mesh', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'updateTotalMined', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getPoolAddressByToken', data: BytesLike): Result;
    events: {
        'ChangeNextOwner(address)': EventFragment;
        'ChangeOwner(address)': EventFragment;
        'ChangeOperator(address)': EventFragment;
        'ChangeInterestRateModel(address)': EventFragment;
        'ChangeNativeWithdrawer(address)': EventFragment;
        'CreatePool(address,address,uint256)': EventFragment;
        'SetDepositActive(address,bool)': EventFragment;
        'SetWithdrawActive(address,bool)': EventFragment;
        'SetPoolInterestRateModel(address,address)': EventFragment;
        'ChangeMiningRate(uint256)': EventFragment;
        'UpdateLastMined(uint256,uint256)': EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: 'ChangeNextOwner'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'ChangeOwner'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'ChangeOperator'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'ChangeInterestRateModel'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'ChangeNativeWithdrawer'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'CreatePool'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'SetDepositActive'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'SetWithdrawActive'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'SetPoolInterestRateModel'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'ChangeMiningRate'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'UpdateLastMined'): EventFragment;
}
export interface ChangeNextOwnerEventObject {
    nextOwner: string;
}
export declare type ChangeNextOwnerEvent = TypedEvent<[string], ChangeNextOwnerEventObject>;
export declare type ChangeNextOwnerEventFilter = TypedEventFilter<ChangeNextOwnerEvent>;
export interface ChangeOwnerEventObject {
    owner: string;
}
export declare type ChangeOwnerEvent = TypedEvent<[string], ChangeOwnerEventObject>;
export declare type ChangeOwnerEventFilter = TypedEventFilter<ChangeOwnerEvent>;
export interface ChangeOperatorEventObject {
    newOperator: string;
}
export declare type ChangeOperatorEvent = TypedEvent<[string], ChangeOperatorEventObject>;
export declare type ChangeOperatorEventFilter = TypedEventFilter<ChangeOperatorEvent>;
export interface ChangeInterestRateModelEventObject {
    newInterestRateModel: string;
}
export declare type ChangeInterestRateModelEvent = TypedEvent<[string], ChangeInterestRateModelEventObject>;
export declare type ChangeInterestRateModelEventFilter = TypedEventFilter<ChangeInterestRateModelEvent>;
export interface ChangeNativeWithdrawerEventObject {
    newNativeWithdrawer: string;
}
export declare type ChangeNativeWithdrawerEvent = TypedEvent<[string], ChangeNativeWithdrawerEventObject>;
export declare type ChangeNativeWithdrawerEventFilter = TypedEventFilter<ChangeNativeWithdrawerEvent>;
export interface CreatePoolEventObject {
    token: string;
    pool: string;
    exid: BigNumber;
}
export declare type CreatePoolEvent = TypedEvent<[string, string, BigNumber], CreatePoolEventObject>;
export declare type CreatePoolEventFilter = TypedEventFilter<CreatePoolEvent>;
export interface SetDepositActiveEventObject {
    poolAddress: string;
    b: boolean;
}
export declare type SetDepositActiveEvent = TypedEvent<[string, boolean], SetDepositActiveEventObject>;
export declare type SetDepositActiveEventFilter = TypedEventFilter<SetDepositActiveEvent>;
export interface SetWithdrawActiveEventObject {
    poolAddress: string;
    b: boolean;
}
export declare type SetWithdrawActiveEvent = TypedEvent<[string, boolean], SetWithdrawActiveEventObject>;
export declare type SetWithdrawActiveEventFilter = TypedEventFilter<SetWithdrawActiveEvent>;
export interface SetPoolInterestRateModelEventObject {
    pool: string;
    newInterestRateModel: string;
}
export declare type SetPoolInterestRateModelEvent = TypedEvent<[string, string], SetPoolInterestRateModelEventObject>;
export declare type SetPoolInterestRateModelEventFilter = TypedEventFilter<SetPoolInterestRateModelEvent>;
export interface ChangeMiningRateEventObject {
    _mining: BigNumber;
}
export declare type ChangeMiningRateEvent = TypedEvent<[BigNumber], ChangeMiningRateEventObject>;
export declare type ChangeMiningRateEventFilter = TypedEventFilter<ChangeMiningRateEvent>;
export interface UpdateLastMinedEventObject {
    _lastMined: BigNumber;
    _totalMined: BigNumber;
}
export declare type UpdateLastMinedEvent = TypedEvent<[BigNumber, BigNumber], UpdateLastMinedEventObject>;
export declare type UpdateLastMinedEventFilter = TypedEventFilter<UpdateLastMinedEvent>;
export interface MeshswapSinglePoolFactory extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: MeshswapSinglePoolFactoryInterface;
    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: {
        changeOperator(newOperator: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        sendReward(user: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        transferDebt(token: PromiseOrValue<string>, user: PromiseOrValue<string>, insurance: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        changeInterestRateModel(newInterestRateModel: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        plusPoolFactory(overrides?: CallOverrides): Promise<[string]>;
        nativeWithdrawer(overrides?: CallOverrides): Promise<[string]>;
        setPoolReserveFactor(token: PromiseOrValue<string>, newReserveFactor: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        getPoolAddressByIndex(idx: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[string]>;
        repay(token: PromiseOrValue<string>, user: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        repayInsurance(token: PromiseOrValue<string>, plusPoolAddress: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        getPlusPoolFactory(overrides?: CallOverrides): Promise<[string]>;
        borrowBalanceInfo(token: PromiseOrValue<string>, user: PromiseOrValue<string>, poolAddress: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>;
        changeMiningRate(pools: PromiseOrValue<string>[], rate: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        borrowBalanceCurrent(token: PromiseOrValue<string>, user: PromiseOrValue<string>, poolAddress: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        singlePools(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[string]>;
        borrow(token: PromiseOrValue<string>, user: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        singlePoolVault(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[string]>;
        version(overrides?: CallOverrides): Promise<[string]>;
        totalMined(overrides?: CallOverrides): Promise<[BigNumber]>;
        operator(overrides?: CallOverrides): Promise<[string]>;
        governance(overrides?: CallOverrides): Promise<[string]>;
        setWithdrawActive(tokenAddress: PromiseOrValue<string>, b: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        changeNextOwner(_nextOwner: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        changeOwner(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        mining(overrides?: CallOverrides): Promise<[BigNumber]>;
        singlePoolExist(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[boolean]>;
        nextOwner(overrides?: CallOverrides): Promise<[string]>;
        getTotalMined(overrides?: CallOverrides): Promise<[BigNumber]>;
        changeNativeWithdrawer(newNativeWithdrawer: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        owner(overrides?: CallOverrides): Promise<[string]>;
        getPoolCount(overrides?: CallOverrides): Promise<[BigNumber]>;
        createPool(token: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setSinglePoolImpl(newSinglePoolImpl: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        borrowBalanceStored(token: PromiseOrValue<string>, user: PromiseOrValue<string>, poolAddress: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber]>;
        entered(overrides?: CallOverrides): Promise<[boolean]>;
        WETH(overrides?: CallOverrides): Promise<[string]>;
        setDepositActive(tokenAddress: PromiseOrValue<string>, b: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        lastMined(overrides?: CallOverrides): Promise<[BigNumber]>;
        reducePoolReserves(admin: PromiseOrValue<string>, token: PromiseOrValue<string>, reduceAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setPlusPoolFactory(newPlusPoolFactory: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        singlePoolImpl(overrides?: CallOverrides): Promise<[string]>;
        setPoolInterestRateModel(tokenAddress: PromiseOrValue<string>, newInterestRateModel: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        __SinglePoolFactory_init(_owner: PromiseOrValue<string>, _governance: PromiseOrValue<string>, _singlePoolImpl: PromiseOrValue<string>, _interestRateModel: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        interestRateModel(overrides?: CallOverrides): Promise<[string]>;
        mesh(overrides?: CallOverrides): Promise<[string]>;
        updateTotalMined(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        getPoolAddressByToken(token: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[string]>;
    };
    changeOperator(newOperator: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    sendReward(user: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    transferDebt(token: PromiseOrValue<string>, user: PromiseOrValue<string>, insurance: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    changeInterestRateModel(newInterestRateModel: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    plusPoolFactory(overrides?: CallOverrides): Promise<string>;
    nativeWithdrawer(overrides?: CallOverrides): Promise<string>;
    setPoolReserveFactor(token: PromiseOrValue<string>, newReserveFactor: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    getPoolAddressByIndex(idx: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<string>;
    repay(token: PromiseOrValue<string>, user: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: PayableOverrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    repayInsurance(token: PromiseOrValue<string>, plusPoolAddress: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: PayableOverrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    getPlusPoolFactory(overrides?: CallOverrides): Promise<string>;
    borrowBalanceInfo(token: PromiseOrValue<string>, user: PromiseOrValue<string>, poolAddress: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>;
    changeMiningRate(pools: PromiseOrValue<string>[], rate: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    borrowBalanceCurrent(token: PromiseOrValue<string>, user: PromiseOrValue<string>, poolAddress: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    singlePools(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<string>;
    borrow(token: PromiseOrValue<string>, user: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    singlePoolVault(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<string>;
    version(overrides?: CallOverrides): Promise<string>;
    totalMined(overrides?: CallOverrides): Promise<BigNumber>;
    operator(overrides?: CallOverrides): Promise<string>;
    governance(overrides?: CallOverrides): Promise<string>;
    setWithdrawActive(tokenAddress: PromiseOrValue<string>, b: PromiseOrValue<boolean>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    changeNextOwner(_nextOwner: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    changeOwner(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    mining(overrides?: CallOverrides): Promise<BigNumber>;
    singlePoolExist(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
    nextOwner(overrides?: CallOverrides): Promise<string>;
    getTotalMined(overrides?: CallOverrides): Promise<BigNumber>;
    changeNativeWithdrawer(newNativeWithdrawer: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    owner(overrides?: CallOverrides): Promise<string>;
    getPoolCount(overrides?: CallOverrides): Promise<BigNumber>;
    createPool(token: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setSinglePoolImpl(newSinglePoolImpl: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    borrowBalanceStored(token: PromiseOrValue<string>, user: PromiseOrValue<string>, poolAddress: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    entered(overrides?: CallOverrides): Promise<boolean>;
    WETH(overrides?: CallOverrides): Promise<string>;
    setDepositActive(tokenAddress: PromiseOrValue<string>, b: PromiseOrValue<boolean>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    lastMined(overrides?: CallOverrides): Promise<BigNumber>;
    reducePoolReserves(admin: PromiseOrValue<string>, token: PromiseOrValue<string>, reduceAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setPlusPoolFactory(newPlusPoolFactory: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    singlePoolImpl(overrides?: CallOverrides): Promise<string>;
    setPoolInterestRateModel(tokenAddress: PromiseOrValue<string>, newInterestRateModel: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    __SinglePoolFactory_init(_owner: PromiseOrValue<string>, _governance: PromiseOrValue<string>, _singlePoolImpl: PromiseOrValue<string>, _interestRateModel: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    interestRateModel(overrides?: CallOverrides): Promise<string>;
    mesh(overrides?: CallOverrides): Promise<string>;
    updateTotalMined(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    getPoolAddressByToken(token: PromiseOrValue<string>, overrides?: CallOverrides): Promise<string>;
    callStatic: {
        changeOperator(newOperator: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        sendReward(user: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        transferDebt(token: PromiseOrValue<string>, user: PromiseOrValue<string>, insurance: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        changeInterestRateModel(newInterestRateModel: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        plusPoolFactory(overrides?: CallOverrides): Promise<string>;
        nativeWithdrawer(overrides?: CallOverrides): Promise<string>;
        setPoolReserveFactor(token: PromiseOrValue<string>, newReserveFactor: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        getPoolAddressByIndex(idx: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<string>;
        repay(token: PromiseOrValue<string>, user: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        repayInsurance(token: PromiseOrValue<string>, plusPoolAddress: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        getPlusPoolFactory(overrides?: CallOverrides): Promise<string>;
        borrowBalanceInfo(token: PromiseOrValue<string>, user: PromiseOrValue<string>, poolAddress: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>;
        changeMiningRate(pools: PromiseOrValue<string>[], rate: PromiseOrValue<BigNumberish>[], overrides?: CallOverrides): Promise<void>;
        borrowBalanceCurrent(token: PromiseOrValue<string>, user: PromiseOrValue<string>, poolAddress: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        singlePools(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<string>;
        borrow(token: PromiseOrValue<string>, user: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>;
        singlePoolVault(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<string>;
        version(overrides?: CallOverrides): Promise<string>;
        totalMined(overrides?: CallOverrides): Promise<BigNumber>;
        operator(overrides?: CallOverrides): Promise<string>;
        governance(overrides?: CallOverrides): Promise<string>;
        setWithdrawActive(tokenAddress: PromiseOrValue<string>, b: PromiseOrValue<boolean>, overrides?: CallOverrides): Promise<void>;
        changeNextOwner(_nextOwner: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        changeOwner(overrides?: CallOverrides): Promise<void>;
        mining(overrides?: CallOverrides): Promise<BigNumber>;
        singlePoolExist(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
        nextOwner(overrides?: CallOverrides): Promise<string>;
        getTotalMined(overrides?: CallOverrides): Promise<BigNumber>;
        changeNativeWithdrawer(newNativeWithdrawer: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        owner(overrides?: CallOverrides): Promise<string>;
        getPoolCount(overrides?: CallOverrides): Promise<BigNumber>;
        createPool(token: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        setSinglePoolImpl(newSinglePoolImpl: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        borrowBalanceStored(token: PromiseOrValue<string>, user: PromiseOrValue<string>, poolAddress: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        entered(overrides?: CallOverrides): Promise<boolean>;
        WETH(overrides?: CallOverrides): Promise<string>;
        setDepositActive(tokenAddress: PromiseOrValue<string>, b: PromiseOrValue<boolean>, overrides?: CallOverrides): Promise<void>;
        lastMined(overrides?: CallOverrides): Promise<BigNumber>;
        reducePoolReserves(admin: PromiseOrValue<string>, token: PromiseOrValue<string>, reduceAmount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        setPlusPoolFactory(newPlusPoolFactory: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        singlePoolImpl(overrides?: CallOverrides): Promise<string>;
        setPoolInterestRateModel(tokenAddress: PromiseOrValue<string>, newInterestRateModel: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        __SinglePoolFactory_init(_owner: PromiseOrValue<string>, _governance: PromiseOrValue<string>, _singlePoolImpl: PromiseOrValue<string>, _interestRateModel: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        interestRateModel(overrides?: CallOverrides): Promise<string>;
        mesh(overrides?: CallOverrides): Promise<string>;
        updateTotalMined(overrides?: CallOverrides): Promise<void>;
        getPoolAddressByToken(token: PromiseOrValue<string>, overrides?: CallOverrides): Promise<string>;
    };
    filters: {
        'ChangeNextOwner(address)'(nextOwner?: null): ChangeNextOwnerEventFilter;
        ChangeNextOwner(nextOwner?: null): ChangeNextOwnerEventFilter;
        'ChangeOwner(address)'(owner?: null): ChangeOwnerEventFilter;
        ChangeOwner(owner?: null): ChangeOwnerEventFilter;
        'ChangeOperator(address)'(newOperator?: null): ChangeOperatorEventFilter;
        ChangeOperator(newOperator?: null): ChangeOperatorEventFilter;
        'ChangeInterestRateModel(address)'(newInterestRateModel?: null): ChangeInterestRateModelEventFilter;
        ChangeInterestRateModel(newInterestRateModel?: null): ChangeInterestRateModelEventFilter;
        'ChangeNativeWithdrawer(address)'(newNativeWithdrawer?: null): ChangeNativeWithdrawerEventFilter;
        ChangeNativeWithdrawer(newNativeWithdrawer?: null): ChangeNativeWithdrawerEventFilter;
        'CreatePool(address,address,uint256)'(token?: null, pool?: null, exid?: null): CreatePoolEventFilter;
        CreatePool(token?: null, pool?: null, exid?: null): CreatePoolEventFilter;
        'SetDepositActive(address,bool)'(poolAddress?: null, b?: null): SetDepositActiveEventFilter;
        SetDepositActive(poolAddress?: null, b?: null): SetDepositActiveEventFilter;
        'SetWithdrawActive(address,bool)'(poolAddress?: null, b?: null): SetWithdrawActiveEventFilter;
        SetWithdrawActive(poolAddress?: null, b?: null): SetWithdrawActiveEventFilter;
        'SetPoolInterestRateModel(address,address)'(pool?: null, newInterestRateModel?: null): SetPoolInterestRateModelEventFilter;
        SetPoolInterestRateModel(pool?: null, newInterestRateModel?: null): SetPoolInterestRateModelEventFilter;
        'ChangeMiningRate(uint256)'(_mining?: null): ChangeMiningRateEventFilter;
        ChangeMiningRate(_mining?: null): ChangeMiningRateEventFilter;
        'UpdateLastMined(uint256,uint256)'(_lastMined?: null, _totalMined?: null): UpdateLastMinedEventFilter;
        UpdateLastMined(_lastMined?: null, _totalMined?: null): UpdateLastMinedEventFilter;
    };
    estimateGas: {
        changeOperator(newOperator: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        sendReward(user: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        transferDebt(token: PromiseOrValue<string>, user: PromiseOrValue<string>, insurance: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        changeInterestRateModel(newInterestRateModel: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        plusPoolFactory(overrides?: CallOverrides): Promise<BigNumber>;
        nativeWithdrawer(overrides?: CallOverrides): Promise<BigNumber>;
        setPoolReserveFactor(token: PromiseOrValue<string>, newReserveFactor: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        getPoolAddressByIndex(idx: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        repay(token: PromiseOrValue<string>, user: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        repayInsurance(token: PromiseOrValue<string>, plusPoolAddress: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        getPlusPoolFactory(overrides?: CallOverrides): Promise<BigNumber>;
        borrowBalanceInfo(token: PromiseOrValue<string>, user: PromiseOrValue<string>, poolAddress: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        changeMiningRate(pools: PromiseOrValue<string>[], rate: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        borrowBalanceCurrent(token: PromiseOrValue<string>, user: PromiseOrValue<string>, poolAddress: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        singlePools(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        borrow(token: PromiseOrValue<string>, user: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        singlePoolVault(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        version(overrides?: CallOverrides): Promise<BigNumber>;
        totalMined(overrides?: CallOverrides): Promise<BigNumber>;
        operator(overrides?: CallOverrides): Promise<BigNumber>;
        governance(overrides?: CallOverrides): Promise<BigNumber>;
        setWithdrawActive(tokenAddress: PromiseOrValue<string>, b: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        changeNextOwner(_nextOwner: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        changeOwner(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        mining(overrides?: CallOverrides): Promise<BigNumber>;
        singlePoolExist(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        nextOwner(overrides?: CallOverrides): Promise<BigNumber>;
        getTotalMined(overrides?: CallOverrides): Promise<BigNumber>;
        changeNativeWithdrawer(newNativeWithdrawer: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        owner(overrides?: CallOverrides): Promise<BigNumber>;
        getPoolCount(overrides?: CallOverrides): Promise<BigNumber>;
        createPool(token: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setSinglePoolImpl(newSinglePoolImpl: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        borrowBalanceStored(token: PromiseOrValue<string>, user: PromiseOrValue<string>, poolAddress: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        entered(overrides?: CallOverrides): Promise<BigNumber>;
        WETH(overrides?: CallOverrides): Promise<BigNumber>;
        setDepositActive(tokenAddress: PromiseOrValue<string>, b: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        lastMined(overrides?: CallOverrides): Promise<BigNumber>;
        reducePoolReserves(admin: PromiseOrValue<string>, token: PromiseOrValue<string>, reduceAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setPlusPoolFactory(newPlusPoolFactory: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        singlePoolImpl(overrides?: CallOverrides): Promise<BigNumber>;
        setPoolInterestRateModel(tokenAddress: PromiseOrValue<string>, newInterestRateModel: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        __SinglePoolFactory_init(_owner: PromiseOrValue<string>, _governance: PromiseOrValue<string>, _singlePoolImpl: PromiseOrValue<string>, _interestRateModel: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        interestRateModel(overrides?: CallOverrides): Promise<BigNumber>;
        mesh(overrides?: CallOverrides): Promise<BigNumber>;
        updateTotalMined(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        getPoolAddressByToken(token: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    };
    populateTransaction: {
        changeOperator(newOperator: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        sendReward(user: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        transferDebt(token: PromiseOrValue<string>, user: PromiseOrValue<string>, insurance: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        changeInterestRateModel(newInterestRateModel: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        plusPoolFactory(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        nativeWithdrawer(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        setPoolReserveFactor(token: PromiseOrValue<string>, newReserveFactor: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        getPoolAddressByIndex(idx: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        repay(token: PromiseOrValue<string>, user: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        repayInsurance(token: PromiseOrValue<string>, plusPoolAddress: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        getPlusPoolFactory(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        borrowBalanceInfo(token: PromiseOrValue<string>, user: PromiseOrValue<string>, poolAddress: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        changeMiningRate(pools: PromiseOrValue<string>[], rate: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        borrowBalanceCurrent(token: PromiseOrValue<string>, user: PromiseOrValue<string>, poolAddress: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        singlePools(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        borrow(token: PromiseOrValue<string>, user: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        singlePoolVault(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        version(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        totalMined(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        operator(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        governance(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        setWithdrawActive(tokenAddress: PromiseOrValue<string>, b: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        changeNextOwner(_nextOwner: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        changeOwner(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        mining(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        singlePoolExist(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        nextOwner(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getTotalMined(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        changeNativeWithdrawer(newNativeWithdrawer: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        owner(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getPoolCount(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        createPool(token: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setSinglePoolImpl(newSinglePoolImpl: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        borrowBalanceStored(token: PromiseOrValue<string>, user: PromiseOrValue<string>, poolAddress: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        entered(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        WETH(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        setDepositActive(tokenAddress: PromiseOrValue<string>, b: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        lastMined(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        reducePoolReserves(admin: PromiseOrValue<string>, token: PromiseOrValue<string>, reduceAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setPlusPoolFactory(newPlusPoolFactory: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        singlePoolImpl(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        setPoolInterestRateModel(tokenAddress: PromiseOrValue<string>, newInterestRateModel: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        __SinglePoolFactory_init(_owner: PromiseOrValue<string>, _governance: PromiseOrValue<string>, _singlePoolImpl: PromiseOrValue<string>, _interestRateModel: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        interestRateModel(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        mesh(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        updateTotalMined(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        getPoolAddressByToken(token: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
    };
}
