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 ClearpoolPoolInterface extends utils.Interface {
    functions: {
        'accumulativeRewardOf(address)': FunctionFragment;
        'allowWithdrawalAfterNoAuction()': FunctionFragment;
        'allowance(address,address)': FunctionFragment;
        'approve(address,uint256)': FunctionFragment;
        'availableToBorrow()': FunctionFragment;
        'availableToWithdraw()': FunctionFragment;
        'balanceOf(address)': FunctionFragment;
        'borrow(uint256,address)': FunctionFragment;
        'borrows()': FunctionFragment;
        'cash()': FunctionFragment;
        'close()': FunctionFragment;
        'currency()': FunctionFragment;
        'debtClaimed()': FunctionFragment;
        'decimals()': FunctionFragment;
        'decreaseAllowance(address,uint256)': FunctionFragment;
        'enteredProvisionalDefault()': FunctionFragment;
        'enteredZeroUtilization()': FunctionFragment;
        'factory()': FunctionFragment;
        'forceDefault()': FunctionFragment;
        'getBorrowRate()': FunctionFragment;
        'getCurrentExchangeRate()': FunctionFragment;
        'getSupplyRate()': FunctionFragment;
        'getUtilizationRate()': FunctionFragment;
        'increaseAllowance(address,uint256)': FunctionFragment;
        'initialize(address,address)': FunctionFragment;
        'insurance()': FunctionFragment;
        'insuranceFactor()': FunctionFragment;
        'interest()': FunctionFragment;
        'interestRateModel()': FunctionFragment;
        'lastAccrual()': FunctionFragment;
        'manager()': FunctionFragment;
        'maxInactivePeriod()': FunctionFragment;
        'name()': FunctionFragment;
        'ownerOfDebt()': FunctionFragment;
        'periodToStartAuction()': FunctionFragment;
        'poolSize()': FunctionFragment;
        'principal()': FunctionFragment;
        'processAuctionStart()': FunctionFragment;
        'processDebtClaim()': FunctionFragment;
        'provide(uint256)': FunctionFragment;
        'provideWithPermit(uint256,uint256,uint8,bytes32,bytes32)': FunctionFragment;
        'provisionalDefaultUtilization()': FunctionFragment;
        'redeem(uint256)': FunctionFragment;
        'redeemCurrency(uint256)': FunctionFragment;
        'repay(uint256,bool)': FunctionFragment;
        'reserveFactor()': FunctionFragment;
        'reserves()': FunctionFragment;
        'rewardPerSecond()': FunctionFragment;
        'setInsuranceFactor(uint256)': FunctionFragment;
        'setInterestRateModel(address)': FunctionFragment;
        'setManager(address)': FunctionFragment;
        'setMaxInactivePeriod(uint256)': FunctionFragment;
        'setPeriodToStartAuction(uint256)': FunctionFragment;
        'setProvisionalDefaultUtilization(uint256)': FunctionFragment;
        'setReserveFactor(uint256)': FunctionFragment;
        'setRewardPerSecond(uint256)': FunctionFragment;
        'setSymbol(string)': FunctionFragment;
        'setWarningGracePeriod(uint256)': FunctionFragment;
        'setWarningUtilization(uint256)': FunctionFragment;
        'state()': FunctionFragment;
        'symbol()': FunctionFragment;
        'totalSupply()': FunctionFragment;
        'transfer(address,uint256)': FunctionFragment;
        'transferFrom(address,address,uint256)': FunctionFragment;
        'transferReserves()': FunctionFragment;
        'version()': FunctionFragment;
        'warningGracePeriod()': FunctionFragment;
        'warningUtilization()': FunctionFragment;
        'withdrawReward(address)': FunctionFragment;
        'withdrawableRewardOf(address)': FunctionFragment;
        'withdrawnRewardOf(address)': FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: 'accumulativeRewardOf' | 'allowWithdrawalAfterNoAuction' | 'allowance' | 'approve' | 'availableToBorrow' | 'availableToWithdraw' | 'balanceOf' | 'borrow' | 'borrows' | 'cash' | 'close' | 'currency' | 'debtClaimed' | 'decimals' | 'decreaseAllowance' | 'enteredProvisionalDefault' | 'enteredZeroUtilization' | 'factory' | 'forceDefault' | 'getBorrowRate' | 'getCurrentExchangeRate' | 'getSupplyRate' | 'getUtilizationRate' | 'increaseAllowance' | 'initialize' | 'insurance' | 'insuranceFactor' | 'interest' | 'interestRateModel' | 'lastAccrual' | 'manager' | 'maxInactivePeriod' | 'name' | 'ownerOfDebt' | 'periodToStartAuction' | 'poolSize' | 'principal' | 'processAuctionStart' | 'processDebtClaim' | 'provide' | 'provideWithPermit' | 'provisionalDefaultUtilization' | 'redeem' | 'redeemCurrency' | 'repay' | 'reserveFactor' | 'reserves' | 'rewardPerSecond' | 'setInsuranceFactor' | 'setInterestRateModel' | 'setManager' | 'setMaxInactivePeriod' | 'setPeriodToStartAuction' | 'setProvisionalDefaultUtilization' | 'setReserveFactor' | 'setRewardPerSecond' | 'setSymbol' | 'setWarningGracePeriod' | 'setWarningUtilization' | 'state' | 'symbol' | 'totalSupply' | 'transfer' | 'transferFrom' | 'transferReserves' | 'version' | 'warningGracePeriod' | 'warningUtilization' | 'withdrawReward' | 'withdrawableRewardOf' | 'withdrawnRewardOf'): FunctionFragment;
    encodeFunctionData(functionFragment: 'accumulativeRewardOf', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'allowWithdrawalAfterNoAuction', values?: undefined): string;
    encodeFunctionData(functionFragment: 'allowance', values: [PromiseOrValue<string>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'approve', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'availableToBorrow', values?: undefined): string;
    encodeFunctionData(functionFragment: 'availableToWithdraw', values?: undefined): string;
    encodeFunctionData(functionFragment: 'balanceOf', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'borrow', values: [PromiseOrValue<BigNumberish>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'borrows', values?: undefined): string;
    encodeFunctionData(functionFragment: 'cash', values?: undefined): string;
    encodeFunctionData(functionFragment: 'close', values?: undefined): string;
    encodeFunctionData(functionFragment: 'currency', values?: undefined): string;
    encodeFunctionData(functionFragment: 'debtClaimed', values?: undefined): string;
    encodeFunctionData(functionFragment: 'decimals', values?: undefined): string;
    encodeFunctionData(functionFragment: 'decreaseAllowance', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'enteredProvisionalDefault', values?: undefined): string;
    encodeFunctionData(functionFragment: 'enteredZeroUtilization', values?: undefined): string;
    encodeFunctionData(functionFragment: 'factory', values?: undefined): string;
    encodeFunctionData(functionFragment: 'forceDefault', values?: undefined): string;
    encodeFunctionData(functionFragment: 'getBorrowRate', values?: undefined): string;
    encodeFunctionData(functionFragment: 'getCurrentExchangeRate', values?: undefined): string;
    encodeFunctionData(functionFragment: 'getSupplyRate', values?: undefined): string;
    encodeFunctionData(functionFragment: 'getUtilizationRate', values?: undefined): string;
    encodeFunctionData(functionFragment: 'increaseAllowance', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'initialize', values: [PromiseOrValue<string>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'insurance', values?: undefined): string;
    encodeFunctionData(functionFragment: 'insuranceFactor', values?: undefined): string;
    encodeFunctionData(functionFragment: 'interest', values?: undefined): string;
    encodeFunctionData(functionFragment: 'interestRateModel', values?: undefined): string;
    encodeFunctionData(functionFragment: 'lastAccrual', values?: undefined): string;
    encodeFunctionData(functionFragment: 'manager', values?: undefined): string;
    encodeFunctionData(functionFragment: 'maxInactivePeriod', values?: undefined): string;
    encodeFunctionData(functionFragment: 'name', values?: undefined): string;
    encodeFunctionData(functionFragment: 'ownerOfDebt', values?: undefined): string;
    encodeFunctionData(functionFragment: 'periodToStartAuction', values?: undefined): string;
    encodeFunctionData(functionFragment: 'poolSize', values?: undefined): string;
    encodeFunctionData(functionFragment: 'principal', values?: undefined): string;
    encodeFunctionData(functionFragment: 'processAuctionStart', values?: undefined): string;
    encodeFunctionData(functionFragment: 'processDebtClaim', values?: undefined): string;
    encodeFunctionData(functionFragment: 'provide', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'provideWithPermit', values: [
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BytesLike>,
        PromiseOrValue<BytesLike>
    ]): string;
    encodeFunctionData(functionFragment: 'provisionalDefaultUtilization', values?: undefined): string;
    encodeFunctionData(functionFragment: 'redeem', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'redeemCurrency', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'repay', values: [PromiseOrValue<BigNumberish>, PromiseOrValue<boolean>]): string;
    encodeFunctionData(functionFragment: 'reserveFactor', values?: undefined): string;
    encodeFunctionData(functionFragment: 'reserves', values?: undefined): string;
    encodeFunctionData(functionFragment: 'rewardPerSecond', values?: undefined): string;
    encodeFunctionData(functionFragment: 'setInsuranceFactor', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'setInterestRateModel', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'setManager', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'setMaxInactivePeriod', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'setPeriodToStartAuction', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'setProvisionalDefaultUtilization', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'setReserveFactor', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'setRewardPerSecond', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'setSymbol', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'setWarningGracePeriod', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'setWarningUtilization', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'state', values?: undefined): string;
    encodeFunctionData(functionFragment: 'symbol', 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: 'transferReserves', values?: undefined): string;
    encodeFunctionData(functionFragment: 'version', values?: undefined): string;
    encodeFunctionData(functionFragment: 'warningGracePeriod', values?: undefined): string;
    encodeFunctionData(functionFragment: 'warningUtilization', values?: undefined): string;
    encodeFunctionData(functionFragment: 'withdrawReward', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'withdrawableRewardOf', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'withdrawnRewardOf', values: [PromiseOrValue<string>]): string;
    decodeFunctionResult(functionFragment: 'accumulativeRewardOf', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'allowWithdrawalAfterNoAuction', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'allowance', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'approve', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'availableToBorrow', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'availableToWithdraw', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'balanceOf', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'borrow', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'borrows', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'cash', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'close', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'currency', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'debtClaimed', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'decimals', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'decreaseAllowance', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'enteredProvisionalDefault', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'enteredZeroUtilization', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'factory', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'forceDefault', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getBorrowRate', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getCurrentExchangeRate', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getSupplyRate', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getUtilizationRate', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'increaseAllowance', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'initialize', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'insurance', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'insuranceFactor', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'interest', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'interestRateModel', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'lastAccrual', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'manager', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'maxInactivePeriod', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'name', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'ownerOfDebt', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'periodToStartAuction', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'poolSize', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'principal', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'processAuctionStart', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'processDebtClaim', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'provide', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'provideWithPermit', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'provisionalDefaultUtilization', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'redeem', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'redeemCurrency', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'repay', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'reserveFactor', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'reserves', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'rewardPerSecond', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setInsuranceFactor', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setInterestRateModel', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setManager', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setMaxInactivePeriod', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setPeriodToStartAuction', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setProvisionalDefaultUtilization', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setReserveFactor', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setRewardPerSecond', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setSymbol', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setWarningGracePeriod', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setWarningUtilization', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'state', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'symbol', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'totalSupply', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'transfer', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'transferFrom', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'transferReserves', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'version', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'warningGracePeriod', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'warningUtilization', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'withdrawReward', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'withdrawableRewardOf', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'withdrawnRewardOf', data: BytesLike): Result;
    events: {
        'Approval(address,address,uint256)': EventFragment;
        'Borrowed(uint256,address)': EventFragment;
        'Closed()': EventFragment;
        'Provided(address,uint256,uint256)': EventFragment;
        'Redeemed(address,uint256,uint256)': EventFragment;
        'Repaid(uint256)': EventFragment;
        'RewardPerSecondSet(uint256)': EventFragment;
        'RewardWithdrawn(address,uint256)': EventFragment;
        'Transfer(address,address,uint256)': EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: 'Approval'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Borrowed'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Closed'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Provided'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Redeemed'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Repaid'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'RewardPerSecondSet'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'RewardWithdrawn'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Transfer'): EventFragment;
}
export interface ApprovalEventObject {
    owner: string;
    spender: string;
    value: BigNumber;
}
export declare type ApprovalEvent = TypedEvent<[string, string, BigNumber], ApprovalEventObject>;
export declare type ApprovalEventFilter = TypedEventFilter<ApprovalEvent>;
export interface BorrowedEventObject {
    amount: BigNumber;
    receiver: string;
}
export declare type BorrowedEvent = TypedEvent<[BigNumber, string], BorrowedEventObject>;
export declare type BorrowedEventFilter = TypedEventFilter<BorrowedEvent>;
export interface ClosedEventObject {
}
export declare type ClosedEvent = TypedEvent<[], ClosedEventObject>;
export declare type ClosedEventFilter = TypedEventFilter<ClosedEvent>;
export interface ProvidedEventObject {
    provider: string;
    currencyAmount: BigNumber;
    tokens: BigNumber;
}
export declare type ProvidedEvent = TypedEvent<[string, BigNumber, BigNumber], ProvidedEventObject>;
export declare type ProvidedEventFilter = TypedEventFilter<ProvidedEvent>;
export interface RedeemedEventObject {
    redeemer: string;
    currencyAmount: BigNumber;
    tokens: BigNumber;
}
export declare type RedeemedEvent = TypedEvent<[string, BigNumber, BigNumber], RedeemedEventObject>;
export declare type RedeemedEventFilter = TypedEventFilter<RedeemedEvent>;
export interface RepaidEventObject {
    amount: BigNumber;
}
export declare type RepaidEvent = TypedEvent<[BigNumber], RepaidEventObject>;
export declare type RepaidEventFilter = TypedEventFilter<RepaidEvent>;
export interface RewardPerSecondSetEventObject {
    newRewardPerSecond: BigNumber;
}
export declare type RewardPerSecondSetEvent = TypedEvent<[BigNumber], RewardPerSecondSetEventObject>;
export declare type RewardPerSecondSetEventFilter = TypedEventFilter<RewardPerSecondSetEvent>;
export interface RewardWithdrawnEventObject {
    account: string;
    amount: BigNumber;
}
export declare type RewardWithdrawnEvent = TypedEvent<[string, BigNumber], RewardWithdrawnEventObject>;
export declare type RewardWithdrawnEventFilter = TypedEventFilter<RewardWithdrawnEvent>;
export interface TransferEventObject {
    from: string;
    to: string;
    value: BigNumber;
}
export declare type TransferEvent = TypedEvent<[string, string, BigNumber], TransferEventObject>;
export declare type TransferEventFilter = TypedEventFilter<TransferEvent>;
export interface ClearpoolPool extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: ClearpoolPoolInterface;
    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: {
        accumulativeRewardOf(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber]>;
        allowWithdrawalAfterNoAuction(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        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>;
        availableToBorrow(overrides?: CallOverrides): Promise<[BigNumber]>;
        availableToWithdraw(overrides?: CallOverrides): Promise<[BigNumber]>;
        balanceOf(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber]>;
        borrow(amount: PromiseOrValue<BigNumberish>, receiver: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        borrows(overrides?: CallOverrides): Promise<[BigNumber]>;
        cash(overrides?: CallOverrides): Promise<[BigNumber]>;
        close(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        currency(overrides?: CallOverrides): Promise<[string]>;
        debtClaimed(overrides?: CallOverrides): Promise<[boolean]>;
        decimals(overrides?: CallOverrides): Promise<[number]>;
        decreaseAllowance(spender: PromiseOrValue<string>, subtractedValue: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        enteredProvisionalDefault(overrides?: CallOverrides): Promise<[BigNumber]>;
        enteredZeroUtilization(overrides?: CallOverrides): Promise<[BigNumber]>;
        factory(overrides?: CallOverrides): Promise<[string]>;
        forceDefault(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        getBorrowRate(overrides?: CallOverrides): Promise<[BigNumber]>;
        getCurrentExchangeRate(overrides?: CallOverrides): Promise<[BigNumber]>;
        getSupplyRate(overrides?: CallOverrides): Promise<[BigNumber]>;
        getUtilizationRate(overrides?: CallOverrides): Promise<[BigNumber]>;
        increaseAllowance(spender: PromiseOrValue<string>, addedValue: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        initialize(manager_: PromiseOrValue<string>, currency_: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        insurance(overrides?: CallOverrides): Promise<[BigNumber]>;
        insuranceFactor(overrides?: CallOverrides): Promise<[BigNumber]>;
        interest(overrides?: CallOverrides): Promise<[BigNumber]>;
        interestRateModel(overrides?: CallOverrides): Promise<[string]>;
        lastAccrual(overrides?: CallOverrides): Promise<[BigNumber]>;
        manager(overrides?: CallOverrides): Promise<[string]>;
        maxInactivePeriod(overrides?: CallOverrides): Promise<[BigNumber]>;
        name(overrides?: CallOverrides): Promise<[string]>;
        ownerOfDebt(overrides?: CallOverrides): Promise<[string]>;
        periodToStartAuction(overrides?: CallOverrides): Promise<[BigNumber]>;
        poolSize(overrides?: CallOverrides): Promise<[BigNumber]>;
        principal(overrides?: CallOverrides): Promise<[BigNumber]>;
        processAuctionStart(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        processDebtClaim(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        provide(currencyAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        provideWithPermit(currencyAmount: PromiseOrValue<BigNumberish>, deadline: PromiseOrValue<BigNumberish>, v: PromiseOrValue<BigNumberish>, r: PromiseOrValue<BytesLike>, s: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        provisionalDefaultUtilization(overrides?: CallOverrides): Promise<[BigNumber]>;
        redeem(tokens: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        redeemCurrency(currencyAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        repay(amount: PromiseOrValue<BigNumberish>, closeNow: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        reserveFactor(overrides?: CallOverrides): Promise<[BigNumber]>;
        reserves(overrides?: CallOverrides): Promise<[BigNumber]>;
        rewardPerSecond(overrides?: CallOverrides): Promise<[BigNumber]>;
        setInsuranceFactor(insuranceFactor_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setInterestRateModel(interestRateModel_: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setManager(manager_: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setMaxInactivePeriod(maxInactivePeriod_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setPeriodToStartAuction(periodToStartAuction_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setProvisionalDefaultUtilization(provisionalDefaultUtilization_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setReserveFactor(reserveFactor_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setRewardPerSecond(rewardPerSecond_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setSymbol(symbol_: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setWarningGracePeriod(warningGracePeriod_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setWarningUtilization(warningUtilization_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        state(overrides?: CallOverrides): Promise<[number]>;
        symbol(overrides?: CallOverrides): Promise<[string]>;
        totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>;
        transfer(to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        transferFrom(from: PromiseOrValue<string>, to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        transferReserves(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        version(overrides?: CallOverrides): Promise<[string]>;
        warningGracePeriod(overrides?: CallOverrides): Promise<[BigNumber]>;
        warningUtilization(overrides?: CallOverrides): Promise<[BigNumber]>;
        withdrawReward(account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        withdrawableRewardOf(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber]>;
        withdrawnRewardOf(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber]>;
    };
    accumulativeRewardOf(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    allowWithdrawalAfterNoAuction(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    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>;
    availableToBorrow(overrides?: CallOverrides): Promise<BigNumber>;
    availableToWithdraw(overrides?: CallOverrides): Promise<BigNumber>;
    balanceOf(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    borrow(amount: PromiseOrValue<BigNumberish>, receiver: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    borrows(overrides?: CallOverrides): Promise<BigNumber>;
    cash(overrides?: CallOverrides): Promise<BigNumber>;
    close(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    currency(overrides?: CallOverrides): Promise<string>;
    debtClaimed(overrides?: CallOverrides): Promise<boolean>;
    decimals(overrides?: CallOverrides): Promise<number>;
    decreaseAllowance(spender: PromiseOrValue<string>, subtractedValue: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    enteredProvisionalDefault(overrides?: CallOverrides): Promise<BigNumber>;
    enteredZeroUtilization(overrides?: CallOverrides): Promise<BigNumber>;
    factory(overrides?: CallOverrides): Promise<string>;
    forceDefault(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    getBorrowRate(overrides?: CallOverrides): Promise<BigNumber>;
    getCurrentExchangeRate(overrides?: CallOverrides): Promise<BigNumber>;
    getSupplyRate(overrides?: CallOverrides): Promise<BigNumber>;
    getUtilizationRate(overrides?: CallOverrides): Promise<BigNumber>;
    increaseAllowance(spender: PromiseOrValue<string>, addedValue: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    initialize(manager_: PromiseOrValue<string>, currency_: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    insurance(overrides?: CallOverrides): Promise<BigNumber>;
    insuranceFactor(overrides?: CallOverrides): Promise<BigNumber>;
    interest(overrides?: CallOverrides): Promise<BigNumber>;
    interestRateModel(overrides?: CallOverrides): Promise<string>;
    lastAccrual(overrides?: CallOverrides): Promise<BigNumber>;
    manager(overrides?: CallOverrides): Promise<string>;
    maxInactivePeriod(overrides?: CallOverrides): Promise<BigNumber>;
    name(overrides?: CallOverrides): Promise<string>;
    ownerOfDebt(overrides?: CallOverrides): Promise<string>;
    periodToStartAuction(overrides?: CallOverrides): Promise<BigNumber>;
    poolSize(overrides?: CallOverrides): Promise<BigNumber>;
    principal(overrides?: CallOverrides): Promise<BigNumber>;
    processAuctionStart(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    processDebtClaim(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    provide(currencyAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    provideWithPermit(currencyAmount: PromiseOrValue<BigNumberish>, deadline: PromiseOrValue<BigNumberish>, v: PromiseOrValue<BigNumberish>, r: PromiseOrValue<BytesLike>, s: PromiseOrValue<BytesLike>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    provisionalDefaultUtilization(overrides?: CallOverrides): Promise<BigNumber>;
    redeem(tokens: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    redeemCurrency(currencyAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    repay(amount: PromiseOrValue<BigNumberish>, closeNow: PromiseOrValue<boolean>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    reserveFactor(overrides?: CallOverrides): Promise<BigNumber>;
    reserves(overrides?: CallOverrides): Promise<BigNumber>;
    rewardPerSecond(overrides?: CallOverrides): Promise<BigNumber>;
    setInsuranceFactor(insuranceFactor_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setInterestRateModel(interestRateModel_: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setManager(manager_: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setMaxInactivePeriod(maxInactivePeriod_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setPeriodToStartAuction(periodToStartAuction_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setProvisionalDefaultUtilization(provisionalDefaultUtilization_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setReserveFactor(reserveFactor_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setRewardPerSecond(rewardPerSecond_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setSymbol(symbol_: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setWarningGracePeriod(warningGracePeriod_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setWarningUtilization(warningUtilization_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    state(overrides?: CallOverrides): Promise<number>;
    symbol(overrides?: CallOverrides): Promise<string>;
    totalSupply(overrides?: CallOverrides): Promise<BigNumber>;
    transfer(to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    transferFrom(from: PromiseOrValue<string>, to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    transferReserves(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    version(overrides?: CallOverrides): Promise<string>;
    warningGracePeriod(overrides?: CallOverrides): Promise<BigNumber>;
    warningUtilization(overrides?: CallOverrides): Promise<BigNumber>;
    withdrawReward(account: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    withdrawableRewardOf(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    withdrawnRewardOf(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    callStatic: {
        accumulativeRewardOf(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        allowWithdrawalAfterNoAuction(overrides?: CallOverrides): Promise<void>;
        allowance(owner: PromiseOrValue<string>, spender: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        approve(spender: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<boolean>;
        availableToBorrow(overrides?: CallOverrides): Promise<BigNumber>;
        availableToWithdraw(overrides?: CallOverrides): Promise<BigNumber>;
        balanceOf(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        borrow(amount: PromiseOrValue<BigNumberish>, receiver: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        borrows(overrides?: CallOverrides): Promise<BigNumber>;
        cash(overrides?: CallOverrides): Promise<BigNumber>;
        close(overrides?: CallOverrides): Promise<void>;
        currency(overrides?: CallOverrides): Promise<string>;
        debtClaimed(overrides?: CallOverrides): Promise<boolean>;
        decimals(overrides?: CallOverrides): Promise<number>;
        decreaseAllowance(spender: PromiseOrValue<string>, subtractedValue: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<boolean>;
        enteredProvisionalDefault(overrides?: CallOverrides): Promise<BigNumber>;
        enteredZeroUtilization(overrides?: CallOverrides): Promise<BigNumber>;
        factory(overrides?: CallOverrides): Promise<string>;
        forceDefault(overrides?: CallOverrides): Promise<void>;
        getBorrowRate(overrides?: CallOverrides): Promise<BigNumber>;
        getCurrentExchangeRate(overrides?: CallOverrides): Promise<BigNumber>;
        getSupplyRate(overrides?: CallOverrides): Promise<BigNumber>;
        getUtilizationRate(overrides?: CallOverrides): Promise<BigNumber>;
        increaseAllowance(spender: PromiseOrValue<string>, addedValue: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<boolean>;
        initialize(manager_: PromiseOrValue<string>, currency_: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        insurance(overrides?: CallOverrides): Promise<BigNumber>;
        insuranceFactor(overrides?: CallOverrides): Promise<BigNumber>;
        interest(overrides?: CallOverrides): Promise<BigNumber>;
        interestRateModel(overrides?: CallOverrides): Promise<string>;
        lastAccrual(overrides?: CallOverrides): Promise<BigNumber>;
        manager(overrides?: CallOverrides): Promise<string>;
        maxInactivePeriod(overrides?: CallOverrides): Promise<BigNumber>;
        name(overrides?: CallOverrides): Promise<string>;
        ownerOfDebt(overrides?: CallOverrides): Promise<string>;
        periodToStartAuction(overrides?: CallOverrides): Promise<BigNumber>;
        poolSize(overrides?: CallOverrides): Promise<BigNumber>;
        principal(overrides?: CallOverrides): Promise<BigNumber>;
        processAuctionStart(overrides?: CallOverrides): Promise<void>;
        processDebtClaim(overrides?: CallOverrides): Promise<void>;
        provide(currencyAmount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        provideWithPermit(currencyAmount: PromiseOrValue<BigNumberish>, deadline: PromiseOrValue<BigNumberish>, v: PromiseOrValue<BigNumberish>, r: PromiseOrValue<BytesLike>, s: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<void>;
        provisionalDefaultUtilization(overrides?: CallOverrides): Promise<BigNumber>;
        redeem(tokens: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        redeemCurrency(currencyAmount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        repay(amount: PromiseOrValue<BigNumberish>, closeNow: PromiseOrValue<boolean>, overrides?: CallOverrides): Promise<void>;
        reserveFactor(overrides?: CallOverrides): Promise<BigNumber>;
        reserves(overrides?: CallOverrides): Promise<BigNumber>;
        rewardPerSecond(overrides?: CallOverrides): Promise<BigNumber>;
        setInsuranceFactor(insuranceFactor_: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        setInterestRateModel(interestRateModel_: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        setManager(manager_: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        setMaxInactivePeriod(maxInactivePeriod_: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        setPeriodToStartAuction(periodToStartAuction_: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        setProvisionalDefaultUtilization(provisionalDefaultUtilization_: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        setReserveFactor(reserveFactor_: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        setRewardPerSecond(rewardPerSecond_: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        setSymbol(symbol_: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        setWarningGracePeriod(warningGracePeriod_: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        setWarningUtilization(warningUtilization_: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        state(overrides?: CallOverrides): Promise<number>;
        symbol(overrides?: CallOverrides): Promise<string>;
        totalSupply(overrides?: CallOverrides): Promise<BigNumber>;
        transfer(to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<boolean>;
        transferFrom(from: PromiseOrValue<string>, to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<boolean>;
        transferReserves(overrides?: CallOverrides): Promise<void>;
        version(overrides?: CallOverrides): Promise<string>;
        warningGracePeriod(overrides?: CallOverrides): Promise<BigNumber>;
        warningUtilization(overrides?: CallOverrides): Promise<BigNumber>;
        withdrawReward(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        withdrawableRewardOf(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        withdrawnRewardOf(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    };
    filters: {
        'Approval(address,address,uint256)'(owner?: PromiseOrValue<string> | null, spender?: PromiseOrValue<string> | null, value?: null): ApprovalEventFilter;
        Approval(owner?: PromiseOrValue<string> | null, spender?: PromiseOrValue<string> | null, value?: null): ApprovalEventFilter;
        'Borrowed(uint256,address)'(amount?: null, receiver?: PromiseOrValue<string> | null): BorrowedEventFilter;
        Borrowed(amount?: null, receiver?: PromiseOrValue<string> | null): BorrowedEventFilter;
        'Closed()'(): ClosedEventFilter;
        Closed(): ClosedEventFilter;
        'Provided(address,uint256,uint256)'(provider?: PromiseOrValue<string> | null, currencyAmount?: null, tokens?: null): ProvidedEventFilter;
        Provided(provider?: PromiseOrValue<string> | null, currencyAmount?: null, tokens?: null): ProvidedEventFilter;
        'Redeemed(address,uint256,uint256)'(redeemer?: PromiseOrValue<string> | null, currencyAmount?: null, tokens?: null): RedeemedEventFilter;
        Redeemed(redeemer?: PromiseOrValue<string> | null, currencyAmount?: null, tokens?: null): RedeemedEventFilter;
        'Repaid(uint256)'(amount?: null): RepaidEventFilter;
        Repaid(amount?: null): RepaidEventFilter;
        'RewardPerSecondSet(uint256)'(newRewardPerSecond?: null): RewardPerSecondSetEventFilter;
        RewardPerSecondSet(newRewardPerSecond?: null): RewardPerSecondSetEventFilter;
        'RewardWithdrawn(address,uint256)'(account?: PromiseOrValue<string> | null, amount?: null): RewardWithdrawnEventFilter;
        RewardWithdrawn(account?: PromiseOrValue<string> | null, amount?: null): RewardWithdrawnEventFilter;
        'Transfer(address,address,uint256)'(from?: PromiseOrValue<string> | null, to?: PromiseOrValue<string> | null, value?: null): TransferEventFilter;
        Transfer(from?: PromiseOrValue<string> | null, to?: PromiseOrValue<string> | null, value?: null): TransferEventFilter;
    };
    estimateGas: {
        accumulativeRewardOf(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        allowWithdrawalAfterNoAuction(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): 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>;
        availableToBorrow(overrides?: CallOverrides): Promise<BigNumber>;
        availableToWithdraw(overrides?: CallOverrides): Promise<BigNumber>;
        balanceOf(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        borrow(amount: PromiseOrValue<BigNumberish>, receiver: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        borrows(overrides?: CallOverrides): Promise<BigNumber>;
        cash(overrides?: CallOverrides): Promise<BigNumber>;
        close(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        currency(overrides?: CallOverrides): Promise<BigNumber>;
        debtClaimed(overrides?: CallOverrides): Promise<BigNumber>;
        decimals(overrides?: CallOverrides): Promise<BigNumber>;
        decreaseAllowance(spender: PromiseOrValue<string>, subtractedValue: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        enteredProvisionalDefault(overrides?: CallOverrides): Promise<BigNumber>;
        enteredZeroUtilization(overrides?: CallOverrides): Promise<BigNumber>;
        factory(overrides?: CallOverrides): Promise<BigNumber>;
        forceDefault(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        getBorrowRate(overrides?: CallOverrides): Promise<BigNumber>;
        getCurrentExchangeRate(overrides?: CallOverrides): Promise<BigNumber>;
        getSupplyRate(overrides?: CallOverrides): Promise<BigNumber>;
        getUtilizationRate(overrides?: CallOverrides): Promise<BigNumber>;
        increaseAllowance(spender: PromiseOrValue<string>, addedValue: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        initialize(manager_: PromiseOrValue<string>, currency_: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        insurance(overrides?: CallOverrides): Promise<BigNumber>;
        insuranceFactor(overrides?: CallOverrides): Promise<BigNumber>;
        interest(overrides?: CallOverrides): Promise<BigNumber>;
        interestRateModel(overrides?: CallOverrides): Promise<BigNumber>;
        lastAccrual(overrides?: CallOverrides): Promise<BigNumber>;
        manager(overrides?: CallOverrides): Promise<BigNumber>;
        maxInactivePeriod(overrides?: CallOverrides): Promise<BigNumber>;
        name(overrides?: CallOverrides): Promise<BigNumber>;
        ownerOfDebt(overrides?: CallOverrides): Promise<BigNumber>;
        periodToStartAuction(overrides?: CallOverrides): Promise<BigNumber>;
        poolSize(overrides?: CallOverrides): Promise<BigNumber>;
        principal(overrides?: CallOverrides): Promise<BigNumber>;
        processAuctionStart(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        processDebtClaim(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        provide(currencyAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        provideWithPermit(currencyAmount: PromiseOrValue<BigNumberish>, deadline: PromiseOrValue<BigNumberish>, v: PromiseOrValue<BigNumberish>, r: PromiseOrValue<BytesLike>, s: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        provisionalDefaultUtilization(overrides?: CallOverrides): Promise<BigNumber>;
        redeem(tokens: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        redeemCurrency(currencyAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        repay(amount: PromiseOrValue<BigNumberish>, closeNow: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        reserveFactor(overrides?: CallOverrides): Promise<BigNumber>;
        reserves(overrides?: CallOverrides): Promise<BigNumber>;
        rewardPerSecond(overrides?: CallOverrides): Promise<BigNumber>;
        setInsuranceFactor(insuranceFactor_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setInterestRateModel(interestRateModel_: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setManager(manager_: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setMaxInactivePeriod(maxInactivePeriod_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setPeriodToStartAuction(periodToStartAuction_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setProvisionalDefaultUtilization(provisionalDefaultUtilization_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setReserveFactor(reserveFactor_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setRewardPerSecond(rewardPerSecond_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setSymbol(symbol_: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setWarningGracePeriod(warningGracePeriod_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setWarningUtilization(warningUtilization_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        state(overrides?: CallOverrides): Promise<BigNumber>;
        symbol(overrides?: CallOverrides): Promise<BigNumber>;
        totalSupply(overrides?: CallOverrides): Promise<BigNumber>;
        transfer(to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        transferFrom(from: PromiseOrValue<string>, to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        transferReserves(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        version(overrides?: CallOverrides): Promise<BigNumber>;
        warningGracePeriod(overrides?: CallOverrides): Promise<BigNumber>;
        warningUtilization(overrides?: CallOverrides): Promise<BigNumber>;
        withdrawReward(account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        withdrawableRewardOf(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        withdrawnRewardOf(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    };
    populateTransaction: {
        accumulativeRewardOf(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        allowWithdrawalAfterNoAuction(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): 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>;
        availableToBorrow(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        availableToWithdraw(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        balanceOf(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        borrow(amount: PromiseOrValue<BigNumberish>, receiver: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        borrows(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        cash(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        close(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        currency(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        debtClaimed(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        decimals(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        decreaseAllowance(spender: PromiseOrValue<string>, subtractedValue: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        enteredProvisionalDefault(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        enteredZeroUtilization(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        factory(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        forceDefault(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        getBorrowRate(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getCurrentExchangeRate(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getSupplyRate(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getUtilizationRate(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        increaseAllowance(spender: PromiseOrValue<string>, addedValue: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        initialize(manager_: PromiseOrValue<string>, currency_: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        insurance(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        insuranceFactor(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        interest(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        interestRateModel(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        lastAccrual(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        manager(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        maxInactivePeriod(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        name(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        ownerOfDebt(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        periodToStartAuction(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        poolSize(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        principal(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        processAuctionStart(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        processDebtClaim(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        provide(currencyAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        provideWithPermit(currencyAmount: PromiseOrValue<BigNumberish>, deadline: PromiseOrValue<BigNumberish>, v: PromiseOrValue<BigNumberish>, r: PromiseOrValue<BytesLike>, s: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        provisionalDefaultUtilization(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        redeem(tokens: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        redeemCurrency(currencyAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        repay(amount: PromiseOrValue<BigNumberish>, closeNow: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        reserveFactor(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        reserves(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        rewardPerSecond(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        setInsuranceFactor(insuranceFactor_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setInterestRateModel(interestRateModel_: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setManager(manager_: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setMaxInactivePeriod(maxInactivePeriod_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setPeriodToStartAuction(periodToStartAuction_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setProvisionalDefaultUtilization(provisionalDefaultUtilization_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setReserveFactor(reserveFactor_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setRewardPerSecond(rewardPerSecond_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setSymbol(symbol_: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setWarningGracePeriod(warningGracePeriod_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setWarningUtilization(warningUtilization_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        state(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        symbol(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        totalSupply(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        transfer(to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        transferFrom(from: PromiseOrValue<string>, to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        transferReserves(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        version(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        warningGracePeriod(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        warningUtilization(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        withdrawReward(account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        withdrawableRewardOf(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        withdrawnRewardOf(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
    };
}
