import type { BaseContract, BigNumberish, BytesLike, FunctionFragment, Result, Interface, EventFragment, AddressLike, ContractRunner, ContractMethod, Listener } from "ethers";
import type { TypedContractEvent, TypedDeferredTopicFilter, TypedEventLog, TypedLogDescription, TypedListener, TypedContractMethod } from "../../../common";
export interface CCompliantErc20Interface extends Interface {
    getFunction(nameOrSignature: "_acceptAdmin" | "_addReserves" | "_reduceReserves" | "_setComptroller" | "_setDiscountRate" | "_setInterestRateModel" | "_setPendingAdmin" | "_setReserveFactor" | "_syncUnderlyingBalance" | "accrualBlockTimestamp" | "accrueInterest" | "admin" | "allowance" | "approve" | "balanceOf" | "balanceOfUnderlying" | "borrow" | "borrowAndDepositBack" | "borrowBalanceCurrent" | "borrowBalanceStored" | "borrowIndex" | "borrowRatePerBlock" | "compliantBorrow" | "compliantMint" | "comptroller" | "decimals" | "discountRateMantissa" | "exchangeRateCurrent" | "exchangeRateStored" | "getAccountSnapshot" | "getCash" | "initialize" | "interestRateModel" | "isCEther" | "isCEtherDeprecated" | "isCToken" | "isCTokenDeprecated" | "liquidateBorrow" | "liquidateCalculateSeizeTokens" | "mint" | "mintWithPermit" | "name" | "pendingAdmin" | "percentScale" | "protocolSeizeShareMantissa" | "redeem" | "redeemUnderlying" | "repayBorrow" | "repayBorrowBehalf" | "repayBorrowWithPermit" | "reserveFactorMantissa" | "seize" | "setKYCSigner" | "supplyRatePerBlock" | "sweepToken" | "symbol" | "tokenType" | "totalBorrows" | "totalBorrowsCurrent" | "totalReserves" | "totalSupply" | "transfer" | "transferFrom" | "underlying" | "underlyingBalance"): FunctionFragment;
    getEvent(nameOrSignatureOrTopic: "AccrueInterest" | "Approval" | "Borrow" | "Initialized" | "LiquidateBorrow" | "Mint" | "NewAdmin" | "NewComptroller" | "NewDiscountRate" | "NewMarketInterestRateModel" | "NewPendingAdmin" | "NewReserveFactor" | "Redeem" | "RedeemFaceValue" | "RepayBorrow" | "ReservesAdded" | "ReservesReduced" | "Transfer"): EventFragment;
    encodeFunctionData(functionFragment: "_acceptAdmin", values?: undefined): string;
    encodeFunctionData(functionFragment: "_addReserves", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "_reduceReserves", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "_setComptroller", values: [AddressLike]): string;
    encodeFunctionData(functionFragment: "_setDiscountRate", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "_setInterestRateModel", values: [AddressLike]): string;
    encodeFunctionData(functionFragment: "_setPendingAdmin", values: [AddressLike]): string;
    encodeFunctionData(functionFragment: "_setReserveFactor", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "_syncUnderlyingBalance", values?: undefined): string;
    encodeFunctionData(functionFragment: "accrualBlockTimestamp", values?: undefined): string;
    encodeFunctionData(functionFragment: "accrueInterest", values?: undefined): string;
    encodeFunctionData(functionFragment: "admin", values?: undefined): string;
    encodeFunctionData(functionFragment: "allowance", values: [AddressLike, AddressLike]): string;
    encodeFunctionData(functionFragment: "approve", values: [AddressLike, BigNumberish]): string;
    encodeFunctionData(functionFragment: "balanceOf", values: [AddressLike]): string;
    encodeFunctionData(functionFragment: "balanceOfUnderlying", values: [AddressLike]): string;
    encodeFunctionData(functionFragment: "borrow", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "borrowAndDepositBack", values: [AddressLike, BigNumberish]): string;
    encodeFunctionData(functionFragment: "borrowBalanceCurrent", values: [AddressLike]): string;
    encodeFunctionData(functionFragment: "borrowBalanceStored", values: [AddressLike]): string;
    encodeFunctionData(functionFragment: "borrowIndex", values?: undefined): string;
    encodeFunctionData(functionFragment: "borrowRatePerBlock", values?: undefined): string;
    encodeFunctionData(functionFragment: "compliantBorrow", values: [BigNumberish, BigNumberish, BytesLike, BytesLike]): string;
    encodeFunctionData(functionFragment: "compliantMint", values: [BigNumberish, BigNumberish, BytesLike, BytesLike]): string;
    encodeFunctionData(functionFragment: "comptroller", values?: undefined): string;
    encodeFunctionData(functionFragment: "decimals", values?: undefined): string;
    encodeFunctionData(functionFragment: "discountRateMantissa", values?: undefined): string;
    encodeFunctionData(functionFragment: "exchangeRateCurrent", values?: undefined): string;
    encodeFunctionData(functionFragment: "exchangeRateStored", values?: undefined): string;
    encodeFunctionData(functionFragment: "getAccountSnapshot", values: [AddressLike]): string;
    encodeFunctionData(functionFragment: "getCash", values?: undefined): string;
    encodeFunctionData(functionFragment: "initialize", values: [
        AddressLike,
        AddressLike,
        AddressLike,
        BigNumberish,
        string,
        string,
        BigNumberish,
        AddressLike
    ]): string;
    encodeFunctionData(functionFragment: "interestRateModel", values?: undefined): string;
    encodeFunctionData(functionFragment: "isCEther", values?: undefined): string;
    encodeFunctionData(functionFragment: "isCEtherDeprecated", values?: undefined): string;
    encodeFunctionData(functionFragment: "isCToken", values?: undefined): string;
    encodeFunctionData(functionFragment: "isCTokenDeprecated", values?: undefined): string;
    encodeFunctionData(functionFragment: "liquidateBorrow", values: [AddressLike, BigNumberish, AddressLike]): string;
    encodeFunctionData(functionFragment: "liquidateCalculateSeizeTokens", values: [AddressLike, BigNumberish]): string;
    encodeFunctionData(functionFragment: "mint", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "mintWithPermit", values: [BigNumberish, BigNumberish, BytesLike]): string;
    encodeFunctionData(functionFragment: "name", values?: undefined): string;
    encodeFunctionData(functionFragment: "pendingAdmin", values?: undefined): string;
    encodeFunctionData(functionFragment: "percentScale", values?: undefined): string;
    encodeFunctionData(functionFragment: "protocolSeizeShareMantissa", values?: undefined): string;
    encodeFunctionData(functionFragment: "redeem", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "redeemUnderlying", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "repayBorrow", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "repayBorrowBehalf", values: [AddressLike, BigNumberish]): string;
    encodeFunctionData(functionFragment: "repayBorrowWithPermit", values: [BigNumberish, BigNumberish, BytesLike]): string;
    encodeFunctionData(functionFragment: "reserveFactorMantissa", values?: undefined): string;
    encodeFunctionData(functionFragment: "seize", values: [
        AddressLike,
        AddressLike,
        BigNumberish,
        BigNumberish,
        boolean,
        BigNumberish
    ]): string;
    encodeFunctionData(functionFragment: "setKYCSigner", values: [AddressLike]): string;
    encodeFunctionData(functionFragment: "supplyRatePerBlock", values?: undefined): string;
    encodeFunctionData(functionFragment: "sweepToken", values: [AddressLike]): string;
    encodeFunctionData(functionFragment: "symbol", values?: undefined): string;
    encodeFunctionData(functionFragment: "tokenType", values?: undefined): string;
    encodeFunctionData(functionFragment: "totalBorrows", 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: [AddressLike, BigNumberish]): string;
    encodeFunctionData(functionFragment: "transferFrom", values: [AddressLike, AddressLike, BigNumberish]): string;
    encodeFunctionData(functionFragment: "underlying", values?: undefined): string;
    encodeFunctionData(functionFragment: "underlyingBalance", 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: "_setDiscountRate", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "_setInterestRateModel", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "_setPendingAdmin", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "_setReserveFactor", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "_syncUnderlyingBalance", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "accrualBlockTimestamp", 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: "borrowAndDepositBack", 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: "compliantBorrow", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "compliantMint", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "comptroller", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "decimals", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "discountRateMantissa", 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: "initialize", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "interestRateModel", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "isCEther", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "isCEtherDeprecated", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "isCToken", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "isCTokenDeprecated", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "liquidateBorrow", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "liquidateCalculateSeizeTokens", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "mint", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "mintWithPermit", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "name", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "pendingAdmin", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "percentScale", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "protocolSeizeShareMantissa", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "redeem", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "redeemUnderlying", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "repayBorrow", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "repayBorrowBehalf", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "repayBorrowWithPermit", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "reserveFactorMantissa", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "seize", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setKYCSigner", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "supplyRatePerBlock", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "sweepToken", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "tokenType", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "totalBorrows", 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;
    decodeFunctionResult(functionFragment: "underlyingBalance", data: BytesLike): Result;
}
export declare namespace AccrueInterestEvent {
    type InputTuple = [
        cashPrior: BigNumberish,
        interestAccumulated: BigNumberish,
        borrowIndex: BigNumberish,
        totalBorrows: BigNumberish
    ];
    type OutputTuple = [
        cashPrior: bigint,
        interestAccumulated: bigint,
        borrowIndex: bigint,
        totalBorrows: bigint
    ];
    interface OutputObject {
        cashPrior: bigint;
        interestAccumulated: bigint;
        borrowIndex: bigint;
        totalBorrows: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace ApprovalEvent {
    type InputTuple = [
        owner: AddressLike,
        spender: AddressLike,
        amount: BigNumberish
    ];
    type OutputTuple = [owner: string, spender: string, amount: bigint];
    interface OutputObject {
        owner: string;
        spender: string;
        amount: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace BorrowEvent {
    type InputTuple = [
        borrower: AddressLike,
        borrowAmount: BigNumberish,
        accountBorrows: BigNumberish,
        totalBorrows: BigNumberish
    ];
    type OutputTuple = [
        borrower: string,
        borrowAmount: bigint,
        accountBorrows: bigint,
        totalBorrows: bigint
    ];
    interface OutputObject {
        borrower: string;
        borrowAmount: bigint;
        accountBorrows: bigint;
        totalBorrows: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace InitializedEvent {
    type InputTuple = [version: BigNumberish];
    type OutputTuple = [version: bigint];
    interface OutputObject {
        version: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace LiquidateBorrowEvent {
    type InputTuple = [
        liquidator: AddressLike,
        borrower: AddressLike,
        repayAmount: BigNumberish,
        cTokenCollateral: AddressLike,
        seizeTokens: BigNumberish
    ];
    type OutputTuple = [
        liquidator: string,
        borrower: string,
        repayAmount: bigint,
        cTokenCollateral: string,
        seizeTokens: bigint
    ];
    interface OutputObject {
        liquidator: string;
        borrower: string;
        repayAmount: bigint;
        cTokenCollateral: string;
        seizeTokens: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace MintEvent {
    type InputTuple = [
        minter: AddressLike,
        mintAmount: BigNumberish,
        mintTokens: BigNumberish
    ];
    type OutputTuple = [
        minter: string,
        mintAmount: bigint,
        mintTokens: bigint
    ];
    interface OutputObject {
        minter: string;
        mintAmount: bigint;
        mintTokens: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace NewAdminEvent {
    type InputTuple = [oldAdmin: AddressLike, newAdmin: AddressLike];
    type OutputTuple = [oldAdmin: string, newAdmin: string];
    interface OutputObject {
        oldAdmin: string;
        newAdmin: string;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace NewComptrollerEvent {
    type InputTuple = [
        oldComptroller: AddressLike,
        newComptroller: AddressLike
    ];
    type OutputTuple = [oldComptroller: string, newComptroller: string];
    interface OutputObject {
        oldComptroller: string;
        newComptroller: string;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace NewDiscountRateEvent {
    type InputTuple = [
        oldDiscountRateMantissa: BigNumberish,
        newDiscountRateMantissa: BigNumberish
    ];
    type OutputTuple = [
        oldDiscountRateMantissa: bigint,
        newDiscountRateMantissa: bigint
    ];
    interface OutputObject {
        oldDiscountRateMantissa: bigint;
        newDiscountRateMantissa: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace NewMarketInterestRateModelEvent {
    type InputTuple = [
        oldInterestRateModel: AddressLike,
        newInterestRateModel: AddressLike
    ];
    type OutputTuple = [
        oldInterestRateModel: string,
        newInterestRateModel: string
    ];
    interface OutputObject {
        oldInterestRateModel: string;
        newInterestRateModel: string;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace NewPendingAdminEvent {
    type InputTuple = [
        oldPendingAdmin: AddressLike,
        newPendingAdmin: AddressLike
    ];
    type OutputTuple = [oldPendingAdmin: string, newPendingAdmin: string];
    interface OutputObject {
        oldPendingAdmin: string;
        newPendingAdmin: string;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace NewReserveFactorEvent {
    type InputTuple = [
        oldReserveFactorMantissa: BigNumberish,
        newReserveFactorMantissa: BigNumberish
    ];
    type OutputTuple = [
        oldReserveFactorMantissa: bigint,
        newReserveFactorMantissa: bigint
    ];
    interface OutputObject {
        oldReserveFactorMantissa: bigint;
        newReserveFactorMantissa: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace RedeemEvent {
    type InputTuple = [
        redeemer: AddressLike,
        redeemAmount: BigNumberish,
        redeemTokens: BigNumberish
    ];
    type OutputTuple = [
        redeemer: string,
        redeemAmount: bigint,
        redeemTokens: bigint
    ];
    interface OutputObject {
        redeemer: string;
        redeemAmount: bigint;
        redeemTokens: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace RedeemFaceValueEvent {
    type InputTuple = [
        redeemer: AddressLike,
        provider: AddressLike,
        repayAmount: BigNumberish,
        seizeToken: AddressLike,
        seizeAmount: BigNumberish,
        redemptionRateMantissa: BigNumberish
    ];
    type OutputTuple = [
        redeemer: string,
        provider: string,
        repayAmount: bigint,
        seizeToken: string,
        seizeAmount: bigint,
        redemptionRateMantissa: bigint
    ];
    interface OutputObject {
        redeemer: string;
        provider: string;
        repayAmount: bigint;
        seizeToken: string;
        seizeAmount: bigint;
        redemptionRateMantissa: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace RepayBorrowEvent {
    type InputTuple = [
        payer: AddressLike,
        borrower: AddressLike,
        repayAmount: BigNumberish,
        accountBorrows: BigNumberish,
        totalBorrows: BigNumberish
    ];
    type OutputTuple = [
        payer: string,
        borrower: string,
        repayAmount: bigint,
        accountBorrows: bigint,
        totalBorrows: bigint
    ];
    interface OutputObject {
        payer: string;
        borrower: string;
        repayAmount: bigint;
        accountBorrows: bigint;
        totalBorrows: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace ReservesAddedEvent {
    type InputTuple = [
        benefactor: AddressLike,
        addAmount: BigNumberish,
        newTotalReserves: BigNumberish
    ];
    type OutputTuple = [
        benefactor: string,
        addAmount: bigint,
        newTotalReserves: bigint
    ];
    interface OutputObject {
        benefactor: string;
        addAmount: bigint;
        newTotalReserves: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace ReservesReducedEvent {
    type InputTuple = [
        admin: AddressLike,
        reduceAmount: BigNumberish,
        newTotalReserves: BigNumberish
    ];
    type OutputTuple = [
        admin: string,
        reduceAmount: bigint,
        newTotalReserves: bigint
    ];
    interface OutputObject {
        admin: string;
        reduceAmount: bigint;
        newTotalReserves: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace TransferEvent {
    type InputTuple = [
        from: AddressLike,
        to: AddressLike,
        amount: BigNumberish
    ];
    type OutputTuple = [from: string, to: string, amount: bigint];
    interface OutputObject {
        from: string;
        to: string;
        amount: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export interface CCompliantErc20 extends BaseContract {
    connect(runner?: ContractRunner | null): CCompliantErc20;
    waitForDeployment(): Promise<this>;
    interface: CCompliantErc20Interface;
    queryFilter<TCEvent extends TypedContractEvent>(event: TCEvent, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise<Array<TypedEventLog<TCEvent>>>;
    queryFilter<TCEvent extends TypedContractEvent>(filter: TypedDeferredTopicFilter<TCEvent>, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise<Array<TypedEventLog<TCEvent>>>;
    on<TCEvent extends TypedContractEvent>(event: TCEvent, listener: TypedListener<TCEvent>): Promise<this>;
    on<TCEvent extends TypedContractEvent>(filter: TypedDeferredTopicFilter<TCEvent>, listener: TypedListener<TCEvent>): Promise<this>;
    once<TCEvent extends TypedContractEvent>(event: TCEvent, listener: TypedListener<TCEvent>): Promise<this>;
    once<TCEvent extends TypedContractEvent>(filter: TypedDeferredTopicFilter<TCEvent>, listener: TypedListener<TCEvent>): Promise<this>;
    listeners<TCEvent extends TypedContractEvent>(event: TCEvent): Promise<Array<TypedListener<TCEvent>>>;
    listeners(eventName?: string): Promise<Array<Listener>>;
    removeAllListeners<TCEvent extends TypedContractEvent>(event?: TCEvent): Promise<this>;
    _acceptAdmin: TypedContractMethod<[], [void], "nonpayable">;
    _addReserves: TypedContractMethod<[
        addAmount: BigNumberish
    ], [
        void
    ], "nonpayable">;
    _reduceReserves: TypedContractMethod<[
        reduceAmount: BigNumberish
    ], [
        void
    ], "nonpayable">;
    _setComptroller: TypedContractMethod<[
        newComptroller: AddressLike
    ], [
        void
    ], "nonpayable">;
    _setDiscountRate: TypedContractMethod<[
        discountRateMantissa_: BigNumberish
    ], [
        bigint
    ], "nonpayable">;
    _setInterestRateModel: TypedContractMethod<[
        newInterestRateModel: AddressLike
    ], [
        void
    ], "nonpayable">;
    _setPendingAdmin: TypedContractMethod<[
        newPendingAdmin: AddressLike
    ], [
        void
    ], "nonpayable">;
    _setReserveFactor: TypedContractMethod<[
        newReserveFactorMantissa: BigNumberish
    ], [
        void
    ], "nonpayable">;
    _syncUnderlyingBalance: TypedContractMethod<[], [void], "nonpayable">;
    accrualBlockTimestamp: TypedContractMethod<[], [bigint], "view">;
    accrueInterest: TypedContractMethod<[], [void], "nonpayable">;
    admin: TypedContractMethod<[], [string], "view">;
    allowance: TypedContractMethod<[
        owner: AddressLike,
        spender: AddressLike
    ], [
        bigint
    ], "view">;
    approve: TypedContractMethod<[
        spender: AddressLike,
        amount: BigNumberish
    ], [
        boolean
    ], "nonpayable">;
    balanceOf: TypedContractMethod<[owner: AddressLike], [bigint], "view">;
    balanceOfUnderlying: TypedContractMethod<[
        owner: AddressLike
    ], [
        bigint
    ], "nonpayable">;
    borrow: TypedContractMethod<[
        borrowAmount: BigNumberish
    ], [
        void
    ], "nonpayable">;
    borrowAndDepositBack: TypedContractMethod<[
        borrower: AddressLike,
        borrowAmount: BigNumberish
    ], [
        void
    ], "nonpayable">;
    borrowBalanceCurrent: TypedContractMethod<[
        account: AddressLike
    ], [
        bigint
    ], "nonpayable">;
    borrowBalanceStored: TypedContractMethod<[
        account: AddressLike
    ], [
        bigint
    ], "view">;
    borrowIndex: TypedContractMethod<[], [bigint], "view">;
    borrowRatePerBlock: TypedContractMethod<[], [bigint], "view">;
    compliantBorrow: TypedContractMethod<[
        borrowAmount: BigNumberish,
        allowedAmount: BigNumberish,
        extras: BytesLike,
        signature: BytesLike
    ], [
        void
    ], "nonpayable">;
    compliantMint: TypedContractMethod<[
        mintAmount: BigNumberish,
        allowedAmount: BigNumberish,
        extras: BytesLike,
        signature: BytesLike
    ], [
        void
    ], "nonpayable">;
    comptroller: TypedContractMethod<[], [string], "view">;
    decimals: TypedContractMethod<[], [bigint], "view">;
    discountRateMantissa: TypedContractMethod<[], [bigint], "view">;
    exchangeRateCurrent: TypedContractMethod<[], [bigint], "nonpayable">;
    exchangeRateStored: TypedContractMethod<[], [bigint], "view">;
    getAccountSnapshot: TypedContractMethod<[
        account: AddressLike
    ], [
        [bigint, bigint, bigint, bigint]
    ], "view">;
    getCash: TypedContractMethod<[], [bigint], "view">;
    initialize: TypedContractMethod<[
        underlying_: AddressLike,
        comptroller_: AddressLike,
        interestRateModel_: AddressLike,
        initialExchangeRateMantissa_: BigNumberish,
        name_: string,
        symbol_: string,
        decimals_: BigNumberish,
        admin_: AddressLike
    ], [
        void
    ], "nonpayable">;
    interestRateModel: TypedContractMethod<[], [string], "view">;
    isCEther: TypedContractMethod<[], [boolean], "view">;
    isCEtherDeprecated: TypedContractMethod<[], [boolean], "view">;
    isCToken: TypedContractMethod<[], [boolean], "view">;
    isCTokenDeprecated: TypedContractMethod<[], [boolean], "view">;
    liquidateBorrow: TypedContractMethod<[
        borrower: AddressLike,
        repayAmount: BigNumberish,
        cTokenCollateral: AddressLike
    ], [
        void
    ], "nonpayable">;
    liquidateCalculateSeizeTokens: TypedContractMethod<[
        cTokenCollateral: AddressLike,
        actualRepayAmount: BigNumberish
    ], [
        [bigint, bigint]
    ], "view">;
    mint: TypedContractMethod<[mintAmount: BigNumberish], [void], "nonpayable">;
    mintWithPermit: TypedContractMethod<[
        mintAmount: BigNumberish,
        deadline: BigNumberish,
        signature: BytesLike
    ], [
        void
    ], "nonpayable">;
    name: TypedContractMethod<[], [string], "view">;
    pendingAdmin: TypedContractMethod<[], [string], "view">;
    percentScale: TypedContractMethod<[], [bigint], "view">;
    protocolSeizeShareMantissa: TypedContractMethod<[], [bigint], "view">;
    redeem: TypedContractMethod<[
        redeemTokens: BigNumberish
    ], [
        void
    ], "nonpayable">;
    redeemUnderlying: TypedContractMethod<[
        redeemAmount: BigNumberish
    ], [
        void
    ], "nonpayable">;
    repayBorrow: TypedContractMethod<[
        repayAmount: BigNumberish
    ], [
        void
    ], "nonpayable">;
    repayBorrowBehalf: TypedContractMethod<[
        borrower: AddressLike,
        repayAmount: BigNumberish
    ], [
        void
    ], "nonpayable">;
    repayBorrowWithPermit: TypedContractMethod<[
        repayAmount: BigNumberish,
        deadline: BigNumberish,
        signature: BytesLike
    ], [
        void
    ], "nonpayable">;
    reserveFactorMantissa: TypedContractMethod<[], [bigint], "view">;
    seize: TypedContractMethod<[
        liquidator: AddressLike,
        borrower: AddressLike,
        seizeTokens: BigNumberish,
        seizeProfitTokens: BigNumberish,
        isRedemption: boolean,
        redemptionRateMantissa: BigNumberish
    ], [
        void
    ], "nonpayable">;
    setKYCSigner: TypedContractMethod<[
        _kycSigner: AddressLike
    ], [
        void
    ], "nonpayable">;
    supplyRatePerBlock: TypedContractMethod<[], [bigint], "view">;
    sweepToken: TypedContractMethod<[token: AddressLike], [void], "nonpayable">;
    symbol: TypedContractMethod<[], [string], "view">;
    tokenType: TypedContractMethod<[], [bigint], "view">;
    totalBorrows: TypedContractMethod<[], [bigint], "view">;
    totalBorrowsCurrent: TypedContractMethod<[], [bigint], "nonpayable">;
    totalReserves: TypedContractMethod<[], [bigint], "view">;
    totalSupply: TypedContractMethod<[], [bigint], "view">;
    transfer: TypedContractMethod<[
        dst: AddressLike,
        amount: BigNumberish
    ], [
        boolean
    ], "nonpayable">;
    transferFrom: TypedContractMethod<[
        src: AddressLike,
        dst: AddressLike,
        amount: BigNumberish
    ], [
        boolean
    ], "nonpayable">;
    underlying: TypedContractMethod<[], [string], "view">;
    underlyingBalance: TypedContractMethod<[], [bigint], "view">;
    getFunction<T extends ContractMethod = ContractMethod>(key: string | FunctionFragment): T;
    getFunction(nameOrSignature: "_acceptAdmin"): TypedContractMethod<[], [void], "nonpayable">;
    getFunction(nameOrSignature: "_addReserves"): TypedContractMethod<[addAmount: BigNumberish], [void], "nonpayable">;
    getFunction(nameOrSignature: "_reduceReserves"): TypedContractMethod<[reduceAmount: BigNumberish], [void], "nonpayable">;
    getFunction(nameOrSignature: "_setComptroller"): TypedContractMethod<[newComptroller: AddressLike], [void], "nonpayable">;
    getFunction(nameOrSignature: "_setDiscountRate"): TypedContractMethod<[
        discountRateMantissa_: BigNumberish
    ], [
        bigint
    ], "nonpayable">;
    getFunction(nameOrSignature: "_setInterestRateModel"): TypedContractMethod<[
        newInterestRateModel: AddressLike
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "_setPendingAdmin"): TypedContractMethod<[newPendingAdmin: AddressLike], [void], "nonpayable">;
    getFunction(nameOrSignature: "_setReserveFactor"): TypedContractMethod<[
        newReserveFactorMantissa: BigNumberish
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "_syncUnderlyingBalance"): TypedContractMethod<[], [void], "nonpayable">;
    getFunction(nameOrSignature: "accrualBlockTimestamp"): TypedContractMethod<[], [bigint], "view">;
    getFunction(nameOrSignature: "accrueInterest"): TypedContractMethod<[], [void], "nonpayable">;
    getFunction(nameOrSignature: "admin"): TypedContractMethod<[], [string], "view">;
    getFunction(nameOrSignature: "allowance"): TypedContractMethod<[
        owner: AddressLike,
        spender: AddressLike
    ], [
        bigint
    ], "view">;
    getFunction(nameOrSignature: "approve"): TypedContractMethod<[
        spender: AddressLike,
        amount: BigNumberish
    ], [
        boolean
    ], "nonpayable">;
    getFunction(nameOrSignature: "balanceOf"): TypedContractMethod<[owner: AddressLike], [bigint], "view">;
    getFunction(nameOrSignature: "balanceOfUnderlying"): TypedContractMethod<[owner: AddressLike], [bigint], "nonpayable">;
    getFunction(nameOrSignature: "borrow"): TypedContractMethod<[borrowAmount: BigNumberish], [void], "nonpayable">;
    getFunction(nameOrSignature: "borrowAndDepositBack"): TypedContractMethod<[
        borrower: AddressLike,
        borrowAmount: BigNumberish
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "borrowBalanceCurrent"): TypedContractMethod<[account: AddressLike], [bigint], "nonpayable">;
    getFunction(nameOrSignature: "borrowBalanceStored"): TypedContractMethod<[account: AddressLike], [bigint], "view">;
    getFunction(nameOrSignature: "borrowIndex"): TypedContractMethod<[], [bigint], "view">;
    getFunction(nameOrSignature: "borrowRatePerBlock"): TypedContractMethod<[], [bigint], "view">;
    getFunction(nameOrSignature: "compliantBorrow"): TypedContractMethod<[
        borrowAmount: BigNumberish,
        allowedAmount: BigNumberish,
        extras: BytesLike,
        signature: BytesLike
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "compliantMint"): TypedContractMethod<[
        mintAmount: BigNumberish,
        allowedAmount: BigNumberish,
        extras: BytesLike,
        signature: BytesLike
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "comptroller"): TypedContractMethod<[], [string], "view">;
    getFunction(nameOrSignature: "decimals"): TypedContractMethod<[], [bigint], "view">;
    getFunction(nameOrSignature: "discountRateMantissa"): TypedContractMethod<[], [bigint], "view">;
    getFunction(nameOrSignature: "exchangeRateCurrent"): TypedContractMethod<[], [bigint], "nonpayable">;
    getFunction(nameOrSignature: "exchangeRateStored"): TypedContractMethod<[], [bigint], "view">;
    getFunction(nameOrSignature: "getAccountSnapshot"): TypedContractMethod<[
        account: AddressLike
    ], [
        [bigint, bigint, bigint, bigint]
    ], "view">;
    getFunction(nameOrSignature: "getCash"): TypedContractMethod<[], [bigint], "view">;
    getFunction(nameOrSignature: "initialize"): TypedContractMethod<[
        underlying_: AddressLike,
        comptroller_: AddressLike,
        interestRateModel_: AddressLike,
        initialExchangeRateMantissa_: BigNumberish,
        name_: string,
        symbol_: string,
        decimals_: BigNumberish,
        admin_: AddressLike
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "interestRateModel"): TypedContractMethod<[], [string], "view">;
    getFunction(nameOrSignature: "isCEther"): TypedContractMethod<[], [boolean], "view">;
    getFunction(nameOrSignature: "isCEtherDeprecated"): TypedContractMethod<[], [boolean], "view">;
    getFunction(nameOrSignature: "isCToken"): TypedContractMethod<[], [boolean], "view">;
    getFunction(nameOrSignature: "isCTokenDeprecated"): TypedContractMethod<[], [boolean], "view">;
    getFunction(nameOrSignature: "liquidateBorrow"): TypedContractMethod<[
        borrower: AddressLike,
        repayAmount: BigNumberish,
        cTokenCollateral: AddressLike
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "liquidateCalculateSeizeTokens"): TypedContractMethod<[
        cTokenCollateral: AddressLike,
        actualRepayAmount: BigNumberish
    ], [
        [bigint, bigint]
    ], "view">;
    getFunction(nameOrSignature: "mint"): TypedContractMethod<[mintAmount: BigNumberish], [void], "nonpayable">;
    getFunction(nameOrSignature: "mintWithPermit"): TypedContractMethod<[
        mintAmount: BigNumberish,
        deadline: BigNumberish,
        signature: BytesLike
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "name"): TypedContractMethod<[], [string], "view">;
    getFunction(nameOrSignature: "pendingAdmin"): TypedContractMethod<[], [string], "view">;
    getFunction(nameOrSignature: "percentScale"): TypedContractMethod<[], [bigint], "view">;
    getFunction(nameOrSignature: "protocolSeizeShareMantissa"): TypedContractMethod<[], [bigint], "view">;
    getFunction(nameOrSignature: "redeem"): TypedContractMethod<[redeemTokens: BigNumberish], [void], "nonpayable">;
    getFunction(nameOrSignature: "redeemUnderlying"): TypedContractMethod<[redeemAmount: BigNumberish], [void], "nonpayable">;
    getFunction(nameOrSignature: "repayBorrow"): TypedContractMethod<[repayAmount: BigNumberish], [void], "nonpayable">;
    getFunction(nameOrSignature: "repayBorrowBehalf"): TypedContractMethod<[
        borrower: AddressLike,
        repayAmount: BigNumberish
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "repayBorrowWithPermit"): TypedContractMethod<[
        repayAmount: BigNumberish,
        deadline: BigNumberish,
        signature: BytesLike
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "reserveFactorMantissa"): TypedContractMethod<[], [bigint], "view">;
    getFunction(nameOrSignature: "seize"): TypedContractMethod<[
        liquidator: AddressLike,
        borrower: AddressLike,
        seizeTokens: BigNumberish,
        seizeProfitTokens: BigNumberish,
        isRedemption: boolean,
        redemptionRateMantissa: BigNumberish
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "setKYCSigner"): TypedContractMethod<[_kycSigner: AddressLike], [void], "nonpayable">;
    getFunction(nameOrSignature: "supplyRatePerBlock"): TypedContractMethod<[], [bigint], "view">;
    getFunction(nameOrSignature: "sweepToken"): TypedContractMethod<[token: AddressLike], [void], "nonpayable">;
    getFunction(nameOrSignature: "symbol"): TypedContractMethod<[], [string], "view">;
    getFunction(nameOrSignature: "tokenType"): TypedContractMethod<[], [bigint], "view">;
    getFunction(nameOrSignature: "totalBorrows"): TypedContractMethod<[], [bigint], "view">;
    getFunction(nameOrSignature: "totalBorrowsCurrent"): TypedContractMethod<[], [bigint], "nonpayable">;
    getFunction(nameOrSignature: "totalReserves"): TypedContractMethod<[], [bigint], "view">;
    getFunction(nameOrSignature: "totalSupply"): TypedContractMethod<[], [bigint], "view">;
    getFunction(nameOrSignature: "transfer"): TypedContractMethod<[
        dst: AddressLike,
        amount: BigNumberish
    ], [
        boolean
    ], "nonpayable">;
    getFunction(nameOrSignature: "transferFrom"): TypedContractMethod<[
        src: AddressLike,
        dst: AddressLike,
        amount: BigNumberish
    ], [
        boolean
    ], "nonpayable">;
    getFunction(nameOrSignature: "underlying"): TypedContractMethod<[], [string], "view">;
    getFunction(nameOrSignature: "underlyingBalance"): TypedContractMethod<[], [bigint], "view">;
    getEvent(key: "AccrueInterest"): TypedContractEvent<AccrueInterestEvent.InputTuple, AccrueInterestEvent.OutputTuple, AccrueInterestEvent.OutputObject>;
    getEvent(key: "Approval"): TypedContractEvent<ApprovalEvent.InputTuple, ApprovalEvent.OutputTuple, ApprovalEvent.OutputObject>;
    getEvent(key: "Borrow"): TypedContractEvent<BorrowEvent.InputTuple, BorrowEvent.OutputTuple, BorrowEvent.OutputObject>;
    getEvent(key: "Initialized"): TypedContractEvent<InitializedEvent.InputTuple, InitializedEvent.OutputTuple, InitializedEvent.OutputObject>;
    getEvent(key: "LiquidateBorrow"): TypedContractEvent<LiquidateBorrowEvent.InputTuple, LiquidateBorrowEvent.OutputTuple, LiquidateBorrowEvent.OutputObject>;
    getEvent(key: "Mint"): TypedContractEvent<MintEvent.InputTuple, MintEvent.OutputTuple, MintEvent.OutputObject>;
    getEvent(key: "NewAdmin"): TypedContractEvent<NewAdminEvent.InputTuple, NewAdminEvent.OutputTuple, NewAdminEvent.OutputObject>;
    getEvent(key: "NewComptroller"): TypedContractEvent<NewComptrollerEvent.InputTuple, NewComptrollerEvent.OutputTuple, NewComptrollerEvent.OutputObject>;
    getEvent(key: "NewDiscountRate"): TypedContractEvent<NewDiscountRateEvent.InputTuple, NewDiscountRateEvent.OutputTuple, NewDiscountRateEvent.OutputObject>;
    getEvent(key: "NewMarketInterestRateModel"): TypedContractEvent<NewMarketInterestRateModelEvent.InputTuple, NewMarketInterestRateModelEvent.OutputTuple, NewMarketInterestRateModelEvent.OutputObject>;
    getEvent(key: "NewPendingAdmin"): TypedContractEvent<NewPendingAdminEvent.InputTuple, NewPendingAdminEvent.OutputTuple, NewPendingAdminEvent.OutputObject>;
    getEvent(key: "NewReserveFactor"): TypedContractEvent<NewReserveFactorEvent.InputTuple, NewReserveFactorEvent.OutputTuple, NewReserveFactorEvent.OutputObject>;
    getEvent(key: "Redeem"): TypedContractEvent<RedeemEvent.InputTuple, RedeemEvent.OutputTuple, RedeemEvent.OutputObject>;
    getEvent(key: "RedeemFaceValue"): TypedContractEvent<RedeemFaceValueEvent.InputTuple, RedeemFaceValueEvent.OutputTuple, RedeemFaceValueEvent.OutputObject>;
    getEvent(key: "RepayBorrow"): TypedContractEvent<RepayBorrowEvent.InputTuple, RepayBorrowEvent.OutputTuple, RepayBorrowEvent.OutputObject>;
    getEvent(key: "ReservesAdded"): TypedContractEvent<ReservesAddedEvent.InputTuple, ReservesAddedEvent.OutputTuple, ReservesAddedEvent.OutputObject>;
    getEvent(key: "ReservesReduced"): TypedContractEvent<ReservesReducedEvent.InputTuple, ReservesReducedEvent.OutputTuple, ReservesReducedEvent.OutputObject>;
    getEvent(key: "Transfer"): TypedContractEvent<TransferEvent.InputTuple, TransferEvent.OutputTuple, TransferEvent.OutputObject>;
    filters: {
        "AccrueInterest(uint256,uint256,uint256,uint256)": TypedContractEvent<AccrueInterestEvent.InputTuple, AccrueInterestEvent.OutputTuple, AccrueInterestEvent.OutputObject>;
        AccrueInterest: TypedContractEvent<AccrueInterestEvent.InputTuple, AccrueInterestEvent.OutputTuple, AccrueInterestEvent.OutputObject>;
        "Approval(address,address,uint256)": TypedContractEvent<ApprovalEvent.InputTuple, ApprovalEvent.OutputTuple, ApprovalEvent.OutputObject>;
        Approval: TypedContractEvent<ApprovalEvent.InputTuple, ApprovalEvent.OutputTuple, ApprovalEvent.OutputObject>;
        "Borrow(address,uint256,uint256,uint256)": TypedContractEvent<BorrowEvent.InputTuple, BorrowEvent.OutputTuple, BorrowEvent.OutputObject>;
        Borrow: TypedContractEvent<BorrowEvent.InputTuple, BorrowEvent.OutputTuple, BorrowEvent.OutputObject>;
        "Initialized(uint8)": TypedContractEvent<InitializedEvent.InputTuple, InitializedEvent.OutputTuple, InitializedEvent.OutputObject>;
        Initialized: TypedContractEvent<InitializedEvent.InputTuple, InitializedEvent.OutputTuple, InitializedEvent.OutputObject>;
        "LiquidateBorrow(address,address,uint256,address,uint256)": TypedContractEvent<LiquidateBorrowEvent.InputTuple, LiquidateBorrowEvent.OutputTuple, LiquidateBorrowEvent.OutputObject>;
        LiquidateBorrow: TypedContractEvent<LiquidateBorrowEvent.InputTuple, LiquidateBorrowEvent.OutputTuple, LiquidateBorrowEvent.OutputObject>;
        "Mint(address,uint256,uint256)": TypedContractEvent<MintEvent.InputTuple, MintEvent.OutputTuple, MintEvent.OutputObject>;
        Mint: TypedContractEvent<MintEvent.InputTuple, MintEvent.OutputTuple, MintEvent.OutputObject>;
        "NewAdmin(address,address)": TypedContractEvent<NewAdminEvent.InputTuple, NewAdminEvent.OutputTuple, NewAdminEvent.OutputObject>;
        NewAdmin: TypedContractEvent<NewAdminEvent.InputTuple, NewAdminEvent.OutputTuple, NewAdminEvent.OutputObject>;
        "NewComptroller(address,address)": TypedContractEvent<NewComptrollerEvent.InputTuple, NewComptrollerEvent.OutputTuple, NewComptrollerEvent.OutputObject>;
        NewComptroller: TypedContractEvent<NewComptrollerEvent.InputTuple, NewComptrollerEvent.OutputTuple, NewComptrollerEvent.OutputObject>;
        "NewDiscountRate(uint256,uint256)": TypedContractEvent<NewDiscountRateEvent.InputTuple, NewDiscountRateEvent.OutputTuple, NewDiscountRateEvent.OutputObject>;
        NewDiscountRate: TypedContractEvent<NewDiscountRateEvent.InputTuple, NewDiscountRateEvent.OutputTuple, NewDiscountRateEvent.OutputObject>;
        "NewMarketInterestRateModel(address,address)": TypedContractEvent<NewMarketInterestRateModelEvent.InputTuple, NewMarketInterestRateModelEvent.OutputTuple, NewMarketInterestRateModelEvent.OutputObject>;
        NewMarketInterestRateModel: TypedContractEvent<NewMarketInterestRateModelEvent.InputTuple, NewMarketInterestRateModelEvent.OutputTuple, NewMarketInterestRateModelEvent.OutputObject>;
        "NewPendingAdmin(address,address)": TypedContractEvent<NewPendingAdminEvent.InputTuple, NewPendingAdminEvent.OutputTuple, NewPendingAdminEvent.OutputObject>;
        NewPendingAdmin: TypedContractEvent<NewPendingAdminEvent.InputTuple, NewPendingAdminEvent.OutputTuple, NewPendingAdminEvent.OutputObject>;
        "NewReserveFactor(uint256,uint256)": TypedContractEvent<NewReserveFactorEvent.InputTuple, NewReserveFactorEvent.OutputTuple, NewReserveFactorEvent.OutputObject>;
        NewReserveFactor: TypedContractEvent<NewReserveFactorEvent.InputTuple, NewReserveFactorEvent.OutputTuple, NewReserveFactorEvent.OutputObject>;
        "Redeem(address,uint256,uint256)": TypedContractEvent<RedeemEvent.InputTuple, RedeemEvent.OutputTuple, RedeemEvent.OutputObject>;
        Redeem: TypedContractEvent<RedeemEvent.InputTuple, RedeemEvent.OutputTuple, RedeemEvent.OutputObject>;
        "RedeemFaceValue(address,address,uint256,address,uint256,uint256)": TypedContractEvent<RedeemFaceValueEvent.InputTuple, RedeemFaceValueEvent.OutputTuple, RedeemFaceValueEvent.OutputObject>;
        RedeemFaceValue: TypedContractEvent<RedeemFaceValueEvent.InputTuple, RedeemFaceValueEvent.OutputTuple, RedeemFaceValueEvent.OutputObject>;
        "RepayBorrow(address,address,uint256,uint256,uint256)": TypedContractEvent<RepayBorrowEvent.InputTuple, RepayBorrowEvent.OutputTuple, RepayBorrowEvent.OutputObject>;
        RepayBorrow: TypedContractEvent<RepayBorrowEvent.InputTuple, RepayBorrowEvent.OutputTuple, RepayBorrowEvent.OutputObject>;
        "ReservesAdded(address,uint256,uint256)": TypedContractEvent<ReservesAddedEvent.InputTuple, ReservesAddedEvent.OutputTuple, ReservesAddedEvent.OutputObject>;
        ReservesAdded: TypedContractEvent<ReservesAddedEvent.InputTuple, ReservesAddedEvent.OutputTuple, ReservesAddedEvent.OutputObject>;
        "ReservesReduced(address,uint256,uint256)": TypedContractEvent<ReservesReducedEvent.InputTuple, ReservesReducedEvent.OutputTuple, ReservesReducedEvent.OutputObject>;
        ReservesReduced: TypedContractEvent<ReservesReducedEvent.InputTuple, ReservesReducedEvent.OutputTuple, ReservesReducedEvent.OutputObject>;
        "Transfer(address,address,uint256)": TypedContractEvent<TransferEvent.InputTuple, TransferEvent.OutputTuple, TransferEvent.OutputObject>;
        Transfer: TypedContractEvent<TransferEvent.InputTuple, TransferEvent.OutputTuple, TransferEvent.OutputObject>;
    };
}
