/// import { EventEmitter } from 'events'; import { Client } from '../client/index'; import { REST, Endpoints } from '../rest/index'; import type { Channel, DMChannel, GroupChannel, Role, ServerMember, TextChannel, User, Server, Message } from '../structures/index'; export interface ClientEvents { message: [Message]; messageDelete: [Message]; messageUpdate: [Message, Message]; ready: [Client]; serverCreate: [Server]; serverDelete: [Server]; serverUpdate: [Server, Server]; debug: [string]; error: [unknown]; raw: [unknown]; userUpdate: [User, User]; serverMemberJoin: [ServerMember]; channelUpdate: [Channel, Channel]; serverMemberLeave: [ServerMember]; serverMemberUpdate: [ServerMember, ServerMember]; roleDelete: [Role]; typingStart: [TextChannel | DMChannel | GroupChannel, User]; typingStop: [TextChannel | DMChannel | GroupChannel, User]; groupJoin: [GroupChannel, User]; groupLeave: [GroupChannel, User]; } export declare interface BaseClient { on(event: K, listener: (...args: ClientEvents[K]) => Awaited): this; on(event: Exclude, listener: (...args: any[]) => Awaited): this; once(event: K, listener: (...args: ClientEvents[K]) => Awaited): this; once(event: Exclude, listener: (...args: any[]) => Awaited): this; emit(event: K, ...args: ClientEvents[K]): boolean; emit(event: Exclude, ...args: unknown[]): boolean; off(event: K, listener: (...args: ClientEvents[K]) => Awaited): this; off(event: Exclude, listener: (...args: any[]) => Awaited): this; removeAllListeners(event?: K): this; removeAllListeners(event?: Exclude): this; } export interface BaseClientOptions { rest: { url: string; retries: number; timeout: number; }; endpoints: { cdn: string; invite: string; api: string; }; ws: { heartbeat: number; }; } declare type DeepPartial = T extends object ? { [P in keyof T]?: DeepPartial; } : T; export declare function isObject(item: unknown): unknown; export declare abstract class BaseClient extends EventEmitter { #private; readonly api: REST; readonly endpoints: Endpoints; bot: boolean; options: { rest: { url: string; retries: number; timeout: number; }; endpoints: { cdn: string; invite: string; api: string; }; ws: { heartbeat: number; }; }; constructor(opts?: DeepPartial); set token(token: string | null); get token(): string | null; } export {};