import { FlowCancelInvoicePendingPaymentReponse, FlowGetInvoiceDataResponse, FlowGetOverdueInvoicesRequest, FlowGetOverdueInvoicesResponse, FlowRecordExternalPaymentAndMarkInvoicePaidRequest, FlowRecordExternalPaymentAndMarkInvoicePaidResponse, FlowRetryOverdueInvoicePaymentResponse } from '../types/flow';
/**
 * Este servicio permite obtener los datos de un Importe.
 */
export default class FlowInvoices {
    private apiKey;
    private secretKey;
    private axiosInstance;
    get: {
        /**
         * Este servicio permite obtener los datos de un Importe.
         * @param invoiceId ID del Importe.
         * @returns {Promise<FlowGetInvoiceDataResponse>} Datos del Importe.
         * @throws {FlowGetInvoiceDataError} Si hay problemas al obtener los datos del Importe.
         * @throws {FlowAPIError} Si hay problemas con la API de Flow.
         */
        normal: (invoiceId: string) => Promise<FlowGetInvoiceDataResponse>;
        /**
         * Este servicio permite obtener la lista de invoices vencidos, es decir, aquellos no pagados cuyo due_date este vencido.
         * @param {FlowGetOverdueInvoicesRequest} data  Datos para obtener los invoices vencidos.
         * @returns {Promise<FlowGetOverdueInvoicesResponse>} Lista de invoices vencidos.
         * @throws {FlowGetOverdueInvoicesError} Si hay problemas al obtener los invoices vencidos.
         * @throws {FlowAPIError} Si hay problemas con la API de Flow.
         */
        overdue: (data: FlowGetOverdueInvoicesRequest) => Promise<FlowGetOverdueInvoicesResponse>;
    };
    /**
     * Cancela un Importe (Invoice) pendiente de pago
     * @param invoiceId ID del Importe
     * @returns {Promise<FlowCancelInvoicePendingPaymentReponse>} Respuesta de la API
     * @throws {FlowCancelInvoicePendingPaymentError} Si hay problemas al cancelar el Importe
     * @throws {FlowAPIError} Si hay problemas con la API de Flow
     */
    cancelPendingPayment: (invoiceId: string) => Promise<FlowCancelInvoicePendingPaymentReponse>;
    /**
     * Este servicio permite dar por pagado un Importe (Invoice) cuando el pago no se realiza por Flow.
     * @param {FlowRecordExternalPaymentAndMarkInvoicePaidRequest} data Datos para registrar el pago externo y marcar el Importe como pagado.
     * @returns {Promise<FlowRecordExternalPaymentAndMarkInvoicePaidResponse>} Respuesta de la API
     * @throws {FlowRecordExternalPaymentAndMarkInvoicePaidError} Si hay problemas al registrar el pago externo y marcar el Importe como pagado
     * @throws {FlowAPIError} Si hay problemas con la API de Flow
     */
    recordExternalPaymentAndMarkInvoicePaid: (data: FlowRecordExternalPaymentAndMarkInvoicePaidRequest) => Promise<FlowRecordExternalPaymentAndMarkInvoicePaidResponse>;
    /**
     * Este servicio permite reintentar el cobro de un Invoice vencido.
     * @param invoiceId ID del Invoice.
     * @returns {Promise<FlowRetryOverdueInvoicePaymentResponse>} Respuesta de la API.
     * @throws {FlowRetryOverdueInvoicePaymentError} Si hay problemas al reintentar el cobro del Invoice.
     * @throws {FlowAPIError} Si hay problemas con la API de Flow.
     */
    retryOverdueInvoicePayment: (invoiceId: string) => Promise<FlowRetryOverdueInvoicePaymentResponse>;
    /**
     * 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 obtener los datos de un Importe.
     * @param invoiceId ID del Importe.
     * @returns {Promise<FlowGetInvoiceDataResponse>} Datos del Importe.
     * @throws {FlowGetInvoiceDataError} Si hay problemas al obtener los datos del Importe.
     * @throws {FlowAPIError} Si hay problemas con la API de Flow.
     */
    private getInvoiceData;
    /**
     * Cancela un Importe (Invoice) pendiente de pago
     * @param invoiceId ID del Importe
     * @returns {Promise<FlowCancelInvoicePendingPaymentReponse>} Respuesta de la API
     * @throws {FlowCancelInvoicePendingPaymentError} Si hay problemas al cancelar el Importe
     * @throws {FlowAPIError} Si hay problemas con la API de Flow
     */
    private cancelInvoicePendingPayment;
    /**
     * Este servicio permite dar por pagado un Importe (Invoice) cuando el pago no se realiza por Flow.
     * @param {FlowRecordExternalPaymentAndMarkInvoicePaidRequest} data Datos para registrar el pago externo y marcar el Importe como pagado.
     * @returns {Promise<FlowRecordExternalPaymentAndMarkInvoicePaidResponse>} Respuesta de la API
     * @throws {FlowRecordExternalPaymentAndMarkInvoicePaidError} Si hay problemas al registrar el pago externo y marcar el Importe como pagado
     * @throws {FlowAPIError} Si hay problemas con la API de Flow
     */
    private _recordExternalPaymentAndMarkInvoicePaid;
    /**
     * Este servicio permite obtener la lista de invoices vencidos, es decir, aquellos no pagados cuyo due_date este vencido.
     * @param {FlowGetOverdueInvoicesRequest} data  Datos para obtener los invoices vencidos.
     * @returns {Promise<FlowGetOverdueInvoicesResponse>} Lista de invoices vencidos.
     * @throws {FlowGetOverdueInvoicesError} Si hay problemas al obtener los invoices vencidos.
     * @throws {FlowAPIError} Si hay problemas con la API de Flow.
     */
    private getOverdueInvoices;
    /**
     * Este servicio permite reintentar el cobro de un Invoice vencido.
     * @param invoiceId ID del Invoice.
     * @returns {Promise<FlowRetryOverdueInvoicePaymentResponse>} Respuesta de la API.
     * @throws {FlowRetryOverdueInvoicePaymentError} Si hay problemas al reintentar el cobro del Invoice.
     * @throws {FlowAPIError} Si hay problemas con la API de Flow.
     */
    private _retryOverdueInvoicePayment;
}
//# sourceMappingURL=flow.invoices.d.ts.map