import { EdenClient, type EdenTreatyClient, type EmptyToVoid, type ExtractEdenTreatyRouteParams, type ExtractEdenTreatyRouteParamsInput, type HttpMutationMethod, type HttpQueryMethod, type InferRouteBody, type InferRouteError, type InferRouteOptions, type InferRouteOutput } from '@aydee-app/eden'; import type { CancelOptions, InfiniteData, InvalidateOptions, InvalidateQueryFilters, Query, QueryFilters, QueryKey, RefetchOptions, RefetchQueryFilters, ResetOptions, SetDataOptions, Updater, UseInfiniteQueryOptions, UseQueryOptions } from '@tanstack/react-query'; import type { AnyElysia, RouteSchema } from 'elysia'; import type { EdenQueryConfig } from '../../config'; import { type EdenContextPropsBase, type EdenContextState } from '../../context'; import type { EdenFetchInfiniteQueryOptions } from '../../integration/hooks/fetch-infinite'; import type { EdenFetchQueryOptions } from '../../integration/hooks/fetch-query'; import type { EdenUseInfiniteQueryOptions } from '../../integration/hooks/use-infinite-query'; import type { EdenUseMutationOptions } from '../../integration/hooks/use-mutation'; import type { ExtractCursorType, InfiniteCursorKey, ReservedInfiniteQueryKeys } from '../../integration/internal/infinite-query'; import { type EdenQueryKey } from '../../integration/internal/query-key'; import type { DeepPartial, Override, ProtectedIntersection } from '../../utils/types'; export type EdenTreatyReactQueryUtils = ProtectedIntersection, EdenTreatyReactQueryUtilsProxy>; export type DecoratedEdenTreatyReactQueryContextProps = Omit, 'client'> & { client: EdenTreatyClient; }; export type EdenTreatyReactQueryContextProps = EdenContextPropsBase & { client: EdenClient; }; export type EdenTreatyReactQueryUtilsProxy, TPath extends any[] = [], TRouteParams = ExtractEdenTreatyRouteParams> = EdenTreatyQueryUtilsUniversalUtils & { [K in keyof TSchema]: TSchema[K] extends RouteSchema ? EdenTreatyReactQueryUtilsMapping : EdenTreatyReactQueryUtilsProxy; } & ({} extends TRouteParams ? {} : (params: ExtractEdenTreatyRouteParamsInput) => EdenTreatyReactQueryUtilsProxy], TPath>); type EdenTreatyReactQueryUtilsMapping = InferRouteOptions> = TMethod extends HttpQueryMethod ? EdenTreatyQueryUtilsQueryUtils & (InfiniteCursorKey extends keyof (TInput['params'] & TInput['query']) ? EdenTreatyQueryUtilsInfiniteUtils : {}) : TMethod extends HttpMutationMethod ? EdenQueryUtilsMutationUtils : `Unknown HTTP Method: ${TMethod & string}`; export type EdenTreatyQueryUtilsQueryUtils['query'], TOutput = InferRouteOutput, TError = InferRouteError, TKey extends QueryKey = EdenQueryKey> = { fetch: (input: EmptyToVoid, options?: EdenFetchQueryOptions) => Promise; prefetch: (input: EmptyToVoid, options?: EdenFetchQueryOptions) => Promise; ensureData: (input: EmptyToVoid, options?: EdenFetchQueryOptions) => Promise; invalidate: (input?: DeepPartial, filters?: Override) => boolean; }>, options?: InvalidateOptions) => Promise; refetch: (input?: TInput, filters?: RefetchQueryFilters, options?: RefetchOptions) => Promise; cancel: (input?: TInput, filters?: QueryFilters, options?: CancelOptions) => Promise; reset: (input?: TInput, options?: ResetOptions) => Promise; setData: (input: TInput, updater: Updater, options?: SetDataOptions) => void; /** * @link https://tanstack.com/query/v5/docs/reference/QueryClient#queryclientsetquerydata */ setQueriesData(input: TInput, filters: QueryFilters, updater: Updater, options?: SetDataOptions): [QueryKey, TOutput]; getData: (input: EmptyToVoid) => TOutput | undefined; options: (input: EmptyToVoid, options?: UseQueryOptions) => UseQueryOptions; }; export type EdenTreatyQueryUtilsInfiniteUtils['query'], TOutput = InferRouteOutput, TError = InferRouteError, TKey extends QueryKey = EdenQueryKey> = { fetchInfinite: (input: EmptyToVoid, options?: EdenFetchInfiniteQueryOptions) => Promise>>>; prefetchInfinite: (input: EmptyToVoid, options?: EdenFetchQueryOptions) => Promise; getInfiniteData: (input: EmptyToVoid) => InfiniteData>> | undefined; setInfiniteData: (input: TInput, updater: Updater>> | undefined, InfiniteData>> | undefined>, options?: SetDataOptions) => void; infiniteOptions: (input: EmptyToVoid, options?: EdenUseInfiniteQueryOptions) => UseInfiniteQueryOptions; }; export type EdenQueryUtilsMutationUtils, TOutput = InferRouteOutput, TError = InferRouteError, _TKey extends QueryKey = EdenQueryKey> = { setMutationDefaults(options: EdenUseMutationOptions | ((args: { canonicalMutationFn: NonNullable['mutationFn']>; }) => EdenUseMutationOptions)): void; getMutationDefaults(): EdenUseMutationOptions | undefined; isMutating(): number; }; /** * Utility hooks available at all levels of the utilities proxy. */ export type EdenTreatyQueryUtilsUniversalUtils = { /** * Invalidate the full router * @link https://trpc.io/docs/v10/useContext#query-invalidation * @link https://tanstack.com/query/v5/docs/framework/react/guides/query-invalidation */ invalidate(input?: undefined, filters?: InvalidateQueryFilters, options?: InvalidateOptions): Promise; }; export declare function createEdenTreatyQueryUtils(context: EdenContextState, config?: EdenQueryConfig): EdenTreatyReactQueryUtils; /** * @todo use config for something... */ export declare function createEdenTreatyQueryUtilsProxy(context: EdenContextState, config?: EdenQueryConfig, originalPaths?: string[], pathParams?: Record[]): EdenTreatyReactQueryUtils; export {};