import type { ContextEvent, ExtensionAPI, ExtensionContext } from "@earendil-works/pi-coding-agent"; import { HeadroomHttpClient } from "./client.js"; import type { AgentMessage, HeadroomConfig, HeadroomStats } from "./types.js"; interface HeadroomRuntimeState { enabled: boolean; proxyOnline: boolean | null; proxyStarting: boolean; proxyStartAttempted: boolean; remoteWarningShown: boolean; offlineWarningShown: boolean; processing: boolean; lastInputFingerprint: string | null; lastOutputFingerprint: string | null; lastGuardSkipCandidateFingerprint: string | null; seenCandidateContentFingerprints?: Set; seenCandidateContentOrder?: string[]; lastCompressionTime: number; stats: HeadroomStats; } interface HeadroomRuntime { pi: ExtensionAPI; config: HeadroomConfig; client: HeadroomHttpClient; state: HeadroomRuntimeState; refreshStatus(ctx: ExtensionContext): void; updateHealth(ctx: ExtensionContext): Promise; ensureProxy(ctx: ExtensionContext): Promise; } export default function headroomExtension(pi: ExtensionAPI): void; declare function handleContextCompression(runtime: HeadroomRuntime, event: ContextEvent, ctx: ExtensionContext): Promise<{ messages?: AgentMessage[]; } | undefined>; declare function generateFingerprint(messages: AgentMessage[]): string; declare function isAbortOrTimeoutError(error: unknown): boolean; declare function renderFooterStatus(ctx: ExtensionContext, config: HeadroomConfig, state: HeadroomRuntimeState): string; export declare const __test__: { isAbortOrTimeoutError: typeof isAbortOrTimeoutError; renderFooterStatus: typeof renderFooterStatus; generateFingerprint: typeof generateFingerprint; handleContextCompression: typeof handleContextCompression; }; export {};