export interface DockerComposeEventInterface<TActionName extends string, TAdditionalAttributes extends Record<string, unknown> = Record<string, unknown>> {
    time: string;
    type: 'container';
    action: TActionName;
    id: string;
    service: string;
    attributes: {
        image: string;
        name: string;
    } & TAdditionalAttributes;
}
export type CreateDockerComposeEvent = DockerComposeEventInterface<'create'>;
export type AttachDockerComposeEvent = DockerComposeEventInterface<'attach'>;
export type StartDockerComposeEvent = DockerComposeEventInterface<'start'>;
export type HealthStatusDockerComposeEvent = DockerComposeEventInterface<'health_status', {
    healthStatus: 'healthy' | 'unhealthy';
}>;
export type KillDockerComposeEvent = DockerComposeEventInterface<'kill'>;
export type DieDockerComposeEvent = DockerComposeEventInterface<'die', {
    exitCode: string;
}>;
export type DockerEventType = CreateDockerComposeEvent | AttachDockerComposeEvent | StartDockerComposeEvent | HealthStatusDockerComposeEvent | KillDockerComposeEvent | DieDockerComposeEvent;
export type UnknownDockerComposeEvent = DockerComposeEventInterface<string>;
export type DockerEventEmitterListener = (event: DockerEventType) => void;
export interface DockerEventEmitter {
    addListener(serviceName: string, eventListener: DockerEventEmitterListener): void;
    removeListener(serviceName: string, eventListener: DockerEventEmitterListener): void;
    destroy(): void;
}
export declare const isDieEvent: (event: DockerEventType) => event is DieDockerComposeEvent;
export declare const isKillEvent: (event: DockerEventType) => event is KillDockerComposeEvent;
export declare const createDockerEventEmitter: (composeFilePath: string) => DockerEventEmitter;
