export interface SecurityConfig {
  scanType: string;
  includeFiles: boolean;
  includeDependencies: boolean;
  includeSecrets: boolean;
  includePermissions: boolean;
  outputFormat: string;
}

export interface SecurityFinding {
  id: string;
  title: string;
  description: string;
  severity: 'critical' | 'high' | 'medium' | 'low';
  category: 'secrets' | 'dependencies' | 'permissions' | 'code' | 'configuration';
  file?: string;
  line?: number;
  recommendation?: string;
  cwe?: string; // Common Weakness Enumeration
  cvss?: number; // Common Vulnerability Scoring System
}

export interface SecurityScanResult {
  summary: {
    status: 'pass' | 'warning' | 'fail';
    totalIssues: number;
    critical: number;
    high: number;
    medium: number;
    low: number;
    scanTime: number;
  };
  findings: SecurityFinding[];
  recommendations?: string[];
  metadata: {
    scanDate: string;
    scanType: string;
    version: string;
  };
}

export interface SecretPattern {
  name: string;
  pattern: RegExp;
  severity: 'high' | 'medium' | 'low';
  description: string;
}

export interface SecretFinding {
  type: string;
  file: string;
  line: number;
  pattern: string;
  severity: 'high' | 'medium' | 'low';
  context?: string;
}

export interface VulnerabilityReport {
  total: number;
  critical: number;
  high: number;
  moderate: number;
  low: number;
  details?: VulnerabilityDetail[];
  lastChecked: string;
}

export interface VulnerabilityDetail {
  name: string;
  package: string;
  severity: string;
  description: string;
  recommendation: string;
  cve?: string;
  cvss?: number;
}

export interface SecuritySetupConfig {
  enablePreCommitScans: boolean;
  enableSecretDetection: boolean;
  enableVulnerabilityChecks: boolean;
  createSecurityPolicy: boolean;
  setupGitHooks: boolean;
}

export interface SecuritySetupResult {
  filesCreated: string[];
  toolsConfigured: string[];
  nextSteps: string[];
}

export interface SecurityReport {
  markdown: string;
  summary: {
    totalIssues: number;
    critical: number;
    high: number;
    medium: number;
    low: number;
  };
  sections: {
    overview?: string;
    details?: string;
    recommendations?: string;
  };
}