import type { CenterClient } from "../center/center-client.js";
import { type WorkerLlmConfig } from "./render-runner.js";
/**
 * Render-worker analogue of CenterFrontend. A render worker (--render) has no
 * Agent/Chrome: it connects to center with the SAME CenterClient + bootstrap,
 * advertises itself via `hello`, and handles `task_dispatch` envelopes whose
 * `kind` is "render" by running ffmpeg (download inputs → compose/merge →
 * upload to R2) and reporting a structured `task_event { finished, result }`.
 *
 * It imports nothing from src/agent, src/browser, or src/llm — render is fully
 * isolated from the shared agent core (SYNC.md safe).
 */
export interface RenderFrontendOpts {
    client: CenterClient;
    workerId: string;
    version?: string;
    /** Scratch dir for ffmpeg temp files. */
    workspace: string;
    /** The worker's own llm_profile (image gen + profile TTS). */
    llm?: WorkerLlmConfig;
    logger?: {
        info: (m: string) => void;
        warn: (m: string) => void;
        error: (m: string) => void;
    };
}
export declare class RenderFrontend {
    private readonly client;
    private readonly workerId;
    private readonly version;
    private readonly workspace;
    private readonly llm?;
    private readonly logger;
    private inFlight;
    private heartbeatTimer;
    private detachers;
    private currentStatus;
    constructor(opts: RenderFrontendOpts);
    start(): Promise<void>;
    stop(): Promise<void>;
    private sendHello;
    private handleIncoming;
    private handleDispatch;
    private emitEvent;
    private sendStatus;
}
