import { IListResponse_DTO } from "@shared/contexts"; import { AxiosHeaderValue, ResponseType } from "axios"; export interface IPaginationDataProviderParam { pageIndex: number; pageSize: number; } export interface ISortItemDataProviderParam { order: string; field: string; } export interface IFilterItemDataProviderParam { field: string; operator?: string; value?: string; } export interface IGetListDataProviderParams { resource: string; quickSearchTerm?: string[]; pagination?: IPaginationDataProviderParam; sort?: ISortItemDataProviderParam[]; filters?: IFilterItemDataProviderParam[]; } export interface IGetOneDataProviderParams { resource: string; id: string; } export interface ISaveOneDataProviderParams { resource: string; data: T; id: string; } export interface ICreateOneDataProviderParams { resource: string; data: T; } export interface IUpdateOneDataProviderParams { resource: string; data: T; id: string; } export interface IRemoveOneDataProviderParams { resource: string; id: string; } export interface IDownloadPDFDataProviderParams { url: string; config?: { [key: string]: unknown; }; } export interface IDownloadPDFDataProviderResponse { filename: string; filedata: Blob; } export interface IUploadFileDataProviderParam { path: string; //resource: string; //id: string; file: File; key: string; onUploadProgress?: any; } export interface ICustomDataProviderParam { url?: string; path?: string; method: "get" | "delete" | "head" | "options" | "post" | "put" | "patch"; signal?: AbortSignal; responseType?: ResponseType; headers?: { [key: string]: AxiosHeaderValue; }; [key: string]: unknown; } export interface IDataSource { name: () => string; getList: (params: IGetListDataProviderParams) => Promise>; getOne: (params: IGetOneDataProviderParams) => Promise; //saveOne: (params: ISaveOneDataProviderParams

) => Promise; createOne: (params: ICreateOneDataProviderParams

) => Promise; updateOne: (params: IUpdateOneDataProviderParams

) => Promise; removeOne: (params: IRemoveOneDataProviderParams) => Promise; downloadPDF: ( params: IDownloadPDFDataProviderParams ) => Promise; uploadFile: (params: IUploadFileDataProviderParam) => Promise; custom: (params: ICustomDataProviderParam) => Promise; getApiUrl: () => string; getApiAuthorization: () => string; //create: () => any; //createMany: () => any; //removeMany: () => any; //getMany: () => any; //update: () => any; //updateMany: () => any; //upload: () => any; //custom: () => any; //getApiUrl: () => string; }