import { ConcurrentCollection } from './ConcurrentCollection.js'; /** * A listener callback for a {@link Notifier}. * * @category Helper */ export type Listener = (event: E) => void; /** * A base class that can be listened to, and dispatch events. * * @category Helper */ export declare abstract class Notifier { protected readonly listeners: ConcurrentCollection>; /** Listen to events from this helper. Duplicate listeners allowed. */ addEventListener(listener: Listener): void; /** * Stop listening to events from this helper. If a duplicate listener is * removed, only one is removed. * * @returns True if a listener was removed, false otherwise. */ removeEventListener(listener: Listener): boolean; /** * Dispatch an event to a specific listener. Listener does not have to be * added */ protected dispatchToListener(event: E, listener: Listener): void; /** Dispatch an event to all listeners. */ protected dispatchEvent(event: E): void; }