import React, { ReactNode, Dispatch, SetStateAction } from "react"; import { DocumentNode } from "graphql"; import { SetFormValue } from "components/Form"; export declare type IFindContext = { data: V[]; total: number; loading: boolean; error: string; findDocument?: DocumentNode; variables?: A; }; export declare type IInsertContext = { initialItem?: V; insertItem?: V | null; inserting?: boolean; insertError?: string; setInsertItem?: Dispatch>; setInsertItemValue?: SetFormValue; onInsert?: (item?: V | null) => Promise; }; export declare type IUpdateContext = { updateItem?: V | null; updating?: boolean; updateError?: string; setUpdateItem?: Dispatch>; setUpdateItemValue?: SetFormValue; onUpdate?: (item?: V | null) => Promise; }; export declare type IRemoveContext = { confirmRemove?: boolean; removing?: boolean; removeError?: string; setConfirmRemove?: Dispatch>; onRemoveMany?: (items: V[]) => Promise; }; export declare const FindContext: React.Context>; export declare const InsertContext: React.Context>; export declare const UpdateContext: React.Context>; export declare const RemoveContext: React.Context>; export declare function useFindContext(): IFindContext; export declare function useInsertContext(): IInsertContext; export declare function useUpdateContext(): IUpdateContext; export declare function useRemoveContext(): IRemoveContext; export declare type FindProviderProps = { typeName: string; variables: any; children: ReactNode; findDocument: DocumentNode; }; export declare type InsertProviderProps = { typeName: string; initialItem: V; children: ReactNode; insertDocument: DocumentNode; verifyInsert: (v?: V | null) => any; }; export declare type UpdateProviderProps = { typeName: string; children: ReactNode; updateDocument: DocumentNode; verifyUpdate: (v?: V | null) => any; }; export declare type RemoveProviderProps = { typeName: string; children: ReactNode; removeManyDocument: DocumentNode; }; export declare type CrudProps = FindProviderProps & InsertProviderProps & UpdateProviderProps & RemoveProviderProps; export declare function FindContextProvider({ children, typeName, variables, findDocument, }: FindProviderProps): JSX.Element; export declare function InsertContextProvider({ children, initialItem, insertDocument, verifyInsert, typeName, }: InsertProviderProps): JSX.Element; export declare function UpdateContextProvider({ children, updateDocument, verifyUpdate, }: UpdateProviderProps): JSX.Element; export declare function RemoveContextProvider({ typeName, children, removeManyDocument, }: RemoveProviderProps): JSX.Element; export declare function CrudProvider({ typeName, children, variables, initialItem, findDocument, insertDocument, updateDocument, removeManyDocument, verifyInsert, verifyUpdate, }: CrudProps): JSX.Element;