/** * OpenAI Sora 2 API Types */ export declare const MODELS: readonly ["sora-2", "sora-2-pro"]; export type Model = (typeof MODELS)[number]; export declare const DURATIONS: { readonly 'sora-2': readonly [4, 8, 12]; readonly 'sora-2-pro': readonly [10, 15, 25]; }; export type Sora2Duration = (typeof DURATIONS)['sora-2'][number]; export type Sora2ProDuration = (typeof DURATIONS)['sora-2-pro'][number]; export type Duration = Sora2Duration | Sora2ProDuration; export declare const SIZES: readonly ["1920x1080", "1280x720", "1080x1920", "720x1280", "1080x1080", "480x480"]; export type Size = (typeof SIZES)[number]; export declare const VIDEO_STATUSES: readonly ["queued", "in_progress", "running", "preprocessing", "processing", "completed", "succeeded", "failed", "cancelled"]; export type VideoStatus = (typeof VIDEO_STATUSES)[number]; export declare const DEFAULT_MODEL: Model; export declare const DEFAULT_SIZE: Size; export declare const DEFAULT_SECONDS = 4; export declare const DEFAULT_POLL_INTERVAL = 15000; export declare const DEFAULT_MAX_POLL_ATTEMPTS = 120; export declare const PRICING: { readonly 'sora-2': { readonly '720p': 0.1; readonly default: 0.1; }; readonly 'sora-2-pro': { readonly '720p': 0.3; readonly '1024p': 0.5; readonly default: 0.3; }; }; /** * Parameters for generate_video tool * Note: MCP may pass numeric values as strings, so we accept both */ export interface GenerateVideoParams { prompt: string; model?: Model; size?: Size; seconds?: number | string; input_reference?: string; output_path?: string; } /** * Parameters for remix_video tool */ export interface RemixVideoParams { prompt: string; remix_video_id: string; output_path?: string; } /** * Parameters for get_video_status tool */ export interface GetVideoStatusParams { video_id: string; } /** * Parameters for list_videos tool */ export interface ListVideosParams { limit?: number; } /** * OpenAI Sora API request body for video generation */ export interface SoraVideoGenerationRequest { prompt: string; model?: string; size?: string; seconds?: number; input_reference?: string; } /** * Video generation item in generations array */ export interface SoraVideoGeneration { id: string; } /** * OpenAI Sora API response for video generation */ export interface SoraVideoResponse { id: string; object?: string; status: VideoStatus; video_url?: string; duration?: number; error?: string; failure_reason?: string; created_at?: string | number; finished_at?: string | number | null; generations?: SoraVideoGeneration[]; n_seconds?: number; } /** * Result returned from video generation */ export interface VideoGenerationResult { success: boolean; video_id?: string; video_url?: string; output_path?: string; duration?: number; error?: string; } /** * Validation helpers */ export declare function isValidModel(model: string): model is Model; export declare function isValidSize(size: string): size is Size; export declare function isValidDuration(model: Model, seconds: number | string): boolean; export declare function getValidDurations(model: Model): readonly number[]; export declare function getDefaultDuration(model: Model): number; /** * Calculate cost for a video generation */ export declare function calculateCost(model: Model, seconds: number, size: Size): number; //# sourceMappingURL=tools.d.ts.map