/**
 * Human Escalation Framework
 * Implements Philip's concept of "knowing what it doesn't know" and bringing humans into the loop
 */
import { EventEmitter } from 'events';
export interface EscalationReason {
    type: 'knowledge_gap' | 'permission_needed' | 'ambiguous_context' | 'critical_decision' | 'error_recovery' | 'resource_access';
    description: string;
    severity: 'low' | 'medium' | 'high' | 'critical';
    autoResolvable: boolean;
}
export interface EscalationContext {
    sessionId?: string;
    toolName?: string;
    currentPhase: string;
    userExperience: 'beginner' | 'intermediate' | 'expert';
    timeConstraint: 'none' | 'moderate' | 'urgent';
    projectComplexity: 'simple' | 'moderate' | 'complex';
    lastActions: string[];
    errorHistory: string[];
}
export interface EscalationRequest {
    id: string;
    timestamp: Date;
    reason: EscalationReason;
    context: EscalationContext;
    suggestedActions: SuggestedAction[];
    waitingForResponse: boolean;
    autoTimeoutMs?: number;
    fallbackAction?: string;
}
export interface SuggestedAction {
    id: string;
    description: string;
    type: 'user_input' | 'permission_grant' | 'tool_selection' | 'context_clarification' | 'manual_intervention';
    parameters?: any;
    riskLevel: 'low' | 'medium' | 'high';
    estimatedTime: string;
}
export interface EscalationResponse {
    escalationId: string;
    selectedActionId?: string;
    userInput?: any;
    customAction?: string;
    continueAutonomously: boolean;
}
/**
 * Human Escalation Manager
 * Intelligently determines when to escalate to humans and manages the escalation process
 */
export declare class HumanEscalationManager extends EventEmitter {
    private activeEscalations;
    private escalationHistory;
    private autoTimeouts;
    private userPreferences;
    constructor();
    /**
     * Determine if a situation requires human escalation
     * Core intelligence: "knowing what it doesn't know"
     */
    shouldEscalate(context: EscalationContext, attemptedActions?: string[]): EscalationReason | null;
    /**
     * Create an escalation request
     */
    createEscalation(reason: EscalationReason, context: EscalationContext, autoTimeoutMs?: number): Promise<string>;
    /**
     * Handle escalation response from human
     */
    handleEscalationResponse(response: EscalationResponse): Promise<void>;
    /**
     * Get pending escalations
     */
    getPendingEscalations(): EscalationRequest[];
    /**
     * Get escalation by ID
     */
    getEscalation(escalationId: string): EscalationRequest | undefined;
    /**
     * INTELLIGENCE: Detect knowledge gaps
     */
    private detectKnowledgeGap;
    /**
     * INTELLIGENCE: Determine if permission is required
     */
    private requiresPermission;
    /**
     * INTELLIGENCE: Detect ambiguous context
     */
    private hasAmbiguousContext;
    /**
     * INTELLIGENCE: Identify critical decisions
     */
    private isCriticalDecision;
    /**
     * INTELLIGENCE: Determine if error recovery guidance is needed
     */
    private needsErrorRecoveryGuidance;
    /**
     * INTELLIGENCE: Check for resource access issues
     */
    private lacksResourceAccess;
    /**
     * Calculate permission severity based on context
     */
    private calculatePermissionSeverity;
    /**
     * Generate suggested actions for human
     */
    private generateSuggestedActions;
    /**
     * Determine fallback action for auto-timeout
     */
    private determineFallbackAction;
    /**
     * Handle auto-timeout
     */
    private handleAutoTimeout;
    /**
     * Learn from user responses to improve future escalation decisions
     */
    private learnFromResponse;
    /**
     * Get escalation statistics for learning insights
     */
    getEscalationStats(): {
        totalEscalations: number;
        byType: Record<string, number>;
        averageResponseTime: number;
        autoResolvedRate: number;
    };
    /**
     * Map severity to risk level
     */
    private mapSeverityToRisk;
}
//# sourceMappingURL=escalation-manager.d.ts.map