export const PLANS = {
  starter: {
    name: 'Starter',
    cfdiLimit: 0,
    usersLimit: 1,
    features: ['dashboard', 'cfdi_basic', 'iva_isr'],
  },
  business: {
    name: 'Business',
    cfdiLimit: 50,
    usersLimit: 3,
    features: ['dashboard', 'cfdi_basic', 'iva_isr', 'reportes', 'alertas', 'calendario', 'conciliacion', 'forecasting', 'xml_sat', 'documentos'],
  },
  business_ia: {
    name: 'Business + IA',
    cfdiLimit: 50,
    usersLimit: 3,
    features: ['dashboard', 'cfdi_basic', 'iva_isr', 'reportes', 'alertas', 'calendario', 'conciliacion', 'forecasting', 'xml_sat', 'documentos', 'ia_lolita'],
  },
  custom: {
    name: 'Custom',
    cfdiLimit: 50,
    usersLimit: 3,
    features: ['dashboard', 'cfdi_basic', 'iva_isr', 'reportes', 'alertas', 'calendario', 'conciliacion', 'forecasting', 'xml_sat', 'documentos', 'ia_lolita'],
  },
  enterprise: {
    name: 'Enterprise',
    cfdiLimit: 100,
    usersLimit: -1,
    features: ['dashboard', 'cfdi_basic', 'iva_isr', 'reportes', 'alertas', 'calendario', 'conciliacion', 'forecasting', 'xml_sat', 'documentos', 'api', 'ia_lolita'],
  },
} as const;

export type Plan = keyof typeof PLANS;

export function getPlanLimits(plan: Plan) {
  return PLANS[plan];
}

export function hasFeature(plan: Plan, feature: string): boolean {
  // Defensive: un plan desconocido (típicamente un valor que no pertenece
  // al catálogo Horux 360 — p.ej. un plan despacho usado por error)
  // retorna false en vez de crashear con "Cannot read properties of undefined".
  // El caller debe usar el catálogo correcto según la vertical del tenant.
  return (PLANS[plan]?.features as readonly string[] | undefined)?.includes(feature) ?? false;
}
