"use client";

export type MetrikaGoal =
  | "menu_open"
  | "dish_view"
  | "add_to_cart"
  | "remove_from_cart"
  | "begin_checkout"
  | "delivery_calculated"
  | "payment_started"
  | "order_authorized"
  | "order_paid"
  | "order_failed"
  | "booking_open"
  | "booking_submitted"
  | "phone_click"
  | "route_click"
  | "yandex_reviews_click"
  | "social_click"
  | "club_join"
  | "promo_used";

declare global {
  interface Window {
    ym?: (id: number, method: string, goal: string, params?: Record<string, unknown>) => void;
  }
}

export function reachGoal(goal: MetrikaGoal, params?: Record<string, unknown>) {
  const id = Number(process.env.NEXT_PUBLIC_YANDEX_METRIKA_ID);
  if (!id || typeof window === "undefined" || !window.ym) return;
  window.ym(id, "reachGoal", goal, params);
}
