import type { DesignSystem, DesignToken } from "../engine/registry.js"; export type ThemeSourceKind = "file" | "url" | "generated"; export type ThemeVariantRecipe = "dark" | "warm" | "enterprise" | "high-contrast"; export interface ThemeSourceRef { kind: ThemeSourceKind; value: string; resolved?: string; } export interface ThemeValidationIssue { severity: "error" | "warning"; code: string; message: string; token?: string; mode?: string; } export interface ThemeContrastCheck { pair: string; mode: string; foregroundToken: string; backgroundToken: string; foregroundValue: string; backgroundValue: string; ratio: number | null; status: "pass" | "warn" | "skip"; } export interface ThemeValidationReport { status: "pass" | "warn" | "fail"; issues: ThemeValidationIssue[]; contrast: ThemeContrastCheck[]; summary: { errors: number; warnings: number; totalTokens: number; semanticCoverage: number; missingDarkTokens: number; contrastFailures: number; }; } export interface StoredTheme { schemaVersion: number; kind: "memoire-theme"; name: string; slug: string; importedAt: string; source: ThemeSourceRef; hasDarkMode: boolean; tokens: DesignToken[]; css: string; validation: ThemeValidationReport; summary: { colors: number; spacing: number; radius: number; shadow: number; typography: number; other: number; }; lineage?: { baseTheme: string; recipe: ThemeVariantRecipe; }; } export interface ThemeDiffResult { from: { name: string; slug: string; importedAt: string; }; to: { name: string; slug: string; importedAt: string; }; tokens: { added: string[]; removed: string[]; changed: Array<{ name: string; type: DesignToken["type"]; from: string; to: string; }>; }; highlights: string[]; contrastRegressions: Array<{ pair: string; mode: string; from: number | null; to: number | null; }>; darkMode: { from: boolean; to: boolean; }; } export interface ThemeImportResult { theme: StoredTheme; filePath: string; } export interface ThemeApplyResult { designSystem: DesignSystem; outDir: string; filesWritten: string[]; } export interface ThemePreviewResult { outFile: string; html: string; } export interface ThemePackageArtifacts { themePath: string; previewPath: string; } export declare function importThemeFromSource(input: { arkDir: string; source: string; name?: string; cwd?: string; }): Promise; export declare function saveTheme(arkDir: string, theme: StoredTheme): Promise; export declare function listThemes(arkDir: string): Promise; export declare function getTheme(arkDir: string, reference?: string): Promise; export declare function buildStoredTheme(input: { name: string; source: ThemeSourceRef; css: string; importedAt?: string; lineage?: StoredTheme["lineage"]; }): StoredTheme; export declare function validateThemeTokens(tokens: DesignToken[], hasDarkMode: boolean): ThemeValidationReport; export declare function diffThemes(from: StoredTheme, to: StoredTheme): ThemeDiffResult; export declare function createThemeVariants(baseTheme: StoredTheme, recipes?: ThemeVariantRecipe[]): StoredTheme[]; export declare function applyThemeToProject(input: { theme: StoredTheme; designSystem: DesignSystem; outputDir: string; mode?: "replace" | "merge"; }): Promise; export declare function writeThemePreview(theme: StoredTheme, outFile: string): Promise; export declare function writeThemePackageArtifacts(outDir: string, theme: StoredTheme): Promise; export declare function generateThemeCss(tokens: DesignToken[]): string; export declare function generateThemePreviewHtml(theme: StoredTheme): string; export declare function slugifyThemeName(value: string): string;