/// <reference types="node" />
import { EventEmitter } from "events";
/**
 * Typed Event Emitter class which can act as a Base Model for all our model
 * and communication events.
 * This makes it much easier for us to distinguish between events, as we now need
 * to properly type this, so that our events are not stringly-based and prone
 * to silly typos.
 */
export declare abstract class BaseModel<Events extends string> extends EventEmitter {
    on(event: Events, listener: (...args: any[]) => void): this;
    once(event: Events, listener: (...args: any[]) => void): this;
    off(event: Events, listener: (...args: any[]) => void): this;
    addListener(event: Events, listener: (...args: any[]) => void): this;
    removeListener(event: Events, listener: (...args: any[]) => void): this;
}
//# sourceMappingURL=base-model.d.ts.map