import { type ReactNode, type Dispatch, type SetStateAction } from "react"; import type { PaginationInterface } from "../interfaces"; export interface CrudContextType { list: Array | undefined; item: T | undefined; page: number; pages: number; total: number; limit: number; isLoading: boolean; pagination: ReactNode; params: Record; extraData?: Record; setExtraData: Dispatch | undefined>>; fetchItems: { execute: (params?: Record) => Promise; isLoading: boolean; }; fetchItem: { execute: (params?: Record | string | number) => Promise; isLoading: boolean; }; createItem: { execute: (item: T) => Promise; isLoading: boolean; }; updateItem: { execute: (item: T) => Promise; isLoading: boolean; }; deleteItem: { execute: (item: T) => Promise; isLoading: boolean; }; } export declare const CrudContext: import("react").Context | undefined>; export interface PromiseWithOptions { execute: (...params: TParams) => Promise; successMessage?: string; errorMessage?: string | ((error: any) => string); } interface CrudProviderProps { children: ReactNode; getPromise?: ((params?: Record) => Promise | PaginationInterface | undefined>) | PromiseWithOptions | PaginationInterface | undefined, [ params?: Record ]>; getItemPromise?: ((id: string | number) => Promise) | PromiseWithOptions; postPromise?: ((item: T) => Promise) | PromiseWithOptions; putPromise?: ((item: T) => Promise) | PromiseWithOptions; deletePromise?: ((item: T) => Promise) | PromiseWithOptions; urlParams?: Array; limit?: number; pageParam?: string; singleItemId?: string | number; extraData?: Record; } export declare function CrudProvider({ children, getPromise, getItemPromise, postPromise, putPromise, deletePromise, limit, pageParam, urlParams, singleItemId, extraData: extraDataProp, }: CrudProviderProps): import("react/jsx-runtime").JSX.Element; export declare function useCrud(): CrudContextType; export {}; //# sourceMappingURL=CrudContext.d.ts.map