import { RemoteVideoTrack } from 'livekit-client'; import { SlideViewerOptions, ViewerState, ViewerPosition } from '../types/viewer'; /** * SlideViewer Component * * Displays slide presentations from LiveKit RemoteVideoTrack with configurable * positioning (left, right, fullscreen) and loading states. * * @example * ```typescript * const container = document.getElementById('slide-container'); * const viewer = new SlideViewer(container, { * position: 'right', * showLoading: true, * onReady: () => console.log('Viewer ready'), * onError: (err) => console.error('Viewer error:', err) * }); * * // Later, when video track is available * await viewer.render(videoTrack); * ``` */ export declare class SlideViewer { private container; private options; private state; private videoTrackRenderer; private elements; /** * Create a new SlideViewer instance * * @param container - DOM element to render the viewer into * @param options - Configuration options * @throws {Error} If container is not a valid HTML element */ constructor(container: HTMLElement, options?: SlideViewerOptions); /** * Render a video track in the viewer * * @param videoTrack - LiveKit RemoteVideoTrack to display * @throws {Error} If viewer has been destroyed or track is invalid */ render(videoTrack: RemoteVideoTrack): Promise; /** * Change the viewer position * * @param position - New position ('left', 'right', or 'fullscreen') */ setPosition(position: ViewerPosition): void; /** * Show loading overlay with optional custom message * * @param message - Optional custom loading message */ showLoading(message?: string): void; /** * Hide loading overlay */ hideLoading(): void; /** * Get current viewer state */ getState(): Readonly; /** * Clean up and destroy the viewer */ destroy(): Promise; /** * Create DOM element structure */ private createElements; /** * Apply CSS styles to elements */ private applyStyles; /** * Update position-specific styles */ private updatePositionStyles; /** * Get CSS dimensions for a position */ private getPositionDimensions; /** * Inject global CSS styles for the component */ private injectGlobalStyles; /** * Log debug messages if debug mode is enabled */ private log; } /** * Factory function to create a SlideViewer instance * * @param container - DOM element to render the viewer into * @param options - Configuration options * @returns SlideViewer instance */ export declare function createSlideViewer(container: HTMLElement, options?: SlideViewerOptions): SlideViewer;