import { ICallback } from '../async/index.js';
import { RedisLock } from '../redis-lock/index.js';
import { ILogger } from '../logger/index.js';
import { PowerSwitch } from '../power-switch/index.js';
import { IRedisClient } from '../redis-client/index.js';
import { Runnable } from '../runnable/index.js';
import { WorkerRunnable } from './worker-runnable.js';
export type TWorkerResourceGroupEvent = {
    'workerResourceGroup.error': (err: Error) => void;
};
export declare class WorkerResourceGroup extends Runnable<TWorkerResourceGroupEvent> {
    protected readonly powerManager: PowerSwitch;
    protected readonly locker: RedisLock;
    protected readonly redisClient: IRedisClient;
    protected readonly logger: ILogger;
    protected workers: WorkerRunnable<unknown>[];
    protected runWorkersLocked: boolean;
    constructor(redisClient: IRedisClient, logger: ILogger, resourceGroupId: string);
    protected lock: (cb: ICallback<void>) => void;
    protected runWorkers: (cb: ICallback<void>) => void;
    protected shutDownWorkers: (cb: ICallback<void>) => void;
    protected releaseLock: (cb: ICallback<void>) => void;
    protected getLogger(): ILogger;
    protected goingUp(): ((cb: ICallback<void>) => void)[];
    protected goingDown(): ((cb: ICallback<void>) => void)[];
    protected handleError(err: Error): void;
    addWorker: (filename: string, payload: unknown) => void;
    loadFromDir: (workersDir: string, payload: unknown, cb: ICallback<void>) => void;
}
//# sourceMappingURL=worker-resource-group.d.ts.map