import type { Procedure, ProcedureParams, ProcedureType, Router, } from "@trpc/server"; import type { RootConfig } from "@trpc/server/dist/core/internals/config"; import type { TRPC_ERROR_CODE_KEY } from "@trpc/server/rpc"; import type { RouterDef } from "@trpc/server/src/core/router"; import type { OpenAPIV3 } from "openapi-types"; import type { ZodIssue } from "zod"; export type OpenApiMethod = "GET" | "POST" | "PATCH" | "PUT" | "DELETE"; type TRPCMeta = Record; export type OpenApiContentType = | "application/json" | "application/x-www-form-urlencoded" // eslint-disable-next-line @typescript-eslint/ban-types | (string & {}); export type OpenApiMeta = TMeta & { openapi?: { enabled?: boolean; method: OpenApiMethod; path: `/${string}`; summary?: string; description?: string; protect?: boolean; tags?: string[]; headers?: (OpenAPIV3.ParameterBaseObject & { name: string; in?: "header"; })[]; contentTypes?: OpenApiContentType[]; deprecated?: boolean; example?: { request?: Record; response?: Record; }; responseHeaders?: Record< string, OpenAPIV3.HeaderObject | OpenAPIV3.ReferenceObject >; }; }; export type OpenApiProcedure = Procedure< "query" | "mutation", { type: ProcedureType } & ProcedureParams< RootConfig<{ transformer: any; errorShape: any; ctx: any; meta: OpenApiMeta; }>, any, any, any, any, any, OpenApiMeta > >; export type OpenApiProcedureRecord = Record< string, OpenApiProcedure >; export type OpenApiRouter = Router< RouterDef< RootConfig<{ transformer: any; errorShape: any; ctx: any; meta: OpenApiMeta; }>, any, any > >; export type OpenApiSuccessResponse = D; export type OpenApiErrorResponse = { message: string; code: TRPC_ERROR_CODE_KEY; issues?: ZodIssue[]; }; export type OpenApiResponse = | OpenApiSuccessResponse | OpenApiErrorResponse;