/**
 * Shared corpus-narrowing for tasks FetchDocsStep skipped because their
 * declared canonical doc refs resolved to empty/missing context
 * (`PipelineState.contextEmptyTaskIds`).
 *
 * GenerateConfigsStep and RunEvalStep both re-load tasks from the task source
 * independently, so both must drop the same skipped IDs — otherwise a task
 * fetch-docs already dropped would either get a degenerate (no-docs) config or
 * re-trip RunEvalStep's canonical-context precondition and abort the run. This
 * keeps that narrowing in one place, identical to how `releaseAutoScope` is
 * applied.
 */
import type { PipelineState } from "../../_vendor/ailf-core/index.d.ts";
export declare function excludeContextEmptyTasks<T>(tasks: T[], state: Pick<PipelineState, "contextEmptyTaskIds">): {
    kept: T[];
    skippedCount: number;
};
