fix: add irc-framework type declarations for TypeScript build

This commit is contained in:
Jason Preston
2026-08-09 00:05:58 -06:00
parent 2c8e4a536c
commit 5725582264
+142
View File
@@ -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<string, string>;
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 };
}