import winston from 'winston';
import { FileContentService } from './utils/FileContentService.js';
import { FileId } from './model/model.js';
export interface ContainerConfig {
    name?: string;
    [key: string]: string;
}
export interface ContainerConfigArr {
    [key: string]: string[];
}
type EventCallback = (driveId: FileId, payload: any) => void;
export declare class Container {
    readonly params: ContainerConfig;
    readonly paramsArr: ContainerConfigArr;
    protected engine: ContainerEngine;
    protected filesService: FileContentService;
    constructor(params: ContainerConfig, paramsArr?: ContainerConfigArr);
    mount(fileService: FileContentService): Promise<void>;
    init(engine: ContainerEngine): Promise<void>;
    run(command: any): Promise<void>;
    destroy(): Promise<void>;
    flushData(): Promise<void>;
}
export declare class ContainerError extends Error {
    constructor(msg: string);
}
export declare class ContainerEngine {
    readonly logger: winston.Logger;
    readonly rootFileService: FileContentService;
    constructor(logger: winston.Logger, rootFileService: FileContentService);
    private readonly containers;
    private listeners;
    registerContainer(container: Container): Promise<Container>;
    unregisterContainer(name: string): Promise<void>;
    run(): Promise<void>;
    getContainer(name: string): Container;
    hasContainer(name: string): boolean;
    flushData(): Promise<void>;
    emit(driveId: FileId, eventName: string, payload: any): void;
    subscribe(eventName: string, callback: EventCallback): void;
}
export {};
//# sourceMappingURL=ContainerEngine.d.ts.map