import * as z from "zod/v3";
import { ClosedEnum } from "../../types/enums.js";
import { Result as SafeParseResult } from "../../types/fp.js";
import { SDKValidationError } from "../errors/sdkvalidationerror.js";
import { Address, Address$Outbound } from "./address.js";
import { CustomField, CustomField$Outbound } from "./customfield.js";
import { Email, Email$Outbound } from "./email.js";
import { PassThroughBody, PassThroughBody$Outbound } from "./passthroughbody.js";
import { PhoneNumber, PhoneNumber$Outbound } from "./phonenumber.js";
import { SocialLink, SocialLink$Outbound } from "./sociallink.js";
import { Website, Website$Outbound } from "./website.js";
/**
 * The type of the contact.
 */
export declare const ContactType: {
    readonly Customer: "customer";
    readonly Supplier: "supplier";
    readonly Employee: "employee";
    readonly Personal: "personal";
};
/**
 * The type of the contact.
 */
export type ContactType = ClosedEnum<typeof ContactType>;
/**
 * The gender of the contact.
 */
export declare const ContactGender: {
    readonly Male: "male";
    readonly Female: "female";
    readonly Unisex: "unisex";
};
/**
 * The gender of the contact.
 */
export type ContactGender = ClosedEnum<typeof ContactGender>;
export type Contact = {
    /**
     * Unique identifier for the contact.
     */
    id?: string | undefined;
    /**
     * Full name of the contact.
     */
    name?: string | null | undefined;
    /**
     * The owner of the contact.
     */
    ownerId?: string | null | undefined;
    /**
     * The type of the contact.
     */
    type?: ContactType | null | undefined;
    /**
     * The company the contact is associated with.
     */
    companyId?: string | null | undefined;
    /**
     * The name of the company the contact is associated with.
     */
    companyName?: string | null | undefined;
    /**
     * The lead the contact is associated with.
     */
    leadId?: string | null | undefined;
    /**
     * The first name of the contact.
     */
    firstName?: string | null | undefined;
    /**
     * The middle name of the contact.
     */
    middleName?: string | null | undefined;
    /**
     * The last name of the contact.
     */
    lastName?: string | null | undefined;
    /**
     * The prefix of the contact.
     */
    prefix?: string | null | undefined;
    /**
     * The suffix of the contact.
     */
    suffix?: string | null | undefined;
    /**
     * The job title of the contact.
     */
    title?: string | null | undefined;
    /**
     * The department of the contact.
     */
    department?: string | null | undefined;
    /**
     * language code according to ISO 639-1. For the United States - EN
     */
    language?: string | null | undefined;
    /**
     * The gender of the contact.
     */
    gender?: ContactGender | null | undefined;
    /**
     * The birthday of the contact.
     */
    birthday?: string | null | undefined;
    /**
     * @deprecated field: This will be removed in a future release, please migrate away from it as soon as possible.
     */
    image?: string | null | undefined;
    /**
     * The URL of the photo of a person.
     */
    photoUrl?: string | null | undefined;
    /**
     * The lead source of the contact.
     */
    leadSource?: string | null | undefined;
    /**
     * The fax number of the contact.
     */
    fax?: string | null | undefined;
    /**
     * The description of the contact.
     */
    description?: string | null | undefined;
    /**
     * The current balance of the contact.
     */
    currentBalance?: number | null | undefined;
    /**
     * The status of the contact.
     */
    status?: string | null | undefined;
    /**
     * The active status of the contact.
     */
    active?: boolean | null | undefined;
    websites?: Array<Website> | undefined;
    addresses?: Array<Address> | undefined;
    socialLinks?: Array<SocialLink> | undefined;
    phoneNumbers?: Array<PhoneNumber> | undefined;
    emails?: Array<Email> | undefined;
    emailDomain?: string | null | undefined;
    customFields?: Array<CustomField> | null | undefined;
    tags?: Array<string> | null | undefined;
    /**
     * The first call date of the contact.
     */
    firstCallAt?: Date | null | undefined;
    /**
     * The first email date of the contact.
     */
    firstEmailAt?: Date | null | undefined;
    /**
     * The last activity date of the contact.
     */
    lastActivityAt?: Date | null | undefined;
    /**
     * When custom mappings are configured on the resource, the result is included here.
     */
    customMappings?: {
        [k: string]: any;
    } | null | undefined;
    /**
     * The last update date of the contact.
     */
    updatedAt?: Date | null | undefined;
    /**
     * The creation date of the contact.
     */
    createdAt?: Date | null | undefined;
    /**
     * The opportunity ids of the contact.
     */
    opportunityIds?: Array<string> | undefined;
    /**
     * The pass_through property allows passing service-specific, custom data or structured modifications in request body when creating or updating resources.
     */
    passThrough?: Array<PassThroughBody> | undefined;
};
export type ContactInput = {
    /**
     * Full name of the contact.
     */
    name?: string | null | undefined;
    /**
     * The owner of the contact.
     */
    ownerId?: string | null | undefined;
    /**
     * The type of the contact.
     */
    type?: ContactType | null | undefined;
    /**
     * The company the contact is associated with.
     */
    companyId?: string | null | undefined;
    /**
     * The name of the company the contact is associated with.
     */
    companyName?: string | null | undefined;
    /**
     * The lead the contact is associated with.
     */
    leadId?: string | null | undefined;
    /**
     * The first name of the contact.
     */
    firstName?: string | null | undefined;
    /**
     * The middle name of the contact.
     */
    middleName?: string | null | undefined;
    /**
     * The last name of the contact.
     */
    lastName?: string | null | undefined;
    /**
     * The prefix of the contact.
     */
    prefix?: string | null | undefined;
    /**
     * The suffix of the contact.
     */
    suffix?: string | null | undefined;
    /**
     * The job title of the contact.
     */
    title?: string | null | undefined;
    /**
     * The department of the contact.
     */
    department?: string | null | undefined;
    /**
     * language code according to ISO 639-1. For the United States - EN
     */
    language?: string | null | undefined;
    /**
     * The gender of the contact.
     */
    gender?: ContactGender | null | undefined;
    /**
     * The birthday of the contact.
     */
    birthday?: string | null | undefined;
    /**
     * @deprecated field: This will be removed in a future release, please migrate away from it as soon as possible.
     */
    image?: string | null | undefined;
    /**
     * The URL of the photo of a person.
     */
    photoUrl?: string | null | undefined;
    /**
     * The lead source of the contact.
     */
    leadSource?: string | null | undefined;
    /**
     * The fax number of the contact.
     */
    fax?: string | null | undefined;
    /**
     * The description of the contact.
     */
    description?: string | null | undefined;
    /**
     * The current balance of the contact.
     */
    currentBalance?: number | null | undefined;
    /**
     * The status of the contact.
     */
    status?: string | null | undefined;
    /**
     * The active status of the contact.
     */
    active?: boolean | null | undefined;
    websites?: Array<Website> | undefined;
    addresses?: Array<Address> | undefined;
    socialLinks?: Array<SocialLink> | undefined;
    phoneNumbers?: Array<PhoneNumber> | undefined;
    emails?: Array<Email> | undefined;
    emailDomain?: string | null | undefined;
    customFields?: Array<CustomField> | null | undefined;
    tags?: Array<string> | null | undefined;
    /**
     * The opportunity ids of the contact.
     */
    opportunityIds?: Array<string> | undefined;
    /**
     * The pass_through property allows passing service-specific, custom data or structured modifications in request body when creating or updating resources.
     */
    passThrough?: Array<PassThroughBody> | undefined;
};
/** @internal */
export declare const ContactType$inboundSchema: z.ZodNativeEnum<typeof ContactType>;
/** @internal */
export declare const ContactType$outboundSchema: z.ZodNativeEnum<typeof ContactType>;
/** @internal */
export declare const ContactGender$inboundSchema: z.ZodNativeEnum<typeof ContactGender>;
/** @internal */
export declare const ContactGender$outboundSchema: z.ZodNativeEnum<typeof ContactGender>;
/** @internal */
export declare const Contact$inboundSchema: z.ZodType<Contact, z.ZodTypeDef, unknown>;
export declare function contactFromJSON(jsonString: string): SafeParseResult<Contact, SDKValidationError>;
/** @internal */
export type ContactInput$Outbound = {
    name?: string | null | undefined;
    owner_id?: string | null | undefined;
    type?: string | null | undefined;
    company_id?: string | null | undefined;
    company_name?: string | null | undefined;
    lead_id?: string | null | undefined;
    first_name?: string | null | undefined;
    middle_name?: string | null | undefined;
    last_name?: string | null | undefined;
    prefix?: string | null | undefined;
    suffix?: string | null | undefined;
    title?: string | null | undefined;
    department?: string | null | undefined;
    language?: string | null | undefined;
    gender?: string | null | undefined;
    birthday?: string | null | undefined;
    image?: string | null | undefined;
    photo_url?: string | null | undefined;
    lead_source?: string | null | undefined;
    fax?: string | null | undefined;
    description?: string | null | undefined;
    current_balance?: number | null | undefined;
    status?: string | null | undefined;
    active?: boolean | null | undefined;
    websites?: Array<Website$Outbound> | undefined;
    addresses?: Array<Address$Outbound> | undefined;
    social_links?: Array<SocialLink$Outbound> | undefined;
    phone_numbers?: Array<PhoneNumber$Outbound> | undefined;
    emails?: Array<Email$Outbound> | undefined;
    email_domain?: string | null | undefined;
    custom_fields?: Array<CustomField$Outbound> | null | undefined;
    tags?: Array<string> | null | undefined;
    opportunity_ids?: Array<string> | undefined;
    pass_through?: Array<PassThroughBody$Outbound> | undefined;
};
/** @internal */
export declare const ContactInput$outboundSchema: z.ZodType<ContactInput$Outbound, z.ZodTypeDef, ContactInput>;
export declare function contactInputToJSON(contactInput: ContactInput): string;
//# sourceMappingURL=contact.d.ts.map