import { EventEmitter } from 'events';
import { Deal, DealRegistry } from './dealModel.js';
export interface ActionContext {
    actionId: string;
    actionType: string;
    agentId: string;
    parameters: Record<string, unknown>;
    estimatedDuration: number;
    resourceCost: number;
    riskLevel: number;
    confidence: number;
    dependencies: string[];
    standards: string[];
}
export interface DealEvaluation {
    dealId: string;
    actionId: string;
    agentId: string;
    expectedValueBefore: number;
    expectedValueAfter: number;
    valueDelta: number;
    valueConfidence: number;
    metricsImpact: Array<{
        metricId: string;
        currentValue: number;
        projectedValue: number;
        improvement: number;
        attainabilityChange: number;
    }>;
    riskScore: number;
    riskFactors: Array<{
        factor: string;
        probability: number;
        impact: number;
        mitigation?: string;
    }>;
    complianceImpact: Record<string, 'positive' | 'negative' | 'neutral'>;
    recommendation: 'approve' | 'reject' | 'modify' | 'escalate';
    confidence: number;
    reasoning: string;
    suggestedModifications?: string[];
    evaluatedAt: Date;
    evaluationDuration: number;
    evaluationMethod: string;
    dataSourcesUsed: string[];
    assumptionsMade: string[];
}
export interface ValueCalculationConfig {
    riskAversion: number;
    timeDiscountRate: number;
    qualityWeight: number;
    complianceWeight: number;
    stakeholderSatisfactionWeight: number;
}
export interface FinancialProvenance {
    dealId: string;
    actionId: string;
    traceId: string;
    costBreakdown: {
        directCosts: number;
        indirectCosts: number;
        opportunityCosts: number;
        riskCosts: number;
    };
    valueChain: Array<{
        step: string;
        valueContribution: number;
        confidence: number;
        dependencies: string[];
    }>;
    calculations: Array<{
        formula: string;
        inputs: Record<string, number>;
        output: number;
        timestamp: Date;
    }>;
    validationRules: string[];
    validationResults: Array<{
        rule: string;
        passed: boolean;
        details?: string;
    }>;
}
/**
 * Deal Evaluator for agent decision-making
 * Implements value delta calculation and metrics assessment
 */
export declare class DealEvaluator extends EventEmitter {
    private dealRegistry;
    private config;
    private evaluationCache;
    constructor(dealRegistry: DealRegistry, config?: Partial<ValueCalculationConfig>);
    /**
     * Evaluate an action's impact on a deal
     * Returns YES/NO recommendation based on value delta
     */
    evaluateDeal(dealId: string, actionContext: ActionContext): Promise<DealEvaluation>;
    /**
     * Calculate the current expected value of a deal
     */
    calculateExpectedValue(deal: Deal): number;
    /**
     * Simulate the impact of an action on deal value
     */
    private simulateActionImpact;
    /**
     * Assess the impact of an action on deal metrics
     */
    private assessMetricsImpact;
    /**
     * Calculate the impact of an action on a specific metric
     */
    private calculateMetricImpact;
    /**
     * Assess risk factors for the action
     */
    private assessRisk;
    /**
     * Evaluate compliance impact
     */
    private evaluateComplianceImpact;
    /**
     * Generate recommendation based on analysis
     */
    private generateRecommendation;
    private calculateQualityScore;
    private calculateComplianceScore;
    private calculateStakeholderSatisfaction;
    private calculateRiskScore;
    private calculateValueConfidence;
    private simulateMetricsImpact;
    private getActionMetricCompatibility;
    private hasComplianceRisk;
    private getAssumptions;
    /**
     * Generate financial provenance for audit trail
     */
    generateFinancialProvenance(dealId: string, actionContext: ActionContext): Promise<FinancialProvenance>;
    private calculateOpportunityCost;
    private generateValueChain;
    /**
     * Get cached evaluation
     */
    getCachedEvaluation(dealId: string, actionId: string): DealEvaluation | null;
    /**
     * Clear evaluation cache
     */
    clearCache(): void;
    /**
     * Health check
     */
    healthCheck(): Promise<{
        status: 'healthy' | 'unhealthy';
        details: Record<string, unknown>;
    }>;
}
//# sourceMappingURL=dealEvaluator.d.ts.map