fiscalapi
Version:
SDK de Node.js para FiscalAPI
73 lines (72 loc) • 2.95 kB
TypeScript
import { AxiosRequestConfig } from 'axios';
import { BaseDto } from '../common/base-dto';
import { ApiResponse } from '../common/api-response';
import { PagedList } from '../common/paged-list';
import { IFiscalapiHttpClient } from '../http/fiscalapi-http-client.interface';
import { IFiscalapiService, RequestOptions } from '../abstractions/fiscalapi-service.interface';
/**
* Implementación base de un servicio de FiscalAPI
* @template T - Tipo de DTO que maneja el servicio
*/
export declare abstract class BaseFiscalapiService<T extends BaseDto> implements IFiscalapiService<T> {
/** Cliente HTTP */
protected readonly httpClient: IFiscalapiHttpClient;
/** Ruta del recurso */
protected readonly resourcePath: string;
/** Versión de la API */
protected readonly apiVersion: string;
/**
* Crea una nueva instancia del servicio base
* @param {IFiscalapiHttpClient} httpClient - Cliente HTTP
* @param {string} resourcePath - Ruta del recurso en la API
* @param {string} apiVersion - Versión de la API
*/
constructor(httpClient: IFiscalapiHttpClient, resourcePath: string, apiVersion: string);
/**
* Construye una URL de endpoint de API
* @param {string} [path=''] - Segmento de ruta opcional
* @param {Record<string, string>} [queryParams] - Parámetros de consulta opcionales
* @returns {string} URL del endpoint
* @protected
*/
protected buildEndpoint(path?: string, queryParams?: Record<string, string>): string;
/**
* Convierte los parámetros de consulta a un objeto compatible con la configuración de Axios
* @param {Record<string, string>} queryParams - Parámetros de consulta
* @returns {AxiosRequestConfig} Configuración de Axios con los parámetros
* @protected
*/
protected createConfigWithParams(queryParams?: Record<string, string>): AxiosRequestConfig;
/**
* Ejecuta una petición HTTP personalizada con máxima flexibilidad
* @param {RequestOptions<TData>} options - Opciones para la petición
* @returns {Promise<ApiResponse<TResult>>} Resultado de la petición
* @template TResult - Tipo de resultado esperado
* @template TData - Tipo de datos de entrada
*/
executeRequest<TResult, TData = any>(options: RequestOptions<TData>): Promise<ApiResponse<TResult>>;
/**
* @inheritdoc
*/
getList(pageNumber: number, pageSize: number): Promise<ApiResponse<PagedList<T>>>;
/**
* @inheritdoc
*/
getById(id: string, details?: boolean): Promise<ApiResponse<T>>;
/**
* @inheritdoc
*/
create(model: T): Promise<ApiResponse<T>>;
/**
* @inheritdoc
*/
update(model: T): Promise<ApiResponse<T>>;
/**
* @inheritdoc
*/
delete(id: string): Promise<ApiResponse<boolean>>;
/**
* @inheritdoc
*/
search(searchParams: Record<string, string>): Promise<ApiResponse<PagedList<T>>>;
}