/**
 * Conversation Events Module
 * Exports all conversation-related functionality
 */

// Types - classes/values
export { ConversationMessage, ConversationObj } from './types.js';

// Types - type-only exports
export type {
  ConversationMessageData,
  ConversationObjData,
  ConversationCheckResult,
  ConversationEventFunction,
} from './types.js';

// AI Response System
export {
  detectVerbosityLevel,
  getVerbosityPromptHint,
  getTimeAwarenessDirective,
  getFallbackResponse,
  getOpenAIResponse,
  sendCharacterMessage,
} from './ai_response.js';
export type { VerbosityLevel, VerbosityConfig } from './ai_response.js';

// Conversation Events
export {
  conversationEvents,
  parseConversations,
  conversationInit,
} from './events.js';

// Character Memory System
export {
  CharacterMemory,
  createCharacterMemoryTable,
  storeMemory,
  retrieveMemories,
  applyGlobalMemoryDecay,
  DEFAULT_DECAY_CONFIG,
  characterMemoryManager,
} from './character_memory.js';
export type { MemoryFact, MemoryDecayConfig } from './character_memory.js';

// Messaging Style System
export {
  initializeMessagingTraits,
  initializeMessagingPatterns,
  initializeRelationshipModifiers,
  calculateEffectiveTraits,
  getMessagingStylePrompt,
  updateConversationMessagingModifiers,
  setMoodState,
  decayMessagingModifiers,
  applyEventModifiers,
  updateCharacterMood,
  updateDailyMoods,
  ensureMessagingTraits,
  getMessagingTraits,
  getRelationshipData,
  ensureRelationshipData,
  getMoodModifier,
  getDebugMessagingInfo,
  VALID_MOODS,
} from './messagingStyle.js';
export type {
  MessagingTraits,
  MessagingPatterns,
  MessagingModifiers,
  MoodState,
  Relationship,
  DebugMessagingInfo,
} from './messagingStyle.js';

// Tool Calling System
export {
  conversationTools,
  getAvailableTools,
  canUseTool,
  recordToolUse,
  toolMetadata,
  MOOD_OPTIONS,
  FEELING_TYPES,
  ACTIVITY_TYPES,
  DATE_TYPES,
  NEWS_TYPES,
} from './tools.js';
export type {
  ToolCategory,
  ToolMetadata,
  MoodType,
  FeelingType,
  ActivityType,
  DateType,
  NewsType,
} from './tools.js';

export {
  processToolCall,
  calculateGameHour,
  getActivityCosts,
} from './tool_processor.js';
export type { ToolCallResult, ToolAnnouncement } from './tool_processor.js';

export {
  getNextPendingEvent,
  processEventResponse,
  addPendingEvent,
  hasPendingEventFrom,
  getPendingEventCount,
} from './pending_events.js';
export type {
  QuestionEvent,
  MessageEvent,
  EventResponseResult,
} from './pending_events.js';

// NPC-Initiated Messages
export {
  detectNPCTriggers,
  checkNPCInitiatedMessages,
  clearNPCInitiativeState,
  isAppropriateHour,
} from './npc_initiative.js';
export type { NPCTrigger } from './npc_initiative.js';
