import type { CreateTRPCClientOptions } from '@trpc/client'; import type { AnyMutationProcedure, AnyProcedure, AnyQueryProcedure, AnySubscriptionProcedure, AnyRouter, ProcedureArgs, ProcedureRouterRecord, inferProcedureOutput } from '@trpc/server'; import type { inferObservableValue } from '@trpc/server/observable'; import type { Atom, Getter, WritableAtom } from 'jotai/vanilla'; type ValueOrGetter = T | ((get: Getter) => T); type AsyncValueOrGetter = T | Promise | ((get: Getter) => T) | ((get: Getter) => Promise); export declare const DISABLED: unique symbol; type QueryResolver = { (getInput: AsyncValueOrGetter[0]>, getOptions?: ValueOrGetter[1]>, getClient?: (get: Getter) => TClient): WritableAtom>, [], void>; (getInput: AsyncValueOrGetter[0] | typeof DISABLED>, getOptions?: ValueOrGetter[1] & { disabledOutput?: undefined; }>, getClient?: (get: Getter) => TClient): WritableAtom | undefined>, [ ], void>; (getInput: AsyncValueOrGetter[0] | typeof DISABLED>, getOptions: ValueOrGetter[1] & { disabledOutput: DisabledOutput; }>, getClient?: (get: Getter) => TClient): WritableAtom | DisabledOutput>, [ ], void>; }; type MutationResolver = (getClient?: (get: Getter) => TClient) => WritableAtom | null, [ ProcedureArgs ], Promise>>; type SubscriptionResolver = (getInput: ValueOrGetter[0]>, getOptions?: ValueOrGetter[1]>, getClient?: (get: Getter) => TClient) => Atom>>; type DecorateProcedure = TProcedure extends AnyQueryProcedure ? { atomWithQuery: QueryResolver; } : TProcedure extends AnyMutationProcedure ? { atomWithMutation: MutationResolver; } : TProcedure extends AnySubscriptionProcedure ? { atomWithSubscription: SubscriptionResolver; } : never; type DecoratedProcedureRecord = { [TKey in keyof TProcedures]: TProcedures[TKey] extends AnyRouter ? DecoratedProcedureRecord : TProcedures[TKey] extends AnyProcedure ? DecorateProcedure : never; }; export declare function createTRPCJotai(opts: CreateTRPCClientOptions): DecoratedProcedureRecord>; export {};