import { Plugins } from "@hey-api/openapi-ts";
import { TRPCCombinedDataTransformer, TRPCDataTransformer } from "@trpc/server";

//#region src/heyapi/index.d.ts
type DataTransformerOptions = TRPCDataTransformer | TRPCCombinedDataTransformer;
interface TRPCHeyApiClientOptions {
  transformer?: DataTransformerOptions;
}
type HeyAPIResolvers = Plugins.HeyApiTypeScript.Resolvers;
type HeyApiConfig = ReturnType<Plugins.HeyApiClientFetch.Client['getConfig']>;
type TRPCHeyApiClientConfig = Required<Pick<HeyApiConfig, 'querySerializer'>> & Pick<HeyApiConfig, 'bodySerializer' | 'responseTransformer'>;
/**
 * Returns the `~resolvers` object for the `@hey-api/typescript` plugin.
 *
 * Maps `date` and `date-time` string formats to `Date` so that the
 * generated SDK uses `Date` instead of `string` for those fields.
 *
 * @example
 * ```ts
 * import { createClient } from '@hey-api/openapi-ts';
 * import { createTRPCHeyApiTypeResolvers } from '@trpc/openapi/heyapi';
 *
 * await createClient({
 *   plugins: [
 *     { name: '@hey-api/typescript', '~resolvers': createTRPCHeyApiTypeResolvers() },
 *   ],
 * });
 * ```
 */
declare function createTRPCHeyApiTypeResolvers(): HeyAPIResolvers;
/**
 * @internal - Prefer `configureTRPCHeyApiClient`
 */
declare function createTRPCHeyApiClientConfig(opts?: TRPCHeyApiClientOptions): {
  readonly bodySerializer?: ((body: unknown) => string) | undefined;
  readonly responseTransformer?: ((data: unknown) => Promise<unknown>) | undefined;
  readonly querySerializer: (query: Record<string, unknown>) => string;
};
/**
 * @internal - Prefer `configureTRPCHeyApiClient`
 */
declare function createTRPCErrorInterceptor(transformerOpts: DataTransformerOptions): (error: unknown) => unknown;
/**
 * Configures a hey-api client for use with a tRPC OpenAPI backend.
 *
 * Sets up querySerializer, bodySerializer, responseTransformer, and
 * an error interceptor (for transformer-based error deserialization)
 * in a single call.
 *
 * @example
 * ```ts
 * import { configureTRPCHeyApiClient } from '@trpc/openapi/heyapi';
 * import superjson from 'superjson';
 * import { client } from './generated/client.gen';
 *
 * configureTRPCHeyApiClient(client, {
 *   baseUrl: 'http://localhost:3000',
 *   transformer: superjson,
 * });
 * ```
 */
declare function configureTRPCHeyApiClient(client: Plugins.HeyApiClientFetch.Client, opts: TRPCHeyApiClientOptions & Omit<HeyApiConfig, keyof TRPCHeyApiClientConfig>): void;
//# sourceMappingURL=index.d.ts.map
//#endregion
export { DataTransformerOptions, HeyAPIResolvers, HeyApiConfig, TRPCHeyApiClientConfig, TRPCHeyApiClientOptions, configureTRPCHeyApiClient, createTRPCErrorInterceptor, createTRPCHeyApiClientConfig, createTRPCHeyApiTypeResolvers };
//# sourceMappingURL=index.d.cts.map