import * as THREE from "three"; import type { Annotation, ExportOptions } from "./types"; /** * Annotation data model + undo stack + export. Pure data, no three / DOM dependencies. * Undo only records two atomic operations, add / remove (enough for "undo last add / restore delete"). * Notifies the UI and render layer via subscribe (the latter reconciles the scene against list()). */ export declare class AnnotationStore { private items; private undoStack; private subs; private notify; subscribe(cb: () => void): () => void; add(a: Annotation): void; remove(id: string): Annotation | undefined; undo(): void; /** Clear all, returning the removed items (so the render layer can dispose three objects). */ clear(): Annotation[]; list(): Annotation[]; get(id: string): Annotation | undefined; setLabel(id: string, label: string): void; setColor(id: string, color: string): void; setVisible(id: string, visible: boolean): void; /** Notify subscribers after an in-place mutation of an existing annotation (e.g. geodesic edit re-commit). */ touch(): void; toJSON(modelName: string, mesh: THREE.Mesh, opts?: ExportOptions): { model: string; exportedAt: string; space: "local" | "world"; annotations: Record[]; }; }