/// Constantes spécifiques au module chat

class ChatConstants {
  // Types de conversations
  static const String conversationTypeOneToOne = 'one_to_one';
  static const String conversationTypeGroup = 'group';
  static const String conversationTypeAnonymous = 'anonymous';
  static const String conversationTypeBroadcast = 'broadcast';
  static const String conversationTypeAnnouncement = 'announcement';

  // Types de messages
  static const String messageTypeText = 'text';
  static const String messageTypeImage = 'image';
  static const String messageTypeFile = 'file';
  static const String messageTypeSystem = 'system';

  // Types d'expéditeurs
  static const String senderTypeUser = 'user';
  static const String senderTypeAnonymous = 'anonymous';
  static const String senderTypeSystem = 'system';

  // Rôles des participants
  static const String participantRoleAdmin = 'admin';
  static const String participantRoleMember = 'member';
  static const String participantRoleReadOnly = 'read_only';

  // Permissions de réponse
  static const String replyPermissionAll = 'all';
  static const String replyPermissionAdminsOnly = 'admins_only';
  static const String replyPermissionSenderOnly = 'sender_only';
  static const String replyPermissionNone = 'none';

  // Types de cibles d'audience
  static const String targetTypeRole = 'role';
  static const String targetTypeEntity = 'entity';
  static const String targetTypeAll = 'all';

  // Noms des boîtes Hive
  static const String conversationsBoxName = 'chat_conversations';
  static const String messagesBoxName = 'chat_messages';
  static const String participantsBoxName = 'chat_participants';
  static const String anonymousUsersBoxName = 'chat_anonymous_users';
  static const String offlineQueueBoxName = 'chat_offline_queue';

  // Configurations
  static const int defaultMessagePageSize = 50;
  static const int maxAttachmentSizeMB = 10;
  static const int maxMessageLength = 5000;
  static const Duration typingIndicatorTimeout = Duration(seconds: 3);
}
