import { type Component } from "@kolisachint/hoocode-tui"; import type { AgentSession } from "../../../core/agent-session.js"; import type { ReadonlyFooterDataProvider } from "../../../core/footer-data-provider.js"; import { type ToolOutputView } from "../../../core/tool-output-view.js"; /** * Footer component that shows pwd, token stats, and context usage. * Computes token/context stats from session, gets git branch and extension statuses from provider. */ /** How many rows the footer takes: everything it has, or the one-row strip. */ export type FooterDensity = "full" | "line"; export declare class FooterComponent implements Component { private session; private footerData; private autoCompactEnabled; private toolOutputView; private sessionChipShown; constructor(session: AgentSession, footerData: ReadonlyFooterDataProvider); setSession(session: AgentSession): void; private density; setAutoCompactEnabled(enabled: boolean): void; /** The view dial's current stop, shown so `alt+o` has somewhere to land. */ setToolOutputView(view: ToolOutputView): void; /** * How many rows the footer is allowed. * * `line` keeps the mark, the mode, the context gauge and the model — what * you glance at — and gives up the path, the branch, the token arrows and * the cost, which are what you look at deliberately and can get back with * one press of the dial. It is a different line, not line 2 with line 1 * deleted: dropping a row would lose the mode, which is the single most * consequential thing the footer says. */ setDensity(density: FooterDensity): void; /** * Whether the input box is carrying a session chip. When it is, line 1 drops * its own copy of the name: saying it twice, six rows apart, teaches the eye * to ignore both, and line 1 is the line that runs out of width first. */ setSessionChipShown(shown: boolean): void; /** * No-op: git branch caching now handled by provider. * Kept for compatibility with existing call sites in interactive-mode. */ invalidate(): void; /** * Clean up resources. * Git watcher cleanup now handled by provider. */ dispose(): void; render(width: number): string[]; /** * Rows that are only there while something is happening, at either density. * * Extension statuses and startup progress are reports on work in flight, so * they survive the compact stop — a download bar that vanished because you * wanted more transcript would be the dial hiding something you cannot get * back by waiting. At `bare` the whole footer is gone and so are these, which * is the one place the dial does cost you something; that is what `bare` * means. */ private transientLines; } //# sourceMappingURL=footer.d.ts.map