From 572558226416457e2fdc53876f2f0a2ef17a763a Mon Sep 17 00:00:00 2001 From: Jason Preston Date: Sun, 9 Aug 2026 00:05:58 -0600 Subject: [PATCH] fix: add irc-framework type declarations for TypeScript build --- server/src/types/irc-framework.d.ts | 142 ++++++++++++++++++++++++++++ 1 file changed, 142 insertions(+) create mode 100644 server/src/types/irc-framework.d.ts diff --git a/server/src/types/irc-framework.d.ts b/server/src/types/irc-framework.d.ts new file mode 100644 index 0000000..9a9f108 --- /dev/null +++ b/server/src/types/irc-framework.d.ts @@ -0,0 +1,142 @@ +declare module 'irc-framework' { + import { EventEmitter } from 'events'; + + interface ClientOptions { + host?: string; + port?: number; + tls?: boolean; + nick?: string; + username?: string; + gecos?: string; + password?: string; + auto_reconnect?: boolean; + account?: { + account: string; + password: string; + }; + [key: string]: unknown; + } + + interface MessageEvent { + nick: string; + ident: string; + hostname: string; + target: string; + message: string; + tags: Record; + from_server: boolean; + type: string; + time?: number; + reply: (message: string) => void; + } + + interface JoinEvent { + nick: string; + ident: string; + hostname: string; + channel: string; + time?: number; + gecos?: string; + account?: string; + } + + interface PartEvent { + nick: string; + ident: string; + hostname: string; + channel: string; + message: string; + time?: number; + } + + interface QuitEvent { + nick: string; + ident: string; + hostname: string; + message: string; + time?: number; + } + + interface KickEvent { + kicked: string; + nick: string; + ident: string; + hostname: string; + channel: string; + message: string; + time?: number; + } + + interface NickEvent { + nick: string; + new_nick: string; + ident: string; + hostname: string; + time?: number; + } + + interface TopicEvent { + nick: string; + ident: string; + hostname: string; + channel: string; + topic: string; + time?: number; + } + + interface ModeEvent { + nick: string; + target: string; + modes: Array<{ + mode: string; + param?: string; + }>; + raw_modes: string; + time?: number; + } + + interface RegisteredEvent { + nick: string; + } + + interface ErrorEvent { + error: string; + channel?: string; + reason?: string; + } + + class Client extends EventEmitter { + constructor(); + connect(options: ClientOptions): void; + quit(message?: string): void; + join(channel: string, key?: string): void; + part(channel: string, message?: string): void; + say(target: string, message: string): void; + notice(target: string, message: string): void; + action(target: string, message: string): void; + changeNick(nick: string): void; + raw(line: string): void; + user: { + nick: string; + username: string; + gecos: string; + }; + + on(event: 'registered', listener: (event: RegisteredEvent) => void): this; + on(event: 'privmsg' | 'action', listener: (event: MessageEvent) => void): this; + on(event: 'notice', listener: (event: MessageEvent) => void): this; + on(event: 'join', listener: (event: JoinEvent) => void): this; + on(event: 'part', listener: (event: PartEvent) => void): this; + on(event: 'quit', listener: (event: QuitEvent) => void): this; + on(event: 'kick', listener: (event: KickEvent) => void): this; + on(event: 'nick', listener: (event: NickEvent) => void): this; + on(event: 'topic', listener: (event: TopicEvent) => void): this; + on(event: 'mode', listener: (event: ModeEvent) => void): this; + on(event: 'close' | 'socket close', listener: () => void): this; + on(event: 'irc error', listener: (event: ErrorEvent) => void): this; + on(event: string, listener: (...args: any[]) => void): this; + } + + export default { Client }; + export { Client, ClientOptions, MessageEvent, JoinEvent, PartEvent, QuitEvent, KickEvent, NickEvent, TopicEvent, ModeEvent, RegisteredEvent, ErrorEvent }; +}