import { EngagementLevel, TimeSlot } from './types.js'; import 'mongoose'; /** * ClockIn Enums - Single Source of Truth * * All attendance-related enums defined with const assertions * for type inference and runtime values * * @module @classytic/clockin/enums */ declare const ATTENDANCE_STATUS: { readonly VALID: "valid"; readonly INVALID: "invalid"; readonly CORRECTED: "corrected"; readonly DISPUTED: "disputed"; }; declare const ATTENDANCE_STATUS_VALUES: ("valid" | "invalid" | "corrected" | "disputed")[]; declare const CHECK_IN_METHOD: { readonly MANUAL: "manual"; readonly QR_CODE: "qr_code"; readonly RFID: "rfid"; readonly BIOMETRIC: "biometric"; readonly MOBILE_APP: "mobile_app"; readonly API: "api"; }; declare const CHECK_IN_METHOD_VALUES: ("manual" | "qr_code" | "rfid" | "biometric" | "mobile_app" | "api")[]; declare const ENGAGEMENT_LEVEL: { readonly HIGHLY_ACTIVE: "highly_active"; readonly ACTIVE: "active"; readonly REGULAR: "regular"; readonly OCCASIONAL: "occasional"; readonly INACTIVE: "inactive"; readonly AT_RISK: "at_risk"; readonly DORMANT: "dormant"; }; declare const ENGAGEMENT_LEVEL_VALUES: ("highly_active" | "active" | "regular" | "occasional" | "inactive" | "at_risk" | "dormant")[]; declare const ATTENDANCE_PERIOD: { readonly DAILY: "daily"; readonly WEEKLY: "weekly"; readonly MONTHLY: "monthly"; readonly YEARLY: "yearly"; }; declare const ATTENDANCE_PERIOD_VALUES: ("daily" | "weekly" | "monthly" | "yearly")[]; /** * Built-in target models with pre-configured settings. * * Custom target models are supported - just pass them to `.withModels()`. * Built-in models have smart defaults for detection and auto-checkout. */ declare const BUILT_IN_TARGET_MODELS: { readonly MEMBERSHIP: "Membership"; readonly EMPLOYEE: "Employee"; readonly TRAINER: "Trainer"; readonly CLASS: "Class"; readonly STUDENT: "Student"; readonly USER: "User"; }; /** Array of built-in target model names */ declare const BUILT_IN_TARGET_MODEL_VALUES: ("Membership" | "Employee" | "Trainer" | "Class" | "Student" | "User")[]; declare const STATS_CALCULATION_MODE: { readonly REAL_TIME: "real_time"; readonly PRE_CALCULATED: "pre_calculated"; readonly HYBRID: "hybrid"; }; declare const STATS_CALCULATION_MODE_VALUES: ("real_time" | "pre_calculated" | "hybrid")[]; declare const ATTENDANCE_TYPE: { readonly FULL_DAY: "full_day"; readonly HALF_DAY_MORNING: "half_day_morning"; readonly HALF_DAY_AFTERNOON: "half_day_afternoon"; readonly PAID_LEAVE: "paid_leave"; readonly UNPAID_LEAVE: "unpaid_leave"; readonly OVERTIME: "overtime"; }; declare const ATTENDANCE_TYPE_VALUES: ("full_day" | "half_day_morning" | "half_day_afternoon" | "paid_leave" | "unpaid_leave" | "overtime")[]; declare const TIME_SLOT: { readonly EARLY_MORNING: "early_morning"; readonly MORNING: "morning"; readonly AFTERNOON: "afternoon"; readonly EVENING: "evening"; readonly NIGHT: "night"; }; declare const TIME_SLOT_VALUES: ("early_morning" | "morning" | "afternoon" | "evening" | "night")[]; declare const CORRECTION_REQUEST_TYPE: { readonly UPDATE_CHECK_IN_TIME: "update_check_in_time"; readonly UPDATE_CHECK_OUT_TIME: "update_check_out_time"; readonly ADD_MISSING_ATTENDANCE: "add_missing_attendance"; readonly DELETE_DUPLICATE: "delete_duplicate"; readonly OVERRIDE_ATTENDANCE_TYPE: "override_attendance_type"; }; declare const CORRECTION_REQUEST_TYPE_VALUES: ("update_check_in_time" | "update_check_out_time" | "add_missing_attendance" | "delete_duplicate" | "override_attendance_type")[]; declare const CORRECTION_REQUEST_STATUS: { readonly PENDING: "pending"; readonly APPROVED: "approved"; readonly REJECTED: "rejected"; readonly APPLIED: "applied"; }; declare const CORRECTION_REQUEST_STATUS_VALUES: ("pending" | "approved" | "rejected" | "applied")[]; declare const PRIORITY: { readonly LOW: "low"; readonly NORMAL: "normal"; readonly HIGH: "high"; readonly URGENT: "urgent"; }; declare const PRIORITY_VALUES: ("low" | "normal" | "high" | "urgent")[]; /** * Get engagement level from monthly visits and last visit * @param monthlyVisits - Number of visits this month * @param lastVisit - Last visit date (optional) * @returns Engagement level */ declare function getEngagementLevel(monthlyVisits: number, lastVisit: Date | null | undefined): EngagementLevel; /** * Get time slot from hour * @param hour - Hour (0-23) * @returns Time slot */ declare function getTimeSlot(hour: number): TimeSlot; /** * Calculate work days value for payroll * @param fullDays - Number of full days * @param halfDays - Number of half days * @param paidLeaveDays - Number of paid leave days * @returns Total work days (decimal) */ declare function calculateWorkDays(fullDays?: number, halfDays?: number, paidLeaveDays?: number): number; declare const _default: { ATTENDANCE_STATUS: { readonly VALID: "valid"; readonly INVALID: "invalid"; readonly CORRECTED: "corrected"; readonly DISPUTED: "disputed"; }; CHECK_IN_METHOD: { readonly MANUAL: "manual"; readonly QR_CODE: "qr_code"; readonly RFID: "rfid"; readonly BIOMETRIC: "biometric"; readonly MOBILE_APP: "mobile_app"; readonly API: "api"; }; ENGAGEMENT_LEVEL: { readonly HIGHLY_ACTIVE: "highly_active"; readonly ACTIVE: "active"; readonly REGULAR: "regular"; readonly OCCASIONAL: "occasional"; readonly INACTIVE: "inactive"; readonly AT_RISK: "at_risk"; readonly DORMANT: "dormant"; }; ATTENDANCE_PERIOD: { readonly DAILY: "daily"; readonly WEEKLY: "weekly"; readonly MONTHLY: "monthly"; readonly YEARLY: "yearly"; }; BUILT_IN_TARGET_MODELS: { readonly MEMBERSHIP: "Membership"; readonly EMPLOYEE: "Employee"; readonly TRAINER: "Trainer"; readonly CLASS: "Class"; readonly STUDENT: "Student"; readonly USER: "User"; }; ATTENDANCE_TYPE: { readonly FULL_DAY: "full_day"; readonly HALF_DAY_MORNING: "half_day_morning"; readonly HALF_DAY_AFTERNOON: "half_day_afternoon"; readonly PAID_LEAVE: "paid_leave"; readonly UNPAID_LEAVE: "unpaid_leave"; readonly OVERTIME: "overtime"; }; TIME_SLOT: { readonly EARLY_MORNING: "early_morning"; readonly MORNING: "morning"; readonly AFTERNOON: "afternoon"; readonly EVENING: "evening"; readonly NIGHT: "night"; }; CORRECTION_REQUEST_TYPE: { readonly UPDATE_CHECK_IN_TIME: "update_check_in_time"; readonly UPDATE_CHECK_OUT_TIME: "update_check_out_time"; readonly ADD_MISSING_ATTENDANCE: "add_missing_attendance"; readonly DELETE_DUPLICATE: "delete_duplicate"; readonly OVERRIDE_ATTENDANCE_TYPE: "override_attendance_type"; }; CORRECTION_REQUEST_STATUS: { readonly PENDING: "pending"; readonly APPROVED: "approved"; readonly REJECTED: "rejected"; readonly APPLIED: "applied"; }; PRIORITY: { readonly LOW: "low"; readonly NORMAL: "normal"; readonly HIGH: "high"; readonly URGENT: "urgent"; }; getEngagementLevel: typeof getEngagementLevel; getTimeSlot: typeof getTimeSlot; }; export { ATTENDANCE_PERIOD, ATTENDANCE_PERIOD_VALUES, ATTENDANCE_STATUS, ATTENDANCE_STATUS_VALUES, ATTENDANCE_TYPE, ATTENDANCE_TYPE_VALUES, BUILT_IN_TARGET_MODELS, BUILT_IN_TARGET_MODEL_VALUES, CHECK_IN_METHOD, CHECK_IN_METHOD_VALUES, CORRECTION_REQUEST_STATUS, CORRECTION_REQUEST_STATUS_VALUES, CORRECTION_REQUEST_TYPE, CORRECTION_REQUEST_TYPE_VALUES, ENGAGEMENT_LEVEL, ENGAGEMENT_LEVEL_VALUES, PRIORITY, PRIORITY_VALUES, STATS_CALCULATION_MODE, STATS_CALCULATION_MODE_VALUES, TIME_SLOT, TIME_SLOT_VALUES, calculateWorkDays, _default as default, getEngagementLevel, getTimeSlot };