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