import { TypedEvent } from '@node-projects/base-custom-webcomponent'; import { IDesignItem } from './item/IDesignItem.js'; import { InstanceServiceContainer } from './services/InstanceServiceContainer.js'; import { ServiceContainer } from './services/ServiceContainer.js'; import type { DesignerCanvas } from './widgets/designerView/designerCanvas.js'; /** Persistent browser editing state. A view is optional and never owns this document implicitly. */ export declare class EditingDocument { readonly serviceContainer: ServiceContainer; readonly instanceServiceContainer: InstanceServiceContainer; readonly rootDesignItem: IDesignItem; readonly onPendingChangesChanged: TypedEvent; readonly onCommitError: TypedEvent; private subscriptions; private _pendingHtml; private pendingVersion; private queue; private initializedItems; private disposed; private disposal; private stylesheetWork; private stylesheetTimer; constructor(serviceContainer: ServiceContainer, root?: HTMLElement, canvas?: DesignerCanvas); /** Register resources created by document initialization callbacks. */ addDisposable(resource: { dispose(): void; }): void; get pendingHtml(): string; get hasPendingChanges(): boolean; get isDisposed(): boolean; assertAlive(): void; /** Called immediately by a code editor; text survives failed parses and view removal. */ setPendingHtml(html: string): void; /** Explicitly load/replace content. Initial loads may disable undo; code commits never do. */ loadHtml(html: string, disableUndo?: boolean): Promise; private enqueue; /** Await before using synchronous DesignItem APIs. Includes edits received during an async parse. */ commitPendingChanges(): Promise; private parseAndReplace; /** Internal mutation shared by load, canvas replacement and undo/redo. */ replaceItems(items: IDesignItem[]): void; requestStylesheetReparse(): void; reparseDocumentStylesheets(): Promise; /** Synchronous writer for existing UI code. Programmatic consumers should await serialize(). */ getHtml(): string; serialize(): Promise; /** Final release, unlike detaching a view. Rejects if pending text cannot be committed. */ dispose(): Promise; private disposeInternal; }