import { Logger } from '@squiz/dx-logger-lib';
import { ExecuteComponentTask, ExecuteJobTask } from './ExecuteComponentTask';
import { FunctionReturnTypes } from './FunctionReturnTypes';
import { ComponentLogger } from '@squiz/component-logger-lib';
export interface ComponentRunnerService {
    executeComponentFunction(task: ExecuteComponentTask): Promise<FunctionReturnTypes>;
    executeJobFunction(task: ExecuteJobTask): Promise<FunctionReturnTypes>;
    stop(): Promise<void>;
}
export interface ComponentRunnerWithWorkersConfig {
    shouldCacheResponses: boolean;
    dataMountPoint: string;
    minWorkers: number;
    maxWorkers: number;
    workerTimeout?: number;
    workerFile?: string;
}
export declare const WORKER_TIMEOUT_ERROR_MESSAGE = "could not complete with in the allotted time";
export declare class ComponentRunnerServiceWithWorkers implements ComponentRunnerService {
    private config;
    private logger;
    private componentLogger;
    private pool;
    constructor(config: ComponentRunnerWithWorkersConfig, logger: Logger, componentLogger: ComponentLogger);
    executeComponentFunction(task: ExecuteComponentTask): Promise<FunctionReturnTypes>;
    executeJobFunction(task: ExecuteJobTask): Promise<FunctionReturnTypes>;
    stop(): Promise<void>;
    healthCheck(): Promise<Record<string, unknown>>;
}
