import type { NetworkPolicy } from "./tools.js";
export type VerificationKind = "test" | "targeted-test" | "typecheck" | "lint" | "build";
export type VerificationStatus = "passed" | "failed" | "skipped" | "denied" | "timed-out" | "cancelled" | "resource-exceeded";
export type ResourceDimension = "wall-time" | "output-size" | "memory" | "network";
export interface ResourceLimitDecision {
    readonly dimension: ResourceDimension;
    readonly limit: number | string;
    readonly enforced: boolean;
    readonly note?: string | undefined;
    readonly breached?: boolean | undefined;
}
export interface VerificationResourceLimits {
    readonly wallTimeMs: number;
    readonly maxOutputBytes: number;
    readonly maxMemoryBytes: number | undefined;
    readonly network: NetworkPolicy;
}
export declare const DEFAULT_VERIFICATION_LIMITS: VerificationResourceLimits;
export interface VerificationStep {
    readonly kind: VerificationKind;
    readonly scriptName: string | undefined;
    readonly command: string;
    readonly args: readonly string[];
    readonly limits: VerificationResourceLimits;
    readonly skipReason?: string | undefined;
}
export interface VerificationPlan {
    readonly workspaceRoot: string;
    readonly steps: readonly VerificationStep[];
}
export interface VerificationResult {
    readonly kind: VerificationKind;
    readonly scriptName: string | undefined;
    readonly command: string;
    readonly args: readonly string[];
    readonly status: VerificationStatus;
    readonly exitCode: number | null;
    readonly signal: string | null;
    readonly durationMs: number;
    readonly truncated: boolean;
    readonly redacted: boolean;
    readonly outputSummary: string;
    readonly appliedLimits: readonly ResourceLimitDecision[];
    readonly detail?: string | undefined;
}
export interface VerificationReport {
    readonly workspaceRoot: string;
    readonly results: readonly VerificationResult[];
    readonly overallStatus: VerificationStatus;
    readonly startedAtMs: number;
    readonly durationMs: number;
    readonly counts: Readonly<Record<VerificationStatus, number>>;
}
export interface ScriptCatalog {
    readonly scripts: Readonly<Record<string, string>>;
    readonly mapping: ScriptMapping;
}
export interface ScriptMapping {
    readonly test: string | undefined;
    readonly typecheck: string | undefined;
    readonly lint: string | undefined;
    readonly build: string | undefined;
}
//# sourceMappingURL=verification.d.ts.map