import { FlowEditDiscountCouponResponse, FlowCreateDiscountCouponRequest, FlowCreateDiscountCouponResponse, FlowEditDiscountCouponRequest, FlowDeleteDiscountCouponResponse, FlowGetDiscountCouponResponse, FlowListDiscountCouponsRequest, FlowListDiscountCouponsResponse } from '../types/flow';
/**
 * Permite crear cupones de descuento para ser aplicados a suscripciones o clientes
 */
export default class FlowCoupons {
    private apiKey;
    private secretKey;
    private axiosInstance;
    /**
     * Este servicio permite crear un cupón de descuento
     * @param {FlowCreateDiscountCouponRequest} data Datos para crear el cupón de descuento
     * @returns {Promise<FlowCreateDiscountCouponResponse>} Respuesta de la API
     * @throws {FlowCreateDiscountCouponError} Si hay problemas al crear el cupón de descuento
     * @throws {FlowAPIError} Si hay problemas con la API de Flow
     */
    create: (data: FlowCreateDiscountCouponRequest) => Promise<FlowCreateDiscountCouponResponse>;
    /**
     * Este servicio permite editar un cupón de descuento. Sólo se puede editar el nombre de un cupón.
     * @param {FlowEditDiscountCouponRequest} data Datos para editar el cupón de descuento
     * @returns {Promise<FlowEditDiscountCouponResponse>} Respuesta de la API
     * @throws {FlowEditDiscountCouponError} Si hay problemas al editar el cupón de descuento
     * @throws {FlowAPIError} Si hay problemas con la API de Flow
     */
    edit: (data: FlowEditDiscountCouponRequest) => Promise<FlowEditDiscountCouponResponse>;
    /**
     * Este servicio permite eliminar un cupón de descuento. Eliminar un cupón de descuento no elimina los descuentos aplicados a clientes o suscripciones, sólo no permite volver a aplicar este cupón
     * @param {string} couponId ID del cupón de descuento
     * @returns {Promise<FlowDeleteDiscountCouponResponse>} Respuesta de la API
     * @throws {FlowEditDiscountCouponError} Si hay problemas al eliminar el cupón de descuento
     * @throws {FlowAPIError} Si hay problemas con la API de Flow
     */
    delete: (couponId: string) => Promise<FlowDeleteDiscountCouponResponse>;
    /**
     * Este servicio permite obtener los datos de un cupón de descuento
     * @param {string} couponId ID del cupón de descuento
     * @returns {Promise<FlowGetDiscountCouponResponse>} Respuesta de la API
     * @throws {FlowGetDiscountCouponError} Si hay problemas al obtener el cupón de descuento
     * @throws {FlowAPIError} Si hay problemas con la API de Flow
     */
    get: (couponId: string) => Promise<FlowGetDiscountCouponResponse>;
    /**
     * Este servicio permite la lista de cupones de descuento
     * @param {FlowListDiscountCouponsRequest} data Datos para listar los cupones de descuento
     * @returns {Promise<FlowListDiscountCouponsResponse>} Respuesta de la API
     * @throws {FlowListDiscountCouponsError} Si hay problemas al listar los cupones de descuento
     * @throws {FlowAPIError} Si hay problemas con la API de Flow
     */
    list: (data: FlowListDiscountCouponsRequest) => Promise<FlowListDiscountCouponsResponse>;
    /**
     * Constructor de la clase FlowClient.
     * @param apiKey Clave de API proporcionada por Flow.
     * @param secretKey Clave secreta proporcionada por Flow.
     * @param baseURL URL base de la API de Flow.
     * @throws FlowAuthenticationError Si no se proporciona apiKey o secretKey.
     */
    constructor(apiKey: string, secretKey: string, baseURL: string);
    /**
     * Realiza una petición a la API de Flow.
     * @param {string} endpoint URL del endpoint de la API.
     * @param {string} data Datos a enviar en la petición.
     * @param {'post' | 'get'} method Método de la petición (POST o GET).
     * @param {(e: unknown) => never} error Error a lanzar en caso de error.
     * @returns {Promise<T>} Respuesta de la API.
     * @throws {FlowAPIError} Si hay problemas con la API de Flow.
     * @throws {Error} Si hay problemas al realizar la petición.
     */
    private request;
    /**
     * Este servicio permite crear un cupón de descuento
     * @param {FlowCreateDiscountCouponRequest} data Datos para crear el cupón de descuento
     * @returns {Promise<FlowCreateDiscountCouponResponse>} Respuesta de la API
     * @throws {FlowCreateDiscountCouponError} Si hay problemas al crear el cupón de descuento
     * @throws {FlowAPIError} Si hay problemas con la API de Flow
     */
    private createDiscountCoupon;
    /**
     * Este servicio permite editar un cupón de descuento. Sólo se puede editar el nombre de un cupón.
     * @param {FlowEditDiscountCouponRequest} data Datos para editar el cupón de descuento
     * @returns {Promise<FlowEditDiscountCouponResponse>} Respuesta de la API
     * @throws {FlowEditDiscountCouponError} Si hay problemas al editar el cupón de descuento
     * @throws {FlowAPIError} Si hay problemas con la API de Flow
     */
    private editDiscountCoupon;
    /**
     * Este servicio permite eliminar un cupón de descuento. Eliminar un cupón de descuento no elimina los descuentos aplicados a clientes o suscripciones, sólo no permite volver a aplicar este cupón
     * @param {string} couponId ID del cupón de descuento
     * @returns {Promise<FlowDeleteDiscountCouponResponse>} Respuesta de la API
     * @throws {FlowEditDiscountCouponError} Si hay problemas al eliminar el cupón de descuento
     * @throws {FlowAPIError} Si hay problemas con la API de Flow
     */
    private deleteDiscountCoupon;
    /**
     * Este servicio permite obtener los datos de un cupón de descuento
     * @param {string} couponId ID del cupón de descuento
     * @returns {Promise<FlowGetDiscountCouponResponse>} Respuesta de la API
     * @throws {FlowGetDiscountCouponError} Si hay problemas al obtener el cupón de descuento
     * @throws {FlowAPIError} Si hay problemas con la API de Flow
     */
    private getDiscountCoupon;
    /**
     * Este servicio permite la lista de cupones de descuento
     * @param {FlowListDiscountCouponsRequest} data Datos para listar los cupones de descuento
     * @returns {Promise<FlowListDiscountCouponsResponse>} Respuesta de la API
     * @throws {FlowListDiscountCouponsError} Si hay problemas al listar los cupones de descuento
     * @throws {FlowAPIError} Si hay problemas con la API de Flow
     */
    private listDiscountCoupons;
}
//# sourceMappingURL=flow.coupons.d.ts.map