import { Observable } from '@tanbo/stream';
import { Injector } from '@tanbo/di';
import { NativeSelectionBridge, NativeSelectionConnector, Renderer, SelectionPosition, AbstractSelection, RootComponentRef, Controller } from '@textbus/core';
import { Caret } from './caret';
import { Input } from './input';
/**
 * Textbus PC 端选区桥接实现
 */
export declare class SelectionBridge implements NativeSelectionBridge {
    private injector;
    caret: Caret;
    private controller;
    private rootComponentRef;
    private input;
    private renderer;
    onSelectionChange: Observable<Range | null>;
    nativeSelection: Selection;
    private selectionMaskElement;
    private selectionChangeEvent;
    private subs;
    private sub;
    private connector;
    private ignoreSelectionChange;
    private changeFromUser;
    private docContainer;
    private maskContainer;
    constructor(injector: Injector, caret: Caret, controller: Controller, rootComponentRef: RootComponentRef, input: Input, renderer: Renderer);
    connect(connector: NativeSelectionConnector): void;
    disConnect(): void;
    getRect(location: SelectionPosition): import("@textbus/core").Rect | null;
    restore(abstractSelection: AbstractSelection | null, formLocal: boolean): void;
    destroy(): void;
    getPositionByRange(abstractSelection: AbstractSelection): {
        focus: {
            node: Node;
            offset: number;
        } | null;
        anchor: {
            node: Node;
            offset: number;
        } | null;
    };
    private findSelectedNodeAndOffset;
    private findFocusNativeTextNode;
    private deepFindNativeNodeByOffset;
    private unListen;
    private listen;
    private syncSelection;
    private getCorrectedPosition;
    private findFocusNode;
    private findFocusNodeByParent;
}
