import type { JsonSchema } from './json-schema.ts';
import type { Nxtpression } from './nxtpression.ts';
export type RenderProfile = (RenderProfileObject | string) | (RenderProfileObject | string)[];
export interface RenderProfileObject {
    format?: string | JsonSchema;
    model?: string;
    prompt?: Nxtpression<string, Record<string, unknown>>;
    think?: boolean | "high" | "medium" | "low";
    transcribe?: {
        engine: string;
        initialPrompt?: string;
        diarization?: boolean;
    };
    translate?: {
        language: string;
    };
    audio?: {
        codec?: string;
        pan?: string;
        samplerate?: number;
        split?: boolean;
    };
    video?: {
        width?: number;
        height?: number;
    };
    pick?: string[];
    tags?: string[];
    subtitle?: SubtitleProfile | SubtitleProfile["lang"];
}
export interface SubtitleProfile {
    /**
     * Corresponds to a key in `media.subtitles?#languages`, or '_all' to render all languages.
     */
    lang?: string;
    /**
     * Will pick styling from the corresponding `${style}:subtitle-style` asset.
     */
    style?: string;
    ccconverter?: {
        /**
         * This is an ID, which will be used to find a matching `${preset}:ccconverter-preset` record,
         * with settings to pass to ccconverter. If not set, `lang` will be used as a preset ID.
         */
        preset?: string;
    };
    /**
     * Options to pass to encodeASS when generating subtitles for burn-in.
     */
    ass?: {
        futureWordWrapping?: boolean;
        scaledBorderAndShadow?: boolean;
        enableUnsafeLineSpacingHack?: boolean;
    };
}
