import { EventEmitter } from 'events';
import { AgentId, AgentType } from '../types/agent.js';
export interface IntelligenceItem {
    id: string;
    type: 'indicator' | 'pattern' | 'rule' | 'signature' | 'behavior' | 'correlation';
    source: AgentId;
    timestamp: string;
    confidence: number;
    data: any;
    tags: string[];
    ttl?: number;
    priority: 'LOW' | 'MEDIUM' | 'HIGH' | 'CRITICAL';
    metadata: {
        caseId?: string;
        analysisId?: string;
        version: string;
        format: string;
    };
}
export interface IntelligenceQuery {
    types?: string[];
    tags?: string[];
    sources?: AgentId[];
    minConfidence?: number;
    timeRange?: {
        start: string;
        end: string;
    };
    limit?: number;
    includeExpired?: boolean;
}
export interface IntelligenceSubscription {
    id: string;
    agentId: AgentId;
    query: IntelligenceQuery;
    callback: (items: IntelligenceItem[]) => void;
    active: boolean;
    created: string;
}
export interface CollaborationRequest {
    id: string;
    requestingAgent: AgentId;
    targetAgents: AgentType[];
    type: 'analysis' | 'validation' | 'correlation' | 'enhancement';
    priority: 'LOW' | 'MEDIUM' | 'HIGH' | 'CRITICAL';
    parameters: any;
    timeout: number;
    callback?: (results: CollaborationResult[]) => void;
}
export interface CollaborationResult {
    id: string;
    requestId: string;
    respondingAgent: AgentId;
    status: 'COMPLETED' | 'FAILED' | 'TIMEOUT';
    data: any;
    confidence: number;
    timestamp: string;
    metadata?: any;
}
export declare class IntelligenceSharingService extends EventEmitter {
    private readonly intelligenceStore;
    private readonly subscriptions;
    private readonly collaborationRequests;
    private readonly agentCapabilities;
    private readonly cleanupInterval;
    constructor();
    private initializeCapabilities;
    shareIntelligence(item: IntelligenceItem): void;
    private validateIntelligenceItem;
    queryIntelligence(query: IntelligenceQuery): IntelligenceItem[];
    subscribe(agentId: AgentId, query: IntelligenceQuery, callback: (items: IntelligenceItem[]) => void): string;
    unsubscribe(subscriptionId: string): boolean;
    private notifySubscribers;
    requestCollaboration(request: CollaborationRequest): Promise<string>;
    private findCapableAgents;
    private hasRequiredCapability;
    submitCollaborationResult(result: CollaborationResult): void;
    enhanceIntelligence(itemId: string, enhancement: Partial<IntelligenceItem>): boolean;
    private incrementVersion;
    correlateIntelligence(items: IntelligenceItem[]): IntelligenceItem[];
    private groupItemsByType;
    private findTypeCorrelations;
    private extractCorrelationKey;
    private findCrossTypeCorrelations;
    private findTemporalCorrelations;
    private determineCorrelationPriority;
    private priorityToNumber;
    private numberToPriority;
    private cleanupExpiredIntelligence;
    private agentIdsEqual;
    getStatistics(): any;
    destroy(): void;
}
//# sourceMappingURL=intelligence-sharing.d.ts.map