import type { ModelProvider } from '../../agent/provider.js'; import type { ProviderRouteHints } from '../../agent/providers/index.js'; export interface SuggestContext { model: string; apiKey?: string; baseUrl?: string; cwd: string; getHistory(): string[]; getDropdownTopCandidate(buffer: string): string | null; getTranscriptTail(): string; getUserArc?(): string[]; getLastAssistantResponse?(): string; lastSubmitted?: string; getRecentCommands(): string[]; llmEnabled(): boolean; promptSuggestEnabled?(): boolean; } export interface CompleteRequest { system: string; user: string; model: string; maxTokens: number; signal: AbortSignal; apiKey?: string; baseUrl?: string; } export type CompleteFn = (req: CompleteRequest) => Promise; export interface SuggestEngineOptions { completeFn?: CompleteFn; resolveProviderFn?: (model: string | undefined, hints: ProviderRouteHints | undefined) => ModelProvider; debounceMs?: number; timeoutMs?: number; onError?: (err: unknown) => void; } export interface SuggestEngine { getDeterministicGhost(buffer: string, ctx: SuggestContext): string | null; getGhost(buffer: string, ctx: SuggestContext): Promise; primePromptSuggestion(ctx: SuggestContext): Promise; peekPromptSuggestion(): string | null; clearPromptSuggestion(): void; dispose(): void; }