import { FlowCreateAssociatedMerchantRequest, FlowCreateAssociatedMerchantResponse, FlowDeleteAssociatedMerchantResponse, FlowEditAssociatedMerchantRequest, FlowEditAssociatedMerchantResponse, FlowGetAssociatedMerchantResponse, FlowGetAssociatedMerchantsRequest, FlowGetAssociatedMerchantsResponse } from '../types/flow';
/**
 * Permite gestionar los comercios asociados
 *
 */
export default class FlowMerchants {
    private apiKey;
    private secretKey;
    private axiosInstance;
    createAssociatedMerchant: (data: FlowCreateAssociatedMerchantRequest) => Promise<FlowCreateAssociatedMerchantResponse>;
    /**
     * Este método permite modificar un comercio asociado previamente creado en Flow
     * @param {FlowEditAssociatedMerchantRequest} data Datos del comercio asociado a modificar
     * @returns {Promise<FlowEditAssociatedMerchantResponse>} Respuesta de la API de Flow
     * @throws {FlowAPIError} Si hay problemas con la API de Flow.
     * @throws {FlowCreateAssociatedMerchantError} Si hay problemas al modificar el comercio asociado.
     */
    editAssociatedMerchant: (data: FlowEditAssociatedMerchantRequest) => Promise<FlowEditAssociatedMerchantResponse>;
    /**
     * Este método permite eliminar un comercio asociado previamente creado en Flow
     * @param {string} id ID del comercio asociado a eliminar
     * @returns {Promise<FlowDeleteAssociatedMerchantResponse>} Respuesta de la API de Flow
     * @throws {FlowAPIError} Si hay problemas con la API de Flow.
     * @throws {FlowCreateAssociatedMerchantError} Si hay problemas al eliminar el comercio asociado.
     */
    deleteAssociatedMerchant: (id: string) => Promise<FlowDeleteAssociatedMerchantResponse>;
    /**
     * Este método permite obtener la información de un comercio asociado previamente creado en Flow
     *
     */
    getAssociatedMerchant: (id: string) => Promise<FlowGetAssociatedMerchantResponse>;
    /**
     * Permite obtener la lista de comercios paginada de acuerdo a los parámetros de paginación. Además, se puede definir los siguientes filtros:
     * filter: filtro por nombre del comercio asociad
     * status: filtro por estado del comercio asociado
     * @param {FlowGetAssociatedMerchantsRequest} data Datos de la petición.
     * @returns {Promise<FlowGetAssociatedMerchantsResponse>} Respuesta de la API.
     * @throws {FlowAPIError} Si hay problemas con la API de Flow.
     * @throws {FlowDeleteAssociatedMerchantError} Si hay problemas al realizar la petición.
     */
    getAssociatedMerchants: (data: FlowGetAssociatedMerchantsRequest) => Promise<FlowGetAssociatedMerchantsResponse>;
    /**
     * 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 método permite crear un nuevo comercio asociado en Flow
     * @param {FlowCreateAssociatedMerchantRequest} data Datos del comercio asociado a crear
     * @returns {Promise<FlowCreateAssociatedMerchantRequest>} Respuesta de la API de Flow
     * @throws {FlowAPIError} Si hay problemas con la API de Flow.
     * @throws {FlowCreateAssociatedMerchantError} Si hay problemas al crear el comercio asociado.
     */
    private _createAssociatedMerchant;
    /**
     * Este método permite modificar un comercio asociado previamente creado en Flow
     * @param {FlowEditAssociatedMerchantRequest} data Datos del comercio asociado a modificar
     * @returns {Promise<FlowEditAssociatedMerchantResponse>} Respuesta de la API de Flow
     * @throws {FlowAPIError} Si hay problemas con la API de Flow.
     * @throws {FlowCreateAssociatedMerchantError} Si hay problemas al modificar el comercio asociado.
     */
    private _editAssociatedMerchant;
    /**
     * Este método permite eliminar un comercio asociado previamente creado en Flow
     * @param {string} id ID del comercio asociado a eliminar
     * @returns {Promise<FlowDeleteAssociatedMerchantResponse>} Respuesta de la API de Flow
     * @throws {FlowAPIError} Si hay problemas con la API de Flow.
     * @throws {FlowCreateAssociatedMerchantError} Si hay problemas al eliminar el comercio asociado.
     */
    private _deleteAssociatedMerchant;
    /**
     * Este método permite obtener la información de un comercio asociado previamente creado en Flow
     *
     */
    private _getAssociatedMerchant;
    /**
     * Permite obtener la lista de comercios paginada de acuerdo a los parámetros de paginación. Además, se puede definir los siguientes filtros:
     * filter: filtro por nombre del comercio asociad
     * status: filtro por estado del comercio asociado
     * @param {FlowGetAssociatedMerchantsRequest} data Datos de la petición.
     * @returns {Promise<FlowGetAssociatedMerchantsResponse>} Respuesta de la API.
     * @throws {FlowAPIError} Si hay problemas con la API de Flow.
     * @throws {FlowDeleteAssociatedMerchantError} Si hay problemas al realizar la petición.
     */
    _getAssociatedMerchants(data: FlowGetAssociatedMerchantsRequest): Promise<FlowGetAssociatedMerchantsResponse>;
}
//# sourceMappingURL=flow.merchants.d.ts.map