export type Protocol = 'https' | 'wss'; export type CheckStatus = 'pass' | 'fail' | 'warn' | 'skip'; export type DomainRegion = 'global' | 'us' | 'eu'; export type RegionSelector = 'us' | 'eu' | 'all'; export interface DomainEntry { hostname: string; name: string; group: string; proto: Protocol; critical: boolean; region: DomainRegion; } export interface DnsResult { status: CheckStatus; ms?: number; ips?: string[]; error?: string; } export interface TcpResult { status: CheckStatus; ms?: number; error?: string; } export interface HttpsResult { status: CheckStatus; ms?: number; statusCode?: number; error?: string; } export interface WssResult { status: CheckStatus; ms?: number; httpStatus?: number; error?: string; } export interface DomainResult { domain: DomainEntry; checks: { dns: DnsResult; tcp: TcpResult; https: HttpsResult; wss: WssResult; }; overall: CheckStatus; } export interface RunResult { timestamp: string; nodeVersion: string; platform: string; results: DomainResult[]; summary: ResultSummary; } export interface ResultSummary { total: number; passed: number; warned: number; failed: number; criticalFailed: number; } export interface SuiteCheckResult { name: string; group: string; status: CheckStatus; critical: boolean; ms?: number; detail?: Record; error?: string; } export interface SuiteResult { suite: string; results: SuiteCheckResult[]; summary: ResultSummary; } export interface SuiteRunOptions { timeoutMs?: number; group?: string | null; region?: RegionSelector; onProgress?: (completed: number, total: number) => void; } export interface SuiteDefinition { name: string; description: string; run(options: SuiteRunOptions): Promise; } export interface DiagnosticsResult { timestamp: string; nodeVersion: string; platform: string; suites: Record; summary: ResultSummary; }