import type { Region } from "./crop";
export declare class ImageManipulator {
    private readonly _ctx;
    private _image;
    private _state;
    private _trimTo?;
    private _attention?;
    private readonly resizeObserver;
    private resetRequested;
    private clientWidth;
    private clientHeight;
    private canvasWidth;
    private canvasHeight;
    private fitWidth;
    private fitHeight;
    constructor(_ctx: CanvasRenderingContext2D, _image: ImageBitmap, _state: State, _trimTo?: Region | undefined, _attention?: Region[] | undefined);
    set image(value: ImageBitmap);
    set state(value: State);
    set attention(value: Region[]);
    set trimTo(value: Region | undefined);
    /**
     * Resets manipulator to default state.
     * @param lazy If true, the reset will be requested but not performed immediately.
     * This is useful for performance optimization when multiple manipulations are performed in a short time.
     * The reset will be performed on the next resize event.
     * If false, the reset will be performed immediately.
     */
    reset(lazy?: boolean): void;
    manipulate(data: Manipulation): void;
    showRegion(region: Region, fillTarget?: boolean): void;
    getCurrentRegion(): {
        x: number;
        y: number;
        width: number;
        height: number;
    };
    close(): void;
    redraw(): void;
    private adjustSize;
}
interface Manipulation {
    dAngle?: number;
    angle?: number;
    dScale?: number;
    scale?: number;
    dOffsetX?: number;
    offsetX?: number;
    dOffsetY?: number;
    offsetY?: number;
    centerX?: number;
    centerY?: number;
}
interface State {
    angle: number;
    offsetX: number;
    offsetY: number;
    scale: number;
}
export {};
