interface VisionOverlayDeps { body: HTMLElement; panel: HTMLElement; root: ShadowRoot; controls: HTMLElement; camToggleBtn: HTMLButtonElement; el: (tag: string, cls: string, parent: HTMLElement) => HTMLElement; onStart: () => void; onCameraToggle?: (off: boolean) => void; } export declare class VisionOverlay { private deps; private videoEl; private vidWrap; private vidTxs; private vidPartial; private vidStatus; private camDot; private fsBtn; private recBadge; private vcallBadge; private faceCanvas; private faceCtx; private wantVision; private previewVideo; private visionMode; private fullscreen; private cameraOff; private onCameraToggle; private vidMsgTimers; private readonly VID_MSG_TTL; private readonly VID_MSG_MAX; private static readonly FACE_CONTOUR; private static readonly LEFT_EYE; private static readonly RIGHT_EYE; private static readonly LIPS; private static readonly NOSE_BRIDGE; constructor(deps: VisionOverlayDeps); isWantVision(): boolean; isVisionMode(): boolean; getVideoEl(): HTMLVideoElement | null; isCameraOff(): boolean; getPreviewVideo(): HTMLVideoElement | null; enableVision(videoEl: HTMLVideoElement, onCameraToggle?: (off: boolean) => void): void; disableVision(): void; setVisionCapable(enabled: boolean): void; setPreviewVideo(videoEl: HTMLVideoElement): void; showCamDot(): void; hideCamDot(): void; showRecBadge(): void; hideRecBadge(): void; showVCallBadge(): void; hideVCallBadge(): void; drawFaceLandmarks(landmarks: Array<{ x: number; y: number; }>): void; renderVideoOverlay(body: HTMLElement, msgs: Array<{ role: string; text: string; }>, cleanText: (t: string) => string): void; appendVideoMsg(role: string, text: string, cleanText: (t: string) => string): void; private createVideoMsgEl; renderVideoPartial(partialText: string, body: HTMLElement, cleanText: (t: string) => string): void; clearVideoPartial(): void; showVideoStatus(label: string, body: HTMLElement): void; clearVideoStatus(): void; toggleFullscreen(): void; teardownVideoOverlay(): void; reset(): void; } export {};