import type { FactoryRunId, GoalId, PlanId, ProjectId, TaskId } from "@awp/contracts";
import { type QueueEntry, type FactoryRun, type Goal, type Plan, type Project, type Task } from "@awp/domain";
export interface I1GoalReadModel {
    readonly id: GoalId;
    readonly title: string;
    readonly status: Goal["status"];
}
export interface I1PlanReadModel {
    readonly id: PlanId;
    readonly title: string;
    readonly status: Plan["status"];
    readonly goalIds: readonly GoalId[];
}
export interface I1FactoryRunReadModel {
    readonly id: FactoryRunId;
    readonly status: FactoryRun["status"];
    readonly reason?: string;
}
export interface I1ProjectOverviewReadModel {
    readonly project: {
        readonly id: ProjectId;
        readonly name: string;
        readonly status: Project["status"];
    };
    readonly goals: readonly I1GoalReadModel[];
    readonly plans: readonly I1PlanReadModel[];
    readonly queue: readonly QueueEntry[];
    readonly factoryRuns: readonly I1FactoryRunReadModel[];
}
export declare function projectOverviewReadModel(input: {
    project: Project;
    goals: readonly Goal[];
    plans: readonly Plan[];
    planGoalIds: ReadonlyMap<PlanId, readonly GoalId[]>;
    tasks: readonly Task[];
    queueOrder: readonly TaskId[];
    factoryRuns: readonly FactoryRun[];
}): I1ProjectOverviewReadModel;
//# sourceMappingURL=read-models.d.ts.map