import type { VocalAnalysis, VocalDucking, VocalOptions } from "../types/audio.js"; import type { Logger } from "../utils/logger.js"; import type { TempSession } from "../utils/temp.js"; export interface VocalPipelineResult { inputPath: string; outputPath: string; dryRun: boolean; filtersApplied: string[]; effectiveDemucsModel: string; analysis: VocalAnalysis; stemsDir: string | null; normalized: boolean; targetLufs: number | null; /** Set when a picture track from the input was copied into the output. */ keptVideo: boolean; } export interface VocalRemixOptions { vocalGainDb: number; musicGainDb: number; vocalDucking: VocalDucking; } /** Named ducking -> approximate sidechaincompress settings (not a guaranteed max dB). */ export declare function sidechainParamsForDucking(mode: Exclude): string; /** * Build remix filter_complex. * Gains via volume= only; amix always weights='1 1' normalize=0. * Sidechain control is the cleaned vocal (asplit), never the raw stem. */ export declare function buildVocalRemixFilterComplex(options: VocalRemixOptions): string; export declare function runVocalClarityPipeline(options: { inputPath: string; /** Explicit path from the user; its extension decides the container. */ outputPath?: string; /** Where to write when no explicit path was given. */ outputDirectory?: string; processing: VocalOptions; logger: Logger; temp: TempSession; }): Promise;