export enum UserRole {
  SUPER_ADMIN = 'SUPER_ADMIN',
  SALES_ADMIN = 'SALES_ADMIN',
  ESTATE_ADMIN = 'ESTATE_ADMIN',
  SECURITY_SUPERVISOR = 'SECURITY_SUPERVISOR',
  GUARD = 'GUARD',
  RESIDENT = 'RESIDENT'
}

export enum AccountStatus {
  ACTIVE = 'ACTIVE',
  SUSPENDED = 'SUSPENDED',
  DISABLED = 'DISABLED'
}

export enum EstateStatus {
  PENDING = 'PENDING',
  ACTIVE = 'ACTIVE',
  SUSPENDED = 'SUSPENDED',
  REJECTED = 'REJECTED'
}

export enum EstateSignupStatus {
  PENDING_APPROVAL = 'PENDING_APPROVAL',
  APPROVED = 'APPROVED',
  SUSPENDED = 'SUSPENDED',
  REJECTED = 'REJECTED'
}

export enum SubscriptionStatus {
  NONE = 'NONE',
  PLAN_SELECTED = 'PLAN_SELECTED',
  PAYMENT_PENDING = 'PAYMENT_PENDING',
  ACTIVE = 'ACTIVE',
  SUSPENDED = 'SUSPENDED',
  CANCELLED = 'CANCELLED'
}

export enum PaymentProvider {
  FLUTTERWAVE = 'FLUTTERWAVE',
  MONNIFY = 'MONNIFY',
  PAYSTACK = 'PAYSTACK',
  STRIPE = 'STRIPE'
}

export enum PaymentStatus {
  PENDING = 'PENDING',
  CONFIRMED = 'CONFIRMED',
  FAILED = 'FAILED',
  CANCELLED = 'CANCELLED'
}

export enum VisitorPassStatus {
  ACTIVE = 'ACTIVE',
  USED = 'USED',
  EXPIRED = 'EXPIRED',
  REVOKED = 'REVOKED'
}

export enum VisitorPassType {
  SINGLE_USE = 'SINGLE_USE',
  TIME_LIMITED = 'TIME_LIMITED',
  MULTI_ENTRY = 'MULTI_ENTRY',
  RECURRING = 'RECURRING'
}

export enum VisitSessionStatus {
  CHECKED_IN = 'CHECKED_IN',
  CHECKED_OUT = 'CHECKED_OUT',
  DENIED = 'DENIED'
}

export enum VisitorRiskLevel {
  LOW = 'LOW',
  MEDIUM = 'MEDIUM',
  HIGH = 'HIGH'
}

export enum EstateGateType {
  MAIN = 'MAIN',
  SERVICE = 'SERVICE',
  RESIDENT = 'RESIDENT',
  EMERGENCY = 'EMERGENCY',
  DELIVERY = 'DELIVERY',
  OTHER = 'OTHER'
}

export enum AnnouncementCategory {
  SECURITY = 'SECURITY',
  MAINTENANCE = 'MAINTENANCE',
  EVENTS = 'EVENTS',
  NOTICES = 'NOTICES',
  EMERGENCY = 'EMERGENCY',
  NEWS = 'NEWS',
  SERVICE_CHARGE = 'SERVICE_CHARGE'
}

export enum ResidentRequestCategory {
  SECURITY = 'SECURITY',
  INFRASTRUCTURE = 'INFRASTRUCTURE',
  ESTATE_SERVICES = 'ESTATE_SERVICES',
  SUPPORT = 'SUPPORT'
}

export enum ResidentRequestStatus {
  OPEN = 'OPEN',
  IN_PROGRESS = 'IN_PROGRESS',
  RESOLVED = 'RESOLVED',
  CLOSED = 'CLOSED'
}

export type QrPayload = {
  token: string;
};

export type ProfileCompletion = {
  completion: number;
  missing: string[];
  complete: boolean;
};

export type ResidentPlanComparison = {
  showPricing: false;
  current: {
    code: string;
    name: string;
    features: string[];
  };
  upgrades: Array<{
    code: string;
    name: string;
    features: string[];
  }>;
};
