import type { MemoryWorkflowPort } from "@oscharko-dev/keiko-contracts";
import type { WorkflowHandoffRequest } from "@oscharko-dev/keiko-contracts/workflow-handoff";
import type { ModelPort } from "@oscharko-dev/keiko-harness";
import type { SpawnFn, WorkspaceWriter } from "@oscharko-dev/keiko-tools";
import type { TestFramework, WorkspaceFs } from "@oscharko-dev/keiko-workspace";
import type { VerificationAuditSummary } from "@oscharko-dev/keiko-verification";
import type { WorkflowEventSink } from "./events.js";
import type { FileNamingStyle, WorkflowLimits, WorkflowStatus } from "@oscharko-dev/keiko-contracts";
export type { WorkflowStatus, FileNamingStyle, WorkflowLimits, } from "@oscharko-dev/keiko-contracts";
export { DEFAULT_WORKFLOW_LIMITS } from "@oscharko-dev/keiko-contracts";
export type UnitTestTarget = {
    readonly kind: "file";
    readonly filePath: string;
    readonly targetFunction?: string | undefined;
} | {
    readonly kind: "module";
    readonly moduleDir: string;
} | {
    readonly kind: "changedFiles";
    readonly filePaths: readonly string[];
};
export interface TestConventions {
    readonly framework: TestFramework;
    readonly testDirs: readonly string[];
    readonly fileNamingStyle: FileNamingStyle;
    readonly assertionStyleSamples: readonly string[];
}
export interface UnitTestWorkflowInput {
    readonly workspaceRoot: string;
    readonly target: UnitTestTarget;
    readonly apply?: boolean | undefined;
    readonly modelId: string;
    readonly limits?: Partial<WorkflowLimits> | undefined;
}
export interface UnitTestWorkflowDeps {
    readonly model: ModelPort;
    readonly fs?: WorkspaceFs | undefined;
    readonly writer?: WorkspaceWriter | undefined;
    readonly spawn?: SpawnFn | undefined;
    readonly now?: (() => number) | undefined;
    readonly idSource?: (() => string) | undefined;
    readonly sink?: WorkflowEventSink | undefined;
    readonly processEnv?: NodeJS.ProcessEnv | undefined;
    readonly signal?: AbortSignal | undefined;
    readonly memoryPort?: MemoryWorkflowPort | undefined;
    readonly workflowHandoff?: WorkflowHandoffRequest | undefined;
}
export interface AddedTestFile {
    readonly path: string;
    readonly estimatedTestCount: number;
}
export interface UnitTestWorkflowReport {
    readonly workflowId: "unit-test-generation";
    readonly status: WorkflowStatus;
    readonly modelId: string;
    readonly durationMs: number;
    readonly dryRunPreview?: string | undefined;
    readonly proposedDiff?: string | undefined;
    readonly addedTestFiles: readonly AddedTestFile[];
    readonly coveredBehavior?: string | undefined;
    readonly knownGaps?: string | undefined;
    readonly nextActions: readonly string[];
    readonly failureReason?: string | undefined;
    readonly verificationSummary?: VerificationAuditSummary | undefined;
    readonly verificationSkipReason?: string | undefined;
    readonly modelCallCount: number;
    readonly patchRetryCount: number;
}
//# sourceMappingURL=types.d.ts.map