export declare function ensureDatabaseUrl(env?: NodeJS.ProcessEnv): string | undefined

export type AdminRole = 'SUPER_ADMIN' | 'ADMIN' | 'SUPPORT' | 'FINANCE' | 'VIEWER'
export type EmployeeRole = 'OWNER' | 'MANAGER' | 'AGENT'
export type LicenseStatus = 'PENDING' | 'VALID' | 'EXPIRING' | 'APPROVED' | 'DENIED' | 'EXPIRED'
export type NotificationType =
  | 'ACCOUNT_CREATED'
  | 'NEW_BOOKING'
  | 'BOOKING_CANCELLED'
  | 'PAYMENT_RECEIVED'
  | 'PAYMENT_FAILED'
  | 'DOCUMENTS_REQUIRED'
  | 'PAYMENT_REQUIRED'
  | 'SUBSCRIPTION_TRIAL_ENDING'
  | 'SUBSCRIPTION_SUSPENDED'
  | 'VEHICLE_MAINTENANCE_DUE'
  | 'OFFER_EXPIRING'
  | 'NEW_REVIEW_RECEIVED'
  | 'BOOKING_CONFIRMED'
  | 'PICKUP_REMINDER_24H'
  | 'PICKUP_REMINDER_2H'
  | 'VEHICLE_READY'
  | 'RETURN_REMINDER'
  | 'BOOKING_CANCELLED_BY_COMPANY'
  | 'REFUND_PROCESSED'
  | 'NEW_OFFER_FROM_SAVED_COMPANY'
  | 'REVIEW_REQUEST'

export type NotificationChannel = 'EMAIL' | 'SMS' | 'WHATSAPP' | 'IN_APP' | 'PUSH'

export interface Company {
  id: string
  name: string
  slug: string
  email: string
  phone: string | null
  status: string
}

export interface Employee {
  id: string
  companyId: string
  clerkUserId: string
  firstName: string
  lastName: string
  email: string
  phone: string | null
  role: EmployeeRole
  isActive: boolean
  company?: Company
}

export interface AdminUser {
  id: string
  email: string
  firstName: string
  lastName: string
  role: AdminRole
  isActive: boolean
  totpEnabled?: boolean
  totpSecret?: string | null
}

export interface InsurancePolicy {
  id: string
  companyId: string
  name: string
  description?: string | null
  type: string
  chargeType: 'PER_DAY' | 'PER_RENTAL' | 'PERCENTAGE_OF_RENTAL'
  chargeValue: number
  isRequired: boolean
  isActive: boolean
  sortOrder: number
}
