import { type AudioKind, type MediaSurface } from './media-models.js';
type ProgressFn = (message: string) => void;
/**
 * Generate a media artifact and write it into the project's files dir.
 *
 * @param {Object} args
 * @param {string} args.projectRoot   - Repo root (.od/ lives directly under).
 * @param {string} args.projectsRoot  - Absolute path to <repo>/.od/projects.
 * @param {string} args.projectId
 * @param {'image'|'video'|'audio'} args.surface
 * @param {string} args.model
 * @param {string} [args.prompt]
 * @param {string} [args.output]
 * @param {string} [args.aspect]
 * @param {number} [args.length]
 * @param {number} [args.duration]
 * @param {string} [args.voice]
 * @param {string} [args.audioKind]
 * @param {string} [args.language]
 * @returns {Promise<{ name: string, size: number, mtime: number, kind: string, mime: string, model: string, surface: string, providerNote: string, providerId: string }>}
 */
export declare function generateMedia(args: {
    projectRoot: string;
    projectsRoot: string;
    projectId: string;
    surface: MediaSurface;
    model: string;
    prompt?: string;
    output?: string;
    aspect?: string;
    length?: number;
    duration?: number;
    voice?: string;
    audioKind?: AudioKind;
    language?: string;
    loop?: boolean;
    promptInfluence?: number;
    compositionDir?: string;
    image?: string;
    onProgress?: ProgressFn;
}): Promise<{
    name: string;
    size: number;
    mtime: number;
    kind: string;
    mime: any;
    model: string;
    surface: MediaSurface;
    providerNote: string;
    providerId: string;
    providerError: string | null;
    usedStubFallback: boolean;
    intentionalStub: boolean;
    warnings: (string | null)[];
}>;
export {};
