import type { Attachment, CreateAttachment } from "../../types/attachment.js";
import type { MessageRole, AppendMessage } from "../../types/message.js";
import type { QuoteInfo } from "../../types/quote.js";
import type { RunConfig } from "../../types/message.js";
import { BaseSubscribable } from "../../subscribable/subscribable.js";
import { type AttachmentAdapter } from "../../adapters/attachment.js";
import type { ComposerRuntimeCore, ComposerRuntimeEventCallback, ComposerRuntimeEventPayload, ComposerRuntimeEventType, DictationState, SendOptions } from "../interfaces/composer-runtime-core.js";
import type { DictationAdapter } from "../../adapters/speech.js";
export declare abstract class BaseComposerRuntimeCore extends BaseSubscribable implements ComposerRuntimeCore {
    readonly isEditing = true;
    protected abstract getAttachmentAdapter(): AttachmentAdapter | undefined;
    protected abstract getDictationAdapter(): DictationAdapter | undefined;
    get attachmentAccept(): string;
    private _attachments;
    get attachments(): readonly Attachment[];
    protected setAttachments(value: readonly Attachment[]): void;
    abstract get canCancel(): boolean;
    get isEmpty(): boolean;
    private _text;
    get text(): string;
    private _role;
    get role(): "system" | "user" | "assistant";
    private _runConfig;
    get runConfig(): RunConfig;
    private _quote;
    get quote(): QuoteInfo | undefined;
    setQuote(quote: QuoteInfo | undefined): void;
    setText(value: string): void;
    setRole(role: MessageRole): void;
    setRunConfig(runConfig: RunConfig): void;
    private _emptyTextAndAttachments;
    private _onClearAttachments;
    reset(): Promise<void>;
    clearAttachments(): Promise<void>;
    send(options?: SendOptions): Promise<void>;
    cancel(): void;
    protected abstract handleSend(message: Omit<AppendMessage, "parentId" | "sourceId">, options?: SendOptions): void;
    protected abstract handleCancel(): void;
    addAttachment(fileOrAttachment: File | CreateAttachment): Promise<void>;
    private _safeEmitAttachmentAddError;
    removeAttachment(attachmentId: string): Promise<void>;
    private _dictation;
    private _dictationSession;
    private _dictationUnsubscribes;
    private _dictationBaseText;
    private _currentInterimText;
    private _dictationSessionIdCounter;
    private _activeDictationSessionId;
    private _isCleaningDictation;
    get dictation(): DictationState | undefined;
    private _isActiveSession;
    startDictation(): void;
    stopDictation(): void;
    private _cleanupDictation;
    private _eventSubscribers;
    protected _notifyEventSubscribers<E extends ComposerRuntimeEventType>(event: E, payload: ComposerRuntimeEventPayload[E]): void;
    unstable_on<E extends ComposerRuntimeEventType>(event: E, callback: ComposerRuntimeEventCallback<E>): () => void;
}
//# sourceMappingURL=base-composer-runtime-core.d.ts.map