import { TargetTextRange } from './target-text-range.data.model';
import { RewriterEventTypes } from '../../utils/enums';
export type OpenAiModel = 'gpt-5.4' | 'gpt-5.4-pro' | 'gpt-5.4-mini' | 'gpt-5.4-nano' | 'gpt-5-mini' | 'gpt-5-nano' | 'gpt-5' | 'gpt-4.1' | 'gpt-4o' | 'gpt-4o-mini' | 'gpt-4-turbo' | 'o3-pro' | 'o3' | 'o3-mini' | 'o4-mini';
export type AnthropicModel = 'claude-opus-4-6' | 'claude-sonnet-4-6' | 'claude-haiku-4-5' | 'claude-sonnet-4-5' | 'claude-opus-4-5' | 'claude-opus-4-1' | 'claude-sonnet-4-0' | 'claude-opus-4-0';
export type GeminiModel = 'gemini-3.1-pro-preview' | 'gemini-3-flash-preview' | 'gemini-3.1-flash-lite-preview' | 'gemini-2.5-flash' | 'gemini-2.5-flash-lite' | 'gemini-2.5-pro';
export type AiModel = OpenAiModel | AnthropicModel | GeminiModel | (string & NonNullable<unknown>);
export interface TextSelectedEvent {
    selectionId: string;
    text: string;
    targetTextRange: TargetTextRange;
}
export interface RewriterAskAiRequest {
    model: AiModel;
    prompt: string;
    selectedText: string;
}
export interface RewriterReplaceTextRequest {
    text: string;
    event: TextSelectedEvent;
}
export interface RewriterAddCommentRequest {
    text: string;
    event: TextSelectedEvent;
}
export interface RewriterAskAiResponse {
    text: string;
    success: boolean;
    error?: string;
}
export interface RewriterReplaceTextResponse {
    success: boolean;
    originalText: string;
    replacedText: string;
    error?: string;
}
export interface RewriterAddCommentResponse {
    success: boolean;
    annotationId?: string;
    commentText?: string;
    error?: string;
}
export type RewriterEventTypesMap = {
    [RewriterEventTypes.TEXT_SELECTED]: TextSelectedEvent;
};
