/// /// import { Collection, Guild, GuildChannelResolvable } from "discord.js"; import { Player } from "../Player"; import { StreamDispatcher } from "../VoiceInterface/StreamDispatcher"; import Track from "./Track"; import { PlayerOptions, PlayerProgressbarOptions, PlayOptions, QueueFilters, QueueRepeatMode, TrackSource } from "../types/types"; import type { Readable } from "stream"; declare class Queue { #private; readonly guild: Guild; readonly player: Player; connection: StreamDispatcher; tracks: Track[]; previousTracks: Track[]; options: PlayerOptions; playing: boolean; metadata?: T; repeatMode: QueueRepeatMode; readonly id: string; private _streamTime; _cooldownsTimeout: Collection; private _activeFilters; private _filtersUpdate; onBeforeCreateStream: (track: Track, source: TrackSource, queue: Queue) => Promise; /** * Queue constructor * @param {Player} player The player that instantiated this queue * @param {Guild} guild The guild that instantiated this queue * @param {PlayerOptions} [options] Player options for the queue */ constructor(player: Player, guild: Guild, options?: PlayerOptions); /** * Returns current track * @type {Track} */ get current(): Track; /** * If this queue is destroyed * @type {boolean} */ get destroyed(): boolean; /** * Returns current track * @returns {Track} */ nowPlaying(): Track; /** * Connects to a voice channel * @param {GuildChannelResolvable} channel The voice/stage channel * @returns {Promise} */ connect(channel: GuildChannelResolvable): Promise; /** * Destroys this queue * @param {boolean} [disconnect=this.options.leaveOnStop] If it should leave on destroy * @returns {void} */ destroy(disconnect?: boolean): void; /** * Skips current track * @returns {boolean} */ skip(): boolean; /** * Adds single track to the queue * @param {Track} track The track to add * @returns {void} */ addTrack(track: Track): void; /** * Adds multiple tracks to the queue * @param {Track[]} tracks Array of tracks to add */ addTracks(tracks: Track[]): void; /** * Sets paused state * @param {boolean} paused The paused state * @returns {boolean} */ setPaused(paused?: boolean): boolean; /** * Sets bitrate * @param {number|auto} bitrate bitrate to set * @returns {void} */ setBitrate(bitrate: number | "auto"): void; /** * Sets volume * @param {number} amount The volume amount * @returns {boolean} */ setVolume(amount: number): boolean; /** * Sets repeat mode * @param {QueueRepeatMode} mode The repeat mode * @returns {boolean} */ setRepeatMode(mode: QueueRepeatMode): boolean; /** * The current volume amount * @type {number} */ get volume(): number; set volume(amount: number); /** * The stream time of this queue * @type {number} */ get streamTime(): number; set streamTime(time: number); /** * Returns enabled filters * @returns {AudioFilters} */ getFiltersEnabled(): (keyof QueueFilters)[]; /** * Returns disabled filters * @returns {AudioFilters} */ getFiltersDisabled(): (keyof QueueFilters)[]; /** * Sets filters * @param {QueueFilters} filters Queue filters * @returns {Promise} */ setFilters(filters?: QueueFilters): Promise; /** * Seeks to the given time * @param {number} position The position * @returns {boolean} */ seek(position: number): Promise; /** * Plays previous track * @returns {Promise} */ back(): Promise; /** * Clear this queue */ clear(): void; /** * Stops the player * @returns {void} */ stop(): void; /** * Shuffles this queue * @returns {boolean} */ shuffle(): boolean; /** * Removes a track from the queue * @param {Track|string|number} track The track to remove * @returns {Track} */ remove(track: Track | string | number): Track; /** * Returns the index of the specified track. If found, returns the track index else returns -1. * @param {number|Track|string} track The track * @returns {number} */ getTrackPosition(track: number | Track | string): number; /** * Jumps to particular track * @param {Track|number} track The track * @returns {void} */ jump(track: Track | number): void; /** * Jumps to particular track, removing other tracks on the way * @param {Track|number} track The track * @returns {void} */ skipTo(track: Track | number): void; /** * Inserts the given track to specified index * @param {Track} track The track to insert * @param {number} [index=0] The index where this track should be */ insert(track: Track, index?: number): void; /** * @typedef {object} PlayerTimestamp * @property {string} current The current progress * @property {string} end The total time * @property {number} progress Progress in % */ /** * Returns player stream timestamp * @returns {PlayerTimestamp} */ getPlayerTimestamp(): { current: string; end: string; progress: number; }; /** * Creates progress bar string * @param {PlayerProgressbarOptions} options The progress bar options * @returns {string} */ createProgressBar(options?: PlayerProgressbarOptions): string; /** * Total duration * @type {Number} */ get totalTime(): number; /** * Play stream in a voice/stage channel * @param {Track} [src] The track to play (if empty, uses first track from the queue) * @param {PlayOptions} [options] The options * @returns {Promise} */ play(src?: Track, options?: PlayOptions): Promise; /** * Private method to handle autoplay * @param {Track} track The source track to find its similar track for autoplay * @returns {Promise} * @private */ private _handleAutoplay; [Symbol.iterator](): Generator; /** * JSON representation of this queue * @returns {object} */ toJSON(): { id: string; guild: string; voiceChannel: string; options: PlayerOptions; tracks: import("../types/types").TrackJSON[]; }; /** * String representation of this queue * @returns {string} */ toString(): string; } export { Queue };