import { type Component, type ViewportAnchorProvider, type ViewportAnchorRender } from "@gajae-code/tui"; import type { IrcObservationLedger } from "../irc-observation-ledger"; export declare const IRC_SIDEBAR_WIDTH_RATIO = 0.3; export declare const IRC_SIDEBAR_MAX_RENDER_ROWS = 2048; export declare const __ircSidebarPerfCounters: { enabled: boolean; projectionMemoHits: number; projectionMemoMisses: number; recordsVisited: number; sourceBytes: number; rows: number; styledCacheHits: number; styledCacheMisses: number; wrapCalls: number; snapshot(): { projectionMemoHits: number; projectionMemoMisses: number; recordsVisited: number; sourceBytes: number; rows: number; styledCacheHits: number; styledCacheMisses: number; wrapCalls: number; }; enable(): void; disable(): void; reset(): void; }; /** Computes transcript/sidebar widths while preserving at least half the terminal for the transcript. */ export declare function computeIrcSplitWidths(width: number): { leftWidth: number; separatorWidth: number; rightWidth: number; }; /** * Resolves the single shared work-lane geometry. The left lane is used by both * transcript and todo content whenever the IRC lane is effective. */ export declare function computeIrcWorkLaneWidths(width: number, sidebarVisible: boolean): { leftWidth: number; separatorWidth: number; rightWidth: number; }; export declare class IrcLeftLaneComponent implements Component { private readonly content; private readonly isSidebarVisible; constructor(content: Component, isSidebarVisible: (width: number) => boolean); render(width: number): string[]; invalidate(): void; } type SemanticLine = Readonly<{ kind: "header" | "body" | "elision" | "blank"; text: string; sender?: string; recipient?: string; time?: string; }>; export type IrcSidebarSemanticProjection = Readonly<{ token: string; lines: readonly SemanticLine[]; }>; /** The authoritative bounded, display-neutral IRC sidebar projection. */ export declare function getIrcSidebarSemanticProjection(ledger: IrcObservationLedger, width: number): IrcSidebarSemanticProjection; export declare function getIrcSidebarSemanticToken(ledger: IrcObservationLedger, width: number): string; export interface IrcSidebarTheme { fg(color: "dim" | "accent", text: string): string; bold(text: string): string; readonly boxSharp: { readonly vertical: string; }; } export type IrcSidebarThemeSource = IrcSidebarTheme | (() => IrcSidebarTheme); /** Read-only IRC history alongside the active transcript. */ export declare class IrcSplitViewComponent implements ViewportAnchorProvider { #private; private readonly leftPane; private readonly ledger; private readonly componentTheme; constructor(leftPane: Component, ledger: IrcObservationLedger, componentTheme: IrcSidebarThemeSource); getRenderRevision(): bigint; get visible(): boolean; effectiveSidebarVisible(width?: number): boolean; setVisible(visible: boolean): void; invalidateTheme(): void; resetSource(): void; render(width: number): string[]; renderWithViewportAnchors(width: number): ViewportAnchorRender; invalidate(): void; } export {};