import BeneficiaryType, { BeneficiaryTypePrimitiveProps } from '../../../beneficiary/domain/models/beneficiary-type';
import BeneficiaryRelation, { BeneficiaryRelationPrimitiveProps } from '../../../beneficiary/domain/models/beneficiary-relation';
import BeneficiaryDevice, { BeneficiaryDevicePrimitiveProps } from '../../../beneficiary/domain/models/beneficiary-device';
export interface BeneficiaryProps {
    id: string;
    firstName: string;
    lastName?: string;
    email?: string;
    code?: string;
    relation?: BeneficiaryRelation;
    profilePictureUrl?: string;
    types: BeneficiaryType[];
    summary?: {
        backup: number;
        inheritance: number;
        planShares: number;
        storageDevices: number;
        mergeAuthority: number;
    };
    devices: BeneficiaryDevice[];
}
export interface BeneficiaryPrimitiveProps extends Omit<BeneficiaryProps, 'types' | 'relation' | 'devices'> {
    types: BeneficiaryTypePrimitiveProps[];
    relation?: BeneficiaryRelationPrimitiveProps;
    devices: BeneficiaryDevicePrimitiveProps[];
}
export default class Beneficiary {
    private props;
    constructor(props: BeneficiaryProps);
    get id(): string;
    get code(): string | undefined;
    get devices(): BeneficiaryDevice[];
    get fullName(): string | undefined;
    get firstName(): string;
    get lastName(): string | undefined;
    get description(): "" | "Wife" | "Husband" | "Spouse" | "Child" | "Grandchild" | "Parent" | "Grandparent" | "Family member" | "Friend" | "Business Partner" | "Colleague" | "Lawyer" | "Notary" | "Trustee" | "Executor" | "Other" | undefined;
    get hasConnection(): boolean;
    get profilePictureUrl(): string | undefined;
    get email(): string | undefined;
    get types(): BeneficiaryType[];
    get typeNames(): string;
    get protectionPlansCount(): number;
    get involvement(): {
        backup: number;
        inheritance: number;
        planShares: number;
        storageDevices: number;
        mergeAuthority: number;
    } | undefined;
    static fromPrimitives(props: BeneficiaryPrimitiveProps): Beneficiary;
    update(props: Partial<BeneficiaryProps>): void;
    includesType(type: string): boolean;
    toPrimitives(): BeneficiaryPrimitiveProps;
}
