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 FilesClient {
    type Options = BaseClientOptions;
    interface RequestOptions extends BaseRequestOptions {
    }
}
export declare class FilesClient {
    protected readonly _options: NormalizedClientOptionsWithAuth<FilesClient.Options>;
    constructor(options: FilesClient.Options);
    /**
     * Retrieve a paginated list of CRM files with optional filtering by entity type, entity IDs, and date range. Results are sorted by creation date in descending order by default, with a default limit of 50 files per page.
     *
     * @param {Brevo.GetCrmFilesRequest} request
     * @param {FilesClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Brevo.BadRequestError}
     * @throws {@link errors.BrevoError}
     * @throws {@link errors.BrevoTimeoutError}
     *
     * @example
     *     await client.files.getAllFiles()
     */
    getAllFiles(request?: Brevo.GetCrmFilesRequest, requestOptions?: FilesClient.RequestOptions): core.HttpResponsePromise<Brevo.FileData[]>;
    private __getAllFiles;
    /**
     * Upload a file and associate it with a contact, company, or deal. The file must be sent as multipart form data with a maximum size of 10 MB. You can optionally link the file to a specific entity by providing the corresponding entity ID.
     *
     * @param {Brevo.PostCrmFilesRequest} request
     * @param {FilesClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Brevo.BadRequestError}
     * @throws {@link errors.BrevoError}
     * @throws {@link errors.BrevoTimeoutError}
     *
     * @example
     *     import { createReadStream } from "fs";
     *     await client.files.uploadAFile({
     *         file: fs.createReadStream("/path/to/your/file")
     *     })
     */
    uploadAFile(request: Brevo.PostCrmFilesRequest, requestOptions?: FilesClient.RequestOptions): core.HttpResponsePromise<Brevo.FileData>;
    private __uploadAFile;
    /**
     * Get a temporary download URL for a CRM file by its identifier. The returned URL is valid for 5 minutes only and provides direct access to the file content.
     *
     * @param {Brevo.GetCrmFilesIdRequest} request
     * @param {FilesClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Brevo.BadRequestError}
     * @throws {@link Brevo.NotFoundError}
     * @throws {@link errors.BrevoError}
     * @throws {@link errors.BrevoTimeoutError}
     *
     * @example
     *     await client.files.downloadAFile({
     *         id: "id"
     *     })
     */
    downloadAFile(request: Brevo.GetCrmFilesIdRequest, requestOptions?: FilesClient.RequestOptions): core.HttpResponsePromise<Brevo.GetCrmFilesIdResponse>;
    private __downloadAFile;
    /**
     * Permanently delete a CRM file by its identifier. This removes the file from storage and unlinks it from any associated contacts, companies, or deals.
     *
     * @param {Brevo.DeleteCrmFilesIdRequest} request
     * @param {FilesClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Brevo.BadRequestError}
     * @throws {@link Brevo.NotFoundError}
     * @throws {@link errors.BrevoError}
     * @throws {@link errors.BrevoTimeoutError}
     *
     * @example
     *     await client.files.deleteAFile({
     *         id: "id"
     *     })
     */
    deleteAFile(request: Brevo.DeleteCrmFilesIdRequest, requestOptions?: FilesClient.RequestOptions): core.HttpResponsePromise<void>;
    private __deleteAFile;
    /**
     * Retrieve the metadata and details of a specific CRM file by its identifier. This returns information such as the file name, size, type, creation date, and associated entities, but does not include the file content itself.
     *
     * @param {Brevo.GetCrmFilesIdDataRequest} request
     * @param {FilesClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Brevo.BadRequestError}
     * @throws {@link Brevo.NotFoundError}
     * @throws {@link errors.BrevoError}
     * @throws {@link errors.BrevoTimeoutError}
     *
     * @example
     *     await client.files.getFileDetails({
     *         id: "id"
     *     })
     */
    getFileDetails(request: Brevo.GetCrmFilesIdDataRequest, requestOptions?: FilesClient.RequestOptions): core.HttpResponsePromise<Brevo.FileData>;
    private __getFileDetails;
}
