/**
 * @author Piotr Kowalski <piecioshka@gmail.com> (https://piecioshka.pl/)
 * @name super-event-emitter
 * @description 🔨 Lightweight and simple interpretation of popular event management
 * @version 5.0.3
 * @license MIT
 * @example
 * const bar = new SuperEventEmitter();
 * bar.on('foo', function () {
 *     console.log('foo event emitted');
 * });
 * bar.emit('foo');
 */
type MyEvent = {
    name: string;
    fn: (this: MyEvent["ctx"], nameOrPayload: string | any, payload?: any) => void;
    run: MyEvent["fn"];
    ctx: unknown;
};
export declare class SuperEventEmitter {
    _listeners: MyEvent[];
    /**
     * Register listener on concrete name with specified handler.
     */
    on: (name: MyEvent["name"], fn: MyEvent["fn"], ctx?: MyEvent["ctx"]) => this;
    addEventListener: (name: MyEvent["name"], fn: MyEvent["fn"], ctx?: MyEvent["ctx"]) => this;
    addListener: (name: MyEvent["name"], fn: MyEvent["fn"], ctx?: MyEvent["ctx"]) => this;
    bind: (name: MyEvent["name"], fn: MyEvent["fn"], ctx?: MyEvent["ctx"]) => this;
    /**
     * Register listener.
     * Remove them after once event triggered.
     */
    once: (name: MyEvent["name"], fn: MyEvent["fn"], ctx?: MyEvent["ctx"]) => this;
    /**
     * Unregister listener.
     * Remove concrete listener by name and itself definition.
     */
    off: (name?: MyEvent["name"], fn?: MyEvent["fn"]) => this;
    removeEventListener: (name?: MyEvent["name"], fn?: MyEvent["fn"]) => this;
    removeListener: (name?: MyEvent["name"], fn?: MyEvent["fn"]) => this;
    unbind: (name?: MyEvent["name"], fn?: MyEvent["fn"]) => this;
    /**
     * Trigger event.
     * All of listeners waiting for emit event will be executed.
     */
    emit: (name: MyEvent["name"], payload?: any) => this;
    dispatchEventListener: (name: MyEvent["name"], payload?: any) => this;
    dispatchListener: (name: MyEvent["name"], payload?: any) => this;
    trigger: (name: MyEvent["name"], payload?: any) => this;
    static mixin: <T extends Record<string, any>>(target: T) => T & Record<keyof SuperEventEmitter, any>;
    static VERSION: string;
}
export {};
