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 CompaniesClient {
    type Options = BaseClientOptions;
    interface RequestOptions extends BaseRequestOptions {
    }
}
export declare class CompaniesClient {
    protected readonly _options: NormalizedClientOptionsWithAuth<CompaniesClient.Options>;
    constructor(options: CompaniesClient.Options);
    /**
     * Retrieve a paginated list of companies with optional filtering, sorting, and search capabilities. Results are sorted by creation date in descending order by default, and can be filtered by attributes, linked contacts, linked deals, or modification/creation timestamps.
     *
     * @param {Brevo.GetCompaniesRequest} request
     * @param {CompaniesClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Brevo.BadRequestError}
     * @throws {@link errors.BrevoError}
     * @throws {@link errors.BrevoTimeoutError}
     *
     * @example
     *     await client.companies.getAllCompanies()
     */
    getAllCompanies(request?: Brevo.GetCompaniesRequest, requestOptions?: CompaniesClient.RequestOptions): core.HttpResponsePromise<Brevo.GetCompaniesResponse>;
    private __getAllCompanies;
    /**
     * Create a new CRM company with the specified name, attributes, and optional associations to contacts and deals. The company name is required, and you can optionally provide a country code when a phone number attribute is included.
     *
     * @param {Brevo.PostCompaniesRequest} request
     * @param {CompaniesClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Brevo.BadRequestError}
     * @throws {@link errors.BrevoError}
     * @throws {@link errors.BrevoTimeoutError}
     *
     * @example
     *     await client.companies.createACompany({
     *         name: "company"
     *     })
     */
    createACompany(request: Brevo.PostCompaniesRequest, requestOptions?: CompaniesClient.RequestOptions): core.HttpResponsePromise<Brevo.PostCompaniesResponse>;
    private __createACompany;
    /**
     * Import companies from a CSV file with mapping options.
     *
     * @param {Brevo.PostCompaniesImportRequest} request
     * @param {CompaniesClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Brevo.BadRequestError}
     * @throws {@link errors.BrevoError}
     * @throws {@link errors.BrevoTimeoutError}
     *
     * @example
     *     import { createReadStream } from "fs";
     *     await client.companies.importCompaniesCreationAndUpdation({})
     */
    importCompaniesCreationAndUpdation(request: Brevo.PostCompaniesImportRequest, requestOptions?: CompaniesClient.RequestOptions): core.HttpResponsePromise<Brevo.PostCompaniesImportResponse>;
    private __importCompaniesCreationAndUpdation;
    /**
     * Link or unlink contacts and deals with a specific company in a single request. You can simultaneously link new contacts/deals and unlink existing ones by providing the respective ID arrays in the request body.
     *
     * @param {Brevo.PatchCompaniesLinkUnlinkIdRequest} request
     * @param {CompaniesClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Brevo.BadRequestError}
     * @throws {@link errors.BrevoError}
     * @throws {@link errors.BrevoTimeoutError}
     *
     * @example
     *     await client.companies.linkAndUnlinkCompanyWithContactAndDeal({
     *         id: "id"
     *     })
     */
    linkAndUnlinkCompanyWithContactAndDeal(request: Brevo.PatchCompaniesLinkUnlinkIdRequest, requestOptions?: CompaniesClient.RequestOptions): core.HttpResponsePromise<void>;
    private __linkAndUnlinkCompanyWithContactAndDeal;
    /**
     * Retrieve the full details of a single company by its identifier, including its attributes, linked contacts, and linked deals. Returns a 404 error if the company does not exist, or a 403 error if the user lacks permission to view the company.
     *
     * @param {Brevo.GetCompaniesIdRequest} request
     * @param {CompaniesClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Brevo.BadRequestError}
     * @throws {@link Brevo.NotFoundError}
     * @throws {@link errors.BrevoError}
     * @throws {@link errors.BrevoTimeoutError}
     *
     * @example
     *     await client.companies.getACompany({
     *         id: "id"
     *     })
     */
    getACompany(request: Brevo.GetCompaniesIdRequest, requestOptions?: CompaniesClient.RequestOptions): core.HttpResponsePromise<Brevo.Company>;
    private __getACompany;
    /**
     * Permanently delete a company by its identifier. The requesting user must be the company owner or have manage permission on companies; otherwise, a 403 Forbidden error is returned.
     *
     * @param {Brevo.DeleteCompaniesIdRequest} request
     * @param {CompaniesClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Brevo.BadRequestError}
     * @throws {@link Brevo.NotFoundError}
     * @throws {@link errors.BrevoError}
     * @throws {@link errors.BrevoTimeoutError}
     *
     * @example
     *     await client.companies.deleteACompany({
     *         id: "id"
     *     })
     */
    deleteACompany(request: Brevo.DeleteCompaniesIdRequest, requestOptions?: CompaniesClient.RequestOptions): core.HttpResponsePromise<void>;
    private __deleteACompany;
    /**
     * Update an existing company''s attributes, name, linked contacts, or linked deals. Note that passing `linkedContactsIds` or `linkedDealsIds` replaces the entire list of associations, so omitted IDs will be removed. The company name cannot be set to an empty string.
     *
     * @param {Brevo.PatchCompaniesIdRequest} request
     * @param {CompaniesClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Brevo.BadRequestError}
     * @throws {@link Brevo.NotFoundError}
     * @throws {@link errors.BrevoError}
     * @throws {@link errors.BrevoTimeoutError}
     *
     * @example
     *     await client.companies.updateACompany({
     *         id: "id"
     *     })
     */
    updateACompany(request: Brevo.PatchCompaniesIdRequest, requestOptions?: CompaniesClient.RequestOptions): core.HttpResponsePromise<Brevo.Company>;
    private __updateACompany;
    /**
     * Create a new custom attribute for companies or deals. The attribute label must be unique within the object type, cannot exceed 50 characters, and cannot use reserved names. For `single-select` or `multi-choice` attribute types, you must also provide the `optionsLabels` array.
     *
     * @param {Brevo.PostCrmAttributesRequest} request
     * @param {CompaniesClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Brevo.BadRequestError}
     * @throws {@link errors.BrevoError}
     * @throws {@link errors.BrevoTimeoutError}
     *
     * @example
     *     await client.companies.createACompanyDealAttribute({
     *         attributeType: "text",
     *         label: "Attribute Label",
     *         objectType: "companies"
     *     })
     */
    createACompanyDealAttribute(request: Brevo.PostCrmAttributesRequest, requestOptions?: CompaniesClient.RequestOptions): core.HttpResponsePromise<Brevo.PostCrmAttributesResponse>;
    private __createACompanyDealAttribute;
    /**
     * Delete an existing custom attribute by its identifier. This permanently removes the attribute definition and cleans up all references to it across companies or deals. System-default and non-editable attributes cannot be deleted.
     *
     * @param {Brevo.DeleteCrmAttributesIdRequest} request
     * @param {CompaniesClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Brevo.BadRequestError}
     * @throws {@link Brevo.NotFoundError}
     * @throws {@link errors.BrevoError}
     * @throws {@link errors.BrevoTimeoutError}
     *
     * @example
     *     await client.companies.deleteAnAttribute({
     *         id: "id"
     *     })
     */
    deleteAnAttribute(request: Brevo.DeleteCrmAttributesIdRequest, requestOptions?: CompaniesClient.RequestOptions): core.HttpResponsePromise<void>;
    private __deleteAnAttribute;
    /**
     * Update an existing custom attribute''s label or options. You can rename the attribute label or modify the available options for `single-select` and `multi-choice` attribute types. System-default attributes cannot be modified except for specific editable fields.
     *
     * @param {Brevo.PatchCrmAttributesIdRequest} request
     * @param {CompaniesClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Brevo.BadRequestError}
     * @throws {@link Brevo.NotFoundError}
     * @throws {@link errors.BrevoError}
     * @throws {@link errors.BrevoTimeoutError}
     *
     * @example
     *     await client.companies.updateAnAttribute({
     *         id: "id"
     *     })
     */
    updateAnAttribute(request: Brevo.PatchCrmAttributesIdRequest, requestOptions?: CompaniesClient.RequestOptions): core.HttpResponsePromise<void>;
    private __updateAnAttribute;
    /**
     * Retrieve the list of all attributes defined for companies, 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 {CompaniesClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Brevo.BadRequestError}
     * @throws {@link errors.BrevoError}
     * @throws {@link errors.BrevoTimeoutError}
     *
     * @example
     *     await client.companies.getCompanyAttributes()
     */
    getCompanyAttributes(requestOptions?: CompaniesClient.RequestOptions): core.HttpResponsePromise<Brevo.GetCrmAttributesCompaniesResponseItem[]>;
    private __getCompanyAttributes;
}
