lavalink-client
Version:
Easy, flexible and feature-rich lavalink@v4 Client. Both for Beginners and Proficients.
101 lines (100 loc) • 3.75 kB
TypeScript
import { EventEmitter } from "events";
import { LavalinkNode } from "./Node";
import { MiniMap } from "./Utils";
import type { LavalinkNodeIdentifier, LavalinkNodeOptions, NodeManagerEvents } from "./Types/Node";
import type { LavalinkManager } from "./LavalinkManager";
export declare class NodeManager extends EventEmitter {
/**
* Emit an event
* @param event The event to emit
* @param args The arguments to pass to the event
* @returns
*/
emit<Event extends keyof NodeManagerEvents>(event: Event, ...args: Parameters<NodeManagerEvents[Event]>): boolean;
/**
* Add an event listener
* @param event The event to listen to
* @param listener The listener to add
* @returns
*/
on<Event extends keyof NodeManagerEvents>(event: Event, listener: NodeManagerEvents[Event]): this;
/**
* Add an event listener that only fires once
* @param event The event to listen to
* @param listener The listener to add
* @returns
*/
once<Event extends keyof NodeManagerEvents>(event: Event, listener: NodeManagerEvents[Event]): this;
/**
* Remove an event listener
* @param event The event to remove the listener from
* @param listener The listener to remove
* @returns
*/
off<Event extends keyof NodeManagerEvents>(event: Event, listener: NodeManagerEvents[Event]): this;
/**
* Remove an event listener
* @param event The event to remove the listener from
* @param listener The listener to remove
* @returns
*/
removeListener<Event extends keyof NodeManagerEvents>(event: Event, listener: NodeManagerEvents[Event]): this;
/**
* The LavalinkManager that created this NodeManager
*/
LavalinkManager: LavalinkManager;
/**
* A map of all nodes in the nodeManager
*/
nodes: MiniMap<string, LavalinkNode>;
/**
* @param LavalinkManager The LavalinkManager that created this NodeManager
*/
constructor(LavalinkManager: LavalinkManager);
/**
* Disconnects all Nodes from lavalink ws sockets
* @param deleteAllNodes if the nodes should also be deleted from nodeManager.nodes
* @param destroyPlayers if the players should be destroyed
* @returns amount of disconnected Nodes
*/
disconnectAll(deleteAllNodes?: boolean, destroyPlayers?: boolean): Promise<number>;
/**
* Connects all not connected nodes
* @returns Amount of connected Nodes
*/
connectAll(): Promise<number>;
/**
* Forcefully reconnects all nodes
* @returns amount of nodes
*/
reconnectAll(): Promise<number>;
/**
* Create a node and add it to the nodeManager
* @param options The options for the node
* @returns The node that was created
*/
createNode(options: LavalinkNodeOptions): LavalinkNode;
/**
* Get the nodes sorted for the least usage, by a sorttype
* @param sortType The type of sorting to use
* @returns
*/
leastUsedNodes(sortType?: "memory" | "cpuLavalink" | "cpuSystem" | "calls" | "playingPlayers" | "players"): LavalinkNode[];
/**
* Delete a node from the nodeManager and destroy it
* @param node The node to delete
* @param movePlayers whether to movePlayers to different connected node before deletion. @default false
* @returns
*
* @example
* Deletes the node
* ```ts
* client.lavalink.nodeManager.deleteNode("nodeId to delete");
* ```
* Moves players to a different node before deleting
* ```ts
* client.lavalink.nodeManager.deleteNode("nodeId to delete", true);
* ```
*/
deleteNode(node: LavalinkNodeIdentifier | LavalinkNode, movePlayers?: boolean): void;
}