import { Observable } from '@tanbo/stream';
import { NativeSelectionBridge, NativeSelectionConnector, SelectionPosition, AbstractSelection, RootComponentRef, Controller, Selection, Textbus, Scheduler } from '@textbus/core';
import { Rect } from './_utils/uikit';
import { Input } from './types';
import { ViewOptions } from './browser-module';
import { DomAdapter } from './dom-adapter';
/**
 * Textbus PC 端选区桥接实现
 */
export declare class SelectionBridge implements NativeSelectionBridge {
    private config;
    private selection;
    private rootComponentRef;
    private input;
    private scheduler;
    private domAdapter;
    onSelectionChange: Observable<Range | null>;
    nativeSelection: globalThis.Selection;
    syncSelectionFromNativeSelectionChange: boolean;
    private selectionChangeEvent;
    private subs;
    private sub;
    private connector;
    private ignoreSelectionChange;
    private changeFromUser;
    private docContainer;
    private cacheCaretPositionTimer;
    private oldCaretPosition;
    constructor(config: ViewOptions, textbus: Textbus, controller: Controller, selection: Selection, rootComponentRef: RootComponentRef, input: Input, scheduler: Scheduler, domAdapter: DomAdapter);
    connect(connector: NativeSelectionConnector): void;
    disConnect(): void;
    getRect(location: SelectionPosition): 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;
    };
    getPreviousLinePositionByCurrent(position: SelectionPosition): SelectionPosition | null;
    getNextLinePositionByCurrent(position: SelectionPosition): SelectionPosition | null;
    private getLinePosition;
    /**
     * 获取选区向上移动一行的位置。
     * @param currentPosition
     * @param startLeft 参考位置。
     */
    private getPreviousLinePositionByOffset;
    /**
     * 获取选区向下移动一行的位置。
     * @param currentPosition
     * @param startLeft 参考位置。
     */
    private getNextLinePositionByOffset;
    private unListen;
    private listen;
    private syncSelection;
    private findSelectedNodeAndOffset;
    private getCorrectedPosition;
    private findFocusNode;
    private findFocusNodeByParent;
}
