/// import { type Connection, type WebSocketConnectionOptions } from '@d-fischer/connection'; import { type LoggerOptions } from '@d-fischer/logger'; import { type ResolvableValue } from '@d-fischer/shared-utils'; import { EventEmitter } from '@d-fischer/typed-event-emitter'; import type { Capability, ServerCapability } from './Capability/Capability'; import { type Message, type MessageConstructor, type MessageFieldsFromType } from './Message/Message'; import { MessageCollector } from './Message/MessageCollector'; import * as MessageTypes from './Message/MessageTypes'; import { type ServerProperties } from './ServerProperties'; export type EventHandler = (message: T) => void; export type EventHandlerList = Map>; export interface IrcCredentials { nick: string; password?: ResolvableValue; userName?: string; realName?: string; } export interface IrcClientConnectionOptions { hostName: string; port?: number; secure?: boolean; pingOnInactivity?: number; pingTimeout?: number; reconnect?: boolean; } export interface IrcClientOptions { connection: IrcClientConnectionOptions; credentials: IrcCredentials; channels?: ResolvableValue; rejoinChannelsOnReconnect?: boolean; webSocket?: boolean; connectionOptions?: WebSocketConnectionOptions; channelTypes?: string; logger?: Partial; nonConformingCommands?: string[]; manuallyAcknowledgeJoins?: boolean; } export declare class IrcClient extends EventEmitter { protected _connection: Connection; protected _registered: boolean; protected _options: IrcClientOptions; protected _desiredNick: string; protected _userName?: string; protected _realName?: string; protected _supportsCapabilities: boolean; protected _events: Map>>; protected _registeredMessageTypes: Map>>; /** * @eventListener */ onConnect: import("@d-fischer/typed-event-emitter").EventBinder<[]>; /** * @eventListener */ onRegister: import("@d-fischer/typed-event-emitter").EventBinder<[]>; /** * @eventListener */ onDisconnect: import("@d-fischer/typed-event-emitter").EventBinder<[manually: boolean, reason?: Error | undefined]>; /** * @eventListener */ onPrivmsg: import("@d-fischer/typed-event-emitter").EventBinder<[target: string, user: string, message: string, msg: MessageTypes.Commands.PrivateMessage]>; /** * @eventListener */ onAction: import("@d-fischer/typed-event-emitter").EventBinder<[target: string, user: string, message: string, msg: MessageTypes.Commands.PrivateMessage]>; /** * @eventListener */ onNotice: import("@d-fischer/typed-event-emitter").EventBinder<[target: string, user: string, message: string, msg: MessageTypes.Commands.Notice]>; /** * @eventListener */ onNickChange: import("@d-fischer/typed-event-emitter").EventBinder<[oldNick: string | undefined, newNick: string, msg: MessageTypes.Commands.NickChange]>; /** * @eventListener */ onCtcp: import("@d-fischer/typed-event-emitter").EventBinder<[target: string, user: string, command: string, params: string, msg: MessageTypes.Commands.PrivateMessage]>; /** * @eventListener */ onCtcpReply: import("@d-fischer/typed-event-emitter").EventBinder<[target: string, user: string, command: string, params: string, msg: MessageTypes.Commands.Notice]>; /** * @eventListener */ onPasswordError: import("@d-fischer/typed-event-emitter").EventBinder<[error: Error]>; /** * @eventListener */ onAnyMessage: import("@d-fischer/typed-event-emitter").EventBinder<[msg: Message<{}>]>; protected _serverProperties: ServerProperties; protected _supportedFeatures: Record; protected _collectors: MessageCollector[]; protected _clientCapabilities: Map; protected _serverCapabilities: Map; protected _negotiatedCapabilities: Map; protected _pingOnInactivity: number; protected _pingTimeout: number; protected _pingCheckTimer?: NodeJS.Timeout; protected _pingTimeoutTimer?: NodeJS.Timeout; protected _currentNick: string; private _currentChannels; private _hasRegisteredBefore; private _channelsFromLastRegister; private readonly _logger; private _initialConnectionSetupDone; constructor(options: IrcClientOptions); receiveLine(line: string): void; get serverProperties(): ServerProperties; get port(): number; pingCheck(): void; reconnect(message?: string): void; registerMessageType(cls: MessageConstructor): void; knowsCommand(command: string): boolean; getCommandClass(command: string): MessageConstructor | undefined; acknowledgeJoin(channel: string): void; connect(): void; addCapability(cap: Capability): void; registerCapability(cap: Capability): Promise; send(message: Message): void; sendRaw(line: string): void; onNamedMessage(commandName: string, handler: EventHandler, handlerName?: string): string; onTypedMessage(type: MessageConstructor, handler: EventHandler, handlerName?: string): string; removeMessageListener(handlerName: string): void; createMessage(type: MessageConstructor, params: Partial>, tags?: Record): T; sendMessage(type: MessageConstructor, params: Partial>, tags?: Record): void; sendMessageAndCaptureReply(type: MessageConstructor, params: Partial>): Promise; get isConnected(): boolean; get isConnecting(): boolean; get isRegistered(): boolean; get currentNick(): string; get currentChannels(): string[]; /** @private */ collect(originalMessage: Message, ...types: MessageConstructor[]): MessageCollector; /** @private */ stopCollect(collector: MessageCollector): void; join(channel: string, key?: string): void; part(channel: string): void; quit(text?: string): void; quitAbruptly(): void; say(target: string, text: string, tags?: Record): void; sendCtcp(target: string, type: string, message: string): void; action(target: string, message: string): void; changeNick(newNick: string): void; protected registerCoreMessageTypes(): void; protected _negotiateCapabilityBatch(capabilities: ServerCapability[][]): Promise>; protected _negotiateCapabilities(capList: ServerCapability[]): Promise; private _setupConnection; private _handleReceivedClientNick; private _handleEvents; private _startPingCheckTimer; }