import { BaseComponent, IPoint, IRectangle } from '../../Utilities';
import { IMarqueeSelectionProps } from './MarqueeSelection.types';
export interface IMarqueeSelectionState {
    dragOrigin?: IPoint;
    dragRect?: IRectangle;
}
/**
 * MarqueeSelection component abstracts managing a draggable rectangle which sets items selected/not selected.
 * Elements which have data-selectable-index attributes are queried and measured once to determine if they
 * fall within the bounds of the rectangle. The measure is memoized during the drag as a performance optimization
 * so if the items change sizes while dragging, that could cause incorrect results.
 */
export declare class MarqueeSelectionBase extends BaseComponent<IMarqueeSelectionProps, IMarqueeSelectionState> {
    static defaultProps: {
        rootTagName: string;
        rootProps: {};
        isEnabled: boolean;
    };
    private _root;
    private _dragOrigin;
    private _rootRect;
    private _lastMouseEvent;
    private _autoScroll;
    private _selectedIndicies;
    private _preservedIndicies;
    private _itemRectCache;
    private _allSelectedIndices;
    private _scrollableParent;
    private _scrollableSurface;
    private _scrollTop;
    private _isTouch;
    constructor(props: IMarqueeSelectionProps);
    componentDidMount(): void;
    componentWillUnmount(): void;
    render(): JSX.Element;
    /** Determine if the mouse event occured on a scrollbar of the target element. */
    private _isMouseEventOnScrollbar;
    private _onMouseDown;
    private _onTouchStart;
    private _onPointerDown;
    private _getRootRect;
    private _onAsyncMouseMove;
    private _onMouseMove;
    private _onMouseUp;
    private _isPointInRectangle;
    /**
     * We do not want to start the marquee if we're trying to marquee
     * from within an existing marquee selection.
     */
    private _isDragStartInSelection;
    private _isInSelectionToggle;
    private _evaluateSelection;
}
