import type { CacheSelection, ContentModelBlockGroup, ContentModelDocument, ContentModelEntity, ContentModelParagraph, ContentModelSegment, ContentModelTable, DomIndexer, DOMSelection } from 'roosterjs-content-model-types'; /** * @internal Export for test only */ export interface SegmentItem { paragraph: ContentModelParagraph; segments: ContentModelSegment[]; } /** * @internal Export for test only */ export interface TableItem { table: ContentModelTable; } /** * @internal Export for test only */ export interface BlockEntityDelimiterItem { entity: ContentModelEntity; parent: ContentModelBlockGroup; } /** * @internal Export for test only */ export interface IndexedSegmentNode extends Node { __roosterjsContentModel: SegmentItem; } /** * @internal Export for test only */ export interface IndexedTableElement extends HTMLTableElement { __roosterjsContentModel: TableItem; } /** * @internal Export for test only */ export interface IndexedEntityDelimiter extends Text { __roosterjsContentModel: BlockEntityDelimiterItem; } /** * @internal * Implementation of DomIndexer */ export declare class DomIndexerImpl implements DomIndexer { private readonly keepSelectionMarkerWhenEnteringTextNode?; constructor(keepSelectionMarkerWhenEnteringTextNode?: boolean | undefined); onSegment(segmentNode: Node, paragraph: ContentModelParagraph, segment: ContentModelSegment[]): void; onParagraph(paragraphElement: HTMLElement): void; onTable(tableElement: HTMLTableElement, table: ContentModelTable): void; onBlockEntity(entity: ContentModelEntity, group: ContentModelBlockGroup): void; onMergeText(targetText: Text, sourceText: Text): void; clearIndex(container: Node): void; reconcileSelection(model: ContentModelDocument, newSelection: DOMSelection, oldSelection?: CacheSelection): boolean; reconcileChildList(addedNodes: ArrayLike, removedNodes: ArrayLike): boolean; reconcileElementId(element: HTMLElement): boolean; private onBlockEntityDelimiter; private isCollapsed; private reconcileNodeSelection; private insertMarker; private reconcileTextSelection; private reconcileDelimiterSelection; private reconcileAddedNode; private reconcileRemovedNode; private indexNode; private selectionMarkerToKeepWhenEnteringTextNode; }