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 DolomiteAmmFactoryInterface extends utils.Interface {
    functions: {
        'allPairs(uint256)': FunctionFragment;
        'allPairsLength()': FunctionFragment;
        'createPair(address,address)': FunctionFragment;
        'dolomiteMargin()': FunctionFragment;
        'feeTo()': FunctionFragment;
        'feeToSetter()': FunctionFragment;
        'getPair(address,address)': FunctionFragment;
        'getPairInitCode()': FunctionFragment;
        'getPairInitCodeHash()': FunctionFragment;
        'isPairCreated(address)': FunctionFragment;
        'setFeeTo(address)': FunctionFragment;
        'setFeeToSetter(address)': FunctionFragment;
        'transferProxy()': FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: 'allPairs' | 'allPairsLength' | 'createPair' | 'dolomiteMargin' | 'feeTo' | 'feeToSetter' | 'getPair' | 'getPairInitCode' | 'getPairInitCodeHash' | 'isPairCreated' | 'setFeeTo' | 'setFeeToSetter' | 'transferProxy'): FunctionFragment;
    encodeFunctionData(functionFragment: 'allPairs', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'allPairsLength', values?: undefined): string;
    encodeFunctionData(functionFragment: 'createPair', values: [PromiseOrValue<string>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'dolomiteMargin', values?: undefined): string;
    encodeFunctionData(functionFragment: 'feeTo', values?: undefined): string;
    encodeFunctionData(functionFragment: 'feeToSetter', values?: undefined): string;
    encodeFunctionData(functionFragment: 'getPair', values: [PromiseOrValue<string>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'getPairInitCode', values?: undefined): string;
    encodeFunctionData(functionFragment: 'getPairInitCodeHash', values?: undefined): string;
    encodeFunctionData(functionFragment: 'isPairCreated', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'setFeeTo', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'setFeeToSetter', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'transferProxy', values?: undefined): string;
    decodeFunctionResult(functionFragment: 'allPairs', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'allPairsLength', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'createPair', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'dolomiteMargin', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'feeTo', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'feeToSetter', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getPair', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getPairInitCode', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getPairInitCodeHash', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'isPairCreated', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setFeeTo', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setFeeToSetter', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'transferProxy', data: BytesLike): Result;
    events: {
        'PairCreated(address,address,address,uint256)': EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: 'PairCreated'): EventFragment;
}
export interface PairCreatedEventObject {
    token0: string;
    token1: string;
    pair: string;
    arg3: BigNumber;
}
export declare type PairCreatedEvent = TypedEvent<[string, string, string, BigNumber], PairCreatedEventObject>;
export declare type PairCreatedEventFilter = TypedEventFilter<PairCreatedEvent>;
export interface DolomiteAmmFactory extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: DolomiteAmmFactoryInterface;
    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: {
        allPairs(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[string]>;
        allPairsLength(overrides?: CallOverrides): Promise<[BigNumber]>;
        createPair(tokenA: PromiseOrValue<string>, tokenB: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        dolomiteMargin(overrides?: CallOverrides): Promise<[string]>;
        feeTo(overrides?: CallOverrides): Promise<[string]>;
        feeToSetter(overrides?: CallOverrides): Promise<[string]>;
        getPair(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[string]>;
        getPairInitCode(overrides?: CallOverrides): Promise<[string]>;
        getPairInitCodeHash(overrides?: CallOverrides): Promise<[string]>;
        isPairCreated(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[boolean]>;
        setFeeTo(_feeTo: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setFeeToSetter(_feeToSetter: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        transferProxy(overrides?: CallOverrides): Promise<[string]>;
    };
    allPairs(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<string>;
    allPairsLength(overrides?: CallOverrides): Promise<BigNumber>;
    createPair(tokenA: PromiseOrValue<string>, tokenB: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    dolomiteMargin(overrides?: CallOverrides): Promise<string>;
    feeTo(overrides?: CallOverrides): Promise<string>;
    feeToSetter(overrides?: CallOverrides): Promise<string>;
    getPair(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<string>, overrides?: CallOverrides): Promise<string>;
    getPairInitCode(overrides?: CallOverrides): Promise<string>;
    getPairInitCodeHash(overrides?: CallOverrides): Promise<string>;
    isPairCreated(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
    setFeeTo(_feeTo: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setFeeToSetter(_feeToSetter: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    transferProxy(overrides?: CallOverrides): Promise<string>;
    callStatic: {
        allPairs(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<string>;
        allPairsLength(overrides?: CallOverrides): Promise<BigNumber>;
        createPair(tokenA: PromiseOrValue<string>, tokenB: PromiseOrValue<string>, overrides?: CallOverrides): Promise<string>;
        dolomiteMargin(overrides?: CallOverrides): Promise<string>;
        feeTo(overrides?: CallOverrides): Promise<string>;
        feeToSetter(overrides?: CallOverrides): Promise<string>;
        getPair(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<string>, overrides?: CallOverrides): Promise<string>;
        getPairInitCode(overrides?: CallOverrides): Promise<string>;
        getPairInitCodeHash(overrides?: CallOverrides): Promise<string>;
        isPairCreated(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
        setFeeTo(_feeTo: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        setFeeToSetter(_feeToSetter: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        transferProxy(overrides?: CallOverrides): Promise<string>;
    };
    filters: {
        'PairCreated(address,address,address,uint256)'(token0?: PromiseOrValue<string> | null, token1?: PromiseOrValue<string> | null, pair?: null, arg3?: null): PairCreatedEventFilter;
        PairCreated(token0?: PromiseOrValue<string> | null, token1?: PromiseOrValue<string> | null, pair?: null, arg3?: null): PairCreatedEventFilter;
    };
    estimateGas: {
        allPairs(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        allPairsLength(overrides?: CallOverrides): Promise<BigNumber>;
        createPair(tokenA: PromiseOrValue<string>, tokenB: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        dolomiteMargin(overrides?: CallOverrides): Promise<BigNumber>;
        feeTo(overrides?: CallOverrides): Promise<BigNumber>;
        feeToSetter(overrides?: CallOverrides): Promise<BigNumber>;
        getPair(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        getPairInitCode(overrides?: CallOverrides): Promise<BigNumber>;
        getPairInitCodeHash(overrides?: CallOverrides): Promise<BigNumber>;
        isPairCreated(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        setFeeTo(_feeTo: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setFeeToSetter(_feeToSetter: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        transferProxy(overrides?: CallOverrides): Promise<BigNumber>;
    };
    populateTransaction: {
        allPairs(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        allPairsLength(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        createPair(tokenA: PromiseOrValue<string>, tokenB: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        dolomiteMargin(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        feeTo(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        feeToSetter(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getPair(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getPairInitCode(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getPairInitCodeHash(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        isPairCreated(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        setFeeTo(_feeTo: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setFeeToSetter(_feeToSetter: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        transferProxy(overrides?: CallOverrides): Promise<PopulatedTransaction>;
    };
}
