import { DisposableGroup, Slot } from '@blocksuite/global/utils'; import type * as Y from 'yjs'; import { VirgoHookService } from './services/hook.js'; import { VirgoAttributeService, VirgoDeltaService, VirgoEventService, VirgoRangeService } from './services/index.js'; import type { DeltaInsert, VRange, VRangeUpdatedProp } from './types.js'; import { type BaseTextAttributes, nativePointToTextPoint, textPointToDomPoint } from './utils/index.js'; import { getTextNodesFromElement } from './utils/text.js'; export type VirgoRootElement = HTMLElement & { virgoEditor: VEditor; }; export interface VRangeProvider { getVRange(): VRange | null; setVRange(vRange: VRange | null): void; vRangeUpdatedSlot: Slot; } export declare class VEditor { static nativePointToTextPoint: typeof nativePointToTextPoint; static textPointToDomPoint: typeof textPointToDomPoint; static getTextNodesFromElement: typeof getTextNodesFromElement; private _disposables; get disposables(): DisposableGroup; private readonly _yText; private _rootElement; private _isReadonly; private _eventService; private _rangeService; private _attributeService; private _deltaService; private _hooksService; private _mounted; readonly isEmbed: (delta: DeltaInsert) => boolean; readonly vRangeProvider: VRangeProvider | null; slots: { mounted: Slot; unmounted: Slot; updated: Slot; vRangeUpdated: Slot; rangeUpdated: Slot; }; get yText(): Y.Text; get yTextString(): string; get yTextLength(): number; get yTextDeltas(): any; get rootElement(): VirgoRootElement; get eventService(): VirgoEventService; get rangeService(): VirgoRangeService; get attributeService(): VirgoAttributeService; get deltaService(): VirgoDeltaService; get mounted(): boolean; get marks(): TextAttributes | null; setAttributeSchema: (schema: import("zod").ZodType) => void; setAttributeRenderer: (renderer: import("./types.js").AttributeRenderer) => void; setMarks: (marks: TextAttributes) => void; resetMarks: () => void; getFormat: (vRange: VRange, loose?: boolean) => TextAttributes; toDomRange: (vRange: VRange) => Range | null; toVRange: (range: Range) => VRange | null; getVRange: () => VRange | null; getVRangeFromElement: (element: Element) => VRange | null; getNativeSelection: () => Selection | null; getTextPoint: (rangeIndex: number) => import("./types.js").TextPoint; getLine: (rangeIndex: number) => readonly [import("./index.js").VirgoLine, number]; isVRangeValid: (vRange: VRange | null) => boolean; isFirstLine: (vRange: VRange | null) => boolean; isLastLine: (vRange: VRange | null) => boolean; setVRange: (vRange: VRange | null, sync?: boolean) => void; focusStart: () => void; focusEnd: () => void; selectAll: () => void; focusIndex: (index: number) => void; syncVRange: () => void; getDeltasByVRange: (vRange: VRange) => import("./types.js").DeltaEntry[]; getDeltaByRangeIndex: (rangeIndex: number) => DeltaInsert | null; mapDeltasInVRange: (vRange: VRange, callback: (delta: DeltaInsert, rangeIndex: number, deltaIndex: number) => Result, normalize?: boolean) => Result[]; isNormalizedDeltaSelected: (normalizedDeltaIndex: number, vRange: VRange) => boolean; get hooks(): { beforeinput?: ((props: import("./services/hook.js").VBeforeinputHookCtx) => import("./services/hook.js").VBeforeinputHookCtx | null) | undefined; compositionEnd?: ((props: import("./services/hook.js").VCompositionEndHookCtx) => import("./services/hook.js").VCompositionEndHookCtx | null) | undefined; }; constructor(yText: VEditor['yText'], ops?: { isEmbed?: (delta: DeltaInsert) => boolean; hooks?: VirgoHookService['hooks']; vRangeProvider?: VRangeProvider; }); mount(rootElement: HTMLElement): void; unmount(): void; requestUpdate(syncVRange?: boolean): void; waitForUpdate(): Promise; setReadonly(isReadonly: boolean): void; get isReadonly(): boolean; deleteText(vRange: VRange): void; insertText(vRange: VRange, text: string, attributes?: TextAttributes): void; insertLineBreak(vRange: VRange): void; formatText(vRange: VRange, attributes: TextAttributes, options?: { match?: (delta: DeltaInsert, deltaVRange: VRange) => boolean; mode?: 'replace' | 'merge'; }): void; resetText(vRange: VRange): void; setText(text: string, attributes?: TextAttributes): void; rerenderWholeEditor(): void; private _onYTextChange; private _transact; private _bindYTextObserver; } //# sourceMappingURL=virgo.d.ts.map