import type { AgAiConversationItem } from '../../api/ai/agAiMessage'; import type { AgAiExchangeState, AgAiExchangeStatus, AgAiProfileState } from '../../api/state/agAiAssistantState'; import { BeanStub } from '../core/beanStub'; import type { StateProvider } from '../interfaces/stateProvider'; import { AiTurn } from './aiTurn'; import type { AiMessageModel } from './messages/aiMessageModel'; import type { AiToolCallModel } from './messages/toolCallModel'; import type { AnyTool } from './tools/types'; import type { AiExchangeEvents, AiExchangeRunConfig, AiStreamResult } from './types'; export declare class AiExchange extends BeanStub implements StateProvider { readonly id: string; private _status; private readonly turns; private activeTurn; private abortController; private _startedAt; private _completedAt?; private _modelId?; private _profile?; private readonly _userInput; private readonly tools; constructor(options?: { id?: string; startedAt?: number; modelId?: string; profile?: AgAiProfileState; userInput?: AiMessageModel[]; tools?: AnyTool[]; }); get startedAt(): number; get completedAt(): number | undefined; get modelId(): string | undefined; get profile(): AgAiProfileState | undefined; get status(): AgAiExchangeStatus; get isRunning(): boolean; getTurns(): readonly AiTurn[]; getActiveTurn(): AiTurn | null; startTurn(input: AiMessageModel[]): AiTurn; completeTurn(): void; complete(status: 'completed' | 'failed' | 'cancelled'): void; run(config: AiExchangeRunConfig): Promise; abort(): void; toInput(): AgAiConversationItem[]; hasPendingToolCalls(): boolean; getPendingToolCalls(): AiToolCallModel[]; getAllMessages(): AiMessageModel[]; getState(): AgAiExchangeState; setState(state: AgAiExchangeState): void; destroy(): void; private findTerminatingToolCall; }