export interface AltCheckerImage { src: string; alt: string | null; hasAlt: boolean; width: string | null; height: string | null; isDecorative: boolean; context: "present" | "empty" | "missing" | "decorative"; } export interface AltCheckerResponse { images: AltCheckerImage[]; title: string; url: string; summary: { total: number; withAlt: number; emptyAlt: number; missingAlt: number; decorative: number; }; } export interface LinkCheckerLink { url: string; text: string; status: number; statusText: string; isExternal: boolean; warning?: string; } export interface LinkCheckerResponse { links: LinkCheckerLink[]; title: string; checkedUrl: string; totalLinks: number; } export interface SpeedMetric { score: number; value: string; displayValue: string; } export interface ContrastViolation { snippet: string; explanation: string; } export interface AccessibilityResult { score: number | null; colorContrast: { score: number | null; violations: ContrastViolation[]; violationCount: number; }; } export interface SpeedCheckerResponse { url: string; strategy: "mobile" | "desktop"; performanceScore: number; metrics: { fcp: SpeedMetric; lcp: SpeedMetric; tbt: SpeedMetric; cls: SpeedMetric; si: SpeedMetric; tti: SpeedMetric; }; opportunities: Array<{ title: string; savings: string; }>; accessibility: AccessibilityResult; fetchedAt: string; } export interface JsonLdItem { type: string; valid: boolean; raw: string; } export interface FaviconItem { rel: string; href: string; type: string; sizes: string; } export interface FaviconResult { icons: FaviconItem[]; hasFavicon: boolean; hasAppleTouchIcon: boolean; faviconIcoExists: boolean | null; } export interface OgpCheckerResponse { ogp: { title: string; description: string; image: string; url: string; type: string; siteName: string; }; twitter: { card: string; title: string; description: string; image: string; }; canonical: string; jsonLd: JsonLdItem[]; favicon: FaviconResult; rawUrl: string; } export interface SiteConfigRobotsResult { exists: boolean; content: string | null; hasSitemapDirective: boolean; sitemapUrls: string[]; rules: number; issues: string[]; } export interface SiteConfigSitemapResult { exists: boolean; url: string | null; urlCount: number; isIndex: boolean; issues: string[]; } export interface SiteConfigCheckerResponse { robots: SiteConfigRobotsResult; sitemap: SiteConfigSitemapResult; domain: string; checkedUrl: string; } export interface HeadingExtractorHeading { level: number; text: string; } export interface HeadingExtractorResponse { headings: HeadingExtractorHeading[]; title: string; url: string; } export interface SecurityHeaderCheck { name: string; present: boolean; value: string | null; status: "pass" | "warn" | "fail"; detail: string; } export interface SecurityHeadersCheckerResponse { headers: SecurityHeaderCheck[]; summary: { total: number; present: number; missing: number; score: number; }; url: string; checkedUrl: string; } export interface CacheHeaderResult { name: string; present: boolean; value: string | null; status: "pass" | "warn" | "fail"; detail: string; category: "browser" | "cdn" | "validation"; } export interface CacheCheckerResponse { headers: CacheHeaderResult[]; summary: { total: number; present: number; missing: number; score: number; browserCache: "enabled" | "partial" | "disabled"; cdnCache: "hit" | "miss" | "unknown"; }; url: string; checkedUrl: string; } export interface SchemaProperty { name: string; present: boolean; value?: string; required: boolean; } export interface SchemaResult { type: string; source: "json-ld"; properties: SchemaProperty[]; status: "pass" | "warn" | "fail"; issues: string[]; raw: string; } export interface SchemaCheckerResponse { schemas: SchemaResult[]; summary: { totalSchemas: number; passCount: number; warnCount: number; failCount: number; score: number; types: string[]; }; checkedUrl: string; } export interface RedirectHop { url: string; statusCode: number; statusText: string; location: string | null; server: string | null; } export interface RedirectCheckerResponse { hops: RedirectHop[]; summary: { totalHops: number; finalUrl: string; finalStatus: number; hasLoop: boolean; hasHttpDowngrade: boolean; chainStatus: "pass" | "warn" | "fail"; }; checkedUrl: string; } export interface ImageCheckResult { src: string; alt: string | null; hasWidth: boolean; hasHeight: boolean; hasLazy: boolean; format: string; fileSize: number | null; status: "pass" | "warn" | "fail"; issues: string[]; } export interface ImageCheckerResponse { images: ImageCheckResult[]; summary: { totalImages: number; totalOnPage: number; passCount: number; warnCount: number; failCount: number; score: number; nextGenRate: number; lazyRate: number; dimensionRate: number; }; checkedUrl: string; } export interface ApiErrorResponse { error: string; } export type VibeAuditSeverity = "critical" | "high" | "medium" | "low"; export type VibeAuditFindingStatus = "fail" | "warn" | "pass"; export interface VibeAuditFinding { id: string; title: string; severity: VibeAuditSeverity; status: VibeAuditFindingStatus; description: string; filePath?: string; /** Masked evidence (secrets are redacted) */ evidence?: string; /** Fix code snippet */ fix?: string; } export interface VibeAuditToolResult { tool: string; status: VibeAuditFindingStatus | "error" | "skipped"; findings: VibeAuditFinding[]; error?: string; } export interface VibeAuditReport { projectPath: string; score: number; summary: string; results: VibeAuditToolResult[]; totalFindings: number; criticalCount: number; highCount: number; mediumCount: number; lowCount: number; } export type CheckStatus = "pass" | "warn" | "fail" | "error" | "skipped" | "manual"; export type Tier1ToolName = "ogp" | "headings" | "links" | "speed" | "alt" | "siteConfig" | "securityHeaders" | "cache" | "schema" | "redirect" | "image"; export interface CollectedToolResults { ogp: { data: OgpCheckerResponse; } | { error: string; } | null; headings: { data: HeadingExtractorResponse; } | { error: string; } | null; links: { data: LinkCheckerResponse; } | { error: string; } | null; speed: { data: SpeedCheckerResponse; } | { error: string; } | null; alt: { data: AltCheckerResponse; } | { error: string; } | null; siteConfig: { data: SiteConfigCheckerResponse; } | { error: string; } | null; securityHeaders: { data: SecurityHeadersCheckerResponse; } | { error: string; } | null; cache: { data: CacheCheckerResponse; } | { error: string; } | null; schema: { data: SchemaCheckerResponse; } | { error: string; } | null; redirect: { data: RedirectCheckerResponse; } | { error: string; } | null; image: { data: ImageCheckerResponse; } | { error: string; } | null; } export interface CheckItemDefinition { id: string; category: string; label: string; weight: number; autoVerifiable: boolean; tier1Tool?: Tier1ToolName; evaluate?: (results: CollectedToolResults) => { status: CheckStatus; detail?: string; }; } export interface CheckItemResult { id: string; category: string; label: string; status: CheckStatus; detail?: string; } export interface ToolResultSummary { status: CheckStatus; details: Record; } export interface AuditReport { url: string; auditType: string; score: number; summary: string; results: Record; checklist: { total: number; passed: number; warned: number; failed: number; errors: number; manual: number; items: CheckItemResult[]; }; } //# sourceMappingURL=types.d.ts.map