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 BreakerBoxInterface extends utils.Interface {
    functions: {
        "addBreaker(address,uint8)": FunctionFragment;
        "addRateFeed(address)": FunctionFragment;
        "addRateFeeds(address[])": FunctionFragment;
        "breakerTradingMode(address)": FunctionFragment;
        "breakers(uint256)": FunctionFragment;
        "checkAndSetBreakers(address)": FunctionFragment;
        "getBreakers()": FunctionFragment;
        "getRateFeedTradingMode(address)": FunctionFragment;
        "getRateFeeds()": FunctionFragment;
        "isBreaker(address)": FunctionFragment;
        "isBreakerEnabled(address,address)": FunctionFragment;
        "isOwner()": FunctionFragment;
        "owner()": FunctionFragment;
        "rateFeedBreakerStatus(address,address)": FunctionFragment;
        "rateFeedDependencies(address,uint256)": FunctionFragment;
        "rateFeedIDs(uint256)": FunctionFragment;
        "rateFeedStatus(address)": FunctionFragment;
        "rateFeedTradingMode(address)": FunctionFragment;
        "removeBreaker(address)": FunctionFragment;
        "removeRateFeed(address)": FunctionFragment;
        "renounceOwnership()": FunctionFragment;
        "setRateFeedDependencies(address,address[])": FunctionFragment;
        "setRateFeedTradingMode(address,uint8)": FunctionFragment;
        "setSortedOracles(address)": FunctionFragment;
        "sortedOracles()": FunctionFragment;
        "toggleBreaker(address,address,bool)": FunctionFragment;
        "transferOwnership(address)": FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: "addBreaker" | "addRateFeed" | "addRateFeeds" | "breakerTradingMode" | "breakers" | "checkAndSetBreakers" | "getBreakers" | "getRateFeedTradingMode" | "getRateFeeds" | "isBreaker" | "isBreakerEnabled" | "isOwner" | "owner" | "rateFeedBreakerStatus" | "rateFeedDependencies" | "rateFeedIDs" | "rateFeedStatus" | "rateFeedTradingMode" | "removeBreaker" | "removeRateFeed" | "renounceOwnership" | "setRateFeedDependencies" | "setRateFeedTradingMode" | "setSortedOracles" | "sortedOracles" | "toggleBreaker" | "transferOwnership"): FunctionFragment;
    encodeFunctionData(functionFragment: "addBreaker", values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "addRateFeed", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "addRateFeeds", values: [PromiseOrValue<string>[]]): string;
    encodeFunctionData(functionFragment: "breakerTradingMode", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "breakers", values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "checkAndSetBreakers", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "getBreakers", values?: undefined): string;
    encodeFunctionData(functionFragment: "getRateFeedTradingMode", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "getRateFeeds", values?: undefined): string;
    encodeFunctionData(functionFragment: "isBreaker", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "isBreakerEnabled", values: [PromiseOrValue<string>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "isOwner", values?: undefined): string;
    encodeFunctionData(functionFragment: "owner", values?: undefined): string;
    encodeFunctionData(functionFragment: "rateFeedBreakerStatus", values: [PromiseOrValue<string>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "rateFeedDependencies", values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "rateFeedIDs", values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "rateFeedStatus", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "rateFeedTradingMode", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "removeBreaker", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "removeRateFeed", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "renounceOwnership", values?: undefined): string;
    encodeFunctionData(functionFragment: "setRateFeedDependencies", values: [PromiseOrValue<string>, PromiseOrValue<string>[]]): string;
    encodeFunctionData(functionFragment: "setRateFeedTradingMode", values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "setSortedOracles", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "sortedOracles", values?: undefined): string;
    encodeFunctionData(functionFragment: "toggleBreaker", values: [
        PromiseOrValue<string>,
        PromiseOrValue<string>,
        PromiseOrValue<boolean>
    ]): string;
    encodeFunctionData(functionFragment: "transferOwnership", values: [PromiseOrValue<string>]): string;
    decodeFunctionResult(functionFragment: "addBreaker", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "addRateFeed", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "addRateFeeds", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "breakerTradingMode", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "breakers", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "checkAndSetBreakers", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getBreakers", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getRateFeedTradingMode", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getRateFeeds", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "isBreaker", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "isBreakerEnabled", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "isOwner", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "rateFeedBreakerStatus", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "rateFeedDependencies", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "rateFeedIDs", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "rateFeedStatus", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "rateFeedTradingMode", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "removeBreaker", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "removeRateFeed", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "renounceOwnership", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setRateFeedDependencies", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setRateFeedTradingMode", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setSortedOracles", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "sortedOracles", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "toggleBreaker", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "transferOwnership", data: BytesLike): Result;
    events: {
        "BreakerAdded(address)": EventFragment;
        "BreakerRemoved(address)": EventFragment;
        "BreakerStatusUpdated(address,address,bool)": EventFragment;
        "BreakerTripped(address,address)": EventFragment;
        "OwnershipTransferred(address,address)": EventFragment;
        "RateFeedAdded(address)": EventFragment;
        "RateFeedDependenciesSet(address,address[])": EventFragment;
        "RateFeedRemoved(address)": EventFragment;
        "ResetAttemptCriteriaFail(address,address)": EventFragment;
        "ResetAttemptNotCool(address,address)": EventFragment;
        "ResetSuccessful(address,address)": EventFragment;
        "SortedOraclesUpdated(address)": EventFragment;
        "TradingModeUpdated(address,uint256)": EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: "BreakerAdded"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "BreakerRemoved"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "BreakerStatusUpdated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "BreakerTripped"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "RateFeedAdded"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "RateFeedDependenciesSet"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "RateFeedRemoved"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "ResetAttemptCriteriaFail"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "ResetAttemptNotCool"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "ResetSuccessful"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "SortedOraclesUpdated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "TradingModeUpdated"): EventFragment;
}
export interface BreakerAddedEventObject {
    breaker: string;
}
export type BreakerAddedEvent = TypedEvent<[string], BreakerAddedEventObject>;
export type BreakerAddedEventFilter = TypedEventFilter<BreakerAddedEvent>;
export interface BreakerRemovedEventObject {
    breaker: string;
}
export type BreakerRemovedEvent = TypedEvent<[
    string
], BreakerRemovedEventObject>;
export type BreakerRemovedEventFilter = TypedEventFilter<BreakerRemovedEvent>;
export interface BreakerStatusUpdatedEventObject {
    breaker: string;
    rateFeedID: string;
    status: boolean;
}
export type BreakerStatusUpdatedEvent = TypedEvent<[
    string,
    string,
    boolean
], BreakerStatusUpdatedEventObject>;
export type BreakerStatusUpdatedEventFilter = TypedEventFilter<BreakerStatusUpdatedEvent>;
export interface BreakerTrippedEventObject {
    breaker: string;
    rateFeedID: string;
}
export type BreakerTrippedEvent = TypedEvent<[
    string,
    string
], BreakerTrippedEventObject>;
export type BreakerTrippedEventFilter = TypedEventFilter<BreakerTrippedEvent>;
export interface OwnershipTransferredEventObject {
    previousOwner: string;
    newOwner: string;
}
export type OwnershipTransferredEvent = TypedEvent<[
    string,
    string
], OwnershipTransferredEventObject>;
export type OwnershipTransferredEventFilter = TypedEventFilter<OwnershipTransferredEvent>;
export interface RateFeedAddedEventObject {
    rateFeedID: string;
}
export type RateFeedAddedEvent = TypedEvent<[string], RateFeedAddedEventObject>;
export type RateFeedAddedEventFilter = TypedEventFilter<RateFeedAddedEvent>;
export interface RateFeedDependenciesSetEventObject {
    rateFeedID: string;
    dependencies: string[];
}
export type RateFeedDependenciesSetEvent = TypedEvent<[
    string,
    string[]
], RateFeedDependenciesSetEventObject>;
export type RateFeedDependenciesSetEventFilter = TypedEventFilter<RateFeedDependenciesSetEvent>;
export interface RateFeedRemovedEventObject {
    rateFeedID: string;
}
export type RateFeedRemovedEvent = TypedEvent<[
    string
], RateFeedRemovedEventObject>;
export type RateFeedRemovedEventFilter = TypedEventFilter<RateFeedRemovedEvent>;
export interface ResetAttemptCriteriaFailEventObject {
    rateFeedID: string;
    breaker: string;
}
export type ResetAttemptCriteriaFailEvent = TypedEvent<[
    string,
    string
], ResetAttemptCriteriaFailEventObject>;
export type ResetAttemptCriteriaFailEventFilter = TypedEventFilter<ResetAttemptCriteriaFailEvent>;
export interface ResetAttemptNotCoolEventObject {
    rateFeedID: string;
    breaker: string;
}
export type ResetAttemptNotCoolEvent = TypedEvent<[
    string,
    string
], ResetAttemptNotCoolEventObject>;
export type ResetAttemptNotCoolEventFilter = TypedEventFilter<ResetAttemptNotCoolEvent>;
export interface ResetSuccessfulEventObject {
    rateFeedID: string;
    breaker: string;
}
export type ResetSuccessfulEvent = TypedEvent<[
    string,
    string
], ResetSuccessfulEventObject>;
export type ResetSuccessfulEventFilter = TypedEventFilter<ResetSuccessfulEvent>;
export interface SortedOraclesUpdatedEventObject {
    newSortedOracles: string;
}
export type SortedOraclesUpdatedEvent = TypedEvent<[
    string
], SortedOraclesUpdatedEventObject>;
export type SortedOraclesUpdatedEventFilter = TypedEventFilter<SortedOraclesUpdatedEvent>;
export interface TradingModeUpdatedEventObject {
    rateFeedID: string;
    tradingMode: BigNumber;
}
export type TradingModeUpdatedEvent = TypedEvent<[
    string,
    BigNumber
], TradingModeUpdatedEventObject>;
export type TradingModeUpdatedEventFilter = TypedEventFilter<TradingModeUpdatedEvent>;
export interface BreakerBox extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: BreakerBoxInterface;
    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: {
        addBreaker(breaker: PromiseOrValue<string>, tradingMode: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        addRateFeed(rateFeedID: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        addRateFeeds(newRateFeedIDs: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        breakerTradingMode(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[number]>;
        breakers(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[string]>;
        checkAndSetBreakers(rateFeedID: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        getBreakers(overrides?: CallOverrides): Promise<[string[]]>;
        getRateFeedTradingMode(rateFeedID: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[number]>;
        getRateFeeds(overrides?: CallOverrides): Promise<[string[]]>;
        isBreaker(breaker: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[boolean]>;
        isBreakerEnabled(breaker: PromiseOrValue<string>, rateFeedID: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[boolean]>;
        isOwner(overrides?: CallOverrides): Promise<[boolean]>;
        owner(overrides?: CallOverrides): Promise<[string]>;
        rateFeedBreakerStatus(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
            number,
            BigNumber,
            boolean
        ] & {
            tradingMode: number;
            lastUpdatedTime: BigNumber;
            enabled: boolean;
        }>;
        rateFeedDependencies(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[string]>;
        rateFeedIDs(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[string]>;
        rateFeedStatus(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[boolean]>;
        rateFeedTradingMode(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[number]>;
        removeBreaker(breaker: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        removeRateFeed(rateFeedID: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        renounceOwnership(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setRateFeedDependencies(rateFeedID: PromiseOrValue<string>, dependencies: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setRateFeedTradingMode(rateFeedID: PromiseOrValue<string>, tradingMode: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setSortedOracles(_sortedOracles: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        sortedOracles(overrides?: CallOverrides): Promise<[string]>;
        toggleBreaker(breakerAddress: PromiseOrValue<string>, rateFeedID: PromiseOrValue<string>, enable: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        transferOwnership(newOwner: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
    };
    addBreaker(breaker: PromiseOrValue<string>, tradingMode: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    addRateFeed(rateFeedID: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    addRateFeeds(newRateFeedIDs: PromiseOrValue<string>[], overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    breakerTradingMode(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<number>;
    breakers(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<string>;
    checkAndSetBreakers(rateFeedID: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    getBreakers(overrides?: CallOverrides): Promise<string[]>;
    getRateFeedTradingMode(rateFeedID: PromiseOrValue<string>, overrides?: CallOverrides): Promise<number>;
    getRateFeeds(overrides?: CallOverrides): Promise<string[]>;
    isBreaker(breaker: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
    isBreakerEnabled(breaker: PromiseOrValue<string>, rateFeedID: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
    isOwner(overrides?: CallOverrides): Promise<boolean>;
    owner(overrides?: CallOverrides): Promise<string>;
    rateFeedBreakerStatus(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
        number,
        BigNumber,
        boolean
    ] & {
        tradingMode: number;
        lastUpdatedTime: BigNumber;
        enabled: boolean;
    }>;
    rateFeedDependencies(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<string>;
    rateFeedIDs(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<string>;
    rateFeedStatus(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
    rateFeedTradingMode(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<number>;
    removeBreaker(breaker: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    removeRateFeed(rateFeedID: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    renounceOwnership(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setRateFeedDependencies(rateFeedID: PromiseOrValue<string>, dependencies: PromiseOrValue<string>[], overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setRateFeedTradingMode(rateFeedID: PromiseOrValue<string>, tradingMode: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setSortedOracles(_sortedOracles: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    sortedOracles(overrides?: CallOverrides): Promise<string>;
    toggleBreaker(breakerAddress: PromiseOrValue<string>, rateFeedID: PromiseOrValue<string>, enable: PromiseOrValue<boolean>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    transferOwnership(newOwner: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    callStatic: {
        addBreaker(breaker: PromiseOrValue<string>, tradingMode: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        addRateFeed(rateFeedID: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        addRateFeeds(newRateFeedIDs: PromiseOrValue<string>[], overrides?: CallOverrides): Promise<void>;
        breakerTradingMode(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<number>;
        breakers(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<string>;
        checkAndSetBreakers(rateFeedID: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        getBreakers(overrides?: CallOverrides): Promise<string[]>;
        getRateFeedTradingMode(rateFeedID: PromiseOrValue<string>, overrides?: CallOverrides): Promise<number>;
        getRateFeeds(overrides?: CallOverrides): Promise<string[]>;
        isBreaker(breaker: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
        isBreakerEnabled(breaker: PromiseOrValue<string>, rateFeedID: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
        isOwner(overrides?: CallOverrides): Promise<boolean>;
        owner(overrides?: CallOverrides): Promise<string>;
        rateFeedBreakerStatus(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
            number,
            BigNumber,
            boolean
        ] & {
            tradingMode: number;
            lastUpdatedTime: BigNumber;
            enabled: boolean;
        }>;
        rateFeedDependencies(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<string>;
        rateFeedIDs(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<string>;
        rateFeedStatus(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
        rateFeedTradingMode(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<number>;
        removeBreaker(breaker: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        removeRateFeed(rateFeedID: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        renounceOwnership(overrides?: CallOverrides): Promise<void>;
        setRateFeedDependencies(rateFeedID: PromiseOrValue<string>, dependencies: PromiseOrValue<string>[], overrides?: CallOverrides): Promise<void>;
        setRateFeedTradingMode(rateFeedID: PromiseOrValue<string>, tradingMode: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        setSortedOracles(_sortedOracles: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        sortedOracles(overrides?: CallOverrides): Promise<string>;
        toggleBreaker(breakerAddress: PromiseOrValue<string>, rateFeedID: PromiseOrValue<string>, enable: PromiseOrValue<boolean>, overrides?: CallOverrides): Promise<void>;
        transferOwnership(newOwner: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
    };
    filters: {
        "BreakerAdded(address)"(breaker?: PromiseOrValue<string> | null): BreakerAddedEventFilter;
        BreakerAdded(breaker?: PromiseOrValue<string> | null): BreakerAddedEventFilter;
        "BreakerRemoved(address)"(breaker?: PromiseOrValue<string> | null): BreakerRemovedEventFilter;
        BreakerRemoved(breaker?: PromiseOrValue<string> | null): BreakerRemovedEventFilter;
        "BreakerStatusUpdated(address,address,bool)"(breaker?: null, rateFeedID?: null, status?: null): BreakerStatusUpdatedEventFilter;
        BreakerStatusUpdated(breaker?: null, rateFeedID?: null, status?: null): BreakerStatusUpdatedEventFilter;
        "BreakerTripped(address,address)"(breaker?: PromiseOrValue<string> | null, rateFeedID?: PromiseOrValue<string> | null): BreakerTrippedEventFilter;
        BreakerTripped(breaker?: PromiseOrValue<string> | null, rateFeedID?: PromiseOrValue<string> | null): BreakerTrippedEventFilter;
        "OwnershipTransferred(address,address)"(previousOwner?: PromiseOrValue<string> | null, newOwner?: PromiseOrValue<string> | null): OwnershipTransferredEventFilter;
        OwnershipTransferred(previousOwner?: PromiseOrValue<string> | null, newOwner?: PromiseOrValue<string> | null): OwnershipTransferredEventFilter;
        "RateFeedAdded(address)"(rateFeedID?: PromiseOrValue<string> | null): RateFeedAddedEventFilter;
        RateFeedAdded(rateFeedID?: PromiseOrValue<string> | null): RateFeedAddedEventFilter;
        "RateFeedDependenciesSet(address,address[])"(rateFeedID?: PromiseOrValue<string> | null, dependencies?: PromiseOrValue<string>[] | null): RateFeedDependenciesSetEventFilter;
        RateFeedDependenciesSet(rateFeedID?: PromiseOrValue<string> | null, dependencies?: PromiseOrValue<string>[] | null): RateFeedDependenciesSetEventFilter;
        "RateFeedRemoved(address)"(rateFeedID?: PromiseOrValue<string> | null): RateFeedRemovedEventFilter;
        RateFeedRemoved(rateFeedID?: PromiseOrValue<string> | null): RateFeedRemovedEventFilter;
        "ResetAttemptCriteriaFail(address,address)"(rateFeedID?: PromiseOrValue<string> | null, breaker?: PromiseOrValue<string> | null): ResetAttemptCriteriaFailEventFilter;
        ResetAttemptCriteriaFail(rateFeedID?: PromiseOrValue<string> | null, breaker?: PromiseOrValue<string> | null): ResetAttemptCriteriaFailEventFilter;
        "ResetAttemptNotCool(address,address)"(rateFeedID?: PromiseOrValue<string> | null, breaker?: PromiseOrValue<string> | null): ResetAttemptNotCoolEventFilter;
        ResetAttemptNotCool(rateFeedID?: PromiseOrValue<string> | null, breaker?: PromiseOrValue<string> | null): ResetAttemptNotCoolEventFilter;
        "ResetSuccessful(address,address)"(rateFeedID?: PromiseOrValue<string> | null, breaker?: PromiseOrValue<string> | null): ResetSuccessfulEventFilter;
        ResetSuccessful(rateFeedID?: PromiseOrValue<string> | null, breaker?: PromiseOrValue<string> | null): ResetSuccessfulEventFilter;
        "SortedOraclesUpdated(address)"(newSortedOracles?: PromiseOrValue<string> | null): SortedOraclesUpdatedEventFilter;
        SortedOraclesUpdated(newSortedOracles?: PromiseOrValue<string> | null): SortedOraclesUpdatedEventFilter;
        "TradingModeUpdated(address,uint256)"(rateFeedID?: PromiseOrValue<string> | null, tradingMode?: null): TradingModeUpdatedEventFilter;
        TradingModeUpdated(rateFeedID?: PromiseOrValue<string> | null, tradingMode?: null): TradingModeUpdatedEventFilter;
    };
    estimateGas: {
        addBreaker(breaker: PromiseOrValue<string>, tradingMode: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        addRateFeed(rateFeedID: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        addRateFeeds(newRateFeedIDs: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        breakerTradingMode(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        breakers(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        checkAndSetBreakers(rateFeedID: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        getBreakers(overrides?: CallOverrides): Promise<BigNumber>;
        getRateFeedTradingMode(rateFeedID: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        getRateFeeds(overrides?: CallOverrides): Promise<BigNumber>;
        isBreaker(breaker: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        isBreakerEnabled(breaker: PromiseOrValue<string>, rateFeedID: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        isOwner(overrides?: CallOverrides): Promise<BigNumber>;
        owner(overrides?: CallOverrides): Promise<BigNumber>;
        rateFeedBreakerStatus(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        rateFeedDependencies(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        rateFeedIDs(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        rateFeedStatus(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        rateFeedTradingMode(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        removeBreaker(breaker: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        removeRateFeed(rateFeedID: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        renounceOwnership(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setRateFeedDependencies(rateFeedID: PromiseOrValue<string>, dependencies: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setRateFeedTradingMode(rateFeedID: PromiseOrValue<string>, tradingMode: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setSortedOracles(_sortedOracles: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        sortedOracles(overrides?: CallOverrides): Promise<BigNumber>;
        toggleBreaker(breakerAddress: PromiseOrValue<string>, rateFeedID: PromiseOrValue<string>, enable: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        transferOwnership(newOwner: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
    };
    populateTransaction: {
        addBreaker(breaker: PromiseOrValue<string>, tradingMode: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        addRateFeed(rateFeedID: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        addRateFeeds(newRateFeedIDs: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        breakerTradingMode(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        breakers(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        checkAndSetBreakers(rateFeedID: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        getBreakers(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getRateFeedTradingMode(rateFeedID: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getRateFeeds(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        isBreaker(breaker: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        isBreakerEnabled(breaker: PromiseOrValue<string>, rateFeedID: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        isOwner(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        owner(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        rateFeedBreakerStatus(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        rateFeedDependencies(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        rateFeedIDs(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        rateFeedStatus(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        rateFeedTradingMode(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        removeBreaker(breaker: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        removeRateFeed(rateFeedID: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        renounceOwnership(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setRateFeedDependencies(rateFeedID: PromiseOrValue<string>, dependencies: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setRateFeedTradingMode(rateFeedID: PromiseOrValue<string>, tradingMode: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setSortedOracles(_sortedOracles: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        sortedOracles(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        toggleBreaker(breakerAddress: PromiseOrValue<string>, rateFeedID: PromiseOrValue<string>, enable: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        transferOwnership(newOwner: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
    };
}
