/**
 * Tier entitlements — foundation-auth-rbac. Pure functions, no DB.
 *
 * Tier order (ascending): FREELANCER < BUSINESS < ENTERPRISE < WHITE_LABEL.
 * `getMaxTeamMembers` mirrors `team_seats` in @zync/db quota-config (1/8/15/50);
 * both lock to the spec's entitlement matrix.
 */
import { TenantTier } from '@zync/types'

const TIER_ORDER: TenantTier[] = [
  TenantTier.FREELANCER,
  TenantTier.BUSINESS,
  TenantTier.ENTERPRISE,
  TenantTier.WHITE_LABEL,
]

const MAX_TEAM_MEMBERS: Record<TenantTier, number> = {
  [TenantTier.FREELANCER]: 1,
  [TenantTier.BUSINESS]: 8,
  [TenantTier.ENTERPRISE]: 15,
  [TenantTier.WHITE_LABEL]: 50,
}

/**
 * True when `tenantTier` is at least `required` in the ascending tier order.
 * e.g. meetsMinimumTier(ENTERPRISE, BUSINESS) === true;
 *      meetsMinimumTier(FREELANCER, BUSINESS) === false.
 */
export function meetsMinimumTier(tenantTier: TenantTier, required: TenantTier): boolean {
  return TIER_ORDER.indexOf(tenantTier) >= TIER_ORDER.indexOf(required)
}

/** Maximum active team members allowed for a tier (1/8/15/50). */
export function getMaxTeamMembers(tier: TenantTier): number {
  return MAX_TEAM_MEMBERS[tier]
}
