import { FlowCancelRefundResponse, FlowCreateRefundRequest, FlowCreateRefundResponse, FlowRefundStatusResponse } from '../types/flow';
/**
 * Cliente para interactuar con la API de reembolsos de Flow.
 * Permite realizar reembolsos en Flow.
 */
export default class FlowRefunds {
    private apiKey;
    private secretKey;
    private axiosInstance;
    /**
     * Objeto que proporciona métodos para interactuar con los reembolsos en Flow.
     */
    /**
     * Este servicio permite crear una orden de reembolso. Una vez que el receptor del reembolso acepte o rechaze el reembolso, Flow notificará vía POST a la página del comercio identificada en urlCallback pasando como parámetro token En esta página, el comercio debe invocar el servicio refund/getStatus para obtener el estado del reembolso.
     * @param {string} data FlowCreateRefundRequest con los datos del reembolso.
     * @returns {Promise<FlowCreateRefundResponse>} con la respuesta de Flow.
     * @throws {FlowAPIError} Si hay un error en la respuesta de la API.
     * @throws {FlowCreateRefundError} Si hay un error al crear el reembolso.
     */
    create: (data: FlowCreateRefundRequest) => Promise<FlowCreateRefundResponse>;
    /**
     * Este servicio permite cancelar una orden de reembolso pendiente
     * @param {string} token Token de la orden de reembolso
     * @returns {Promise<FlowCancelRefundResponse>} con la respuesta de Flow.
     * @throws {FlowAPIError} Si hay un error en la respuesta de la API.
     * @throws {FlowCancelRefundError} Si hay un error al cancelar el reembolso.
     */
    cancel: (token: string) => Promise<FlowCancelRefundResponse>;
    /**
     * Este servicio permite obtener el estado de un reembolso.
     */
    status: {
        /**
         * Permite obtener el estado de un reembolso solicitado. Este servicio se debe invocar desde la página del comercio que se señaló en el parámetro urlCallback del servicio refund/create.
         * @param {string} token Token de la orden de reembolso
         * @returns {Promise<FlowRefundStatusResponse>} con la respuesta de Flow.
         * @throws {FlowAPIError} Si hay un error en la respuesta de la API.
         * @throws {FlowRefundStatusError} Si hay un error al obtener el estado del reembolso.
         */
        byToken: (token: string) => Promise<FlowRefundStatusResponse>;
    };
    /**
     * 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 {Record<string, unknown>} data Datos a enviar en la petición.
     * @param {'post' | 'get'} method Método de la petición (POST o GET).
     * @param {(err: 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 una orden de reembolso. Una vez que el receptor del reembolso acepte o rechaze el reembolso, Flow notificará vía POST a la página del comercio identificada en urlCallback pasando como parámetro token En esta página, el comercio debe invocar el servicio refund/getStatus para obtener el estado del reembolso.
     * @param {FlowCreateRefundRequest} data con los datos del reembolso.
     * @returns {Promise<FlowCreateRefundResponse>} con la respuesta de Flow.
     * @throws {FlowAPIError} Si hay un error en la respuesta de la API.
     * @throws {FlowCreateRefundError} Si hay un error al crear el reembolso.
     */
    private createRefund;
    /**
     * Este servicio permite cancelar una orden de reembolso pendiente
     * @param {string} token Token de la orden de reembolso
     * @returns {Promise<FlowCancelRefundResponse>} con la respuesta de Flow.
     * @throws {FlowAPIError} Si hay un error en la respuesta de la API.
     * @throws {FlowCancelRefundError} Si hay un error al cancelar el reembolso.
     */
    private cancelRefund;
    /**
     * Permite obtener el estado de un reembolso solicitado. Este servicio se debe invocar desde la página del comercio que se señaló en el parámetro urlCallback del servicio refund/create.
     * @param {string} token Token de la orden de reembolso
     * @returns {Promise<FlowRefundStatusResponse>} con la respuesta de Flow.
     * @throws {FlowAPIError} Si hay un error en la respuesta de la API.
     * @throws {FlowRefundStatusError} Si hay un error al obtener el estado del reembolso.
     */
    private getRefundStatus;
}
//# sourceMappingURL=flow.refunds.d.ts.map