import type { BaseContract, BigNumber, BigNumberish, Signer, utils } from "ethers";
import type { EventFragment } from "@ethersproject/abi";
import type { Listener, Provider } from "@ethersproject/providers";
import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent, PromiseOrValue } from "../../../../../../../../common";
export interface IAlgebraPoolEventsInterface extends utils.Interface {
    functions: {};
    events: {
        "Burn(address,int24,int24,uint128,uint256,uint256)": EventFragment;
        "Collect(address,address,int24,int24,uint128,uint128)": EventFragment;
        "CommunityFee(uint8,uint8)": EventFragment;
        "Fee(uint16)": EventFragment;
        "Flash(address,address,uint256,uint256,uint256,uint256)": EventFragment;
        "Incentive(address)": EventFragment;
        "Initialize(uint160,int24)": EventFragment;
        "LiquidityCooldown(uint32)": EventFragment;
        "Mint(address,address,int24,int24,uint128,uint256,uint256)": EventFragment;
        "Swap(address,address,int256,int256,uint160,uint128,int24)": EventFragment;
        "TickSpacing(int24)": EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: "Burn"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Collect"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "CommunityFee"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Fee"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Flash"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Incentive"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Initialize"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "LiquidityCooldown"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Mint"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Swap"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "TickSpacing"): EventFragment;
}
export interface BurnEventObject {
    owner: string;
    bottomTick: number;
    topTick: number;
    liquidityAmount: BigNumber;
    amount0: BigNumber;
    amount1: BigNumber;
}
export type BurnEvent = TypedEvent<[
    string,
    number,
    number,
    BigNumber,
    BigNumber,
    BigNumber
], BurnEventObject>;
export type BurnEventFilter = TypedEventFilter<BurnEvent>;
export interface CollectEventObject {
    owner: string;
    recipient: string;
    bottomTick: number;
    topTick: number;
    amount0: BigNumber;
    amount1: BigNumber;
}
export type CollectEvent = TypedEvent<[
    string,
    string,
    number,
    number,
    BigNumber,
    BigNumber
], CollectEventObject>;
export type CollectEventFilter = TypedEventFilter<CollectEvent>;
export interface CommunityFeeEventObject {
    communityFee0New: number;
    communityFee1New: number;
}
export type CommunityFeeEvent = TypedEvent<[
    number,
    number
], CommunityFeeEventObject>;
export type CommunityFeeEventFilter = TypedEventFilter<CommunityFeeEvent>;
export interface FeeEventObject {
    fee: number;
}
export type FeeEvent = TypedEvent<[number], FeeEventObject>;
export type FeeEventFilter = TypedEventFilter<FeeEvent>;
export interface FlashEventObject {
    sender: string;
    recipient: string;
    amount0: BigNumber;
    amount1: BigNumber;
    paid0: BigNumber;
    paid1: BigNumber;
}
export type FlashEvent = TypedEvent<[
    string,
    string,
    BigNumber,
    BigNumber,
    BigNumber,
    BigNumber
], FlashEventObject>;
export type FlashEventFilter = TypedEventFilter<FlashEvent>;
export interface IncentiveEventObject {
    virtualPoolAddress: string;
}
export type IncentiveEvent = TypedEvent<[string], IncentiveEventObject>;
export type IncentiveEventFilter = TypedEventFilter<IncentiveEvent>;
export interface InitializeEventObject {
    price: BigNumber;
    tick: number;
}
export type InitializeEvent = TypedEvent<[
    BigNumber,
    number
], InitializeEventObject>;
export type InitializeEventFilter = TypedEventFilter<InitializeEvent>;
export interface LiquidityCooldownEventObject {
    liquidityCooldown: number;
}
export type LiquidityCooldownEvent = TypedEvent<[
    number
], LiquidityCooldownEventObject>;
export type LiquidityCooldownEventFilter = TypedEventFilter<LiquidityCooldownEvent>;
export interface MintEventObject {
    sender: string;
    owner: string;
    bottomTick: number;
    topTick: number;
    liquidityAmount: BigNumber;
    amount0: BigNumber;
    amount1: BigNumber;
}
export type MintEvent = TypedEvent<[
    string,
    string,
    number,
    number,
    BigNumber,
    BigNumber,
    BigNumber
], MintEventObject>;
export type MintEventFilter = TypedEventFilter<MintEvent>;
export interface SwapEventObject {
    sender: string;
    recipient: string;
    amount0: BigNumber;
    amount1: BigNumber;
    price: BigNumber;
    liquidity: BigNumber;
    tick: number;
}
export type SwapEvent = TypedEvent<[
    string,
    string,
    BigNumber,
    BigNumber,
    BigNumber,
    BigNumber,
    number
], SwapEventObject>;
export type SwapEventFilter = TypedEventFilter<SwapEvent>;
export interface TickSpacingEventObject {
    newTickSpacing: number;
}
export type TickSpacingEvent = TypedEvent<[number], TickSpacingEventObject>;
export type TickSpacingEventFilter = TypedEventFilter<TickSpacingEvent>;
export interface IAlgebraPoolEvents extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: IAlgebraPoolEventsInterface;
    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: {};
    callStatic: {};
    filters: {
        "Burn(address,int24,int24,uint128,uint256,uint256)"(owner?: PromiseOrValue<string> | null, bottomTick?: PromiseOrValue<BigNumberish> | null, topTick?: PromiseOrValue<BigNumberish> | null, liquidityAmount?: null, amount0?: null, amount1?: null): BurnEventFilter;
        Burn(owner?: PromiseOrValue<string> | null, bottomTick?: PromiseOrValue<BigNumberish> | null, topTick?: PromiseOrValue<BigNumberish> | null, liquidityAmount?: null, amount0?: null, amount1?: null): BurnEventFilter;
        "Collect(address,address,int24,int24,uint128,uint128)"(owner?: PromiseOrValue<string> | null, recipient?: null, bottomTick?: PromiseOrValue<BigNumberish> | null, topTick?: PromiseOrValue<BigNumberish> | null, amount0?: null, amount1?: null): CollectEventFilter;
        Collect(owner?: PromiseOrValue<string> | null, recipient?: null, bottomTick?: PromiseOrValue<BigNumberish> | null, topTick?: PromiseOrValue<BigNumberish> | null, amount0?: null, amount1?: null): CollectEventFilter;
        "CommunityFee(uint8,uint8)"(communityFee0New?: null, communityFee1New?: null): CommunityFeeEventFilter;
        CommunityFee(communityFee0New?: null, communityFee1New?: null): CommunityFeeEventFilter;
        "Fee(uint16)"(fee?: null): FeeEventFilter;
        Fee(fee?: null): FeeEventFilter;
        "Flash(address,address,uint256,uint256,uint256,uint256)"(sender?: PromiseOrValue<string> | null, recipient?: PromiseOrValue<string> | null, amount0?: null, amount1?: null, paid0?: null, paid1?: null): FlashEventFilter;
        Flash(sender?: PromiseOrValue<string> | null, recipient?: PromiseOrValue<string> | null, amount0?: null, amount1?: null, paid0?: null, paid1?: null): FlashEventFilter;
        "Incentive(address)"(virtualPoolAddress?: PromiseOrValue<string> | null): IncentiveEventFilter;
        Incentive(virtualPoolAddress?: PromiseOrValue<string> | null): IncentiveEventFilter;
        "Initialize(uint160,int24)"(price?: null, tick?: null): InitializeEventFilter;
        Initialize(price?: null, tick?: null): InitializeEventFilter;
        "LiquidityCooldown(uint32)"(liquidityCooldown?: null): LiquidityCooldownEventFilter;
        LiquidityCooldown(liquidityCooldown?: null): LiquidityCooldownEventFilter;
        "Mint(address,address,int24,int24,uint128,uint256,uint256)"(sender?: null, owner?: PromiseOrValue<string> | null, bottomTick?: PromiseOrValue<BigNumberish> | null, topTick?: PromiseOrValue<BigNumberish> | null, liquidityAmount?: null, amount0?: null, amount1?: null): MintEventFilter;
        Mint(sender?: null, owner?: PromiseOrValue<string> | null, bottomTick?: PromiseOrValue<BigNumberish> | null, topTick?: PromiseOrValue<BigNumberish> | null, liquidityAmount?: null, amount0?: null, amount1?: null): MintEventFilter;
        "Swap(address,address,int256,int256,uint160,uint128,int24)"(sender?: PromiseOrValue<string> | null, recipient?: PromiseOrValue<string> | null, amount0?: null, amount1?: null, price?: null, liquidity?: null, tick?: null): SwapEventFilter;
        Swap(sender?: PromiseOrValue<string> | null, recipient?: PromiseOrValue<string> | null, amount0?: null, amount1?: null, price?: null, liquidity?: null, tick?: null): SwapEventFilter;
        "TickSpacing(int24)"(newTickSpacing?: null): TickSpacingEventFilter;
        TickSpacing(newTickSpacing?: null): TickSpacingEventFilter;
    };
    estimateGas: {};
    populateTransaction: {};
}
