import type { MediaCapability, MediaRequest } from "./provider-core-facade.js";
export type MediaMode = "text2image" | "img2img" | "inpainting" | "outpainting" | "text2video" | "img2video" | "first_last_frame" | "video2video" | "multimodal_reference" | "edit" | "merge" | "upscale" | "extend" | "text2music" | "cover" | "realtime" | "text2speech" | "voice_clone" | "text2_3d" | "img2_3d" | "speech2text";
export interface MediaCapabilityLimits {
    sizes?: string[];
    resolutions?: string[];
    aspectRatios?: string[];
    fps?: number[];
    durationSeconds?: {
        min?: number;
        max?: number;
    };
    maxReferenceImages?: number;
    maxReferenceVideos?: number;
    maxReferenceAudios?: number;
    maxSourceVideos?: number;
    maxOutputs?: number;
    voices?: string[];
    maxCharacters?: number;
    formats?: string[];
    outputFormats?: string[];
}
export interface MediaCapabilityFeatures {
    transparentBackground?: boolean;
    generateAudio?: boolean;
    returnLastFrame?: boolean;
    serviceTiers?: string[];
    videoTools?: string[];
}
export interface NormalizedMediaCapabilitySchema {
    mediaType: MediaCapability;
    modes: MediaMode[];
    declaredModes: MediaMode[];
    limits: MediaCapabilityLimits;
    features: MediaCapabilityFeatures;
    source: "declared" | "fallback";
    raw?: Record<string, unknown>;
}
export type MediaCapabilityDecision = {
    allowed: true;
    mode: MediaMode;
    reason?: undefined;
} | {
    allowed: false;
    mode: MediaMode;
    reason: string;
};
export declare function normalizeMediaCapabilitySchema(mediaType: MediaCapability, rawCapabilities: unknown): NormalizedMediaCapabilitySchema;
export declare function resolveMediaCapabilityDecision(request: MediaRequest, schema: NormalizedMediaCapabilitySchema): MediaCapabilityDecision;
export declare function buildMediaToolParameterSchema(toolName: string, baseSchema: Record<string, unknown>, capability: NormalizedMediaCapabilitySchema): Record<string, unknown>;
