import type { BaseClientOptions, BaseRequestOptions } from "../../../../BaseClient.js";
import { type NormalizedClientOptionsWithAuth } from "../../../../BaseClient.js";
import * as core from "../../../../core/index.js";
import * as Brevo from "../../../index.js";
export declare namespace CustomObjectsClient {
    type Options = BaseClientOptions;
    interface RequestOptions extends BaseRequestOptions {
    }
}
export declare class CustomObjectsClient {
    protected readonly _options: NormalizedClientOptionsWithAuth<CustomObjectsClient.Options>;
    constructor(options: CustomObjectsClient.Options);
    /**
     * <Note title="Enterprise access only">Custom objects are only available to Enterprise plans.
     * This feature is in beta. These are subject to change.</Note>
     * This API allows bulk upsert of object records in a single request. Each object record may include
     *   - Attributes
     *   - Identifiers
     *   - Associations
     * **Response:**
     *   The API processes the request asynchronously and returns a processId that you can use to track the background process status.
     * **API and Schema Limitation:**
     *   - Size:
     *       - Max 1000 objects records per request
     *       - Max request body size: 1 MB
     *   - Max 500 attributes defined per object record upsert request
     *     - This is coherent with schema limitation: an object cannot have more than 500 attributes.
     *     - Worth noting: Nothing happens If an attribute is mentioned in the request, but was not previously defined for the object schema (no error, no attribute creation)
     *   - Max 10 associations defined per associated object type, in each record of the request
     *     - This is not a schema limitation. You can associate an object record to an unlimited number of other object records by running multiple requests.
     * **Errors:**
     *     - Make sure both object records exist before associating them, else the API will return an error.
     *     - This route does not create objects. The object where the object records are upserted by this API must be created already else the API will return an error "invalid object type".
     *
     * @param {Brevo.UpsertrecordsRequest} request
     * @param {CustomObjectsClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Brevo.BadRequestError}
     * @throws {@link Brevo.ForbiddenError}
     * @throws {@link Brevo.NotFoundError}
     * @throws {@link Brevo.InternalServerError}
     *
     * @example
     *     await client.customObjects.upsertrecords({
     *         object_type: "vehicle",
     *         records: [{}]
     *     })
     */
    upsertrecords(request: Brevo.UpsertrecordsRequest, requestOptions?: CustomObjectsClient.RequestOptions): core.HttpResponsePromise<Brevo.UpsertrecordsResponse>;
    private __upsertrecords;
    /**
     * <Note title="Enterprise access only">Custom objects are only available to Enterprise plans.
     * This feature is in beta. These are subject to change.</Note>
     * This API retrieves a list of object records along with their associated records and provides the total count of records for the specified object. **Note**: Contact as object type is not supported in this endpoint.
     *
     * @param {Brevo.GetrecordsRequest} request
     * @param {CustomObjectsClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Brevo.BadRequestError}
     * @throws {@link Brevo.ForbiddenError}
     * @throws {@link Brevo.FailedDependencyError}
     * @throws {@link Brevo.InternalServerError}
     *
     * @example
     *     await client.customObjects.getrecords({
     *         object_type: "vehicle",
     *         limit: 1000000,
     *         page_num: 1000000
     *     })
     */
    getrecords(request: Brevo.GetrecordsRequest, requestOptions?: CustomObjectsClient.RequestOptions): core.HttpResponsePromise<Brevo.GetrecordsResponse>;
    private __getrecords;
    /**
     * Use this endpoint to delete multiple object records of the same object-type in one request.
     * The request is accepted and processed asynchronously.   You can track the status of the deletion process using the returned **processId**.
     * **API and Schema Limitations:** - Each request can contain up to **1000** object record identifiers   - If more records must be deleted → send multiple batch requests
     *
     * @param {Brevo.BatchDeleteObjectRecordsRequest} request
     * @param {CustomObjectsClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Brevo.BadRequestError}
     * @throws {@link Brevo.ForbiddenError}
     * @throws {@link Brevo.NotFoundError}
     * @throws {@link Brevo.InternalServerError}
     *
     * @example
     *     await client.customObjects.batchDeleteObjectRecords({
     *         object_type: "vehicle",
     *         identifiers: {
     *             ext_ids: ["ext-001", "ext-002"]
     *         }
     *     })
     */
    batchDeleteObjectRecords(request: Brevo.BatchDeleteObjectRecordsRequest, requestOptions?: CustomObjectsClient.RequestOptions): core.HttpResponsePromise<Brevo.BatchDeleteObjectRecordsResponse>;
    private __batchDeleteObjectRecords;
}
