import { type Accessor, type CreateInfiniteQueryOptions, type CreateInfiniteQueryResult, type CreateMutationOptions, type CreateMutationResult, type CreateQueryOptions, type CreateQueryResult, type DefaultError, type InfiniteData, type QueryKey } from '@tanstack/svelte-query'; import { type InferExtQueryArgs, type InferExtResult, type InferOptions, type InferSchema } from '@zenstackhq/client-helpers'; import type { AggregateArgs, AggregateResult, BatchResult, ClientContract, CountArgs, CountResult, CreateArgs, CreateManyAndReturnArgs, CreateManyArgs, DeleteArgs, DeleteManyArgs, ExistsArgs, ExtQueryArgsBase, ExtResultBase, FindFirstArgs, FindManyArgs, FindUniqueArgs, GetProcedure, GetProcedureNames, GetSlicedModels, GetSlicedProcedures, GroupByArgs, GroupByResult, ProcedureEnvelope, QueryOptions, SelectSubset, SimplifiedPlainResult, SimplifiedResult, Subset, UpdateArgs, UpdateManyAndReturnArgs, UpdateManyArgs, UpsertArgs } from '@zenstackhq/orm'; import type { GetModels, SchemaDef } from '@zenstackhq/schema'; import type { ExtraMutationOptions, ExtraQueryOptions, ProcedureReturn, QueryContext, TransactionOperation, TransactionResults, TrimSlicedOperations, WithOptimistic } from '../common/types.js'; export { AnyNull, DbNull, JsonNull } from '@zenstackhq/client-helpers'; export type { InferExtQueryArgs, InferExtResult, InferOptions, InferSchema } from '@zenstackhq/client-helpers'; export type { FetchFn } from '@zenstackhq/client-helpers/fetch'; export type { SchemaDef } from '@zenstackhq/schema'; export { getQueryKey } from '../common/query-key.js'; type ProcedureHookFn, Options, Result, Input = ProcedureEnvelope> = { args: undefined; } extends Input ? (args?: Accessor, options?: Accessor) => Result : (args: Accessor, options?: Accessor) => Result; /** * Key for setting and getting the global query context. */ export declare const SvelteQueryContextKey = "zenstack-svelte-query-context"; /** * Set context for query settings. * * @deprecated use {@link setQuerySettingsContext} instead. */ export declare function setHooksContext(context: QueryContext): void; /** * Set context for query settings. */ export declare function setQuerySettingsContext(context: QueryContext): void; export type ModelQueryOptions = Omit, 'queryKey'> & ExtraQueryOptions; export type ModelQueryResult = CreateQueryResult, DefaultError> & { queryKey: QueryKey; }; export type ModelInfiniteQueryOptions = Omit, QueryKey, TPageParam>, 'queryKey' | 'initialPageParam'> & QueryContext; export type ModelInfiniteQueryResult = CreateInfiniteQueryResult & { queryKey: QueryKey; }; export type ModelMutationOptions = Omit, 'mutationFn'> & ExtraMutationOptions; export type ModelMutationResult = CreateMutationResult; export type ModelMutationModelResult, TArgs, Array extends boolean = false, Options extends QueryOptions = QueryOptions, ExtResult extends ExtResultBase = {}> = Omit, TArgs>, 'mutateAsync'> & { mutateAsync(args: T, options?: ModelMutationOptions, T>): Promise>; }; /** * Options accepted by `$transaction.useSequential()`. */ export type TransactionMutationOptions = QueryOptions, ExtQueryArgs extends ExtQueryArgsBase = {}, ExtResult extends ExtResultBase = {}> = Omit[]>, 'mutationFn'> & Omit; /** * The return type of `$transaction.useSequential()`. Overrides `mutateAsync` so the * resolved value is a tuple of per-operation results, narrowed to each operation's * model + op + args (mirrors the typing of the corresponding ORM CRUD method). */ export type TransactionMutationResult = QueryOptions, ExtQueryArgs extends ExtQueryArgsBase = {}, ExtResult extends ExtResultBase = {}> = Omit[]>, 'mutateAsync'> & { mutateAsync[]>(operations: T, options?: Omit, DefaultError, T>, 'mutationFn'>): Promise>; }; /** * The full set of TanStack Query hooks returned by {@link useClientQueries}. */ export type ClientHooks = QueryOptions, ExtQueryArgs extends ExtQueryArgsBase = {}, ExtResult extends ExtResultBase = {}> = { [Model in GetSlicedModels as `${Uncapitalize}`]: ModelQueryHooks; } & ProcedureHooks & { $transaction: { useSequential(options?: TransactionMutationOptions): TransactionMutationResult; }; }; type ProcedureHookGroup> = { [Name in GetSlicedProcedures]: GetProcedure extends { mutation: true; } ? { useMutation(options?: Omit, DefaultError, ProcedureEnvelope>, 'mutationFn'> & QueryContext): CreateMutationResult, DefaultError, ProcedureEnvelope>; } : { useQuery: ProcedureHookFn>, 'optimisticUpdate'>, CreateQueryResult, DefaultError> & { queryKey: QueryKey; }>; }; }; export type ProcedureHooks> = Schema['procedures'] extends Record ? { /** * Custom procedures. */ $procs: ProcedureHookGroup; } : Record; export type ModelQueryHooks, Options extends QueryOptions = QueryOptions, ExtQueryArgs extends ExtQueryArgsBase = {}, ExtResult extends ExtResultBase = {}> = TrimSlicedOperations>(args: Accessor>>, options?: Accessor | null>>): ModelQueryResult | null>; useFindFirst>(args?: Accessor>>, options?: Accessor | null>>): ModelQueryResult | null>; useExists>(args?: Accessor>>, options?: Accessor>): ModelQueryResult; useFindMany>(args?: Accessor>>, options?: Accessor[]>>): ModelQueryResult[]>; useInfiniteFindMany, TPageParam = unknown>(args?: Accessor>>, options?: Accessor[], TPageParam>>): ModelInfiniteQueryResult[], TPageParam>>; useCreate>(options?: Accessor, T>>): ModelMutationModelResult; useCreateMany>(options?: Accessor>): ModelMutationResult; useCreateManyAndReturn>(options?: Accessor[], T>>): ModelMutationModelResult; useUpdate>(options?: Accessor, T>>): ModelMutationModelResult; useUpdateMany>(options?: Accessor>): ModelMutationResult; useUpdateManyAndReturn>(options?: Accessor[], T>>): ModelMutationModelResult; useUpsert>(options?: Accessor, T>>): ModelMutationModelResult; useDelete>(options?: Accessor, T>>): ModelMutationModelResult; useDeleteMany>(options?: Accessor>): ModelMutationResult; useCount>(args?: Accessor>>, options?: Accessor>>): ModelQueryResult>; useAggregate>(args: Accessor>>, options?: Accessor>>): ModelQueryResult>; useGroupBy>(args: Accessor>>, options?: Accessor>>): ModelQueryResult>; }>; /** * Gets data query hooks for all models in the schema. * * Accepts either a raw `SchemaDef` or a `ClientContract` type (e.g. `typeof db`) as the generic parameter. * When a `ClientContract` type is provided, computed fields from plugins are reflected in the result types. * * @example * ```typescript * // Basic usage with schema * const client = useClientQueries(schema) * * // With server client type for computed field support * import type { DbType } from '~/server/db' * const client = useClientQueries(schema) * ``` */ export declare function useClientQueries>(schema: InferSchema, options?: Accessor): ClientHooks, InferOptions>, InferExtQueryArgs extends ExtQueryArgsBase ? InferExtQueryArgs : {}, InferExtResult extends ExtResultBase> ? InferExtResult : {}>; /** * Gets data query hooks for a specific model in the schema. */ export declare function useModelQueries, Options extends QueryOptions, ExtQueryArgs extends ExtQueryArgsBase = {}, ExtResult extends ExtResultBase = {}>(schema: Schema, model: Model, rootOptions?: Accessor): ModelQueryHooks; export declare function useInternalQuery(_schema: SchemaDef, model: string, operation: string, args?: Accessor, options?: Accessor, 'queryKey'> & ExtraQueryOptions>): CreateQueryResult & { queryKey: QueryKey; }; export declare function useInternalInfiniteQuery(_schema: SchemaDef, model: string, operation: string, args?: Accessor, options?: Accessor, QueryKey, TPageParam>, 'queryKey' | 'initialPageParam'> & QueryContext>): CreateInfiniteQueryResult, Error> & { queryKey: QueryKey; }; /** * Creates a svelte-query mutation * * @private * * @param model The name of the model under mutation. * @param method The HTTP method. * @param operation The mutation operation (e.g. `create`). * @param options The svelte-query options. * @param checkReadBack Whether to check for read back errors and return undefined if found. */ export declare function useInternalMutation(schema: SchemaDef, model: string, method: 'POST' | 'PUT' | 'DELETE', operation: string, options?: Accessor, 'mutationFn'> & ExtraMutationOptions>): CreateMutationResult; export declare function useInternalTransactionMutation = QueryOptions, ExtQueryArgs extends ExtQueryArgsBase = {}, ExtResult extends ExtResultBase = {}>(schema: Schema, options?: Accessor>): TransactionMutationResult;