import type { ParsedIrcMessage } from "./utils/irc-message"; type InlineMode = "persistent" | "ephemeral"; export declare const IRC_OBSERVATION_LEDGER_MAX_RECORDS = 10000; export declare const IRC_OBSERVATION_LEDGER_MAX_RETAINED_UTF8_BYTES: number; export declare const IRC_OBSERVATION_LEDGER_MAX_SEEN_IDENTITIES = 100000; export declare const __ircLedgerPerfCounters: { enabled: boolean; epochAdvances: number; snapshot(): { epochAdvances: number; }; enable(): void; disable(): void; reset(): void; }; export type IrcObservationRecord = Readonly; /** Runtime-only IRC observations. This intentionally has no persistence layer. */ export declare class IrcObservationLedger { #private; get mutationEpoch(): number; /** Inline observations expire after 10 seconds; closed-panel observations persist inline. */ observe(message: ParsedIrcMessage, panelVisibleAtObservation: boolean): IrcObservationRecord | undefined; getRecord(observationId: string): IrcObservationRecord | undefined; getSidebarRecords(): readonly IrcObservationRecord[]; getInlineProjection(now: number): readonly IrcObservationRecord[]; /** Returns and clears IDs whose retained payload was released. */ drainEvictedObservationIds(): readonly string[]; reset(options?: { retireCurrentSessionIdentities?: boolean; }): void; } export {};