import type { FederatedPointerEvent } from '@visactor/vrender-core';
import { AbstractComponent } from '../core/base';
import type { BrushAttributes } from './type';
import type { ComponentOptions } from '../interface';
export declare class Brush extends AbstractComponent<Required<BrushAttributes>> {
    name: string;
    static defaultAttributes: {
        trigger: string;
        updateTrigger: string;
        endTrigger: string;
        resetTrigger: string;
        hasMask: boolean;
        brushMode: string;
        brushType: string;
        brushStyle: {
            fill: string;
            fillOpacity: number;
            stroke: string;
            strokeWidth: number;
        };
        brushMoved: boolean;
        removeOnClick: boolean;
        delayType: string;
        delayTime: number;
        interactiveRange: {
            y1: number;
            y2: number;
            x1: number;
            x2: number;
        };
    };
    private _container;
    private _activeDrawState;
    private _cacheDrawPoints;
    private _isDrawedBeforeEnd;
    private _isDownBeforeUpOutside;
    private _activeMoveState;
    private _operatingMaskMoveDx;
    private _operatingMaskMoveDy;
    private _operatingMaskMoveRangeX;
    private _operatingMaskMoveRangeY;
    private _cacheMovePoint;
    private _operatingMask;
    private _brushMaskAABBBoundsDict;
    constructor(attributes: BrushAttributes, options?: ComponentOptions);
    private _bindBrushEvents;
    private _isPosInBrushMask;
    private _onBrushStart;
    private _onBrushing;
    private _onBrushingWithDelay;
    private _onBrushEnd;
    private _onBrushClear;
    private _initDraw;
    private _initMove;
    private _drawing;
    private _moving;
    private _computeMaskPoints;
    private _addBrushMask;
    private _outOfInteractiveRange;
    protected eventPosToStagePos(e: FederatedPointerEvent): {
        x: number;
        y: number;
    };
    protected render(): void;
    releaseBrushEvents(): void;
}
