import type { Finding, FindingSeverity, RulesResult } from '../rules/types'; import type { AnalysisResult, TaintPath } from '../types/taint'; export interface ReportSummary { totalFindings: number; bySeverity: Record; byCategory: Record; affectedNodes: number; uniqueSources: number; uniqueSinks: number; } export interface RiskAssessment { score: number; level: 'none' | 'low' | 'medium' | 'high' | 'critical'; factors: string[]; recommendations: string[]; } export interface FindingGroup { key: string; label: string; findings: Finding[]; count: number; } export interface NodeAssessment { name: string; type: string; role: 'source' | 'sink' | 'path' | 'both'; findingCount: number; maxSeverity: FindingSeverity; findingIds: string[]; } export interface SecurityReport { metadata: { generatedAt: string; version: string; duration: number; }; workflow: { id: string; name: string; nodeCount: number; connectionCount: number; hasCycles: boolean; }; summary: ReportSummary; risk: RiskAssessment; findings: Finding[]; findingsByCategory: FindingGroup[]; findingsBySeverity: FindingGroup[]; nodeAssessments: NodeAssessment[]; recommendations: string[]; warnings: string[]; ruleStats: { rulesRun: number; rulesSkipped: number; errors: string[]; }; } export interface ReportOptions { includeNodeAssessments?: boolean; maxFindingsPerGroup?: number; includeRemediation?: boolean; } export declare function generateReport(analysisResult: AnalysisResult, rulesResult: RulesResult, options?: ReportOptions): SecurityReport; export declare function calculateRiskScore(findings: Finding[]): number; export declare function getRiskLevel(score: number): 'none' | 'low' | 'medium' | 'high' | 'critical'; export declare function formatFinding(finding: Finding): string; export declare function generateReportSummary(report: SecurityReport): string; export declare function taintPathsToFindings(taintPaths: TaintPath[]): Finding[];