import { IPagedData } from '@tsrt/utils'; import { ICrudApiClient } from '../types'; import { HttpService } from './HttpService'; export declare abstract class CrudApiClient> implements ICrudApiClient { protected readonly httpService: HttpService; protected readonly baseUrl: string; protected readonly routeParamsResolver?: () => GenericObject; protected readonly reorderEndpoint: string; protected readonly bulkEndpoint: string; private _item; private _hasPendingRequest; private _requestCancellation; protected constructor(httpService: HttpService, baseUrl: string, routeParamsResolver?: () => GenericObject, reorderEndpoint?: string, bulkEndpoint?: string); /** Gets orignal current value */ get item(): I; /** Gets _hasPendingRequest value */ get hasPendingRequest(): boolean; /** * Creates new entity record. * * @param body - Entity data. * @param [query] - Additional query params. */ create(body: I, query?: IQueryParams): Promise; create(body: I[], query?: IQueryParams): Promise; /** * Reads entity by id / list of entities. * * @param [query] - Additional query params. * @param [id] - Specific entity id. */ read(query?: IQueryParams, id?: null): Promise; read(query?: IQueryParams, id?: number | string): Promise; /** * Updates entity by id or list of entities. * * @param body - Entity data / list of entities. * @param [id] - Entity id. * @param [query] - Additional query params. */ update(body: Array>, id?: null, query?: IQueryParams): Promise; update(body: Partial, id: number | string, query?: IQueryParams): Promise; /** * Deletes entity by id. * * @param id - Entity id. * @param [query] - Additional query params. */ delete(id: number | string, query?: IQueryParams): Promise; /** * Creates or updates entities from provided list. * * @param body - List of entities * @param [query] - Additional query params. */ /** * Updates order for list of entities. * * @param body - List of entities to reorder / list of new orders where each item is { id: id, order: order }; * @param [query] - Additional query params */ updateItemsOrder(body: Array>, query?: IQueryParams): Promise; /** * Cancels current request. * * @param [message] - Message to show after request canceled. */ cancel(message?: string): void; /** Resets value of current item */ reset(): void; /** Method to retrieve data from custom response structure */ protected retrieveDataFromResponse(data: any): T; /** * Makes appropriate changes before request start. * * @param [noCancelation=false] - Whether not to cancel previous request (don't use cancel token automatically). */ private beforeRequest; /** Makes appropriate changes after request ends */ private afterRequest; /** Shows provided debug error */ private debugError; /** * Extracts actual data from API response, which could be w/ pager. * * @param data - API response data */ private extractDataFromApiResponse; /** * Creates axios request config * * @param [customConfig={ }] - Custom config props * @param [baseUrl] - Base endPoint * @param [id] - Optional resource id */ private createRequestConfig; /** * Composes baseUrl + optional id. * * @param baseUrl - Base endPoint. * @param [id] - Optional resource id. * @param [routeParams] - Optional route params values used for params replacement. */ private getUrl; /** Parses url and replaces params placeholders w/ real data */ private parseUrl; private cloneDeep; }