import type { WorkerOverride } from '../types/index.js';
export type { WorkerOverride } from '../types/index.js';
/**
 * 3-layer configuration loader specific to workers.
 *
 * Layer 1: registry defaults (passed via load() calls externally)
 * Layer 2: planu/workers.json (project-level overrides)
 * Layer 3: PLANU_WORKER_<NAME>_<SETTING> environment variables
 *
 * Higher-precedence layers win field by field.
 */
export declare class WorkerConfigLoader {
    private readonly projectPath;
    constructor(projectPath: string);
    /**
     * Load and merge all 3 layers. Returns final resolved override per worker.
     * The returned Map contains only workers that have at least one override.
     * Workers with no overrides in any layer are not present (use defaults as-is).
     *
     * @param workerNames - names of all known workers (to scan env for each)
     */
    load(workerNames?: string[]): Promise<Map<string, WorkerOverride>>;
    /**
     * Get the merged override for a specific worker (layers 2 + 3 only).
     * Returns an empty object if no override is defined anywhere.
     */
    getOverride(workerName: string): Promise<WorkerOverride>;
    /** Load planu/workers.json. Returns empty object if file doesn't exist. */
    private loadProjectFile;
    /** Coerce raw file content to Record<string, WorkerOverride>, ignoring unknown keys. */
    private coerceFileContent;
    /** Coerce a raw object to WorkerOverride, ignoring unknown keys. */
    private coerceOverride;
    /**
     * Parse environment variables for a specific worker.
     *
     * Slug-to-env: 'test-gaps' → 'TEST_GAPS'
     * Full pattern: PLANU_WORKER_{WORKER_ENV}_{SETTING}
     * Known settings: ENABLED (bool), COOLDOWNMS (number), PRIORITY (number), TIER (string)
     */
    parseEnvOverride(workerName: string): WorkerOverride;
    /**
     * Merge two override objects. Right-hand side wins for defined fields.
     * Returns a new object — zero mutation guarantee.
     */
    private merge;
}
//# sourceMappingURL=worker-config-loader.d.ts.map