import type { BaseClientOptions, BaseRequestOptions } from "../../../../../../BaseClient";
import { type NormalizedClientOptionsWithAuth } from "../../../../../../BaseClient";
import * as core from "../../../../../../core";
import type * as Merge from "../../../../../index";
export declare namespace ContactsClient {
    type Options = BaseClientOptions;
    interface RequestOptions extends BaseRequestOptions {
    }
}
export declare class ContactsClient {
    protected readonly _options: NormalizedClientOptionsWithAuth<ContactsClient.Options>;
    constructor(options: ContactsClient.Options);
    /**
     * Returns a list of `Contact` objects.
     *
     * @param {Merge.crm.ContactsListRequest} request
     * @param {ContactsClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @example
     *     await client.crm.contacts.list({
     *         accountId: "account_id",
     *         createdAfter: new Date("2024-01-15T09:30:00.000Z"),
     *         createdBefore: new Date("2024-01-15T09:30:00.000Z"),
     *         cursor: "cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw",
     *         emailAddresses: "email_addresses",
     *         includeDeletedData: true,
     *         includeRemoteData: true,
     *         includeRemoteFields: true,
     *         includeShellData: true,
     *         modifiedAfter: new Date("2024-01-15T09:30:00.000Z"),
     *         modifiedBefore: new Date("2024-01-15T09:30:00.000Z"),
     *         pageSize: 1,
     *         phoneNumbers: "phone_numbers",
     *         remoteId: "remote_id"
     *     })
     */
    list(request?: Merge.crm.ContactsListRequest, requestOptions?: ContactsClient.RequestOptions): Promise<core.Page<Merge.crm.Contact, Merge.crm.PaginatedContactList>>;
    /**
     * Creates a `Contact` object with the given values.
     *
     * @param {Merge.crm.CrmContactEndpointRequest} request
     * @param {ContactsClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @example
     *     await client.crm.contacts.create({
     *         isDebugMode: true,
     *         runAsync: true,
     *         model: {}
     *     })
     */
    create(request: Merge.crm.CrmContactEndpointRequest, requestOptions?: ContactsClient.RequestOptions): core.HttpResponsePromise<Merge.crm.CrmContactResponse>;
    private __create;
    /**
     * Returns a `Contact` object with the given `id`.
     *
     * @param {string} id
     * @param {Merge.crm.ContactsRetrieveRequest} request
     * @param {ContactsClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @example
     *     await client.crm.contacts.retrieve("id", {
     *         includeRemoteData: true,
     *         includeRemoteFields: true,
     *         includeShellData: true
     *     })
     */
    retrieve(id: string, request?: Merge.crm.ContactsRetrieveRequest, requestOptions?: ContactsClient.RequestOptions): core.HttpResponsePromise<Merge.crm.Contact>;
    private __retrieve;
    /**
     * Updates a `Contact` object with the given `id`.
     *
     * @param {string} id
     * @param {Merge.crm.PatchedCrmContactEndpointRequest} request
     * @param {ContactsClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @example
     *     await client.crm.contacts.partialUpdate("id", {
     *         isDebugMode: true,
     *         runAsync: true,
     *         model: {}
     *     })
     */
    partialUpdate(id: string, request: Merge.crm.PatchedCrmContactEndpointRequest, requestOptions?: ContactsClient.RequestOptions): core.HttpResponsePromise<Merge.crm.CrmContactResponse>;
    private __partialUpdate;
    /**
     * Ignores a specific row based on the `model_id` in the url. These records will have their properties set to null, and will not be updated in future syncs. The "reason" and "message" fields in the request body will be stored for audit purposes.
     *
     * @param {string} model_id
     * @param {Merge.crm.IgnoreCommonModelRequest} request
     * @param {ContactsClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @example
     *     await client.crm.contacts.ignoreCreate("model_id", {
     *         reason: "GENERAL_CUSTOMER_REQUEST"
     *     })
     */
    ignoreCreate(model_id: string, request: Merge.crm.IgnoreCommonModelRequest, requestOptions?: ContactsClient.RequestOptions): core.HttpResponsePromise<void>;
    private __ignoreCreate;
    /**
     * Returns metadata for `CRMContact` PATCHs.
     *
     * @param {string} id
     * @param {ContactsClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @example
     *     await client.crm.contacts.metaPatchRetrieve("id")
     */
    metaPatchRetrieve(id: string, requestOptions?: ContactsClient.RequestOptions): core.HttpResponsePromise<Merge.crm.MetaResponse>;
    private __metaPatchRetrieve;
    /**
     * Returns metadata for `CRMContact` POSTs.
     *
     * @param {ContactsClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @example
     *     await client.crm.contacts.metaPostRetrieve()
     */
    metaPostRetrieve(requestOptions?: ContactsClient.RequestOptions): core.HttpResponsePromise<Merge.crm.MetaResponse>;
    private __metaPostRetrieve;
    /**
     * Returns a list of `RemoteFieldClass` objects.
     *
     * @param {Merge.crm.ContactsRemoteFieldClassesListRequest} request
     * @param {ContactsClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @example
     *     await client.crm.contacts.remoteFieldClassesList({
     *         cursor: "cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw",
     *         includeDeletedData: true,
     *         includeRemoteData: true,
     *         includeRemoteFields: true,
     *         includeShellData: true,
     *         isCommonModelField: true,
     *         isCustom: true,
     *         pageSize: 1
     *     })
     */
    remoteFieldClassesList(request?: Merge.crm.ContactsRemoteFieldClassesListRequest, requestOptions?: ContactsClient.RequestOptions): Promise<core.Page<Merge.crm.RemoteFieldClass, Merge.crm.PaginatedRemoteFieldClassList>>;
}
