import { ICallback } from '../async/index.js'; import { EventEmitter, TEventEmitterEvent } from '../event/index.js'; import { PowerSwitch } from '../power-switch/index.js'; import { ILogger } from '../logger/index.js'; export declare abstract class Runnable extends EventEmitter { protected readonly id: string; protected readonly powerSwitch: PowerSwitch; protected readonly forceShutdownOnError: boolean; protected abstract readonly logger: ILogger; private waitingForUpCallbacks; private waitingForDownCallbacks; protected constructor(forceShutdownOnError?: boolean); protected goingUp(): Array<(cb: ICallback) => void>; protected goingDown(): Array<(cb: ICallback) => void>; protected finalizeUp(): void; protected finalizeDown(): void; protected handleError(err: unknown): void; private flushWaitingForUp; private flushWaitingForDown; protected executeGoingUpTasks(): void; protected executeGoingDownTasks(): void; isOperational(): boolean; isRunning(): boolean; isGoingUp(): boolean; isGoingDown(): boolean; isUp(): boolean; isDown(): boolean; run(): Promise; run(cb: ICallback): void; shutdown(): Promise; shutdown(cb: ICallback): void; ensureIsOperational(): Promise; ensureIsOperational(cb: ICallback): void; getId(): string; } //# sourceMappingURL=runnable.d.ts.map