import { Logger, type MakePresent } from '../../common'; import { type APIGuildMember, type GatewayGuildMembersChunkPresence, type GatewayReceivePayload, type GatewaySendPayload } from '../../types'; import type { GatewayRequestGuildMembersDataWithQuery, GatewayRequestGuildMembersDataWithUserIds } from '../../types/gateway'; import { DynamicBucket } from '../structures'; import { ConnectTimeout } from '../structures/timeout'; import { BaseSocket } from './basesocket'; import type { ShardData, ShardOptions } from './shared'; import { ShardSocketCloseCodes } from './shared'; export interface ShardHeart { interval: number; nodeInterval?: NodeJS.Timeout; ackTimeout?: NodeJS.Timeout; lastAck?: number; lastBeat?: number; ack: boolean; } export declare class Shard { id: number; logger: Logger; debugger?: Logger; data: Partial | ShardData; websocket: BaseSocket | null; connectTimeout: ConnectTimeout; heart: ShardHeart; private isConnecting; private reconnectPromise; bucket: DynamicBucket; offlineSendQueue: ((_?: unknown) => void)[]; pendingGuilds?: Set; options: MakePresent; isReady: boolean; connectionTimeout?: NodeJS.Timeout; private requestGuildMembersChunk; constructor(id: number, options: ShardOptions); get latency(): number; get isOpen(): boolean; get gatewayURL(): string; get resumeGatewayURL(): string | undefined; get currentGatewayURL(): string; ping(): Promise; connect(): Promise; send(force: boolean, message: T): Promise; identify(): Promise; get resumable(): boolean; resume(): Promise; heartbeat(requested: boolean): void; disconnect(code?: ShardSocketCloseCodes): void; reconnect(code?: ShardSocketCloseCodes): Promise; private flushOfflineSendQueue; onpacket(packet: GatewayReceivePayload): void | Promise; requestGuildMember(options: Omit | Omit): Promise<{ members: APIGuildMember[]; presences: GatewayGuildMembersChunkPresence[]; }>; protected handleClosed(close: { code: number; reason: string; }): Promise; close(code: number, reason: string): void; protected handleMessage(data: string | Buffer): void | Promise; checkOffline(force: boolean): Promise; calculateSafeRequests(): number; }