/**
 * CheckAndUnblockFeaturesUseCase
 *
 * Evaluates whether blocked direct children of a parent feature are now
 * eligible to start, and if so transitions them to Started and spawns their
 * agents.
 *
 * Business Rules:
 * - Only direct children of parentFeatureId are evaluated (no recursive traversal).
 *   Grandchildren stay Blocked until their own direct parent progresses.
 * - Gate: parent lifecycle must be in POST_IMPLEMENTATION (Implementation, Review, Maintain).
 * - Idempotent: already-Started children are not touched; calling execute() twice is safe.
 * - spawn() is skipped for children missing agentRunId or specPath (defensive guard).
 *
 * Called from: UpdateFeatureLifecycleUseCase after every lifecycle transition.
 */
import type { IFeatureRepository } from '../../ports/output/repositories/feature-repository.interface.js';
import type { IFeatureAgentProcessService } from '../../ports/output/agents/feature-agent-process.interface.js';
export declare class CheckAndUnblockFeaturesUseCase {
    private readonly featureRepo;
    private readonly agentProcess;
    constructor(featureRepo: IFeatureRepository, agentProcess: IFeatureAgentProcessService);
    /**
     * Check and unblock direct children of the given parent feature.
     *
     * @param parentFeatureId - ID of the feature whose children should be evaluated.
     */
    execute(parentFeatureId: string): Promise<void>;
}
//# sourceMappingURL=check-and-unblock-features.use-case.d.ts.map