import IEncodedMediaStreamEvent, { EncodedMediaStreamEventData } from './IEncodedMediaStreamEvent';
import Disposable from '../../../lang/Disposable';
export default class EventPublisher {
    private readonly _eventEmitters;
    private readonly _onEventWithNoSubscriberHandlers;
    private readonly _disposables;
    onEventWithNoSubscriber(onEventWithNoSubscriberHandler: (eventType: string | number, event: IEncodedMediaStreamEvent) => void): Disposable;
    subscribe<EventData extends EncodedMediaStreamEventData>(eventType: string | number, handler: (event: IEncodedMediaStreamEvent<EventData>) => void): Disposable;
    publish<EventData extends EncodedMediaStreamEventData>(eventType: string | number, event: IEncodedMediaStreamEvent<EventData>): void;
    dispose(): void;
    private cleanUpResources;
    private createEmitter;
}
