import { Injector, Signal } from '@angular/core'; import { DefaultError, OmitKeyof, QueriesPlaceholderDataFunction, QueryFunction, QueryKey, ThrowOnError } from '@tanstack/query-core'; import { CreateQueryOptions, CreateQueryResult, DefinedCreateQueryResult } from './types.js'; type QueryObserverOptionsForCreateQueries = OmitKeyof, 'placeholderData'> & { placeholderData?: TQueryFnData | QueriesPlaceholderDataFunction; }; type MAXIMUM_DEPTH = 20; type SkipTokenForCreateQueries = symbol; type GetCreateQueryOptionsForCreateQueries = T extends { queryFnData: infer TQueryFnData; error?: infer TError; data: infer TData; } ? QueryObserverOptionsForCreateQueries : T extends { queryFnData: infer TQueryFnData; error?: infer TError; } ? QueryObserverOptionsForCreateQueries : T extends { data: infer TData; error?: infer TError; } ? QueryObserverOptionsForCreateQueries : T extends [infer TQueryFnData, infer TError, infer TData] ? QueryObserverOptionsForCreateQueries : T extends [infer TQueryFnData, infer TError] ? QueryObserverOptionsForCreateQueries : T extends [infer TQueryFnData] ? QueryObserverOptionsForCreateQueries : T extends { queryFn?: QueryFunction | SkipTokenForCreateQueries; select?: (data: any) => infer TData; throwOnError?: ThrowOnError; } ? QueryObserverOptionsForCreateQueries : QueryObserverOptionsForCreateQueries; type GetDefinedOrUndefinedQueryResult = T extends { initialData?: infer TInitialData; } ? unknown extends TInitialData ? CreateQueryResult : TInitialData extends TData ? DefinedCreateQueryResult : TInitialData extends () => infer TInitialDataResult ? unknown extends TInitialDataResult ? CreateQueryResult : TInitialDataResult extends TData ? DefinedCreateQueryResult : CreateQueryResult : CreateQueryResult : CreateQueryResult; type GetCreateQueryResult = T extends { queryFnData: any; error?: infer TError; data: infer TData; } ? GetDefinedOrUndefinedQueryResult : T extends { queryFnData: infer TQueryFnData; error?: infer TError; } ? GetDefinedOrUndefinedQueryResult : T extends { data: infer TData; error?: infer TError; } ? GetDefinedOrUndefinedQueryResult : T extends [any, infer TError, infer TData] ? GetDefinedOrUndefinedQueryResult : T extends [infer TQueryFnData, infer TError] ? GetDefinedOrUndefinedQueryResult : T extends [infer TQueryFnData] ? GetDefinedOrUndefinedQueryResult : T extends { queryFn?: QueryFunction | SkipTokenForCreateQueries; select?: (data: any) => infer TData; throwOnError?: ThrowOnError; } ? GetDefinedOrUndefinedQueryResult : CreateQueryResult; /** * QueriesOptions reducer recursively unwraps function arguments to infer/enforce type param */ export type QueriesOptions, TResults extends Array = [], TDepth extends ReadonlyArray = []> = TDepth['length'] extends MAXIMUM_DEPTH ? Array : T extends [] ? [] : T extends [infer Head] ? [...TResults, GetCreateQueryOptionsForCreateQueries] : T extends [infer Head, ...infer Tails] ? QueriesOptions<[ ...Tails ], [ ...TResults, GetCreateQueryOptionsForCreateQueries ], [ ...TDepth, 1 ]> : ReadonlyArray extends T ? T : T extends Array> ? Array> : Array; /** * QueriesResults reducer recursively maps type param to results */ export type QueriesResults, TResults extends Array = [], TDepth extends ReadonlyArray = []> = TDepth['length'] extends MAXIMUM_DEPTH ? Array : T extends [] ? [] : T extends [infer Head] ? [...TResults, GetCreateQueryResult] : T extends [infer Head, ...infer Tails] ? QueriesResults<[ ...Tails ], [ ...TResults, GetCreateQueryResult ], [ ...TDepth, 1 ]> : { [K in keyof T]: GetCreateQueryResult; }; export interface InjectQueriesOptions, TCombinedResult = QueriesResults> { queries: readonly [...QueriesOptions] | readonly [ ...{ [K in keyof T]: GetCreateQueryOptionsForCreateQueries; } ]; combine?: (result: QueriesResults) => TCombinedResult; } /** * @param optionsFn - A function that returns queries' options. * @param injector - The Angular injector to use. */ export declare function injectQueries, TCombinedResult = QueriesResults>(optionsFn: () => InjectQueriesOptions, injector?: Injector): Signal; export {};