import type { BaseContract, BigNumber, BigNumberish, BytesLike, CallOverrides, ContractTransaction, Overrides, PayableOverrides, PopulatedTransaction, Signer, utils } from 'ethers';
import type { FunctionFragment, Result, EventFragment } from '@ethersproject/abi';
import type { Listener, Provider } from '@ethersproject/providers';
import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent, PromiseOrValue } from './common';
export interface EnsuroEtokenInterface extends utils.Interface {
    functions: {
        'GUARDIAN_ROLE()': FunctionFragment;
        'LEVEL1_ROLE()': FunctionFragment;
        'LEVEL2_ROLE()': FunctionFragment;
        'LEVEL3_ROLE()': FunctionFragment;
        'TWEAK_EXPIRATION()': FunctionFragment;
        'addBorrower(address)': FunctionFragment;
        'allowance(address,address)': FunctionFragment;
        'approve(address,uint256)': FunctionFragment;
        'assetManager()': FunctionFragment;
        'balanceOf(address)': FunctionFragment;
        'checkpoint()': FunctionFragment;
        'currency()': FunctionFragment;
        'decimals()': FunctionFragment;
        'decreaseAllowance(address,uint256)': FunctionFragment;
        'deposit(address,uint256)': FunctionFragment;
        'forwardToAssetManager(bytes)': FunctionFragment;
        'fundsAvailable()': FunctionFragment;
        'fundsAvailableToLock()': FunctionFragment;
        'getCurrentScale(bool)': FunctionFragment;
        'getLoan(address)': FunctionFragment;
        'getScaledUserBalanceAndSupply(address)': FunctionFragment;
        'increaseAllowance(address,uint256)': FunctionFragment;
        'initialize(string,string,uint256,uint256)': FunctionFragment;
        'internalLoan(uint256,address)': FunctionFragment;
        'internalLoanInterestRate()': FunctionFragment;
        'lastTweak()': FunctionFragment;
        'liquidityRequirement()': FunctionFragment;
        'lockScr(uint256,uint256)': FunctionFragment;
        'maxNegativeAdjustment()': FunctionFragment;
        'maxUtilizationRate()': FunctionFragment;
        'minUtilizationRate()': FunctionFragment;
        'name()': FunctionFragment;
        'pause()': FunctionFragment;
        'paused()': FunctionFragment;
        'policyPool()': FunctionFragment;
        'proxiableUUID()': FunctionFragment;
        'rebalance()': FunctionFragment;
        'recordEarnings()': FunctionFragment;
        'removeBorrower(address)': FunctionFragment;
        'repayLoan(uint256,address)': FunctionFragment;
        'scaledBalanceOf(address)': FunctionFragment;
        'scaledTotalSupply()': FunctionFragment;
        'scr()': FunctionFragment;
        'scrInterestRate()': FunctionFragment;
        'setAssetManager(address,bool)': FunctionFragment;
        'setParam(uint8,uint256)': FunctionFragment;
        'setWhitelist(address)': FunctionFragment;
        'supportsInterface(bytes4)': FunctionFragment;
        'symbol()': FunctionFragment;
        'tokenInterestRate()': FunctionFragment;
        'totalSupply()': FunctionFragment;
        'totalWithdrawable()': FunctionFragment;
        'transfer(address,uint256)': FunctionFragment;
        'transferFrom(address,address,uint256)': FunctionFragment;
        'unlockScr(uint256,uint256,int256)': FunctionFragment;
        'unpause()': FunctionFragment;
        'upgradeTo(address)': FunctionFragment;
        'upgradeToAndCall(address,bytes)': FunctionFragment;
        'utilizationRate()': FunctionFragment;
        'whitelist()': FunctionFragment;
        'withdraw(address,uint256)': FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: 'GUARDIAN_ROLE' | 'LEVEL1_ROLE' | 'LEVEL2_ROLE' | 'LEVEL3_ROLE' | 'TWEAK_EXPIRATION' | 'addBorrower' | 'allowance' | 'approve' | 'assetManager' | 'balanceOf' | 'checkpoint' | 'currency' | 'decimals' | 'decreaseAllowance' | 'deposit' | 'forwardToAssetManager' | 'fundsAvailable' | 'fundsAvailableToLock' | 'getCurrentScale' | 'getLoan' | 'getScaledUserBalanceAndSupply' | 'increaseAllowance' | 'initialize' | 'internalLoan' | 'internalLoanInterestRate' | 'lastTweak' | 'liquidityRequirement' | 'lockScr' | 'maxNegativeAdjustment' | 'maxUtilizationRate' | 'minUtilizationRate' | 'name' | 'pause' | 'paused' | 'policyPool' | 'proxiableUUID' | 'rebalance' | 'recordEarnings' | 'removeBorrower' | 'repayLoan' | 'scaledBalanceOf' | 'scaledTotalSupply' | 'scr' | 'scrInterestRate' | 'setAssetManager' | 'setParam' | 'setWhitelist' | 'supportsInterface' | 'symbol' | 'tokenInterestRate' | 'totalSupply' | 'totalWithdrawable' | 'transfer' | 'transferFrom' | 'unlockScr' | 'unpause' | 'upgradeTo' | 'upgradeToAndCall' | 'utilizationRate' | 'whitelist' | 'withdraw'): FunctionFragment;
    encodeFunctionData(functionFragment: 'GUARDIAN_ROLE', values?: undefined): string;
    encodeFunctionData(functionFragment: 'LEVEL1_ROLE', values?: undefined): string;
    encodeFunctionData(functionFragment: 'LEVEL2_ROLE', values?: undefined): string;
    encodeFunctionData(functionFragment: 'LEVEL3_ROLE', values?: undefined): string;
    encodeFunctionData(functionFragment: 'TWEAK_EXPIRATION', values?: undefined): string;
    encodeFunctionData(functionFragment: 'addBorrower', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'allowance', values: [PromiseOrValue<string>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'approve', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'assetManager', values?: undefined): string;
    encodeFunctionData(functionFragment: 'balanceOf', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'checkpoint', values?: undefined): string;
    encodeFunctionData(functionFragment: 'currency', values?: undefined): string;
    encodeFunctionData(functionFragment: 'decimals', values?: undefined): string;
    encodeFunctionData(functionFragment: 'decreaseAllowance', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'deposit', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'forwardToAssetManager', values: [PromiseOrValue<BytesLike>]): string;
    encodeFunctionData(functionFragment: 'fundsAvailable', values?: undefined): string;
    encodeFunctionData(functionFragment: 'fundsAvailableToLock', values?: undefined): string;
    encodeFunctionData(functionFragment: 'getCurrentScale', values: [PromiseOrValue<boolean>]): string;
    encodeFunctionData(functionFragment: 'getLoan', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'getScaledUserBalanceAndSupply', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'increaseAllowance', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'initialize', values: [
        PromiseOrValue<string>,
        PromiseOrValue<string>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>
    ]): string;
    encodeFunctionData(functionFragment: 'internalLoan', values: [PromiseOrValue<BigNumberish>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'internalLoanInterestRate', values?: undefined): string;
    encodeFunctionData(functionFragment: 'lastTweak', values?: undefined): string;
    encodeFunctionData(functionFragment: 'liquidityRequirement', values?: undefined): string;
    encodeFunctionData(functionFragment: 'lockScr', values: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'maxNegativeAdjustment', values?: undefined): string;
    encodeFunctionData(functionFragment: 'maxUtilizationRate', values?: undefined): string;
    encodeFunctionData(functionFragment: 'minUtilizationRate', values?: undefined): string;
    encodeFunctionData(functionFragment: 'name', values?: undefined): string;
    encodeFunctionData(functionFragment: 'pause', values?: undefined): string;
    encodeFunctionData(functionFragment: 'paused', values?: undefined): string;
    encodeFunctionData(functionFragment: 'policyPool', values?: undefined): string;
    encodeFunctionData(functionFragment: 'proxiableUUID', values?: undefined): string;
    encodeFunctionData(functionFragment: 'rebalance', values?: undefined): string;
    encodeFunctionData(functionFragment: 'recordEarnings', values?: undefined): string;
    encodeFunctionData(functionFragment: 'removeBorrower', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'repayLoan', values: [PromiseOrValue<BigNumberish>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'scaledBalanceOf', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'scaledTotalSupply', values?: undefined): string;
    encodeFunctionData(functionFragment: 'scr', values?: undefined): string;
    encodeFunctionData(functionFragment: 'scrInterestRate', values?: undefined): string;
    encodeFunctionData(functionFragment: 'setAssetManager', values: [PromiseOrValue<string>, PromiseOrValue<boolean>]): string;
    encodeFunctionData(functionFragment: 'setParam', values: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'setWhitelist', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'supportsInterface', values: [PromiseOrValue<BytesLike>]): string;
    encodeFunctionData(functionFragment: 'symbol', values?: undefined): string;
    encodeFunctionData(functionFragment: 'tokenInterestRate', values?: undefined): string;
    encodeFunctionData(functionFragment: 'totalSupply', values?: undefined): string;
    encodeFunctionData(functionFragment: 'totalWithdrawable', 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: 'unlockScr', values: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'unpause', values?: undefined): string;
    encodeFunctionData(functionFragment: 'upgradeTo', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'upgradeToAndCall', values: [PromiseOrValue<string>, PromiseOrValue<BytesLike>]): string;
    encodeFunctionData(functionFragment: 'utilizationRate', values?: undefined): string;
    encodeFunctionData(functionFragment: 'whitelist', values?: undefined): string;
    encodeFunctionData(functionFragment: 'withdraw', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    decodeFunctionResult(functionFragment: 'GUARDIAN_ROLE', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'LEVEL1_ROLE', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'LEVEL2_ROLE', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'LEVEL3_ROLE', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'TWEAK_EXPIRATION', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'addBorrower', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'allowance', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'approve', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'assetManager', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'balanceOf', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'checkpoint', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'currency', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'decimals', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'decreaseAllowance', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'deposit', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'forwardToAssetManager', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'fundsAvailable', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'fundsAvailableToLock', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getCurrentScale', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getLoan', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getScaledUserBalanceAndSupply', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'increaseAllowance', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'initialize', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'internalLoan', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'internalLoanInterestRate', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'lastTweak', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'liquidityRequirement', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'lockScr', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'maxNegativeAdjustment', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'maxUtilizationRate', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'minUtilizationRate', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'name', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'pause', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'paused', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'policyPool', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'proxiableUUID', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'rebalance', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'recordEarnings', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'removeBorrower', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'repayLoan', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'scaledBalanceOf', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'scaledTotalSupply', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'scr', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'scrInterestRate', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setAssetManager', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setParam', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setWhitelist', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'supportsInterface', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'symbol', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'tokenInterestRate', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'totalSupply', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'totalWithdrawable', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'transfer', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'transferFrom', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'unlockScr', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'unpause', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'upgradeTo', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'upgradeToAndCall', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'utilizationRate', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'whitelist', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'withdraw', data: BytesLike): Result;
    events: {
        'AdminChanged(address,address)': EventFragment;
        'Approval(address,address,uint256)': EventFragment;
        'BeaconUpgraded(address)': EventFragment;
        'ComponentChanged(uint8,address)': EventFragment;
        'GovernanceAction(uint8,uint256)': EventFragment;
        'Initialized(uint8)': EventFragment;
        'InternalBorrowerAdded(address)': EventFragment;
        'InternalBorrowerRemoved(address,uint256)': EventFragment;
        'InternalLoan(address,uint256,uint256)': EventFragment;
        'InternalLoanRepaid(address,uint256)': EventFragment;
        'Paused(address)': EventFragment;
        'SCRLocked(uint256,uint256)': EventFragment;
        'SCRUnlocked(uint256,uint256)': EventFragment;
        'Transfer(address,address,uint256)': EventFragment;
        'Unpaused(address)': EventFragment;
        'Upgraded(address)': EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: 'AdminChanged'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Approval'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'BeaconUpgraded'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'ComponentChanged'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'GovernanceAction'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Initialized'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'InternalBorrowerAdded'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'InternalBorrowerRemoved'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'InternalLoan'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'InternalLoanRepaid'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Paused'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'SCRLocked'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'SCRUnlocked'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Transfer'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Unpaused'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Upgraded'): EventFragment;
}
export interface AdminChangedEventObject {
    previousAdmin: string;
    newAdmin: string;
}
export declare type AdminChangedEvent = TypedEvent<[string, string], AdminChangedEventObject>;
export declare type AdminChangedEventFilter = TypedEventFilter<AdminChangedEvent>;
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 BeaconUpgradedEventObject {
    beacon: string;
}
export declare type BeaconUpgradedEvent = TypedEvent<[string], BeaconUpgradedEventObject>;
export declare type BeaconUpgradedEventFilter = TypedEventFilter<BeaconUpgradedEvent>;
export interface ComponentChangedEventObject {
    action: number;
    value: string;
}
export declare type ComponentChangedEvent = TypedEvent<[number, string], ComponentChangedEventObject>;
export declare type ComponentChangedEventFilter = TypedEventFilter<ComponentChangedEvent>;
export interface GovernanceActionEventObject {
    action: number;
    value: BigNumber;
}
export declare type GovernanceActionEvent = TypedEvent<[number, BigNumber], GovernanceActionEventObject>;
export declare type GovernanceActionEventFilter = TypedEventFilter<GovernanceActionEvent>;
export interface InitializedEventObject {
    version: number;
}
export declare type InitializedEvent = TypedEvent<[number], InitializedEventObject>;
export declare type InitializedEventFilter = TypedEventFilter<InitializedEvent>;
export interface InternalBorrowerAddedEventObject {
    borrower: string;
}
export declare type InternalBorrowerAddedEvent = TypedEvent<[string], InternalBorrowerAddedEventObject>;
export declare type InternalBorrowerAddedEventFilter = TypedEventFilter<InternalBorrowerAddedEvent>;
export interface InternalBorrowerRemovedEventObject {
    borrower: string;
    defaultedDebt: BigNumber;
}
export declare type InternalBorrowerRemovedEvent = TypedEvent<[string, BigNumber], InternalBorrowerRemovedEventObject>;
export declare type InternalBorrowerRemovedEventFilter = TypedEventFilter<InternalBorrowerRemovedEvent>;
export interface InternalLoanEventObject {
    borrower: string;
    value: BigNumber;
    amountAsked: BigNumber;
}
export declare type InternalLoanEvent = TypedEvent<[string, BigNumber, BigNumber], InternalLoanEventObject>;
export declare type InternalLoanEventFilter = TypedEventFilter<InternalLoanEvent>;
export interface InternalLoanRepaidEventObject {
    borrower: string;
    value: BigNumber;
}
export declare type InternalLoanRepaidEvent = TypedEvent<[string, BigNumber], InternalLoanRepaidEventObject>;
export declare type InternalLoanRepaidEventFilter = TypedEventFilter<InternalLoanRepaidEvent>;
export interface PausedEventObject {
    account: string;
}
export declare type PausedEvent = TypedEvent<[string], PausedEventObject>;
export declare type PausedEventFilter = TypedEventFilter<PausedEvent>;
export interface SCRLockedEventObject {
    interestRate: BigNumber;
    value: BigNumber;
}
export declare type SCRLockedEvent = TypedEvent<[BigNumber, BigNumber], SCRLockedEventObject>;
export declare type SCRLockedEventFilter = TypedEventFilter<SCRLockedEvent>;
export interface SCRUnlockedEventObject {
    interestRate: BigNumber;
    value: BigNumber;
}
export declare type SCRUnlockedEvent = TypedEvent<[BigNumber, BigNumber], SCRUnlockedEventObject>;
export declare type SCRUnlockedEventFilter = TypedEventFilter<SCRUnlockedEvent>;
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 UnpausedEventObject {
    account: string;
}
export declare type UnpausedEvent = TypedEvent<[string], UnpausedEventObject>;
export declare type UnpausedEventFilter = TypedEventFilter<UnpausedEvent>;
export interface UpgradedEventObject {
    implementation: string;
}
export declare type UpgradedEvent = TypedEvent<[string], UpgradedEventObject>;
export declare type UpgradedEventFilter = TypedEventFilter<UpgradedEvent>;
export interface EnsuroEtoken extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: EnsuroEtokenInterface;
    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: {
        GUARDIAN_ROLE(overrides?: CallOverrides): Promise<[string]>;
        LEVEL1_ROLE(overrides?: CallOverrides): Promise<[string]>;
        LEVEL2_ROLE(overrides?: CallOverrides): Promise<[string]>;
        LEVEL3_ROLE(overrides?: CallOverrides): Promise<[string]>;
        TWEAK_EXPIRATION(overrides?: CallOverrides): Promise<[number]>;
        addBorrower(borrower: PromiseOrValue<string>, 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>;
        assetManager(overrides?: CallOverrides): Promise<[string]>;
        balanceOf(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber]>;
        checkpoint(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        currency(overrides?: CallOverrides): Promise<[string]>;
        decimals(overrides?: CallOverrides): Promise<[number]>;
        decreaseAllowance(spender: PromiseOrValue<string>, subtractedValue: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        deposit(provider: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        forwardToAssetManager(functionCall: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        fundsAvailable(overrides?: CallOverrides): Promise<[BigNumber]>;
        fundsAvailableToLock(overrides?: CallOverrides): Promise<[BigNumber]>;
        getCurrentScale(updated: PromiseOrValue<boolean>, overrides?: CallOverrides): Promise<[BigNumber]>;
        getLoan(borrower: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber]>;
        getScaledUserBalanceAndSupply(user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>;
        increaseAllowance(spender: PromiseOrValue<string>, addedValue: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        initialize(name_: PromiseOrValue<string>, symbol_: PromiseOrValue<string>, maxUtilizationRate_: PromiseOrValue<BigNumberish>, internalLoanInterestRate_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        internalLoan(amount: PromiseOrValue<BigNumberish>, receiver: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        internalLoanInterestRate(overrides?: CallOverrides): Promise<[BigNumber]>;
        lastTweak(overrides?: CallOverrides): Promise<[number, BigNumber]>;
        liquidityRequirement(overrides?: CallOverrides): Promise<[BigNumber]>;
        lockScr(scrAmount: PromiseOrValue<BigNumberish>, policyInterestRate: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        maxNegativeAdjustment(overrides?: CallOverrides): Promise<[BigNumber]>;
        maxUtilizationRate(overrides?: CallOverrides): Promise<[BigNumber]>;
        minUtilizationRate(overrides?: CallOverrides): Promise<[BigNumber]>;
        name(overrides?: CallOverrides): Promise<[string]>;
        pause(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        paused(overrides?: CallOverrides): Promise<[boolean]>;
        policyPool(overrides?: CallOverrides): Promise<[string]>;
        proxiableUUID(overrides?: CallOverrides): Promise<[string]>;
        rebalance(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        recordEarnings(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        removeBorrower(borrower: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        repayLoan(amount: PromiseOrValue<BigNumberish>, onBehalfOf: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        scaledBalanceOf(user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber]>;
        scaledTotalSupply(overrides?: CallOverrides): Promise<[BigNumber]>;
        scr(overrides?: CallOverrides): Promise<[BigNumber]>;
        scrInterestRate(overrides?: CallOverrides): Promise<[BigNumber]>;
        setAssetManager(newAM: PromiseOrValue<string>, force: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setParam(param: PromiseOrValue<BigNumberish>, newValue: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setWhitelist(lpWhitelist_: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        supportsInterface(interfaceId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<[boolean]>;
        symbol(overrides?: CallOverrides): Promise<[string]>;
        tokenInterestRate(overrides?: CallOverrides): Promise<[BigNumber]>;
        totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>;
        totalWithdrawable(overrides?: CallOverrides): Promise<[BigNumber]>;
        transfer(recipient: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        transferFrom(sender: PromiseOrValue<string>, recipient: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        unlockScr(scrAmount: PromiseOrValue<BigNumberish>, policyInterestRate: PromiseOrValue<BigNumberish>, adjustment: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        unpause(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        upgradeTo(newImplementation: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        upgradeToAndCall(newImplementation: PromiseOrValue<string>, data: PromiseOrValue<BytesLike>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        utilizationRate(overrides?: CallOverrides): Promise<[BigNumber]>;
        whitelist(overrides?: CallOverrides): Promise<[string]>;
        withdraw(provider: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
    };
    GUARDIAN_ROLE(overrides?: CallOverrides): Promise<string>;
    LEVEL1_ROLE(overrides?: CallOverrides): Promise<string>;
    LEVEL2_ROLE(overrides?: CallOverrides): Promise<string>;
    LEVEL3_ROLE(overrides?: CallOverrides): Promise<string>;
    TWEAK_EXPIRATION(overrides?: CallOverrides): Promise<number>;
    addBorrower(borrower: PromiseOrValue<string>, 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>;
    assetManager(overrides?: CallOverrides): Promise<string>;
    balanceOf(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    checkpoint(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    currency(overrides?: CallOverrides): Promise<string>;
    decimals(overrides?: CallOverrides): Promise<number>;
    decreaseAllowance(spender: PromiseOrValue<string>, subtractedValue: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    deposit(provider: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    forwardToAssetManager(functionCall: PromiseOrValue<BytesLike>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    fundsAvailable(overrides?: CallOverrides): Promise<BigNumber>;
    fundsAvailableToLock(overrides?: CallOverrides): Promise<BigNumber>;
    getCurrentScale(updated: PromiseOrValue<boolean>, overrides?: CallOverrides): Promise<BigNumber>;
    getLoan(borrower: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    getScaledUserBalanceAndSupply(user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>;
    increaseAllowance(spender: PromiseOrValue<string>, addedValue: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    initialize(name_: PromiseOrValue<string>, symbol_: PromiseOrValue<string>, maxUtilizationRate_: PromiseOrValue<BigNumberish>, internalLoanInterestRate_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    internalLoan(amount: PromiseOrValue<BigNumberish>, receiver: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    internalLoanInterestRate(overrides?: CallOverrides): Promise<BigNumber>;
    lastTweak(overrides?: CallOverrides): Promise<[number, BigNumber]>;
    liquidityRequirement(overrides?: CallOverrides): Promise<BigNumber>;
    lockScr(scrAmount: PromiseOrValue<BigNumberish>, policyInterestRate: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    maxNegativeAdjustment(overrides?: CallOverrides): Promise<BigNumber>;
    maxUtilizationRate(overrides?: CallOverrides): Promise<BigNumber>;
    minUtilizationRate(overrides?: CallOverrides): Promise<BigNumber>;
    name(overrides?: CallOverrides): Promise<string>;
    pause(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    paused(overrides?: CallOverrides): Promise<boolean>;
    policyPool(overrides?: CallOverrides): Promise<string>;
    proxiableUUID(overrides?: CallOverrides): Promise<string>;
    rebalance(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    recordEarnings(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    removeBorrower(borrower: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    repayLoan(amount: PromiseOrValue<BigNumberish>, onBehalfOf: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    scaledBalanceOf(user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    scaledTotalSupply(overrides?: CallOverrides): Promise<BigNumber>;
    scr(overrides?: CallOverrides): Promise<BigNumber>;
    scrInterestRate(overrides?: CallOverrides): Promise<BigNumber>;
    setAssetManager(newAM: PromiseOrValue<string>, force: PromiseOrValue<boolean>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setParam(param: PromiseOrValue<BigNumberish>, newValue: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setWhitelist(lpWhitelist_: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    supportsInterface(interfaceId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<boolean>;
    symbol(overrides?: CallOverrides): Promise<string>;
    tokenInterestRate(overrides?: CallOverrides): Promise<BigNumber>;
    totalSupply(overrides?: CallOverrides): Promise<BigNumber>;
    totalWithdrawable(overrides?: CallOverrides): Promise<BigNumber>;
    transfer(recipient: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    transferFrom(sender: PromiseOrValue<string>, recipient: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    unlockScr(scrAmount: PromiseOrValue<BigNumberish>, policyInterestRate: PromiseOrValue<BigNumberish>, adjustment: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    unpause(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    upgradeTo(newImplementation: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    upgradeToAndCall(newImplementation: PromiseOrValue<string>, data: PromiseOrValue<BytesLike>, overrides?: PayableOverrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    utilizationRate(overrides?: CallOverrides): Promise<BigNumber>;
    whitelist(overrides?: CallOverrides): Promise<string>;
    withdraw(provider: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    callStatic: {
        GUARDIAN_ROLE(overrides?: CallOverrides): Promise<string>;
        LEVEL1_ROLE(overrides?: CallOverrides): Promise<string>;
        LEVEL2_ROLE(overrides?: CallOverrides): Promise<string>;
        LEVEL3_ROLE(overrides?: CallOverrides): Promise<string>;
        TWEAK_EXPIRATION(overrides?: CallOverrides): Promise<number>;
        addBorrower(borrower: PromiseOrValue<string>, 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>;
        assetManager(overrides?: CallOverrides): Promise<string>;
        balanceOf(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        checkpoint(overrides?: CallOverrides): Promise<void>;
        currency(overrides?: CallOverrides): Promise<string>;
        decimals(overrides?: CallOverrides): Promise<number>;
        decreaseAllowance(spender: PromiseOrValue<string>, subtractedValue: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<boolean>;
        deposit(provider: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        forwardToAssetManager(functionCall: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<string>;
        fundsAvailable(overrides?: CallOverrides): Promise<BigNumber>;
        fundsAvailableToLock(overrides?: CallOverrides): Promise<BigNumber>;
        getCurrentScale(updated: PromiseOrValue<boolean>, overrides?: CallOverrides): Promise<BigNumber>;
        getLoan(borrower: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        getScaledUserBalanceAndSupply(user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>;
        increaseAllowance(spender: PromiseOrValue<string>, addedValue: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<boolean>;
        initialize(name_: PromiseOrValue<string>, symbol_: PromiseOrValue<string>, maxUtilizationRate_: PromiseOrValue<BigNumberish>, internalLoanInterestRate_: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        internalLoan(amount: PromiseOrValue<BigNumberish>, receiver: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        internalLoanInterestRate(overrides?: CallOverrides): Promise<BigNumber>;
        lastTweak(overrides?: CallOverrides): Promise<[number, BigNumber]>;
        liquidityRequirement(overrides?: CallOverrides): Promise<BigNumber>;
        lockScr(scrAmount: PromiseOrValue<BigNumberish>, policyInterestRate: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        maxNegativeAdjustment(overrides?: CallOverrides): Promise<BigNumber>;
        maxUtilizationRate(overrides?: CallOverrides): Promise<BigNumber>;
        minUtilizationRate(overrides?: CallOverrides): Promise<BigNumber>;
        name(overrides?: CallOverrides): Promise<string>;
        pause(overrides?: CallOverrides): Promise<void>;
        paused(overrides?: CallOverrides): Promise<boolean>;
        policyPool(overrides?: CallOverrides): Promise<string>;
        proxiableUUID(overrides?: CallOverrides): Promise<string>;
        rebalance(overrides?: CallOverrides): Promise<void>;
        recordEarnings(overrides?: CallOverrides): Promise<void>;
        removeBorrower(borrower: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        repayLoan(amount: PromiseOrValue<BigNumberish>, onBehalfOf: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        scaledBalanceOf(user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        scaledTotalSupply(overrides?: CallOverrides): Promise<BigNumber>;
        scr(overrides?: CallOverrides): Promise<BigNumber>;
        scrInterestRate(overrides?: CallOverrides): Promise<BigNumber>;
        setAssetManager(newAM: PromiseOrValue<string>, force: PromiseOrValue<boolean>, overrides?: CallOverrides): Promise<void>;
        setParam(param: PromiseOrValue<BigNumberish>, newValue: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        setWhitelist(lpWhitelist_: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        supportsInterface(interfaceId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<boolean>;
        symbol(overrides?: CallOverrides): Promise<string>;
        tokenInterestRate(overrides?: CallOverrides): Promise<BigNumber>;
        totalSupply(overrides?: CallOverrides): Promise<BigNumber>;
        totalWithdrawable(overrides?: CallOverrides): Promise<BigNumber>;
        transfer(recipient: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<boolean>;
        transferFrom(sender: PromiseOrValue<string>, recipient: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<boolean>;
        unlockScr(scrAmount: PromiseOrValue<BigNumberish>, policyInterestRate: PromiseOrValue<BigNumberish>, adjustment: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        unpause(overrides?: CallOverrides): Promise<void>;
        upgradeTo(newImplementation: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        upgradeToAndCall(newImplementation: PromiseOrValue<string>, data: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<void>;
        utilizationRate(overrides?: CallOverrides): Promise<BigNumber>;
        whitelist(overrides?: CallOverrides): Promise<string>;
        withdraw(provider: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
    };
    filters: {
        'AdminChanged(address,address)'(previousAdmin?: null, newAdmin?: null): AdminChangedEventFilter;
        AdminChanged(previousAdmin?: null, newAdmin?: null): AdminChangedEventFilter;
        '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;
        'BeaconUpgraded(address)'(beacon?: PromiseOrValue<string> | null): BeaconUpgradedEventFilter;
        BeaconUpgraded(beacon?: PromiseOrValue<string> | null): BeaconUpgradedEventFilter;
        'ComponentChanged(uint8,address)'(action?: PromiseOrValue<BigNumberish> | null, value?: null): ComponentChangedEventFilter;
        ComponentChanged(action?: PromiseOrValue<BigNumberish> | null, value?: null): ComponentChangedEventFilter;
        'GovernanceAction(uint8,uint256)'(action?: PromiseOrValue<BigNumberish> | null, value?: null): GovernanceActionEventFilter;
        GovernanceAction(action?: PromiseOrValue<BigNumberish> | null, value?: null): GovernanceActionEventFilter;
        'Initialized(uint8)'(version?: null): InitializedEventFilter;
        Initialized(version?: null): InitializedEventFilter;
        'InternalBorrowerAdded(address)'(borrower?: PromiseOrValue<string> | null): InternalBorrowerAddedEventFilter;
        InternalBorrowerAdded(borrower?: PromiseOrValue<string> | null): InternalBorrowerAddedEventFilter;
        'InternalBorrowerRemoved(address,uint256)'(borrower?: PromiseOrValue<string> | null, defaultedDebt?: null): InternalBorrowerRemovedEventFilter;
        InternalBorrowerRemoved(borrower?: PromiseOrValue<string> | null, defaultedDebt?: null): InternalBorrowerRemovedEventFilter;
        'InternalLoan(address,uint256,uint256)'(borrower?: PromiseOrValue<string> | null, value?: null, amountAsked?: null): InternalLoanEventFilter;
        InternalLoan(borrower?: PromiseOrValue<string> | null, value?: null, amountAsked?: null): InternalLoanEventFilter;
        'InternalLoanRepaid(address,uint256)'(borrower?: PromiseOrValue<string> | null, value?: null): InternalLoanRepaidEventFilter;
        InternalLoanRepaid(borrower?: PromiseOrValue<string> | null, value?: null): InternalLoanRepaidEventFilter;
        'Paused(address)'(account?: null): PausedEventFilter;
        Paused(account?: null): PausedEventFilter;
        'SCRLocked(uint256,uint256)'(interestRate?: null, value?: null): SCRLockedEventFilter;
        SCRLocked(interestRate?: null, value?: null): SCRLockedEventFilter;
        'SCRUnlocked(uint256,uint256)'(interestRate?: null, value?: null): SCRUnlockedEventFilter;
        SCRUnlocked(interestRate?: null, value?: null): SCRUnlockedEventFilter;
        '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;
        'Unpaused(address)'(account?: null): UnpausedEventFilter;
        Unpaused(account?: null): UnpausedEventFilter;
        'Upgraded(address)'(implementation?: PromiseOrValue<string> | null): UpgradedEventFilter;
        Upgraded(implementation?: PromiseOrValue<string> | null): UpgradedEventFilter;
    };
    estimateGas: {
        GUARDIAN_ROLE(overrides?: CallOverrides): Promise<BigNumber>;
        LEVEL1_ROLE(overrides?: CallOverrides): Promise<BigNumber>;
        LEVEL2_ROLE(overrides?: CallOverrides): Promise<BigNumber>;
        LEVEL3_ROLE(overrides?: CallOverrides): Promise<BigNumber>;
        TWEAK_EXPIRATION(overrides?: CallOverrides): Promise<BigNumber>;
        addBorrower(borrower: PromiseOrValue<string>, 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>;
        assetManager(overrides?: CallOverrides): Promise<BigNumber>;
        balanceOf(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        checkpoint(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        currency(overrides?: CallOverrides): Promise<BigNumber>;
        decimals(overrides?: CallOverrides): Promise<BigNumber>;
        decreaseAllowance(spender: PromiseOrValue<string>, subtractedValue: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        deposit(provider: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        forwardToAssetManager(functionCall: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        fundsAvailable(overrides?: CallOverrides): Promise<BigNumber>;
        fundsAvailableToLock(overrides?: CallOverrides): Promise<BigNumber>;
        getCurrentScale(updated: PromiseOrValue<boolean>, overrides?: CallOverrides): Promise<BigNumber>;
        getLoan(borrower: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        getScaledUserBalanceAndSupply(user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        increaseAllowance(spender: PromiseOrValue<string>, addedValue: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        initialize(name_: PromiseOrValue<string>, symbol_: PromiseOrValue<string>, maxUtilizationRate_: PromiseOrValue<BigNumberish>, internalLoanInterestRate_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        internalLoan(amount: PromiseOrValue<BigNumberish>, receiver: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        internalLoanInterestRate(overrides?: CallOverrides): Promise<BigNumber>;
        lastTweak(overrides?: CallOverrides): Promise<BigNumber>;
        liquidityRequirement(overrides?: CallOverrides): Promise<BigNumber>;
        lockScr(scrAmount: PromiseOrValue<BigNumberish>, policyInterestRate: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        maxNegativeAdjustment(overrides?: CallOverrides): Promise<BigNumber>;
        maxUtilizationRate(overrides?: CallOverrides): Promise<BigNumber>;
        minUtilizationRate(overrides?: CallOverrides): Promise<BigNumber>;
        name(overrides?: CallOverrides): Promise<BigNumber>;
        pause(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        paused(overrides?: CallOverrides): Promise<BigNumber>;
        policyPool(overrides?: CallOverrides): Promise<BigNumber>;
        proxiableUUID(overrides?: CallOverrides): Promise<BigNumber>;
        rebalance(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        recordEarnings(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        removeBorrower(borrower: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        repayLoan(amount: PromiseOrValue<BigNumberish>, onBehalfOf: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        scaledBalanceOf(user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        scaledTotalSupply(overrides?: CallOverrides): Promise<BigNumber>;
        scr(overrides?: CallOverrides): Promise<BigNumber>;
        scrInterestRate(overrides?: CallOverrides): Promise<BigNumber>;
        setAssetManager(newAM: PromiseOrValue<string>, force: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setParam(param: PromiseOrValue<BigNumberish>, newValue: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setWhitelist(lpWhitelist_: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        supportsInterface(interfaceId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<BigNumber>;
        symbol(overrides?: CallOverrides): Promise<BigNumber>;
        tokenInterestRate(overrides?: CallOverrides): Promise<BigNumber>;
        totalSupply(overrides?: CallOverrides): Promise<BigNumber>;
        totalWithdrawable(overrides?: CallOverrides): Promise<BigNumber>;
        transfer(recipient: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        transferFrom(sender: PromiseOrValue<string>, recipient: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        unlockScr(scrAmount: PromiseOrValue<BigNumberish>, policyInterestRate: PromiseOrValue<BigNumberish>, adjustment: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        unpause(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        upgradeTo(newImplementation: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        upgradeToAndCall(newImplementation: PromiseOrValue<string>, data: PromiseOrValue<BytesLike>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        utilizationRate(overrides?: CallOverrides): Promise<BigNumber>;
        whitelist(overrides?: CallOverrides): Promise<BigNumber>;
        withdraw(provider: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
    };
    populateTransaction: {
        GUARDIAN_ROLE(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        LEVEL1_ROLE(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        LEVEL2_ROLE(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        LEVEL3_ROLE(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        TWEAK_EXPIRATION(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        addBorrower(borrower: PromiseOrValue<string>, 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>;
        assetManager(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        balanceOf(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        checkpoint(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        currency(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        decimals(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        decreaseAllowance(spender: PromiseOrValue<string>, subtractedValue: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        deposit(provider: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        forwardToAssetManager(functionCall: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        fundsAvailable(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        fundsAvailableToLock(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getCurrentScale(updated: PromiseOrValue<boolean>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getLoan(borrower: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getScaledUserBalanceAndSupply(user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        increaseAllowance(spender: PromiseOrValue<string>, addedValue: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        initialize(name_: PromiseOrValue<string>, symbol_: PromiseOrValue<string>, maxUtilizationRate_: PromiseOrValue<BigNumberish>, internalLoanInterestRate_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        internalLoan(amount: PromiseOrValue<BigNumberish>, receiver: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        internalLoanInterestRate(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        lastTweak(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        liquidityRequirement(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        lockScr(scrAmount: PromiseOrValue<BigNumberish>, policyInterestRate: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        maxNegativeAdjustment(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        maxUtilizationRate(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        minUtilizationRate(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        name(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        pause(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        paused(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        policyPool(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        proxiableUUID(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        rebalance(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        recordEarnings(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        removeBorrower(borrower: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        repayLoan(amount: PromiseOrValue<BigNumberish>, onBehalfOf: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        scaledBalanceOf(user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        scaledTotalSupply(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        scr(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        scrInterestRate(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        setAssetManager(newAM: PromiseOrValue<string>, force: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setParam(param: PromiseOrValue<BigNumberish>, newValue: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setWhitelist(lpWhitelist_: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        supportsInterface(interfaceId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        symbol(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        tokenInterestRate(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        totalSupply(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        totalWithdrawable(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        transfer(recipient: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        transferFrom(sender: PromiseOrValue<string>, recipient: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        unlockScr(scrAmount: PromiseOrValue<BigNumberish>, policyInterestRate: PromiseOrValue<BigNumberish>, adjustment: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        unpause(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        upgradeTo(newImplementation: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        upgradeToAndCall(newImplementation: PromiseOrValue<string>, data: PromiseOrValue<BytesLike>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        utilizationRate(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        whitelist(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        withdraw(provider: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
    };
}
