/**
 * Adapter: Merge tasks from multiple TaskSource implementations.
 *
 * CompositeTaskSource wraps N TaskSource adapters and returns the union
 * of their tasks. When two sources produce a task with the same ID,
 * the later source wins (repo overrides Content Lake). A warning is
 * logged on ID collision.
 *
 * This is how the pipeline sees both Content Lake tasks and repo-based
 * tasks in a single GeneralizedTaskDefinition[].
 *
 * @see packages/core/src/ports/task-source.ts — TaskSource port
 * @see docs/archive/exec-plans/tasks-as-content/phase-4-repo-based-tasks.md
 */
import type { FilterOptions, GeneralizedTaskDefinition, TaskSource } from "../../_vendor/ailf-core/index.d.ts";
export declare class CompositeTaskSource implements TaskSource {
    private readonly sources;
    constructor(sources: TaskSource[]);
    loadTasks(filter?: FilterOptions): Promise<GeneralizedTaskDefinition[]>;
}
