import type { PortableTool } from "../portable-tool.js";
export declare const IMAGE_GENERATE_TOOL_NAME: "image_generate";
export interface ImageGenerateToolParams {
    prompt: string;
    purpose?: string;
    style?: string;
    size?: string;
    image_url?: string;
    output_path?: string;
    output_paths?: string[];
    n?: number;
    quality?: string;
    seed?: number;
}
export declare const IMAGE_GENERATE_TOOL_SCHEMA: {
    readonly type: "object";
    readonly properties: {
        readonly prompt: {
            readonly type: "string";
            readonly description: "Image generation prompt. Enrich vague requests with style, lighting, composition, color, mood details.";
        };
        readonly purpose: {
            readonly type: "string";
            readonly description: "Intended use: 'social-media', 'short-video-cover', 'phone-wallpaper', 'avatar', 'poster', etc.";
        };
        readonly style: {
            readonly type: "string";
            readonly description: "Visual art style: 'photorealistic', 'anime', 'watercolor', 'oil-painting', '3d-render', etc.";
        };
        readonly size: {
            readonly type: "string";
            readonly description: "Dimensions: e.g. '1024x1792' (portrait), '1792x1024' (landscape), '1024x1024' (square). Default: '1024x1024'.";
        };
        readonly image_url: {
            readonly type: "string";
            readonly description: string;
        };
        readonly output_path: {
            readonly type: "string";
            readonly description: "Optional absolute or workspace-relative path where the generated image should be saved. Use only for a single generated image.";
        };
        readonly output_paths: {
            readonly type: "array";
            readonly items: {
                readonly type: "string";
            };
            readonly description: "Optional absolute or workspace-relative paths where generated images should be saved. Must match the number of generated images.";
        };
        readonly n: {
            readonly type: "number";
            readonly description: "Number of images to generate (1-4). Default: 1.";
        };
        readonly quality: {
            readonly type: "string";
            readonly description: "Image quality level: 'auto', 'high', 'low', 'hd'. Provider-specific.";
        };
        readonly seed: {
            readonly type: "number";
            readonly description: "Random seed for reproducible generation. Same seed + prompt = same result.";
        };
    };
    readonly required: readonly ["prompt"];
};
export interface ImageGenerateResult {
    mediaUrls: string[];
    model?: string;
    size?: string;
    durationMs?: number;
}
export interface SavedGeneratedImage {
    remoteUrl: string;
    localPath: string;
    bytes: number;
    mimeType: string;
    headerHex?: string;
}
/** Deps injected by the host runtime for image generation. */
export interface ImageGenerateToolDeps {
    /**
     * Generate images via the configured backend (relay, direct API, etc.).
     * The host handles model selection, failover, watermark, and storage.
     */
    generateImage(params: {
        prompt: string;
        purpose?: string;
        style?: string;
        size?: string;
        imageUrl?: string;
        n?: number;
        quality?: string;
        seed?: number;
    }): Promise<ImageGenerateResult>;
    saveGeneratedImages?(params: {
        mediaUrls: string[];
        outputPaths: string[];
    }): Promise<SavedGeneratedImage[]>;
}
export declare function createImageGenerateTool(deps: ImageGenerateToolDeps): PortableTool<ImageGenerateToolParams>;
