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 DealsClient {
    type Options = BaseClientOptions;
    interface RequestOptions extends BaseRequestOptions {
    }
}
export declare class DealsClient {
    protected readonly _options: NormalizedClientOptionsWithAuth<DealsClient.Options>;
    constructor(options: DealsClient.Options);
    /**
     * Retrieve the list of all attributes defined for deals, including both system-default and custom attributes. Each attribute includes its label, internal name, type, required status, and available options for select-type attributes.
     *
     * @param {DealsClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Brevo.BadRequestError}
     * @throws {@link errors.BrevoError}
     * @throws {@link errors.BrevoTimeoutError}
     *
     * @example
     *     await client.deals.getDealAttributes()
     */
    getDealAttributes(requestOptions?: DealsClient.RequestOptions): core.HttpResponsePromise<Brevo.GetCrmAttributesDealsResponseItem[]>;
    private __getDealAttributes;
    /**
     * Retrieve a paginated list of deals with optional filtering, sorting, and search capabilities. Results can be filtered by attributes such as deal name or owner, linked companies, linked contacts, or modification/creation timestamps. Default sort order is descending by creation date.
     *
     * @param {Brevo.GetCrmDealsRequest} request
     * @param {DealsClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Brevo.BadRequestError}
     * @throws {@link errors.BrevoError}
     * @throws {@link errors.BrevoTimeoutError}
     *
     * @example
     *     await client.deals.getAllDeals()
     */
    getAllDeals(request?: Brevo.GetCrmDealsRequest, requestOptions?: DealsClient.RequestOptions): core.HttpResponsePromise<Brevo.GetCrmDealsResponse>;
    private __getAllDeals;
    /**
     * Create a new deal in the CRM with the specified name, attributes, and optional associations to contacts and companies. You can assign the deal to a specific pipeline and stage by providing `pipeline` and `deal_stage` attribute IDs, which can be retrieved from the pipeline details endpoint.
     *
     * @param {Brevo.PostCrmDealsRequest} request
     * @param {DealsClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Brevo.BadRequestError}
     * @throws {@link errors.BrevoError}
     * @throws {@link errors.BrevoTimeoutError}
     *
     * @example
     *     await client.deals.createADeal({
     *         name: "Deal: Connect with company"
     *     })
     */
    createADeal(request: Brevo.PostCrmDealsRequest, requestOptions?: DealsClient.RequestOptions): core.HttpResponsePromise<Brevo.PostCrmDealsResponse>;
    private __createADeal;
    /**
     * Import deals from a CSV file with mapping options.
     *
     * @param {Brevo.PostCrmDealsImportRequest} request
     * @param {DealsClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Brevo.BadRequestError}
     * @throws {@link errors.BrevoError}
     * @throws {@link errors.BrevoTimeoutError}
     *
     * @example
     *     import { createReadStream } from "fs";
     *     await client.deals.importDealsCreationAndUpdation({})
     */
    importDealsCreationAndUpdation(request: Brevo.PostCrmDealsImportRequest, requestOptions?: DealsClient.RequestOptions): core.HttpResponsePromise<Brevo.PostCrmDealsImportResponse>;
    private __importDealsCreationAndUpdation;
    /**
     * Link or unlink contacts and companies with a specific deal in a single request. You can simultaneously link new contacts/companies and unlink existing ones by providing the respective ID arrays in the request body.
     *
     * @param {Brevo.PatchCrmDealsLinkUnlinkIdRequest} request
     * @param {DealsClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Brevo.BadRequestError}
     * @throws {@link errors.BrevoError}
     * @throws {@link errors.BrevoTimeoutError}
     *
     * @example
     *     await client.deals.linkAndUnlinkADealWithContactsAndCompanies({
     *         id: "id"
     *     })
     */
    linkAndUnlinkADealWithContactsAndCompanies(request: Brevo.PatchCrmDealsLinkUnlinkIdRequest, requestOptions?: DealsClient.RequestOptions): core.HttpResponsePromise<void>;
    private __linkAndUnlinkADealWithContactsAndCompanies;
    /**
     * Retrieve the full details of a single deal by its identifier, including its attributes, pipeline stage, linked contacts, and linked companies. Returns a 404 error if the deal does not exist.
     *
     * @param {Brevo.GetCrmDealsIdRequest} request
     * @param {DealsClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Brevo.BadRequestError}
     * @throws {@link Brevo.NotFoundError}
     * @throws {@link errors.BrevoError}
     * @throws {@link errors.BrevoTimeoutError}
     *
     * @example
     *     await client.deals.getADeal({
     *         id: "id"
     *     })
     */
    getADeal(request: Brevo.GetCrmDealsIdRequest, requestOptions?: DealsClient.RequestOptions): core.HttpResponsePromise<Brevo.Deal>;
    private __getADeal;
    /**
     * Permanently delete a deal by its identifier. The requesting user must be the deal owner or have manage permission on deals; otherwise, a 403 Forbidden error is returned.
     *
     * @param {Brevo.DeleteCrmDealsIdRequest} request
     * @param {DealsClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Brevo.BadRequestError}
     * @throws {@link Brevo.NotFoundError}
     * @throws {@link errors.BrevoError}
     * @throws {@link errors.BrevoTimeoutError}
     *
     * @example
     *     await client.deals.deleteADeal({
     *         id: "id"
     *     })
     */
    deleteADeal(request: Brevo.DeleteCrmDealsIdRequest, requestOptions?: DealsClient.RequestOptions): core.HttpResponsePromise<void>;
    private __deleteADeal;
    /**
     * Update an existing deal''s attributes, name, linked contacts, or linked companies. Note that passing `linkedContactsIds` or `linkedCompaniesIds` replaces the entire list of associations, so omitted IDs will be removed. To move a deal to a different pipeline or stage, provide both the `pipeline` and `deal_stage` attribute IDs.
     *
     * @param {Brevo.PatchCrmDealsIdRequest} request
     * @param {DealsClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Brevo.BadRequestError}
     * @throws {@link Brevo.NotFoundError}
     * @throws {@link errors.BrevoError}
     * @throws {@link errors.BrevoTimeoutError}
     *
     * @example
     *     await client.deals.updateADeal({
     *         id: "id"
     *     })
     */
    updateADeal(request: Brevo.PatchCrmDealsIdRequest, requestOptions?: DealsClient.RequestOptions): core.HttpResponsePromise<void>;
    private __updateADeal;
    /**
     * @deprecated
     *
     * This endpoint is deprecated. Prefer /crm/pipeline/details/{pipelineID} instead.
     *
     * @param {DealsClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Brevo.BadRequestError}
     * @throws {@link errors.BrevoError}
     * @throws {@link errors.BrevoTimeoutError}
     *
     * @example
     *     await client.deals.getPipelineStages()
     */
    getPipelineStages(requestOptions?: DealsClient.RequestOptions): core.HttpResponsePromise<Brevo.Pipeline>;
    private __getPipelineStages;
    /**
     * Retrieve the list of all deal pipelines configured for your account, including each pipeline''s stages and settings. If no pipelines have been configured yet, a default pipeline is automatically created and returned.
     *
     * @param {DealsClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Brevo.BadRequestError}
     * @throws {@link errors.BrevoError}
     * @throws {@link errors.BrevoTimeoutError}
     *
     * @example
     *     await client.deals.getAllPipelines()
     */
    getAllPipelines(requestOptions?: DealsClient.RequestOptions): core.HttpResponsePromise<Brevo.Pipelines>;
    private __getAllPipelines;
    /**
     * Retrieve the details of a specific deal pipeline by its identifier, including its stages, stage ordering, and configuration. Use this endpoint to obtain the pipeline and stage IDs needed when creating or updating deals.
     *
     * @param {Brevo.GetCrmPipelineDetailsPipelineIdRequest} request
     * @param {DealsClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Brevo.BadRequestError}
     * @throws {@link errors.BrevoError}
     * @throws {@link errors.BrevoTimeoutError}
     *
     * @example
     *     await client.deals.getAPipeline({
     *         pipelineID: "pipelineID"
     *     })
     */
    getAPipeline(request: Brevo.GetCrmPipelineDetailsPipelineIdRequest, requestOptions?: DealsClient.RequestOptions): core.HttpResponsePromise<Brevo.Pipelines>;
    private __getAPipeline;
}
