import { AllowType, CustomizeHandle, Options, Point, ToolOptions, ToolType } from './types';
import { CacheGraffiti } from './stack';
import { GraffitiEle } from './element';
import type { EleGroup } from './element/group';
import { GraffitiPlugin } from './plugin';
export * from './types';
export * from './element';
export * from './stack';
export declare const SYSTEM_COLOR = "#1493ee";
export declare class CanvasGraffiti implements ToolOptions {
    #private;
    options: Options;
    customizeHandle: CustomizeHandle;
    el: HTMLCanvasElement;
    private cacheStack;
    beginPoint: {
        x: number;
        y: number;
    };
    endPoint: {
        x: number;
        y: number;
    } | undefined;
    points: Point[];
    bufferCanvas: HTMLCanvasElement | undefined;
    private allowType;
    private allowButton;
    graffitiEleList: GraffitiEle[];
    eleGroup: EleGroup | null;
    get width(): number;
    private set width(value);
    get height(): number;
    private set height(value);
    set lineWidth(val: number);
    get lineWidth(): number;
    private set dpr(value);
    get dpr(): number;
    set strokeStyle(val: string | CanvasGradient | CanvasPattern);
    get strokeStyle(): string | CanvasGradient | CanvasPattern;
    set fillStyle(val: string | CanvasGradient | CanvasPattern);
    get fillStyle(): string | CanvasGradient | CanvasPattern;
    set shadowColor(val: string);
    get shadowColor(): string;
    set shadowBlur(val: number);
    get shadowBlur(): number;
    private get tool();
    set toolName(value: ToolType);
    get toolName(): ToolType;
    get ctx(): CanvasRenderingContext2D;
    get bufferCtx(): CanvasRenderingContext2D;
    constructor(options: Options, customizeHandle?: CustomizeHandle);
    /**
     * 初始化
     */
    private init;
    updateAllowType(types: AllowType[]): void;
    plugin(...args: GraffitiPlugin[]): void;
    private bindCanvasEventListener;
    private removeEventListener;
    pointerdown(event: PointerEvent): void;
    pointermove(event: PointerEvent): void;
    pointerup(event: PointerEvent): void;
    revoke(): void;
    redo(): void;
    updateCanvasSize(size: {
        width?: number;
        height?: number;
    }): void;
    flush(): void;
    clear(): void;
    emitStackChange(): void;
    drawEles(graffitiEleList?: GraffitiEle[]): void;
    getCanvasData(): CacheGraffiti;
    setCanvasData(graffiti: CacheGraffiti): void;
    createBufferCanvas(): void;
    destroy(isRemoveCanvas?: boolean): void;
    toDataURL(type?: string, encoderOptions?: number): string;
    toPicFile(filename?: string): Promise<File>;
}
export default CanvasGraffiti;
