/**
 * A single selectable scheme row. The `id` is the scheme token committed/
 * previewed; `label` and `description` are the human-readable strings shown.
 */
export interface ThemeDialogItem {
    id: string;
    label: string;
    description?: string;
}
interface ThemeDialogProps {
    /**
     * The schemes to offer. Either bare scheme tokens (label == token) or rich
     * items carrying a friendly label + description.
     */
    themes: Array<string | ThemeDialogItem>;
    onClose: () => void;
    /** Fired on Enter: the chosen scheme token. */
    onSelect: (themeName: string) => void | Promise<void>;
    /**
     * Fired on every highlight move (and on mount): the focused scheme token, so
     * the caller can live-preview a scheme before it is committed.
     */
    onHighlight?: (themeName: string) => void;
}
export declare function ThemeDialog({ themes, onClose, onSelect, onHighlight }: ThemeDialogProps): JSX.Element;
export {};
