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 EcommerceClient {
    type Options = BaseClientOptions;
    interface RequestOptions extends BaseRequestOptions {
    }
}
export declare class EcommerceClient {
    protected readonly _options: NormalizedClientOptionsWithAuth<EcommerceClient.Options>;
    constructor(options: EcommerceClient.Options);
    /**
     * Retrieve a paginated list of all ecommerce categories stored in your Brevo account. Results are sorted by creation date in descending order by default, and can be filtered by category IDs, name, modification date, creation date, or deletion status. The response includes a `count` field with the total number of matching categories, and pagination defaults to 50 categories per page (maximum 100).
     *
     * @param {Brevo.GetCategoriesRequest} request
     * @param {EcommerceClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Brevo.BadRequestError}
     * @throws {@link errors.BrevoError}
     * @throws {@link errors.BrevoTimeoutError}
     *
     * @example
     *     await client.ecommerce.getCategories()
     */
    getCategories(request?: Brevo.GetCategoriesRequest, requestOptions?: EcommerceClient.RequestOptions): core.HttpResponsePromise<Brevo.GetCategoriesResponse>;
    private __getCategories;
    /**
     * Create a new ecommerce category or update an existing one, identified by the mandatory `id` field. When `updateEnabled` is set to `false` (the default), the endpoint performs an insert and returns `201`; if the category ID already exists, a `400` error is returned. When `updateEnabled` is `true`, the endpoint performs an upsert, returning `201` for a new category or `204` when an existing category is updated. The `name` field is mandatory for creation but optional for updates.
     *
     * @param {Brevo.CreateUpdateCategoryRequest} request
     * @param {EcommerceClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Brevo.BadRequestError}
     * @throws {@link errors.BrevoError}
     * @throws {@link errors.BrevoTimeoutError}
     *
     * @example
     *     await client.ecommerce.createUpdateCategory({
     *         id: "CAT123"
     *     })
     */
    createUpdateCategory(request: Brevo.CreateUpdateCategoryRequest, requestOptions?: EcommerceClient.RequestOptions): core.HttpResponsePromise<Brevo.CreateUpdateCategoryResponse | undefined>;
    private __createUpdateCategory;
    /**
     * Create or update multiple ecommerce categories in a single request. The `categories` array accepts up to 100 category objects, each requiring a unique `id`. When `updateEnabled` is `false` (the default), all categories are inserted as new; if any ID already exists, a `400` error is returned. When `updateEnabled` is `true`, existing categories are updated and new ones are created via upsert. Duplicate IDs within the same request payload are rejected. The response returns the count of created and updated categories.
     *
     * @param {Brevo.CreateUpdateBatchCategoryRequest} request
     * @param {EcommerceClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Brevo.BadRequestError}
     * @throws {@link errors.BrevoError}
     * @throws {@link errors.BrevoTimeoutError}
     *
     * @example
     *     await client.ecommerce.createUpdateBatchCategory({
     *         categories: [{
     *                 id: "CAT123"
     *             }]
     *     })
     */
    createUpdateBatchCategory(request: Brevo.CreateUpdateBatchCategoryRequest, requestOptions?: EcommerceClient.RequestOptions): core.HttpResponsePromise<Brevo.CreateUpdateBatchCategoryResponse>;
    private __createUpdateBatchCategory;
    /**
     * Retrieve the full details of a single ecommerce category by its unique ID. The response includes the category name, URL, creation and modification timestamps, and deletion status. Returns a `404` error if no category matches the provided ID.
     *
     * @param {Brevo.GetCategoryInfoRequest} request
     * @param {EcommerceClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Brevo.BadRequestError}
     * @throws {@link Brevo.NotFoundError}
     * @throws {@link errors.BrevoError}
     * @throws {@link errors.BrevoTimeoutError}
     *
     * @example
     *     await client.ecommerce.getCategoryInfo({
     *         id: "id"
     *     })
     */
    getCategoryInfo(request: Brevo.GetCategoryInfoRequest, requestOptions?: EcommerceClient.RequestOptions): core.HttpResponsePromise<Brevo.GetCategoryDetails>;
    private __getCategoryInfo;
    /**
     * Getting access to Brevo eCommerce.
     *
     * @param {EcommerceClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Brevo.UnauthorizedError}
     * @throws {@link Brevo.NotFoundError}
     * @throws {@link errors.BrevoError}
     * @throws {@link errors.BrevoTimeoutError}
     *
     * @example
     *     await client.ecommerce.activateTheECommerceApp()
     */
    activateTheECommerceApp(requestOptions?: EcommerceClient.RequestOptions): core.HttpResponsePromise<void>;
    private __activateTheECommerceApp;
    /**
     * Retrieve aggregated ecommerce attribution metrics for one or more Brevo email campaigns, SMS campaigns, or automation workflows. You can optionally filter by a date range using `periodFrom` and `periodTo` in RFC3339 format. The response includes per-source metrics (orders count, revenue, and average basket) as well as aggregated totals across all requested sources.
     *
     * @param {Brevo.GetEcommerceAttributionMetricsRequest} request
     * @param {EcommerceClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Brevo.BadRequestError}
     * @throws {@link errors.BrevoError}
     * @throws {@link errors.BrevoTimeoutError}
     *
     * @example
     *     await client.ecommerce.getAttributionMetricsForOneOrMoreBrevoCampaignsOrWorkflows({
     *         periodFrom: "2022-01-02T00:00:00Z",
     *         periodTo: "2022-01-03T00:00:00Z",
     *         "emailCampaignId[]": ["sale"]
     *     })
     */
    getAttributionMetricsForOneOrMoreBrevoCampaignsOrWorkflows(request?: Brevo.GetEcommerceAttributionMetricsRequest, requestOptions?: EcommerceClient.RequestOptions): core.HttpResponsePromise<Brevo.GetEcommerceAttributionMetricsResponse>;
    private __getAttributionMetricsForOneOrMoreBrevoCampaignsOrWorkflows;
    /**
     * Retrieve detailed attribution metrics for a single Brevo campaign or automation workflow, identified by its conversion source type and ID. The response includes orders count, revenue, average basket value, and the number of new customers attributed to that specific campaign or workflow.
     *
     * @param {Brevo.GetEcommerceAttributionMetricsConversionSourceConversionSourceIdRequest} request
     * @param {EcommerceClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Brevo.BadRequestError}
     * @throws {@link errors.BrevoError}
     * @throws {@link errors.BrevoTimeoutError}
     *
     * @example
     *     await client.ecommerce.getDetailedAttributionMetricsForASingleBrevoCampaignOrWorkflow({
     *         conversionSource: "email_campaign",
     *         conversionSourceId: "sale"
     *     })
     */
    getDetailedAttributionMetricsForASingleBrevoCampaignOrWorkflow(request: Brevo.GetEcommerceAttributionMetricsConversionSourceConversionSourceIdRequest, requestOptions?: EcommerceClient.RequestOptions): core.HttpResponsePromise<Brevo.GetEcommerceAttributionMetricsConversionSourceConversionSourceIdResponse>;
    private __getDetailedAttributionMetricsForASingleBrevoCampaignOrWorkflow;
    /**
     * Retrieve the list of products whose sales have been attributed to a specific Brevo campaign or automation workflow. Each product entry includes its ID, name, SKU, image URL, product URL, price, revenue, and orders count. The conversion source type must be one of `email_campaign`, `sms_campaign`, `automation_workflow_email`, or `automation_workflow_sms`.
     *
     * @param {Brevo.GetEcommerceAttributionProductsConversionSourceConversionSourceIdRequest} request
     * @param {EcommerceClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Brevo.BadRequestError}
     * @throws {@link errors.BrevoError}
     * @throws {@link errors.BrevoTimeoutError}
     *
     * @example
     *     await client.ecommerce.getAttributedProductSalesForASingleBrevoCampaignOrWorkflow({
     *         conversionSource: "email_campaign",
     *         conversionSourceId: "sale"
     *     })
     */
    getAttributedProductSalesForASingleBrevoCampaignOrWorkflow(request: Brevo.GetEcommerceAttributionProductsConversionSourceConversionSourceIdRequest, requestOptions?: EcommerceClient.RequestOptions): core.HttpResponsePromise<Brevo.GetEcommerceAttributionProductsConversionSourceConversionSourceIdResponse>;
    private __getAttributedProductSalesForASingleBrevoCampaignOrWorkflow;
    /**
     * Retrieve the ISO 4217 display currency code currently configured for your Brevo ecommerce account. This currency is used to display monetary values across the ecommerce dashboard and reports. Returns a `403` error if ecommerce is not activated on the account.
     *
     * @param {EcommerceClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Brevo.BadRequestError}
     * @throws {@link Brevo.UnauthorizedError}
     * @throws {@link Brevo.ForbiddenError}
     * @throws {@link errors.BrevoError}
     * @throws {@link errors.BrevoTimeoutError}
     *
     * @example
     *     await client.ecommerce.getTheIso4217CompliantDisplayCurrencyCodeForYourBrevoAccount()
     */
    getTheIso4217CompliantDisplayCurrencyCodeForYourBrevoAccount(requestOptions?: EcommerceClient.RequestOptions): core.HttpResponsePromise<Brevo.GetEcommerceConfigDisplayCurrencyResponse>;
    private __getTheIso4217CompliantDisplayCurrencyCodeForYourBrevoAccount;
    /**
     * Set or update the ISO 4217 display currency code for your Brevo ecommerce account. This currency determines how monetary values are displayed in the ecommerce dashboard and reports. The provided currency code must be a valid ISO 4217 code; invalid codes result in a `422` error. Returns a `403` error if ecommerce is not activated on the account.
     *
     * @param {Brevo.SetConfigDisplayCurrencyRequest} request
     * @param {EcommerceClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Brevo.BadRequestError}
     * @throws {@link Brevo.UnauthorizedError}
     * @throws {@link Brevo.ForbiddenError}
     * @throws {@link Brevo.UnprocessableEntityError}
     * @throws {@link errors.BrevoError}
     * @throws {@link errors.BrevoTimeoutError}
     *
     * @example
     *     await client.ecommerce.setConfigDisplayCurrency({
     *         code: "EUR"
     *     })
     */
    setConfigDisplayCurrency(request: Brevo.SetConfigDisplayCurrencyRequest, requestOptions?: EcommerceClient.RequestOptions): core.HttpResponsePromise<Brevo.SetConfigDisplayCurrencyResponse>;
    private __setConfigDisplayCurrency;
    /**
     * Get all the orders
     *
     * @param {Brevo.GetOrdersRequest} request
     * @param {EcommerceClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Brevo.BadRequestError}
     * @throws {@link errors.BrevoError}
     * @throws {@link errors.BrevoTimeoutError}
     *
     * @example
     *     await client.ecommerce.getOrders()
     */
    getOrders(request?: Brevo.GetOrdersRequest, requestOptions?: EcommerceClient.RequestOptions): core.HttpResponsePromise<unknown>;
    private __getOrders;
    /**
     * Manages the transactional status of the order
     *
     * @param {Brevo.Order} request
     * @param {EcommerceClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Brevo.BadRequestError}
     * @throws {@link errors.BrevoError}
     * @throws {@link errors.BrevoTimeoutError}
     *
     * @example
     *     await client.ecommerce.createOrder({
     *         amount: 308.42,
     *         createdAt: "2021-07-29T20:59:23.383Z",
     *         id: "14",
     *         products: [{
     *                 price: 99.99,
     *                 productId: "P1"
     *             }],
     *         status: "completed",
     *         updatedAt: "2021-07-30T10:59:23.383Z"
     *     })
     */
    createOrder(request: Brevo.Order, requestOptions?: EcommerceClient.RequestOptions): core.HttpResponsePromise<void>;
    private __createOrder;
    /**
     * Create multiple orders at one time instead of one order at a time
     *
     * @param {Brevo.CreateBatchOrderRequest} request
     * @param {EcommerceClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Brevo.BadRequestError}
     * @throws {@link errors.BrevoError}
     * @throws {@link errors.BrevoTimeoutError}
     *
     * @example
     *     await client.ecommerce.createBatchOrder({
     *         orders: [{
     *                 amount: 308.42,
     *                 createdAt: "2021-07-29T20:59:23.383Z",
     *                 id: "14",
     *                 products: [{
     *                         price: 99.99,
     *                         productId: "P1"
     *                     }],
     *                 status: "completed",
     *                 updatedAt: "2021-07-30T10:59:23.383Z"
     *             }]
     *     })
     */
    createBatchOrder(request: Brevo.CreateBatchOrderRequest, requestOptions?: EcommerceClient.RequestOptions): core.HttpResponsePromise<Brevo.CreateBatchOrderResponse>;
    private __createBatchOrder;
    /**
     * Retrieve a paginated list of all ecommerce products stored in your Brevo account. Results are sorted by creation date in descending order by default, and can be filtered by product IDs, name (minimum 3 characters), price range, category IDs, modification date, creation date, or deletion status. Use the `search` parameter to query across SKU, name, and ID simultaneously — results are prioritized as exact SKU match > SKU prefix match > name match > ID match. Pagination defaults to 50 products per page (maximum 1000), and the response includes a `count` field with the total number of matching products.
     *
     * @param {Brevo.GetProductsRequest} request
     * @param {EcommerceClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Brevo.BadRequestError}
     * @throws {@link errors.BrevoError}
     * @throws {@link errors.BrevoTimeoutError}
     *
     * @example
     *     await client.ecommerce.getProducts()
     */
    getProducts(request?: Brevo.GetProductsRequest, requestOptions?: EcommerceClient.RequestOptions): core.HttpResponsePromise<Brevo.GetProductsResponse>;
    private __getProducts;
    /**
     * Create a new ecommerce product or update an existing one, identified by the mandatory `id` field. When `updateEnabled` is `false` (the default), the endpoint inserts a new product and returns `201`; if the product ID already exists, a `400` error is returned. When `updateEnabled` is `true`, the endpoint performs an upsert, returning `201` for a new product or `204` for an update. The `name` field is mandatory for creation but optional for updates. Product images are downloaded, validated (max 5 MB, formats: jpeg, jpg, png, bmp, gif, webp), and re-hosted on S3. The `metaInfo` object supports up to 20 keys with a cumulative size limit of approximately 1000 KB.
     *
     * @param {Brevo.CreateUpdateProductRequest} request
     * @param {EcommerceClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Brevo.BadRequestError}
     * @throws {@link errors.BrevoError}
     * @throws {@link errors.BrevoTimeoutError}
     *
     * @example
     *     await client.ecommerce.createUpdateProduct({
     *         id: "P11",
     *         name: "Iphone 11"
     *     })
     */
    createUpdateProduct(request: Brevo.CreateUpdateProductRequest, requestOptions?: EcommerceClient.RequestOptions): core.HttpResponsePromise<Brevo.CreateUpdateProductResponse | undefined>;
    private __createUpdateProduct;
    /**
     * Create or update multiple ecommerce products in a single request. The `products` array accepts up to 100 product objects for creation (or up to 1000 when `updateEnabled` is `true` and the account has an increased limit). Each product requires a unique `id` and `name` (name is mandatory for creation only). When `updateEnabled` is `false`, all products are inserted as new; if any ID already exists, a `400` error is returned. When `updateEnabled` is `true`, existing products are updated and new ones are created via upsert. Duplicate IDs within the same request payload are rejected. The response returns the count of created and updated products.
     *
     * @param {Brevo.CreateUpdateBatchProductsRequest} request
     * @param {EcommerceClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Brevo.BadRequestError}
     * @throws {@link errors.BrevoError}
     * @throws {@link errors.BrevoTimeoutError}
     *
     * @example
     *     await client.ecommerce.createUpdateBatchProducts({
     *         products: [{
     *                 id: "P11",
     *                 name: "Iphone 11"
     *             }]
     *     })
     */
    createUpdateBatchProducts(request: Brevo.CreateUpdateBatchProductsRequest, requestOptions?: EcommerceClient.RequestOptions): core.HttpResponsePromise<Brevo.CreateUpdateBatchProductsResponse>;
    private __createUpdateBatchProducts;
    /**
     * Retrieve the full details of a single ecommerce product by its unique ID. The response includes the product name, price, SKU, URL, image URLs (original and thumbnails), categories, stock level, meta information, creation and modification timestamps, and deletion status. Returns a `404` error if no product matches the provided ID.
     *
     * @param {Brevo.GetProductInfoRequest} request
     * @param {EcommerceClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Brevo.BadRequestError}
     * @throws {@link Brevo.NotFoundError}
     * @throws {@link errors.BrevoError}
     * @throws {@link errors.BrevoTimeoutError}
     *
     * @example
     *     await client.ecommerce.getProductInfo({
     *         id: "id"
     *     })
     */
    getProductInfo(request: Brevo.GetProductInfoRequest, requestOptions?: EcommerceClient.RequestOptions): core.HttpResponsePromise<Brevo.GetProductDetails>;
    private __getProductInfo;
    /**
     * Register a contact to receive an alert for a specific product event, such as `back_in_stock`. At least one contact identifier (`ext_id`, `email`, or `sms`) must be provided; when multiple are given, priority is `ext_id` > `email` > `sms`. Returns a `404` error if the product ID does not exist, and a `403` error if product alerts are not enabled for the account.
     *
     * @param {Brevo.CreateProductAlertRequest} request
     * @param {EcommerceClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Brevo.BadRequestError}
     * @throws {@link Brevo.UnauthorizedError}
     * @throws {@link Brevo.ForbiddenError}
     * @throws {@link Brevo.NotFoundError}
     * @throws {@link errors.BrevoError}
     * @throws {@link errors.BrevoTimeoutError}
     *
     * @example
     *     await client.ecommerce.createProductAlert({
     *         id: "id",
     *         type: "back_in_stock"
     *     })
     */
    createProductAlert(request: Brevo.CreateProductAlertRequest, requestOptions?: EcommerceClient.RequestOptions): core.HttpResponsePromise<void>;
    private __createProductAlert;
}
