import { Prisma } from '@prisma/client';
import { AuditService } from '../audit/audit.service';
import { RequestUser } from '../common/request-user';
import { PrismaService } from '../database/prisma.service';
import { CheckoutDto, ManualCheckinDto, ScanCheckinDto } from './dto/checkin.dto';
export declare class CheckinService {
    private readonly prisma;
    private readonly audit;
    constructor(prisma: PrismaService, audit: AuditService);
    checkinByQr(dto: ScanCheckinDto, user: RequestUser): Promise<{
        visitorPass: {
            visitor: {
                id: string;
                metadata: Prisma.JsonValue;
                estateId: string | null;
                name: string;
                phone: string | null;
                createdAt: Date;
                updatedAt: Date;
                photoUrl: string | null;
                vehiclePlate: string | null;
                riskScore: number;
                flagged: boolean;
                blacklisted: boolean;
                riskNotes: string | null;
                riskLevel: import(".prisma/client").$Enums.VisitorRiskLevel;
            };
            hostResident: {
                status: import(".prisma/client").$Enums.AccountStatus;
                id: string;
                metadata: Prisma.JsonValue;
                estateId: string;
                name: string;
                firstName: string | null;
                lastName: string | null;
                phone: string;
                blockNumber: string | null;
                flatNumber: string | null;
                address: string | null;
                profileConfirmed: boolean;
                profilePictureUrl: string | null;
                emergencyContact: Prisma.JsonValue;
                unit: string;
                email: string | null;
                createdAt: Date;
                updatedAt: Date;
                profilePictureThumbnailUrl: string | null;
                profileCompletion: number;
                residentCode: string;
                householdMembers: Prisma.JsonValue;
                userId: string;
            };
        } & {
            status: import(".prisma/client").$Enums.VisitorPassStatus;
            id: string;
            estateId: string;
            createdAt: Date;
            updatedAt: Date;
            passType: import(".prisma/client").$Enums.VisitorPassType;
            validFrom: Date;
            validUntil: Date;
            maxEntries: number;
            entryCount: number;
            visitorId: string;
            hostResidentId: string;
            visitorCode: string;
            qrToken: string;
            revokedAt: Date | null;
        };
    } & {
        status: import(".prisma/client").$Enums.VisitSessionStatus;
        id: string;
        metadata: Prisma.JsonValue;
        estateId: string;
        deviceId: string | null;
        createdAt: Date;
        updatedAt: Date;
        guardId: string;
        hostResidentId: string | null;
        visitorPassId: string;
        gateId: string | null;
        visitorPhone: string | null;
        checkinTime: Date;
        checkoutTime: Date | null;
        entryGate: string | null;
        exitGate: string | null;
        offlineEventId: string | null;
        scanLocation: Prisma.JsonValue;
    }>;
    checkinByCode(dto: ManualCheckinDto, user: RequestUser): Promise<{
        visitorPass: {
            visitor: {
                id: string;
                metadata: Prisma.JsonValue;
                estateId: string | null;
                name: string;
                phone: string | null;
                createdAt: Date;
                updatedAt: Date;
                photoUrl: string | null;
                vehiclePlate: string | null;
                riskScore: number;
                flagged: boolean;
                blacklisted: boolean;
                riskNotes: string | null;
                riskLevel: import(".prisma/client").$Enums.VisitorRiskLevel;
            };
            hostResident: {
                status: import(".prisma/client").$Enums.AccountStatus;
                id: string;
                metadata: Prisma.JsonValue;
                estateId: string;
                name: string;
                firstName: string | null;
                lastName: string | null;
                phone: string;
                blockNumber: string | null;
                flatNumber: string | null;
                address: string | null;
                profileConfirmed: boolean;
                profilePictureUrl: string | null;
                emergencyContact: Prisma.JsonValue;
                unit: string;
                email: string | null;
                createdAt: Date;
                updatedAt: Date;
                profilePictureThumbnailUrl: string | null;
                profileCompletion: number;
                residentCode: string;
                householdMembers: Prisma.JsonValue;
                userId: string;
            };
        } & {
            status: import(".prisma/client").$Enums.VisitorPassStatus;
            id: string;
            estateId: string;
            createdAt: Date;
            updatedAt: Date;
            passType: import(".prisma/client").$Enums.VisitorPassType;
            validFrom: Date;
            validUntil: Date;
            maxEntries: number;
            entryCount: number;
            visitorId: string;
            hostResidentId: string;
            visitorCode: string;
            qrToken: string;
            revokedAt: Date | null;
        };
    } & {
        status: import(".prisma/client").$Enums.VisitSessionStatus;
        id: string;
        metadata: Prisma.JsonValue;
        estateId: string;
        deviceId: string | null;
        createdAt: Date;
        updatedAt: Date;
        guardId: string;
        hostResidentId: string | null;
        visitorPassId: string;
        gateId: string | null;
        visitorPhone: string | null;
        checkinTime: Date;
        checkoutTime: Date | null;
        entryGate: string | null;
        exitGate: string | null;
        offlineEventId: string | null;
        scanLocation: Prisma.JsonValue;
    }>;
    checkout(dto: CheckoutDto, user: RequestUser): Promise<{
        visitorPass: {
            visitor: {
                id: string;
                metadata: Prisma.JsonValue;
                estateId: string | null;
                name: string;
                phone: string | null;
                createdAt: Date;
                updatedAt: Date;
                photoUrl: string | null;
                vehiclePlate: string | null;
                riskScore: number;
                flagged: boolean;
                blacklisted: boolean;
                riskNotes: string | null;
                riskLevel: import(".prisma/client").$Enums.VisitorRiskLevel;
            };
            hostResident: {
                status: import(".prisma/client").$Enums.AccountStatus;
                id: string;
                metadata: Prisma.JsonValue;
                estateId: string;
                name: string;
                firstName: string | null;
                lastName: string | null;
                phone: string;
                blockNumber: string | null;
                flatNumber: string | null;
                address: string | null;
                profileConfirmed: boolean;
                profilePictureUrl: string | null;
                emergencyContact: Prisma.JsonValue;
                unit: string;
                email: string | null;
                createdAt: Date;
                updatedAt: Date;
                profilePictureThumbnailUrl: string | null;
                profileCompletion: number;
                residentCode: string;
                householdMembers: Prisma.JsonValue;
                userId: string;
            };
        } & {
            status: import(".prisma/client").$Enums.VisitorPassStatus;
            id: string;
            estateId: string;
            createdAt: Date;
            updatedAt: Date;
            passType: import(".prisma/client").$Enums.VisitorPassType;
            validFrom: Date;
            validUntil: Date;
            maxEntries: number;
            entryCount: number;
            visitorId: string;
            hostResidentId: string;
            visitorCode: string;
            qrToken: string;
            revokedAt: Date | null;
        };
    } & {
        status: import(".prisma/client").$Enums.VisitSessionStatus;
        id: string;
        metadata: Prisma.JsonValue;
        estateId: string;
        deviceId: string | null;
        createdAt: Date;
        updatedAt: Date;
        guardId: string;
        hostResidentId: string | null;
        visitorPassId: string;
        gateId: string | null;
        visitorPhone: string | null;
        checkinTime: Date;
        checkoutTime: Date | null;
        entryGate: string | null;
        exitGate: string | null;
        offlineEventId: string | null;
        scanLocation: Prisma.JsonValue;
    }>;
    private checkin;
    private resolveGateId;
    private createResidentVisitNotification;
    private toJson;
}
