/**
 * Data Sheriff Agent - Sports Query Resolution
 *
 * An intelligent middleware agent that validates every user query against
 * the unified database before Grok responds. Ensures data accuracy,
 * context correction, and completeness in real-time.
 *
 * @example
 * ```typescript
 * import { dataSheriffAgent } from '@/agents/dataSheriff';
 *
 * const result = await dataSheriffAgent.processQuery(
 *   "How did LeBron do against Boston last week?"
 * );
 *
 * // Use result.contextForLLM to enhance Grok's response
 * // Use result.enhancedQuery for the corrected query
 * ```
 */

// Main agent (V2 - autonomous, database-driven)
export {
  DataSheriffAgentV2 as DataSheriffAgent,
  dataSheriffAgentV2 as dataSheriffAgent,
} from './DataSheriffAgentV2';

// Smart resolver
export { SmartResolver, smartResolver } from './SmartResolver';

// Legacy agent (for reference)
export {
  DataSheriffAgent as DataSheriffAgentV1,
  dataSheriffAgent as dataSheriffAgentV1,
  createDataSheriffAgent
} from './DataSheriffAgent';

// Component services
export { EntityResolver, entityResolver } from './EntityResolver';
export { CoverageChecker, coverageChecker } from './CoverageChecker';
export { QueryDeconstructor, queryDeconstructor } from './QueryDeconstructor';

// Types
export type {
  // Entity types
  EntityType,
  ResolvedEntity,
  PlayerEntity,
  TeamEntity,
  DateEntity,
  EventEntity,
  MetricEntity,

  // Query types
  QueryIntent,
  IntentClassification,
  DeconstructedQuery,

  // Validation types
  ValidationResult,
  QueryCorrection,
  EnrichedContext,
  InferredData,

  // Coverage types
  CoverageReport,
  DataGap,

  // Response types
  DataSheriffResponse,
  DataSheriffConfig,
} from './types';

// Chat integration helpers
export {
  preprocessChatMessage,
  buildEnhancedSystemPrompt,
  postprocessResponse,
  quickValidate,
  formatDebugLog,
} from './chatIntegration';

export type { EnhancedChatRequest } from './chatIntegration';

// Constants
export {
  LEAGUE_SPORT_MAP,
  SPORT_LEAGUES_MAP,
  PLAYER_NICKNAMES,
  TEAM_ALIASES,
} from './types';
