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 } from "./common";
export interface CTokenFirstExtensionInterface extends utils.Interface {
    functions: {
        "_getExtensionFunctions()": FunctionFragment;
        "_setAdminFee(uint256)": FunctionFragment;
        "_setInterestRateModel(address)": FunctionFragment;
        "_setNameAndSymbol(string,string)": FunctionFragment;
        "_setReserveFactor(uint256)": FunctionFragment;
        "accrualBlockNumber()": FunctionFragment;
        "accrueInterest()": FunctionFragment;
        "adminFeeMantissa()": FunctionFragment;
        "allowance(address,address)": FunctionFragment;
        "approve(address,uint256)": FunctionFragment;
        "balanceOf(address)": FunctionFragment;
        "balanceOfUnderlying(address)": FunctionFragment;
        "borrowBalanceCurrent(address)": FunctionFragment;
        "borrowIndex()": FunctionFragment;
        "borrowRatePerBlock()": FunctionFragment;
        "borrowRatePerBlockAfterBorrow(uint256)": FunctionFragment;
        "comptroller()": FunctionFragment;
        "decimals()": FunctionFragment;
        "exchangeRateCurrent()": FunctionFragment;
        "feeSeizeShareMantissa()": FunctionFragment;
        "flash(uint256,bytes)": FunctionFragment;
        "getAccountSnapshot(address)": FunctionFragment;
        "getTotalUnderlyingSupplied()": FunctionFragment;
        "interestRateModel()": FunctionFragment;
        "ionicAdmin()": FunctionFragment;
        "ionicFeeMantissa()": FunctionFragment;
        "multicall(bytes[])": FunctionFragment;
        "name()": FunctionFragment;
        "protocolSeizeShareMantissa()": FunctionFragment;
        "reserveFactorMantissa()": FunctionFragment;
        "supplyRatePerBlock()": FunctionFragment;
        "supplyRatePerBlockAfterDeposit(uint256)": FunctionFragment;
        "supplyRatePerBlockAfterWithdraw(uint256)": FunctionFragment;
        "symbol()": FunctionFragment;
        "totalAdminFees()": FunctionFragment;
        "totalBorrows()": FunctionFragment;
        "totalBorrowsCurrent()": FunctionFragment;
        "totalIonicFees()": FunctionFragment;
        "totalReserves()": FunctionFragment;
        "totalSupply()": FunctionFragment;
        "transfer(address,uint256)": FunctionFragment;
        "transferFrom(address,address,uint256)": FunctionFragment;
        "underlying()": FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: "_getExtensionFunctions" | "_setAdminFee" | "_setInterestRateModel" | "_setNameAndSymbol" | "_setReserveFactor" | "accrualBlockNumber" | "accrueInterest" | "adminFeeMantissa" | "allowance" | "approve" | "balanceOf" | "balanceOfUnderlying" | "borrowBalanceCurrent" | "borrowIndex" | "borrowRatePerBlock" | "borrowRatePerBlockAfterBorrow" | "comptroller" | "decimals" | "exchangeRateCurrent" | "feeSeizeShareMantissa" | "flash" | "getAccountSnapshot" | "getTotalUnderlyingSupplied" | "interestRateModel" | "ionicAdmin" | "ionicFeeMantissa" | "multicall" | "name" | "protocolSeizeShareMantissa" | "reserveFactorMantissa" | "supplyRatePerBlock" | "supplyRatePerBlockAfterDeposit" | "supplyRatePerBlockAfterWithdraw" | "symbol" | "totalAdminFees" | "totalBorrows" | "totalBorrowsCurrent" | "totalIonicFees" | "totalReserves" | "totalSupply" | "transfer" | "transferFrom" | "underlying"): FunctionFragment;
    encodeFunctionData(functionFragment: "_getExtensionFunctions", values?: undefined): string;
    encodeFunctionData(functionFragment: "_setAdminFee", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "_setInterestRateModel", values: [string]): string;
    encodeFunctionData(functionFragment: "_setNameAndSymbol", values: [string, string]): string;
    encodeFunctionData(functionFragment: "_setReserveFactor", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "accrualBlockNumber", values?: undefined): string;
    encodeFunctionData(functionFragment: "accrueInterest", values?: undefined): string;
    encodeFunctionData(functionFragment: "adminFeeMantissa", values?: undefined): string;
    encodeFunctionData(functionFragment: "allowance", values: [string, string]): string;
    encodeFunctionData(functionFragment: "approve", values: [string, BigNumberish]): string;
    encodeFunctionData(functionFragment: "balanceOf", values: [string]): string;
    encodeFunctionData(functionFragment: "balanceOfUnderlying", values: [string]): string;
    encodeFunctionData(functionFragment: "borrowBalanceCurrent", values: [string]): string;
    encodeFunctionData(functionFragment: "borrowIndex", values?: undefined): string;
    encodeFunctionData(functionFragment: "borrowRatePerBlock", values?: undefined): string;
    encodeFunctionData(functionFragment: "borrowRatePerBlockAfterBorrow", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "comptroller", values?: undefined): string;
    encodeFunctionData(functionFragment: "decimals", values?: undefined): string;
    encodeFunctionData(functionFragment: "exchangeRateCurrent", values?: undefined): string;
    encodeFunctionData(functionFragment: "feeSeizeShareMantissa", values?: undefined): string;
    encodeFunctionData(functionFragment: "flash", values: [BigNumberish, BytesLike]): string;
    encodeFunctionData(functionFragment: "getAccountSnapshot", values: [string]): string;
    encodeFunctionData(functionFragment: "getTotalUnderlyingSupplied", values?: undefined): string;
    encodeFunctionData(functionFragment: "interestRateModel", values?: undefined): string;
    encodeFunctionData(functionFragment: "ionicAdmin", values?: undefined): string;
    encodeFunctionData(functionFragment: "ionicFeeMantissa", values?: undefined): string;
    encodeFunctionData(functionFragment: "multicall", values: [BytesLike[]]): string;
    encodeFunctionData(functionFragment: "name", values?: undefined): string;
    encodeFunctionData(functionFragment: "protocolSeizeShareMantissa", values?: undefined): string;
    encodeFunctionData(functionFragment: "reserveFactorMantissa", values?: undefined): string;
    encodeFunctionData(functionFragment: "supplyRatePerBlock", values?: undefined): string;
    encodeFunctionData(functionFragment: "supplyRatePerBlockAfterDeposit", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "supplyRatePerBlockAfterWithdraw", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "symbol", values?: undefined): string;
    encodeFunctionData(functionFragment: "totalAdminFees", values?: undefined): string;
    encodeFunctionData(functionFragment: "totalBorrows", values?: undefined): string;
    encodeFunctionData(functionFragment: "totalBorrowsCurrent", values?: undefined): string;
    encodeFunctionData(functionFragment: "totalIonicFees", values?: undefined): string;
    encodeFunctionData(functionFragment: "totalReserves", values?: undefined): string;
    encodeFunctionData(functionFragment: "totalSupply", values?: undefined): string;
    encodeFunctionData(functionFragment: "transfer", values: [string, BigNumberish]): string;
    encodeFunctionData(functionFragment: "transferFrom", values: [string, string, BigNumberish]): string;
    encodeFunctionData(functionFragment: "underlying", values?: undefined): string;
    decodeFunctionResult(functionFragment: "_getExtensionFunctions", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "_setAdminFee", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "_setInterestRateModel", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "_setNameAndSymbol", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "_setReserveFactor", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "accrualBlockNumber", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "accrueInterest", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "adminFeeMantissa", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "balanceOfUnderlying", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "borrowBalanceCurrent", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "borrowIndex", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "borrowRatePerBlock", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "borrowRatePerBlockAfterBorrow", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "comptroller", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "decimals", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "exchangeRateCurrent", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "feeSeizeShareMantissa", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "flash", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getAccountSnapshot", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getTotalUnderlyingSupplied", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "interestRateModel", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "ionicAdmin", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "ionicFeeMantissa", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "multicall", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "name", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "protocolSeizeShareMantissa", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "reserveFactorMantissa", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "supplyRatePerBlock", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "supplyRatePerBlockAfterDeposit", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "supplyRatePerBlockAfterWithdraw", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "totalAdminFees", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "totalBorrows", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "totalBorrowsCurrent", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "totalIonicFees", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "totalReserves", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "totalSupply", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "transferFrom", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "underlying", data: BytesLike): Result;
    events: {
        "AccrueInterest(uint256,uint256,uint256,uint256)": EventFragment;
        "Approval(address,address,uint256)": EventFragment;
        "Failure(uint256,uint256,uint256)": EventFragment;
        "Flash(address,uint256)": EventFragment;
        "NewAdminFee(uint256,uint256)": EventFragment;
        "NewIonicFee(uint256,uint256)": EventFragment;
        "NewMarketInterestRateModel(address,address)": EventFragment;
        "NewReserveFactor(uint256,uint256)": EventFragment;
        "Transfer(address,address,uint256)": EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: "AccrueInterest"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Failure"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Flash"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "NewAdminFee"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "NewIonicFee"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "NewMarketInterestRateModel"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "NewReserveFactor"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment;
}
export interface AccrueInterestEventObject {
    cashPrior: BigNumber;
    interestAccumulated: BigNumber;
    borrowIndex: BigNumber;
    totalBorrows: BigNumber;
}
export type AccrueInterestEvent = TypedEvent<[
    BigNumber,
    BigNumber,
    BigNumber,
    BigNumber
], AccrueInterestEventObject>;
export type AccrueInterestEventFilter = TypedEventFilter<AccrueInterestEvent>;
export interface ApprovalEventObject {
    owner: string;
    spender: string;
    amount: BigNumber;
}
export type ApprovalEvent = TypedEvent<[
    string,
    string,
    BigNumber
], ApprovalEventObject>;
export type ApprovalEventFilter = TypedEventFilter<ApprovalEvent>;
export interface FailureEventObject {
    error: BigNumber;
    info: BigNumber;
    detail: BigNumber;
}
export type FailureEvent = TypedEvent<[
    BigNumber,
    BigNumber,
    BigNumber
], FailureEventObject>;
export type FailureEventFilter = TypedEventFilter<FailureEvent>;
export interface FlashEventObject {
    receiver: string;
    amount: BigNumber;
}
export type FlashEvent = TypedEvent<[string, BigNumber], FlashEventObject>;
export type FlashEventFilter = TypedEventFilter<FlashEvent>;
export interface NewAdminFeeEventObject {
    oldAdminFeeMantissa: BigNumber;
    newAdminFeeMantissa: BigNumber;
}
export type NewAdminFeeEvent = TypedEvent<[
    BigNumber,
    BigNumber
], NewAdminFeeEventObject>;
export type NewAdminFeeEventFilter = TypedEventFilter<NewAdminFeeEvent>;
export interface NewIonicFeeEventObject {
    oldIonicFeeMantissa: BigNumber;
    newIonicFeeMantissa: BigNumber;
}
export type NewIonicFeeEvent = TypedEvent<[
    BigNumber,
    BigNumber
], NewIonicFeeEventObject>;
export type NewIonicFeeEventFilter = TypedEventFilter<NewIonicFeeEvent>;
export interface NewMarketInterestRateModelEventObject {
    oldInterestRateModel: string;
    newInterestRateModel: string;
}
export type NewMarketInterestRateModelEvent = TypedEvent<[
    string,
    string
], NewMarketInterestRateModelEventObject>;
export type NewMarketInterestRateModelEventFilter = TypedEventFilter<NewMarketInterestRateModelEvent>;
export interface NewReserveFactorEventObject {
    oldReserveFactorMantissa: BigNumber;
    newReserveFactorMantissa: BigNumber;
}
export type NewReserveFactorEvent = TypedEvent<[
    BigNumber,
    BigNumber
], NewReserveFactorEventObject>;
export type NewReserveFactorEventFilter = TypedEventFilter<NewReserveFactorEvent>;
export interface TransferEventObject {
    from: string;
    to: string;
    amount: BigNumber;
}
export type TransferEvent = TypedEvent<[
    string,
    string,
    BigNumber
], TransferEventObject>;
export type TransferEventFilter = TypedEventFilter<TransferEvent>;
export interface CTokenFirstExtension extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: CTokenFirstExtensionInterface;
    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: {
        _getExtensionFunctions(overrides?: CallOverrides): Promise<[string[]]>;
        _setAdminFee(newAdminFeeMantissa: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        _setInterestRateModel(newInterestRateModel: string, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        _setNameAndSymbol(_name: string, _symbol: string, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        _setReserveFactor(newReserveFactorMantissa: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        accrualBlockNumber(overrides?: CallOverrides): Promise<[BigNumber]>;
        accrueInterest(overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        adminFeeMantissa(overrides?: CallOverrides): Promise<[BigNumber]>;
        allowance(owner: string, spender: string, overrides?: CallOverrides): Promise<[BigNumber]>;
        approve(spender: string, amount: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        balanceOf(owner: string, overrides?: CallOverrides): Promise<[BigNumber]>;
        balanceOfUnderlying(owner: string, overrides?: CallOverrides): Promise<[BigNumber]>;
        borrowBalanceCurrent(account: string, overrides?: CallOverrides): Promise<[BigNumber]>;
        borrowIndex(overrides?: CallOverrides): Promise<[BigNumber]>;
        borrowRatePerBlock(overrides?: CallOverrides): Promise<[BigNumber]>;
        borrowRatePerBlockAfterBorrow(borrowAmount: BigNumberish, overrides?: CallOverrides): Promise<[BigNumber]>;
        comptroller(overrides?: CallOverrides): Promise<[string]>;
        decimals(overrides?: CallOverrides): Promise<[number]>;
        exchangeRateCurrent(overrides?: CallOverrides): Promise<[BigNumber]>;
        feeSeizeShareMantissa(overrides?: CallOverrides): Promise<[BigNumber]>;
        flash(amount: BigNumberish, data: BytesLike, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        getAccountSnapshot(account: string, overrides?: CallOverrides): Promise<[BigNumber, BigNumber, BigNumber, BigNumber]>;
        getTotalUnderlyingSupplied(overrides?: CallOverrides): Promise<[BigNumber]>;
        interestRateModel(overrides?: CallOverrides): Promise<[string]>;
        ionicAdmin(overrides?: CallOverrides): Promise<[string]>;
        ionicFeeMantissa(overrides?: CallOverrides): Promise<[BigNumber]>;
        multicall(data: BytesLike[], overrides?: PayableOverrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        name(overrides?: CallOverrides): Promise<[string]>;
        protocolSeizeShareMantissa(overrides?: CallOverrides): Promise<[BigNumber]>;
        reserveFactorMantissa(overrides?: CallOverrides): Promise<[BigNumber]>;
        supplyRatePerBlock(overrides?: CallOverrides): Promise<[BigNumber]>;
        supplyRatePerBlockAfterDeposit(mintAmount: BigNumberish, overrides?: CallOverrides): Promise<[BigNumber]>;
        supplyRatePerBlockAfterWithdraw(withdrawAmount: BigNumberish, overrides?: CallOverrides): Promise<[BigNumber]>;
        symbol(overrides?: CallOverrides): Promise<[string]>;
        totalAdminFees(overrides?: CallOverrides): Promise<[BigNumber]>;
        totalBorrows(overrides?: CallOverrides): Promise<[BigNumber]>;
        totalBorrowsCurrent(overrides?: CallOverrides): Promise<[BigNumber]>;
        totalIonicFees(overrides?: CallOverrides): Promise<[BigNumber]>;
        totalReserves(overrides?: CallOverrides): Promise<[BigNumber]>;
        totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>;
        transfer(dst: string, amount: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        transferFrom(src: string, dst: string, amount: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        underlying(overrides?: CallOverrides): Promise<[string]>;
    };
    _getExtensionFunctions(overrides?: CallOverrides): Promise<string[]>;
    _setAdminFee(newAdminFeeMantissa: BigNumberish, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    _setInterestRateModel(newInterestRateModel: string, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    _setNameAndSymbol(_name: string, _symbol: string, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    _setReserveFactor(newReserveFactorMantissa: BigNumberish, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    accrualBlockNumber(overrides?: CallOverrides): Promise<BigNumber>;
    accrueInterest(overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    adminFeeMantissa(overrides?: CallOverrides): Promise<BigNumber>;
    allowance(owner: string, spender: string, overrides?: CallOverrides): Promise<BigNumber>;
    approve(spender: string, amount: BigNumberish, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    balanceOf(owner: string, overrides?: CallOverrides): Promise<BigNumber>;
    balanceOfUnderlying(owner: string, overrides?: CallOverrides): Promise<BigNumber>;
    borrowBalanceCurrent(account: string, overrides?: CallOverrides): Promise<BigNumber>;
    borrowIndex(overrides?: CallOverrides): Promise<BigNumber>;
    borrowRatePerBlock(overrides?: CallOverrides): Promise<BigNumber>;
    borrowRatePerBlockAfterBorrow(borrowAmount: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
    comptroller(overrides?: CallOverrides): Promise<string>;
    decimals(overrides?: CallOverrides): Promise<number>;
    exchangeRateCurrent(overrides?: CallOverrides): Promise<BigNumber>;
    feeSeizeShareMantissa(overrides?: CallOverrides): Promise<BigNumber>;
    flash(amount: BigNumberish, data: BytesLike, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    getAccountSnapshot(account: string, overrides?: CallOverrides): Promise<[BigNumber, BigNumber, BigNumber, BigNumber]>;
    getTotalUnderlyingSupplied(overrides?: CallOverrides): Promise<BigNumber>;
    interestRateModel(overrides?: CallOverrides): Promise<string>;
    ionicAdmin(overrides?: CallOverrides): Promise<string>;
    ionicFeeMantissa(overrides?: CallOverrides): Promise<BigNumber>;
    multicall(data: BytesLike[], overrides?: PayableOverrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    name(overrides?: CallOverrides): Promise<string>;
    protocolSeizeShareMantissa(overrides?: CallOverrides): Promise<BigNumber>;
    reserveFactorMantissa(overrides?: CallOverrides): Promise<BigNumber>;
    supplyRatePerBlock(overrides?: CallOverrides): Promise<BigNumber>;
    supplyRatePerBlockAfterDeposit(mintAmount: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
    supplyRatePerBlockAfterWithdraw(withdrawAmount: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
    symbol(overrides?: CallOverrides): Promise<string>;
    totalAdminFees(overrides?: CallOverrides): Promise<BigNumber>;
    totalBorrows(overrides?: CallOverrides): Promise<BigNumber>;
    totalBorrowsCurrent(overrides?: CallOverrides): Promise<BigNumber>;
    totalIonicFees(overrides?: CallOverrides): Promise<BigNumber>;
    totalReserves(overrides?: CallOverrides): Promise<BigNumber>;
    totalSupply(overrides?: CallOverrides): Promise<BigNumber>;
    transfer(dst: string, amount: BigNumberish, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    transferFrom(src: string, dst: string, amount: BigNumberish, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    underlying(overrides?: CallOverrides): Promise<string>;
    callStatic: {
        _getExtensionFunctions(overrides?: CallOverrides): Promise<string[]>;
        _setAdminFee(newAdminFeeMantissa: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        _setInterestRateModel(newInterestRateModel: string, overrides?: CallOverrides): Promise<BigNumber>;
        _setNameAndSymbol(_name: string, _symbol: string, overrides?: CallOverrides): Promise<void>;
        _setReserveFactor(newReserveFactorMantissa: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        accrualBlockNumber(overrides?: CallOverrides): Promise<BigNumber>;
        accrueInterest(overrides?: CallOverrides): Promise<BigNumber>;
        adminFeeMantissa(overrides?: CallOverrides): Promise<BigNumber>;
        allowance(owner: string, spender: string, overrides?: CallOverrides): Promise<BigNumber>;
        approve(spender: string, amount: BigNumberish, overrides?: CallOverrides): Promise<boolean>;
        balanceOf(owner: string, overrides?: CallOverrides): Promise<BigNumber>;
        balanceOfUnderlying(owner: string, overrides?: CallOverrides): Promise<BigNumber>;
        borrowBalanceCurrent(account: string, overrides?: CallOverrides): Promise<BigNumber>;
        borrowIndex(overrides?: CallOverrides): Promise<BigNumber>;
        borrowRatePerBlock(overrides?: CallOverrides): Promise<BigNumber>;
        borrowRatePerBlockAfterBorrow(borrowAmount: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        comptroller(overrides?: CallOverrides): Promise<string>;
        decimals(overrides?: CallOverrides): Promise<number>;
        exchangeRateCurrent(overrides?: CallOverrides): Promise<BigNumber>;
        feeSeizeShareMantissa(overrides?: CallOverrides): Promise<BigNumber>;
        flash(amount: BigNumberish, data: BytesLike, overrides?: CallOverrides): Promise<void>;
        getAccountSnapshot(account: string, overrides?: CallOverrides): Promise<[BigNumber, BigNumber, BigNumber, BigNumber]>;
        getTotalUnderlyingSupplied(overrides?: CallOverrides): Promise<BigNumber>;
        interestRateModel(overrides?: CallOverrides): Promise<string>;
        ionicAdmin(overrides?: CallOverrides): Promise<string>;
        ionicFeeMantissa(overrides?: CallOverrides): Promise<BigNumber>;
        multicall(data: BytesLike[], overrides?: CallOverrides): Promise<string[]>;
        name(overrides?: CallOverrides): Promise<string>;
        protocolSeizeShareMantissa(overrides?: CallOverrides): Promise<BigNumber>;
        reserveFactorMantissa(overrides?: CallOverrides): Promise<BigNumber>;
        supplyRatePerBlock(overrides?: CallOverrides): Promise<BigNumber>;
        supplyRatePerBlockAfterDeposit(mintAmount: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        supplyRatePerBlockAfterWithdraw(withdrawAmount: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        symbol(overrides?: CallOverrides): Promise<string>;
        totalAdminFees(overrides?: CallOverrides): Promise<BigNumber>;
        totalBorrows(overrides?: CallOverrides): Promise<BigNumber>;
        totalBorrowsCurrent(overrides?: CallOverrides): Promise<BigNumber>;
        totalIonicFees(overrides?: CallOverrides): Promise<BigNumber>;
        totalReserves(overrides?: CallOverrides): Promise<BigNumber>;
        totalSupply(overrides?: CallOverrides): Promise<BigNumber>;
        transfer(dst: string, amount: BigNumberish, overrides?: CallOverrides): Promise<boolean>;
        transferFrom(src: string, dst: string, amount: BigNumberish, overrides?: CallOverrides): Promise<boolean>;
        underlying(overrides?: CallOverrides): Promise<string>;
    };
    filters: {
        "AccrueInterest(uint256,uint256,uint256,uint256)"(cashPrior?: null, interestAccumulated?: null, borrowIndex?: null, totalBorrows?: null): AccrueInterestEventFilter;
        AccrueInterest(cashPrior?: null, interestAccumulated?: null, borrowIndex?: null, totalBorrows?: null): AccrueInterestEventFilter;
        "Approval(address,address,uint256)"(owner?: string | null, spender?: string | null, amount?: null): ApprovalEventFilter;
        Approval(owner?: string | null, spender?: string | null, amount?: null): ApprovalEventFilter;
        "Failure(uint256,uint256,uint256)"(error?: null, info?: null, detail?: null): FailureEventFilter;
        Failure(error?: null, info?: null, detail?: null): FailureEventFilter;
        "Flash(address,uint256)"(receiver?: null, amount?: null): FlashEventFilter;
        Flash(receiver?: null, amount?: null): FlashEventFilter;
        "NewAdminFee(uint256,uint256)"(oldAdminFeeMantissa?: null, newAdminFeeMantissa?: null): NewAdminFeeEventFilter;
        NewAdminFee(oldAdminFeeMantissa?: null, newAdminFeeMantissa?: null): NewAdminFeeEventFilter;
        "NewIonicFee(uint256,uint256)"(oldIonicFeeMantissa?: null, newIonicFeeMantissa?: null): NewIonicFeeEventFilter;
        NewIonicFee(oldIonicFeeMantissa?: null, newIonicFeeMantissa?: null): NewIonicFeeEventFilter;
        "NewMarketInterestRateModel(address,address)"(oldInterestRateModel?: null, newInterestRateModel?: null): NewMarketInterestRateModelEventFilter;
        NewMarketInterestRateModel(oldInterestRateModel?: null, newInterestRateModel?: null): NewMarketInterestRateModelEventFilter;
        "NewReserveFactor(uint256,uint256)"(oldReserveFactorMantissa?: null, newReserveFactorMantissa?: null): NewReserveFactorEventFilter;
        NewReserveFactor(oldReserveFactorMantissa?: null, newReserveFactorMantissa?: null): NewReserveFactorEventFilter;
        "Transfer(address,address,uint256)"(from?: string | null, to?: string | null, amount?: null): TransferEventFilter;
        Transfer(from?: string | null, to?: string | null, amount?: null): TransferEventFilter;
    };
    estimateGas: {
        _getExtensionFunctions(overrides?: CallOverrides): Promise<BigNumber>;
        _setAdminFee(newAdminFeeMantissa: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        _setInterestRateModel(newInterestRateModel: string, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        _setNameAndSymbol(_name: string, _symbol: string, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        _setReserveFactor(newReserveFactorMantissa: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        accrualBlockNumber(overrides?: CallOverrides): Promise<BigNumber>;
        accrueInterest(overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        adminFeeMantissa(overrides?: CallOverrides): Promise<BigNumber>;
        allowance(owner: string, spender: string, overrides?: CallOverrides): Promise<BigNumber>;
        approve(spender: string, amount: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        balanceOf(owner: string, overrides?: CallOverrides): Promise<BigNumber>;
        balanceOfUnderlying(owner: string, overrides?: CallOverrides): Promise<BigNumber>;
        borrowBalanceCurrent(account: string, overrides?: CallOverrides): Promise<BigNumber>;
        borrowIndex(overrides?: CallOverrides): Promise<BigNumber>;
        borrowRatePerBlock(overrides?: CallOverrides): Promise<BigNumber>;
        borrowRatePerBlockAfterBorrow(borrowAmount: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        comptroller(overrides?: CallOverrides): Promise<BigNumber>;
        decimals(overrides?: CallOverrides): Promise<BigNumber>;
        exchangeRateCurrent(overrides?: CallOverrides): Promise<BigNumber>;
        feeSeizeShareMantissa(overrides?: CallOverrides): Promise<BigNumber>;
        flash(amount: BigNumberish, data: BytesLike, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        getAccountSnapshot(account: string, overrides?: CallOverrides): Promise<BigNumber>;
        getTotalUnderlyingSupplied(overrides?: CallOverrides): Promise<BigNumber>;
        interestRateModel(overrides?: CallOverrides): Promise<BigNumber>;
        ionicAdmin(overrides?: CallOverrides): Promise<BigNumber>;
        ionicFeeMantissa(overrides?: CallOverrides): Promise<BigNumber>;
        multicall(data: BytesLike[], overrides?: PayableOverrides & {
            from?: string;
        }): Promise<BigNumber>;
        name(overrides?: CallOverrides): Promise<BigNumber>;
        protocolSeizeShareMantissa(overrides?: CallOverrides): Promise<BigNumber>;
        reserveFactorMantissa(overrides?: CallOverrides): Promise<BigNumber>;
        supplyRatePerBlock(overrides?: CallOverrides): Promise<BigNumber>;
        supplyRatePerBlockAfterDeposit(mintAmount: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        supplyRatePerBlockAfterWithdraw(withdrawAmount: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        symbol(overrides?: CallOverrides): Promise<BigNumber>;
        totalAdminFees(overrides?: CallOverrides): Promise<BigNumber>;
        totalBorrows(overrides?: CallOverrides): Promise<BigNumber>;
        totalBorrowsCurrent(overrides?: CallOverrides): Promise<BigNumber>;
        totalIonicFees(overrides?: CallOverrides): Promise<BigNumber>;
        totalReserves(overrides?: CallOverrides): Promise<BigNumber>;
        totalSupply(overrides?: CallOverrides): Promise<BigNumber>;
        transfer(dst: string, amount: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        transferFrom(src: string, dst: string, amount: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        underlying(overrides?: CallOverrides): Promise<BigNumber>;
    };
    populateTransaction: {
        _getExtensionFunctions(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        _setAdminFee(newAdminFeeMantissa: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        _setInterestRateModel(newInterestRateModel: string, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        _setNameAndSymbol(_name: string, _symbol: string, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        _setReserveFactor(newReserveFactorMantissa: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        accrualBlockNumber(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        accrueInterest(overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        adminFeeMantissa(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        allowance(owner: string, spender: string, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        approve(spender: string, amount: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        balanceOf(owner: string, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        balanceOfUnderlying(owner: string, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        borrowBalanceCurrent(account: string, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        borrowIndex(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        borrowRatePerBlock(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        borrowRatePerBlockAfterBorrow(borrowAmount: BigNumberish, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        comptroller(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        decimals(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        exchangeRateCurrent(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        feeSeizeShareMantissa(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        flash(amount: BigNumberish, data: BytesLike, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        getAccountSnapshot(account: string, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getTotalUnderlyingSupplied(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        interestRateModel(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        ionicAdmin(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        ionicFeeMantissa(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        multicall(data: BytesLike[], overrides?: PayableOverrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        name(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        protocolSeizeShareMantissa(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        reserveFactorMantissa(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        supplyRatePerBlock(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        supplyRatePerBlockAfterDeposit(mintAmount: BigNumberish, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        supplyRatePerBlockAfterWithdraw(withdrawAmount: BigNumberish, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        symbol(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        totalAdminFees(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        totalBorrows(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        totalBorrowsCurrent(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        totalIonicFees(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        totalReserves(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        totalSupply(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        transfer(dst: string, amount: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        transferFrom(src: string, dst: string, amount: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        underlying(overrides?: CallOverrides): Promise<PopulatedTransaction>;
    };
}
