{"version":3,"file":"interface.mjs","names":[],"sources":["../../src/client/interface.ts"],"sourcesContent":["import type { SingleConnection } from \"./connection\";\nimport type { IRCMessage } from \"~/message/irc/irc-message\";\nimport type { TwitchCommands } from \"~/message/parser/twitch-message\";\n\nexport const CLIENT_STATES = [\n  \"UNCONNECTED\",\n  \"CONNECTING\",\n  \"CONNECTED\",\n  \"READY\",\n  \"CLOSED\",\n] as const;\n\nexport type ClientState = (typeof CLIENT_STATES)[number];\n\nexport interface ClientStateChangeEvent {\n  oldState: ClientState;\n  newState: ClientState;\n}\n\nexport interface SpecificConnectionEvents {\n  connecting: [];\n  connect: [];\n  ready: [];\n  close: [Error | undefined];\n  error: [Error];\n\n  message: [IRCMessage];\n}\n\nexport interface SpecificClientEvents {\n  connecting: [];\n  connect: [];\n  ready: [];\n  close: [Error | undefined];\n  error: [Error];\n  message: [IRCMessage];\n  reconnect: [SingleConnection];\n\n  rawCommmand: [string];\n}\n\n// these are the events that are mapped to twitch messages (e.g. PRIVMSG)\nexport type TwitchMessageEvents = {\n  [P in keyof TwitchCommands]: [InstanceType<TwitchCommands[P]>];\n};\n\nexport type ClientEvents = SpecificClientEvents & TwitchMessageEvents;\n"],"mappings":";AAIA,MAAa,gBAAgB;CAC3B;CACA;CACA;CACA;CACA;CACD"}