import { BaseShapeOptions, BaseShapeTool, BaseShapeToolProps } from "./base";
import { EDataType, EPostMessageType, EScaleType, EToolsKey } from "../enum";
import { IWorkerMessage, IRectType, BaseNodeMapItem } from "../types";
import type { IMainMessage } from "../types";
import { Point2d } from "../utils/primitives/Point2d";
import type { LocalWorkForFullWorker } from "../worker/fullWorkerLocal";
import type { SubLocalMainThreadImpl } from "../mainThread/subLocalThread";
export type SerializerEraserLines = Array<SerializerEraserItem>;
export interface SerializerEraserItem {
    op: number[][];
    thickness: number;
}
export interface PencilEraserOptions extends BaseShapeOptions {
    thickness: number;
    eraserColor: string;
}
export declare class PencilEraserShape extends BaseShapeTool {
    readonly canRotate: boolean;
    readonly scaleType: EScaleType;
    readonly toolsType: EToolsKey;
    private static readonly eraserSizes;
    protected tmpPoints: Array<Point2d>;
    protected workOptions: PencilEraserOptions;
    worldPosition: [number, number];
    worldScaling: [number, number];
    eraserRect: IRectType | undefined;
    eraserPolyline?: [number, number, number, number];
    syncUnitTime: number;
    private syncIndex;
    private syncTimestamp;
    constructor(props: BaseShapeToolProps);
    /** 批量合并消费本地数据,返回绘制结果 */
    combineConsume(): IMainMessage | undefined;
    consumeService(params: {
        op: number[];
        isFullWork?: boolean;
        replaceId?: string;
    }): IRectType | undefined;
    private updateTempPoints;
    private getChangeNodes;
    consume(props: {
        data: IWorkerMessage;
        isFullWork: boolean;
        isSubWorker?: boolean;
        isMainThread?: boolean;
        drawCount?: number;
        removeDrawCount?: number;
    }): {
        workId: string;
        toolsType: EToolsKey;
        opt: import("./utils").ShapeOptions;
        type: EPostMessageType;
        rect?: undefined;
        dataType?: undefined;
    } | {
        rect: IRectType | undefined;
        type: EPostMessageType;
        dataType: EDataType;
    } | {
        type: EPostMessageType;
        dataType: EDataType;
        rect: IRectType | undefined;
        op: number[] | undefined;
        index: number | undefined;
        updateNodeOpt: {
            useAnimation: boolean;
        };
        workId: string;
        toolsType: EToolsKey;
        opt: import("./utils").ShapeOptions;
    };
    private draw;
    private computEraserPointLines;
    consumeAll(props: {
        workerEngine?: LocalWorkForFullWorker | SubLocalMainThreadImpl;
    }): {
        workId: string;
        toolsType: EToolsKey;
        opt: import("./utils").ShapeOptions;
        type: EPostMessageType;
    } | {
        rect: IRectType | undefined;
        workId: string;
        toolsType: EToolsKey;
        opt: import("./utils").ShapeOptions;
        type: EPostMessageType;
    } | {
        type: EPostMessageType;
        dataType: EDataType;
        rect: IRectType | undefined;
        ops: string;
        willNewNodes: Map<string, BaseNodeMapItem>;
        willDeleteNodes: Set<string>;
        workId: string;
        toolsType: EToolsKey;
        opt: import("./utils").ShapeOptions;
    };
    clearTmpPoints(): void;
}
