import { Injector, IRangeWithCoord, ThemeService } from '@univerjs/core';
import { Scene, SpreadsheetSkeleton } from '@univerjs/engine-render';
import { SelectionControl } from './selection-shape';
export interface ISelectionShapeTargetSelection {
    originControl: SelectionControl;
    targetSelection: IRangeWithCoord;
}
/**
 * for auto-fill (crosshair expand selection range)
 * drag selection range
 */
export declare class SelectionShapeExtension {
    private _control;
    private _skeleton;
    private _scene;
    private readonly _themeService;
    /** @deprecated injection in extensions should be strictly limited. */
    private readonly _injector;
    private _selectionHooks;
    private _startOffsetX;
    private _startOffsetY;
    private _relativeSelectionPositionRow;
    private _relativeSelectionPositionColumn;
    private _relativeSelectionRowLength;
    private _relativeSelectionColumnLength;
    private _scenePointerMoveSub;
    private _scenePointerUpSub;
    private _helperSelection;
    private _scrollTimer;
    private _activeViewport;
    private _targetSelection;
    private _isInMergeState;
    private _fillControlColors;
    constructor(_control: SelectionControl, _skeleton: SpreadsheetSkeleton, _scene: Scene, _themeService: ThemeService, 
    /** @deprecated injection in extensions should be strictly limited. */
    _injector: Injector, _selectionHooks: Record<string, () => void>);
    get isHelperSelection(): boolean;
    dispose(): void;
    private _getFreeze;
    private _isSelectionInViewport;
    private _clearObserverEvent;
    private _initialControl;
    private _controlMoving;
    /**
     * Drag move whole selectionControl when cusor turns to crosshair. Not for dragging 8 control points.
     * @param evt
     */
    private _controlEvent;
    private _initialWidget;
    /**
     * Pointer down Events for 8 control point.
     * @param evt
     * @param cursor
     */
    private _widgetPointerDownEvent;
    /**
     * Pointer move Events for 8 control point.
     * @param moveOffsetX
     * @param moveOffsetY
     * @param cursor
     */
    private _widgetMoving;
    private _initialFill;
    private _fillMoving;
    private _fillEvent;
    private _hasMergeInRange;
    private _swapPositions;
    private _controlHandler;
    private _fillRuler;
    private _getScale;
}
