import type { BaseContract, BigNumber, BigNumberish, BytesLike, CallOverrides, PopulatedTransaction, Signer, utils } from 'ethers';
import type { FunctionFragment, Result } from '@ethersproject/abi';
import type { Listener, Provider } from '@ethersproject/providers';
import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent, PromiseOrValue } from './common';
export interface InterestRateModelInterface extends utils.Interface {
    functions: {
        'fixedBorrowRate(uint256,uint256,uint256,uint256,uint256)': FunctionFragment;
        'fixedCurveA()': FunctionFragment;
        'fixedCurveB()': FunctionFragment;
        'fixedMaxUtilization()': FunctionFragment;
        'floatingBorrowRate(uint256,uint256)': FunctionFragment;
        'floatingCurveA()': FunctionFragment;
        'floatingCurveB()': FunctionFragment;
        'floatingMaxUtilization()': FunctionFragment;
        'minFixedRate(uint256,uint256,uint256)': FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: 'fixedBorrowRate' | 'fixedCurveA' | 'fixedCurveB' | 'fixedMaxUtilization' | 'floatingBorrowRate' | 'floatingCurveA' | 'floatingCurveB' | 'floatingMaxUtilization' | 'minFixedRate'): FunctionFragment;
    encodeFunctionData(functionFragment: 'fixedBorrowRate', values: [
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>
    ]): string;
    encodeFunctionData(functionFragment: 'fixedCurveA', values?: undefined): string;
    encodeFunctionData(functionFragment: 'fixedCurveB', values?: undefined): string;
    encodeFunctionData(functionFragment: 'fixedMaxUtilization', values?: undefined): string;
    encodeFunctionData(functionFragment: 'floatingBorrowRate', values: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'floatingCurveA', values?: undefined): string;
    encodeFunctionData(functionFragment: 'floatingCurveB', values?: undefined): string;
    encodeFunctionData(functionFragment: 'floatingMaxUtilization', values?: undefined): string;
    encodeFunctionData(functionFragment: 'minFixedRate', values: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>]): string;
    decodeFunctionResult(functionFragment: 'fixedBorrowRate', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'fixedCurveA', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'fixedCurveB', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'fixedMaxUtilization', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'floatingBorrowRate', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'floatingCurveA', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'floatingCurveB', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'floatingMaxUtilization', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'minFixedRate', data: BytesLike): Result;
    events: {};
}
export interface InterestRateModel extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: InterestRateModelInterface;
    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: {
        fixedBorrowRate(maturity: PromiseOrValue<BigNumberish>, amount: PromiseOrValue<BigNumberish>, borrowed: PromiseOrValue<BigNumberish>, supplied: PromiseOrValue<BigNumberish>, backupAssets: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber]>;
        fixedCurveA(overrides?: CallOverrides): Promise<[BigNumber]>;
        fixedCurveB(overrides?: CallOverrides): Promise<[BigNumber]>;
        fixedMaxUtilization(overrides?: CallOverrides): Promise<[BigNumber]>;
        floatingBorrowRate(utilizationBefore: PromiseOrValue<BigNumberish>, utilizationAfter: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber]>;
        floatingCurveA(overrides?: CallOverrides): Promise<[BigNumber]>;
        floatingCurveB(overrides?: CallOverrides): Promise<[BigNumber]>;
        floatingMaxUtilization(overrides?: CallOverrides): Promise<[BigNumber]>;
        minFixedRate(borrowed: PromiseOrValue<BigNumberish>, supplied: PromiseOrValue<BigNumberish>, backupAssets: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber, BigNumber] & {
            rate: BigNumber;
            utilization: BigNumber;
        }>;
    };
    fixedBorrowRate(maturity: PromiseOrValue<BigNumberish>, amount: PromiseOrValue<BigNumberish>, borrowed: PromiseOrValue<BigNumberish>, supplied: PromiseOrValue<BigNumberish>, backupAssets: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
    fixedCurveA(overrides?: CallOverrides): Promise<BigNumber>;
    fixedCurveB(overrides?: CallOverrides): Promise<BigNumber>;
    fixedMaxUtilization(overrides?: CallOverrides): Promise<BigNumber>;
    floatingBorrowRate(utilizationBefore: PromiseOrValue<BigNumberish>, utilizationAfter: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
    floatingCurveA(overrides?: CallOverrides): Promise<BigNumber>;
    floatingCurveB(overrides?: CallOverrides): Promise<BigNumber>;
    floatingMaxUtilization(overrides?: CallOverrides): Promise<BigNumber>;
    minFixedRate(borrowed: PromiseOrValue<BigNumberish>, supplied: PromiseOrValue<BigNumberish>, backupAssets: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber, BigNumber] & {
        rate: BigNumber;
        utilization: BigNumber;
    }>;
    callStatic: {
        fixedBorrowRate(maturity: PromiseOrValue<BigNumberish>, amount: PromiseOrValue<BigNumberish>, borrowed: PromiseOrValue<BigNumberish>, supplied: PromiseOrValue<BigNumberish>, backupAssets: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        fixedCurveA(overrides?: CallOverrides): Promise<BigNumber>;
        fixedCurveB(overrides?: CallOverrides): Promise<BigNumber>;
        fixedMaxUtilization(overrides?: CallOverrides): Promise<BigNumber>;
        floatingBorrowRate(utilizationBefore: PromiseOrValue<BigNumberish>, utilizationAfter: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        floatingCurveA(overrides?: CallOverrides): Promise<BigNumber>;
        floatingCurveB(overrides?: CallOverrides): Promise<BigNumber>;
        floatingMaxUtilization(overrides?: CallOverrides): Promise<BigNumber>;
        minFixedRate(borrowed: PromiseOrValue<BigNumberish>, supplied: PromiseOrValue<BigNumberish>, backupAssets: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber, BigNumber] & {
            rate: BigNumber;
            utilization: BigNumber;
        }>;
    };
    filters: {};
    estimateGas: {
        fixedBorrowRate(maturity: PromiseOrValue<BigNumberish>, amount: PromiseOrValue<BigNumberish>, borrowed: PromiseOrValue<BigNumberish>, supplied: PromiseOrValue<BigNumberish>, backupAssets: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        fixedCurveA(overrides?: CallOverrides): Promise<BigNumber>;
        fixedCurveB(overrides?: CallOverrides): Promise<BigNumber>;
        fixedMaxUtilization(overrides?: CallOverrides): Promise<BigNumber>;
        floatingBorrowRate(utilizationBefore: PromiseOrValue<BigNumberish>, utilizationAfter: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        floatingCurveA(overrides?: CallOverrides): Promise<BigNumber>;
        floatingCurveB(overrides?: CallOverrides): Promise<BigNumber>;
        floatingMaxUtilization(overrides?: CallOverrides): Promise<BigNumber>;
        minFixedRate(borrowed: PromiseOrValue<BigNumberish>, supplied: PromiseOrValue<BigNumberish>, backupAssets: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
    };
    populateTransaction: {
        fixedBorrowRate(maturity: PromiseOrValue<BigNumberish>, amount: PromiseOrValue<BigNumberish>, borrowed: PromiseOrValue<BigNumberish>, supplied: PromiseOrValue<BigNumberish>, backupAssets: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        fixedCurveA(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        fixedCurveB(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        fixedMaxUtilization(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        floatingBorrowRate(utilizationBefore: PromiseOrValue<BigNumberish>, utilizationAfter: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        floatingCurveA(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        floatingCurveB(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        floatingMaxUtilization(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        minFixedRate(borrowed: PromiseOrValue<BigNumberish>, supplied: PromiseOrValue<BigNumberish>, backupAssets: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
    };
}
