@@ -107,7 +107,7 @@ declare module 'irc-framework' {
107107 */
108108 who (
109109 target : string ,
110- cb : ( event : { target : string ; users : WhoListEventArgs [ 'users' ] } ) => void ,
110+ cb : ( event : { target : string ; users : WhoListEvent [ 'users' ] } ) => void ,
111111 ) : void ;
112112
113113 list ( /* params: Array<string> */ ) : void ;
@@ -128,54 +128,97 @@ declare module 'irc-framework' {
128128
129129 stringToBlocks ( str : string , block_size ?: number ) : string [ ] ;
130130
131+ // Reference: https://github.com/kiwiirc/irc-framework/blob/master/docs/events.md
131132 on ( eventType : string | symbol , cb : ( event : unknown ) => void ) : this;
132133
133- on ( eventType : 'raw' , cb : ( event : RawEventArgs ) => void ) : this;
134-
135- on ( eventType : 'join' , cb : ( event : JoinEventArgs ) => void ) : this;
136-
137- on ( eventType : 'userlist' , cb : ( event : UserListEventArgs ) => void ) : this;
138-
139- on ( eventType : 'monitorList' , cb : ( event : MonitorListEventArgs ) => void ) : this;
140- on ( eventType : 'whois' , cb : ( event : WhoIsEventArgs ) => void ) : this;
141- on ( eventType : 'whowas' , cb : ( event : WhoWasEventArgs ) => void ) : this;
142-
143- on ( eventType : 'registered' , cb : ( event : RegisteredEventArgs ) => void ) : this;
144- on ( eventType : 'connected' , cb : ( event : RegisteredEventArgs ) => void ) : this;
134+ // Registration
135+ on ( eventType : 'registered' , cb : ( event : RegisteredEvent ) => void ) : this;
136+ on ( eventType : 'connected' , cb : ( event : RegisteredEvent ) => void ) : this;
145137 on ( eventType : 'connecting' , cb : ( ) => void ) : this;
146138 on (
147139 eventType : 'reconnecting' ,
148140 cb : ( event : { attempt : number ; max_retries : number ; wait : number } ) => void ,
149141 ) : this;
150-
151- on ( eventType : 'quit' , cb : ( event : QuitEventArgs ) => void ) : this;
152- on ( eventType : 'part' , cb : ( event : QuitEventArgs ) => void ) : this;
153- on ( eventType : 'kick' , cb : ( event : KickEventArgs ) => void ) : this;
154-
155- on ( eventType : 'away' , cb : ( event : AwayEventArgs ) => void ) : this;
156- on ( eventType : 'back' , cb : ( event : BackEventArgs ) => void ) : this;
157-
158- on ( eventType : 'message' , cb : ( event : MessageEventArgs ) => void ) : this;
159- on ( eventType : 'privmsg' , cb : ( event : MessageEventArgs < 'privmsg' > ) => void ) : this;
160- on ( eventType : 'notice' , cb : ( event : MessageEventArgs < 'notice' > ) => void ) : this;
161- on ( eventType : 'action' , cb : ( event : MessageEventArgs < 'action' > ) => void ) : this;
162-
163- on ( eventType : 'mode' , cb : ( event : ModeEventArgs ) => void ) : this;
164-
142+ on ( eventType : 'close' , cb : ( ) => void ) : this;
165143 on ( eventType : 'socket close' , cb : ( event : Error | false ) => void ) : this;
166-
167144 on ( eventType : 'socket connected' , cb : ( ) => void ) : this;
168-
169145 on ( eventType : 'raw socket connected' , cb : ( ) => void ) : this;
170-
171146 on ( eventType : 'server options' , cb : ( event : ServerOptionsEventArgs ) => void ) : this;
172147
148+ // Raw connection and debugging
149+ on ( eventType : 'raw' , cb : ( event : RawEventArgs ) => void ) : this;
150+ on ( eventType : 'unknown command' , cb : ( event : IrcCommand ) => void ) : this;
173151 on ( eventType : 'debug' , cb : ( message : string ) => void ) : this;
174152
153+ // Channels
154+ on ( eventType : 'channel info' , cb : ( event : unknown ) => void ) : this;
155+ on ( eventType : 'channel list start' , cb : ( ) => void ) : this;
156+ on ( eventType : 'channel list' , cb : ( event : unknown [ ] ) => void ) : this;
157+ on ( eventType : 'channel list end' , cb : ( ) => void ) : this;
158+ on ( eventType : 'wholist' , cb : ( event : WhoListEvent ) => void ) : this;
159+ on ( eventType : 'userlist' , cb : ( event : UserListEventArgs ) => void ) : this;
160+ on ( eventType : 'invitelist' , cb : ( event : unknown ) => void ) : this;
161+ on ( eventType : 'banlist' , cb : ( event : BanlistEventArgs ) => void ) : this;
162+ on ( eventType : 'exceptlist' , cb : ( event : unknown ) => void ) : this;
163+ on ( eventType : 'topic' , cb : ( event : unknown ) => void ) : this;
164+ on ( eventType : 'topicsetby' , cb : ( event : unknown ) => void ) : this;
165+ on ( eventType : 'join' , cb : ( event : JoinEvent ) => void ) : this;
166+ on ( eventType : 'part' , cb : ( event : PartEvent ) => void ) : this;
167+ on ( eventType : 'kick' , cb : ( event : KickEvent ) => void ) : this;
168+ on ( eventType : 'quit' , cb : ( event : QuitEvent ) => void ) : this;
169+ on ( eventType : 'invited' , cb : ( event : unknown ) => void ) : this;
170+
171+ // Messaging
172+ on ( eventType : 'message' , cb : ( event : MessageEventArgs ) => void ) : this;
173+ on ( eventType : 'notice' , cb : ( event : MessageEvent ) => void ) : this;
174+ on ( eventType : 'action' , cb : ( event : MessageEvent ) => void ) : this;
175+ on ( eventType : 'privmsg' , cb : ( event : MessageEvent ) => void ) : this;
176+ on ( eventType : 'tagmsg' , cb : ( event : TagMessageEvent ) => void ) : this;
177+ on ( eventType : 'ctcp response' , cb : ( event : unknown ) => void ) : this;
178+ on ( eventType : 'ctcp request' , cb : ( event : unknown ) => void ) : this;
179+ on ( eventType : 'wallops' , cb : ( event : unknown ) => void ) : this;
180+
181+ // Users
182+ on ( eventType : 'nick' , cb : ( event : unknown ) => void ) : this;
183+ on ( eventType : 'account' , cb : ( event : unknown ) => void ) : this;
184+ on ( eventType : 'user info' , cb : ( event : unknown ) => void ) : this;
185+ on ( eventType : 'away' , cb : ( event : AwayEvent ) => void ) : this;
186+ on ( eventType : 'back' , cb : ( event : BackEvent ) => void ) : this;
187+ on ( eventType : 'monitorList' , cb : ( event : MonitorListEventArgs ) => void ) : this;
175188 on ( eventType : 'nick in use' , cb : ( event : NickInUseEventArgs ) => void ) : this;
176-
177189 on ( eventType : 'nick invalid' , cb : ( event : NickInvalidEventArgs ) => void ) : this;
190+ on ( eventType : 'users online' , cb : ( event : unknown ) => void ) : this;
191+ on ( eventType : 'users offline' , cb : ( event : unknown ) => void ) : this;
192+ on ( eventType : 'whois' , cb : ( event : WhoIsEventArgs ) => void ) : this;
193+ on ( eventType : 'whowas' , cb : ( event : WhoWasEventArgs ) => void ) : this;
194+ on ( eventType : 'user updated' , cb : ( event : unknown ) => void ) : this;
195+
196+ // Misc
197+ on ( eventType : 'motd' , cb : ( event : unknown ) => void ) : this;
198+ on ( eventType : 'info' , cb : ( event : unknown ) => void ) : this;
199+ on ( eventType : 'help' , cb : ( event : unknown ) => void ) : this;
200+ on ( eventType : 'batch start' , cb : ( event : unknown ) => void ) : this;
201+ on < BatchType extends string > (
202+ eventType : `batch start ${BatchType } `,
203+ cb : ( event : unknown ) => void ,
204+ ) : this;
205+ on ( eventType : 'batch end' , cb : ( event : unknown ) => void ) : this;
206+ on < BatchType extends string > (
207+ eventType : `batch end ${BatchType } `,
208+ cb : ( event : unknown ) => void ,
209+ ) : this;
210+ on (
211+ eventType : `cap ${'ls' | 'ack' | 'nak' | 'list' | 'new' | 'del' } `,
212+ cb : ( event : unknown ) => void ,
213+ ) : this;
214+
215+ // SASL
216+ on ( eventType : 'loggedin' , cb : ( event : unknown ) => void ) : this;
217+ on ( eventType : 'loggedout' , cb : ( event : unknown ) => void ) : this;
218+ on ( eventType : 'sasl failed' , cb : ( event : unknown ) => void ) : this;
178219
220+ // Undocumented
221+ on ( eventType : 'mode' , cb : ( event : ModeEvent ) => void ) : this;
179222 on ( eventType : 'irc error' , cb : ( event : IrcErrorEventArgs ) => void ) : this;
180223 }
181224 export class NetworkInfo {
@@ -202,7 +245,7 @@ declare module 'irc-framework' {
202245 extractTargetGroup ( target : string ) : null | { target : string ; target_group : string } ;
203246 }
204247 export class IrcMessage {
205- tags : Record < string , string > ;
248+ tags : Tags ;
206249 prefix : string ;
207250 nick : string ;
208251 ident : string ;
@@ -221,50 +264,57 @@ declare module 'irc-framework' {
221264 } ;
222265 }
223266
224- export interface MessageEventArgs <
225- Type extends 'privmsg' | 'action' | 'notice' = 'privmsg' | 'action' | 'notice' ,
226- > {
227- account ?: string ;
228- group ?: string ;
229- hostname : string ;
230- ident : string ;
231- message : string ;
267+ type Tags = Partial < Record < string , string | boolean > > &
268+ Partial < {
269+ account : string ;
270+ batch : string ;
271+ msgid : string ;
272+ time : string ;
273+ } > ;
274+
275+ interface MessageEvent {
276+ from_server : boolean ;
232277 nick : string ;
233- reply : ( message : string ) => void ;
234- tags : { [ key : string ] : string } ;
278+ ident : string ;
279+ hostname : string ;
235280 target : string ;
281+ group ?: string ;
282+ message : string ;
283+ tags : Tags ;
236284 time ?: number ;
237- type : Type ;
238- }
239- export interface JoinEventArgs {
240- account : string ;
285+ account ?: string ;
286+ batch ?: string ;
287+ reply ( message : string ) : void ;
288+ }
289+ export type MessageEventArgs =
290+ | ( MessageEvent & { type : 'privmsg' } )
291+ | ( MessageEvent & { type : 'action' } )
292+ | ( MessageEvent & { type : 'notice' } ) ;
293+
294+ export type TagMessageEvent = Pick <
295+ MessageEvent ,
296+ 'from_server' | 'nick' | 'ident' | 'hostname' | 'target' | 'tags' | 'time' | 'account' | 'batch'
297+ > ;
298+
299+ export interface JoinEvent extends Pick <
300+ MessageEvent ,
301+ 'nick' | 'ident' | 'hostname' | 'message' | 'time' | 'tags' | 'account' | 'batch'
302+ > {
241303 channel : string ;
242304 gecos : string ;
243- hostname : string ;
244- ident : string ;
245- nick : string ;
246- time ?: number ;
247305 }
248- export interface AwayEventArgs {
306+ export interface AwayEvent extends Pick < MessageEvent , 'nick' | 'message' | 'time' | 'tags' > {
249307 self : boolean ;
250- nick : string ;
251- message : string ;
252- time : number ;
253308 }
254- export interface BackEventArgs {
255- self : boolean ;
256- nick : string ;
257- message : string ;
258- time : number ;
309+ export interface BackEvent extends AwayEvent {
310+ message : '' ;
259311 }
260- export interface KickEventArgs {
261- kicked : string ;
262- nick : string ;
263- ident : string ;
264- hostname : string ;
265- channel : string ;
266- message : string ;
267- time : number ;
312+ class IrcCommand implements Pick < MessageEvent , 'tags' | 'nick' | 'ident' | 'hostname' > {
313+ command : string ;
314+ params : string [ ] ;
315+ prefix : string ;
316+ getTag < Tag extends string > ( tag_name : Tag ) : Tags [ Tag ] ;
317+ getServerTime ( ) : number | undefined ;
268318 }
269319 export interface RawEventArgs {
270320 from_server : boolean ;
@@ -307,27 +357,36 @@ declare module 'irc-framework' {
307357 error : string ;
308358 whowas : Array < { nick : string ; ident : string ; hostname : string ; real_name : string } > [ ] ;
309359 }
310- export interface RegisteredEventArgs {
360+ export interface RegisteredEvent {
311361 nick : string ;
312362 }
313- export interface QuitEventArgs {
314- hostname : string ;
315- ident : string ;
316- message : string ;
317- nick : string ;
318- time ?: number ;
363+ export interface PartEvent extends Pick <
364+ MessageEvent ,
365+ 'nick' | 'ident' | 'hostname' | 'message' | 'time'
366+ > {
367+ channel : string ;
368+ }
369+ export interface KickEvent extends Pick <
370+ MessageEvent ,
371+ 'nick' | 'ident' | 'hostname' | 'message' | 'time'
372+ > {
373+ kicked : string ;
374+ channel : string ;
319375 }
376+ export type QuitEvent = Pick < MessageEvent , 'nick' | 'ident' | 'hostname' | 'message' | 'time' > ;
377+
320378 interface Mode {
321379 mode : string ;
322- param : string ;
380+ param : string | null ;
323381 }
324- export interface ModeEventArgs {
382+ export interface ModeEvent extends Pick <
383+ MessageEvent ,
384+ 'target' | 'nick' | 'time' | 'tags' | 'batch'
385+ > {
325386 modes : Mode [ ] ;
326- nick : string ;
387+
327388 raw_modes : string ;
328389 raw_params : string [ ] ;
329- target : string ;
330- time ?: number ;
331390 }
332391 export interface ServerOptionsEventArgs {
333392 options : Record < string , unknown > ;
@@ -420,7 +479,7 @@ declare module 'irc-framework' {
420479 users : IrcChannelUser [ ] ;
421480 tags : Record < string , string > ;
422481 }
423- export interface WhoListEventArgs {
482+ export interface WhoListEvent {
424483 target : string ;
425484 users : User [ ] ;
426485 tags : Record < string , string > ;
@@ -447,7 +506,8 @@ declare module 'irc-framework' {
447506 when ?: number ;
448507 }
449508 interface ClientConstructorParameters {
450- host : string ; // host?: (?)
509+ host : string ;
510+ port ?: string ;
451511 nick ?: string ;
452512 username ?: string ;
453513 gecos ?: string ;
0 commit comments