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 {};