import { KeyboardHandlerMap, AccessibilityProps, TokenContract } from '../shared/index.js';

type SlideType = 'lesson' | 'quiz' | 'exercise' | 'intro' | 'summary';
type BookmarkType = 'important' | 'difficult' | 'to-revise';
interface SlideData {
    id: string;
    type: SlideType;
    content: string;
}
interface SlideViewerProps {
    slides: SlideData[];
    initialSlide?: number;
    onSlideChange?: (index: number) => void;
    onComplete?: () => void;
}
interface SlideViewerState {
    currentSlide: number;
    totalSlides: number;
    bookmarks: Map<number, BookmarkType>;
}
interface SlideViewerAPI {
    /** Current viewer state */
    state: SlideViewerState;
    /** Navigate to the next slide */
    next: () => void;
    /** Navigate to the previous slide */
    prev: () => void;
    /** Navigate to a specific slide index */
    goTo: (index: number) => void;
    /** Toggle a bookmark on the current slide */
    toggleBookmark: (type: BookmarkType) => void;
    /** Get all bookmarks as an array of entries */
    getBookmarks: () => Array<{
        slide: number;
        type: BookmarkType;
    }>;
    /** Current progress as a number between 0 and 1 */
    progress: number;
    /** Keyboard handlers for slide navigation */
    keyboardHandlers: KeyboardHandlerMap;
    /** ARIA props for the current slide */
    getSlideAriaProps: () => Partial<AccessibilityProps> & {
        'aria-roledescription'?: string;
    };
}
/**
 * Create a headless slide viewer.
 *
 * Manages slide navigation state, bookmarks, progress tracking,
 * and keyboard navigation. Framework wrappers handle rendering.
 */
declare function createSlideViewer(props: SlideViewerProps): SlideViewerAPI;

declare const slideViewerTokens: TokenContract;
declare const slideViewerVariants: (props?: ({
    size?: "compact" | "default" | "full" | undefined;
} & {
    className?: string;
}) | undefined) => string;
declare const slideViewerProgressBarVariants: (props?: ({
    position?: "top" | "bottom" | "inline" | undefined;
} & {
    className?: string;
}) | undefined) => string;

declare const slideTypeBadgeVariants: (props?: ({
    type?: "lesson" | "quiz" | "exercise" | "intro" | "summary" | undefined;
} & {
    className?: string;
}) | undefined) => string;

export { type BookmarkType, type SlideData, type SlideType, type SlideViewerAPI, type SlideViewerProps, type SlideViewerState, createSlideViewer, slideViewerProgressBarVariants as progressBarVariants, slideTypeBadgeVariants, slideViewerTokens, slideViewerVariants };
