aqualink
Version:
An Lavalink client, focused in pure performance and features
368 lines (339 loc) • 11.4 kB
TypeScript
import { EventEmitter } from "events";
declare module "aqualink" {
export class Aqua extends EventEmitter {
constructor(client: any, nodes: NodeOptions[], options?: AquaOptions);
client: any;
nodes: NodeOptions[];
nodeMap: Map<string, Node>;
players: Map<string, Player>;
clientId: string | null;
initiated: boolean;
shouldDeleteMessage: boolean;
defaultSearchPlatform: string;
leaveOnEnd: boolean;
restVersion: string;
plugins: Plugin[];
version: string;
send: (payload: any) => void;
autoResume: boolean;
infiniteReconnects: boolean;
options: AquaOptions;
_leastUsedCache: { nodes: Node[], timestamp: number };
defaultSendFunction(payload: any): void;
get leastUsedNodes(): Node[];
init(clientId: string): Promise<Aqua>;
createNode(options: NodeOptions): Promise<Node>;
destroyNode(identifier: string): void;
updateVoiceState({ d, t }: { d: any, t: string }): void;
fetchRegion(region: string): Node[];
calculateLoad(node: Node): number;
createConnection(options: ConnectionOptions): Player;
createPlayer(node: Node, options: PlayerOptions): Player;
destroyPlayer(guildId: string): Promise<void>;
resolve({ query, source, requester, nodes }: ResolveOptions): Promise<ResolveResponse>;
getRequestNode(nodes: string | Node): Node;
ensureInitialized(): void;
formatQuery(query: string, source: string): string;
handleNoMatches(rest: Rest, query: string): Promise<any>;
constructResponse(response: any, requester: any, requestNode: Node): ResolveResponse;
get(guildId: string): Player;
search(query: string, requester: any, source?: string): Promise<Track[] | null>;
cleanupPlayer(player: Player): Promise<void>;
}
export class Node {
constructor(aqua: Aqua, connOptions: NodeOptions, options?: NodeAdditionalOptions);
aqua: Aqua;
host: string;
name: string;
port: number;
password: string;
secure: boolean;
sessionId: string | null;
regions: string[];
wsUrl: string;
rest: Rest;
resumeTimeout: number;
autoResume: boolean;
reconnectTimeout: number;
reconnectTries: number;
infiniteReconnects: boolean;
connected: boolean;
info: any;
ws: WebSocket | null;
reconnectAttempted: number;
reconnectTimeoutId: NodeJS.Timeout | null;
stats: NodeStats;
initializeStats(): void;
connect(): Promise<void>;
destroy(clean?: boolean): void;
getStats(): Promise<NodeStats>;
}
export class Player extends EventEmitter {
constructor(aqua: Aqua, nodes: Node, options: PlayerOptions);
aqua: Aqua;
nodes: Node;
guildId: string;
textChannel: string;
voiceChannel: string;
connection: Connection;
filters: Filters;
volume: number;
loop: string;
queue: Queue;
previousTracks: Track[];
previousTracksIndex: number;
previousTracksCount: number;
shouldDeleteMessage: boolean;
leaveOnEnd: boolean;
playing: boolean;
paused: boolean;
connected: boolean;
current: Track | null;
position: number;
timestamp: number;
ping: number;
nowPlayingMessage: any;
isAutoplayEnabled: boolean;
isAutoplay: boolean;
play(): Promise<void>;
connect(options: ConnectionOptions): Player;
destroy(): Player;
pause(paused: boolean): Player;
seek(position: number): Player;
stop(): Player;
setVolume(volume: number): Player;
setLoop(mode: string): Player;
setTextChannel(channel: string): Player;
setVoiceChannel(channel: string): Player;
disconnect(): Player;
shuffle(): Player;
getQueue(): Queue;
replay(): Player;
skip(): Player;
searchLyrics(query: string): Promise<any>;
lyrics(): Promise<any>;
updatePlayer(data: any): Promise<void>;
}
export class Track {
constructor(data: any, requester: any, nodes: Node);
info: TrackInfo;
track: string | null;
playlist: any;
requester: any;
nodes: Node;
resolveThumbnail(thumbnail: string): string | null;
resolve(aqua: Aqua): Promise<Track | null>;
}
export class Rest {
constructor(aqua: Aqua, options: RestOptions);
aqua: Aqua;
sessionId: string;
version: string;
baseUrl: string;
headers: any;
secure: boolean;
timeout: number;
client: any;
setSessionId(sessionId: string): void;
makeRequest(method: string, endpoint: string, body?: any): Promise<any>;
updatePlayer(options: { guildId: string, data: any }): Promise<any>;
getPlayers(): Promise<any>;
destroyPlayer(guildId: string): Promise<any>;
getTracks(identifier: string): Promise<any>;
decodeTrack(track: string): Promise<any>;
decodeTracks(tracks: string[]): Promise<any>;
getStats(): Promise<any>;
getInfo(): Promise<any>;
getRoutePlannerStatus(): Promise<any>;
getRoutePlannerAddress(address: string): Promise<any>;
getLyrics(options: { track: Track }): Promise<any>;
}
export class Queue extends Array<any> {
constructor(...elements: any[]);
size: number;
first: any;
last: any;
add(track: any): Queue;
remove(track: any): void;
clear(): void;
shuffle(): void;
peek(): any;
toArray(): any[];
at(index: number): any;
dequeue(): any;
isEmpty(): boolean;
enqueue(track: any): Queue;
}
export class Plugin {
constructor(name: string);
name: string;
load(aqua: Aqua): void;
unload(aqua: Aqua): void;
}
export class Filters {
constructor(player: Player, options?: FilterOptions);
player: Player;
volume: number;
equalizer: any[];
karaoke: any | null;
timescale: any | null;
tremolo: any | null;
vibrato: any | null;
rotation: any | null;
distortion: any | null;
channelMix: any | null;
lowPass: any | null;
bassboost: any | null;
slowmode: any | null;
nightcore: any | null;
vaporwave: any | null;
_8d: any | null;
setEqualizer(bands: any[]): Filters;
setKaraoke(enabled: boolean, options?: any): Filters;
setTimescale(enabled: boolean, options?: any): Filters;
setTremolo(enabled: boolean, options?: any): Filters;
setVibrato(enabled: boolean, options?: any): Filters;
setRotation(enabled: boolean, options?: any): Filters;
setDistortion(enabled: boolean, options?: any): Filters;
setChannelMix(enabled: boolean, options?: any): Filters;
setLowPass(enabled: boolean, options?: any): Filters;
setBassboost(enabled: boolean, options?: any): Filters;
setSlowmode(enabled: boolean, options?: any): Filters;
setNightcore(enabled: boolean, options?: any): Filters;
setVaporwave(enabled: boolean, options?: any): Filters;
set8D(enabled: boolean, options?: any): Filters;
clearFilters(): Promise<Filters>;
updateFilters(): Promise<Filters>;
}
export class Connection {
constructor(player: Player);
playerRef: WeakRef<Player>;
sessionId: string | null;
endpoint: string | null;
token: string | null;
region: string | null;
selfDeaf: boolean;
selfMute: boolean;
voiceChannel: string;
guildId: string;
aqua: Aqua;
nodes: Node;
setServerUpdate(data: any): void;
setStateUpdate(data: any): void;
}
interface AquaOptions {
shouldDeleteMessage?: boolean;
defaultSearchPlatform?: string;
leaveOnEnd?: boolean;
restVersion?: string;
plugins?: Plugin[];
send?: (payload: any) => void;
autoResume?: boolean;
infiniteReconnects?: boolean;
}
interface NodeOptions {
host: string;
name?: string;
port?: number;
password?: string;
secure?: boolean;
sessionId?: string;
regions?: string[];
}
interface NodeAdditionalOptions {
resumeTimeout?: number;
autoResume?: boolean;
reconnectTimeout?: number;
reconnectTries?: number;
infiniteReconnects?: boolean;
}
interface PlayerOptions {
guildId: string;
textChannel: string;
voiceChannel: string;
defaultVolume?: number;
loop?: string;
shouldDeleteMessage?: boolean;
leaveOnEnd?: boolean;
}
interface ConnectionOptions {
guildId: string;
voiceChannel: string;
deaf?: boolean;
mute?: boolean;
}
interface ResolveOptions {
query: string;
source?: string;
requester: any;
nodes?: string | Node;
}
interface ResolveResponse {
loadType: string;
exception: any | null;
playlistInfo: any | null;
pluginInfo: any;
tracks: Track[];
}
interface RestOptions {
secure: boolean;
host: string;
port: number;
sessionId: string;
password: string;
timeout?: number;
}
interface NodeStats {
players: number;
playingPlayers: number;
uptime: number;
memory: {
free: number;
used: number;
allocated: number;
reservable: number;
freePercentage: number;
usedPercentage: number;
};
cpu: {
cores: number;
systemLoad: number;
lavalinkLoad: number;
lavalinkLoadPercentage: number;
};
frameStats: {
sent: number;
nulled: number;
deficit: number;
};
ping: number;
}
interface TrackInfo {
identifier: string;
isSeekable: boolean;
author: string;
length: number;
isStream: boolean;
title: string;
uri: string;
sourceName: string;
artworkUrl: string;
}
interface FilterOptions {
volume?: number;
equalizer?: any[];
karaoke?: any;
timescale?: any;
tremolo?: any;
vibrato?: any;
rotation?: any;
distortion?: any;
channelMix?: any;
lowPass?: any;
bassboost?: any;
slowmode?: any;
nightcore?: any;
vaporwave?: any;
_8d?: any;
}
}