import { type OttoTheme, type ThemeId } from '@ottocode/themes'; import type { ThemesType, ThemeTypes } from '@pierre/diffs'; export declare function getPierreThemeName(themeId: ThemeId): string; interface ShikiThemeSetting { scope?: string[]; settings: { foreground?: string; background?: string; fontStyle?: string; }; } interface ShikiThemeRegistration { name: string; type: 'light' | 'dark'; fg: string; bg: string; colors: Record; settings: ShikiThemeSetting[]; } /** * Translates an Otto theme into a Shiki `ThemeRegistration`. Otto themes expose * semantic syntax tokens rather than TextMate scopes, so each token is fanned * out to the scopes Shiki grammars actually emit. */ export declare function ottoThemeToShikiTheme(theme: OttoTheme): ShikiThemeRegistration; /** * Registers the Pierre/Shiki theme backing an Otto theme id. Idempotent, so it * is safe to call on every render or theme switch. */ export declare function ensurePierreTheme(themeId: ThemeId): string; export interface PierreThemeSelection { /** * Both slots point at the same registered theme: Otto resolves the active * theme itself, so Pierre must not fall back to OS preference. */ theme: ThemesType; themeType: ThemeTypes; /** Documented `--diffs-*-override` custom properties for the diff chrome. */ cssVariables: Record; } /** * Resolves everything Pierre needs to render in the given Otto theme: the * registered Shiki theme pair, the explicit light/dark selector, and the * diff-chrome color overrides derived from the Otto palette. */ export declare function resolvePierreTheme(themeId: ThemeId): PierreThemeSelection; export {}; //# sourceMappingURL=pierreTheme.d.ts.map