import { type FederatedPointerEvent as CanvasEvent, type DisplayObject, type PointLike } from '@antv/g';
import { S2Event, ScrollDirection } from '../../common/constant';
import { InteractionBrushSelectionStage } from '../../common/constant/interaction';
import type { BrushAutoScrollConfig, BrushPoint, BrushRange, CellSelectedDetail, OnUpdateCells, S2CellType, ViewMeta } from '../../common/interface';
import type { BBox } from '../../engine/interface';
import type { Node } from '../../facet/layout/node';
import type { BaseEventImplement } from '../base-event';
import { BaseEvent } from '../base-interaction';
export declare class BaseBrushSelection extends BaseEvent implements BaseEventImplement {
    displayedCells: S2CellType[];
    prepareSelectMaskShape: DisplayObject;
    startBrushPoint: BrushPoint;
    endBrushPoint: BrushPoint;
    brushRangeCells: S2CellType[];
    brushSelectionStage: InteractionBrushSelectionStage;
    brushSelectionMinimumMoveDistance: number;
    scrollAnimationComplete: boolean;
    mouseMoveDistanceFromCanvas: number;
    bindEvents(): void;
    protected getPrepareSelectMaskTheme(): import("../../common/interface").DeepRequired<import("../../common/interface").InteractionStateTheme>;
    protected initPrepareSelectMaskShape(): void;
    protected setBrushSelectionStage(stage: InteractionBrushSelectionStage): void;
    protected isPointInCanvas(point: PointLike): boolean;
    private setMoveDistanceFromCanvas;
    formatBrushPointForScroll: (delta: PointLike, isRowHeader?: boolean) => {
        x: {
            value: number;
            needScroll: boolean;
        };
        y: {
            value: number;
            needScroll: boolean;
        };
    };
    private autoScrollIntervalId;
    rectanglesIntersect: (rect1: BBox, rect2: BBox) => boolean;
    protected autoScrollConfig: BrushAutoScrollConfig;
    validateYIndex: (yIndex: number) => number | null;
    validateXIndex: (xIndex: number) => number | null;
    adjustNextColIndexWithFrozen: (colIndex: number, dir: ScrollDirection) => number;
    adjustNextRowIndexWithFrozen: (rowIndex: number, dir: ScrollDirection) => number;
    getWillScrollRowIndexDiff: (dir: ScrollDirection) => number;
    getDefaultWillScrollToRowIndex: (dir: ScrollDirection) => number | null;
    protected getWillScrollToRowIndex: (dir: ScrollDirection) => number | null;
    private getNextScrollDelta;
    private onScrollAnimationComplete;
    private autoScroll;
    protected handleScroll: import("lodash").DebouncedFuncLeading<(x: number, y: number, isRowHeader?: any) => void>;
    protected clearAutoScroll: () => void;
    protected resetDrag(): void;
    isValidBrushSelection(): boolean;
    protected setDisplayedCells(): void;
    protected updatePrepareSelectMask(): void;
    hidePrepareSelectMaskShape(): void;
    protected resetScrollDelta(): void;
    protected getBrushPoint(event: CanvasEvent): BrushPoint;
    getBrushRange(): BrushRange;
    protected getBrushRangeCells(): S2CellType[];
    protected onUpdateCells: OnUpdateCells;
    private showPrepareSelectedCells;
    protected mouseDown(event: CanvasEvent): void;
    protected addBrushIntercepts(): void;
    protected bindMouseUp(enableScroll?: boolean): void;
    protected renderPrepareSelected: (point: PointLike) => void;
    autoBrushScroll(point: PointLike, isRowHeader?: boolean): boolean;
    emitBrushSelectionEvent(event: S2Event, scrollBrushRangeCells: S2CellType[], detail: CellSelectedDetail): void;
    getVisibleBrushRangeCells(nodeId: string): S2CellType | undefined;
    protected isInBrushRange(node: ViewMeta | Node): boolean;
    protected bindMouseDown(): void;
    protected bindMouseMove(): void;
    protected updateSelectedCells(event: MouseEvent): void;
    protected getPrepareSelectMaskPosition(brushRange: BrushRange): PointLike;
}
