import { Nullable, DOC_RANGE_TYPE, RANGE_DIRECTION } from '@univerjs/core';
import { Documents, DocumentSkeleton, INodePosition, IPoint, ISuccinctDocRangeParam, ITextSelectionStyle, Scene, Rect } from '@univerjs/engine-render';
import { IDocRange } from './range-interface';
export declare const TEXT_RANGE_LAYER_INDEX = 3;
export declare function cursorConvertToTextRange(scene: Scene, range: ISuccinctDocRangeParam, docSkeleton: DocumentSkeleton, document: Documents): Nullable<TextRange>;
export declare function getAnchorBounding(pointsGroup: IPoint[][]): {
    left: number;
    top: number;
    width: number;
    height: number;
};
export declare function getLineBounding(pointsGroup: IPoint[][]): {
    left: number;
    right: number;
    top: number;
    bottom: number;
}[];
export declare class TextRange implements IDocRange {
    private _scene;
    private _document;
    private _docSkeleton;
    anchorNodePosition?: Nullable<INodePosition>;
    focusNodePosition?: Nullable<INodePosition>;
    style: ITextSelectionStyle;
    private _segmentId;
    private _segmentPage;
    rangeType: DOC_RANGE_TYPE;
    private _current;
    private _rangeShape;
    private _anchorShape;
    private _cursorList;
    private _anchorBlinkTimer;
    constructor(_scene: Scene, _document: Documents, _docSkeleton: DocumentSkeleton, anchorNodePosition?: Nullable<INodePosition>, focusNodePosition?: Nullable<INodePosition>, style?: ITextSelectionStyle, _segmentId?: string, _segmentPage?: number);
    private _anchorBlink;
    get startOffset(): number | undefined;
    get endOffset(): number | undefined;
    get collapsed(): boolean;
    get startNodePosition(): INodePosition | null;
    get endNodePosition(): Nullable<INodePosition>;
    get direction(): RANGE_DIRECTION;
    get segmentId(): string;
    get segmentPage(): number;
    getAbsolutePosition(): {
        left: number;
        top: number;
        width: number;
        height: number;
    } | undefined;
    getAnchor(): Nullable<Rect<import('@univerjs/engine-render').IRectProps>>;
    activeStatic(): void;
    deactivateStatic(): void;
    isActive(): boolean;
    activate(): void;
    deactivate(): void;
    dispose(): void;
    isIntersection(compareRange: TextRange): boolean;
    refresh(): void;
    private _isEmpty;
    private _isCollapsed;
    private _createOrUpdateRange;
    private _createOrUpdateAnchor;
    private _setCursorList;
}
