/**
 * Delegation Integration for MCP
 *
 * Integrates LLM-assisted delegation with the existing agent delegation system
 */
import { EventEmitter } from 'events';
import { LLMDelegationEngine, DelegationRequest, DelegationDecision, DecisionContext } from './llm-delegation-engine';
import { MessageRouter } from '../routing/message-router';
import { ConversationManager } from '../conversation/conversation-manager';
import { AuthManager } from '../security/auth-manager';
import { AuditLogger } from '../security/audit-logger';
/**
 * Enhanced delegation request with MCP integration
 */
export interface EnhancedDelegationRequest extends DelegationRequest {
    conversationId?: string;
    sessionId?: string;
    llmProviderPreference?: string;
    requireExplanation: boolean;
    allowModifications: boolean;
    maxResponseTime: number;
}
/**
 * Delegation workflow state
 */
export interface DelegationWorkflow {
    id: string;
    request: EnhancedDelegationRequest;
    currentStep: 'initiated' | 'analyzing' | 'llm_processing' | 'human_review' | 'completed' | 'failed';
    decision?: DelegationDecision;
    humanReviewer?: string;
    startedAt: Date;
    completedAt?: Date;
    steps: Array<{
        step: string;
        timestamp: Date;
        duration: number;
        status: 'pending' | 'completed' | 'failed';
        output?: any;
        error?: string;
    }>;
    metadata: {
        llmProvider?: string;
        conversationTurns: number;
        confidenceScore: number;
        totalProcessingTime: number;
    };
}
/**
 * Integration configuration
 */
export interface DelegationIntegrationConfig {
    enableLLMAssistance: boolean;
    fallbackToRules: boolean;
    requireHumanReview: boolean;
    maxProcessingTime: number;
    confidenceThreshold: number;
    enableConversationalFlow: boolean;
    retryOnFailure: boolean;
    maxRetries: number;
}
/**
 * Delegation Integration
 */
export declare class DelegationIntegration extends EventEmitter {
    private llmEngine;
    private messageRouter;
    private conversationManager;
    private authManager;
    private auditLogger;
    private config;
    private activeWorkflows;
    private workflowHistory;
    constructor(llmEngine: LLMDelegationEngine, messageRouter: MessageRouter, conversationManager: ConversationManager, authManager: AuthManager, auditLogger: AuditLogger, config?: DelegationIntegrationConfig);
    /**
     * Process delegation request with full MCP integration
     */
    processDelegationRequest(request: EnhancedDelegationRequest, context: DecisionContext): Promise<DelegationWorkflow>;
    /**
     * Handle conversational delegation request
     */
    processConversationalDelegation(naturalLanguageRequest: string, agentDID: string, sessionId?: string): Promise<DelegationWorkflow>;
    /**
     * Query delegation status
     */
    queryDelegationStatus(query: string, agentDID: string, sessionId?: string): Promise<{
        activeWorkflows: DelegationWorkflow[];
        recentDecisions: DelegationDecision[];
        summary: string;
    }>;
    /**
     * Execute workflow step
     */
    private executeWorkflowStep;
    /**
     * Perform initial analysis
     */
    private performInitialAnalysis;
    /**
     * Process with LLM
     */
    private processWithLLM;
    /**
     * Request human review
     */
    private requestHumanReview;
    /**
     * Finalize decision
     */
    private finalizeDecision;
    /**
     * Fallback decision using rule-based system
     */
    private fallbackDecision;
    /**
     * Build context from conversation
     */
    private buildContextFromConversation;
    /**
     * Generate status summary using LLM
     */
    private generateStatusSummary;
    /**
     * Setup event handlers
     */
    private setupEventHandlers;
    /**
     * Get workflow statistics
     */
    getStatistics(): {
        activeWorkflows: number;
        completedWorkflows: number;
        averageProcessingTime: number;
        successRate: number;
        llmUsageRate: number;
        humanReviewRate: number;
    };
    /**
     * Shutdown
     */
    shutdown(): void;
}
export default DelegationIntegration;
//# sourceMappingURL=delegation-integration.d.ts.map