import { type MediaCapability, type MediaClient, type MediaRequest, type MediaResult, type ProviderToolAPI } from "./provider-core-facade.js";
import type { MediaFileServiceContext } from "./media-file-api-service.js";
export interface MediaUsageCallbackEvent {
    mediaType: string;
    provider: string;
    model: string;
    billingUnit: string;
    billingQuantity: number;
}
export interface MediaCapabilityCheckEvent {
    mediaType: string;
    provider: string;
    model: string;
    mode: string;
    allowed: boolean;
    reason?: string;
    capabilities: {
        modes: string[];
        source: string;
        limits: Record<string, unknown>;
        features: Record<string, unknown>;
    };
}
export declare function setProviderToolAPI(api: ProviderToolAPI | undefined): void;
export declare function getProviderToolAPI(): ProviderToolAPI | undefined;
export declare function setMediaClientConfig(client: MediaClient | undefined, apiKeys?: Record<string, string>, onMediaUsage?: (event: MediaUsageCallbackEvent) => void, providers?: Partial<Record<MediaCapability, {
    provider: string;
    model: string;
}>>, onMediaProgress?: (taskId: string, mediaType: string, percent: number, status: string, provider?: string) => void, onMediaCapabilityCheck?: (event: MediaCapabilityCheckEvent) => void): void;
export declare function getMediaRuntimeContext(): MediaFileServiceContext;
export declare function runWithMediaOutputDir<T>(outputDir: string | undefined, fn: () => Promise<T>): Promise<T>;
export declare function generateMedia(request: MediaRequest): Promise<MediaResult>;
/**
 * Ensure an image size satisfies the resolved model's minimum resolution.
 * Only applies to models with a known minimum (Volcengine Seedream); everything
 * else is returned unchanged so providers that require small sizes (e.g. OpenAI
 * 1024×1024) keep working. Sub-minimum "WxH" sizes are scaled up preserving
 * aspect ratio; anything unparseable falls back to the always-valid named "2K".
 */
export declare function normalizeImageSize(size: string | undefined, providerId: string | undefined, modelId: string | undefined): string | undefined;
export declare function isMediaAvailable(mediaType: string): boolean;
export declare function isMediaOperationAvailable(mediaType: string, operation: string): boolean;
export declare function isMediaOperationDeclaredAvailable(mediaType: string, operation: string): boolean;
export declare function generateMusicLyrics(prompt: string): Promise<string>;
export declare function cancelMediaTask(params: {
    taskId: string;
    provider?: string;
}): Promise<{
    ok: boolean;
    message: string;
}>;
