import { Client as DiscordCoreClient, MappedEvents } from '@discordjs/core'; import { CreateWebSocketManagerOptions, WebSocketManager } from '@discordjs/ws'; import { RefClusterManager } from './clusterManager'; import { REST, RESTOptions } from '@discordjs/rest'; import { ClusterClient } from './clusterClient'; export type ShardingCoreClientOptions = { gateway: Omit; rest?: Partial; token: string; }; /** Modified DiscordClient with bunch of new methods. */ export declare class ShardingCoreClient extends DiscordCoreClient { /** Cluster associated with this client. */ cluster: ClusterClient; gateway: WebSocketManager; /** The REST manager of this client. */ rest: REST; private shardsReady; /** Creates an instance of ShardingCoreClient. */ constructor(options: ShardingCoreClientOptions); } export type RefShardingCoreClient = ShardingCoreClient; export declare interface ShardingCoreClient { /** Emit an event. */ emit: ((event: K, ...args: MappedEvents[K]) => boolean) & ((event: Exclude, ...args: unknown[]) => boolean); /** Remove an event listener. */ off: ((event: K, listener: (...args: MappedEvents[K]) => void) => this) & ((event: Exclude, listener: (...args: unknown[]) => void) => this); /** Listen for an event. */ on: ((event: K, listener: (...args: MappedEvents[K]) => void) => this) & ((event: Exclude, listener: (...args: unknown[]) => void) => this); /** Listen for an event once. */ once: ((event: K, listener: (...args: MappedEvents[K]) => void) => this) & ((event: Exclude, listener: (...args: unknown[]) => void) => this); /** Remove all listeners for an event. */ removeAllListeners: ((event?: K) => this) & ((event?: Exclude) => this); }