import { Jid, MessageId } from '../../../types/tags.mjs';
import { BaseMessageOptions } from './base.mjs';

interface ContactMessageResponseRaw {
    key: {
        remoteJid: string;
        id: string;
    };
    message: {
        contactMessage?: {
            displayName: string;
            vcard: string;
        };
        contactsArrayMessage?: {
            contacts: {
                displayName: string;
                vcard: string;
            }[];
        };
    };
    messageTimestamp: string | Date;
}
interface Contact {
    /**
     * Contact display name
     */
    fullName: string;
    /**
     * Contact phone number
     */
    phoneNumber: string;
    /**
     * Contact organization
     */
    organization?: string;
    /**
     * Contact email
     */
    email?: string;
    /**
     * Contact website url
     */
    url?: string;
}
interface ContactMessageOptions extends BaseMessageOptions {
    /**
     * Contact list
     */
    contact: [Contact, ...Contact[]];
}
interface ContactMessageBody extends BaseMessageOptions {
    contact: (Contact & {
        wuid: string;
    })[];
}
interface ContactMessageResponse {
    receiver: {
        phoneNumber: string;
        jid: Jid;
    };
    contacts: {
        displayName: string;
        vcard: string;
    }[];
    id: MessageId;
    timestamp: Date;
}
declare const ContactMessageBodyTransform: ({ contact, ...data }: ContactMessageOptions) => ContactMessageBody;
declare const ContactMessageResponseTransform: (data: ContactMessageResponseRaw) => ContactMessageResponse;
declare const BodySchema: {
    parse: ({ contact, ...data }: ContactMessageOptions) => ContactMessageBody;
};
declare const ResponseSchema: {
    parse: (data: ContactMessageResponseRaw) => ContactMessageResponse;
};

export { BodySchema, type Contact, type ContactMessageBody, ContactMessageBodyTransform, type ContactMessageOptions, type ContactMessageResponse, type ContactMessageResponseRaw, ContactMessageResponseTransform, ResponseSchema };
