import type { IFeature } from "./features";
import type { IManifestLoader, IRepresentationFilter, ISegmentLoader } from "./public_types";
type IEventRecord<TEventName extends string = string, P = unknown> = Record<TEventName, P>;
type IEventPayload<TEventRecord, TEventName extends keyof TEventRecord> = TEventRecord[TEventName];
type IListener<TEventRecord extends IEventRecord, TEventName extends keyof TEventRecord> = (args: IEventPayload<TEventRecord, TEventName>) => void;
export default class RxPlayerWorker<TReceivingEventRecord extends IEventRecord = Record<string, unknown>, TSendingEventRecord extends IEventRecord = Record<string, unknown>> {
    private _messageListeners;
    _representationFiltersMap: Map<string, IRepresentationFilter>;
    _segmentLoadersMap: Map<string, ISegmentLoader>;
    _manifestLoadersMap: Map<string, IManifestLoader>;
    /**
     * Add feature(s) to the RxPlayer.
     * @param {Array.<Object>} featureList - Features wanted.
     */
    static addFeatures(featureList: IFeature[]): void;
    constructor();
    registerRepresentationFilter(identifier: string, implem: IRepresentationFilter | null): void;
    registerSegmentLoader(identifier: string, implem: ISegmentLoader | null): void;
    registerManifestLoader(identifier: string, implem: IManifestLoader | null): void;
    addMessageListener<TEventName extends keyof TReceivingEventRecord>(messageName: TEventName, callback: IListener<TReceivingEventRecord, TEventName>): void;
    removeMessageListener<TEventName extends keyof TReceivingEventRecord>(messageName: TEventName, callback: IListener<TReceivingEventRecord, TEventName>): void;
    sendMessage<TEventName extends keyof TSendingEventRecord>(messageName: TEventName, payload: TSendingEventRecord[TEventName]): void;
}
export {};
//# sourceMappingURL=importable_worker.d.ts.map