import { BaseShapeOptions, BaseShapeTool, BaseShapeToolProps } from "./base";
import { EPostMessageType, EScaleType, EToolsKey } from "../enum";
import { IWorkerMessage, IRectType, IworkId } from "../types";
import type { ServiceThreadSubWork } from "./utils";
export interface PencilEraserOptions extends BaseShapeOptions {
    thickness: number;
}
export declare class PencilEraserShape extends BaseShapeTool {
    readonly canRotate: boolean;
    readonly scaleType: EScaleType;
    readonly toolsType: EToolsKey;
    readonly serviceWork?: ServiceThreadSubWork;
    private static readonly eraserSizes;
    protected tmpPoints: Array<number>;
    protected workOptions: PencilEraserOptions;
    worldPosition: [number, number];
    worldScaling: [number, number];
    eraserRect: IRectType | undefined;
    eraserPolyline?: [number, number, number, number];
    constructor(props: BaseShapeToolProps, serviceWork?: ServiceThreadSubWork);
    consumeService(): IRectType | undefined;
    private createEraserRect;
    private computRectCenterPoints;
    private isNear;
    private cutPolyline;
    private isSamePoint;
    private translateIntersect;
    private isLineEraser;
    private remove;
    consume(props: {
        data: IWorkerMessage;
    }): {
        workId: string;
        toolsType: EToolsKey;
        opt: import("./utils").ShapeOptions;
        type: EPostMessageType;
        rect?: undefined;
        removeIds?: undefined;
        newWorkDatas?: undefined;
    } | {
        type: EPostMessageType;
        rect: IRectType;
        removeIds: string[];
        newWorkDatas: Map<string, {
            op: number[];
            opt: BaseShapeOptions;
            workId: IworkId;
            toolsType: EToolsKey;
        }>;
    };
    consumeAll(props: {
        data: IWorkerMessage;
    }): {
        workId: string;
        toolsType: EToolsKey;
        opt: import("./utils").ShapeOptions;
        type: EPostMessageType;
        rect?: undefined;
        removeIds?: undefined;
        newWorkDatas?: undefined;
    } | {
        type: EPostMessageType;
        rect: IRectType;
        removeIds: string[];
        newWorkDatas: Map<string, {
            op: number[];
            opt: BaseShapeOptions;
            workId: IworkId;
            toolsType: EToolsKey;
        }>;
    };
    clearTmpPoints(): void;
    private getCanEraserNodeMap;
}
