import type { RuntimeAwakeConfig } from '../../../lib/runtime-web/runtime-awake';
/**
 * Diagnostic check result status.
 */
export type DiagnosticStatus = 'pass' | 'warn' | 'fail';
/**
 * Individual diagnostic check result.
 */
export interface DiagnosticCheckResult {
    /** Check name */
    readonly name: string;
    /** Check status */
    readonly status: DiagnosticStatus;
    /** Human-readable message */
    readonly message: string;
    /** Suggested fix if failed */
    readonly suggestedFix?: string;
    /** Additional details */
    readonly details?: Record<string, unknown>;
}
/**
 * Overall diagnostic result.
 *
 * @see Requirements 13.7
 */
export interface DiagnosticResult {
    /** Overall status: ready, degraded, or not_ready */
    readonly overallStatus: 'ready' | 'degraded' | 'not_ready';
    /** Human-readable summary */
    readonly summary: string;
    /** Individual check results */
    readonly checks: DiagnosticCheckResult[];
    /** Timestamp of diagnostic run */
    readonly timestamp: string;
}
/**
 * Diagnostic configuration.
 */
export interface DiagnosticConfig {
    /** AWS region */
    readonly region: string;
    /** AWS profile (optional) */
    readonly profile?: string;
    /** IoT Core endpoint (optional, will be discovered if not provided) */
    readonly iotEndpoint?: string;
    /** Session table name */
    readonly sessionTableName?: string;
    /** Payload bucket name */
    readonly payloadBucketName?: string;
    /** Developer ID */
    readonly devId?: string;
    /** Target Lambda Node.js runtime version (e.g., '18', '20') */
    readonly targetNodeVersion?: string;
    /** VPC Agent URL (optional) */
    readonly vpcAgentUrl?: string;
    /** Private hosts to test connectivity (optional) */
    readonly privateHosts?: Array<{
        host: string;
        port: number;
    }>;
}
/**
 * Supported Lambda Node.js runtime versions.
 */
export declare const SUPPORTED_NODE_VERSIONS: readonly ["18", "20", "22"];
/**
 * Default target Node.js version for Lambda.
 */
export declare const DEFAULT_TARGET_NODE_VERSION = "20";
/**
 * Parse Node.js version string into major and minor components.
 *
 * @param version - Version string (e.g., 'v20.10.0', '20.10.0', '20')
 * @returns Object with major and minor version numbers
 */
export declare function parseNodeVersion(version: string): {
    major: number;
    minor: number;
};
/**
 * Check Node.js version compatibility with target Lambda runtime.
 *
 * Returns true if and only if major(local) equals major(target)
 * and minor(local) >= minor(target).
 *
 * @param localVersion - Local Node.js version
 * @param targetVersion - Target Lambda runtime version
 * @returns True if compatible
 *
 * @see Requirements 13.5
 */
export declare function checkNodeVersionCompatibility(localVersion: string, targetVersion: string): boolean;
/**
 * Determine overall diagnostic status from individual check results.
 *
 * - ✅ "ready" if all checks pass
 * - ⚠️ "degraded" if only VPC connectivity checks fail
 * - ❌ "not_ready" if any critical check fails
 *
 * @param checks - Array of check results
 * @returns Overall status
 *
 * @see Requirements 13.7
 */
export declare function determineOverallStatus(checks: DiagnosticCheckResult[]): 'ready' | 'degraded' | 'not_ready';
/**
 * Generate human-readable summary from diagnostic status.
 *
 * @param status - Overall status
 * @param failedChecks - Names of failed checks
 * @returns Summary string
 */
export declare function generateSummary(status: 'ready' | 'degraded' | 'not_ready', failedChecks: string[]): string;
/**
 * Live Dev Diagnostics Runner.
 *
 * Runs all diagnostic checks and produces a comprehensive report.
 *
 * @see Requirements 13.1, 13.2, 13.3, 13.4, 13.5, 13.6, 13.7
 */
export declare class RuntimeAwakeDiagnostics {
    private readonly config;
    private readonly checks;
    /**
     * Create a new diagnostics runner.
     *
     * @param config - Diagnostic configuration
     */
    constructor(config: DiagnosticConfig);
    /**
     * Run all diagnostic checks.
     *
     * @returns Diagnostic result
     */
    runAll(): Promise<DiagnosticResult>;
    /**
     * Check AWS credentials and permissions.
     *
     * @see Requirements 13.2
     */
    private checkAwsCredentials;
    /**
     * Check IoT Core connection and endpoint.
     *
     * @see Requirements 13.3
     */
    private checkIotCoreConnection;
    /**
     * Test MQTT publish/subscribe with a test message.
     *
     * @see Requirements 13.4
     */
    private checkIotCorePubSub;
    /**
     * Check Node.js version compatibility.
     *
     * @see Requirements 13.5
     */
    private checkNodeVersion;
    /**
     * Check DynamoDB session table access.
     */
    private checkDynamoDbTable;
    /**
     * Check S3 payload bucket access.
     */
    private checkS3Bucket;
    /**
     * Check VPC Agent connectivity.
     *
     * @see Requirements 9.3, 13.6
     */
    private checkVpcConnectivity;
    /**
     * Check connectivity to private hosts.
     *
     * @see Requirements 9.2, 13.6
     */
    private checkPrivateHosts;
    /**
     * Test HTTP endpoint connectivity.
     *
     * @param url - URL to test
     * @returns Test result
     */
    private testHttpEndpoint;
    /**
     * Test TCP connection to a host:port.
     *
     * @param host - Host to connect to
     * @param port - Port to connect to
     * @returns Test result
     */
    private testTcpConnection;
}
/**
 * Console UI for diagnostic output.
 */
export declare class DiagnosticConsoleUI {
    /**
     * Display diagnostic banner.
     */
    displayBanner(): void;
    /**
     * Display a check result.
     *
     * @param result - Check result
     */
    displayCheck(result: DiagnosticCheckResult): void;
    /**
     * Display all check results.
     *
     * @param results - Array of check results
     */
    displayAllChecks(results: DiagnosticCheckResult[]): void;
    /**
     * Display overall result summary.
     *
     * @param result - Diagnostic result
     */
    displaySummary(result: DiagnosticResult): void;
    /**
     * Get status icon for display.
     *
     * @param status - Check status
     * @returns Icon string
     */
    private getStatusIcon;
}
/**
 * Run Live Dev diagnostics.
 *
 * Main entry point for the `runtime dev doctor` command.
 *
 * @param config - Diagnostic configuration
 * @returns Diagnostic result
 *
 * @see Requirements 13.1
 */
export declare function runDiagnostics(config: DiagnosticConfig): Promise<DiagnosticResult>;
/**
 * Create diagnostic configuration from RuntimeAwakeConfig.
 *
 * @param config - Live Dev configuration
 * @param metadata - CDK metadata (optional)
 * @returns Diagnostic configuration
 */
export declare function createDiagnosticConfig(config: RuntimeAwakeConfig, metadata?: {
    iotEndpoint?: string;
    sessionTableName?: string;
    payloadBucketName?: string;
}): DiagnosticConfig;
