import { AudioInfo, AudioQuality, AudioQualityEnum, VideoInfo, VideoQuality, VideoQualityEnum } from './types';
export declare class QualityService {
    private readonly videoQualities;
    private readonly audioQualities;
    private readonly videoQualityMap;
    private readonly audioQualityMap;
    constructor(videoQualities?: VideoQualityEnum[], audioQualities?: AudioQualityEnum[]);
    /**
     * Determine the appropriate quality for a video
     * @param video The video to determine quality for
     * @returns The appropriate quality level
     */
    determineVideoQuality(video: VideoInfo): VideoQuality;
    /**
     * Determine the appropriate audio quality for a video
     * @param audio The video to determine audio quality for
     * @returns The appropriate audio quality level
     */
    determineAudioQuality(audio: AudioInfo): AudioQuality;
    /**
     * Parse a quality string into a Quality object
     * @param qualityStr The quality string to parse
     * @throws Error if the quality string is invalid
     */
    parseVideoQuality(qualityStr: string): VideoQuality;
    /**
     * Parse a quality string into an AudioQuality object
     * @param qualityStr The quality string to parse
     * @throws Error if the quality string is invalid
     */
    parseAudioQuality(qualityStr: string): AudioQuality;
    /**
     * Gets the available qualities for a video
     * @param video The video to get qualities for
     * @returns An array of available qualities for the video
     */
    getVideoQualities(video: VideoInfo): VideoQuality[];
    /**
     * Get the non-transcode video qualities
     */
    getNonTranscodeVideoQualities(): VideoQuality;
    /**
     * Builds a valid audio quality object based on the provided quality and audio info
     * @param quality The desired audio quality
     * @param audioInfo The audio info object containing bitrate information
     */
    buildValidAudioQuality(quality: AudioQualityEnum, audioInfo: AudioInfo): AudioQuality;
    /**
     * Builds a valid video quality object based on the provided quality and video info
     * @param quality The desired video quality
     * @param videoInfo The video info object containing bitrate and height information
     */
    buildValidVideoQuality(quality: VideoQualityEnum, videoInfo: VideoInfo): VideoQuality;
}
//# sourceMappingURL=qualityService.d.ts.map