/**
 * Tier display & pricing configuration — zync-subscription spec (Task 7).
 *
 * Source of truth for:
 *  - Display names, ILS prices, self-service flag per tier
 *  - 3-column plan comparison table data (Freelancer · Business · Enterprise)
 *    White Label is intentionally omitted from the self-service comparison.
 *
 * Used by the upgrade modal and /settings/plan page.
 */
import { TenantTier } from '@zync/types'

export interface TierDisplay {
  tier: TenantTier
  displayName: string
  /** Monthly price in ILS; null = free */
  monthlyIls: number | null
  /** Annual discount label when showing annual billing toggle */
  annualDiscountLabel: string | null
  /** Whether this tier can be purchased via self-service checkout */
  selfService: boolean
}

export const ANNUAL_DISCOUNT_LABEL = 'Save 2 months'

export const TIER_DISPLAY: Record<TenantTier, TierDisplay> = {
  [TenantTier.FREELANCER]: {
    tier: TenantTier.FREELANCER,
    displayName: 'Freelancer',
    monthlyIls: null, // Free forever
    annualDiscountLabel: null,
    selfService: true,
  },
  [TenantTier.BUSINESS]: {
    tier: TenantTier.BUSINESS,
    displayName: 'Business',
    monthlyIls: 89,
    annualDiscountLabel: ANNUAL_DISCOUNT_LABEL,
    selfService: true,
  },
  [TenantTier.ENTERPRISE]: {
    tier: TenantTier.ENTERPRISE,
    displayName: 'Enterprise',
    monthlyIls: 159, // List price; custom negotiated for manual-provisioned tenants
    annualDiscountLabel: ANNUAL_DISCOUNT_LABEL,
    selfService: false,
  },
  [TenantTier.WHITE_LABEL]: {
    tier: TenantTier.WHITE_LABEL,
    displayName: 'White Label',
    monthlyIls: 250,
    annualDiscountLabel: null,
    selfService: false,
  },
}

// ---------------------------------------------------------------------------
// 3-column plan comparison table (self-service; White Label excluded)
// ---------------------------------------------------------------------------

export interface ComparisonFeature {
  key: string
  label: string
  freelancer: string | boolean
  business: string | boolean
  enterprise: string | boolean
}

export const PLAN_COMPARISON_FEATURES: ComparisonFeature[] = [
  {
    key: 'team_members',
    label: 'Team members',
    freelancer: '1',
    business: 'Up to 8',
    enterprise: 'Up to 15',
  },
  {
    key: 'modules',
    label: 'Modules',
    freelancer: 'Core only',
    business: 'All',
    enterprise: 'All',
  },
  {
    key: 'storage',
    label: 'Storage',
    freelancer: '1 GB',
    business: '20 GB',
    enterprise: '100 GB',
  },
  {
    key: 'ai_assistant',
    label: 'AI assistant',
    freelancer: false,
    business: true,
    enterprise: true,
  },
  {
    key: 'white_label',
    label: 'White-label',
    freelancer: false,
    business: false,
    enterprise: true,
  },
  {
    key: 'custom_domain',
    label: 'Custom domain',
    freelancer: false,
    business: false,
    enterprise: true,
  },
  {
    key: 'api_access',
    label: 'API access',
    freelancer: false,
    business: false,
    enterprise: true,
  },
  {
    key: 'support_sla',
    label: 'Support SLA',
    freelancer: 'Community',
    business: 'Email, 48 h',
    enterprise: 'Priority, 4 h',
  },
  {
    key: 'price',
    label: 'Price',
    freelancer: 'Free',
    business: '89 ILS/mo',
    enterprise: 'Custom',
  },
]

/** Columns shown in the self-service comparison table */
export const COMPARISON_TIERS: TenantTier[] = [
  TenantTier.FREELANCER,
  TenantTier.BUSINESS,
  TenantTier.ENTERPRISE,
]
