import type { BaseContract, BigNumber, BigNumberish, BytesLike, CallOverrides, ContractTransaction, Overrides, 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 CyTokenInterface extends utils.Interface {
    functions: {
        '_acceptAdmin()': FunctionFragment;
        '_addReserves(uint256)': FunctionFragment;
        '_reduceReserves(uint256)': FunctionFragment;
        '_setComptroller(address)': FunctionFragment;
        '_setImplementation(address,bool,bytes)': FunctionFragment;
        '_setInterestRateModel(address)': FunctionFragment;
        '_setPendingAdmin(address)': FunctionFragment;
        '_setReserveFactor(uint256)': FunctionFragment;
        'accrualBlockNumber()': FunctionFragment;
        'accrueInterest()': FunctionFragment;
        'admin()': FunctionFragment;
        'allowance(address,address)': FunctionFragment;
        'approve(address,uint256)': FunctionFragment;
        'balanceOf(address)': FunctionFragment;
        'balanceOfUnderlying(address)': FunctionFragment;
        'borrow(uint256)': FunctionFragment;
        'borrowBalanceCurrent(address)': FunctionFragment;
        'borrowBalanceStored(address)': FunctionFragment;
        'borrowIndex()': FunctionFragment;
        'borrowRatePerBlock()': FunctionFragment;
        'comptroller()': FunctionFragment;
        'decimals()': FunctionFragment;
        'delegateToImplementation(bytes)': FunctionFragment;
        'delegateToViewImplementation(bytes)': FunctionFragment;
        'exchangeRateCurrent()': FunctionFragment;
        'exchangeRateStored()': FunctionFragment;
        'getAccountSnapshot(address)': FunctionFragment;
        'getCash()': FunctionFragment;
        'totalValue()': FunctionFragment;
        'implementation()': FunctionFragment;
        'interestRateModel()': FunctionFragment;
        'isCToken()': FunctionFragment;
        'liquidateBorrow(address,uint256,address)': FunctionFragment;
        'mint(uint256)': FunctionFragment;
        'name()': FunctionFragment;
        'pendingAdmin()': FunctionFragment;
        'redeem(uint256)': FunctionFragment;
        'redeemUnderlying(uint256)': FunctionFragment;
        'repayBorrow(uint256)': FunctionFragment;
        'reserveFactorMantissa()': FunctionFragment;
        'seize(address,address,uint256)': FunctionFragment;
        'supplyRatePerBlock()': FunctionFragment;
        'rate()': FunctionFragment;
        'symbol()': FunctionFragment;
        'totalBorrows()': FunctionFragment;
        'totalBorrowValue()': FunctionFragment;
        'totalBorrowsCurrent()': FunctionFragment;
        'totalReserves()': FunctionFragment;
        'totalSupply()': FunctionFragment;
        'transfer(address,uint256)': FunctionFragment;
        'transferFrom(address,address,uint256)': FunctionFragment;
        'underlying()': FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: '_acceptAdmin' | '_addReserves' | '_reduceReserves' | '_setComptroller' | '_setImplementation' | '_setInterestRateModel' | '_setPendingAdmin' | '_setReserveFactor' | 'accrualBlockNumber' | 'accrueInterest' | 'admin' | 'allowance' | 'approve' | 'balanceOf' | 'balanceOfUnderlying' | 'borrow' | 'borrowBalanceCurrent' | 'borrowBalanceStored' | 'borrowIndex' | 'borrowRatePerBlock' | 'comptroller' | 'decimals' | 'delegateToImplementation' | 'delegateToViewImplementation' | 'exchangeRateCurrent' | 'exchangeRateStored' | 'getAccountSnapshot' | 'getCash' | 'totalValue' | 'implementation' | 'interestRateModel' | 'isCToken' | 'liquidateBorrow' | 'mint' | 'name' | 'pendingAdmin' | 'redeem' | 'redeemUnderlying' | 'repayBorrow' | 'reserveFactorMantissa' | 'seize' | 'supplyRatePerBlock' | 'rate' | 'symbol' | 'totalBorrows' | 'totalBorrowValue' | 'totalBorrowsCurrent' | 'totalReserves' | 'totalSupply' | 'transfer' | 'transferFrom' | 'underlying'): FunctionFragment;
    encodeFunctionData(functionFragment: '_acceptAdmin', values?: undefined): string;
    encodeFunctionData(functionFragment: '_addReserves', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: '_reduceReserves', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: '_setComptroller', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: '_setImplementation', values: [PromiseOrValue<string>, PromiseOrValue<boolean>, PromiseOrValue<BytesLike>]): string;
    encodeFunctionData(functionFragment: '_setInterestRateModel', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: '_setPendingAdmin', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: '_setReserveFactor', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'accrualBlockNumber', values?: undefined): string;
    encodeFunctionData(functionFragment: 'accrueInterest', values?: undefined): string;
    encodeFunctionData(functionFragment: 'admin', values?: undefined): string;
    encodeFunctionData(functionFragment: 'allowance', values: [PromiseOrValue<string>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'approve', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'balanceOf', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'balanceOfUnderlying', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'borrow', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'borrowBalanceCurrent', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'borrowBalanceStored', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'borrowIndex', values?: undefined): string;
    encodeFunctionData(functionFragment: 'borrowRatePerBlock', values?: undefined): string;
    encodeFunctionData(functionFragment: 'comptroller', values?: undefined): string;
    encodeFunctionData(functionFragment: 'decimals', values?: undefined): string;
    encodeFunctionData(functionFragment: 'delegateToImplementation', values: [PromiseOrValue<BytesLike>]): string;
    encodeFunctionData(functionFragment: 'delegateToViewImplementation', values: [PromiseOrValue<BytesLike>]): string;
    encodeFunctionData(functionFragment: 'exchangeRateCurrent', values?: undefined): string;
    encodeFunctionData(functionFragment: 'exchangeRateStored', values?: undefined): string;
    encodeFunctionData(functionFragment: 'getAccountSnapshot', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'getCash', values?: undefined): string;
    encodeFunctionData(functionFragment: 'totalValue', values?: undefined): string;
    encodeFunctionData(functionFragment: 'implementation', values?: undefined): string;
    encodeFunctionData(functionFragment: 'interestRateModel', values?: undefined): string;
    encodeFunctionData(functionFragment: 'isCToken', values?: undefined): string;
    encodeFunctionData(functionFragment: 'liquidateBorrow', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'mint', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'name', values?: undefined): string;
    encodeFunctionData(functionFragment: 'pendingAdmin', values?: undefined): string;
    encodeFunctionData(functionFragment: 'redeem', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'redeemUnderlying', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'repayBorrow', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'reserveFactorMantissa', values?: undefined): string;
    encodeFunctionData(functionFragment: 'seize', values: [PromiseOrValue<string>, PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'supplyRatePerBlock', values?: undefined): string;
    encodeFunctionData(functionFragment: 'rate', values?: undefined): string;
    encodeFunctionData(functionFragment: 'symbol', values?: undefined): string;
    encodeFunctionData(functionFragment: 'totalBorrows', values?: undefined): string;
    encodeFunctionData(functionFragment: 'totalBorrowValue', values?: undefined): string;
    encodeFunctionData(functionFragment: 'totalBorrowsCurrent', values?: undefined): string;
    encodeFunctionData(functionFragment: 'totalReserves', values?: undefined): string;
    encodeFunctionData(functionFragment: 'totalSupply', values?: undefined): string;
    encodeFunctionData(functionFragment: 'transfer', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'transferFrom', values: [PromiseOrValue<string>, PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'underlying', values?: undefined): string;
    decodeFunctionResult(functionFragment: '_acceptAdmin', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: '_addReserves', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: '_reduceReserves', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: '_setComptroller', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: '_setImplementation', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: '_setInterestRateModel', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: '_setPendingAdmin', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: '_setReserveFactor', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'accrualBlockNumber', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'accrueInterest', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'admin', 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: 'borrow', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'borrowBalanceCurrent', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'borrowBalanceStored', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'borrowIndex', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'borrowRatePerBlock', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'comptroller', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'decimals', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'delegateToImplementation', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'delegateToViewImplementation', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'exchangeRateCurrent', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'exchangeRateStored', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getAccountSnapshot', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getCash', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'totalValue', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'implementation', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'interestRateModel', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'isCToken', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'liquidateBorrow', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'mint', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'name', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'pendingAdmin', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'redeem', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'redeemUnderlying', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'repayBorrow', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'reserveFactorMantissa', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'seize', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'supplyRatePerBlock', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'rate', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'symbol', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'totalBorrows', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'totalBorrowValue', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'totalBorrowsCurrent', 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;
        'Borrow(address,uint256,uint256,uint256)': EventFragment;
        'Failure(uint256,uint256,uint256)': EventFragment;
        'LiquidateBorrow(address,address,uint256,address,uint256)': EventFragment;
        'Mint(address,uint256,uint256)': EventFragment;
        'NewAdmin(address,address)': EventFragment;
        'NewComptroller(address,address)': EventFragment;
        'NewImplementation(address,address)': EventFragment;
        'NewMarketInterestRateModel(address,address)': EventFragment;
        'NewPendingAdmin(address,address)': EventFragment;
        'NewReserveFactor(uint256,uint256)': EventFragment;
        'Redeem(address,uint256,uint256)': EventFragment;
        'RepayBorrow(address,address,uint256,uint256,uint256)': EventFragment;
        'ReservesAdded(address,uint256,uint256)': EventFragment;
        'ReservesReduced(address,uint256,uint256)': EventFragment;
        'Transfer(address,address,uint256)': EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: 'AccrueInterest'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Approval'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Borrow'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Failure'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'LiquidateBorrow'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Mint'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'NewAdmin'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'NewComptroller'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'NewImplementation'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'NewMarketInterestRateModel'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'NewPendingAdmin'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'NewReserveFactor'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Redeem'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'RepayBorrow'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'ReservesAdded'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'ReservesReduced'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Transfer'): EventFragment;
}
export interface AccrueInterestEventObject {
    cashPrior: BigNumber;
    interestAccumulated: BigNumber;
    borrowIndex: BigNumber;
    totalBorrows: BigNumber;
}
export declare type AccrueInterestEvent = TypedEvent<[BigNumber, BigNumber, BigNumber, BigNumber], AccrueInterestEventObject>;
export declare type AccrueInterestEventFilter = TypedEventFilter<AccrueInterestEvent>;
export interface ApprovalEventObject {
    owner: string;
    spender: string;
    amount: BigNumber;
}
export declare type ApprovalEvent = TypedEvent<[string, string, BigNumber], ApprovalEventObject>;
export declare type ApprovalEventFilter = TypedEventFilter<ApprovalEvent>;
export interface BorrowEventObject {
    borrower: string;
    borrowAmount: BigNumber;
    accountBorrows: BigNumber;
    totalBorrows: BigNumber;
}
export declare type BorrowEvent = TypedEvent<[string, BigNumber, BigNumber, BigNumber], BorrowEventObject>;
export declare type BorrowEventFilter = TypedEventFilter<BorrowEvent>;
export interface FailureEventObject {
    error: BigNumber;
    info: BigNumber;
    detail: BigNumber;
}
export declare type FailureEvent = TypedEvent<[BigNumber, BigNumber, BigNumber], FailureEventObject>;
export declare type FailureEventFilter = TypedEventFilter<FailureEvent>;
export interface LiquidateBorrowEventObject {
    liquidator: string;
    borrower: string;
    repayAmount: BigNumber;
    cTokenCollateral: string;
    seizeTokens: BigNumber;
}
export declare type LiquidateBorrowEvent = TypedEvent<[
    string,
    string,
    BigNumber,
    string,
    BigNumber
], LiquidateBorrowEventObject>;
export declare type LiquidateBorrowEventFilter = TypedEventFilter<LiquidateBorrowEvent>;
export interface MintEventObject {
    minter: string;
    mintAmount: BigNumber;
    mintTokens: BigNumber;
}
export declare type MintEvent = TypedEvent<[string, BigNumber, BigNumber], MintEventObject>;
export declare type MintEventFilter = TypedEventFilter<MintEvent>;
export interface NewAdminEventObject {
    oldAdmin: string;
    newAdmin: string;
}
export declare type NewAdminEvent = TypedEvent<[string, string], NewAdminEventObject>;
export declare type NewAdminEventFilter = TypedEventFilter<NewAdminEvent>;
export interface NewComptrollerEventObject {
    oldComptroller: string;
    newComptroller: string;
}
export declare type NewComptrollerEvent = TypedEvent<[string, string], NewComptrollerEventObject>;
export declare type NewComptrollerEventFilter = TypedEventFilter<NewComptrollerEvent>;
export interface NewImplementationEventObject {
    oldImplementation: string;
    newImplementation: string;
}
export declare type NewImplementationEvent = TypedEvent<[string, string], NewImplementationEventObject>;
export declare type NewImplementationEventFilter = TypedEventFilter<NewImplementationEvent>;
export interface NewMarketInterestRateModelEventObject {
    oldInterestRateModel: string;
    newInterestRateModel: string;
}
export declare type NewMarketInterestRateModelEvent = TypedEvent<[string, string], NewMarketInterestRateModelEventObject>;
export declare type NewMarketInterestRateModelEventFilter = TypedEventFilter<NewMarketInterestRateModelEvent>;
export interface NewPendingAdminEventObject {
    oldPendingAdmin: string;
    newPendingAdmin: string;
}
export declare type NewPendingAdminEvent = TypedEvent<[string, string], NewPendingAdminEventObject>;
export declare type NewPendingAdminEventFilter = TypedEventFilter<NewPendingAdminEvent>;
export interface NewReserveFactorEventObject {
    oldReserveFactorMantissa: BigNumber;
    newReserveFactorMantissa: BigNumber;
}
export declare type NewReserveFactorEvent = TypedEvent<[BigNumber, BigNumber], NewReserveFactorEventObject>;
export declare type NewReserveFactorEventFilter = TypedEventFilter<NewReserveFactorEvent>;
export interface RedeemEventObject {
    redeemer: string;
    redeemAmount: BigNumber;
    redeemTokens: BigNumber;
}
export declare type RedeemEvent = TypedEvent<[string, BigNumber, BigNumber], RedeemEventObject>;
export declare type RedeemEventFilter = TypedEventFilter<RedeemEvent>;
export interface RepayBorrowEventObject {
    payer: string;
    borrower: string;
    repayAmount: BigNumber;
    accountBorrows: BigNumber;
    totalBorrows: BigNumber;
}
export declare type RepayBorrowEvent = TypedEvent<[string, string, BigNumber, BigNumber, BigNumber], RepayBorrowEventObject>;
export declare type RepayBorrowEventFilter = TypedEventFilter<RepayBorrowEvent>;
export interface ReservesAddedEventObject {
    benefactor: string;
    addAmount: BigNumber;
    newTotalReserves: BigNumber;
}
export declare type ReservesAddedEvent = TypedEvent<[string, BigNumber, BigNumber], ReservesAddedEventObject>;
export declare type ReservesAddedEventFilter = TypedEventFilter<ReservesAddedEvent>;
export interface ReservesReducedEventObject {
    admin: string;
    reduceAmount: BigNumber;
    newTotalReserves: BigNumber;
}
export declare type ReservesReducedEvent = TypedEvent<[string, BigNumber, BigNumber], ReservesReducedEventObject>;
export declare type ReservesReducedEventFilter = TypedEventFilter<ReservesReducedEvent>;
export interface TransferEventObject {
    from: string;
    to: string;
    amount: BigNumber;
}
export declare type TransferEvent = TypedEvent<[string, string, BigNumber], TransferEventObject>;
export declare type TransferEventFilter = TypedEventFilter<TransferEvent>;
export interface CyToken extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: CyTokenInterface;
    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: {
        _acceptAdmin(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        _addReserves(addAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        _reduceReserves(reduceAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        _setComptroller(newComptroller: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        _setImplementation(implementation_: PromiseOrValue<string>, allowResign: PromiseOrValue<boolean>, becomeImplementationData: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        _setInterestRateModel(newInterestRateModel: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        _setPendingAdmin(newPendingAdmin: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        _setReserveFactor(newReserveFactorMantissa: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        accrualBlockNumber(overrides?: CallOverrides): Promise<[BigNumber]>;
        accrueInterest(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        admin(overrides?: CallOverrides): Promise<[string]>;
        allowance(owner: PromiseOrValue<string>, spender: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber]>;
        approve(spender: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        balanceOf(owner: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber]>;
        balanceOfUnderlying(owner: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        borrow(borrowAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        borrowBalanceCurrent(account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        borrowBalanceStored(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber]>;
        borrowIndex(overrides?: CallOverrides): Promise<[BigNumber]>;
        borrowRatePerBlock(overrides?: CallOverrides): Promise<[BigNumber]>;
        comptroller(overrides?: CallOverrides): Promise<[string]>;
        decimals(overrides?: CallOverrides): Promise<[number]>;
        delegateToImplementation(data: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        delegateToViewImplementation(data: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<[string]>;
        exchangeRateCurrent(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        exchangeRateStored(overrides?: CallOverrides): Promise<[BigNumber]>;
        getAccountSnapshot(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber, BigNumber, BigNumber, BigNumber]>;
        getCash(overrides?: CallOverrides): Promise<[BigNumber]>;
        totalValue(overrides?: CallOverrides): Promise<[BigNumber]>;
        implementation(overrides?: CallOverrides): Promise<[string]>;
        interestRateModel(overrides?: CallOverrides): Promise<[string]>;
        isCToken(overrides?: CallOverrides): Promise<[boolean]>;
        liquidateBorrow(borrower: PromiseOrValue<string>, repayAmount: PromiseOrValue<BigNumberish>, cTokenCollateral: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        mint(mintAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        name(overrides?: CallOverrides): Promise<[string]>;
        pendingAdmin(overrides?: CallOverrides): Promise<[string]>;
        redeem(redeemTokens: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        redeemUnderlying(redeemAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        repayBorrow(repayAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        reserveFactorMantissa(overrides?: CallOverrides): Promise<[BigNumber]>;
        seize(liquidator: PromiseOrValue<string>, borrower: PromiseOrValue<string>, seizeTokens: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        supplyRatePerBlock(overrides?: CallOverrides): Promise<[BigNumber]>;
        rate(overrides?: CallOverrides): Promise<[BigNumber]>;
        symbol(overrides?: CallOverrides): Promise<[string]>;
        totalBorrows(overrides?: CallOverrides): Promise<[BigNumber]>;
        totalBorrowValue(overrides?: CallOverrides): Promise<[BigNumber]>;
        totalBorrowsCurrent(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        totalReserves(overrides?: CallOverrides): Promise<[BigNumber]>;
        totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>;
        transfer(dst: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        transferFrom(src: PromiseOrValue<string>, dst: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        underlying(overrides?: CallOverrides): Promise<[string]>;
    };
    _acceptAdmin(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    _addReserves(addAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    _reduceReserves(reduceAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    _setComptroller(newComptroller: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    _setImplementation(implementation_: PromiseOrValue<string>, allowResign: PromiseOrValue<boolean>, becomeImplementationData: PromiseOrValue<BytesLike>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    _setInterestRateModel(newInterestRateModel: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    _setPendingAdmin(newPendingAdmin: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    _setReserveFactor(newReserveFactorMantissa: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    accrualBlockNumber(overrides?: CallOverrides): Promise<BigNumber>;
    accrueInterest(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    admin(overrides?: CallOverrides): Promise<string>;
    allowance(owner: PromiseOrValue<string>, spender: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    approve(spender: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    balanceOf(owner: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    balanceOfUnderlying(owner: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    borrow(borrowAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    borrowBalanceCurrent(account: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    borrowBalanceStored(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    borrowIndex(overrides?: CallOverrides): Promise<BigNumber>;
    borrowRatePerBlock(overrides?: CallOverrides): Promise<BigNumber>;
    comptroller(overrides?: CallOverrides): Promise<string>;
    decimals(overrides?: CallOverrides): Promise<number>;
    delegateToImplementation(data: PromiseOrValue<BytesLike>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    delegateToViewImplementation(data: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<string>;
    exchangeRateCurrent(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    exchangeRateStored(overrides?: CallOverrides): Promise<BigNumber>;
    getAccountSnapshot(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber, BigNumber, BigNumber, BigNumber]>;
    getCash(overrides?: CallOverrides): Promise<BigNumber>;
    totalValue(overrides?: CallOverrides): Promise<BigNumber>;
    implementation(overrides?: CallOverrides): Promise<string>;
    interestRateModel(overrides?: CallOverrides): Promise<string>;
    isCToken(overrides?: CallOverrides): Promise<boolean>;
    liquidateBorrow(borrower: PromiseOrValue<string>, repayAmount: PromiseOrValue<BigNumberish>, cTokenCollateral: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    mint(mintAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    name(overrides?: CallOverrides): Promise<string>;
    pendingAdmin(overrides?: CallOverrides): Promise<string>;
    redeem(redeemTokens: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    redeemUnderlying(redeemAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    repayBorrow(repayAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    reserveFactorMantissa(overrides?: CallOverrides): Promise<BigNumber>;
    seize(liquidator: PromiseOrValue<string>, borrower: PromiseOrValue<string>, seizeTokens: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    supplyRatePerBlock(overrides?: CallOverrides): Promise<BigNumber>;
    rate(overrides?: CallOverrides): Promise<BigNumber>;
    symbol(overrides?: CallOverrides): Promise<string>;
    totalBorrows(overrides?: CallOverrides): Promise<BigNumber>;
    totalBorrowValue(overrides?: CallOverrides): Promise<BigNumber>;
    totalBorrowsCurrent(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    totalReserves(overrides?: CallOverrides): Promise<BigNumber>;
    totalSupply(overrides?: CallOverrides): Promise<BigNumber>;
    transfer(dst: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    transferFrom(src: PromiseOrValue<string>, dst: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    underlying(overrides?: CallOverrides): Promise<string>;
    callStatic: {
        _acceptAdmin(overrides?: CallOverrides): Promise<BigNumber>;
        _addReserves(addAmount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        _reduceReserves(reduceAmount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        _setComptroller(newComptroller: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        _setImplementation(implementation_: PromiseOrValue<string>, allowResign: PromiseOrValue<boolean>, becomeImplementationData: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<void>;
        _setInterestRateModel(newInterestRateModel: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        _setPendingAdmin(newPendingAdmin: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        _setReserveFactor(newReserveFactorMantissa: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        accrualBlockNumber(overrides?: CallOverrides): Promise<BigNumber>;
        accrueInterest(overrides?: CallOverrides): Promise<BigNumber>;
        admin(overrides?: CallOverrides): Promise<string>;
        allowance(owner: PromiseOrValue<string>, spender: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        approve(spender: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<boolean>;
        balanceOf(owner: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        balanceOfUnderlying(owner: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        borrow(borrowAmount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        borrowBalanceCurrent(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        borrowBalanceStored(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        borrowIndex(overrides?: CallOverrides): Promise<BigNumber>;
        borrowRatePerBlock(overrides?: CallOverrides): Promise<BigNumber>;
        comptroller(overrides?: CallOverrides): Promise<string>;
        decimals(overrides?: CallOverrides): Promise<number>;
        delegateToImplementation(data: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<string>;
        delegateToViewImplementation(data: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<string>;
        exchangeRateCurrent(overrides?: CallOverrides): Promise<BigNumber>;
        exchangeRateStored(overrides?: CallOverrides): Promise<BigNumber>;
        getAccountSnapshot(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber, BigNumber, BigNumber, BigNumber]>;
        getCash(overrides?: CallOverrides): Promise<BigNumber>;
        totalValue(overrides?: CallOverrides): Promise<BigNumber>;
        implementation(overrides?: CallOverrides): Promise<string>;
        interestRateModel(overrides?: CallOverrides): Promise<string>;
        isCToken(overrides?: CallOverrides): Promise<boolean>;
        liquidateBorrow(borrower: PromiseOrValue<string>, repayAmount: PromiseOrValue<BigNumberish>, cTokenCollateral: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        mint(mintAmount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        name(overrides?: CallOverrides): Promise<string>;
        pendingAdmin(overrides?: CallOverrides): Promise<string>;
        redeem(redeemTokens: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        redeemUnderlying(redeemAmount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        repayBorrow(repayAmount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        reserveFactorMantissa(overrides?: CallOverrides): Promise<BigNumber>;
        seize(liquidator: PromiseOrValue<string>, borrower: PromiseOrValue<string>, seizeTokens: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        supplyRatePerBlock(overrides?: CallOverrides): Promise<BigNumber>;
        rate(overrides?: CallOverrides): Promise<BigNumber>;
        symbol(overrides?: CallOverrides): Promise<string>;
        totalBorrows(overrides?: CallOverrides): Promise<BigNumber>;
        totalBorrowValue(overrides?: CallOverrides): Promise<BigNumber>;
        totalBorrowsCurrent(overrides?: CallOverrides): Promise<BigNumber>;
        totalReserves(overrides?: CallOverrides): Promise<BigNumber>;
        totalSupply(overrides?: CallOverrides): Promise<BigNumber>;
        transfer(dst: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<boolean>;
        transferFrom(src: PromiseOrValue<string>, dst: PromiseOrValue<string>, amount: PromiseOrValue<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?: PromiseOrValue<string> | null, spender?: PromiseOrValue<string> | null, amount?: null): ApprovalEventFilter;
        Approval(owner?: PromiseOrValue<string> | null, spender?: PromiseOrValue<string> | null, amount?: null): ApprovalEventFilter;
        'Borrow(address,uint256,uint256,uint256)'(borrower?: null, borrowAmount?: null, accountBorrows?: null, totalBorrows?: null): BorrowEventFilter;
        Borrow(borrower?: null, borrowAmount?: null, accountBorrows?: null, totalBorrows?: null): BorrowEventFilter;
        'Failure(uint256,uint256,uint256)'(error?: null, info?: null, detail?: null): FailureEventFilter;
        Failure(error?: null, info?: null, detail?: null): FailureEventFilter;
        'LiquidateBorrow(address,address,uint256,address,uint256)'(liquidator?: null, borrower?: null, repayAmount?: null, cTokenCollateral?: null, seizeTokens?: null): LiquidateBorrowEventFilter;
        LiquidateBorrow(liquidator?: null, borrower?: null, repayAmount?: null, cTokenCollateral?: null, seizeTokens?: null): LiquidateBorrowEventFilter;
        'Mint(address,uint256,uint256)'(minter?: null, mintAmount?: null, mintTokens?: null): MintEventFilter;
        Mint(minter?: null, mintAmount?: null, mintTokens?: null): MintEventFilter;
        'NewAdmin(address,address)'(oldAdmin?: null, newAdmin?: null): NewAdminEventFilter;
        NewAdmin(oldAdmin?: null, newAdmin?: null): NewAdminEventFilter;
        'NewComptroller(address,address)'(oldComptroller?: null, newComptroller?: null): NewComptrollerEventFilter;
        NewComptroller(oldComptroller?: null, newComptroller?: null): NewComptrollerEventFilter;
        'NewImplementation(address,address)'(oldImplementation?: null, newImplementation?: null): NewImplementationEventFilter;
        NewImplementation(oldImplementation?: null, newImplementation?: null): NewImplementationEventFilter;
        'NewMarketInterestRateModel(address,address)'(oldInterestRateModel?: null, newInterestRateModel?: null): NewMarketInterestRateModelEventFilter;
        NewMarketInterestRateModel(oldInterestRateModel?: null, newInterestRateModel?: null): NewMarketInterestRateModelEventFilter;
        'NewPendingAdmin(address,address)'(oldPendingAdmin?: null, newPendingAdmin?: null): NewPendingAdminEventFilter;
        NewPendingAdmin(oldPendingAdmin?: null, newPendingAdmin?: null): NewPendingAdminEventFilter;
        'NewReserveFactor(uint256,uint256)'(oldReserveFactorMantissa?: null, newReserveFactorMantissa?: null): NewReserveFactorEventFilter;
        NewReserveFactor(oldReserveFactorMantissa?: null, newReserveFactorMantissa?: null): NewReserveFactorEventFilter;
        'Redeem(address,uint256,uint256)'(redeemer?: null, redeemAmount?: null, redeemTokens?: null): RedeemEventFilter;
        Redeem(redeemer?: null, redeemAmount?: null, redeemTokens?: null): RedeemEventFilter;
        'RepayBorrow(address,address,uint256,uint256,uint256)'(payer?: null, borrower?: null, repayAmount?: null, accountBorrows?: null, totalBorrows?: null): RepayBorrowEventFilter;
        RepayBorrow(payer?: null, borrower?: null, repayAmount?: null, accountBorrows?: null, totalBorrows?: null): RepayBorrowEventFilter;
        'ReservesAdded(address,uint256,uint256)'(benefactor?: null, addAmount?: null, newTotalReserves?: null): ReservesAddedEventFilter;
        ReservesAdded(benefactor?: null, addAmount?: null, newTotalReserves?: null): ReservesAddedEventFilter;
        'ReservesReduced(address,uint256,uint256)'(admin?: null, reduceAmount?: null, newTotalReserves?: null): ReservesReducedEventFilter;
        ReservesReduced(admin?: null, reduceAmount?: null, newTotalReserves?: null): ReservesReducedEventFilter;
        'Transfer(address,address,uint256)'(from?: PromiseOrValue<string> | null, to?: PromiseOrValue<string> | null, amount?: null): TransferEventFilter;
        Transfer(from?: PromiseOrValue<string> | null, to?: PromiseOrValue<string> | null, amount?: null): TransferEventFilter;
    };
    estimateGas: {
        _acceptAdmin(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        _addReserves(addAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        _reduceReserves(reduceAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        _setComptroller(newComptroller: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        _setImplementation(implementation_: PromiseOrValue<string>, allowResign: PromiseOrValue<boolean>, becomeImplementationData: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        _setInterestRateModel(newInterestRateModel: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        _setPendingAdmin(newPendingAdmin: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        _setReserveFactor(newReserveFactorMantissa: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        accrualBlockNumber(overrides?: CallOverrides): Promise<BigNumber>;
        accrueInterest(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        admin(overrides?: CallOverrides): Promise<BigNumber>;
        allowance(owner: PromiseOrValue<string>, spender: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        approve(spender: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        balanceOf(owner: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        balanceOfUnderlying(owner: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        borrow(borrowAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        borrowBalanceCurrent(account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        borrowBalanceStored(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        borrowIndex(overrides?: CallOverrides): Promise<BigNumber>;
        borrowRatePerBlock(overrides?: CallOverrides): Promise<BigNumber>;
        comptroller(overrides?: CallOverrides): Promise<BigNumber>;
        decimals(overrides?: CallOverrides): Promise<BigNumber>;
        delegateToImplementation(data: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        delegateToViewImplementation(data: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<BigNumber>;
        exchangeRateCurrent(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        exchangeRateStored(overrides?: CallOverrides): Promise<BigNumber>;
        getAccountSnapshot(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        getCash(overrides?: CallOverrides): Promise<BigNumber>;
        totalValue(overrides?: CallOverrides): Promise<BigNumber>;
        implementation(overrides?: CallOverrides): Promise<BigNumber>;
        interestRateModel(overrides?: CallOverrides): Promise<BigNumber>;
        isCToken(overrides?: CallOverrides): Promise<BigNumber>;
        liquidateBorrow(borrower: PromiseOrValue<string>, repayAmount: PromiseOrValue<BigNumberish>, cTokenCollateral: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        mint(mintAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        name(overrides?: CallOverrides): Promise<BigNumber>;
        pendingAdmin(overrides?: CallOverrides): Promise<BigNumber>;
        redeem(redeemTokens: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        redeemUnderlying(redeemAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        repayBorrow(repayAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        reserveFactorMantissa(overrides?: CallOverrides): Promise<BigNumber>;
        seize(liquidator: PromiseOrValue<string>, borrower: PromiseOrValue<string>, seizeTokens: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        supplyRatePerBlock(overrides?: CallOverrides): Promise<BigNumber>;
        rate(overrides?: CallOverrides): Promise<BigNumber>;
        symbol(overrides?: CallOverrides): Promise<BigNumber>;
        totalBorrows(overrides?: CallOverrides): Promise<BigNumber>;
        totalBorrowValue(overrides?: CallOverrides): Promise<BigNumber>;
        totalBorrowsCurrent(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        totalReserves(overrides?: CallOverrides): Promise<BigNumber>;
        totalSupply(overrides?: CallOverrides): Promise<BigNumber>;
        transfer(dst: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        transferFrom(src: PromiseOrValue<string>, dst: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        underlying(overrides?: CallOverrides): Promise<BigNumber>;
    };
    populateTransaction: {
        _acceptAdmin(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        _addReserves(addAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        _reduceReserves(reduceAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        _setComptroller(newComptroller: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        _setImplementation(implementation_: PromiseOrValue<string>, allowResign: PromiseOrValue<boolean>, becomeImplementationData: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        _setInterestRateModel(newInterestRateModel: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        _setPendingAdmin(newPendingAdmin: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        _setReserveFactor(newReserveFactorMantissa: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        accrualBlockNumber(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        accrueInterest(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        admin(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        allowance(owner: PromiseOrValue<string>, spender: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        approve(spender: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        balanceOf(owner: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        balanceOfUnderlying(owner: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        borrow(borrowAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        borrowBalanceCurrent(account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        borrowBalanceStored(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        borrowIndex(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        borrowRatePerBlock(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        comptroller(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        decimals(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        delegateToImplementation(data: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        delegateToViewImplementation(data: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        exchangeRateCurrent(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        exchangeRateStored(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getAccountSnapshot(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getCash(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        totalValue(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        implementation(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        interestRateModel(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        isCToken(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        liquidateBorrow(borrower: PromiseOrValue<string>, repayAmount: PromiseOrValue<BigNumberish>, cTokenCollateral: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        mint(mintAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        name(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        pendingAdmin(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        redeem(redeemTokens: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        redeemUnderlying(redeemAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        repayBorrow(repayAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        reserveFactorMantissa(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        seize(liquidator: PromiseOrValue<string>, borrower: PromiseOrValue<string>, seizeTokens: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        supplyRatePerBlock(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        rate(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        symbol(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        totalBorrows(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        totalBorrowValue(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        totalBorrowsCurrent(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        totalReserves(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        totalSupply(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        transfer(dst: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        transferFrom(src: PromiseOrValue<string>, dst: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        underlying(overrides?: CallOverrides): Promise<PopulatedTransaction>;
    };
}
