UNPKG

andrade-soulseek-downloader

Version:

Simple, safe Soulseek download library with built-in rate limiting to prevent bans

64 lines 2.62 kB
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