import type { Response } from 'express';
import type { Request as ExpressRequest } from 'express';
import { CheckpointService } from '../services/checkpoint.service';
import { CheckinService } from '../services/checkin.service';
import { CreateCheckpointDto, UpdateCheckpointDto } from '../dto/checkpoint.dto';
export declare class SiteAttendanceCheckpointController {
    private readonly checkpointService;
    private readonly checkinService;
    constructor(checkpointService: CheckpointService, checkinService: CheckinService);
    listCheckpoints(): Promise<{
        checkpoints: {
            code: string;
            id: string;
            createdAt: Date;
            name: string;
            updatedAt: Date;
            description: string | null;
            address: string | null;
            isActive: boolean;
            timezone: string;
            createdBy: string;
            latitude: number;
            longitude: number;
            geoPolicy: import("@prisma/client").$Enums.SiteGeoPolicy;
            geoRadius: number;
            geoAccuracyThreshold: number;
            allowUnauthenticatedCheckin: boolean;
            accessMode: import("@prisma/client").$Enums.SiteCheckpointAccessMode;
            qrRotationSeconds: number | null;
            qrGraceSeconds: number;
            sharedCheckinEnabled: boolean;
            sharedCompanyId: string | null;
            sharedCompanyLabel: string | null;
        }[];
    }>;
    createCheckpoint(dto: CreateCheckpointDto, req: ExpressRequest): Promise<{
        code: string;
        id: string;
        createdAt: Date;
        name: string;
        updatedAt: Date;
        description: string | null;
        address: string | null;
        isActive: boolean;
        timezone: string;
        createdBy: string;
        latitude: number;
        longitude: number;
        geoPolicy: import("@prisma/client").$Enums.SiteGeoPolicy;
        geoRadius: number;
        geoAccuracyThreshold: number;
        allowUnauthenticatedCheckin: boolean;
        accessMode: import("@prisma/client").$Enums.SiteCheckpointAccessMode;
        qrRotationSeconds: number | null;
        qrGraceSeconds: number;
        sharedCheckinEnabled: boolean;
        sharedCompanyId: string | null;
        sharedCompanyLabel: string | null;
    }>;
    getCheckpoint(id: string): Promise<{
        code: string;
        id: string;
        createdAt: Date;
        name: string;
        updatedAt: Date;
        description: string | null;
        address: string | null;
        isActive: boolean;
        timezone: string;
        createdBy: string;
        latitude: number;
        longitude: number;
        geoPolicy: import("@prisma/client").$Enums.SiteGeoPolicy;
        geoRadius: number;
        geoAccuracyThreshold: number;
        allowUnauthenticatedCheckin: boolean;
        accessMode: import("@prisma/client").$Enums.SiteCheckpointAccessMode;
        qrRotationSeconds: number | null;
        qrGraceSeconds: number;
        sharedCheckinEnabled: boolean;
        sharedCompanyId: string | null;
        sharedCompanyLabel: string | null;
    }>;
    updateCheckpoint(id: string, dto: UpdateCheckpointDto): Promise<{
        code: string;
        id: string;
        createdAt: Date;
        name: string;
        updatedAt: Date;
        description: string | null;
        address: string | null;
        isActive: boolean;
        timezone: string;
        createdBy: string;
        latitude: number;
        longitude: number;
        geoPolicy: import("@prisma/client").$Enums.SiteGeoPolicy;
        geoRadius: number;
        geoAccuracyThreshold: number;
        allowUnauthenticatedCheckin: boolean;
        accessMode: import("@prisma/client").$Enums.SiteCheckpointAccessMode;
        qrRotationSeconds: number | null;
        qrGraceSeconds: number;
        sharedCheckinEnabled: boolean;
        sharedCompanyId: string | null;
        sharedCompanyLabel: string | null;
    }>;
    deleteCheckpoint(id: string): Promise<{
        message: string;
    }>;
    getCheckpointEvents(id: string, date?: string, page?: string, pageSize?: string, userName?: string, eventType?: string, lang?: string): Promise<{
        events: {
            id: string;
            userId: string;
            userName: any;
            userEmail: any;
            eventType: import("@prisma/client").$Enums.SiteEventType;
            timestamp: string;
            authMethod: import("@prisma/client").$Enums.SiteAuthMethod;
            geoStatus: import("@prisma/client").$Enums.SiteGeoStatus;
            latitude: number | null;
            longitude: number | null;
            accuracy: number | null;
            distanceToCheckpoint: number | null;
            resolvedAddress: string | null;
        }[];
        pagination: {
            total: number;
            page: number;
            pageSize: number;
        };
    }>;
    exportCheckpointEvents(id: string, res: Response, date?: string, lang?: string): Promise<void>;
    getTodaySummary(id: string): Promise<{
        date: string;
        totalCheckedIn: number;
        totalCheckedOut: number;
        notCheckedOut: number;
        totalDurationSeconds: number;
        avgDurationSeconds: number;
        recentEvents: {
            userId: string;
            userName: any;
            eventType: import("@prisma/client").$Enums.SiteEventType;
            timestamp: string;
        }[];
    }>;
}
