import { type ElementNode, type NabiDoc, type NabiNode, type SchemaEnv, type Terminal } from '../schema/index.js'; export interface Position { readonly path: readonly number[]; readonly offset: number; } export interface EditResult { readonly doc: NabiDoc; readonly caret: Position; readonly anchor?: Position; } export interface EditEnv extends SchemaEnv { readonly singleParagraph?: ReadonlySet; } export declare function terminalOf(env: SchemaEnv): Terminal; export declare function nodeAt(doc: NabiDoc, path: readonly number[]): ElementNode | null; export declare function siblingsAt(doc: NabiDoc, path: readonly number[]): readonly NabiNode[] | null; export declare function replaceAt(doc: NabiDoc, path: readonly number[], replacement: readonly NabiNode[]): NabiDoc; export declare function isHolder(node: NabiNode, env: SchemaEnv): node is ElementNode; export declare function holderLength(holder: ElementNode, env: SchemaEnv): number; export declare function positionExists(doc: NabiDoc, pos: Position, env: SchemaEnv): boolean; export interface HolderAt { readonly path: readonly number[]; readonly node: ElementNode; } export interface IndexedNode { readonly path: readonly number[]; readonly node: ElementNode; } export declare class DocumentIndex { readonly doc: NabiDoc; readonly holders: readonly HolderAt[]; readonly top: readonly IndexedNode[]; private readonly byId; private readonly byPath; constructor(doc: NabiDoc, env: SchemaEnv); byIdAt(id: string): IndexedNode | null; at(path: readonly number[]): IndexedNode | null; ownerAt(path: readonly number[], w?: string): IndexedNode | null; } export declare function documentIndex(doc: NabiDoc, env: SchemaEnv): DocumentIndex; export declare function holders(doc: NabiDoc, env: SchemaEnv): HolderAt[]; export declare function comparePositions(a: Position, b: Position): number; //# sourceMappingURL=position.d.ts.map