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 CouponsClient {
    type Options = BaseClientOptions;
    interface RequestOptions extends BaseRequestOptions {
    }
}
export declare class CouponsClient {
    protected readonly _options: NormalizedClientOptionsWithAuth<CouponsClient.Options>;
    constructor(options: CouponsClient.Options);
    /**
     * Retrieve a paginated list of all coupon collections in your Brevo account. Results can be sorted by creation date, remaining coupons count, or expiration date, in ascending or descending order. Pagination defaults to 50 collections per page (maximum 100).
     *
     * @param {Brevo.GetCouponCollectionsRequest} request
     * @param {CouponsClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Brevo.BadRequestError}
     * @throws {@link Brevo.UnauthorizedError}
     * @throws {@link errors.BrevoError}
     * @throws {@link errors.BrevoTimeoutError}
     *
     * @example
     *     await client.coupons.getCouponCollections()
     */
    getCouponCollections(request?: Brevo.GetCouponCollectionsRequest, requestOptions?: CouponsClient.RequestOptions): core.HttpResponsePromise<Brevo.GetCouponCollection>;
    private __getCouponCollections;
    /**
     * Create a new coupon collection with a name and a default coupon value. You can optionally set an expiration date in RFC3339 format and configure alert thresholds to receive email notifications when remaining coupons or remaining days before expiration fall below a specified number. The collection ID is auto-generated as a UUID and returned in the response.
     *
     * @param {Brevo.CreateCouponCollectionRequest} request
     * @param {CouponsClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Brevo.BadRequestError}
     * @throws {@link Brevo.UnauthorizedError}
     * @throws {@link errors.BrevoError}
     * @throws {@link errors.BrevoTimeoutError}
     *
     * @example
     *     await client.coupons.createCouponCollection({
     *         defaultCoupon: "Winter",
     *         name: "10%OFF"
     *     })
     */
    createCouponCollection(request: Brevo.CreateCouponCollectionRequest, requestOptions?: CouponsClient.RequestOptions): core.HttpResponsePromise<Brevo.CreateCouponCollectionResponse>;
    private __createCouponCollection;
    /**
     * Retrieve the details of a single coupon collection by its UUID. The response includes the collection name, default coupon value, total and remaining coupon counts, and creation timestamp. Returns a `404` error if no collection matches the provided ID.
     *
     * @param {Brevo.GetCouponCollectionRequest} request
     * @param {CouponsClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Brevo.BadRequestError}
     * @throws {@link Brevo.UnauthorizedError}
     * @throws {@link Brevo.NotFoundError}
     * @throws {@link errors.BrevoError}
     * @throws {@link errors.BrevoTimeoutError}
     *
     * @example
     *     await client.coupons.getCouponCollection({
     *         id: "id"
     *     })
     */
    getCouponCollection(request: Brevo.GetCouponCollectionRequest, requestOptions?: CouponsClient.RequestOptions): core.HttpResponsePromise<Brevo.GetCouponCollection>;
    private __getCouponCollection;
    /**
     * Update an existing coupon collection by its UUID. You can modify the default coupon value, set or remove the expiration date (pass `null` to remove), and configure or disable alert thresholds for remaining coupons or remaining days. Only the fields included in the request body are updated; omitted fields remain unchanged.
     *
     * @param {Brevo.UpdateCouponCollectionRequest} request
     * @param {CouponsClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Brevo.BadRequestError}
     * @throws {@link Brevo.UnauthorizedError}
     * @throws {@link errors.BrevoError}
     * @throws {@link errors.BrevoTimeoutError}
     *
     * @example
     *     await client.coupons.updateCouponCollection({
     *         id: "id"
     *     })
     */
    updateCouponCollection(request: Brevo.UpdateCouponCollectionRequest, requestOptions?: CouponsClient.RequestOptions): core.HttpResponsePromise<Brevo.UpdateCouponCollectionResponse>;
    private __updateCouponCollection;
    /**
     * Add coupons to an existing coupon collection. The `coupons` array must contain between 1 and 10,000 unique coupon code strings, all associated with the specified `collectionId`. Coupon creation is processed asynchronously and a `204` status is returned immediately upon acceptance. Returns a `404` error if the specified coupon collection does not exist.
     *
     * @param {Brevo.CreateCouponsRequest} request
     * @param {CouponsClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Brevo.BadRequestError}
     * @throws {@link Brevo.UnauthorizedError}
     * @throws {@link Brevo.NotFoundError}
     * @throws {@link errors.BrevoError}
     * @throws {@link errors.BrevoTimeoutError}
     *
     * @example
     *     await client.coupons.createCoupons({
     *         collectionId: "23befbae-1505-47a8-bd27-e30ef739f32c",
     *         coupons: ["Uf12AF"]
     *     })
     */
    createCoupons(request: Brevo.CreateCouponsRequest, requestOptions?: CouponsClient.RequestOptions): core.HttpResponsePromise<void>;
    private __createCoupons;
}
