import { type EngineConfig, type VideoFrameFormat } from "@hyperframes/engine";
import { type CanvasResolution, type Fps } from "@hyperframes/core";
import type { ProducerLogger } from "./logger.js";
import type { RenderConfig } from "./services/renderOrchestrator.js";
import type { DistributedRenderConfig } from "./services/distributed/plan.js";
import { type SerializableDistributedRenderConfig } from "./services/distributed/renderConfigValidation.js";
export declare const RENDER_REQUEST_VERSION: 1;
export interface DistributedRenderOptions {
    width: number;
    height: number;
    codec?: "h264" | "h265";
    chunkSize?: number;
    maxParallelChunks?: number;
    targetChunkFrames?: number;
    runtimeCap?: DistributedRenderConfig["runtimeCap"];
    rejectOnSystemFonts?: boolean;
    failClosedFontFetch?: boolean;
    cfr?: boolean;
    planDirSizeLimitBytes?: number;
}
/** JSON-safe render intent shared by local, Docker, server and cloud adapters. */
export interface RenderRequestOptions {
    fps: Fps;
    quality: "draft" | "standard" | "high";
    format: NonNullable<RenderConfig["format"]>;
    gifLoop?: number;
    workers?: number;
    useGpu?: boolean;
    debug?: boolean;
    strictness?: RenderConfig["strictness"];
    entryFile?: string;
    crf?: number;
    videoBitrate?: string;
    videoFrameFormat?: VideoFrameFormat;
    hdrMode?: RenderConfig["hdrMode"];
    variables?: Record<string, unknown>;
    outputResolution?: CanvasResolution;
    outputResolutionAspectAgnostic?: boolean;
    engineConfig: EngineConfig;
    distributed?: DistributedRenderOptions;
}
export interface RenderRequest {
    version: typeof RENDER_REQUEST_VERSION;
    projectDir: string;
    outputPath: string;
    options: RenderRequestOptions;
}
export interface CreateRenderRequestInput {
    projectDir: string;
    outputPath: string;
    options: Omit<RenderRequestOptions, "engineConfig">;
    engineConfig?: EngineConfig;
    engineOverrides?: Partial<EngineConfig>;
}
export declare function parseRenderRequest(serialized: string | unknown): RenderRequest;
export declare function serializeRenderRequest(request: RenderRequest): string;
export declare function createRenderRequest(input: CreateRenderRequestInput): RenderRequest;
export declare function renderConfigFromRequest(request: RenderRequest, runtime?: {
    logger?: ProducerLogger;
}): RenderConfig;
export declare function distributedConfigFromRequest(request: RenderRequest, runtime?: {
    logger?: ProducerLogger;
    abortSignal?: AbortSignal;
}): DistributedRenderConfig;
export declare function renderRequestFromDistributedConfig(input: {
    projectDir: string;
    outputPath: string;
    config: SerializableDistributedRenderConfig;
}): RenderRequest;
//# sourceMappingURL=renderRequest.d.ts.map