import { Observable } from 'rxjs'; import { Point } from '../../helpers/dom/point'; import { PointSelection, SelectionLike } from '../../helpers/selection'; import { HtmlService } from '../html/htmlService'; import { FocusService } from './focusService'; import { SelectionService } from './selectionService'; export interface ElementSelection extends SelectionLike { readonly isCollapsed: boolean; readonly anchorNode: Node; readonly anchorOffset: number; readonly focusNode: Node; readonly focusOffset: number; readonly isBackward: boolean; readonly range: Range; } export interface ElementSelectionService extends SelectionService { readonly container?: Node; readonly selection?: ElementSelection; withMutations(callback: () => T): T; normalize(): void; moveToPoint(point: Point, shouldScrollIntoView?: boolean): void; moveToOffsetInContainer(node: Node, offset: number, shouldScrollIntoView?: boolean): void; selectWithPoints(points: PointSelection): void; selectWithRange(range: Range, isBackward: boolean): void; selectWithOffsetsInContainers(selection: SelectionLike): void; } export declare const NULL_ELEMENT_SELECTION_SERVICE: ElementSelectionService; export declare function createElementSelectionService(element$: Observable, focusService: FocusService, htmlService: HtmlService): ElementSelectionService;