import { type EdenClient, type EmptyToVoid, type ExtractEdenTreatyRouteParams, type ExtractEdenTreatyRouteParamsInput, type InferRouteError, type InferRouteOptions, type InferRouteOutput } from '@aydee-app/eden'; import type { QueriesOptions, QueriesResults, QueryKey, UseQueryOptions } from '@tanstack/react-query'; import type { AnyElysia, RouteSchema } from 'elysia'; import type { EdenQueryConfig } from '../../config'; import { type EdenQueryKey } from '../../integration/internal/query-key'; import type { UseQueryOptionsForUseQueries } from '../../integration/internal/use-query-options-for-use-queries'; /** * A function that accepts a callback that's called with a proxy object. * Invoking the proxy object returns strongly typed query options. */ export type EdenTreatyUseQueries = >(callback: (t: EdenTreatyUseQueriesProxy) => readonly [...QueriesOptions]) => TCombinedResult; /** * A proxy object that returns {@link CreateQueryOptions} (instead of an actual create query result). * Passed to `createQueries` caller to use. */ export type EdenTreatyUseQueriesProxy = T extends { _routes: infer TSchema extends Record; } ? EdenTreatyUseQueriesProxyMapping : 'Please install Elysia before using Eden'; /** * Implementation. */ export type EdenTreatyUseQueriesProxyMapping, TPath extends any[] = [], TRouteParams = ExtractEdenTreatyRouteParams> = { [K in Exclude]: TSchema[K] extends RouteSchema ? EdenTreatyUseQueriesHook : EdenTreatyUseQueriesProxyMapping; } & ({} extends TRouteParams ? {} : (params: ExtractEdenTreatyRouteParamsInput) => EdenTreatyUseQueriesProxyMapping], TPath>); /** * When a route is encountered, it is replaced with a callable function that takes the same inputs. */ export type EdenTreatyUseQueriesHook['query'], TOutput = InferRouteOutput, TError = InferRouteError, TKey extends QueryKey = EdenQueryKey> = (input: EmptyToVoid, opts?: UseQueryOptionsForUseQueries) => UseQueryOptions; export declare function createTreatyUseQueriesProxy(client: EdenClient, originalPaths?: string[], config?: EdenQueryConfig, pathParams?: Record[]): EdenTreatyUseQueriesProxy;