andrade-soulseek-downloader
Version:
Simple, safe Soulseek download library with built-in rate limiting to prevent bans
64 lines • 2.62 kB
TypeScript
import { Track } from '../entities';
import { Bitrate } from '../value-objects';
/**
* Domain service for track selection and prioritization.
* Implements quality-first download strategy with progressive fallback.
*/
export declare class TrackSelectionService {
/**
* Groups tracks by bitrate for quality-tiered download attempts.
* @param tracks - Array of available tracks
* @returns Map of bitrate to tracks
*/
groupByBitrate(tracks: Track[]): Map<number, Track[]>;
/**
* Sorts tracks by quality within a bitrate group.
* Prioritizes slot availability, then quality score.
* @param tracks - Tracks to sort
* @returns Sorted tracks (best first)
*/
sortByQuality(tracks: Track[]): Track[];
/**
* @param groups - Bitrate groups map
* @returns Bitrates sorted from highest to lowest
*/
getOrderedBitrates(groups: Map<number, Track[]>): number[];
/**
* Selects best tracks using quality-first strategy.
* @param tracks - All available tracks
* @param maxPerBitrate - Max tracks to select per bitrate tier
* @returns Ordered list of best tracks to attempt
*/
selectBestTracks(tracks: Track[], maxPerBitrate?: number): Track[];
/**
* Filters out tracks below minimum bitrate threshold.
* @param tracks - Tracks to filter
* @param minBitrate - Minimum acceptable bitrate
* @returns Tracks meeting minimum quality
*/
filterByMinimumQuality(tracks: Track[], minBitrate: Bitrate): Track[];
/**
* Filters out tracks above maximum bitrate threshold.
* @param tracks - Tracks to filter
* @param maxBitrate - Maximum acceptable bitrate
* @returns Tracks not exceeding maximum quality
*/
filterByMaximumQuality(tracks: Track[], maxBitrate: Bitrate): Track[];
/**
* Filters tracks by bitrate range.
* @param tracks - Tracks to filter
* @param minBitrate - Minimum acceptable bitrate
* @param maxBitrate - Maximum acceptable bitrate (optional)
* @returns Tracks within quality range
*/
filterByQualityRange(tracks: Track[], minBitrate: Bitrate, maxBitrate?: Bitrate): Track[];
/**
* Validates if track meets quality standards.
* @param track - Track to validate
* @param minBitrate - Minimum bitrate requirement
* @param maxBitrate - Maximum bitrate requirement (optional)
* @returns True if track meets all quality criteria
*/
meetsQualityStandards(track: Track, minBitrate: Bitrate, maxBitrate?: Bitrate): boolean;
}
//# sourceMappingURL=track-selection-service.d.ts.map