import { T as Tool } from '../Tool-CjhrEUet.js';
import 'eventemitter3';

declare class Blur extends Tool {
    bluring: boolean;
    lastX: number | null;
    lastY: number | null;
    sigma: number;
    radius: number;
    setRadius(value: number): void;
    getRadius(): number;
    setSigma(value: number): void;
    getSigma(): number;
    onStartDraw: (event: MouseEvent) => void;
    onProcessDraw: (event: MouseEvent) => void;
    onStopDraw: () => void;
    blurAtPoint(_x: number, _y: number): void;
    onAfterEnable(): void;
    onBeforeDisable(): void;
}

declare class Filter extends Tool {
    value: number;
    applied: boolean;
    originalImageData: ImageData | null;
    setValue(value: number): void;
    getValue(): number;
    newImageData(): ImageData;
    apply(): void;
    onAfterEnable(): void;
    onBeforeDisable(): void;
}

declare class Brightness extends Filter {
    newImageData: () => ImageData;
}

declare class Contrast extends Filter {
    newImageData: () => ImageData;
}

type BorderType = "top" | "bottom" | "left" | "right";
declare class Crop extends Tool {
    originalImage: HTMLCanvasElement | null;
    darkenImage: HTMLCanvasElement | null;
    cropping: boolean;
    setted: boolean;
    startX: number | null;
    startY: number | null;
    finishX: number | null;
    finishY: number | null;
    mousedownX: number | null;
    mousedownY: number | null;
    resizingBorder: BorderType | null;
    showCropState(): void;
    applyCrop(): void;
    cancelCrop(): void;
    sortCoords(): void;
    getResizingBorder(x: number, y: number): BorderType | null;
    setCursorForResizingBorder(resizingBorder: BorderType): void;
    onStartDraw: (event: MouseEvent) => void;
    onProcessDraw: (event: MouseEvent) => void;
    onStopDraw: () => void;
    onAfterEnable(): void;
    onBeforeDisable(): void;
}

declare class Rectangle extends Tool {
    originalImage: HTMLCanvasElement | null;
    drawing: boolean;
    startX: number | null;
    startY: number | null;
    finishX: number | null;
    finishY: number | null;
    showRectangle(): void;
    onStartDraw: (event: MouseEvent) => void;
    onProcessDraw: (event: MouseEvent) => void;
    onStopDraw: () => void;
    onAfterEnable(): void;
    onBeforeDisable(): void;
}

declare class RotateLeft extends Tool {
    onAfterEnable(): void;
}

declare class RotateRight extends Tool {
    onAfterEnable(): void;
}

export { Blur, Brightness, Contrast, Crop, Rectangle, RotateLeft, RotateRight };
