import type { Request as ExpressRequest } from 'express';
import { CheckinService } from '../services/checkin.service';
import { GeocodingService } from '../services/geocoding.service';
import { CheckinDto, GuestCheckinDto } from '../dto/checkin.dto';
export declare class SiteAttendanceCheckinController {
    private readonly checkinService;
    private readonly geocodingService;
    constructor(checkinService: CheckinService, geocodingService: GeocodingService);
    getPublicCheckpoint(code: string, qrToken?: string, ticket?: string): Promise<{
        id: string;
        name: string;
        description: string | null;
        address: string | null;
        timezone: string;
        geoPolicy: import("@prisma/client").$Enums.SiteGeoPolicy;
        geoRadius: number | undefined;
        allowUnauthenticatedCheckin: boolean;
        accessMode: import("@prisma/client").$Enums.SiteCheckpointAccessMode;
        sharedCheckinEnabled: boolean;
        sharedCompanyId: string | null | undefined;
        sharedCompanyLabel: string | null | undefined;
    }>;
    searchUsers(code: string, query: string): Promise<{
        users: {
            id: string;
            displayName: string;
            email: string;
            department: string;
        }[];
    }>;
    getTodayEvents(code: string, userId: string): Promise<{
        events: {
            id: string;
            eventType: import("@prisma/client").$Enums.SiteEventType;
            timestamp: string;
            geoStatus: import("@prisma/client").$Enums.SiteGeoStatus;
            authMethod: import("@prisma/client").$Enums.SiteAuthMethod;
            latitude: number | null;
            longitude: number | null;
            accuracy: number | null;
            distanceToCheckpoint: number | null;
        }[];
        summary: {
            firstCheckIn: string | null;
            lastCheckOut: string | null;
            totalEvents: number;
            todayDurationSeconds: number;
        };
    }>;
    checkin(code: string, dto: CheckinDto, req: ExpressRequest, ip: string, userAgent: string): Promise<{
        event: {
            id: string;
            eventType: import("@prisma/client").$Enums.SiteEventType;
            timestamp: string;
            geoStatus: import("@prisma/client").$Enums.SiteGeoStatus;
            distanceToCheckpoint: number | null;
        };
        todaySummary: {
            firstCheckIn: string | null;
            lastCheckOut: string | null;
            totalEvents: number;
            todayDurationSeconds: number;
        };
    }>;
    searchPlaces(query: string, lang?: string): Promise<{
        places: {
            latitude: number;
            longitude: number;
            displayName: string;
            title: string;
        }[];
    }>;
    reverseGeocode(lat: string, lon: string, lang?: string): Promise<{
        displayName: string;
    }>;
    guestCheckin(code: string, dto: GuestCheckinDto, ip: string, userAgent: string): Promise<{
        event: {
            id: string;
            eventType: import("@prisma/client").$Enums.SiteEventType;
            timestamp: string;
            geoStatus: import("@prisma/client").$Enums.SiteGeoStatus;
            distanceToCheckpoint: number | null;
        };
        todaySummary: {
            firstCheckIn: string | null;
            lastCheckOut: string | null;
            totalEvents: number;
            todayDurationSeconds: number;
        };
    }>;
}
