/// import type Client from "../Client"; import TypedEmitter from "../util/TypedEmitter"; import Bucket from "../rest/Bucket"; import { GatewayOPCodes } from "../Constants"; import type { UpdatePresenceOptions, RequestGuildMembersOptions, UpdateVoiceStateOptions, SendStatuses, BotActivity, ShardStatus } from "../types/gateway"; import type Member from "../structures/Member"; import type { ShardEvents } from "../types/events"; import WebSocket from "ws"; import { inspect } from "node:util"; /** Represents a gateway connection to Discord. See {@link Events~ShardEvents | Shard Events} for a list of events. */ export default class Shard extends TypedEmitter { #private; client: Client; connectAttempts: number; connecting: boolean; globalBucket: Bucket; id: number; lastHeartbeatAck: boolean; lastHeartbeatReceived: number; lastHeartbeatSent: number; latency: number; preReady: boolean; presence: Required; presenceUpdateBucket: Bucket; ready: boolean; reconnectInterval: number; resumeURL: string | null; sequence: number; sessionID: string | null; status: ShardStatus; ws: WebSocket | null; constructor(id: number, client: Client); private checkReady; private createGuild; private initialize; private onDispatch; private onPacket; private onWSClose; private onWSError; private onWSMessage; private onWSOpen; private restartGuildCreateTimeout; private sendPresenceUpdate; private get _token(); /** Connect this shard. */ connect(): void; disconnect(reconnect?: boolean, error?: Error): void; /** * Edit this shard's status. * @param status The status. * @param activities An array of activities. */ editStatus(status: SendStatuses, activities?: Array): Promise; hardReset(): void; heartbeat(requested?: boolean): void; identify(): void; [inspect.custom](): this; /** * Request the members of a guild. * @param guildID The ID of the guild to request the members of. * @param options The options for requesting the members. */ requestGuildMembers(guildID: string, options?: RequestGuildMembersOptions): Promise>; reset(): void; resume(): void; send(op: GatewayOPCodes, data: unknown, priority?: boolean): void; toString(): string; /** * Update the voice state of this shard. * @param guildID The ID of the guild to update the voice state of. * @param channelID The ID of the voice channel to join. Null to disconnect. * @param options The options for updating the voice state. */ updateVoiceState(guildID: string, channelID: string | null, options?: UpdateVoiceStateOptions): void; }