import { Observable } from "rxjs";
export interface SecurityVulnerability {
    id: string;
    severity: "low" | "medium" | "high" | "critical";
    category: "authentication" | "authorization" | "data-protection" | "input-validation" | "encryption" | "logging";
    title: string;
    description: string;
    impact: string;
    recommendation: string;
    detectedAt: Date;
    status: "open" | "investigating" | "mitigated" | "resolved";
    cveId?: string;
    affectedComponent?: string;
}
export interface SecurityAuditResult {
    timestamp: Date;
    overallScore: number;
    riskLevel: "low" | "medium" | "high" | "critical";
    vulnerabilities: SecurityVulnerability[];
    complianceStatus: {
        gdpr: boolean;
        sox: boolean;
        hipaa: boolean;
        pci: boolean;
    };
    recommendations: string[];
    nextAuditDate: Date;
}
export interface SecurityMetrics {
    totalVulnerabilities: number;
    criticalVulnerabilities: number;
    highVulnerabilities: number;
    mediumVulnerabilities: number;
    lowVulnerabilities: number;
    resolvedVulnerabilities: number;
    averageResolutionTime: number;
    securityScore: number;
    lastAuditDate: Date;
}
export interface DataClassification {
    level: "public" | "internal" | "confidential" | "restricted";
    description: string;
    encryptionRequired: boolean;
    retentionPolicy: string;
    accessControls: string[];
}
export declare class SecurityAuditService {
    private readonly logger;
    private readonly vulnerabilities;
    private readonly securitySubject;
    private readonly vulnerabilitySubject;
    private readonly securityConfig;
    private readonly dataClassificationMatrix;
    constructor();
    private startSecurityMonitoring;
    performSecurityAudit(): Promise<SecurityAuditResult>;
    private auditAuthenticationAndAuthorization;
    private auditDataProtection;
    private auditInputValidation;
    private auditEncryption;
    private auditLoggingAndMonitoring;
    private auditConfigurationSecurity;
    private calculateSecurityScore;
    private determineRiskLevel;
    private checkComplianceStatus;
    private generateSecurityRecommendations;
    private checkForNewVulnerabilities;
    getSecurityAuditStream(): Observable<SecurityAuditResult>;
    getVulnerabilitiesStream(): Observable<SecurityVulnerability[]>;
    getCurrentVulnerabilities(): SecurityVulnerability[];
    getSecurityMetrics(): SecurityMetrics;
    updateVulnerabilityStatus(vulnerabilityId: string, status: SecurityVulnerability["status"]): boolean;
    getDataClassification(dataType: string): DataClassification | undefined;
    validateSecurityConfiguration(): boolean;
    generateSecurityReport(): string;
}
