import { baseApi } from '../base-api'; export type ApiQueryArgs = { url: string; method?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE'; params?: Record; body?: unknown; headers?: Record; cacheKey?: string | unknown[]; }; const queryApi = baseApi.injectEndpoints({ endpoints: (builder) => ({ apiQuery: builder.query({ query: ({ url, params }) => ({ url, params }), }), apiMutation: builder.mutation({ query: ({ url, method = 'POST', body, headers }) => ({ url, method, body, headers, }), }), }), overrideExisting: false, }); export const { useApiQueryQuery, useApiMutationMutation } = queryApi; export function useApiQuery( args: ApiQueryArgs, options?: Parameters[1], ) { return useApiQueryQuery(args, options) as ReturnType & { data: TData | undefined; }; } export function useApiMutation() { return useApiMutationMutation() as ReturnType & { data: TData | undefined; }; }