export type { CameraState } from './Lifecycle.js'; import { type CameraState } from './Lifecycle.js'; import { VoiceClient, type VoiceOptions, type VoiceRoom } from './VoiceClient.js'; export interface VideoOptions extends VoiceOptions { /** Video payload bits/second per participant; default 400000. */ videoMaxBitrate?: number; /** Capture ceilings; default 640 x 480 at 15 fps. */ width?: number; height?: number; frameRate?: number; facingMode?: 'user' | 'environment'; } /** Camera + microphone mesh for 2–4 people. Uses the host's standard media APIs. */ export declare class VideoClient extends VoiceClient { readonly videoMaxBitrate: number; private readonly width; private readonly height; private readonly frameRate; private facing; private cameraEnabled; private cameraLifecycle; private cameraRevision; private capturedCameraRevision; private cameraQueue; private localListeners; private p2pVideoHealth; private p2pHealthTimer?; constructor(room: VoiceRoom, options?: VideoOptions); get localStream(): MediaStream | null; /** Actual capture/publication phase; isCameraEnabled expresses user intent. */ get cameraState(): CameraState; get isCameraEnabled(): boolean; get facingMode(): 'user' | 'environment'; get p2pRecoveryDiagnostics(): { peerId: string; state: string; checkedAt: number; bytes: number; frames: number; history: { from: string; event: string; to: string; }[]; }[]; /** Set a local