/** * SQLite Database for aurasecurity * * Provides persistent storage for: * - Audit history * - Configuration settings * - Scan results * - Notification history */ import type { AuditorOutput } from '../types/events.js'; import type { LocalScanResult } from '../integrations/local-scanner.js'; import type { AWSScanResult } from '../integrations/aws-scanner.js'; import { type SecurityScore, type ScoreHistoryEntry, type ScoreTrend } from '../scoring/index.js'; export interface AuditRecord { id: string; type: 'code' | 'aws' | 'audit'; timestamp: string; target: string; summary: { critical: number; high: number; medium: number; low: number; }; data: string; } export interface SettingsRecord { key: string; value: string; updated_at: string; } export interface NotificationRecord { id: number; type: 'slack' | 'discord' | 'webhook'; audit_id: string; status: 'sent' | 'failed' | 'pending'; message: string; timestamp: string; error?: string; } export declare class AuditorDatabase { private db; private dbPath; constructor(dbPath?: string); private initTables; saveAudit(type: 'code' | 'aws' | 'audit', target: string, result: LocalScanResult | AWSScanResult | AuditorOutput): string; getAudit(id: string): AuditRecord | null; getAudits(limit?: number, offset?: number, type?: string): AuditRecord[]; getAuditCount(type?: string): number; deleteAudit(id: string): boolean; getSetting(key: string): string | null; getSettings(prefix?: string): Record; getAllSettings(): Record; setSetting(key: string, value: string): void; setSettings(settings: Record): void; saveNotification(type: 'slack' | 'discord' | 'webhook', auditId: string, status: 'sent' | 'failed' | 'pending', message: string, error?: string): number; recordNotification(auditId: string, channels: string, success: boolean, error?: string): void; getNotifications(auditId?: string, limit?: number): NotificationRecord[]; getStats(): { totalAudits: number; byType: Record; byDay: Array<{ date: string; count: number; }>; severityCounts: { critical: number; high: number; medium: number; low: number; }; }; saveScore(target: string, auditId: string, counts: { critical: number; high: number; medium: number; low: number; }): SecurityScore; getScoreHistory(target?: string, limit?: number): ScoreHistoryEntry[]; getLatestScore(target?: string): ScoreHistoryEntry | null; getScoreTrend(target?: string, limit?: number): ScoreTrend; getAggregateScore(): SecurityScore & { trend: ScoreTrend; }; close(): void; vacuum(): void; deleteOldAudits(daysToKeep?: number): number; } export declare function getDatabase(dbPath?: string): AuditorDatabase; export declare function closeDatabase(): void;