/// <reference types="node" />
import { EventEmitter } from 'events';
export interface Options {
    filter?: null | string[];
    ignore?: null | string[];
    maxHistory?: number;
    manageHistory?: boolean;
    identifier?: (args: any[]) => string;
}
export declare type DefaultOptions = Required<Options>;
export default class NewsEmitter extends EventEmitter {
    history: Map<string, Set<string>>;
    options: DefaultOptions;
    /**
     * Emits only new events.
  
     * @param {Object} options
     * @constructor
     */
    constructor(options?: Options);
    /**
     * Emits event, only if not already in history.
     *
     * @param {string} event
     * @param {Object} ...args
     * @return {boolean} Wether or not event was emitted
     */
    emit(event: string, ...args: any[]): boolean;
    /**
     * Adds one history item to an event's history.
     *
     * @param {Set} tistory
     * @param {string} key
     */
    _addHistory(tistory: Set<string>, key: string): void;
    /**
     * Resets event history.
     *
     * @param {!String} event
     */
    reset(event?: string): void;
    /**
     * Manual managing of event history.
     *
     * @param {string} event
     * @param {Array.<Object>} arr An array of items to add to history.
     */
    addHistory(event: string, arr: any[]): void;
}
