export type EmployeeStatus = 'active' | 'inactive';
export type ZoneStatus = 'active' | 'inactive';
export type PositionStatus = 'active' | 'inactive';
export type AttendanceMarkType = 'entry' | 'exit';
export interface Zone {
    id?: number;
    name: string;
    status: ZoneStatus;
}
export interface Station {
    id?: number;
    name: string;
    zoneId: number;
    latitude?: number;
    longitude?: number;
    geofenceRadiusMeters: number;
    username: string;
    password: string;
    passwordEncrypted?: string;
}
export interface Position {
    id?: number;
    name: string;
    status: PositionStatus;
}
export interface Employee {
    id?: number;
    employeeNumber: string;
    fullName: string;
    department: string;
    primaryZoneId: number;
    zoneIds?: number[];
    positionId?: number;
    stationId?: number;
    status: EmployeeStatus;
    faceId?: string;
    photoUrl?: string;
    canAccessMobileApp?: boolean;
    mobileUsername?: string;
    mobilePassword?: string;
    mobilePasswordEncrypted?: string;
    isMobileSupervisor?: boolean;
    isFreeAttendance?: boolean;
}
export interface AttendanceMark {
    id?: number;
    employeeId: number;
    employeeNumber: string;
    fullName: string;
    stationId: number;
    stationName: string;
    zoneId: number;
    type: AttendanceMarkType;
    capturedAt: string;
    entryTime?: string;
    exitTime?: string;
    entryLatitude?: number;
    entryLongitude?: number;
    exitLatitude?: number;
    exitLongitude?: number;
    isManualEntry?: boolean;
    isManualExit?: boolean;
    editedBy?: string;
    editedAt?: string;
}
export type UserRole = string;
export interface Role {
    id?: number;
    name: string;
    description: string;
}
export interface User {
    id?: number;
    username: string;
    password: string;
    passwordEncrypted?: string;
    fullName: string;
    role: UserRole;
    isActive: boolean;
    createdAt: string;
}
