import { ICallback } from '../async/index.js';
import { EventEmitter, TEventEmitterEvent } from '../event/index.js';
import { ILogger } from '../logger/index.js';
import { PowerSwitch } from '../power-switch/index.js';
export declare abstract class Runnable<Event extends TEventEmitterEvent> extends EventEmitter<Event> {
    protected id: string;
    protected powerSwitch: PowerSwitch;
    protected forceShutdownOnError: boolean;
    protected cleanUpBeforeShutdown: boolean;
    protected constructor();
    protected goingUp(): ((cb: ICallback<void>) => void)[];
    protected goingDown(): ((cb: ICallback<void>) => void)[];
    protected up(cb: ICallback<boolean>): void;
    protected down(cb: ICallback<boolean>): void;
    protected handleError(err: Error): void;
    protected abstract getLogger(): ILogger;
    isRunning(): boolean;
    isGoingUp(): boolean;
    isGoingDown(): boolean;
    isUp(): boolean;
    isDown(): boolean;
    run(cb: ICallback<boolean>): void;
    shutdown(cb: ICallback<void>): void;
    getId(): string;
}
//# sourceMappingURL=runnable.d.ts.map