import { type Awaitable, type DeepPartial, type MakeRequired, type When } from '../common'; import { EventHandler } from '../events'; import { type GatewayDispatchPayload } from '../types'; import { Shard, type ShardManagerOptions, type WorkerData } from '../websocket'; import { MemberUpdateHandler } from '../websocket/discord/events/memberUpdate'; import { PresenceUpdateHandler } from '../websocket/discord/events/presenceUpdate'; import type { WorkerHeartbeaterMessages } from '../websocket/discord/heartbeater'; import type { ShardData } from '../websocket/discord/shared'; import type { ClientHeartbeaterMessages, WorkerMessages, WorkerShardInfo } from '../websocket/discord/worker'; import type { ManagerMessages, ManagerSpawnShards } from '../websocket/discord/workermanager'; import type { BaseClientOptions, ServicesOptions, StartOptions } from './base'; import { BaseClient } from './base'; import type { Client, ClientOptions } from './client'; import { Collectors } from './collectors'; import { type RegisteredPluginExtension } from './plugins'; import { type ClientUserStructure } from './transformers'; export declare class WorkerClient extends BaseClient { memberUpdateHandler: MemberUpdateHandler; presenceUpdateHandler: PresenceUpdateHandler; collectors: Collectors; events: EventHandler; me: When; promises: Map void; timeout: NodeJS.Timeout; }>; shards: Map; resharding: Map; options: WorkerClientOptions; constructor(options?: WorkerClientOptions); get workerId(): number; get latency(): number; private onShardDisconnect; private onShardReconnect; get applicationId(): When; set applicationId(id: string); setServices(rest: ServicesOptions): void; setWorkerData(data: WorkerData): void; get workerData(): WorkerData; start(options?: Omit, 'httpConnection' | 'token' | 'connection'>): Promise; loadEvents(dir?: string): Promise; postMessage(body: WorkerMessages | ClientHeartbeaterMessages): unknown; handleManagerMessages(data: ManagerMessages | WorkerHeartbeaterMessages): Promise; calculateShardId(guildId: string): number; private generateNonce; private generateSendPromise; tellWorker>(workerId: number, func: (_: this, vars: V) => R, vars: V): Promise; tellWorkers>(func: (_: this, vars: V) => R, vars: V): Promise[]>; createShard(id: number, data: Pick): Shard; resumeShard(shardId: number, shardData: MakeRequired): Promise; protected onPacket(packet: GatewayDispatchPayload, shardId: number): Promise; } export interface WorkerClient extends RegisteredPluginExtension { } export declare function generateShardInfo(shard: Shard): WorkerShardInfo; export interface WorkerClientOptions extends BaseClientOptions { commands?: NonNullable['commands']; handlePayload?: ShardManagerOptions['handlePayload']; /** * @deprecated Use shard disconnect events instead. Injected ShardManager callbacks can double-fire. */ onShardDisconnect?: ShardManagerOptions['onShardDisconnect']; /** * @deprecated Use shard reconnect events instead. Injected ShardManager callbacks can double-fire. */ onShardReconnect?: ShardManagerOptions['onShardReconnect']; gateway?: ClientOptions['gateway']; postMessage?: (body: unknown) => Awaitable; /** can have perfomance issues in big bots if the client sends every event, specially in startup (false by default) */ sendPayloadToParent?: boolean; handleManagerMessages?(message: ManagerMessages | WorkerHeartbeaterMessages): Awaitable; }