/**
 * Static integration catalog manifest — integration-hub (wave-11 leaf-D).
 *
 * This file is the single source of truth for every integration Zync exposes.
 * Ordered by CATEGORY_ORDER within each category.
 * Status is derived at runtime by the backend aggregator; this file holds
 * only the static metadata.
 */
import type { IntegrationCatalogEntry, IntegrationCategory } from '@zync/types'

export const CATEGORY_ORDER: IntegrationCategory[] = [
  'calendar',
  'scheduling',
  'accounting',
  'payment',
  'communication',
  'crm',
  'automation',
  'custom',
]

export const CATEGORY_LABELS: Record<IntegrationCategory, string> = {
  calendar: 'Calendar',
  scheduling: 'Scheduling',
  accounting: 'Accounting & Invoicing',
  payment: 'Payment Collection',
  communication: 'Communication',
  crm: 'CRM & Automation',
  automation: 'Automation',
  custom: 'API & Webhooks',
}

export const INTEGRATION_CATALOG: IntegrationCatalogEntry[] = [
  // ── Calendar ────────────────────────────────────────────────────────────────
  {
    id: 'google',
    name: 'Google Calendar',
    category: 'calendar',
    description: 'Sync events and meetings with Google Calendar',
    tier_required: 'all',
    manage_url: '/settings/integrations/calendar',
    connect_kind: 'oauth',
    status_source: 'calendar:google',
    admin_only: false,
  },
  {
    id: 'outlook',
    name: 'Microsoft Outlook',
    category: 'calendar',
    description: 'Sync events and meetings with Outlook Calendar',
    tier_required: 'all',
    manage_url: '/settings/integrations/calendar',
    connect_kind: 'oauth',
    status_source: 'calendar:outlook',
    admin_only: false,
  },

  // ── Scheduling ───────────────────────────────────────────────────────────────
  {
    id: 'calendly',
    name: 'Calendly',
    category: 'scheduling',
    description: 'Auto-import bookings from Calendly as tasks',
    tier_required: 'business',
    manage_url: '/settings/integrations/scheduling/calendly',
    connect_kind: 'apikey',
    status_source: 'scheduling:calendly',
    admin_only: false,
  },
  {
    id: 'acuity',
    name: 'Acuity Scheduling',
    category: 'scheduling',
    description: 'Auto-import bookings from Acuity as tasks',
    tier_required: 'business',
    manage_url: '/settings/integrations/scheduling/acuity',
    connect_kind: 'apikey',
    status_source: 'scheduling:acuity',
    admin_only: false,
  },
  {
    id: 'mocal',
    name: 'moCal',
    category: 'scheduling',
    description: 'Auto-import bookings from moCal as tasks',
    tier_required: 'business',
    manage_url: '/settings/integrations/scheduling/mocal',
    connect_kind: 'apikey',
    status_source: 'scheduling:mocal',
    admin_only: false,
  },

  // ── Accounting ───────────────────────────────────────────────────────────────
  {
    id: 'morning',
    name: 'Morning (חשבונית ירוקה)',
    category: 'accounting',
    description: 'Sync invoices to Morning (formerly Green Invoice)',
    tier_required: 'all',
    manage_url: '/settings/integrations/invoicing',
    connect_kind: 'credential',
    status_source: 'invoice:morning',
    admin_only: false,
  },
  {
    id: 'icount',
    name: 'iCount',
    category: 'accounting',
    description: 'Sync invoices to iCount',
    tier_required: 'all',
    manage_url: '/settings/integrations/invoicing',
    connect_kind: 'credential',
    status_source: 'invoice:icount',
    admin_only: false,
  },
  {
    id: 'rivhit',
    name: 'Rivhit',
    category: 'accounting',
    description: 'Sync invoices to Rivhit',
    tier_required: 'all',
    manage_url: '/settings/integrations/invoicing',
    connect_kind: 'credential',
    status_source: 'invoice:rivhit',
    admin_only: false,
  },
  {
    id: 'invoice4u',
    name: 'Invoice4U',
    category: 'accounting',
    description: 'Sync invoices to Invoice4U',
    tier_required: 'all',
    manage_url: '/settings/integrations/invoicing',
    connect_kind: 'credential',
    status_source: 'invoice:invoice4u',
    admin_only: false,
  },
  {
    id: 'easycount',
    name: 'EasyCount',
    category: 'accounting',
    description: 'Sync invoices to EasyCount',
    tier_required: 'all',
    manage_url: '/settings/integrations/invoicing',
    connect_kind: 'credential',
    status_source: 'invoice:easycount',
    admin_only: false,
  },

  // ── Payment Collection ───────────────────────────────────────────────────────
  {
    id: 'cardcom',
    name: 'Cardcom',
    category: 'payment',
    description: 'Accept credit card payments via Cardcom',
    tier_required: 'business',
    manage_url: '/settings/payment-gateway',
    connect_kind: 'credential',
    status_source: 'payment:cardcom',
    admin_only: true,
  },
  {
    id: 'payplus',
    name: 'PayPlus',
    category: 'payment',
    description: 'Accept payments via PayPlus',
    tier_required: 'business',
    manage_url: '/settings/payment-gateway',
    connect_kind: 'credential',
    status_source: 'payment:payplus',
    admin_only: true,
  },
  {
    id: 'stripe',
    name: 'Stripe',
    category: 'payment',
    description: 'Accept international payments via Stripe',
    tier_required: 'business',
    manage_url: '/settings/payment-gateway',
    connect_kind: 'credential',
    status_source: 'payment:stripe',
    admin_only: true,
  },

  // ── Communication ────────────────────────────────────────────────────────────
  {
    id: 'telegram',
    name: 'Telegram',
    category: 'communication',
    description: 'Receive tasks and messages via Telegram bot',
    tier_required: 'all',
    manage_url: '/settings/integrations/telegram',
    connect_kind: 'credential',
    status_source: 'adapter:telegram',
    admin_only: false,
  },
  {
    id: 'whatsapp',
    name: 'WhatsApp',
    category: 'communication',
    description: 'Receive tasks and messages via WhatsApp',
    tier_required: 'business',
    manage_url: '/settings/integrations/whatsapp',
    connect_kind: 'credential',
    status_source: 'adapter:whatsapp',
    admin_only: false,
  },
  {
    id: 'smtp',
    name: 'Custom SMTP',
    category: 'communication',
    description: 'Send emails from your own domain',
    tier_required: 'business',
    manage_url: '/settings/smtp',
    connect_kind: 'config',
    status_source: 'email:smtp',
    admin_only: false,
  },
  {
    id: 'dkim',
    name: 'DKIM / Custom Domain',
    category: 'communication',
    description: 'Authenticate outbound emails with your domain',
    tier_required: 'enterprise',
    manage_url: '/settings/smtp',
    connect_kind: 'config',
    status_source: 'email:dkim',
    admin_only: false,
  },

  // ── CRM & Automation ─────────────────────────────────────────────────────────
  {
    id: 'trello',
    name: 'Trello',
    category: 'crm',
    description: 'Import and sync Trello cards as tasks',
    tier_required: 'all',
    manage_url: '/settings/integrations/task-sync/trello',
    connect_kind: 'credential',
    status_source: 'adapter:trello',
    admin_only: false,
  },
  {
    id: 'asana',
    name: 'Asana',
    category: 'crm',
    description: 'Import and sync Asana tasks',
    tier_required: 'business',
    manage_url: '/settings/integrations/task-sync/asana',
    connect_kind: 'credential',
    status_source: 'adapter:asana',
    admin_only: false,
  },
  {
    id: 'jira',
    name: 'Jira',
    category: 'crm',
    description: 'Import and sync Jira issues',
    tier_required: 'business',
    manage_url: '/settings/integrations/task-sync/jira',
    connect_kind: 'credential',
    status_source: 'adapter:jira',
    admin_only: false,
  },
  {
    id: 'monday',
    name: 'Monday.com',
    category: 'crm',
    description: 'Import and sync Monday.com items',
    tier_required: 'business',
    manage_url: '/settings/integrations/task-sync/monday',
    connect_kind: 'credential',
    status_source: 'adapter:monday',
    admin_only: false,
  },
  {
    id: 'clickup',
    name: 'ClickUp',
    category: 'crm',
    description: 'Import and sync ClickUp tasks',
    tier_required: 'business',
    manage_url: '/settings/integrations/task-sync/clickup',
    connect_kind: 'credential',
    status_source: 'adapter:clickup',
    admin_only: false,
  },

  // ── Automation ───────────────────────────────────────────────────────────────
  {
    id: 'zapier',
    name: 'Zapier',
    category: 'automation',
    description: 'Automate workflows with Zapier',
    tier_required: 'business',
    manage_url: '/settings/integrations/zapier',
    connect_kind: 'automation',
    status_source: null,
    admin_only: false,
  },
  {
    id: 'make',
    name: 'Make (Integromat)',
    category: 'automation',
    description: 'Automate workflows with Make',
    tier_required: 'business',
    manage_url: '/settings/integrations/make',
    connect_kind: 'automation',
    status_source: null,
    admin_only: false,
  },

  // ── API & Webhooks ───────────────────────────────────────────────────────────
  {
    id: 'webhooks',
    name: 'Webhooks',
    category: 'custom',
    description: 'Outbound event delivery to your endpoints',
    tier_required: 'enterprise',
    manage_url: '/settings/integrations/webhooks',
    connect_kind: 'config',
    status_source: null,
    admin_only: false,
  },
  {
    id: 'api-keys',
    name: 'API Keys',
    category: 'custom',
    description: 'Programmatic access tokens',
    tier_required: 'all',
    manage_url: '/settings/api-keys',
    connect_kind: 'config',
    status_source: null,
    admin_only: false,
  },
]
