discord-player 7.0.0 → 7.1.1-dev.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -2,13 +2,13 @@ import * as discord_js from 'discord.js';
2
2
  import { Client, User, UserResolvable, GuildVoiceChannelResolvable, VoiceChannel, StageChannel, Guild, VoiceState, VoiceBasedChannel, GuildResolvable, Snowflake } from 'discord.js';
3
3
  import Eris from 'eris';
4
4
  import { ListenerSignature, DefaultListener, EventEmitter, Collection, Queue, QueueStrategy } from '@discord-player/utils';
5
- import * as stream from 'stream';
6
5
  import { Readable, Duplex } from 'stream';
7
6
  import * as _discord_player_equalizer from '@discord-player/equalizer';
8
7
  import { EqualizerBand, BiquadFilters, PCMFilters, FiltersChain } from '@discord-player/equalizer';
9
8
  export { AF_NIGHTCORE_RATE, AF_VAPORWAVE_RATE, BASS_EQ_BANDS, FilterType as BiquadFilterType, BiquadFilters, FiltersChain, AudioFilters as PCMAudioFilters, PCMFilters, Q_BUTTERWORTH, VolumeTransformer } from '@discord-player/equalizer';
10
9
  import { AudioResource, StreamType, AudioPlayerError, VoiceConnection, AudioPlayer, AudioPlayerStatus } from 'discord-voip';
11
- export { AudioPlayer, CreateAudioPlayerOptions, JoinConfig, JoinVoiceChannelOptions, createAudioPlayer, getVoiceConnection, getVoiceConnections, joinVoiceChannel } from 'discord-voip';
10
+ export { AudioPlayer, CreateAudioPlayerOptions, JoinConfig, JoinVoiceChannelOptions, StreamType, createAudioPlayer, createAudioResource, getVoiceConnection, getVoiceConnections, joinVoiceChannel } from 'discord-voip';
11
+ import { Transform, Writable, TransformCallback } from 'node:stream';
12
12
  import { RequestOptions } from 'http';
13
13
  import { FFmpegLib } from '@discord-player/ffmpeg';
14
14
  export * from '@discord-player/ffmpeg';
