import { Observable } from '@tanbo/stream';
import { Injector } from '@tanbo/di';
import { Scheduler, Rect } from '@textbus/core';
export declare function getLayoutRectByRange(range: Range): Rect;
export interface CaretPosition {
    left: number;
    top: number;
    height: number;
}
export interface CaretStyle {
    height: string;
    lineHeight: string;
    fontSize: string;
}
export interface CaretLimit {
    top: number;
    bottom: number;
}
export interface Scroller {
    onScroll: Observable<any>;
    getLimit(): CaretLimit;
    setOffset(offsetScrollTop: number): void;
}
export declare class Caret {
    private scheduler;
    private injector;
    onPositionChange: Observable<CaretPosition | null>;
    onStyleChange: Observable<CaretStyle>;
    elementRef: HTMLElement;
    private timer;
    private caret;
    private oldPosition;
    private set display(value);
    private get display();
    private _display;
    private flashing;
    private subs;
    private positionChangeEvent;
    private styleChangeEvent;
    private oldRange;
    private isFixed;
    private editorMask;
    constructor(scheduler: Scheduler, injector: Injector);
    refresh(isFixedCaret?: boolean): void;
    show(range: Range, restart: boolean): void;
    hide(): void;
    destroy(): void;
    correctScrollTop(scroller: Scroller): void;
    private updateCursorPosition;
}
