import { UserRole } from '@prisma/client';
type ProfileLike = {
    estateId?: string | null;
    phone?: string | null;
    firstName?: string | null;
    lastName?: string | null;
    blockNumber?: string | null;
    flatNumber?: string | null;
    unit?: string | null;
    address?: string | null;
    guardCode?: string | null;
    assignedGateId?: string | null;
    assignedShifts?: unknown;
    profilePictureUrl?: string | null;
    profileConfirmed?: boolean | null;
    emergencyContact?: unknown;
};
export type ProfileCompletionResult = {
    completion: number;
    missing: string[];
    complete: boolean;
    required: string[];
};
export type ResidentProfileRequirement = 'firstName' | 'lastName' | 'phone' | 'blockNumber' | 'flatNumber' | 'address' | 'estateId' | 'profileConfirmed';
export type GuardProfileRequirement = 'firstName' | 'lastName' | 'phone' | 'guardCode' | 'assignedGateId' | 'assignedShifts' | 'profilePictureUrl' | 'address' | 'emergencyContact' | 'estateId' | 'profileConfirmed';
export type ProfileCompletionOptions = {
    residentRequiredFields?: ResidentProfileRequirement[];
    guardRequiredFields?: GuardProfileRequirement[];
};
export declare function calculateProfileCompletion(role: UserRole, profile: ProfileLike, options?: ProfileCompletionOptions): ProfileCompletionResult;
export {};