@@ -585,7 +585,7 @@ declare class Track<T = unknown> {
585
585
 
586
586
  interface CreateStreamOps {
587
587
  type?: StreamType;
588
- data?: any;
588
+ data: Track;
589
589
  disableVolume?: boolean;
590
590
  disableEqualizer?: boolean;
591
591
  disableBiquad?: boolean;
@@ -611,6 +611,7 @@ interface VoiceEvents {
611
611
  destroyed: () => any;
612
612
  }
613
613
  declare class StreamDispatcher extends EventEmitter<VoiceEvents> {
614
+ #private;
614
615
  queue: GuildQueue;
615
616
  readonly connectionTimeout: number;
616
617
  voiceConnection: VoiceConnection;
@@ -672,7 +673,7 @@ declare class StreamDispatcher extends EventEmitter<VoiceEvents> {
672
673
  * @param {object} [ops] Options
673
674
  * @returns {AudioResource}
674
675
  */
675
- createStream(src: Readable, ops?: CreateStreamOps): Promise<AudioResource<Track<unknown>>>;
676
+ createStream(src: Readable, ops: CreateStreamOps): Promise<AudioResource<Track<unknown>>>;
676
677
  get resampler(): _discord_player_equalizer.PCMResampler | null;
677
678
  get filters(): _discord_player_equalizer.AudioFilter | null;
678
679
  get biquad(): _discord_player_equalizer.BiquadStream | null;
@@ -732,7 +733,7 @@ declare class StreamDispatcher extends EventEmitter<VoiceEvents> {
732
733
  get streamTime(): number;
733
734
  }
734
735
 
735
- declare class GuildQueueHistory<Meta = unknown> {
736
+ declare class GuildQueueHistory<Meta = any> {
736
737
  queue: GuildQueue<Meta>;
737
738
  tracks: Queue<Track<unknown>>;
738
739
  constructor(queue: GuildQueue<Meta>);
@@ -911,7 +912,7 @@ interface StreamConfig {
911
912
  dispatcherConfig: CreateStreamOps;
912
913
  playerConfig: ResourcePlayOptions;
913
914
  }
914
- declare class GuildQueuePlayerNode<Meta = unknown> {
915
+ declare class GuildQueuePlayerNode<Meta = any> {
915
916
  #private;
916
917
  queue: GuildQueue<Meta>;
917
918
  tasksQueue: AsyncQueue;
@@ -1082,7 +1083,7 @@ declare function FFMPEG_ARGS_PIPED(fmt?: string): string[];
1082
1083
  * @param stream The source stream
1083
1084
  * @param options FFmpeg stream options
1084
1085
  */
1085
- declare function createFFmpegStream(stream: Readable | Duplex | string, options?: FFmpegStreamOptions): Readable | Duplex;
1086
+ declare function createFFmpegStream(stream: Readable | Duplex | string, options?: FFmpegStreamOptions): Readable;
1086
1087
 
1087
1088
  type Filters = keyof typeof AudioFilters.filters;
1088
1089
  type EQPreset = {
@@ -1106,7 +1107,7 @@ type EQPreset = {
1106
1107
  Techno: EqualizerBand[];
1107
1108
  };
1108
1109
  declare const EqualizerConfigurationPreset: Readonly<EQPreset>;
1109
- declare class FFmpegFilterer<Meta = unknown> {
1110
+ declare class FFmpegFilterer<Meta = any> {
1110
1111
  #private;
1111
1112
  af: GuildQueueAudioFilters<Meta>;
1112
1113
  constructor(af: GuildQueueAudioFilters<Meta>);
@@ -1135,7 +1136,7 @@ declare class FFmpegFilterer<Meta = unknown> {
1135
1136
  * @param source The stream source
1136
1137
  * @param options The stream options
1137
1138
  */
1138
- createStream(source: string | Readable, options: FFmpegStreamOptions): Readable | stream.Duplex;
1139
+ createStream(source: string | Readable, options: FFmpegStreamOptions): Readable;
1139
1140
  /**
1140
1141
  * Set ffmpeg filters
1141
1142
  * @param filters The filters
@@ -1199,7 +1200,7 @@ interface GuildQueueAFiltersCache {
1199
1200
  volume: number;
1200
1201
  sampleRate: number;
1201
1202
  }
1202
- declare class GuildQueueAudioFilters<Meta = unknown> {
1203
+ declare class GuildQueueAudioFilters<Meta = any> {
1203
1204
  queue: GuildQueue<Meta>;
1204
1205
  graph: AFilterGraph<Meta>;
1205
1206
  ffmpeg: FFmpegFilterer<Meta>;
@@ -1232,7 +1233,7 @@ declare class GuildQueueAudioFilters<Meta = unknown> {
1232
1233
  */
1233
1234
  triggerReplay(seek?: number): Promise<boolean>;
1234
1235
  }
1235
- declare class AFilterGraph<Meta = unknown> {
1236
+ declare class AFilterGraph<Meta = any> {
1236
1237
  af: GuildQueueAudioFilters<Meta>;
1237
1238
  constructor(af: GuildQueueAudioFilters<Meta>);
1238
1239
  get ffmpeg(): (keyof QueueFilters)[];
@@ -1273,7 +1274,7 @@ interface GuildQueueStatisticsMetadata {
1273
1274
  player: string;
1274
1275
  };
1275
1276
  }
1276
- declare class GuildQueueStatistics<Meta = unknown> {
1277
+ declare class GuildQueueStatistics<Meta = any> {
1277
1278
  queue: GuildQueue<Meta>;
1278
1279
  constructor(queue: GuildQueue<Meta>);
1279
1280
  /**
@@ -1472,7 +1473,7 @@ declare class SyncedLyricsProvider {
1472
1473
  resume(): boolean;
1473
1474
  }
1474
1475
 
1475
- interface GuildNodeInit<Meta = unknown> {
1476
+ interface GuildNodeInit<Meta = any> {
1476
1477
  guild: Guild;
1477
1478
  queueStrategy: QueueStrategy;
1478
1479
  equalizer: EqualizerBand[] | boolean;
@@ -1506,6 +1507,8 @@ interface GuildNodeInit<Meta = unknown> {
1506
1507
  disableBiquad: boolean;
1507
1508
  disableResampler: boolean;
1508
1509
  disableFallbackStream: boolean;
1510
+ enableStreamInterceptor: boolean;
1511
+ verifyFallbackStream: boolean;
1509
1512
  }
1510
1513
  interface VoiceConnectConfig {
1511
1514
  deaf?: boolean;
@@ -1518,7 +1521,7 @@ interface PostProcessedResult {
1518
1521
  type: StreamType;
1519
1522
  }
1520
1523
  type OnBeforeCreateStreamHandler = (track: Track, queryType: SearchQueryType, queue: GuildQueue) => Promise<Readable | null>;
1521
- type OnAfterCreateStreamHandler = (stream: Readable, queue: GuildQueue) => Promise<PostProcessedResult | null>;
1524
+ type OnAfterCreateStreamHandler<T = unknown> = (stream: Readable, queue: GuildQueue, track: Track<T>) => Promise<PostProcessedResult | null>;
1522
1525
  type PlayerTriggeredReason = 'filters' | 'normal';
1523
1526
  declare const GuildQueueEvent: {
1524
1527
  /**
@@ -1637,6 +1640,10 @@ declare const GuildQueueEvent: {
1637
1640
  * Emitted when a queue is trying to add similar track for autoplay
1638
1641
  */
1639
1642
  readonly WillAutoPlay: "willAutoPlay";
1643
+ /**
1644
+ * Emitted when sample rate is updated
1645
+ */
1646
+ readonly SampleRateUpdate: "sampleRateUpdate";
1640
1647
  };
1641
1648
  type GuildQueueEvent = (typeof GuildQueueEvent)[keyof typeof GuildQueueEvent];
1642
1649
  declare enum TrackSkipReason {
@@ -1825,6 +1832,13 @@ interface GuildQueueEvents<Meta = any> {
1825
1832
  * @param done Done callback
1826
1833
  */
1827
1834
  [GuildQueueEvent.WillAutoPlay]: (queue: GuildQueue<Meta>, tracks: Track[], done: (track: Track | null) => void) => unknown;
1835
+ /**
1836
+ * Emitted when sample rate is updated
1837
+ * @param queue The queue where this event occurred
1838
+ * @param oldRate The old sample rate
1839
+ * @param newRate The new sample rate
1840
+ */
1841
+ [GuildQueueEvent.SampleRateUpdate]: (queue: GuildQueue<Meta>, oldRate: number, newRate: number) => unknown;
1828
1842
  }
1829
1843
  /**
1830
1844
  * The queue repeat mode. This can be one of:
@@ -1852,7 +1866,7 @@ declare const QueueRepeatMode: {
1852
1866
  readonly AUTOPLAY: 3;
1853
1867
  };
1854
1868
  type QueueRepeatMode = (typeof QueueRepeatMode)[keyof typeof QueueRepeatMode];
1855
- declare class GuildQueue<Meta = unknown> {
1869
+ declare class GuildQueue<Meta = any> {
1856
1870
  #private;
1857
1871
  player: Player;
1858
1872
  options: GuildNodeInit<Meta>;
@@ -1870,6 +1884,10 @@ declare class GuildQueue<Meta = unknown> {
1870
1884
  tasksQueue: AsyncQueue;
1871
1885
  syncedLyricsProvider: SyncedLyricsProvider;
1872
1886
  constructor(player: Player, options: GuildNodeInit<Meta>);
1887
+ /**
1888
+ * Whether this queue can intercept streams
1889
+ */
1890
+ canIntercept(): boolean;
1873
1891
  /**
1874
1892
  * Estimated duration of this queue in ms
1875
1893
  */
@@ -2010,6 +2028,18 @@ declare class GuildQueue<Meta = unknown> {
2010
2028
  * @param track The track to remove
2011
2029
  */
2012
2030
  removeTrack(track: TrackResolvable): Track<unknown> | null;
2031
+ /**
2032
+ * Prepends a track or track resolvable to the queue
2033
+ * @param track The track resolvable to insert
2034
+ * @param index The index to insert the track at (defaults to 0). If > 0, the inserted track will be placed before the track at the given index.
2035
+ */
2036
+ prepend(track: Track | Queue<Track> | Array<Track>, index?: number): void;
2037
+ /**
2038
+ * Appends a track or track resolvable to the queue
2039
+ * @param track The track resolvable to insert
2040
+ * @param index The index to insert the track at (defaults to 0). If > 0, the inserted track will be placed after the track at the given index.
2041
+ */
2042
+ append(track: Track | Queue<Track> | Array<Track>, index?: number): void;
2013
2043
  /**
2014
2044
  * Inserts the track to the given index
2015
2045
  * @param track The track to insert
@@ -2106,7 +2136,7 @@ declare class GuildQueue<Meta = unknown> {
2106
2136
  get hasDebugger(): boolean;
2107
2137
  }
2108
2138
 
2109
- interface GuildNodeCreateOptions<T = unknown> {
2139
+ interface GuildNodeCreateOptions<T = any> {
2110
2140
  strategy?: QueueStrategy;
2111
2141
  volume?: number;
2112
2142
  equalizer?: EqualizerBand[];
@@ -2139,11 +2169,13 @@ interface GuildNodeCreateOptions<T = unknown> {
2139
2169
  disableBiquad?: boolean;
2140
2170
  disableResampler?: boolean;
2141
2171
  disableFallbackStream?: boolean;
2172
+ enableStreamInterceptor?: boolean;
2173
+ verifyFallbackStream?: boolean;
2142
2174
  }
2143
2175
  type NodeResolvable = GuildQueue | GuildResolvable;
2144
- declare class GuildNodeManager<Meta = unknown> {
2176
+ declare class GuildNodeManager<Meta = any> {
2145
2177
  player: Player;
2146
- cache: Collection<string, GuildQueue<unknown>>;
2178
+ cache: Collection<string, GuildQueue<any>>;
2147
2179
  constructor(player: Player);
2148
2180
  /**
2149
2181
  * Create guild queue if it does not exist
@@ -2311,7 +2343,10 @@ declare function useQueue<Meta = unknown>(node: NodeResolvable): GuildQueue<Meta
2311
2343
  declare function useMainPlayer(): Player;
2312
2344
 
2313
2345
  type SetterFN$1<T, P> = (previous: P) => T;
2314
- type MetadataDispatch<T> = readonly [() => T, (metadata: T | SetterFN$1<T, T>) => void];
2346
+ type MetadataDispatch<T> = readonly [
2347
+ () => T,
2348
+ (metadata: T | SetterFN$1<T, T>) => void
2349
+ ];
2315
2350
  /**
2316
2351
  * Fetch or manipulate guild queue metadata
2317
2352
  * @param node Guild queue node resolvable
@@ -2353,7 +2388,10 @@ declare function onAfterCreateStream(handler: OnAfterCreateStreamHandler): void;
2353
2388
  declare function onBeforeCreateStream(handler: OnBeforeCreateStreamHandler): void;
2354
2389
 
2355
2390
  type SetterFN = (previous: number) => number;
2356
- type VolumeDispatch = readonly [() => number, (volume: number | SetterFN) => boolean | undefined];
2391
+ type VolumeDispatch = readonly [
2392
+ () => number,
2393
+ (volume: number | SetterFN) => boolean | undefined
2394
+ ];
2357
2395
  /**
2358
2396
  * Fetch or manipulate player volume
2359
2397
  * @param node Guild queue node resolvable
@@ -2535,6 +2573,80 @@ interface HooksCtx {
2535
2573
  guild: Guild;
2536
2574
  }
2537
2575
 
2576
+ /**
2577
+ * Represents a stream that can be intercepted and consumed without affecting the original consumer.
2578
+ * @example const stream = new InterceptedStream();
2579
+ *
2580
+ * // real consumer
2581
+ * stream.pipe(fs.createWriteStream('file.txt'));
2582
+ *
2583
+ * // man in the middle consumer
2584
+ * const manInTheMiddle = new Writable({
2585
+ * write(chunk, encoding, callback) {
2586
+ * console.log(chunk.toString());
2587
+ * callback();
2588
+ * }
2589
+ * });
2590
+ *
2591
+ * // stream.interceptors is a Set of Writable streams
2592
+ * stream.interceptors.add(manInTheMiddle);
2593
+ */
2594
+ declare class InterceptedStream extends Transform {
2595
+ #private;
2596
+ readonly interceptors: Set<Writable>;
2597
+ /**
2598
+ * Start intercepting the stream. This is the default state of InterceptedStream.
2599
+ */
2600
+ startIntercepting(): void;
2601
+ /**
2602
+ * Stop intercepting the stream. This will prevent the stream from being consumed by the interceptors.
2603
+ * This can be useful when you want to temporarily stop the interception. The stopped state can be resumed by calling startIntercepting again.
2604
+ */
2605
+ stopIntercepting(): void;
2606
+ /**
2607
+ * Whether the stream is being intercepted
2608
+ */
2609
+ isIntercepting(): boolean;
2610
+ _transform(chunk: Buffer, encoding: BufferEncoding, callback: TransformCallback): void;
2611
+ _final(callback: TransformCallback): void;
2612
+ _destroy(error: Error, callback: TransformCallback): void;
2613
+ }
2614
+
2615
+ type Awaitable<T> = T | PromiseLike<T>;
2616
+ type ShouldInterceptFunction = <T = any>(queue: GuildQueue<T>, track: Track, format: StreamType, stream: InterceptedStream) => Awaitable<boolean>;
2617
+ type OnInterceptedStreamHandler = <T = any>(queue: GuildQueue<T>, track: Track, format: StreamType, stream: InterceptedStream) => Awaitable<void>;
2618
+ interface PlayerStreamInterceptorOptions {
2619
+ /**
2620
+ * Determines whether the stream should be intercepted.
2621
+ */
2622
+ shouldIntercept?: ShouldInterceptFunction;
2623
+ }
2624
+ declare class PlayerStreamInterceptor {
2625
+ #private;
2626
+ readonly player: Player;
2627
+ private readonly options;
2628
+ /**
2629
+ * Creates a new PlayerStreamInterceptor instance.
2630
+ * @param player The player instance
2631
+ * @param options The interceptor options
2632
+ */
2633
+ constructor(player: Player, options: PlayerStreamInterceptorOptions);
2634
+ /**
2635
+ * Handles the intercepted stream.
2636
+ * @param queue The guild queue
2637
+ * @param track The track
2638
+ * @param stream The intercepted stream
2639
+ * @returns Whether the stream was intercepted
2640
+ */
2641
+ handle<T = unknown>(queue: GuildQueue<T>, track: Track, type: StreamType, stream: InterceptedStream): Promise<boolean>;
2642
+ /**
2643
+ * Adds a new intercepted stream listener.
2644
+ * @param handler The handler
2645
+ * @returns A function to remove the listener
2646
+ */
2647
+ onStream(handler: OnInterceptedStreamHandler): () => void;
2648
+ }
2649
+
2538
2650
  interface PlayerEvents {
2539
2651
  debug: (message: string) => any;
2540
2652
  error: (error: Error) => any;
@@ -2549,7 +2661,7 @@ declare const PlayerEvent: {
2549
2661
  readonly VoiceStateUpdate: "voiceStateUpdate";
2550
2662
  };
2551
2663
  type PlayerEvent = (typeof PlayerEvent)[keyof typeof PlayerEvent];
2552
- interface PlayerNodeInitializationResult<T = unknown> {
2664
+ interface PlayerNodeInitializationResult<T = any> {
2553
2665
  track: Track;
2554
2666
  extractor: BaseExtractor | null;
2555
2667
  searchResult: SearchResult;
@@ -2627,7 +2739,7 @@ declare class Player extends PlayerEventsEmitter<PlayerEvents> {
2627
2739
  /**
2628
2740
  * The player nodes (queue) manager
2629
2741
  */
2630
- nodes: GuildNodeManager<unknown>;
2742
+ nodes: GuildNodeManager<any>;
2631
2743
  /**
2632
2744
  * The voice api utilities
2633
2745
  */
@@ -2677,7 +2789,7 @@ declare class Player extends PlayerEventsEmitter<PlayerEvents> {
2677
2789
  /**
2678
2790
  * Alias to `Player.nodes`.
2679
2791
  */
2680
- get queues(): GuildNodeManager<unknown>;
2792
+ get queues(): GuildNodeManager<any>;
2681
2793
  /**
2682
2794
  * Event loop latency in ms. If your bot is laggy and this returns a number above 20ms for example,
2683
2795
  * some expensive task is being executed on the current thread which is slowing down the event loop.
@@ -2789,7 +2901,7 @@ declare class Player extends PlayerEventsEmitter<PlayerEvents> {
2789
2901
  * @returns {string}
2790
2902
  */
2791
2903
  scanDeps(): string;
2792
- [Symbol.iterator](): Generator<GuildQueue<unknown>, void, undefined>;
2904
+ [Symbol.iterator](): Generator<GuildQueue<any>, void, undefined>;
2793
2905
  /**
2794
2906
  * Creates `Playlist` instance
2795
2907
  * @param data The data to initialize a playlist
@@ -2800,6 +2912,16 @@ declare class Player extends PlayerEventsEmitter<PlayerEvents> {
2800
2912
  * @param resource The audio resource
2801
2913
  */
2802
2914
  createTrackFromAudioResource(resource: AudioResource): Track<Record<string, unknown>>;
2915
+ /**
2916
+ * Handles intercepting streams
2917
+ * @param stream The stream to intercept
2918
+ */
2919
+ handleInterceptingStream(queue: GuildQueue, track: Track, format: StreamType, stream: InterceptedStream): Promise<boolean | undefined>;
2920
+ /**
2921
+ * Creates a global stream interceptor
2922
+ * @param options The stream interceptor options
2923
+ */
2924
+ createStreamInterceptor(options: PlayerStreamInterceptorOptions): PlayerStreamInterceptor;
2803
2925
  }
2804
2926
 
2805
2927
  type SerializedPlaylist = ReturnType<Playlist['serialize']>;
@@ -3204,7 +3326,7 @@ declare class Util {
3204
3326
  static randomChoice<T>(src: T[]): T;
3205
3327
  static arrayCloneShuffle<T>(src: T[]): T[];
3206
3328
  }
3207
- declare const VALIDATE_QUEUE_CAP: (queue: GuildQueue, items: Playlist | Track | Track[]) => void;
3329
+ declare const VALIDATE_QUEUE_CAP: (queue: GuildQueue, items: Playlist | Track | Track[] | number) => void;
3208
3330
 
3209
3331
  declare class DiscordPlayerError extends Error {
3210
3332
  readonly code: ErrorCodes;
@@ -3318,4 +3440,4 @@ declare const DependencyReportGenerator: {
3318
3440
 
3319
3441
  declare const version: string;
3320
3442
 
3321
- export { AFilterGraph, AsyncQueue, type AsyncQueueAcquisitionOptions, AsyncQueueEntry, type AsyncQueueExceptionHandler, AudioFilters, BaseExtractor, Context, type ContextReceiver, type CreateStreamOps, type DependenciesReport, DependencyReportGenerator, DiscordPlayerQueryResultCache, type Encodable, EqualizerConfigurationPreset, ExtractorExecutionContext, type ExtractorExecutionEvents, type ExtractorExecutionFN, type ExtractorExecutionResult, type ExtractorInfo, type ExtractorResolvable, type ExtractorSearchContext, type ExtractorSession, type ExtractorStreamable, FFMPEG_ARGS_PIPED, FFMPEG_ARGS_STRING, FFMPEG_SRATE_REGEX, FFmpegFilterer, type FFmpegReport, type FFmpegStreamOptions, type FilterGraph, type FiltersName, type GuildNodeCreateOptions, type GuildNodeInit, GuildNodeManager, GuildQueue, type GuildQueueAFiltersCache, GuildQueueAudioFilters, GuildQueueEvent, type GuildQueueEvents, GuildQueueHistory, GuildQueuePlayerNode, GuildQueueStatistics, type GuildQueueStatisticsMetadata, type GuildQueueTimeline, type LrcGetParams, type LrcGetResult, LrcLib, type LrcSearchParams, type LrcSearchResult, type MaybeNull, type MetadataDispatch, type NextFunction, type NodeResolvable, type OnAfterCreateStreamHandler, type OnBeforeCreateStreamHandler, type PackageJSON, type PlayOptions, Player, PlayerEvent, type PlayerEvents, PlayerEventsEmitter, type PlayerInitOptions, type PlayerNodeInitializationResult, type PlayerNodeInitializerOptions, type PlayerProgressbarOptions, type PlayerSearchResult, type PlayerTimestamp, type PlayerTriggeredReason, Playlist, type PlaylistInitData, type PlaylistJSON, type PostProcessedResult, QueryCache, type QueryCacheOptions, type QueryCacheProvider, type QueryCacheResolverContext, type QueryExtractorSearch, QueryResolver, QueryType, type QueueFilters, QueueRepeatMode, type RawTrackData, type RequestEntity, type ResolvedQuery, type ResourcePlayOptions, type Runtime, type RuntimeType, type SearchOptions, type SearchQueryType, SearchResult, type SearchResultData, SequentialBucket, type SerializedPlaylist, type SerializedTrack, SerializedType, type SetterFN$1 as SetterFN, type SkipOptions, type StreamConfig, StreamDispatcher, type TimeData, type TimelineDispatcherOptions, Track, type TrackJSON, type TrackLike, type TrackResolvable, TrackSkipReason, type TrackSource, TypeUtil, Util, VALIDATE_QUEUE_CAP, type VoiceConnectConfig, type VoiceEvents, type VoiceStateHandler, VoiceUtils, type WithMetadata, createContext, createErisCompat, createFFmpegStream, decode, deserialize, encode, isErisProxy, onAfterCreateStream, onBeforeCreateStream, serialize, tryIntoThumbnailString, useContext, useHistory, useMainPlayer, useMetadata, usePlayer, useQueue, useTimeline, useVolume, version };
3443
+ export { AFilterGraph, AsyncQueue, type AsyncQueueAcquisitionOptions, AsyncQueueEntry, type AsyncQueueExceptionHandler, AudioFilters, BaseExtractor, Context, type ContextReceiver, type CreateStreamOps, type DependenciesReport, DependencyReportGenerator, DiscordPlayerQueryResultCache, type Encodable, EqualizerConfigurationPreset, ExtractorExecutionContext, type ExtractorExecutionEvents, type ExtractorExecutionFN, type ExtractorExecutionResult, type ExtractorInfo, type ExtractorResolvable, type ExtractorSearchContext, type ExtractorSession, type ExtractorStreamable, FFMPEG_ARGS_PIPED, FFMPEG_ARGS_STRING, FFMPEG_SRATE_REGEX, FFmpegFilterer, type FFmpegReport, type FFmpegStreamOptions, type FilterGraph, type FiltersName, type GuildNodeCreateOptions, type GuildNodeInit, GuildNodeManager, GuildQueue, type GuildQueueAFiltersCache, GuildQueueAudioFilters, GuildQueueEvent, type GuildQueueEvents, GuildQueueHistory, GuildQueuePlayerNode, GuildQueueStatistics, type GuildQueueStatisticsMetadata, type GuildQueueTimeline, InterceptedStream, type LrcGetParams, type LrcGetResult, LrcLib, type LrcSearchParams, type LrcSearchResult, type MaybeNull, type MetadataDispatch, type NextFunction, type NodeResolvable, type OnAfterCreateStreamHandler, type OnBeforeCreateStreamHandler, type OnInterceptedStreamHandler, type PackageJSON, type PlayOptions, Player, PlayerEvent, type PlayerEvents, PlayerEventsEmitter, type PlayerInitOptions, type PlayerNodeInitializationResult, type PlayerNodeInitializerOptions, type PlayerProgressbarOptions, type PlayerSearchResult, PlayerStreamInterceptor, type PlayerStreamInterceptorOptions, type PlayerTimestamp, type PlayerTriggeredReason, Playlist, type PlaylistInitData, type PlaylistJSON, type PostProcessedResult, QueryCache, type QueryCacheOptions, type QueryCacheProvider, type QueryCacheResolverContext, type QueryExtractorSearch, QueryResolver, QueryType, type QueueFilters, QueueRepeatMode, type RawTrackData, type RequestEntity, type ResolvedQuery, type ResourcePlayOptions, type Runtime, type RuntimeType, type SearchOptions, type SearchQueryType, SearchResult, type SearchResultData, SequentialBucket, type SerializedPlaylist, type SerializedTrack, SerializedType, type SetterFN$1 as SetterFN, type ShouldInterceptFunction, type SkipOptions, type StreamConfig, StreamDispatcher, type TimeData, type TimelineDispatcherOptions, Track, type TrackJSON, type TrackLike, type TrackResolvable, TrackSkipReason, type TrackSource, TypeUtil, Util, VALIDATE_QUEUE_CAP, type VoiceConnectConfig, type VoiceEvents, type VoiceStateHandler, VoiceUtils, type WithMetadata, createContext, createErisCompat, createFFmpegStream, decode, deserialize, encode, isErisProxy, onAfterCreateStream, onBeforeCreateStream, serialize, tryIntoThumbnailString, useContext, useHistory, useMainPlayer, useMetadata, usePlayer, useQueue, useTimeline, useVolume, version };