import { CatalogsService } from '../catalogs/catalogs.service.js';
import { EmployeesService } from '../employees/employees.service.js';
import { DataStoreService } from '../shared/data-store.service.js';
import { AwsService } from '../shared/aws.service.js';
import type { PersistenceService } from '../shared/persistence.js';
import { AttendanceMark } from '../shared/domain.js';
interface CreateAttendanceMarkBody {
    type?: unknown;
    stationId?: unknown;
    employeeNumber?: unknown;
    simulatedFaceId?: unknown;
    faceImageBase64?: unknown;
    capturedAt?: unknown;
    entryTime?: unknown;
    exitTime?: unknown;
    latitude?: unknown;
    longitude?: unknown;
}
interface FindAttendanceMarksQuery {
    employeeNumber?: string;
    stationId?: string;
    from?: string;
    to?: string;
}
export declare class AttendanceService {
    private readonly store;
    private readonly catalogsService;
    private readonly employeesService;
    private readonly awsService;
    private readonly persistence;
    private readonly logger;
    private static readonly MAX_PENDING_ENTRY_HOURS;
    constructor(store: DataStoreService, catalogsService: CatalogsService, employeesService: EmployeesService, awsService: AwsService, persistence: PersistenceService);
    createMark(body: CreateAttendanceMarkBody): Promise<AttendanceMark>;
    findMarks(query: FindAttendanceMarksQuery): AttendanceMark[];
    private parseMarkType;
    private optionalString;
    findPendingEntry(employeeNumber: string, at?: Date): AttendanceMark | undefined;
    getEmployeeAttendanceStatus(employeeNumber: string): {
        hasPendingEntry: boolean;
        pendingEntryDate: string | null;
    };
    createMarkWithFacialRecognition(body: CreateAttendanceMarkBody, imageBuffer: Buffer): Promise<AttendanceMark>;
    private validateMobileMarkSequence;
    createManualMark(body: CreateAttendanceMarkBody, editorUsername: string): Promise<AttendanceMark>;
    private validateManualExit;
    editMarkTimes(markId: number, body: {
        entryTime?: unknown;
        exitTime?: unknown;
        latitude?: unknown;
        longitude?: unknown;
    }, editorUsername: string): Promise<AttendanceMark>;
    private optionalNumber;
}
export {};
