import type { AgentRunId, AttemptId, ChangeSetId, FactoryRunId, I1AgentRunStatus, I1AttemptStatus, I1ChangeSetReviewReadModel, I1FactoryRunDetailReadModel, I1FactoryRunStatus, I1ReviewDisposition, I1ReviewStatus, PlanRevisionId, PrincipalId, ProjectId, ProviderId, ProviderReference, ReviewId, TaskId, WorkspaceId } from "@awp/contracts";
import type { C1ProjectOverviewPayload, C1TaskFixturePayload } from "./model.js";
import { type ProjectConfigurationViewItem } from "./render-project.js";
import { type AccountListItem } from "./render-accounts.js";
import { type ProjectListItem } from "./render-projects.js";
import { type ClusterView, type MachineView, type EnrollmentView } from "./render-cluster.js";
import { type PlanningInterviewerPayload, type PlanningSessionPayload } from "./render-planning.js";
interface LivePlanRevision {
    readonly id: PlanRevisionId;
    readonly planId: C1ProjectOverviewPayload["plans"][number]["id"];
    readonly projectId: ProjectId;
    readonly sequence: number;
    readonly title: string;
    readonly projectVisionVersionId?: string;
    readonly goalIds: C1ProjectOverviewPayload["plans"][number]["goalIds"];
}
interface LiveFactoryRun {
    readonly id: FactoryRunId;
    readonly projectId: ProjectId;
    readonly planRevisionId: PlanRevisionId;
    readonly taskId?: TaskId;
    readonly status: I1FactoryRunStatus;
    readonly reason?: string;
    readonly revision: number;
}
interface LiveAgentRun {
    readonly id: AgentRunId;
    readonly factoryRunId: FactoryRunId;
    readonly taskId: TaskId;
    readonly agentPrincipalId: PrincipalId;
    readonly role: "coder" | "reviewer";
    readonly status: I1AgentRunStatus;
    readonly reason?: string;
    readonly revision: number;
}
interface LiveAttempt {
    readonly id: AttemptId;
    readonly agentRunId: AgentRunId;
    readonly workspaceId: WorkspaceId;
    readonly status: I1AttemptStatus;
    readonly providerId?: ProviderId;
    readonly accountId?: string;
    readonly model?: string;
    readonly reason?: string;
    readonly toolCalls?: readonly {
        readonly name: string;
        readonly summary: string;
    }[];
    readonly selection: {
        readonly kind: "initial" | "retry" | "fallback";
        readonly reason: string;
        readonly previousAttemptId?: AttemptId;
    };
    readonly providerReference?: ProviderReference;
    readonly revision: number;
}
interface LiveChangeSet {
    readonly id: ChangeSetId;
    readonly projectId: ProjectId;
    readonly taskId: TaskId;
    readonly producerAttemptId: AttemptId;
    readonly baseIdentity: string;
    readonly candidateDigest: string;
    readonly candidateManifest: {
        readonly treeDigest: string;
        readonly patchDigest: string;
        readonly changedPaths: readonly string[];
        readonly changes: readonly {
            readonly path: string;
            readonly kind: "add" | "modify" | "delete";
        }[];
    };
    readonly diff: string;
    readonly repositoryKey?: string;
    readonly publicationReference?: ProviderReference;
    readonly targetReference?: string;
    readonly targetRevision?: string;
    readonly mergeReference?: ProviderReference;
    readonly resultingRevision?: string;
    readonly revision: number;
    readonly status: I1ChangeSetReviewReadModel["status"];
}
interface LiveReview {
    readonly id: ReviewId;
    readonly changeSetId: ChangeSetId;
    readonly candidateDigest: string;
    readonly reviewerPrincipalId: PrincipalId;
    readonly reviewerAgentRunId?: AgentRunId;
    readonly status: I1ReviewStatus;
    readonly disposition?: I1ReviewDisposition;
}
interface LiveVerificationEvidence {
    readonly id: string;
    readonly changeSetId: ChangeSetId;
    readonly candidateDigest: string;
    readonly name: string;
    readonly state: "passed" | "failed" | "stale" | "missing";
    readonly source: string;
    readonly observedAt: string;
    readonly required: boolean;
    readonly details?: Readonly<Record<string, unknown>>;
}
interface LiveWorkspace {
    readonly id: WorkspaceId;
    readonly projectId: ProjectId;
    readonly revision: number;
    readonly checkpointDigest?: string;
    readonly checkpointedAt?: string;
    readonly checkpointSource?: string;
    readonly checkpointCollectedAt?: string;
    readonly cleanedAt?: string;
}
interface LiveBusinessEvent {
    readonly id: string;
    readonly type: string;
    readonly occurredAt: string;
    readonly aggregateType: string;
    readonly aggregateId: string;
    readonly payload: unknown;
}
interface LiveReviewFinding {
    readonly id: string;
    readonly changeSetId: ChangeSetId;
    readonly candidateDigest: string;
    readonly severity: "blocking" | "warning" | "recommendation" | "info";
    readonly summary: string;
    readonly source?: string;
    readonly resolved: boolean;
}
export interface LiveHierarchy {
    readonly acceptance?: {
        readonly checked: number;
        readonly total: number;
    };
    readonly project: C1ProjectOverviewPayload["project"] & {
        readonly revision?: number;
    };
    readonly vision?: {
        readonly id: string;
        readonly sequence: number;
        readonly summary: string;
    };
    readonly goals: readonly (C1ProjectOverviewPayload["goals"][number] & {
        readonly description?: string;
        readonly priority?: number;
        readonly targetDate?: string;
        readonly successCriteria?: readonly string[];
        readonly readiness?: string;
        readonly readinessReason?: string;
        readonly revision?: number;
    })[];
    readonly plans: readonly {
        readonly id: C1ProjectOverviewPayload["plans"][number]["id"];
        readonly title: string;
        readonly status: C1ProjectOverviewPayload["plans"][number]["status"];
        readonly revision?: number;
    }[];
    readonly planRevisions: readonly LivePlanRevision[];
    readonly planningSessions?: readonly PlanningSessionPayload[];
    readonly tasks: readonly (C1TaskFixturePayload & {
        readonly position?: number;
    })[];
    readonly factoryRuns: readonly LiveFactoryRun[];
    readonly agentRuns: readonly LiveAgentRun[];
    readonly attempts: readonly LiveAttempt[];
    readonly workspaces?: readonly LiveWorkspace[];
    readonly changeSets: readonly LiveChangeSet[];
    readonly reviews: readonly LiveReview[];
    readonly verificationEvidence: readonly LiveVerificationEvidence[];
    readonly reviewFindings: readonly LiveReviewFinding[];
    readonly events: readonly LiveBusinessEvent[];
}
export declare function toOverview(hierarchy: LiveHierarchy): {
    readonly model: C1ProjectOverviewPayload;
    readonly tasks: readonly C1TaskFixturePayload[];
};
export declare function renderApprovedLiveProjectList(projects: readonly ProjectListItem[]): string;
export declare function renderApprovedLiveSystemSettings(projects: readonly ProjectListItem[], settings: readonly ProjectConfigurationViewItem[], accounts: readonly AccountListItem[]): string;
export declare function renderApprovedLiveProject(hierarchy: LiveHierarchy, tab?: string, runAccounts?: readonly AccountListItem[], settings?: readonly ProjectConfigurationViewItem[]): string;
export declare function renderApprovedLiveCluster(input: {
    readonly project?: {
        readonly id: string;
        readonly name: string;
    };
    readonly cluster: ClusterView;
    readonly machines: readonly MachineView[];
    readonly enrollment?: EnrollmentView;
    readonly error?: string;
}): string;
export declare function renderApprovedLiveAccounts(hierarchy: LiveHierarchy, accounts: readonly AccountListItem[], returnTo?: string): string;
export declare function renderApprovedLiveQueue(hierarchy: LiveHierarchy, url: URL): string;
export declare function factoryDetail(hierarchy: LiveHierarchy, factoryRunId: string): I1FactoryRunDetailReadModel;
export declare function renderApprovedLiveFactory(hierarchy: LiveHierarchy, factoryRunId: string, url: URL): string;
export declare function reviewDetail(hierarchy: LiveHierarchy, changeSetId: string): {
    readonly model: I1ChangeSetReviewReadModel;
    readonly factoryRunId?: FactoryRunId;
    readonly diff: string;
};
export declare function renderApprovedLiveReview(hierarchy: LiveHierarchy, changeSetId: string, url: URL): string;
export declare function renderApprovedLivePlanningNew(hierarchy: LiveHierarchy): string;
export declare function renderApprovedLivePlanningWorkspace(hierarchy: LiveHierarchy, session: PlanningSessionPayload, accounts: readonly AccountListItem[], interviewer?: PlanningInterviewerPayload, inspectedItemKey?: string, surfaceState?: "ready" | "loading" | "error" | "stale"): string;
export {};
//# sourceMappingURL=approved-live.d.ts.map