@dbs-portal/core-api
Version:
HTTP client and API utilities for DBS Portal
67 lines • 4.48 kB
TypeScript
/**
* React Query hooks for common API operations
*/
import { type UseQueryOptions, type UseMutationOptions, type UseInfiniteQueryOptions } from '@tanstack/react-query';
import type { ApiClient } from '../client/api-client';
import type { RequestConfig, ApiResponse, PaginatedResponse } from '../types';
export declare function setGlobalApiClient(client: ApiClient): void;
/**
* Generic fetch hook
*/
export declare function useApiFetch<TData = any>(key: readonly unknown[], url: string, config?: RequestConfig, options?: Omit<UseQueryOptions<TData>, 'queryKey' | 'queryFn'>): import("@tanstack/react-query").UseQueryResult<import("@tanstack/query-core").NoInfer<TData>, Error>;
/**
* Generic mutation hook
*/
export declare function useApiMutation<TData = any, TVariables = any>(mutationFn: (variables: TVariables) => Promise<ApiResponse<TData>>, options?: UseMutationOptions<ApiResponse<TData>, Error, TVariables>): import("@tanstack/react-query").UseMutationResult<ApiResponse<TData>, Error, TVariables, unknown>;
/**
* GET request hook
*/
export declare function useGet<TData = any>(key: readonly unknown[], url: string, config?: RequestConfig, options?: Omit<UseQueryOptions<TData>, 'queryKey' | 'queryFn'>): import("@tanstack/react-query").UseQueryResult<import("@tanstack/query-core").NoInfer<TData>, Error>;
/**
* POST request hook
*/
export declare function usePost<TData = any, TVariables = any>(url: string, options?: UseMutationOptions<ApiResponse<TData>, Error, TVariables>): import("@tanstack/react-query").UseMutationResult<ApiResponse<TData>, Error, TVariables, unknown>;
/**
* PUT request hook
*/
export declare function usePut<TData = any, TVariables = any>(url: string, options?: UseMutationOptions<ApiResponse<TData>, Error, TVariables>): import("@tanstack/react-query").UseMutationResult<ApiResponse<TData>, Error, TVariables, unknown>;
/**
* PATCH request hook
*/
export declare function usePatch<TData = any, TVariables = any>(url: string, options?: UseMutationOptions<ApiResponse<TData>, Error, TVariables>): import("@tanstack/react-query").UseMutationResult<ApiResponse<TData>, Error, TVariables, unknown>;
/**
* DELETE request hook
*/
export declare function useDelete<TData = any>(url: string, options?: UseMutationOptions<ApiResponse<TData>, Error, void>): import("@tanstack/react-query").UseMutationResult<ApiResponse<TData>, Error, void, unknown>;
/**
* Paginated query hook
*/
export declare function usePaginatedQuery<TData = any>(key: readonly unknown[], url: string, page?: number, limit?: number, config?: RequestConfig, options?: Omit<UseQueryOptions<PaginatedResponse<TData>>, 'queryKey' | 'queryFn'>): import("@tanstack/react-query").UseQueryResult<PaginatedResponse<TData>, Error>;
/**
* Infinite query hook for pagination
*/
export declare function useInfiniteApiQuery<TData = any>(key: readonly unknown[], url: string, config?: RequestConfig, options?: Omit<UseInfiniteQueryOptions<PaginatedResponse<TData>>, 'queryKey' | 'queryFn' | 'getNextPageParam'>): import("@tanstack/react-query").UseInfiniteQueryResult<PaginatedResponse<TData>, Error>;
/**
* Search query hook with debouncing
*/
export declare function useSearchQuery<TData = any>(query: string, url: string, config?: RequestConfig, options?: Omit<UseQueryOptions<TData[]>, 'queryKey' | 'queryFn'>): import("@tanstack/react-query").UseQueryResult<TData[], Error>;
/**
* Cache management hooks
*/
export declare function useCacheUtils(): {
invalidateQueries: (key: readonly unknown[]) => Promise<void>;
refetchQueries: (key: readonly unknown[]) => Promise<void>;
removeQueries: (key: readonly unknown[]) => void;
setQueryData: <TData>(key: readonly unknown[], data: TData) => unknown;
getQueryData: <TData>(key: readonly unknown[]) => TData | undefined;
prefetchQuery: <TData>(key: readonly unknown[], fetcher: () => Promise<TData>, staleTime?: number) => Promise<void>;
};
/**
* Optimistic update hook
*/
export declare function useOptimisticMutation<TData, TVariables>(mutationFn: (variables: TVariables) => Promise<ApiResponse<TData>>, queryKey: readonly unknown[], optimisticUpdate: (oldData: TData | undefined, variables: TVariables) => TData, options?: UseMutationOptions<ApiResponse<TData>, Error, TVariables, {
previousData: TData | undefined;
}>): import("@tanstack/react-query").UseMutationResult<ApiResponse<TData>, Error, TVariables, {
previousData: TData | undefined;
}>;
//# sourceMappingURL=hooks.d.ts.map