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 MockUniswapOracleInterface extends utils.Interface {
    functions: {
        "MIN_T()": FunctionFragment;
        "getBlockTimestamp()": FunctionFragment;
        "getPair(address)": FunctionFragment;
        "getResult(address)": FunctionFragment;
        "initialize(address)": FunctionFragment;
        "mockPrice(address)": FunctionFragment;
        "setPrice(address,uint224)": FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: "MIN_T" | "getBlockTimestamp" | "getPair" | "getResult" | "initialize" | "mockPrice" | "setPrice"): FunctionFragment;
    encodeFunctionData(functionFragment: "MIN_T", values?: undefined): string;
    encodeFunctionData(functionFragment: "getBlockTimestamp", values?: undefined): string;
    encodeFunctionData(functionFragment: "getPair", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "getResult", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "initialize", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "mockPrice", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "setPrice", values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    decodeFunctionResult(functionFragment: "MIN_T", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getBlockTimestamp", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getPair", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getResult", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "mockPrice", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setPrice", data: BytesLike): Result;
    events: {
        "PriceUpdate(address,uint256,uint32,bool)": EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: "PriceUpdate"): EventFragment;
}
export interface PriceUpdateEventObject {
    pair: string;
    priceCumulative: BigNumber;
    blockTimestamp: number;
    lastIsA: boolean;
}
export type PriceUpdateEvent = TypedEvent<[
    string,
    BigNumber,
    number,
    boolean
], PriceUpdateEventObject>;
export type PriceUpdateEventFilter = TypedEventFilter<PriceUpdateEvent>;
export interface MockUniswapOracle extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: MockUniswapOracleInterface;
    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: {
        MIN_T(overrides?: CallOverrides): Promise<[number]>;
        getBlockTimestamp(overrides?: CallOverrides): Promise<[number]>;
        getPair(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber,
            number,
            number,
            boolean,
            boolean
        ] & {
            priceCumulativeA: BigNumber;
            priceCumulativeB: BigNumber;
            updateA: number;
            updateB: number;
            lastIsA: boolean;
            initialized: boolean;
        }>;
        getResult(uniswapV2Pair: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber, number] & {
            price: BigNumber;
            T: number;
        }>;
        initialize(uniswapV2Pair: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        mockPrice(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber]>;
        setPrice(uniswapV2Pair: PromiseOrValue<string>, price: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
    };
    MIN_T(overrides?: CallOverrides): Promise<number>;
    getBlockTimestamp(overrides?: CallOverrides): Promise<number>;
    getPair(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
        BigNumber,
        BigNumber,
        number,
        number,
        boolean,
        boolean
    ] & {
        priceCumulativeA: BigNumber;
        priceCumulativeB: BigNumber;
        updateA: number;
        updateB: number;
        lastIsA: boolean;
        initialized: boolean;
    }>;
    getResult(uniswapV2Pair: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber, number] & {
        price: BigNumber;
        T: number;
    }>;
    initialize(uniswapV2Pair: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    mockPrice(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    setPrice(uniswapV2Pair: PromiseOrValue<string>, price: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    callStatic: {
        MIN_T(overrides?: CallOverrides): Promise<number>;
        getBlockTimestamp(overrides?: CallOverrides): Promise<number>;
        getPair(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber,
            number,
            number,
            boolean,
            boolean
        ] & {
            priceCumulativeA: BigNumber;
            priceCumulativeB: BigNumber;
            updateA: number;
            updateB: number;
            lastIsA: boolean;
            initialized: boolean;
        }>;
        getResult(uniswapV2Pair: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber, number] & {
            price: BigNumber;
            T: number;
        }>;
        initialize(uniswapV2Pair: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        mockPrice(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        setPrice(uniswapV2Pair: PromiseOrValue<string>, price: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
    };
    filters: {
        "PriceUpdate(address,uint256,uint32,bool)"(pair?: PromiseOrValue<string> | null, priceCumulative?: null, blockTimestamp?: null, lastIsA?: null): PriceUpdateEventFilter;
        PriceUpdate(pair?: PromiseOrValue<string> | null, priceCumulative?: null, blockTimestamp?: null, lastIsA?: null): PriceUpdateEventFilter;
    };
    estimateGas: {
        MIN_T(overrides?: CallOverrides): Promise<BigNumber>;
        getBlockTimestamp(overrides?: CallOverrides): Promise<BigNumber>;
        getPair(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        getResult(uniswapV2Pair: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        initialize(uniswapV2Pair: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        mockPrice(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        setPrice(uniswapV2Pair: PromiseOrValue<string>, price: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
    };
    populateTransaction: {
        MIN_T(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getBlockTimestamp(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getPair(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getResult(uniswapV2Pair: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        initialize(uniswapV2Pair: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        mockPrice(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        setPrice(uniswapV2Pair: PromiseOrValue<string>, price: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
    };
}
