/// <reference types="express-serve-static-core" />
/// <reference types="express-session" />
/// <reference types="multer" />
/// <reference types="passport" />
/// <reference types="cookie-parser" />
/// <reference types="node" />
import { EventEmitter } from 'events';
import type { Replicator } from '../replicant';
import type { RootNS } from '../../types/socket-protocol';
import type BundleManager from '../bundle-manager';
import type { NodeCG } from '../../types/nodecg';
export type ExtensionEventMap = {
    login: (user: Express.Request['user']) => void;
    logout: (user: Express.Request['user']) => void;
    extensionsLoaded: () => void;
    serverStarted: () => void;
    serverStopping: () => void;
};
export default class ExtensionManager extends EventEmitter {
    readonly extensions: Record<string, unknown>;
    private readonly _satisfiedDepNames;
    private readonly _ExtensionApi;
    private readonly _bundleManager;
    private readonly _apiInstances;
    constructor(io: RootNS, bundleManager: BundleManager, replicator: Replicator, mount: NodeCG.Middleware);
    emitToAllInstances<K extends keyof ExtensionEventMap>(eventName: K, ...params: Parameters<ExtensionEventMap[K]>): void;
    private _loadExtension;
    private _bundleDepsSatisfied;
}
//# sourceMappingURL=extensions.d.ts.map