import { IPaintCommand, IPaintExecuteOptions, PaintCommandName, PaintObjectPropertyName, PointerTriggerType } from "../../../ImageViewer/Layers/types";
import { PointLocation } from "../../../ImageViewer/Models/SelectionBoxTypes";
import { IPaintObjectDesigner } from "../Objects/IPaintObjectDesigner";
import { PaintToolbar } from "./../PaintToolbar";
export declare const DEFAULT_PENCIL_SIZE = 1;
export declare const DEFAULT_BRUSH_SIZE = 12;
export declare const DEFAULT_BRUSH_HARDNESS = 70;
export declare const DEFAULT_ERASER_SIZE = 12;
export declare const DEFAULT_ERASER_HARDNESS = 70;
export declare const DEFAULT_CLONE_STAMP_SIZE = 60;
export declare const DEFAULT_CLONE_STAMP_HARDNESS = 70;
export declare const DEFAULT_FONT_SIZE = 14;
export declare const DEFAULT_FONT_NAME = "Verdana";
export declare const DEFAULT_PENCIL_OPACITY = 100;
export declare const DEFAULT_BRUSH_OPACITY = 100;
export declare const DEFAULT_ERASER_OPACITY = 100;
export declare const DEFAULT_CLONE_STAMP_OPACITY = 100;
export declare const DEFAULT_FONT_OPACITY = 100;
export declare type PaintExecuteOptions = {
    context: PaintToolbar;
} & IPaintExecuteOptions;
export declare class PaintCommandBase implements IPaintCommand {
    name: PaintCommandName;
    point: PointLocation;
    trigger: PointerTriggerType;
    opacity?: number;
    constructor();
    setGlobalCompositeOperation(ctx: CanvasRenderingContext2D): void;
    clone(): IPaintCommand;
    execute(mainCtx: CanvasRenderingContext2D, backCtx: CanvasRenderingContext2D, options: PaintExecuteOptions): void;
}
export interface IObjectPaintCommand extends IPaintCommand {
    paintObjectDesigner?: IPaintObjectDesigner;
    objectIndex?: number;
}
export declare class ObjectPaintCommandBase implements IObjectPaintCommand {
    paintObjectDesigner?: IPaintObjectDesigner | undefined;
    objectIndex?: number | undefined;
    name: PaintCommandName;
    point?: PointLocation | undefined;
    trigger: PointerTriggerType;
    clone(): IPaintCommand;
    execute(mainCtx: CanvasRenderingContext2D, backCtx: CanvasRenderingContext2D, options: IPaintExecuteOptions): void;
}
export declare class UpdateObjectPositionCommand extends ObjectPaintCommandBase {
    objectIndex: number;
    point: PointLocation;
    moveDisatance?: {
        x: number;
        y: number;
    } | undefined;
    name: PaintCommandName;
    trigger: PointerTriggerType;
    constructor(objectIndex: number, point: PointLocation, moveDisatance?: {
        x: number;
        y: number;
    } | undefined);
    execute(mainCtx: CanvasRenderingContext2D, backCtx: CanvasRenderingContext2D, options: PaintExecuteOptions): void;
}
export declare class SetObjectPropertyCommand extends ObjectPaintCommandBase {
    objectIndex: number;
    propertyName: PaintObjectPropertyName;
    value: any;
    name: PaintCommandName;
    trigger: PointerTriggerType;
    point: PointLocation;
    constructor(objectIndex: number, propertyName: PaintObjectPropertyName, value: any);
    execute(ctx: CanvasRenderingContext2D, backCtx: CanvasRenderingContext2D, options: PaintExecuteOptions): void;
}
export declare class DeleteObjectCommand extends ObjectPaintCommandBase {
    objectIndex: number;
    name: PaintCommandName;
    trigger: PointerTriggerType;
    constructor(objectIndex: number);
    execute(mainCtx: CanvasRenderingContext2D, backCtx: CanvasRenderingContext2D, options: PaintExecuteOptions): void;
}
