interface ChatCompletionRequest { messages: Message[]; model: string; frequency_penalty?: number | null; presence_penalty?: number | null; logit_bias?: { [token: string]: number; }; logprobs?: boolean | null; top_logprobs?: number | null; max_tokens?: number | null; n?: number | null; stop?: string | string[] | null; stream?: boolean | null; stream_options?: StreamOptions | null; temperature?: number | null; top_p?: number | null; tools?: Tool[]; tool_choice?: 'none' | 'auto' | 'required' | { type: 'function'; function: { name: string; }; } | null; parallel_tool_calls?: boolean; user?: string; service_tier?: 'auto' | 'default' | null; response_format?: ResponseFormat | null; seed?: number | null; } interface Message { role: 'user' | 'system' | 'assistant'; content: string; } interface StreamOptions { include_usage: boolean | null; } interface Tool { type: 'function'; function: { name: string; }; } interface ResponseFormat { type: 'json_object'; } interface EmbeddingRequest { input: string | string[] | TokenArray[]; model: string; encoding_format?: 'float' | 'base64'; dimensions?: number; user?: string; } type TokenArray = number[]; interface CreateImageRequest { prompt: string; model?: 'dall-e-2' | 'dall-e-3'; n?: number | null; quality?: 'standard' | 'hd'; response_format?: 'url' | 'b64_json' | null; size?: '256x256' | '512x512' | '1024x1024' | '1792x1024' | '1024x1792'; style?: 'vivid' | 'natural' | null; user?: string; } interface ImageEditRequest { image: File; prompt: string; mask?: File; model?: 'dall-e-2'; n?: number; size?: '256x256' | '512x512' | '1024x1024'; response_format?: 'url' | 'b64_json'; user?: string; } interface ImageObject { id: string; url?: string; b64_json?: string; } interface ImageResponse { images: ImageObject[]; } type SpeechModel = 'tts-1' | 'tts-1-hd'; type VoiceType = 'alloy' | 'echo' | 'fable' | 'onyx' | 'nova' | 'shimmer'; type AudioFormat = 'mp3' | 'opus' | 'aac' | 'flac' | 'wav' | 'pcm'; interface CreateSpeechRequest { model: SpeechModel; input: string; voice: VoiceType; response_format?: AudioFormat; speed?: number; } interface CreateTranscriptionRequest { input: Blob; model: 'whisper-1'; language?: string; prompt?: string; responseFormat?: 'json' | 'text' | 'srt' | 'verbose_json' | 'vtt'; temperature?: number; timestampGranularities?: Array<'word' | 'segment'>; } export type { ChatCompletionRequest, EmbeddingRequest, CreateImageRequest, ImageEditRequest, ImageResponse, CreateSpeechRequest, CreateTranscriptionRequest };