import { Command } from "commander";
/**
 * Get the duration of a media file using ffprobe
 * For images, returns a default duration since they have no inherent time
 */
export declare function getMediaDuration(filePath: string, mediaType: "video" | "audio" | "image", defaultImageDuration?: number): Promise<number>;
/**
 * Check if a media file has an audio stream
 */
export declare function checkHasAudio(filePath: string): Promise<boolean>;
/**
 * Export result for programmatic usage
 */
export interface ExportResult {
    success: boolean;
    message: string;
    outputPath?: string;
}
/**
 * Gap filling strategy for timeline gaps
 * - "black": Fill gaps with black frames (fallback)
 * - "extend": Extend adjacent clips using source media if available
 */
export type GapFillStrategy = "black" | "extend";
/**
 * Export options
 */
export interface ExportOptions {
    preset?: "draft" | "standard" | "high" | "ultra";
    format?: "mp4" | "webm" | "mov" | "gif";
    overwrite?: boolean;
    gapFill?: GapFillStrategy;
    bitrate?: string;
    fps?: number;
    resolution?: string;
    codec?: "h264" | "h265" | "vp9";
}
export type VideoCodec = "h264" | "h265" | "vp9";
export declare const BITRATE_PATTERN: RegExp;
export declare const RESOLUTION_PATTERN: RegExp;
export declare const VALID_CODECS: VideoCodec[];
export interface CustomOverrides {
    bitrate?: string;
    fps?: number;
    resolution?: string;
    codec?: VideoCodec;
}
export declare function validateOverrides(overrides: CustomOverrides): string | null;
/**
 * Reusable export function for programmatic usage
 */
export declare function runExport(projectPath: string, outputPath: string, options?: ExportOptions): Promise<ExportResult>;
export declare const exportCommand: Command;
export interface PresetSettings {
    resolution: string;
    videoBitrate: string;
    audioBitrate: string;
    ffmpegArgs: string[];
}
export declare function applyCustomOverrides(settings: PresetSettings, overrides: CustomOverrides): PresetSettings;
