import { Prisma } from '@prisma/client';
import { RequestUser } from '../common/request-user';
import { PrismaService } from '../database/prisma.service';
import { OfflineSyncDto } from './dto/offline.dto';
export declare class OfflineService {
    private readonly prisma;
    constructor(prisma: PrismaService);
    bootstrap(user: RequestUser, estateId: string): Promise<{
        serverTime: Date;
        activePasses: ({
            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;
        })[];
        residents: {
            id: string;
            name: string;
            phone: string;
            unit: string;
        }[];
        recentLogs: {
            id: string;
            actorType: string;
            actorId: string;
            action: string;
            metadata: Prisma.JsonValue;
            timestamp: Date;
            estateId: string | null;
        }[];
    }>;
    sync(dto: OfflineSyncDto, user: RequestUser): Promise<{
        accepted: number;
        items: {
            status: import(".prisma/client").$Enums.SyncItemStatus;
            id: string;
            estateId: string;
            deviceId: string;
            createdAt: Date;
            clientEventId: string;
            eventType: string;
            payload: Prisma.JsonValue;
            conflictReason: string | null;
            appliedAt: Date | null;
        }[];
    }>;
}
