import { Annotation, AnnotationId, AppState, BeforeAnnotationCreateHook, ElementInfo, EventMap } from '../types'; import { Store } from '../store'; import { EventBus } from '../event-bus'; /** * Generate a unique annotation ID */ export declare function generateAnnotationId(): AnnotationId; /** * Get the next annotation number */ export declare function getNextAnnotationNumber(annotations: Map): number; /** * Create a new annotation */ export declare function createAnnotation(element: Element, comment: string, existingAnnotations: Map, options?: { selectedText?: string | null; isMultiSelect?: boolean; includeForensic?: boolean; clickX?: number; clickY?: number; offsetX?: number; offsetY?: number; context?: Record; elementInfo?: ElementInfo; }): Annotation; /** * Update an existing annotation's comment */ export declare function updateAnnotationComment(annotation: Annotation, comment: string): Annotation; /** * Update an existing annotation's element info (e.g., after element moved) */ export declare function updateAnnotationElementInfo(annotation: Annotation, element: Element, includeForensic?: boolean): Annotation; /** * Renumber annotations after deletion */ export declare function renumberAnnotations(annotations: Map, deletedNumber: number): Map; export interface AnnotationManagerOptions { /** Hook called before creating an annotation */ onBeforeAnnotationCreate?: BeforeAnnotationCreateHook; } /** * Create annotation manager bound to store and event bus */ export declare function createAnnotationManager(store: Store, eventBus: EventBus, options?: AnnotationManagerOptions): { addAnnotation: (element: Element, comment: string, options?: { selectedText?: string | null; isMultiSelect?: boolean; clickX?: number; clickY?: number; offsetX?: number; offsetY?: number; elementInfo?: ElementInfo; }) => Promise; updateAnnotation: (id: AnnotationId, updates: { comment?: string; }) => Annotation | null; deleteAnnotation: (id: AnnotationId) => boolean; clearAllAnnotations: () => Annotation[]; selectAnnotation: (id: AnnotationId | null) => void; getAnnotation: (id: AnnotationId) => Annotation | undefined; getAllAnnotations: () => Annotation[]; getAnnotationCount: () => number; }; export type AnnotationManager = ReturnType; //# sourceMappingURL=annotation.d.ts.map