import type { AgentSessionRuntime } from "@earendil-works/pi-coding-agent"; import type { AutocompleteConfig } from "../../config.js"; import type { InputEditor } from "../../input-editor.js"; export type AppAutocompleteControllerHost = { runtime(): AgentSessionRuntime | undefined; inputEditor(): InputEditor; autocompleteConfig(): AutocompleteConfig; isRunning(): boolean; render(): void; }; export type AutocompleteHistoryMessage = { role: "user" | "assistant"; text: string; }; type AutocompleteRunner = typeof completeInputWithPi; export type AppAutocompleteControllerOptions = { completeInputWithPi?: AutocompleteRunner; debounceMs?: number; }; export declare class AppAutocompleteController { private readonly host; private timer; private lastObservedKey; private requestSeq; private suggestion; private activeAbortController; private readonly completeInputWithPi; private readonly debounceOverrideMs; constructor(host: AppAutocompleteControllerHost, options?: AppAutocompleteControllerOptions); observeInput(): void; suggestionText(): string | undefined; acceptSuggestion(): boolean; dispose(): void; private runAutocomplete; private currentTarget; private targetKey; private sameTarget; private currentDebounceMs; private clearTimer; private cancelInFlight; } export declare function completeInputWithPi(runtime: AgentSessionRuntime, draft: string, config: AutocompleteConfig, signal?: AbortSignal): Promise; export declare function autocompleteHistoryFromMessages(messages: readonly unknown[], includeRecentMessages: number): AutocompleteHistoryMessage[]; export declare function buildAutocompletePrompt(input: { cwd: string; draft: string; history: readonly AutocompleteHistoryMessage[]; maxPromptTokens?: number; }): string; export declare function autocompletePromptTokenEstimate(prompt: string, systemPrompt?: string): number; export declare function cleanupCompletion(output: string, draft: string, config?: Pick): string; export {};