import type { VisionClawConfig } from "../config/types.js";
export type E2EStatus = "passed" | "failed" | "skipped" | "warning";
export type E2EMode = "self" | "smoke" | "google" | "browser" | "cua" | "cleanup" | "setup" | "help";
export interface E2ERequestOptions {
    mode: E2EMode;
    args: string[];
    flags: Set<string>;
    json: boolean;
    autoCleanup: boolean;
    includeDestructive: boolean;
    setupKind?: "google-guest" | "google-guest-code";
    cleanupTarget?: string;
}
export interface E2EArtifact {
    type: "file" | "directory" | "url" | "text";
    label: string;
    value: string;
}
export interface E2EErrorInfo {
    name?: string;
    message: string;
    stack?: string;
    classification?: E2EErrorClassification;
}
export type E2EErrorClassification = "missing_config" | "missing_scope" | "permission_denied" | "tool_unavailable" | "network_error" | "llm_error" | "assertion_failed" | "cleanup_failed" | "unknown";
export interface E2ETestResult {
    id: string;
    name: string;
    suite: string;
    status: E2EStatus;
    durationMs: number;
    message?: string;
    details?: Record<string, unknown>;
    artifacts?: E2EArtifact[];
    error?: E2EErrorInfo;
}
export interface E2ESuiteResult {
    id: string;
    name: string;
    status: E2EStatus;
    durationMs: number;
    tests: E2ETestResult[];
}
export interface E2ECleanupItem {
    type: "gmail_message" | "calendar_event" | "drive_file" | "local_file" | "browser_context";
    id: string;
    suite: string;
    createdAt: string;
    cleanupStatus: "pending" | "done" | "failed";
    details?: Record<string, unknown>;
}
export interface E2ECleanupResult {
    status: E2EStatus;
    items: E2ECleanupItem[];
    message?: string;
}
export interface E2ERunResult {
    runId: string;
    mode: E2EMode;
    startedAt: string;
    finishedAt: string;
    status: E2EStatus;
    durationMs: number;
    suites: E2ESuiteResult[];
    artifactsDir: string;
    cleanup: E2ECleanupResult;
}
export interface E2EContext {
    runId: string;
    mode: E2EMode;
    config: VisionClawConfig;
    options: E2ERequestOptions;
    artifactsDir: string;
    addCleanupItem: (item: Omit<E2ECleanupItem, "createdAt" | "cleanupStatus">) => void;
}
export interface E2ESuite {
    id: string;
    name: string;
    run: (context: E2EContext) => Promise<E2ESuiteResult>;
}
export interface E2EGoogleConfig {
    meetGuestEmail?: string;
    meetGuestBrowserProfileDir?: string;
}
export interface E2EConfigExtension {
    e2e?: {
        google?: E2EGoogleConfig;
    };
}
//# sourceMappingURL=types.d.ts.map