/** * Preview API Server — Interactive preview with REST API and WebSocket hot-reload. * * Browsers connect via WebSocket for live reload notifications. * The server pushes `{ type: "reload", reason }` when specs or code change. */ import type { MemoireEngine } from "../engine/core.js"; export interface PipelineAccessor { getStats(): { pullCount: number; specCount: number; generateCount: number; errorCount: number; queueDepth: number; }; getRecentEvents(): { type: string; timestamp: string; detail: string; }[]; } export declare class PreviewApiServer { private engine; private staticDir; private port; private startPort; private pipeline; private server; private wss; private liveClients; private onEngineEvent; private onFigmaConnectionState; private onFigmaSelection; private onFigmaJobStatus; private onFigmaAgentStatus; private onFigmaSyncResult; private onFigmaHealResult; private onFigmaPluginConnected; private onFigmaPluginDisconnected; private widgetState; private sseClients; constructor(engine: MemoireEngine, staticDir: string, port?: number); setPipeline(pipeline: PipelineAccessor): void; start(): Promise; /** Push a reload signal to all connected browsers. */ notifyReload(reason: string): void; stop(): void; private attachFigmaListeners; private detachFigmaListeners; private buildWidgetStatusPayload; /** Broadcast an SSE event to all connected monitor clients. */ private broadcastSSE; /** Map action names from monitor.html to bridge commands. */ private dispatchAction; }