import { ContactCommunicationPlatform } from './ContactCommunicationPlatform';
export interface ContactMetadata {
    [key: string]: any;
}
export declare class Contact {
    readonly id: string;
    organizationId: string;
    externalId: string;
    name: string | null;
    email: string | null;
    phone: string | null;
    profilePictureUrl: string | null;
    metadata: ContactMetadata | null;
    createdAt: Date;
    updatedAt: Date;
    communicationPlatforms: ContactCommunicationPlatform[];
    constructor(id: string, organizationId: string, externalId: string, name: string | null, email: string | null, phone: string | null, profilePictureUrl: string | null, metadata: ContactMetadata | null, createdAt: Date, updatedAt: Date, communicationPlatforms?: ContactCommunicationPlatform[]);
    private validate;
    private isValidEmail;
    private isValidPhone;
    updateInfo(name: string | null, email: string | null, phone: string | null, profilePictureUrl: string | null, metadata: ContactMetadata | null): void;
    addCommunicationPlatform(platform: ContactCommunicationPlatform): void;
    removeCommunicationPlatform(platformId: string): void;
    getPrimaryPlatform(): ContactCommunicationPlatform | null;
    getActivePlatforms(): ContactCommunicationPlatform[];
    getPlatformByType(platformType: string): ContactCommunicationPlatform | null;
    setPlatformAsPrimary(platformId: string): void;
    static createFromConversation(id: string, organizationId: string, externalId: string, name: string | null, platform: string, platformUserId: string | null, platformUsername: string | null): Contact;
    static createFromLead(id: string, organizationId: string, externalId: string, name: string, email: string | null, phone: string | null, metadata: ContactMetadata): Contact;
    toJSON(): {
        id: string;
        organizationId: string;
        externalId: string;
        name: string | null;
        email: string | null;
        phone: string | null;
        profilePictureUrl: string | null;
        metadata: ContactMetadata | null;
        communicationPlatforms: {
            id: string;
            contactId: string;
            organizationId: string;
            platform: string;
            platformUserId: string | null;
            platformUsername: string | null;
            isActive: boolean;
            isPrimary: boolean;
            config: import("./ContactCommunicationPlatform").PlatformConfig | null;
            createdAt: Date;
            updatedAt: Date;
        }[];
        createdAt: Date;
        updatedAt: Date;
    };
}
//# sourceMappingURL=Contact.d.ts.map