/// import { EventEmitter } from "events"; import { Progress } from "../Progress"; import { Timestamp } from "../Types"; import { FileInput } from "../parse/File"; import { PAuthor, PCall, PChannel, PGuild, PMessage } from "../parse/Types"; export declare interface Parser { emit(event: "guild", guild: PGuild, at?: Timestamp): boolean; emit(event: "channel", channel: PChannel, at?: Timestamp): boolean; emit(event: "author", author: PAuthor, at?: Timestamp): boolean; emit(event: "message", message: PMessage, at?: Timestamp): boolean; emit(event: "call", call: PCall, at?: Timestamp): boolean; on(event: "guild", listener: (guild: PGuild, at?: Timestamp) => void): this; on(event: "channel", listener: (channel: PChannel, at?: Timestamp) => void): this; on(event: "author", listener: (author: PAuthor, at?: Timestamp) => void): this; on(event: "message", listener: (message: PMessage, at?: Timestamp) => void): this; on(event: "call", listener: (call: PCall, at?: Timestamp) => void): this; emit(event: "out-of-order"): boolean; on(event: "out-of-order", listener: () => void): this; } export declare abstract class Parser extends EventEmitter { /** * Parses the given input file. It should emit events with the parsed data. * * Note that this function should yield every so often (e.g. every few MBs or hundreds of messages) * to process messages and report progress back to the UI. */ abstract parse(file: FileInput, progress?: Progress): AsyncGenerator; }