import { RemoteVideoTrack } from 'livekit-client'; /** * Viewer positioning modes */ export type ViewerPosition = 'left' | 'right' | 'fullscreen'; /** * Supported aspect ratios for video display */ export type AspectRatio = '16:9' | '4:3' | 'auto'; /** * Loading state information */ export interface LoadingState { /** * Whether loading UI is visible */ isLoading: boolean; /** * Message to display during loading */ message?: string; } /** * Configuration options for SlideViewer component */ export interface SlideViewerOptions { /** * Positioning mode for the viewer * @default 'fullscreen' */ position?: ViewerPosition; /** * Show loading state initially * @default true */ showLoading?: boolean; /** * Custom message to show during loading * @default 'Loading presentation...' */ loadingMessage?: string; /** * Aspect ratio for video display * @default 'auto' */ aspectRatio?: AspectRatio; /** * Callback when viewer is ready to display content */ onReady?: () => void; /** * Callback when an error occurs */ onError?: (error: Error) => void; /** * Custom CSS class name for the container */ className?: string; /** * Enable debug logging * @default false */ debug?: boolean; } /** * Internal viewer state */ export interface ViewerState { /** * Current position */ position: ViewerPosition; /** * Current loading state */ loading: LoadingState; /** * Current video track (if any) */ videoTrack: RemoteVideoTrack | null; /** * Whether viewer has been destroyed */ destroyed: boolean; /** * Aspect ratio setting */ aspectRatio: AspectRatio; } /** * CSS dimensions for positioning */ export interface ViewerDimensions { width: string; height: string; top?: string; left?: string; right?: string; bottom?: string; }