import { Logger } from 'pino'; import { AudioEncoding } from '../process/AudioEncoding.cjs'; declare const getTrackInfo: (path: string, logger?: Logger) => Promise; declare function getTrackDuration(path: string, logger?: Logger): Promise; /** * CBR bitrates (bps) offered for MP3 output, roughly matching LAME -V9..-V0 */ declare const MP3_CBR_BITRATES: readonly [64000, 80000, 96000, 112000, 128000, 160000, 192000, 224000, 256000, 320000]; /** * Detect whether an MP3 file uses a variable bitrate * Does this by sampling the first few packets and checking if the sizes are different * CBR MP3 files will have the same packet size for the entire file * * Can't really trust the reported bitrate to tell CBR from VBR * LAME writes a Xing header carrying the *average* bitrate, * which ffprobe surfaces as a normal per-stream `bit_rate`, * so a VBR file looks identical to a CBR one by that measure. */ declare function isVbrMp3(path: string): Promise; declare function selectCbrBitrate(averageBitrate: number): number; type TrackInfo = { filename: string; nbStreams: number; nbPrograms: number; formatName: string; formatLongName: string; startTime: number; duration: number; size: number; bitRate: number; probeScore: number; tags?: { majorBrand: string; minorVersion: string; compatibleBrands: string; title: string; track: string; album: string; genre: string; artist: string; encoder: string; mediaType: string; }; }; declare function splitFile(input: string, output: string, start: number, end: number, encoding?: AudioEncoding | null, signal?: AbortSignal | null, logger?: Logger | null): Promise; declare function transcodeFile(input: string, output: string, encoding?: AudioEncoding | null, signal?: AbortSignal | null, logger?: Logger | null): Promise; export { MP3_CBR_BITRATES, getTrackDuration, getTrackInfo, isVbrMp3, selectCbrBitrate, splitFile, transcodeFile };