import type { Lesson } from '../../types/lessons';
import type { WhiteboardImage } from '../../Whiteboard/index';
import type { BaseApiClient } from '../../types/api';
import type { ActivityModelTableItem } from '../../types/activitiesHistory';
/**
 * Extended lesson type with optional media properties
 */
interface LessonWithMedia extends Lesson {
    videoSrc?: string;
    videoPoster?: string;
    videoSubtitles?: string;
    podcastSrc?: string;
    podcastTitle?: string;
    boardImages?: WhiteboardImage[];
}
type PreviewLesson = LessonWithMedia & {
    position?: number;
};
interface LessonPreviewProps {
    title?: string;
    lessons?: PreviewLesson[];
    onRemoveAll?: () => void;
    onRemoveLesson?: (lessonId: string) => void;
    className?: string;
    onReorder?: (orderedLessons: PreviewLesson[]) => void;
    /**
     * Emits the current ordered list (with positions) whenever it changes.
     */
    onPositionsChange?: (orderedLessons: PreviewLesson[]) => void;
    /**
     * Callback when video time updates
     */
    onVideoTimeUpdate?: (lessonId: string, time: number) => void;
    /**
     * Callback when video completes
     */
    onVideoComplete?: (lessonId: string) => void;
    /**
     * Callback when podcast ends
     */
    onPodcastEnded?: (lessonId: string) => void | Promise<void>;
    /**
     * Get initial timestamp for a lesson
     */
    getInitialTimestamp?: (lessonId: string) => number;
    /** User ID used to scope video-progress localStorage keys per user */
    userId?: string;
    /**
     * Callback when create new activity is clicked
     */
    onCreateNewActivity?: () => void;
    /**
     * API client for fetching activity models
     */
    apiClient: BaseApiClient;
    /**
     * Callback when an activity model is selected
     */
    onActivitySelected?: (model: ActivityModelTableItem) => void;
    /**
     * Callback when edit activity button is clicked
     */
    onEditActivity?: (activity: ActivityModelTableItem) => void;
    /**
     * Callback when remove activity button is clicked
     */
    onRemoveActivity?: () => void;
    /**
     * Initial selected activity (if any)
     */
    selectedActivity?: ActivityModelTableItem | null;
}
export declare const LessonPreview: ({ title, lessons, onRemoveAll, onRemoveLesson, className, onReorder, onPositionsChange, onVideoTimeUpdate, onVideoComplete, onPodcastEnded, getInitialTimestamp, userId, onCreateNewActivity, apiClient, onActivitySelected, onEditActivity, onRemoveActivity, selectedActivity: initialSelectedActivity, }: LessonPreviewProps) => import("react/jsx-runtime").JSX.Element;
export type { LessonPreviewProps, PreviewLesson };
//# sourceMappingURL=LessonPreview.d.ts.map