/** * [WHO]: ThemeContract, getAvailableThemes, ThemeInfo, getAvailableThemesWithPaths, loadThemeFromPath * [FROM]: Depends on node:fs, node:path, @sinclair/typebox, @sinclair/typebox/compiler, chalk * [TO]: Consumed by main.ts, core/extensions-host/runner.ts, core/extensions-host/types.ts, core/runtime/agent-session.ts, core/export-html/index.ts, core/export-html/tool-renderer.ts, modes/interactive/components/*, extensions/optional/export-html/index.ts, extensions/optional/simplify/index.ts * [HERE]: modes/interactive/theme/theme.ts - theme loader and definitions */ import type { EditorTheme, MarkdownTheme, SelectListTheme } from "@catui/tui"; import type { ColorMode, Theme as ThemeContract, ThemeBg, ThemeColor } from "../../../core/theme-contract.js"; export type { ThemeColor, ThemeBg, ColorMode, Theme } from "../../../core/theme-contract.js"; export declare class ThemeImpl implements ThemeContract { readonly name?: string; readonly sourcePath?: string; private fgColors; private bgColors; private mode; constructor(fgColors: Record, bgColors: Record, mode: ColorMode, options?: { name?: string; sourcePath?: string; }); fg(color: ThemeColor, text: string): string; bg(color: ThemeBg, text: string): string; bold(text: string): string; italic(text: string): string; underline(text: string): string; inverse(text: string): string; strikethrough(text: string): string; getFgAnsi(color: ThemeColor): string; getBgAnsi(color: ThemeBg): string; getColorMode(): ColorMode; getThinkingBorderColor(level: "off" | "minimal" | "low" | "medium" | "high" | "xhigh"): (str: string) => string; getBashModeBorderColor(): (str: string) => string; } export declare function getAvailableThemes(): string[]; export interface ThemeInfo { name: string; path: string | undefined; } export declare function getAvailableThemesWithPaths(): ThemeInfo[]; export declare function loadThemeFromPath(themePath: string, mode?: ColorMode): ThemeContract; export declare function getThemeByName(name: string): ThemeContract | undefined; export declare const theme: ThemeContract; export declare function setRegisteredThemes(themes: ThemeContract[]): void; export declare function initTheme(themeName?: string, enableWatcher?: boolean): void; export declare function setTheme(name: string, enableWatcher?: boolean): { success: boolean; error?: string; }; export declare function setThemeInstance(themeInstance: ThemeContract): void; export declare function onThemeChange(callback: () => void): void; export declare function stopThemeWatcher(): void; /** * Get resolved theme colors as CSS-compatible hex strings. * Used by HTML export to generate CSS custom properties. */ export declare function getResolvedThemeColors(themeName?: string): Record; /** * Check if a theme is a "light" theme (for CSS that needs light/dark variants). */ export declare function isLightTheme(themeName?: string): boolean; /** * Get explicit export colors from theme JSON, if specified. * Returns undefined for each color that isn't explicitly set. */ export declare function getThemeExportColors(themeName?: string): { pageBg?: string; cardBg?: string; infoBg?: string; }; /** * Highlight code with syntax coloring based on file extension or language. * Returns array of highlighted lines. */ export declare function highlightCode(code: string, lang?: string): string[]; /** * Get language identifier from file path extension. */ export declare function getLanguageFromPath(filePath: string): string | undefined; export declare function getMarkdownTheme(): MarkdownTheme; export declare function getSelectListTheme(): SelectListTheme; export declare function getEditorTheme(): EditorTheme; export declare function getSettingsListTheme(): import("@catui/tui").SettingsListTheme;