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 IAlgebraFactoryInterface extends utils.Interface {
    functions: {
        "createPool(address,address)": FunctionFragment;
        "defaultCommunityFee()": FunctionFragment;
        "farmingAddress()": FunctionFragment;
        "owner()": FunctionFragment;
        "poolByPair(address,address)": FunctionFragment;
        "poolDeployer()": FunctionFragment;
        "setBaseFeeConfiguration(uint16,uint16,uint32,uint32,uint16,uint16,uint32,uint16,uint16)": FunctionFragment;
        "setDefaultCommunityFee(uint8)": FunctionFragment;
        "setFarmingAddress(address)": FunctionFragment;
        "setOwner(address)": FunctionFragment;
        "setVaultAddress(address)": FunctionFragment;
        "vaultAddress()": FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: "createPool" | "defaultCommunityFee" | "farmingAddress" | "owner" | "poolByPair" | "poolDeployer" | "setBaseFeeConfiguration" | "setDefaultCommunityFee" | "setFarmingAddress" | "setOwner" | "setVaultAddress" | "vaultAddress"): FunctionFragment;
    encodeFunctionData(functionFragment: "createPool", values: [PromiseOrValue<string>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "defaultCommunityFee", values?: undefined): string;
    encodeFunctionData(functionFragment: "farmingAddress", values?: undefined): string;
    encodeFunctionData(functionFragment: "owner", values?: undefined): string;
    encodeFunctionData(functionFragment: "poolByPair", values: [PromiseOrValue<string>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "poolDeployer", values?: undefined): string;
    encodeFunctionData(functionFragment: "setBaseFeeConfiguration", values: [
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>
    ]): string;
    encodeFunctionData(functionFragment: "setDefaultCommunityFee", values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "setFarmingAddress", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "setOwner", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "setVaultAddress", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "vaultAddress", values?: undefined): string;
    decodeFunctionResult(functionFragment: "createPool", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "defaultCommunityFee", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "farmingAddress", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "poolByPair", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "poolDeployer", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setBaseFeeConfiguration", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setDefaultCommunityFee", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setFarmingAddress", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setOwner", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setVaultAddress", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "vaultAddress", data: BytesLike): Result;
    events: {
        "DefaultCommunityFee(uint8)": EventFragment;
        "FarmingAddress(address)": EventFragment;
        "FeeConfiguration(uint16,uint16,uint32,uint32,uint16,uint16,uint32,uint16,uint16)": EventFragment;
        "Owner(address)": EventFragment;
        "Pool(address,address,address)": EventFragment;
        "VaultAddress(address)": EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: "DefaultCommunityFee"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "FarmingAddress"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "FeeConfiguration"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Owner"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Pool"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "VaultAddress"): EventFragment;
}
export interface DefaultCommunityFeeEventObject {
    newDefaultCommunityFee: number;
}
export type DefaultCommunityFeeEvent = TypedEvent<[
    number
], DefaultCommunityFeeEventObject>;
export type DefaultCommunityFeeEventFilter = TypedEventFilter<DefaultCommunityFeeEvent>;
export interface FarmingAddressEventObject {
    newFarmingAddress: string;
}
export type FarmingAddressEvent = TypedEvent<[
    string
], FarmingAddressEventObject>;
export type FarmingAddressEventFilter = TypedEventFilter<FarmingAddressEvent>;
export interface FeeConfigurationEventObject {
    alpha1: number;
    alpha2: number;
    beta1: number;
    beta2: number;
    gamma1: number;
    gamma2: number;
    volumeBeta: number;
    volumeGamma: number;
    baseFee: number;
}
export type FeeConfigurationEvent = TypedEvent<[
    number,
    number,
    number,
    number,
    number,
    number,
    number,
    number,
    number
], FeeConfigurationEventObject>;
export type FeeConfigurationEventFilter = TypedEventFilter<FeeConfigurationEvent>;
export interface OwnerEventObject {
    newOwner: string;
}
export type OwnerEvent = TypedEvent<[string], OwnerEventObject>;
export type OwnerEventFilter = TypedEventFilter<OwnerEvent>;
export interface PoolEventObject {
    token0: string;
    token1: string;
    pool: string;
}
export type PoolEvent = TypedEvent<[string, string, string], PoolEventObject>;
export type PoolEventFilter = TypedEventFilter<PoolEvent>;
export interface VaultAddressEventObject {
    newVaultAddress: string;
}
export type VaultAddressEvent = TypedEvent<[string], VaultAddressEventObject>;
export type VaultAddressEventFilter = TypedEventFilter<VaultAddressEvent>;
export interface IAlgebraFactory extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: IAlgebraFactoryInterface;
    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: {
        createPool(tokenA: PromiseOrValue<string>, tokenB: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        defaultCommunityFee(overrides?: CallOverrides): Promise<[number]>;
        farmingAddress(overrides?: CallOverrides): Promise<[string]>;
        owner(overrides?: CallOverrides): Promise<[string]>;
        poolByPair(tokenA: PromiseOrValue<string>, tokenB: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[string] & {
            pool: string;
        }>;
        poolDeployer(overrides?: CallOverrides): Promise<[string]>;
        setBaseFeeConfiguration(alpha1: PromiseOrValue<BigNumberish>, alpha2: PromiseOrValue<BigNumberish>, beta1: PromiseOrValue<BigNumberish>, beta2: PromiseOrValue<BigNumberish>, gamma1: PromiseOrValue<BigNumberish>, gamma2: PromiseOrValue<BigNumberish>, volumeBeta: PromiseOrValue<BigNumberish>, volumeGamma: PromiseOrValue<BigNumberish>, baseFee: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setDefaultCommunityFee(newDefaultCommunityFee: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setFarmingAddress(_farmingAddress: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setOwner(_owner: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setVaultAddress(_vaultAddress: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        vaultAddress(overrides?: CallOverrides): Promise<[string]>;
    };
    createPool(tokenA: PromiseOrValue<string>, tokenB: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    defaultCommunityFee(overrides?: CallOverrides): Promise<number>;
    farmingAddress(overrides?: CallOverrides): Promise<string>;
    owner(overrides?: CallOverrides): Promise<string>;
    poolByPair(tokenA: PromiseOrValue<string>, tokenB: PromiseOrValue<string>, overrides?: CallOverrides): Promise<string>;
    poolDeployer(overrides?: CallOverrides): Promise<string>;
    setBaseFeeConfiguration(alpha1: PromiseOrValue<BigNumberish>, alpha2: PromiseOrValue<BigNumberish>, beta1: PromiseOrValue<BigNumberish>, beta2: PromiseOrValue<BigNumberish>, gamma1: PromiseOrValue<BigNumberish>, gamma2: PromiseOrValue<BigNumberish>, volumeBeta: PromiseOrValue<BigNumberish>, volumeGamma: PromiseOrValue<BigNumberish>, baseFee: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setDefaultCommunityFee(newDefaultCommunityFee: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setFarmingAddress(_farmingAddress: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setOwner(_owner: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setVaultAddress(_vaultAddress: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    vaultAddress(overrides?: CallOverrides): Promise<string>;
    callStatic: {
        createPool(tokenA: PromiseOrValue<string>, tokenB: PromiseOrValue<string>, overrides?: CallOverrides): Promise<string>;
        defaultCommunityFee(overrides?: CallOverrides): Promise<number>;
        farmingAddress(overrides?: CallOverrides): Promise<string>;
        owner(overrides?: CallOverrides): Promise<string>;
        poolByPair(tokenA: PromiseOrValue<string>, tokenB: PromiseOrValue<string>, overrides?: CallOverrides): Promise<string>;
        poolDeployer(overrides?: CallOverrides): Promise<string>;
        setBaseFeeConfiguration(alpha1: PromiseOrValue<BigNumberish>, alpha2: PromiseOrValue<BigNumberish>, beta1: PromiseOrValue<BigNumberish>, beta2: PromiseOrValue<BigNumberish>, gamma1: PromiseOrValue<BigNumberish>, gamma2: PromiseOrValue<BigNumberish>, volumeBeta: PromiseOrValue<BigNumberish>, volumeGamma: PromiseOrValue<BigNumberish>, baseFee: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        setDefaultCommunityFee(newDefaultCommunityFee: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        setFarmingAddress(_farmingAddress: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        setOwner(_owner: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        setVaultAddress(_vaultAddress: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        vaultAddress(overrides?: CallOverrides): Promise<string>;
    };
    filters: {
        "DefaultCommunityFee(uint8)"(newDefaultCommunityFee?: null): DefaultCommunityFeeEventFilter;
        DefaultCommunityFee(newDefaultCommunityFee?: null): DefaultCommunityFeeEventFilter;
        "FarmingAddress(address)"(newFarmingAddress?: PromiseOrValue<string> | null): FarmingAddressEventFilter;
        FarmingAddress(newFarmingAddress?: PromiseOrValue<string> | null): FarmingAddressEventFilter;
        "FeeConfiguration(uint16,uint16,uint32,uint32,uint16,uint16,uint32,uint16,uint16)"(alpha1?: null, alpha2?: null, beta1?: null, beta2?: null, gamma1?: null, gamma2?: null, volumeBeta?: null, volumeGamma?: null, baseFee?: null): FeeConfigurationEventFilter;
        FeeConfiguration(alpha1?: null, alpha2?: null, beta1?: null, beta2?: null, gamma1?: null, gamma2?: null, volumeBeta?: null, volumeGamma?: null, baseFee?: null): FeeConfigurationEventFilter;
        "Owner(address)"(newOwner?: PromiseOrValue<string> | null): OwnerEventFilter;
        Owner(newOwner?: PromiseOrValue<string> | null): OwnerEventFilter;
        "Pool(address,address,address)"(token0?: PromiseOrValue<string> | null, token1?: PromiseOrValue<string> | null, pool?: null): PoolEventFilter;
        Pool(token0?: PromiseOrValue<string> | null, token1?: PromiseOrValue<string> | null, pool?: null): PoolEventFilter;
        "VaultAddress(address)"(newVaultAddress?: PromiseOrValue<string> | null): VaultAddressEventFilter;
        VaultAddress(newVaultAddress?: PromiseOrValue<string> | null): VaultAddressEventFilter;
    };
    estimateGas: {
        createPool(tokenA: PromiseOrValue<string>, tokenB: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        defaultCommunityFee(overrides?: CallOverrides): Promise<BigNumber>;
        farmingAddress(overrides?: CallOverrides): Promise<BigNumber>;
        owner(overrides?: CallOverrides): Promise<BigNumber>;
        poolByPair(tokenA: PromiseOrValue<string>, tokenB: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        poolDeployer(overrides?: CallOverrides): Promise<BigNumber>;
        setBaseFeeConfiguration(alpha1: PromiseOrValue<BigNumberish>, alpha2: PromiseOrValue<BigNumberish>, beta1: PromiseOrValue<BigNumberish>, beta2: PromiseOrValue<BigNumberish>, gamma1: PromiseOrValue<BigNumberish>, gamma2: PromiseOrValue<BigNumberish>, volumeBeta: PromiseOrValue<BigNumberish>, volumeGamma: PromiseOrValue<BigNumberish>, baseFee: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setDefaultCommunityFee(newDefaultCommunityFee: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setFarmingAddress(_farmingAddress: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setOwner(_owner: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setVaultAddress(_vaultAddress: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        vaultAddress(overrides?: CallOverrides): Promise<BigNumber>;
    };
    populateTransaction: {
        createPool(tokenA: PromiseOrValue<string>, tokenB: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        defaultCommunityFee(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        farmingAddress(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        owner(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        poolByPair(tokenA: PromiseOrValue<string>, tokenB: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        poolDeployer(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        setBaseFeeConfiguration(alpha1: PromiseOrValue<BigNumberish>, alpha2: PromiseOrValue<BigNumberish>, beta1: PromiseOrValue<BigNumberish>, beta2: PromiseOrValue<BigNumberish>, gamma1: PromiseOrValue<BigNumberish>, gamma2: PromiseOrValue<BigNumberish>, volumeBeta: PromiseOrValue<BigNumberish>, volumeGamma: PromiseOrValue<BigNumberish>, baseFee: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setDefaultCommunityFee(newDefaultCommunityFee: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setFarmingAddress(_farmingAddress: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setOwner(_owner: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setVaultAddress(_vaultAddress: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        vaultAddress(overrides?: CallOverrides): Promise<PopulatedTransaction>;
    };
}
