import { AxiosRequestConfig } from 'axios'; import { ApiResponse } from '../common/api-response'; import { BaseDto } from '../common/base-dto'; import { PagedList } from '../common/paged-list'; import { HttpMethod } from '../http/fiscalapi-http-client.interface'; /** * Opciones para ejecutar una operación * @template TData - Tipo de datos de entrada */ export type OperationOptions = { /** Ruta o nombre de la operación */ path: string; /** Datos para la operación (opcional) */ data?: TData; /** Parámetros de consulta (opcional) */ queryParams?: Record; /** Método HTTP a utilizar */ method?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE'; /** Configuración adicional para Axios (opcional) */ config?: AxiosRequestConfig; }; /** * Opciones para ejecutar una petición personalizada * @template TData - Tipo de datos de entrada */ export type RequestOptions = { /** Método HTTP a utilizar */ method: HttpMethod; /** Ruta adicional (opcional) */ path?: string; /** ID del recurso (opcional) */ id?: string; /** Datos para la petición (opcional) */ data?: TData; /** Parámetros de consulta (opcional) */ queryParams?: Record; /** Configuración adicional para Axios (opcional) */ config?: AxiosRequestConfig; /** Transformador personalizado para la respuesta (opcional) */ responseTransformer?: (response: any) => T; }; /** * Interfaz base para todos los servicios de FiscalAPI * @template T - Tipo de DTO que maneja el servicio */ export interface IFiscalapiService { /** * Recupera una lista paginada de recursos * @param {number} pageNumber - Número de página (base 1) * @param {number} pageSize - Número de elementos por página * @returns {Promise>>} Lista paginada de recursos */ getList(pageNumber: number, pageSize: number): Promise>>; /** * Recupera un recurso específico por ID * @param {string} id - ID del recurso * @param {boolean} [details=false] - Si es verdadero, incluye objetos relacionados * @returns {Promise>} Recurso solicitado */ getById(id: string, details?: boolean): Promise>; /** * Crea un nuevo recurso * @param {T} model - Datos del recurso * @returns {Promise>} Recurso creado */ create(model: T): Promise>; /** * Actualiza un recurso existente * @param {string} id - ID del recurso * @param {T} model - Datos actualizados del recurso * @returns {Promise>} Recurso actualizado */ update(model: T): Promise>; /** * Elimina un recurso * @param {string} id - ID del recurso * @returns {Promise>} Resultado de la operación */ delete(id: string): Promise>; /** * Realiza una búsqueda en el recurso * @param {Record} searchParams - Parámetros de búsqueda * @returns {Promise>>} Resultados de la búsqueda */ search(searchParams: Record): Promise>>; /** * Ejecuta una petición HTTP personalizada con máxima flexibilidad * @param {RequestOptions} options - Opciones para la petición * @returns {Promise>} Resultado de la petición * @template TResult - Tipo de resultado esperado * @template TData - Tipo de datos de entrada */ executeRequest(options: RequestOptions): Promise>; } //# sourceMappingURL=fiscalapi-service.interface.d.ts.map