import { type Model } from "@oh-my-pi/pi-ai";
import { type ModelRegistry } from "../config/model-registry.js";
import type { CustomTool } from "../extensibility/custom-tools/types.js";
export type ImageProvider = "antigravity" | "gemini" | "openai" | "openai-codex" | "openrouter" | "xai";
export type ImageProviderPreference = Exclude<ImageProvider, "openai-codex"> | "auto";
declare const responseModalitySchema: import("arktype/internal/variants/string.ts").StringType<"IMAGE" | "TEXT", {}>;
export declare const imageGenSchema: import("arktype/internal/variants/object.ts").ObjectType<{
    subject: string;
    action?: string | undefined;
    scene?: string | undefined;
    composition?: string | undefined;
    lighting?: string | undefined;
    style?: string | undefined;
    text?: string | undefined;
    changes?: string[] | undefined;
    aspect_ratio?: "16:9" | "1:1" | "2:3" | "3:2" | "3:4" | "4:3" | "9:16" | undefined;
    image_size?: "1024x1024" | "1024x1536" | "1536x1024" | undefined;
    input?: {
        path?: string | undefined;
        data?: string | undefined;
        mime_type?: string | undefined;
    }[] | undefined;
}, {}>;
export type ImageGenParams = typeof imageGenSchema.infer;
export type GeminiResponseModality = typeof responseModalitySchema.infer;
interface GeminiSafetyRating {
    category?: string;
    probability?: string;
}
interface GeminiPromptFeedback {
    blockReason?: string;
    safetyRatings?: GeminiSafetyRating[];
}
interface GeminiUsageMetadata {
    promptTokenCount?: number;
    candidatesTokenCount?: number;
    totalTokenCount?: number;
}
interface OpenAIResponsesUsage {
    input_tokens?: number;
    output_tokens?: number;
    total_tokens?: number;
}
type ImageUsageMetadata = GeminiUsageMetadata | OpenAIResponsesUsage;
interface ImageGenToolDetails {
    provider: ImageProvider;
    model: string;
    imageCount: number;
    imagePaths: string[];
    images: InlineImageData[];
    responseText?: string;
    promptFeedback?: GeminiPromptFeedback;
    revisedPrompt?: string;
    usage?: ImageUsageMetadata;
}
interface InlineImageData {
    data: string;
    mimeType: string;
}
export declare function isImageProviderPreference(value: unknown): value is ImageProviderPreference;
/** Set the preferred image provider from settings */
export declare function setPreferredImageProvider(provider: ImageProviderPreference): void;
export declare const imageGenTool: CustomTool<typeof imageGenSchema, ImageGenToolDetails>;
export declare function getImageGenTools(_modelRegistry?: ModelRegistry, _activeModel?: Model): Promise<Array<CustomTool<typeof imageGenSchema, ImageGenToolDetails>>>;
export declare function getImageGenToolsWithRegistry(_modelRegistry: ModelRegistry, _activeModel?: Model): Promise<Array<CustomTool<typeof imageGenSchema, ImageGenToolDetails>>>;
export {};
