import type { PortableTool } from "../portable-tool.js";
export declare const VIDEO_GENERATE_TOOL_NAME: "video_generate";
export interface VideoGenerateToolParams {
    prompt: string;
    purpose?: string;
    style?: string;
    image_url?: string;
    reference_videos?: string[];
    reference_audios?: string[];
    generate_audio?: boolean;
    aspect_ratio?: string;
    duration?: number;
    resolution?: string;
    fps?: number;
    seed?: number;
    camera_fixed?: boolean;
    return_last_frame?: boolean;
    draft?: boolean;
    service_tier?: "default" | "flex";
    callback_url?: string;
    safety_identifier?: string;
    execution_expires_after?: number;
    video_tools?: string[];
}
export declare const VIDEO_GENERATE_TOOL_SCHEMA: {
    readonly type: "object";
    readonly properties: {
        readonly prompt: {
            readonly type: "string";
            readonly description: "Video generation prompt. MUST be in English. Include scene, movement, camera motion, lighting, style.";
        };
        readonly purpose: {
            readonly type: "string";
            readonly description: "Intended use: 'social-media', 'short-video', 'presentation', etc.";
        };
        readonly style: {
            readonly type: "string";
            readonly description: "Visual style: 'cinematic', 'anime', 'watercolor', etc.";
        };
        readonly image_url: {
            readonly type: "string";
            readonly description: string;
        };
        readonly reference_videos: {
            readonly type: "array";
            readonly items: {
                readonly type: "string";
            };
            readonly maxItems: 3;
            readonly description: string;
        };
        readonly reference_audios: {
            readonly type: "array";
            readonly items: {
                readonly type: "string";
            };
            readonly maxItems: 3;
            readonly description: string;
        };
        readonly generate_audio: {
            readonly type: "boolean";
            readonly description: string;
        };
        readonly aspect_ratio: {
            readonly type: "string";
            readonly description: "Video aspect ratio: '9:16' (vertical), '16:9' (horizontal), '1:1' (square). Default: '16:9'.";
        };
        readonly duration: {
            readonly type: "number";
            readonly minimum: 3;
            readonly maximum: 15;
            readonly description: string;
        };
        readonly resolution: {
            readonly type: "string";
            readonly description: "Output resolution: '480p', '720p', '1080p'. Default: '720p'.";
        };
        readonly fps: {
            readonly type: "number";
            readonly description: "Frame rate: 24 or 30 fps. Default: provider-specific.";
        };
        readonly seed: {
            readonly type: "number";
            readonly description: "Random seed for reproducible generation.";
        };
        readonly camera_fixed: {
            readonly type: "boolean";
            readonly description: "Lock camera position (Seedance 1.0/1.5 only, not supported for img2video).";
        };
        readonly return_last_frame: {
            readonly type: "boolean";
            readonly description: "Return last frame URL for chaining continuous video segments.";
        };
        readonly draft: {
            readonly type: "boolean";
            readonly description: "Draft mode: low-cost preview (Seedance 1.5 pro only).";
        };
        readonly service_tier: {
            readonly type: "string";
            readonly enum: readonly ["default", "flex"];
            readonly description: "'default' (online, fast) or 'flex' (offline, ~50% cost). Not all models support flex.";
        };
        readonly callback_url: {
            readonly type: "string";
            readonly description: "Webhook URL for async task completion notification.";
        };
        readonly safety_identifier: {
            readonly type: "string";
            readonly description: "End-user safety identifier for content moderation tracking.";
        };
        readonly execution_expires_after: {
            readonly type: "number";
            readonly description: "Task expiration in seconds (for offline/flex scheduling).";
        };
        readonly video_tools: {
            readonly type: "array";
            readonly items: {
                readonly type: "string";
            };
            readonly description: "Video-level builtin tools, e.g. ['web_search'] (Seedance 2.0 online search).";
        };
    };
    readonly required: readonly ["prompt"];
};
export interface VideoGenerateResult {
    mediaUrls: string[];
    model?: string;
    durationMs?: number;
    lastFrameUrl?: string;
    taskId?: string;
}
/** Deps injected by the host runtime for video generation. */
export interface VideoGenerateToolDeps {
    /**
     * Generate a video clip via the configured backend.
     * The host handles model selection, duration snapping, failover,
     * watermark, and local storage.
     */
    generateVideo(params: {
        prompt: string;
        purpose?: string;
        style?: string;
        imageUrl?: string;
        referenceVideos?: string[];
        referenceAudios?: string[];
        generateAudio?: boolean;
        aspectRatio?: string;
        duration?: number;
        resolution?: string;
        fps?: number;
        seed?: number;
        cameraFixed?: boolean;
        returnLastFrame?: boolean;
        draft?: boolean;
        serviceTier?: "default" | "flex";
        callbackUrl?: string;
        safetyIdentifier?: string;
        executionExpiresAfterSeconds?: number;
        videoTools?: string[];
    }): Promise<VideoGenerateResult>;
}
export declare function createVideoGenerateTool(deps: VideoGenerateToolDeps): PortableTool<VideoGenerateToolParams>;
