/** Config for composer — loaded once at extension load from /configs/composer.json. */ export declare const DEFAULT_CONFIG: { /** Full box with side borders, or top/bottom horizontal rules only. */ BOXED_VIEW: boolean; /** Horizontal padding inside the box (and around the prefix). */ BOX_PAD_X: number; /** Blank lines between the bottom border and the slash-menu. */ MENU_GAP: number; /** Extra indent (spaces) for slash-menu lines. */ EXTRA_MENU_INDENT: number; /** Theme colour token or hex for the box border. */ BORDER_COLOR: string; /** Prefix glyph shown on the first body line. */ PREFIX: string; /** Theme colour token or hex for the prefix. */ PREFIX_COLOR: string; /** Corner style: "rounded" (╭╮│╰╯) or "square" (┌┐│└┘). */ CORNERS: 'rounded'; /** Restyle the border when this pane has terminal focus (needs tmux focus-events). */ FOCUS_INDICATOR: boolean; /** Theme colour token or hex for the border while the pane is focused. */ FOCUSED_BORDER_COLOR: string; /** Inlay the session name in the border when the session has one. */ SESSION_NAME: boolean; /** Theme colour token or hex for the session name. */ SESSION_NAME_COLOR: string; /** Which end of the border the name sits at. */ SESSION_NAME_POSITION: 'left' | 'right'; /** Surround template; must contain `{name}`. The surrounding glyphs are * painted in the border colour, the name in SESSION_NAME_COLOR. */ SESSION_NAME_FORMAT: string; /** Cell cap for the name before truncating with …; 0 = fit within the rule. */ SESSION_NAME_MAX_WIDTH: number; /** Which border carries the name. */ SESSION_NAME_BORDER: 'top' | 'bottom'; /** Animate the prefix glyph as a spinner while the agent is working. */ SPINNER: boolean; /** Built-in spinner preset (see SPINNERS). Custom spinnerFrames override it. */ SPINNER_STYLE: SpinnerStyle; /** Theme colour token, hex, or "rainbow" for the spinner. */ SPINNER_COLOR: string; /** Animate the border while the agent is working. */ GLOW: boolean; /** "pulse" breathes the border colour; "shimmer" sweeps a highlight along the rules. */ GLOW_STYLE: 'pulse' | 'shimmer'; /** Theme colour token, hex, or "rainbow" the glow animates toward. */ GLOW_COLOR: string; /** Milliseconds per glow cycle. */ GLOW_PERIOD_MS: number; /** Milliseconds per full hue rotation for "rainbow" colours. */ RAINBOW_PERIOD_MS: number; }; /** Built-in spinner presets. Frames may be any cell width — the prefix slot * is sized to the widest frame of the active spinner. Each preset carries a * tuned default interval, overridable with spinnerIntervalMs. */ export declare const SPINNERS: { /** Classic braille dots (pi-style). */ readonly dots: { readonly frames: readonly ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏']; readonly intervalMs: 80; }; /** Dense braille disc with an orbiting gap. */ readonly disc: { readonly frames: readonly ['⣾', '⣽', '⣻', '⢿', '⡿', '⣟', '⣯', '⣷']; readonly intervalMs: 90; }; /** Moon phases (emoji, 2 cells wide). */ readonly moon: { readonly frames: readonly ['🌑', '🌒', '🌓', '🌔', '🌕', '🌖', '🌗', '🌘']; readonly intervalMs: 90; }; /** Twinkling star — flares and dims rather than spinning. */ readonly star: { readonly frames: readonly ['✶', '✸', '✹', '✺', '✹', '✸']; readonly intervalMs: 90; }; /** A dot orbiting a circle. */ readonly orbit: { readonly frames: readonly ['◜', '◠', '◝', '◞', '◡', '◟']; readonly intervalMs: 80; }; /** A quarter-block bouncing around the corners of the cell. */ readonly corners: { readonly frames: readonly ['▖', '▘', '▝', '▗']; readonly intervalMs: 120; }; /** A spinning filled triangle. */ readonly triangle: { readonly frames: readonly ['◢', '◣', '◤', '◥']; readonly intervalMs: 120; }; /** KITT scanner — a comet with a fading tail bouncing across 6 cells. */ readonly scanner: { readonly frames: readonly ['●·····', '•●····', '·•●···', '··•●··', '···•●·', '····•●', '·····●', '····●•', '···●•·', '··●•··', '·●•···', '●•····']; readonly intervalMs: 60; }; /** Scanner's little sibling — 3 cells, no tail. */ readonly 'mini-scanner': { readonly frames: readonly ['●··', '·●·', '··●', '·●·']; readonly intervalMs: 120; }; }; export type SpinnerStyle = keyof typeof SPINNERS; /** Live config — reloadConfig() mutates this object in place, so modules * that read `CONFIG.X` at use time see updates without re-importing. */ export declare const CONFIG: { BOXED_VIEW: boolean; BOX_PAD_X: number; MENU_GAP: number; EXTRA_MENU_INDENT: number; BORDER_COLOR: string; PREFIX: string; PREFIX_COLOR: string; CORNERS: 'rounded' | 'square'; FOCUS_INDICATOR: boolean; FOCUSED_BORDER_COLOR: string; SESSION_NAME: boolean; SESSION_NAME_COLOR: string; SESSION_NAME_POSITION: 'left' | 'right'; SESSION_NAME_FORMAT: string; SESSION_NAME_MAX_WIDTH: number; SESSION_NAME_BORDER: 'top' | 'bottom'; SPINNER: boolean; SPINNER_FRAMES: readonly string[]; SPINNER_INTERVAL_MS: number; SPINNER_COLOR: string; GLOW: boolean; GLOW_STYLE: 'pulse' | 'shimmer'; GLOW_COLOR: string; GLOW_PERIOD_MS: number; RAINBOW_PERIOD_MS: number; }; /** Error from the most recent config load, or null if it loaded cleanly. */ export declare function configLoadError(): string | null; /** Re-read composer.json into CONFIG. On error the previous config is * kept. Returns the error message, or null on success. */ export declare function reloadConfig(): string | null;