import { default as React } from 'react'; import { Lesson, LessonMode, LessonScore, LessonStep } from '../lesson/types'; /** What the overlay renders from. */ export interface LessonApi { status: 'idle' | 'running' | 'complete'; /** All registered lessons (the catalog a launcher UI lists). */ catalog: Lesson[]; lesson: Lesson | null; mode: LessonMode; stepIndex: number; totalSteps: number; step: LessonStep | null; /** Hint texts (i18n keys or literals) revealed on the current step, in order. */ visibleHints: string[]; /** Increments on each wrong action so the overlay can shake. */ nudgeSeq: number; /** Set when a run completes (Do mode carries a meaningful score). */ score: LessonScore | null; /** Whether the run is auto-demonstrating (Watch mode). */ isWatch: boolean; /** Whether Watch auto-play is paused. */ watchPaused: boolean; /** Increments each time Watch performs a step (drives the cursor click pulse). */ demoSeq: number; /** Pause / resume Watch auto-play. */ pauseWatch: () => void; resumeWatch: () => void; /** Start a lesson by id. Returns false if unknown. `try` is the default. */ start: (lessonId: string, mode?: LessonMode) => boolean; /** Abort the current lesson and clear its saved progress. */ stop: () => void; } export declare const LessonProvider: React.FC<{ lessons?: Lesson[]; children: React.ReactNode; }>; /** Access the lesson runtime. Returns a safe no-op controller outside a provider. */ export declare const useLesson: () => LessonApi;