///
import { Duplex, PassThrough, Readable } from 'stream';
import { Logger } from 'pino';
import { Channels, FFmpegArgs, FrameSize, OpusInfo, SamplingRate, StreamGetter } from './types';
import * as Api from './api';
export declare const FRAME_SIZE_MAP: number[];
export declare type OpusReader = {
opusInfo: OpusInfo;
opusStream: PassThrough;
};
export declare type OpusOptions = {
bitrateKbps?: number | null;
channels?: Channels;
samplingRate?: SamplingRate;
frameSize?: FrameSize;
};
export declare function getOpusReader(parentLogger: Logger, options?: OpusOptions | null): Promise;
export declare type FFmpegDuration = string;
export declare type FFmpegTempo = number;
export declare type FFmpegVolume = number;
export declare type FFmpegNormalizer = {
integratedLoudness: number;
loudnessRange: number;
maximumPeak: number;
};
export declare type FFmpegCompressor = {
threshold: number;
ratio: number;
attack: number;
release: number;
};
export declare type FileStreamOptions = {
samplingRate?: SamplingRate;
volumeFactor?: FFmpegVolume | null | boolean;
tempoFactor?: FFmpegTempo | null | boolean;
normalizer?: FFmpegNormalizer | null | boolean;
compressor?: FFmpegCompressor | null | boolean;
startAt?: FFmpegDuration | null;
endAt?: FFmpegDuration | null;
ffmpegArgs?: FFmpegArgs;
};
export declare function initAudioStream(event: Api.EventStreamStart, opusInfo: OpusInfo, opusStream: Readable, logger: Logger): StreamGetter;
export declare function getAutoDecodeStream(parentLogger: Logger, options?: FileStreamOptions): Duplex;