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 TasksClient {
    type Options = BaseClientOptions;
    interface RequestOptions extends BaseRequestOptions {
    }
}
export declare class TasksClient {
    protected readonly _options: NormalizedClientOptionsWithAuth<TasksClient.Options>;
    constructor(options: TasksClient.Options);
    /**
     * Retrieve a paginated list of CRM tasks with optional filtering by task type, status, date range, assignee, and linked entities (contacts, deals, companies). Results are sorted by creation date in descending order by default, with a default limit of 50 tasks per page.
     *
     * @param {Brevo.GetCrmTasksRequest} request
     * @param {TasksClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Brevo.BadRequestError}
     * @throws {@link errors.BrevoError}
     * @throws {@link errors.BrevoTimeoutError}
     *
     * @example
     *     await client.tasks.getAllTasks({
     *         sortBy: "name"
     *     })
     */
    getAllTasks(request?: Brevo.GetCrmTasksRequest, requestOptions?: TasksClient.RequestOptions): core.HttpResponsePromise<Brevo.GetCrmTasksResponse>;
    private __getAllTasks;
    /**
     * Create a new CRM task with the specified name, type, due date, and optional associations to contacts, companies, or deals. A task requires a name, task type ID, and due date at minimum. You can also set a duration, notes, a reminder, and assign the task to a specific user.
     *
     * @param {Brevo.PostCrmTasksRequest} request
     * @param {TasksClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Brevo.BadRequestError}
     * @throws {@link errors.BrevoError}
     * @throws {@link errors.BrevoTimeoutError}
     *
     * @example
     *     await client.tasks.createATask({
     *         date: "2021-11-01T17:44:54Z",
     *         name: "Task: Connect with client",
     *         taskTypeId: "61a5cd07ca1347c82306ad09"
     *     })
     */
    createATask(request: Brevo.PostCrmTasksRequest, requestOptions?: TasksClient.RequestOptions): core.HttpResponsePromise<Brevo.PostCrmTasksResponse>;
    private __createATask;
    /**
     * Retrieve the full details of a single CRM task by its identifier. The response includes the task''s name, type, status, due date, duration, notes, assignee, reminder settings, and linked contacts, companies, or deals.
     *
     * @param {Brevo.GetCrmTasksIdRequest} request
     * @param {TasksClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Brevo.BadRequestError}
     * @throws {@link Brevo.NotFoundError}
     * @throws {@link errors.BrevoError}
     * @throws {@link errors.BrevoTimeoutError}
     *
     * @example
     *     await client.tasks.getATask({
     *         id: "id"
     *     })
     */
    getATask(request: Brevo.GetCrmTasksIdRequest, requestOptions?: TasksClient.RequestOptions): core.HttpResponsePromise<Brevo.Task>;
    private __getATask;
    /**
     * Permanently delete a CRM task by its identifier. This removes the task and cancels any associated reminders. The requesting user must be the task assignee or have manage permission on tasks.
     *
     * @param {Brevo.DeleteCrmTasksIdRequest} request
     * @param {TasksClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Brevo.BadRequestError}
     * @throws {@link Brevo.NotFoundError}
     * @throws {@link errors.BrevoError}
     * @throws {@link errors.BrevoTimeoutError}
     *
     * @example
     *     await client.tasks.deleteATask({
     *         id: "id"
     *     })
     */
    deleteATask(request: Brevo.DeleteCrmTasksIdRequest, requestOptions?: TasksClient.RequestOptions): core.HttpResponsePromise<void>;
    private __deleteATask;
    /**
     * Update an existing CRM task''s properties such as name, type, due date, status, duration, notes, assignee, reminder, or linked entities. Only the fields provided in the request body will be updated; omitted fields remain unchanged.
     *
     * @param {Brevo.PatchCrmTasksIdRequest} request
     * @param {TasksClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Brevo.BadRequestError}
     * @throws {@link Brevo.NotFoundError}
     * @throws {@link errors.BrevoError}
     * @throws {@link errors.BrevoTimeoutError}
     *
     * @example
     *     await client.tasks.updateATask({
     *         id: "id"
     *     })
     */
    updateATask(request: Brevo.PatchCrmTasksIdRequest, requestOptions?: TasksClient.RequestOptions): core.HttpResponsePromise<void>;
    private __updateATask;
    /**
     * Retrieve the list of all available task types, such as Email, Call, Meeting, Todo, Lunch, Deadline, and LinkedIn. If no task types exist yet, the default set is automatically created and returned. Use the task type ID when creating or updating tasks.
     *
     * @param {TasksClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Brevo.BadRequestError}
     * @throws {@link errors.BrevoError}
     * @throws {@link errors.BrevoTimeoutError}
     *
     * @example
     *     await client.tasks.getAllTaskTypes()
     */
    getAllTaskTypes(requestOptions?: TasksClient.RequestOptions): core.HttpResponsePromise<Brevo.GetCrmTasktypesResponseItem[]>;
    private __getAllTaskTypes;
}
