import { FlowCreateAdditionalSubscriptionItemRequest, FlowCreateAdditionalSubscriptionItemResponse, FlowDeleteAdditionalSubscriptionItemResponse, FlowEditAdditionalSubscriptionItemRequest, FlowEditAdditionalSubscriptionItemResponse, FlowGetAdditionalSubscriptionItemResponse, FlowListAdditionalSubscriptionItemRequest, FlowListAdditionalSubscriptionItemResponse } from '../types/flow';
/**
 * Permite asociar items adicionales a suscripciones.
 */
export default class FlowSubscriptionsItems {
    private apiKey;
    private secretKey;
    private axiosInstance;
    /**
     * Este servicio permite obtener los datos de un item adicional de suscripción
     * @param {string} itemId ID del item adicional de suscripción.
     * @returns {Promise<getAdditionalSubscriptionItemResponse>} Respuesta de la API.
     * @throws {FlowCreateAdditionalSubscriptionItemError} Si hay problemas al obtener la suscripción adicional.
     * @throws {FlowAPIError} Si hay problemas con la API de Flow.
     */
    get: (itemId: string) => Promise<FlowGetAdditionalSubscriptionItemResponse>;
    /**
     * Este servicio permite crear un nuevo item adicional de suscripción
     * @param {FlowCreateAdditionalSubscriptionItemRequest} data Datos de la suscripción adicional.
     * @returns {Promise<FlowCreateAdditionalSubscriptionItemResponse>} Respuesta de la API.
     * @throws {FlowCreateAdditionalSubscriptionItemError} Si hay problemas al crear la suscripción adicional.
     * @throws {FlowAPIError} Si hay problemas con la API de Flow.
     */
    create: (data: FlowCreateAdditionalSubscriptionItemRequest) => Promise<FlowCreateAdditionalSubscriptionItemResponse>;
    /**
     * Este servicio permite editar un item adicional de suscripción. Se puede editar el nombre, tipo de ajuste, monto y definir si aplica para las suscripciones actuales o solo las futuras.
     * @param {FlowEditAdditionalSubscriptionItemRequest} data Datos de la suscripción adicional.
     * @returns {Promise<FlowEditAdditionalSubscriptionItemResponse>} Respuesta de la API.
     * @throws {FlowEditAdditionalSubscriptionItemError} Si hay problemas al editar la suscripción adicional.
     * @throws {FlowAPIError} Si hay problemas con la API de Flow.
     */
    edit: (data: FlowEditAdditionalSubscriptionItemRequest) => Promise<FlowEditAdditionalSubscriptionItemResponse>;
    /**
     * Este servicio permite eliminar un item adicional de suscripción. Eliminar un item adicional de suscripción posee 2 tipos de eliminación: solo para suscripciones futuras o para todas las suscripciones que actualmente poseen asociado este item.
     * @param {string} itemId ID del item adicional de suscripción.
     * @param {'to_future' | 'all'} changeType Tipo de eliminación.
     * @returns {Promise<FlowDeleteAdditionalSubscriptionItemResponse>} Respuesta de la API.
     * @throws {FlowDeleteAdditionalSubscriptionItemError} Si hay problemas al eliminar la suscripción adicional.
     * @throws {FlowAPIError} Si hay problemas con la API de Flow.
     */
    delete: (itemId: string, changeType: 'to_future' | 'all') => Promise<FlowDeleteAdditionalSubscriptionItemResponse>;
    /**
     * Este servicio permite la lista de items adicionales de suscripción
     * @param {FlowListAdditionalSubscriptionItemRequest} data Datos de la suscripción adicional.
     * @returns {Promise<FlowListAdditionalSubscriptionItemResponse>} Respuesta de la API.
     * @throws {FlowListAdditionalSubscriptionItemError} Si hay problemas al listar la suscripción adicional.
     * @throws {FlowAPIError} Si hay problemas con la API de Flow.
     *
     */
    list: (data: FlowListAdditionalSubscriptionItemRequest) => Promise<FlowListAdditionalSubscriptionItemResponse>;
    /**
     * Constructor de la clase FlowClient.
     * @param {string} apiKey Clave de API proporcionada por Flow.
     * @param {string} secretKey Clave secreta proporcionada por Flow.
     * @param {string} 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 nuevo item adicional de suscripción
     * @param {FlowCreateAdditionalSubscriptionItemRequest} data Datos de la suscripción adicional.
     * @returns {Promise<FlowCreateAdditionalSubscriptionItemResponse>} Respuesta de la API.
     * @throws {FlowCreateAdditionalSubscriptionItemError} Si hay problemas al crear la suscripción adicional.
     * @throws {FlowAPIError} Si hay problemas con la API de Flow.
     */
    createAdditionalSubscriptionItem(data: FlowCreateAdditionalSubscriptionItemRequest): Promise<FlowCreateAdditionalSubscriptionItemResponse>;
    /**
     * Este servicio permite obtener los datos de un item adicional de suscripción
     * @param {string} itemId ID del item adicional de suscripción.
     * @returns {Promise<getAdditionalSubscriptionItemResponse>} Respuesta de la API.
     * @throws {FlowCreateAdditionalSubscriptionItemError} Si hay problemas al obtener la suscripción adicional.
     * @throws {FlowAPIError} Si hay problemas con la API de Flow.
     */
    private getAdditionalSubscriptionItem;
    /**
     * Este servicio permite editar un item adicional de suscripción. Se puede editar el nombre, tipo de ajuste, monto y definir si aplica para las suscripciones actuales o solo las futuras.
     * @param {FlowEditAdditionalSubscriptionItemRequest} data Datos de la suscripción adicional.
     * @returns {Promise<FlowEditAdditionalSubscriptionItemResponse>} Respuesta de la API.
     * @throws {FlowEditAdditionalSubscriptionItemError} Si hay problemas al editar la suscripción adicional.
     * @throws {FlowAPIError} Si hay problemas con la API de Flow.
     */
    private editAdditionalSubscriptionItem;
    /**
     * Este servicio permite eliminar un item adicional de suscripción. Eliminar un item adicional de suscripción posee 2 tipos de eliminación: solo para suscripciones futuras o para todas las suscripciones que actualmente poseen asociado este item.
     * @param {string} itemId ID del item adicional de suscripción.
     * @param {'to_future' | 'all'} changeType Tipo de eliminación.
     * @returns {Promise<FlowDeleteAdditionalSubscriptionItemResponse>} Respuesta de la API.
     * @throws {FlowDeleteAdditionalSubscriptionItemError} Si hay problemas al eliminar la suscripción adicional.
     * @throws {FlowAPIError} Si hay problemas con la API de Flow.
     */
    private deleteAdditionalSubscriptionItem;
    /**
     * Este servicio permite la lista de items adicionales de suscripción
     * @param {FlowListAdditionalSubscriptionItemRequest} data Datos de la suscripción adicional.
     * @returns {Promise<FlowListAdditionalSubscriptionItemResponse>} Respuesta de la API.
     * @throws {FlowListAdditionalSubscriptionItemError} Si hay problemas al listar la suscripción adicional.
     * @throws {FlowAPIError} Si hay problemas con la API de Flow.
     *
     */
    private listAdditionalSubscriptionItem;
}
//# sourceMappingURL=flow.subscriptionsItems.d.ts.map