import { BaseAgent } from '../core/base-agent.js';
import { AgentId, AgentMetadata, AgentRegistry, AgentCommunicationChannel, AgentLogger, AgentMetrics, AgentRequest, AgentContext, AgentHealth } from '../types/agent.js';
export interface CampaignDetectionRequest {
    caseId?: string;
    timeRange: {
        start: string;
        end: string;
    };
    indicators?: {
        ips?: string[];
        domains?: string[];
        hashes?: string[];
        emails?: string[];
    };
    options?: {
        minCaseThreshold?: number;
        confidenceThreshold?: number;
        includeHistorical?: boolean;
        correlationDepth?: 'shallow' | 'medium' | 'deep';
    };
}
export interface CampaignIndicator {
    type: 'ip' | 'domain' | 'hash' | 'email' | 'user_agent' | 'ttps' | 'infrastructure';
    value: string;
    frequency: number;
    firstSeen: string;
    lastSeen: string;
    confidence: number;
    cases: string[];
    tags: string[];
    sources: string[];
}
export interface CampaignTTP {
    id: string;
    name: string;
    description: string;
    mitre: {
        tactic: string;
        technique: string;
        subtechnique?: string;
    };
    frequency: number;
    cases: string[];
    confidence: number;
    evidence: string[];
}
export interface CampaignCluster {
    id: string;
    name: string;
    description: string;
    confidence: number;
    cases: Array<{
        caseId: string;
        similarity: number;
        sharedIndicators: number;
        timeline: string;
    }>;
    indicators: CampaignIndicator[];
    ttps: CampaignTTP[];
    timeline: Array<{
        timestamp: string;
        event: string;
        caseId: string;
        details: string;
    }>;
    attribution?: {
        actor?: string;
        group?: string;
        confidence: number;
        evidence: string[];
    };
    infrastructure: {
        domains: Array<{
            domain: string;
            role: string;
            firstSeen: string;
        }>;
        ips: Array<{
            ip: string;
            role: string;
            firstSeen: string;
        }>;
        registrationPatterns: string[];
    };
}
export interface CampaignDetectionResult {
    analysisId: string;
    timestamp: string;
    summary: {
        totalCases: number;
        clustersFound: number;
        highConfidenceClusters: number;
        uniqueIndicators: number;
        timespan: string;
        status: 'COMPLETED' | 'FAILED' | 'PARTIAL';
    };
    clusters: CampaignCluster[];
    globalIndicators: Array<{
        indicator: CampaignIndicator;
        prevalence: number;
        riskScore: number;
    }>;
    recommendations: Array<{
        id: string;
        priority: 'CRITICAL' | 'HIGH' | 'MEDIUM' | 'LOW';
        category: string;
        description: string;
        rationale: string;
        actions: string[];
        clusterId?: string;
    }>;
    metadata: {
        analysisTime: string;
        casesAnalyzed: number;
        correlationMethod: string;
        algorithmVersion: string;
    };
}
export declare class CampaignDetectionAgent extends BaseAgent {
    protected readonly agentId: AgentId;
    private accessToken;
    private tokenExpiresAt;
    private readonly config;
    constructor(metadata: AgentMetadata, registry: AgentRegistry, channel: AgentCommunicationChannel, logger: AgentLogger, metrics: AgentMetrics, config: any);
    private performTokenRefresh;
    detectCampaigns(request: CampaignDetectionRequest): Promise<CampaignDetectionResult>;
    private gatherCasesForAnalysis;
    private extractIndicators;
    private mapObservableType;
    private calculateIndicatorConfidence;
    private performClustering;
    private calculateSimilarityMatrix;
    private calculateCaseSimilarity;
    private buildCluster;
    private enrichClustersWithTTPs;
    private extractTTPs;
    private identifyTechniques;
    private buildTimeline;
    private analyzeInfrastructure;
    private analyzeRegistrationPatterns;
    private analyzeGlobalIndicators;
    private calculateIndicatorRiskScore;
    private generateCampaignRecommendations;
    private calculateTimespan;
    protected onInitialize(): Promise<void>;
    protected onStart(): Promise<void>;
    protected onStop(): Promise<void>;
    protected onDestroy(): Promise<void>;
    protected onHealthCheck(): Promise<AgentHealth>;
    protected handleRequest(request: AgentRequest, context: AgentContext): Promise<any>;
}
//# sourceMappingURL=campaign-agent.d.ts.map