import type { AppendMessage, ThreadMessage } from "../../types/message.js";
import type { Unsubscribe } from "../../types/unsubscribe.js";
import type { ModelContextProvider } from "../../model-context/types.js";
import { ExportedMessageRepository, MessageRepository } from "../utils/message-repository.js";
import { DefaultThreadComposerRuntimeCore } from "./default-thread-composer-runtime-core.js";
import type { AddToolResultOptions, ResumeToolCallOptions, ThreadSuggestion, SubmitFeedbackOptions, ThreadRuntimeCore, SpeechState, VoiceSessionState, RuntimeCapabilities, ThreadRuntimeEventCallback, ThreadRuntimeEventPayload, ThreadRuntimeEventType, StartRunConfig, ResumeRunConfig } from "../interfaces/thread-runtime-core.js";
import { DefaultEditComposerRuntimeCore } from "./default-edit-composer-runtime-core.js";
import type { SpeechSynthesisAdapter } from "../../adapters/speech.js";
import type { FeedbackAdapter } from "../../adapters/feedback.js";
import type { AttachmentAdapter } from "../../adapters/attachment.js";
import type { RealtimeVoiceAdapter } from "../../adapters/voice.js";
import type { ThreadMessageLike } from "../utils/thread-message-like.js";
type BaseThreadAdapters = {
    speech?: SpeechSynthesisAdapter | undefined;
    feedback?: FeedbackAdapter | undefined;
    attachments?: AttachmentAdapter | undefined;
    voice?: RealtimeVoiceAdapter | undefined;
};
export declare abstract class BaseThreadRuntimeCore implements ThreadRuntimeCore {
    private readonly _contextProvider;
    private _subscriptions;
    private _isInitialized;
    protected readonly repository: MessageRepository;
    abstract get adapters(): BaseThreadAdapters | undefined;
    abstract get isDisabled(): boolean;
    abstract get isLoading(): boolean;
    abstract get suggestions(): readonly ThreadSuggestion[];
    abstract get extras(): unknown;
    abstract get capabilities(): RuntimeCapabilities;
    abstract append(message: AppendMessage): void;
    abstract startRun(config: StartRunConfig): void;
    abstract resumeRun(config: ResumeRunConfig): void;
    abstract addToolResult(options: AddToolResultOptions): void;
    abstract resumeToolCall(options: ResumeToolCallOptions): void;
    abstract cancelRun(): void;
    abstract exportExternalState(): any;
    abstract importExternalState(state: any): void;
    abstract unstable_loadExternalState(state: any): void;
    protected _voiceMessages: ThreadMessage[];
    protected _voiceGeneration: number;
    private _cachedMergedMessages;
    private _cachedVoiceGeneration;
    private _cachedMergedBase;
    protected _markVoiceMessagesDirty(): void;
    protected _getBaseMessages(): readonly ThreadMessage[];
    get messages(): readonly ThreadMessage[];
    get state(): string | number | boolean | import("assistant-stream/utils").ReadonlyJSONObject | import("assistant-stream/utils").ReadonlyJSONArray | null;
    readonly composer: DefaultThreadComposerRuntimeCore;
    constructor(_contextProvider: ModelContextProvider);
    getModelContext(): import("../..").ModelContext;
    private _editComposers;
    getEditComposer(messageId: string): DefaultEditComposerRuntimeCore | undefined;
    beginEdit(messageId: string): void;
    getMessageById(messageId: string): {
        parentId: string | null;
        message: ThreadMessage;
        index: number;
    } | undefined;
    getBranches(messageId: string): string[];
    switchToBranch(branchId: string): void;
    protected _notifySubscribers(): void;
    _notifyEventSubscribers<E extends ThreadRuntimeEventType>(event: E, payload: ThreadRuntimeEventPayload[E]): void;
    subscribe(callback: () => void): Unsubscribe;
    submitFeedback({ messageId, type }: SubmitFeedbackOptions): void;
    private _stopSpeaking;
    speech: SpeechState | undefined;
    speak(messageId: string): void;
    stopSpeaking(): void;
    private _voiceSession;
    private _voiceUnsubs;
    voice: VoiceSessionState | undefined;
    private _voiceVolume;
    private _voiceVolumeSubscribers;
    getVoiceVolume: () => number;
    subscribeVoiceVolume: (callback: () => void) => Unsubscribe;
    connectVoice(): void;
    private _currentAssistantMsg;
    private _handleVoiceTranscript;
    private _finishVoiceAssistantMessage;
    disconnectVoice(): void;
    muteVoice(): void;
    unmuteVoice(): void;
    protected ensureInitialized(): void;
    export(): ExportedMessageRepository;
    import(data: ExportedMessageRepository): void;
    reset(initialMessages?: readonly ThreadMessageLike[]): void;
    private _eventSubscribers;
    unstable_on<E extends ThreadRuntimeEventType>(event: E, callback: ThreadRuntimeEventCallback<E>): Unsubscribe;
}
export {};
//# sourceMappingURL=base-thread-runtime-core.d.ts.map