import { RemoteVideoTrack } from 'livekit-client'; /** * Options for rendering video tracks */ export interface VideoTrackRendererOptions { /** * Whether to mirror the video (horizontal flip) * @default false */ mirror?: boolean; /** * Object-fit CSS property for video element * @default 'contain' */ objectFit?: 'contain' | 'cover' | 'fill' | 'none' | 'scale-down'; /** * Whether to mute the video element * @default true */ muted?: boolean; /** * Enable debug logging * @default false */ debug?: boolean; } /** * VideoTrackRenderer class * * Manages the lifecycle of attaching RemoteVideoTrack instances to video elements. */ export declare class VideoTrackRenderer { private videoElement; private currentTrack; private options; private debug; /** * Create a new VideoTrackRenderer * * @param options - Configuration options */ constructor(options?: VideoTrackRendererOptions); /** * Attach a video track to a video element * * @param track - RemoteVideoTrack to attach * @param element - HTML video element to attach to * @throws {Error} If track or element is invalid */ attach(track: RemoteVideoTrack, element: HTMLVideoElement): Promise; /** * Detach the current video track */ detach(): Promise; /** * Update rendering options * * @param options - New options to apply */ updateOptions(options: Partial): void; /** * Get the current video track */ getTrack(): RemoteVideoTrack | null; /** * Get the current video element */ getVideoElement(): HTMLVideoElement | null; /** * Check if a track is currently attached */ isAttached(): boolean; /** * Apply CSS styles to video element */ private applyStyles; /** * Log debug messages if debug mode is enabled */ private log; /** * Clean up and destroy the renderer */ destroy(): Promise; } /** * Helper function to create and attach a video track in one step * * @param track - RemoteVideoTrack to attach * @param element - HTML video element to attach to * @param options - Optional renderer configuration * @returns VideoTrackRenderer instance */ export declare function attachVideoTrack(track: RemoteVideoTrack, element: HTMLVideoElement, options?: VideoTrackRendererOptions): Promise; /** * Helper function to detach a video track from an element * * @param track - RemoteVideoTrack to detach * @param element - HTML video element to detach from */ export declare function detachVideoTrack(track: RemoteVideoTrack, element: HTMLVideoElement): void;