import type { RenderResultPayload, RenderSpecPayload } from "dp-shared";
/**
 * Execute one worker task:
 *   - produce_shot: GENERATE the visual (worker's profile image key, or a
 *     pre-resolved stock URL) + voice (profile TTS / free edge-tts), then ffmpeg
 *     compose (Ken Burns for stills) → upload. All on the worker's machine.
 *   - merge: concat the shot clips (+ optional BGM) → upload.
 * Returns the structured RenderResult the center persists to task_runs.result_json.
 */
/** The worker's own bootstrap llm_profile — used for image gen + profile TTS. */
export interface WorkerLlmConfig {
    baseUrl: string;
    apiKey: string;
    model: string;
    imageGeneration?: {
        apiKey: string;
        model: string;
    };
}
export interface RunRenderOpts {
    workspace: string;
    llm?: WorkerLlmConfig;
    signal?: AbortSignal;
    logger?: {
        info: (m: string) => void;
        warn: (m: string) => void;
        error: (m: string) => void;
    };
}
export declare function runRender(spec: RenderSpecPayload, opts: RunRenderOpts): Promise<RenderResultPayload>;
