import type { AnyMutationProcedure, AnyQueryProcedure, AnyRootConfig, AnyRouter, DeepPartial, inferProcedureInput } from '@trpc/server/unstable-core-do-not-import';
import type { DecoratedProcedureRecord, DecorateProcedure } from '../shared';
export type QueryType = 'any' | 'infinite' | 'query';
export type TRPCQueryKey = [
    string[],
    {
        input?: unknown;
        type?: Exclude<QueryType, 'any'>;
    }?
];
/**
 * To allow easy interactions with groups of related queries, such as
 * invalidating all queries of a router, we use an array as the path when
 * storing in tanstack query.
 **/
export declare function getQueryKeyInternal(path: string[], input: unknown, type: QueryType): TRPCQueryKey;
type GetInfiniteQueryInput<TProcedureInput, TInputWithoutCursor = Omit<TProcedureInput, 'cursor'>> = keyof TInputWithoutCursor extends never ? undefined : DeepPartial<TInputWithoutCursor> | undefined;
/** @internal */
export type GetQueryProcedureInput<TProcedureInput> = TProcedureInput extends {
    cursor?: any;
} ? GetInfiniteQueryInput<TProcedureInput> : DeepPartial<TProcedureInput> | undefined;
type GetQueryParams<TProcedureOrRouter extends AnyQueryProcedure, TProcedureInput = inferProcedureInput<TProcedureOrRouter>> = TProcedureInput extends undefined ? [] : [input?: GetQueryProcedureInput<TProcedureInput>, type?: QueryType];
type GetParams<TConfig extends AnyRootConfig, TProcedureOrRouter extends AnyMutationProcedure | AnyQueryProcedure | AnyRouter, TFlags> = TProcedureOrRouter extends AnyQueryProcedure ? [
    procedureOrRouter: DecorateProcedure<TConfig, TProcedureOrRouter, TFlags>,
    ..._params: GetQueryParams<TProcedureOrRouter>
] : TProcedureOrRouter extends AnyMutationProcedure ? [procedureOrRouter: DecorateProcedure<TConfig, TProcedureOrRouter, TFlags>] : TProcedureOrRouter extends AnyRouter ? [
    procedureOrRouter: DecoratedProcedureRecord<TConfig, TProcedureOrRouter['_def']['record'], TFlags>
] : never;
type GetQueryKeyParams<TConfig extends AnyRootConfig, TProcedureOrRouter extends AnyMutationProcedure | AnyQueryProcedure | AnyRouter, TFlags> = GetParams<TConfig, TProcedureOrRouter, TFlags>;
/**
 * Method to extract the query key for a procedure
 * @param procedureOrRouter - procedure or AnyRouter
 * @param input - input to procedureOrRouter
 * @param type - defaults to `any`
 * @link https://trpc.io/docs/v11/getQueryKey
 */
export declare function getQueryKey<TConfig extends AnyRootConfig, TProcedureOrRouter extends AnyMutationProcedure | AnyQueryProcedure | AnyRouter, TFlags>(..._params: GetQueryKeyParams<TConfig, TProcedureOrRouter, TFlags>): TRPCQueryKey;
export type QueryKeyKnown<TInput, TType extends Exclude<QueryType, 'any'>> = [
    string[],
    {
        input?: GetQueryProcedureInput<TInput>;
        type: TType;
    }?
];
export {};
//# sourceMappingURL=getQueryKey.d.ts.map