(function attachMenuFormatter(global: any) {
  type MenuItem = {
    id?: string;
    name: string;
    price: number;
  };

  type ParsedMenu = {
    items: MenuItem[];
    warnings: string[];
  };

  function normalizeSpaces(value: string): string {
    return String(value || "").replace(/\s+/g, " ").trim();
  }

  function parseDailyMenuText(menuText: string): ParsedMenu {
    const parser = global.RamaParser;
    const warnings: string[] = [];
    const items: MenuItem[] = [];

    const lines = String(menuText || "")
      .split(/\r?\n/)
      .map(normalizeSpaces)
      .filter(Boolean);

    for (const line of lines) {
      const match = line.match(/^(.*?)\s+(\d+(?:\.\d+)?)\s*(?:\/-)?$/);
      if (!match) {
        warnings.push(`Menu line unclear: ${line}`);
        continue;
      }

      const rawName = normalizeSpaces(match[1]);
      const canonical = parser?.canonicalizeItemName(rawName) || rawName;
      const price = Number(match[2]);
      if (!parser?.canonicalizeItemName(rawName)) {
        warnings.push(`Unknown menu item: ${rawName}`);
      }

      items.push({
        id: `${canonical}-${items.length}-${Date.now()}`,
        name: canonical,
        price
      });
    }

    return { items, warnings: Array.from(new Set(warnings)) };
  }

  function generateWhatsAppMenuMessage(items: MenuItem[]): string {
    const lines = items.map((item) => `${item.name} ${Number(item.price)}/-`).join("\n");
    return `*श्री*

*आजचा जेवण मेनू*

${lines}

*आपली ऑर्डर लवकरात लवकर बूक करावी*`;
  }

  const api = { parseDailyMenuText, generateWhatsAppMenuMessage };
  global.RamaMenuFormatter = api;
  if (typeof module !== "undefined" && module.exports) {
    module.exports = api;
  }
})(typeof globalThis !== "undefined" ? globalThis : window);
