import type { ColorMode } from "../../app/ports/terminal-port.js"; import type { ThemeHint } from "../../ui-core/bootstrap/capabilities.js"; import type { Theme } from "../../ui-core/rendering/theme.js"; import { type Glyphs } from "./glyphs.js"; export type ThemeToken = { [K in keyof Theme]: Theme[K] extends string ? K : never; }[keyof Theme]; export interface TextStyle { readonly fg?: ThemeToken | undefined; readonly bg?: ThemeToken | undefined; readonly bold?: boolean | undefined; readonly dim?: boolean | undefined; readonly italic?: boolean | undefined; readonly inverse?: boolean | undefined; readonly underline?: boolean | undefined; } export interface InkTheme { readonly theme: Theme; readonly colorMode: ColorMode; readonly unicode: boolean; readonly italicOk: boolean; readonly glyphs: Glyphs; inkColor(token: ThemeToken): string | undefined; style(text: string, style: TextStyle): string; fg(token: ThemeToken, text: string): string; hex(color: string, text: string): string; bold(text: string): string; dim(text: string): string; inverse(text: string): string; plate(token: ThemeToken, text: string): string; } export interface InkThemeInput { readonly themeHint: ThemeHint; readonly colorMode: ColorMode; readonly unicode: boolean; readonly italic?: boolean | undefined; } export declare function createInkTheme(input: InkThemeInput): InkTheme; export declare function withColorMode(mode: ColorMode, render: () => T): T;