import { LanguageModel, ModelMessage } from 'ai'; import type { Config } from '../config.js'; import { type CliContext } from '../helpers.js'; export type GetResponseOptions = { systemPrompt?: string; signal?: AbortSignal; expectedOutput: 'command' | 'response'; }; export declare class AiProvider { private readonly cliContext; private readonly config; private readonly thinking; private session; model: LanguageModel; constructor(cliContext: CliContext, config: Config, initialModel: LanguageModel); get activeProvider(): string; get activeModel(): string; get activeCollection(): string | undefined; /** @internal */ getConnectionInfo(): { connectionOptions: { connectionString: string; }; id: string; }; /** @internal */ getDatabaseContext(): { databaseName: string; collectionName: string; }; /** @internal */ getSampleDocuments(collectionName: string): Promise[]>; /** @internal */ setInput(text: string): void; /** @internal */ respond(text: string): void; onConfigChange(event: { key: string; value: unknown; }): Promise; ensureCollectionName(prompt: string): Promise; private getSystemPrompt; collection(prompt: string | undefined): void; aggregate(prompt: string): Promise; shell(prompt: string): Promise; private formatResponse; getResponseFromModel(messages: ModelMessage[], { systemPrompt, signal }: Omit): Promise; processResponse(prompt: string, { systemPrompt, signal, expectedOutput, }: GetResponseOptions): Promise; clear(): void; }