import type { RunStatus, TestSuiteRunStatus } from "@codemation/core"; export interface TestSuiteRunRecord { readonly id: string; readonly workflowId: string; readonly triggerNodeId: string; readonly triggerNodeName?: string; readonly status: TestSuiteRunStatus | "running"; readonly concurrency: number; readonly startedAt: string; readonly finishedAt?: string; readonly totalCases: number; readonly passedCases: number; readonly failedCases: number; readonly nodeCoverage?: ReadonlyArray; readonly errorMessage?: string; readonly updatedAt: string; } export interface CreateTestSuiteRunArgs { readonly id: string; readonly workflowId: string; readonly triggerNodeId: string; readonly triggerNodeName?: string; readonly concurrency: number; readonly startedAt: string; } export interface UpdateTestSuiteRunPatch { readonly status?: TestSuiteRunStatus | "running"; readonly finishedAt?: string; readonly totalCases?: number; readonly passedCases?: number; readonly failedCases?: number; readonly nodeCoverage?: ReadonlyArray; readonly errorMessage?: string; } export interface TestSuiteChildRunSummary { readonly runId: string; readonly testSuiteRunId: string; readonly testCaseIndex: number; readonly testCaseLabel?: string; readonly status: RunStatus; readonly testCaseStatus?: string; readonly startedAt: string; readonly finishedAt?: string; } export interface TestSuiteRunRepository { create(args: CreateTestSuiteRunArgs): Promise; update(id: string, patch: UpdateTestSuiteRunPatch): Promise; findById(id: string): Promise; listByWorkflow(args: Readonly<{ workflowId: string; limit?: number }>): Promise>; listChildRuns(testSuiteRunId: string): Promise>; deleteById(id: string): Promise; }