import type { Node } from "./node";
import type { Player } from "./player.js";
import type { VoiceServerUpdate, VoiceStateUpdate } from "./playerVoice";
import { Identifiable } from "./tools.js";
export interface FetchOptions {
    cache?: boolean;
    force?: Boolean;
}
export interface PlayerManager<$Node extends Node = Node> {
    get cache(): Map<string, Player<$Node>>;
    has(guild: Identifiable): boolean;
    resolve(guild: Identifiable): Player<$Node> | undefined;
    fetch(cache?: boolean): Promise<Player<$Node>[]>;
    fetch(guild: Identifiable, options?: FetchOptions): Promise<Player<$Node> | undefined>;
    create(guild: Identifiable): Player<$Node>;
    destroy(guild: Identifiable, force?: boolean): Promise<boolean>;
    destroy(): Promise<number>;
    handleVoiceUpdate(update: VoiceStateUpdate | VoiceServerUpdate): Promise<boolean>;
}
export declare class NodePlayerManager<$Node extends Node = Node> implements PlayerManager<$Node> {
    readonly node: $Node;
    readonly cache: Map<string, Player<$Node>>;
    constructor(node: $Node);
    has(guild: Identifiable): boolean;
    resolve(guild: Identifiable): Player<$Node> | undefined;
    create(guild: Identifiable): Player<$Node>;
    fetch(cache?: boolean | undefined): Promise<Player<$Node>[]>;
    fetch(guild: Identifiable, options?: FetchOptions | undefined): Promise<Player<$Node> | undefined>;
    destroy(guild: Identifiable, force?: boolean | undefined): Promise<boolean>;
    destroy(): Promise<number>;
    handleVoiceUpdate(update: VoiceStateUpdate | VoiceServerUpdate): Promise<boolean>;
}
//# sourceMappingURL=players.d.ts.map