/** @noSelfInFile */ declare module c2 { enum LogLevel { Debug, Info, Warning, Critical, } class CommandContext { words: String[]; channel_name: String; } function log(level: LogLevel, ...data: any[]): void; function register_command( name: String, handler: (ctx: CommandContext) => void ): boolean; function send_msg(channel: String, text: String): boolean; function system_msg(channel: String, text: String): boolean; class CompletionList { values: String[]; hide_others: boolean; } enum EventType { RegisterCompletions = "RegisterCompletions", } type CbFuncCompletionsRequested = ( query: string, full_text_content: string, cursor_position: number, is_first_word: boolean ) => CompletionList; type CbFunc = T extends EventType.RegisterCompletions ? CbFuncCompletionsRequested : never; function register_callback(type: T, func: CbFunc): void; }