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 ScreamOracleInterface extends utils.Interface {
    functions: {
        "QUOTE_SYMBOL()": FunctionFragment;
        "_setAdmin(address)": FunctionFragment;
        "_setAggregators(address[],address[])": FunctionFragment;
        "_setMaxPriceDiff(uint256)": FunctionFragment;
        "_setUnderlyingSymbols(address[],string[])": FunctionFragment;
        "admin()": FunctionFragment;
        "aggregators(address)": FunctionFragment;
        "getUnderlyingPrice(address)": FunctionFragment;
        "isPriceOracle()": FunctionFragment;
        "maxPriceDiff()": FunctionFragment;
        "ref()": FunctionFragment;
        "underlyingSymbols(address)": FunctionFragment;
        "v1PriceOracle()": FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: "QUOTE_SYMBOL" | "_setAdmin" | "_setAggregators" | "_setMaxPriceDiff" | "_setUnderlyingSymbols" | "admin" | "aggregators" | "getUnderlyingPrice" | "isPriceOracle" | "maxPriceDiff" | "ref" | "underlyingSymbols" | "v1PriceOracle"): FunctionFragment;
    encodeFunctionData(functionFragment: "QUOTE_SYMBOL", values?: undefined): string;
    encodeFunctionData(functionFragment: "_setAdmin", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "_setAggregators", values: [PromiseOrValue<string>[], PromiseOrValue<string>[]]): string;
    encodeFunctionData(functionFragment: "_setMaxPriceDiff", values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "_setUnderlyingSymbols", values: [PromiseOrValue<string>[], PromiseOrValue<string>[]]): string;
    encodeFunctionData(functionFragment: "admin", values?: undefined): string;
    encodeFunctionData(functionFragment: "aggregators", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "getUnderlyingPrice", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "isPriceOracle", values?: undefined): string;
    encodeFunctionData(functionFragment: "maxPriceDiff", values?: undefined): string;
    encodeFunctionData(functionFragment: "ref", values?: undefined): string;
    encodeFunctionData(functionFragment: "underlyingSymbols", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "v1PriceOracle", values?: undefined): string;
    decodeFunctionResult(functionFragment: "QUOTE_SYMBOL", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "_setAdmin", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "_setAggregators", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "_setMaxPriceDiff", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "_setUnderlyingSymbols", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "admin", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "aggregators", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getUnderlyingPrice", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "isPriceOracle", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "maxPriceDiff", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "ref", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "underlyingSymbols", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "v1PriceOracle", data: BytesLike): Result;
    events: {
        "AdminUpdated(address)": EventFragment;
        "AggregatorUpdated(address,address)": EventFragment;
        "MaxPriceDiffUpdated(uint256)": EventFragment;
        "UnderlyingSymbolUpdated(address,string)": EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: "AdminUpdated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "AggregatorUpdated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "MaxPriceDiffUpdated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "UnderlyingSymbolUpdated"): EventFragment;
}
export interface AdminUpdatedEventObject {
    admin: string;
}
export type AdminUpdatedEvent = TypedEvent<[string], AdminUpdatedEventObject>;
export type AdminUpdatedEventFilter = TypedEventFilter<AdminUpdatedEvent>;
export interface AggregatorUpdatedEventObject {
    cTokenAddress: string;
    source: string;
}
export type AggregatorUpdatedEvent = TypedEvent<[
    string,
    string
], AggregatorUpdatedEventObject>;
export type AggregatorUpdatedEventFilter = TypedEventFilter<AggregatorUpdatedEvent>;
export interface MaxPriceDiffUpdatedEventObject {
    maxDiff: BigNumber;
}
export type MaxPriceDiffUpdatedEvent = TypedEvent<[
    BigNumber
], MaxPriceDiffUpdatedEventObject>;
export type MaxPriceDiffUpdatedEventFilter = TypedEventFilter<MaxPriceDiffUpdatedEvent>;
export interface UnderlyingSymbolUpdatedEventObject {
    cTokenAddress: string;
    symbol: string;
}
export type UnderlyingSymbolUpdatedEvent = TypedEvent<[
    string,
    string
], UnderlyingSymbolUpdatedEventObject>;
export type UnderlyingSymbolUpdatedEventFilter = TypedEventFilter<UnderlyingSymbolUpdatedEvent>;
export interface ScreamOracle extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: ScreamOracleInterface;
    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: {
        QUOTE_SYMBOL(overrides?: CallOverrides): Promise<[string]>;
        _setAdmin(_admin: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        _setAggregators(cTokenAddresses: PromiseOrValue<string>[], sources: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        _setMaxPriceDiff(_maxPriceDiff: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        _setUnderlyingSymbols(cTokenAddresses: PromiseOrValue<string>[], symbols: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        admin(overrides?: CallOverrides): Promise<[string]>;
        aggregators(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[string]>;
        getUnderlyingPrice(cToken: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber]>;
        isPriceOracle(overrides?: CallOverrides): Promise<[boolean]>;
        maxPriceDiff(overrides?: CallOverrides): Promise<[BigNumber]>;
        ref(overrides?: CallOverrides): Promise<[string]>;
        underlyingSymbols(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[string]>;
        v1PriceOracle(overrides?: CallOverrides): Promise<[string]>;
    };
    QUOTE_SYMBOL(overrides?: CallOverrides): Promise<string>;
    _setAdmin(_admin: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    _setAggregators(cTokenAddresses: PromiseOrValue<string>[], sources: PromiseOrValue<string>[], overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    _setMaxPriceDiff(_maxPriceDiff: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    _setUnderlyingSymbols(cTokenAddresses: PromiseOrValue<string>[], symbols: PromiseOrValue<string>[], overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    admin(overrides?: CallOverrides): Promise<string>;
    aggregators(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<string>;
    getUnderlyingPrice(cToken: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    isPriceOracle(overrides?: CallOverrides): Promise<boolean>;
    maxPriceDiff(overrides?: CallOverrides): Promise<BigNumber>;
    ref(overrides?: CallOverrides): Promise<string>;
    underlyingSymbols(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<string>;
    v1PriceOracle(overrides?: CallOverrides): Promise<string>;
    callStatic: {
        QUOTE_SYMBOL(overrides?: CallOverrides): Promise<string>;
        _setAdmin(_admin: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        _setAggregators(cTokenAddresses: PromiseOrValue<string>[], sources: PromiseOrValue<string>[], overrides?: CallOverrides): Promise<void>;
        _setMaxPriceDiff(_maxPriceDiff: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        _setUnderlyingSymbols(cTokenAddresses: PromiseOrValue<string>[], symbols: PromiseOrValue<string>[], overrides?: CallOverrides): Promise<void>;
        admin(overrides?: CallOverrides): Promise<string>;
        aggregators(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<string>;
        getUnderlyingPrice(cToken: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        isPriceOracle(overrides?: CallOverrides): Promise<boolean>;
        maxPriceDiff(overrides?: CallOverrides): Promise<BigNumber>;
        ref(overrides?: CallOverrides): Promise<string>;
        underlyingSymbols(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<string>;
        v1PriceOracle(overrides?: CallOverrides): Promise<string>;
    };
    filters: {
        "AdminUpdated(address)"(admin?: null): AdminUpdatedEventFilter;
        AdminUpdated(admin?: null): AdminUpdatedEventFilter;
        "AggregatorUpdated(address,address)"(cTokenAddress?: null, source?: null): AggregatorUpdatedEventFilter;
        AggregatorUpdated(cTokenAddress?: null, source?: null): AggregatorUpdatedEventFilter;
        "MaxPriceDiffUpdated(uint256)"(maxDiff?: null): MaxPriceDiffUpdatedEventFilter;
        MaxPriceDiffUpdated(maxDiff?: null): MaxPriceDiffUpdatedEventFilter;
        "UnderlyingSymbolUpdated(address,string)"(cTokenAddress?: null, symbol?: null): UnderlyingSymbolUpdatedEventFilter;
        UnderlyingSymbolUpdated(cTokenAddress?: null, symbol?: null): UnderlyingSymbolUpdatedEventFilter;
    };
    estimateGas: {
        QUOTE_SYMBOL(overrides?: CallOverrides): Promise<BigNumber>;
        _setAdmin(_admin: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        _setAggregators(cTokenAddresses: PromiseOrValue<string>[], sources: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        _setMaxPriceDiff(_maxPriceDiff: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        _setUnderlyingSymbols(cTokenAddresses: PromiseOrValue<string>[], symbols: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        admin(overrides?: CallOverrides): Promise<BigNumber>;
        aggregators(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        getUnderlyingPrice(cToken: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        isPriceOracle(overrides?: CallOverrides): Promise<BigNumber>;
        maxPriceDiff(overrides?: CallOverrides): Promise<BigNumber>;
        ref(overrides?: CallOverrides): Promise<BigNumber>;
        underlyingSymbols(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        v1PriceOracle(overrides?: CallOverrides): Promise<BigNumber>;
    };
    populateTransaction: {
        QUOTE_SYMBOL(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        _setAdmin(_admin: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        _setAggregators(cTokenAddresses: PromiseOrValue<string>[], sources: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        _setMaxPriceDiff(_maxPriceDiff: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        _setUnderlyingSymbols(cTokenAddresses: PromiseOrValue<string>[], symbols: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        admin(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        aggregators(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getUnderlyingPrice(cToken: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        isPriceOracle(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        maxPriceDiff(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        ref(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        underlyingSymbols(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        v1PriceOracle(overrides?: CallOverrides): Promise<PopulatedTransaction>;
    };
}
