import type { EscalationRule, EscalationRuleId } from './types';
import { lowConfidenceRule } from './low-confidence';
import { humanRequestRule } from './human-request';
import { refundRequestRule } from './refund-request';
import { legalLanguageRule } from './legal-language';
import { repeatedUnresolvedRule } from './repeated-unresolved';
import { highValueOrderRule } from './high-value-order';
import { vendorNoResponseRule } from './vendor-no-response';
import { disputeEscalationRule } from './dispute-escalation';
import { costCapRule } from './cost-cap';
import { maxTurnsRule } from './max-turns';

export const ESCALATION_RULES: Record<EscalationRuleId, EscalationRule> = {
  'low-confidence': lowConfidenceRule,
  'human-request': humanRequestRule,
  'refund-request': refundRequestRule,
  'legal-language': legalLanguageRule,
  'repeated-unresolved': repeatedUnresolvedRule,
  'high-value-order': highValueOrderRule,
  'vendor-no-response': vendorNoResponseRule,
  'dispute-escalation': disputeEscalationRule,
  'cost-cap': costCapRule,
  'max-turns': maxTurnsRule,
};

export function getEscalationRule(id: EscalationRuleId): EscalationRule {
  return ESCALATION_RULES[id];
}

export function listEscalationRules(): EscalationRule[] {
  return Object.values(ESCALATION_RULES);
}
