import { type Component } from "@gajae-code/tui"; import { type KeyDisplayContext } from "../../config/keybindings"; export interface RecentSession { name: string; timeAgo: string; } export interface LspServerInfo { name: string; status: "idle" | "ready" | "error" | "connecting"; fileTypes: string[]; } export type WelcomeLogoMode = "unicode" | "square" | "ascii"; export interface WelcomeComponentOptions { getViewportRows?: () => number | undefined; getReservedBottomRows?: (termWidth: number) => number; changelogMarkdown?: string; rightGutterWidth?: number; collapseChangelog?: boolean; buildLabel?: string; keyDisplayContext?: KeyDisplayContext; } /** * GJC-native launch surface with compact command affordances, project * signals, and a claw/talon mark without copying another agent shell. */ export declare class WelcomeComponent implements Component { #private; private readonly version; private modelName; private providerName; private recentSessions; private lspServers; private readonly logoMode; private readonly options; constructor(version: string, modelName: string, providerName: string, recentSessions?: RecentSession[], lspServers?: LspServerInfo[], logoMode?: WelcomeLogoMode, options?: WelcomeComponentOptions); invalidate(): void; /** * Play a one-shot intro that sweeps the gradient through every phase * before settling on the resting frame. Safe to call multiple times — * subsequent calls reset and replay. */ playIntro(requestRender: () => void): void; dispose(): void; setModel(modelName: string, providerName: string): void; setRecentSessions(sessions: RecentSession[]): void; setLspServers(servers: LspServerInfo[]): void; render(termWidth: number): string[]; } /** Resolve the intro cadence without making tests mutate global process state. */ export declare function resolveWelcomeIntroTickMs(platform?: NodeJS.Platform, tmux?: string | undefined): number;