import type { AutocompleteItem, AutocompleteProvider, AutocompleteSuggestions } from '@earendil-works/pi-tui'; import type { TuiAutocompleteProvider, TuiAutocompleteProviderFactory } from '../../extensions/types/tui.js'; export interface ExtensionSlashCommandAutocompleteItem { originalName?: string; name: string; description: string; } export declare function dedupeAutocompleteItems(items: AutocompleteItem[]): AutocompleteItem[]; export declare class ChainedAutocompleteProvider implements AutocompleteProvider { private readonly primary; private readonly extraProviders; private readonly extensionSlashCommands; private readonly baseSlashCommandNames; private readonly getSessionKey; private readonly cwd; private readonly additionalSlashCommands; constructor(primary: AutocompleteProvider, extraProviders: TuiAutocompleteProvider[], extensionSlashCommands: ExtensionSlashCommandAutocompleteItem[], baseSlashCommandNames: Set, getSessionKey: () => string, cwd: string, additionalSlashCommands?: ExtensionSlashCommandAutocompleteItem[]); getSuggestions(lines: string[], cursorLine: number, cursorCol: number, options: { signal: AbortSignal; force?: boolean; }): Promise; applyCompletion(lines: string[], cursorLine: number, cursorCol: number, item: AutocompleteItem, prefix: string): { lines: string[]; cursorLine: number; cursorCol: number; }; shouldTriggerFileCompletion(lines: string[], cursorLine: number, cursorCol: number): boolean; } export declare class WrappedAutocompleteProvider implements AutocompleteProvider { private readonly baseProvider; private readonly factories; constructor(baseProvider: AutocompleteProvider, factories: TuiAutocompleteProviderFactory[]); private currentProvider; getSuggestions(lines: string[], cursorLine: number, cursorCol: number, options: { signal: AbortSignal; force?: boolean; }): Promise; applyCompletion(lines: string[], cursorLine: number, cursorCol: number, item: AutocompleteItem, prefix: string): { lines: string[]; cursorLine: number; cursorCol: number; }; shouldTriggerFileCompletion(lines: string[], cursorLine: number, cursorCol: number): boolean; }