/**
 * Runtime Verification Types
 *
 * Types for app launching, golden path testing, and runtime verification.
 *
 * @module scanners/runtime/types
 */
import { z } from "zod";
/**
 * Supported frameworks for automatic detection and launching
 */
export type Framework = "nextjs" | "vite" | "create-react-app" | "express" | "fastapi" | "flask" | "django" | "rails" | "unknown";
/**
 * Framework detection result
 */
export interface FrameworkDetection {
    framework: Framework;
    version?: string;
    confidence: number;
    devCommand: string;
    buildCommand?: string;
    port: number;
    healthEndpoint: string;
    indicators: string[];
}
/**
 * App launch configuration
 */
export interface AppLaunchConfig {
    projectPath: string;
    framework?: Framework;
    port?: number;
    command?: string;
    env?: Record<string, string>;
    timeout?: number;
    healthEndpoint?: string;
}
/**
 * App launch result
 */
export interface AppLaunchResult {
    success: boolean;
    framework: Framework;
    port: number;
    pid?: number;
    url: string;
    healthStatus: "healthy" | "unhealthy" | "timeout";
    startupTime: number;
    error?: string;
}
/**
 * Golden path action types
 */
export type GoldenPathAction = "navigate" | "click" | "fill" | "select" | "assert" | "wait" | "screenshot" | "api";
/**
 * Golden path step definition
 */
export interface GoldenPathStep {
    action: GoldenPathAction;
    url?: string;
    selector?: string;
    value?: string;
    timeout?: number;
    screenshot?: boolean;
    description?: string;
}
/**
 * Golden path flow definition (YAML schema)
 */
export declare const GoldenPathFlowSchema: z.ZodObject<{
    name: z.ZodString;
    description: z.ZodOptional<z.ZodString>;
    priority: z.ZodDefault<z.ZodEnum<["critical", "high", "medium", "low"]>>;
    tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
    baseUrl: z.ZodOptional<z.ZodString>;
    steps: z.ZodArray<z.ZodObject<{
        action: z.ZodEnum<["navigate", "click", "fill", "select", "assert", "wait", "screenshot", "api"]>;
        url: z.ZodOptional<z.ZodString>;
        selector: z.ZodOptional<z.ZodString>;
        value: z.ZodOptional<z.ZodString>;
        method: z.ZodOptional<z.ZodEnum<["GET", "POST", "PUT", "DELETE", "PATCH"]>>;
        body: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
        headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
        timeout: z.ZodOptional<z.ZodNumber>;
        screenshot: z.ZodOptional<z.ZodBoolean>;
        description: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        action: "fill" | "api" | "navigate" | "click" | "select" | "assert" | "wait" | "screenshot";
        value?: string | undefined;
        description?: string | undefined;
        timeout?: number | undefined;
        url?: string | undefined;
        headers?: Record<string, string> | undefined;
        body?: Record<string, unknown> | undefined;
        method?: "GET" | "POST" | "PUT" | "DELETE" | "PATCH" | undefined;
        screenshot?: boolean | undefined;
        selector?: string | undefined;
    }, {
        action: "fill" | "api" | "navigate" | "click" | "select" | "assert" | "wait" | "screenshot";
        value?: string | undefined;
        description?: string | undefined;
        timeout?: number | undefined;
        url?: string | undefined;
        headers?: Record<string, string> | undefined;
        body?: Record<string, unknown> | undefined;
        method?: "GET" | "POST" | "PUT" | "DELETE" | "PATCH" | undefined;
        screenshot?: boolean | undefined;
        selector?: string | undefined;
    }>, "many">;
}, "strip", z.ZodTypeAny, {
    name: string;
    priority: "critical" | "high" | "medium" | "low";
    steps: {
        action: "fill" | "api" | "navigate" | "click" | "select" | "assert" | "wait" | "screenshot";
        value?: string | undefined;
        description?: string | undefined;
        timeout?: number | undefined;
        url?: string | undefined;
        headers?: Record<string, string> | undefined;
        body?: Record<string, unknown> | undefined;
        method?: "GET" | "POST" | "PUT" | "DELETE" | "PATCH" | undefined;
        screenshot?: boolean | undefined;
        selector?: string | undefined;
    }[];
    description?: string | undefined;
    tags?: string[] | undefined;
    baseUrl?: string | undefined;
}, {
    name: string;
    steps: {
        action: "fill" | "api" | "navigate" | "click" | "select" | "assert" | "wait" | "screenshot";
        value?: string | undefined;
        description?: string | undefined;
        timeout?: number | undefined;
        url?: string | undefined;
        headers?: Record<string, string> | undefined;
        body?: Record<string, unknown> | undefined;
        method?: "GET" | "POST" | "PUT" | "DELETE" | "PATCH" | undefined;
        screenshot?: boolean | undefined;
        selector?: string | undefined;
    }[];
    description?: string | undefined;
    tags?: string[] | undefined;
    priority?: "critical" | "high" | "medium" | "low" | undefined;
    baseUrl?: string | undefined;
}>;
export type GoldenPathFlow = z.infer<typeof GoldenPathFlowSchema>;
/**
 * Step execution result
 */
export interface StepResult {
    step: number;
    action: GoldenPathAction;
    success: boolean;
    duration: number;
    error?: string;
    screenshot?: string;
    assertion?: {
        expected: string;
        actual: string;
        passed: boolean;
    };
}
/**
 * Golden path execution result
 */
export interface GoldenPathResult {
    flowName: string;
    success: boolean;
    totalSteps: number;
    passedSteps: number;
    failedSteps: number;
    duration: number;
    steps: StepResult[];
    screenshots: string[];
    error?: string;
}
/**
 * Visual regression result
 */
export interface VisualRegressionResult {
    baseline: string;
    current: string;
    diff?: string;
    pixelDifference: number;
    percentDifference: number;
    passed: boolean;
    threshold: number;
}
/**
 * Runtime verification score components
 */
export interface RuntimeScore {
    goldenPathsPassed: number;
    goldenPathsTotal: number;
    visualRegressionsPassed: number;
    visualRegressionsTotal: number;
    apiTestsPassed: number;
    apiTestsTotal: number;
    overallScore: number;
}
/**
 * Full runtime verification result
 */
export interface RuntimeVerificationResult {
    success: boolean;
    framework: Framework;
    appUrl: string;
    duration: number;
    goldenPaths: GoldenPathResult[];
    visualRegressions: VisualRegressionResult[];
    score: RuntimeScore;
    error?: string;
}
//# sourceMappingURL=types.d.ts.map