import type { Annotation, AnnotationInput } from "@vincentt-xr/harness/events"; export declare const ANNOTATIONS_DIR = ".vincentt/annotations"; export declare function annotationsDir(projectDir: string): string; export declare class AnnotationStore { private readonly projectDir; private readonly dir; private items; private seq; private waiters; private loaded; constructor(projectDir: string, dir?: string); /** Load persisted annotations so seq continues across preview restarts. */ init(): Promise; /** Persist and register a new annotation, then wake matching long-poll waiters. */ add(input: AnnotationInput, opts: { now: number; id: string; }): Promise; /** The first annotation with seq greater than `after`, if one is already held. */ peekAfter(after: number): Annotation | undefined; /** * Long-poll: resolve with the first annotation whose seq is greater than * `after`, either immediately (already held) or as soon as one arrives. Resolves * null if none arrives within `timeoutMs`. */ nextAfter(after: number, timeoutMs: number): Promise; private wake; /** Release any parked waiters on teardown so nothing hangs. */ close(): void; }