import {
  env,
  perfilWebhookConfigurado,
  whatsappWebhookConfigurado,
  whatsappStartConfigurado,
} from '@/lib/env';

// POST JSON best-effort: nunca lanza. Devuelve true solo si el destino respondió 2xx.
export async function postWebhook(url: string, payload: unknown): Promise<boolean> {
  try {
    const res = await fetch(url, {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify(payload),
    });
    if (!res.ok) {
      console.error(`webhook ${url} → ${res.status}`);
      return false;
    }
    return true;
  } catch (err) {
    console.error(`webhook ${url} error:`, err);
    return false;
  }
}

// Señal al flujo externo de que el perfil del lead está completo: que genere renders y homologue
// el texto con su agente. El payload lo arma señalarPerfilCompleto (lib/funnel/perfil.ts).
export async function señalarGeneracionPerfil(payload: unknown): Promise<boolean> {
  if (!perfilWebhookConfigurado()) return false;
  return postWebhook(env.PERFIL_WEBHOOK_URL!, payload);
}

// Señal de entrega: el PDF está listo, que el flujo externo lo mande por WhatsApp al cliente.
export async function notificarFlujoWhatsapp(payload: {
  leadId: string;
  telefono: string;
  nombre: string;
  empresa: string;
  pdfBase64: string;
  filename: string;
}): Promise<boolean> {
  if (!whatsappWebhookConfigurado()) return false;
  return postWebhook(env.WHATSAPP_WEBHOOK_URL!, payload);
}

// Señal de arranque: que el flujo externo escriba el primer mensaje de WhatsApp al lead para
// continuar la personalización por ese canal.
export async function iniciarConversacionWhatsapp(payload: {
  leadId: string;
  telefono: string;
  nombre: string;
  empresa: string;
}): Promise<boolean> {
  if (!whatsappStartConfigurado()) return false;
  return postWebhook(env.WHATSAPP_START_WEBHOOK_URL!, payload);
}
