/**
 * Anomaly Detection Engine
 *
 * Rule-based anomaly detection system for identifying suspicious security patterns.
 * No machine learning required - uses statistical analysis and configurable rules.
 *
 * Features:
 * - Geographic anomaly detection (impossible travel)
 * - Temporal anomaly detection (unusual access times)
 * - Volume spike detection (request rate anomalies)
 * - Pluggable detector architecture
 * - Redis-backed baseline storage
 * - Event callbacks for alerting
 *
 * @example
 * ```typescript
 * import { AnomalyDetector, createAnomalyDetector } from './security/anomaly';
 *
 * const detector = createAnomalyDetector({
 *   enabled: true,
 *   alertThreshold: 70,
 *   autoBlock: false,
 * });
 *
 * // Analyze an event
 * const result = await detector.analyze(securityEvent);
 *
 * // Register callback for anomalies
 * detector.onAnomaly((anomaly) => {
 *   console.log('Anomaly detected:', anomaly);
 * });
 * ```
 *
 * @packageDocumentation
 * @module security/anomaly
 */
import type { AnomalyDetectorConfig, AggregatedDetectionResult, SecurityEvent, Detector, AnomalyCallback, AlertCallback } from './types.js';
/**
 * Main anomaly detection engine that orchestrates multiple detectors
 */
export declare class AnomalyDetector {
    private readonly config;
    private readonly detectors;
    private readonly anomalyCallbacks;
    private readonly alertCallbacks;
    constructor(config?: Partial<AnomalyDetectorConfig>);
    /**
     * Initialize the default set of detectors
     */
    private initializeDefaultDetectors;
    /**
     * Register a custom detector
     */
    registerDetector(detector: Detector): void;
    /**
     * Unregister a detector
     */
    unregisterDetector(name: string): boolean;
    /**
     * Get a registered detector by name
     */
    getDetector(name: string): Detector | undefined;
    /**
     * Get all registered detector names
     */
    getDetectorNames(): string[];
    /**
     * Register a callback for when anomalies are detected
     */
    onAnomaly(callback: AnomalyCallback): void;
    /**
     * Register a callback for when alerts are generated
     */
    onAlert(callback: AlertCallback): void;
    /**
     * Analyze a security event for anomalies
     */
    analyze(event: SecurityEvent): Promise<AggregatedDetectionResult>;
    /**
     * Learn from an event to update baselines
     */
    learnFromEvent(event: SecurityEvent): Promise<void>;
    /**
     * Reset all detector baselines
     */
    resetBaselines(): Promise<void>;
    /**
     * Get current configuration
     */
    getConfig(): Readonly<AnomalyDetectorConfig>;
    /**
     * Update configuration
     */
    updateConfig(updates: Partial<AnomalyDetectorConfig>): void;
    /**
     * Create an anomaly from a detection result
     */
    private createAnomaly;
    /**
     * Map detector name to anomaly type
     */
    private mapDetectorToAnomalyType;
    /**
     * Create an alert from an anomaly
     */
    private createAlert;
    /**
     * Emit anomaly to registered callbacks
     */
    private emitAnomaly;
    /**
     * Emit alert to registered callbacks
     */
    private emitAlert;
    /**
     * Handle automatic blocking when threshold is met
     */
    private handleAutoBlock;
}
/**
 * Create a new AnomalyDetector instance
 */
export declare function createAnomalyDetector(config?: Partial<AnomalyDetectorConfig>): AnomalyDetector;
export * from './types.js';
export { GeographicDetector, createGeographicDetector, calculateHaversineDistance, calculateTravelSpeed, } from './detectors/geographic.js';
export { TemporalDetector, createTemporalDetector } from './detectors/temporal.js';
export { VolumeDetector, createVolumeDetector } from './detectors/volume.js';
//# sourceMappingURL=index.d.ts.map