import type { IssueGroup } from '../../types/analysis.types'; interface SarifPhysicalLocation { physicalLocation: { artifactLocation: { uri: string; uriBaseId?: string; }; region?: { startLine: number; startColumn?: number; }; }; message?: { text: string; }; } interface SarifResult { ruleId: string; level: 'error' | 'warning' | 'note'; message: { text: string; }; locations: SarifPhysicalLocation[]; /** * SARIF spec field for additional source locations that helped pinpoint a * result. We populate it from Box-style multi-frame traces (CDK >= 2.252): * the primary location is the property-setter / construct-creation site, * and relatedLocations carry the rest of the user-side call stack. */ relatedLocations?: SarifPhysicalLocation[]; properties?: { 'security-severity'?: string; wafPillar?: string; recommendation?: string; }; } interface SarifRule { id: string; name: string; shortDescription: { text: string; }; fullDescription?: { text: string; }; helpUri?: string; properties?: { 'security-severity': string; tags?: string[]; }; } interface SarifOutput { $schema: string; version: string; runs: Array<{ tool: { driver: { name: string; version: string; informationUri: string; rules: SarifRule[]; }; }; results: SarifResult[]; }>; } export declare const generateSarifOutput: (stackName: string, recommendations: Record) => SarifOutput; export default generateSarifOutput;