import { watch as v } from "vue";
import { useChatValidator as O } from "./chats/useChatValidator.js";
import { useMessageValidator as x } from "./messages/useMessageValidator.js";
import { useSidebarValidator as z } from "./sidebar/useSidebarValidator.js";
function j(h, g, R = {}) {
  const {
    autoValidate: u = !0,
    debounce: f = 500,
    enableConsoleLogging: a = !0,
    validateMessagesOnlyWhenSelected: b = !0,
    enable: t = { chats: !0, messages: !0, sidebar: !0 },
    sidebarData: d
  } = R, s = O(h, {
    autoValidate: t.chats ? u : !1,
    debounce: f
  }), l = x(g, {
    autoValidate: t.messages ? u && !b : !1,
    debounce: f
  }), o = t.sidebar && d ? z(d, { autoValidate: u, debounce: f }) : null, C = () => {
    a && console.log("🔍 Ручная валидация чатов..."), t.chats ? (s.validate(), s.showReport()) : a && console.log("⏭️ Валидация чатов отключена настройками");
  }, w = () => {
    a && console.log("🔍 Ручная валидация сообщений..."), t.messages ? (l.validate(), l.showReport()) : a && console.log("⏭️ Валидация сообщений отключена настройками");
  }, p = () => {
    a && console.log("🔍 Ручная валидация sidebar..."), t.sidebar && o ? (o.validate(), o.showReport()) : a && console.log("⏭️ Валидация sidebar отключена или не переданы данные");
  }, m = () => {
    a && console.log("🔍 Полная валидация всех данных..."), t.chats && (s.validate(), s.showReport()), t.messages && (l.validate(), l.showReport()), t.sidebar && o && (o.validate(), o.showReport());
  }, y = () => {
    const e = s.errorCount.value, r = s.warningCount.value, c = l.errorCount.value, i = l.warningCount.value, n = o ? o.errorCount.value : 0, A = o ? o.warningCount.value : 0;
    return {
      chatErrors: e,
      chatWarnings: r,
      messageErrors: c,
      messageWarnings: i,
      sidebarErrors: n,
      sidebarWarnings: A,
      totalErrors: e + c + n,
      totalWarnings: r + i + A
    };
  }, V = () => {
    if (typeof window < "u") {
      const e = window;
      e.validateChats = C, e.validateMessages = w, e.validateAll = m, e.validateSidebar = p;
    }
  }, $ = () => {
    a && (console.log("💡 Доступные функции валидации в консоли:"), console.log("   - validateChats() - валидация списка чатов"), console.log("   - validateMessages() - валидация списка сообщений"), console.log("   - validateAll() - полная валидация всех данных"), console.log("   - validateSidebar() - валидация sidebar"), b && console.log("⏳ Валидация сообщений будет выполнена после выбора чата..."));
  }, S = () => {
    a && console.log("🔍 Выполнение валидации после выбора чата..."), s.validate();
    const e = s.errorCount.value, r = s.warningCount.value;
    a && (e > 0 || r > 0 ? console.log(`📋 Валидация чатов: найдено ${e} ошибок и ${r} предупреждений`) : console.log("✅ Валидация чатов: все данные корректны")), s.showReport();
    const c = Array.isArray(g.value) && g.value.length > 0;
    if (t.messages && c) {
      l.validate();
      const i = l.errorCount.value, n = l.warningCount.value;
      a && (i > 0 || n > 0 ? console.log(`💬 Валидация сообщений: найдено ${i} ошибок и ${n} предупреждений`) : console.log("✅ Валидация сообщений: все данные корректны")), l.showReport();
    } else t.messages && a && console.log("⚠️ Сообщения не загружены для валидации");
    if (t.sidebar)
      if (o) {
        o.validate();
        const i = o.errorCount.value, n = o.warningCount.value;
        a && (i > 0 || n > 0 ? console.log(`📚 Валидация sidebar: найдено ${i} ошибок и ${n} предупреждений`) : console.log("✅ Валидация sidebar: все данные корректны")), o.showReport();
      } else a && console.log("⚠️ Данные sidebar не переданы — валидация пропущена");
  }, W = (e) => {
    e && Array.isArray(e) && e.length > 0 && (h.value = e);
  }, E = (e) => {
    d && e && Array.isArray(e) && e.length > 0 && (d.value = e);
  }, M = () => {
    V(), $();
  };
  return a && (v(() => s.errorCount.value, (e, r) => {
    e !== r && console.log(`📊 Статистика валидации чатов: ${e} ошибок, ${s.warningCount.value} предупреждений`);
  }), v(() => l.errorCount.value, (e, r) => {
    e !== r && console.log(`📊 Статистика валидации сообщений: ${e} ошибок, ${l.warningCount.value} предупреждений`);
  }), o && v(() => o.errorCount.value, (e, r) => {
    e !== r && console.log(`📊 Статистика валидации sidebar: ${e} ошибок, ${o.warningCount.value} предупреждений`);
  })), {
    chatValidator: s,
    messageValidator: l,
    sidebarValidator: o,
    validateChats: C,
    validateMessages: w,
    validateSidebar: p,
    validateAll: m,
    getValidationStats: y,
    setupGlobalValidationFunctions: V,
    logValidationInfo: $,
    validateOnChatSelect: S,
    updateChatsData: W,
    updateSidebarData: E,
    initializeValidation: M
  };
}
export {
  j as useValidation
};
