///
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;
}