UNPKG

next-rest-framework

Version:

Next REST Framework - Type-safe, self-documenting APIs for Next.js

298 lines (287 loc) 32.6 kB
import { N as NextRestFrameworkConfig, B as BaseQuery, a as BaseParams, A as AnyContentTypeWithAutocompleteForMostCommonOnes, O as OutputObject, b as BaseOptions, c as BaseStatus, d as BaseContentType, e as OpenApiOperation, M as Modify, f as AnyCase, g as OpenApiPathItem, R as RpcOperationDefinition, h as RpcClient } from './index-RAoE6vgd.mjs'; export { r as rpcOperation } from './index-RAoE6vgd.mjs'; import * as openapi_types from 'openapi-types'; import { OpenAPIV3_1 } from 'openapi-types'; import { NextApiRequest, NextApiResponse } from 'next/types'; import { ValidMethod } from './constants.mjs'; import { z, ZodSchema } from 'zod'; import { NextRequest, NextResponse } from 'next/server'; import { I18NConfig } from 'next/dist/server/config-shared'; import { ResponseCookies } from 'next/dist/server/web/spec-extension/cookies'; import { NextURL } from 'next/dist/server/web/next-url'; declare const docsRoute: (_config?: NextRestFrameworkConfig) => { GET: { (req: NextRequest, _context: { params: BaseQuery; }): Promise<NextResponse<unknown>>; _nextRestFrameworkConfig: Required<NextRestFrameworkConfig> & NextRestFrameworkConfig; }; }; type TypedNextRequest<Body = unknown, Query = BaseQuery> = Modify<NextRequest, { json: () => Promise<Body>; method: ValidMethod; nextUrl: Modify<NextURL, { searchParams: Modify<URLSearchParams, { get: (key: keyof Query) => string | null; getAll: (key: keyof Query) => string[]; }>; }>; }>; type TypedHeaders<ContentType extends BaseContentType> = Modify<Record<string, string>, { [K in AnyCase<'Content-Type'>]?: ContentType; }>; interface TypedResponseInit<Status extends BaseStatus, ContentType extends BaseContentType> extends globalThis.ResponseInit { nextConfig?: { basePath?: string; i18n?: I18NConfig; trailingSlash?: boolean; }; url?: string; status?: Status; headers?: TypedHeaders<ContentType>; } interface ModifiedRequest { headers?: Headers; } interface TypedMiddlewareResponseInit<Status extends BaseStatus> extends globalThis.ResponseInit { request?: ModifiedRequest; status?: Status; } declare const INTERNALS: unique symbol; declare class TypedNextResponseType<Body, Status extends BaseStatus, ContentType extends BaseContentType> extends Response { [INTERNALS]: { cookies: ResponseCookies; url?: NextURL; body?: Body; status?: Status; contentType?: ContentType; }; constructor(body?: BodyInit | null, init?: TypedResponseInit<Status, ContentType>); get cookies(): ResponseCookies; static json<Body, Status extends BaseStatus, ContentType extends BaseContentType>(body: Body, init?: TypedResponseInit<Status, ContentType>): TypedNextResponseType<Body, Status, ContentType>; static redirect<Status extends BaseStatus, ContentType extends BaseContentType>(url: string | NextURL | URL, init?: number | TypedResponseInit<Status, ContentType>): TypedNextResponseType<unknown, Status, ContentType>; static rewrite<Status extends BaseStatus, ContentType extends BaseContentType>(destination: string | NextURL | URL, init?: TypedMiddlewareResponseInit<Status>): TypedNextResponseType<unknown, Status, ContentType>; static next<Status extends BaseStatus, ContentType extends BaseContentType>(init?: TypedMiddlewareResponseInit<Status>): TypedNextResponseType<unknown, Status, ContentType>; } declare const TypedNextResponse: typeof TypedNextResponseType; type RouteMiddleware<InputOptions extends BaseOptions = BaseOptions, OutputOptions extends BaseOptions = BaseOptions, ResponseBody = unknown, Status extends BaseStatus = BaseStatus, ContentType extends BaseContentType = BaseContentType, Outputs extends ReadonlyArray<OutputObject<ResponseBody, Status, ContentType>> = ReadonlyArray<OutputObject<ResponseBody, Status, ContentType>>, TypedResponse = TypedNextResponseType<z.infer<Outputs[number]['schema']>, Outputs[number]['status'], Outputs[number]['contentType']> | NextResponse<z.infer<Outputs[number]['schema']>> | void> = (req: NextRequest, context: { params: BaseParams; }, options: InputOptions) => Promise<TypedResponse> | TypedResponse | OutputOptions; type TypedRouteHandler<Body = unknown, Query extends BaseQuery = BaseQuery, Params extends BaseParams = BaseParams, Options extends BaseOptions = BaseOptions, ResponseBody = unknown, Status extends BaseStatus = BaseStatus, ContentType extends BaseContentType = BaseContentType, Outputs extends ReadonlyArray<OutputObject<ResponseBody, Status, ContentType>> = ReadonlyArray<OutputObject<ResponseBody, Status, ContentType>>, TypedResponse = TypedNextResponseType<z.infer<Outputs[number]['schema']>, Outputs[number]['status'], Outputs[number]['contentType']> | NextResponse<z.infer<Outputs[number]['schema']>> | void> = (req: TypedNextRequest<Body, Query>, context: { params: Params; }, options: Options) => Promise<TypedResponse> | TypedResponse; interface InputObject$1<Body = unknown, Query = BaseQuery, Params = BaseParams> { contentType?: BaseContentType; body?: ZodSchema<Body>; query?: ZodSchema<Query>; params?: ZodSchema<Params>; } interface RouteOperationDefinition<Method extends keyof typeof ValidMethod = keyof typeof ValidMethod> { openApiOperation?: OpenApiOperation; method: Method; input?: InputObject$1; outputs?: readonly OutputObject[]; middleware1?: RouteMiddleware; middleware2?: RouteMiddleware; middleware3?: RouteMiddleware; handler?: TypedRouteHandler; } declare const routeOperation: <Method extends "GET" | "PUT" | "POST" | "DELETE" | "OPTIONS" | "HEAD" | "PATCH">({ openApiOperation, method }: { openApiOperation?: Partial<Pick<openapi_types.OpenAPIV3_1.OperationObject<{}>, "servers" | "security" | "tags" | "externalDocs" | "description" | "summary" | "parameters" | "callbacks" | "deprecated">> | undefined; method: Method; }) => { input: <Body_1, Query extends BaseQuery, Params extends BaseParams>(input: InputObject$1<Body_1, Query, Params>) => { outputs: <ResponseBody, Status extends number, ContentType extends AnyContentTypeWithAutocompleteForMostCommonOnes, Outputs extends readonly OutputObject<ResponseBody, Status, ContentType>[]>(outputs: Outputs) => { middleware: <Options1 extends BaseOptions>(middleware1: RouteMiddleware<BaseOptions, Options1, ResponseBody, Status, ContentType, Outputs, void | TypedNextResponseType<z.TypeOf<Outputs[number]["schema"]>, Outputs[number]["status"], Outputs[number]["contentType"]> | NextResponse<z.TypeOf<Outputs[number]["schema"]>>>) => { middleware: <Options2 extends BaseOptions>(middleware2: RouteMiddleware<Options1, Options2, ResponseBody, Status, ContentType, Outputs, void | TypedNextResponseType<z.TypeOf<Outputs[number]["schema"]>, Outputs[number]["status"], Outputs[number]["contentType"]> | NextResponse<z.TypeOf<Outputs[number]["schema"]>>>) => { middleware: <Options3 extends BaseOptions>(middleware3: RouteMiddleware<Options2, Options3, ResponseBody, Status, ContentType, Outputs, void | TypedNextResponseType<z.TypeOf<Outputs[number]["schema"]>, Outputs[number]["status"], Outputs[number]["contentType"]> | NextResponse<z.TypeOf<Outputs[number]["schema"]>>>) => { handler: (handler: TypedRouteHandler<Body_1, Query, Params, Options3, ResponseBody, Status, ContentType, Outputs, void | TypedNextResponseType<z.TypeOf<Outputs[number]["schema"]>, Outputs[number]["status"], Outputs[number]["contentType"]> | NextResponse<z.TypeOf<Outputs[number]["schema"]>>>) => RouteOperationDefinition<Method>; }; handler: (handler: TypedRouteHandler<Body_1, Query, Params, Options2, ResponseBody, Status, ContentType, Outputs, void | TypedNextResponseType<z.TypeOf<Outputs[number]["schema"]>, Outputs[number]["status"], Outputs[number]["contentType"]> | NextResponse<z.TypeOf<Outputs[number]["schema"]>>>) => RouteOperationDefinition<Method>; }; handler: (handler: TypedRouteHandler<Body_1, Query, Params, Options1, ResponseBody, Status, ContentType, Outputs, void | TypedNextResponseType<z.TypeOf<Outputs[number]["schema"]>, Outputs[number]["status"], Outputs[number]["contentType"]> | NextResponse<z.TypeOf<Outputs[number]["schema"]>>>) => RouteOperationDefinition<Method>; }; handler: (handler: TypedRouteHandler<Body_1, Query, Params, BaseOptions, ResponseBody, Status, ContentType, Outputs, void | TypedNextResponseType<z.TypeOf<Outputs[number]["schema"]>, Outputs[number]["status"], Outputs[number]["contentType"]> | NextResponse<z.TypeOf<Outputs[number]["schema"]>>>) => RouteOperationDefinition<Method>; }; middleware: <Options1_1 extends BaseOptions>(middleware1: RouteMiddleware<BaseOptions, Options1_1, unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes, readonly OutputObject<unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes>[], void | NextResponse<unknown> | TypedNextResponseType<unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes>>) => { middleware: <Options2_1 extends BaseOptions>(middleware2: RouteMiddleware<Options1_1, Options2_1, unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes, readonly OutputObject<unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes>[], void | NextResponse<unknown> | TypedNextResponseType<unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes>>) => { middleware: <Options3_1 extends BaseOptions>(middleware3: RouteMiddleware<Options2_1, Options3_1, unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes, readonly OutputObject<unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes>[], void | NextResponse<unknown> | TypedNextResponseType<unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes>>) => { outputs: <ResponseBody_1, Status_1 extends number, ContentType_1 extends AnyContentTypeWithAutocompleteForMostCommonOnes, Outputs_1 extends readonly OutputObject<ResponseBody_1, Status_1, ContentType_1>[]>(outputs: Outputs_1) => { handler: (handler: TypedRouteHandler<Body_1, Query, Params, Options3_1, ResponseBody_1, Status_1, ContentType_1, Outputs_1, void | TypedNextResponseType<z.TypeOf<Outputs_1[number]["schema"]>, Outputs_1[number]["status"], Outputs_1[number]["contentType"]> | NextResponse<z.TypeOf<Outputs_1[number]["schema"]>>>) => RouteOperationDefinition<Method>; }; handler: (handler: TypedRouteHandler<Body_1, Query, Params, Options2_1, unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes, readonly OutputObject<unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes>[], void | NextResponse<unknown> | TypedNextResponseType<unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes>>) => RouteOperationDefinition<Method>; }; outputs: <ResponseBody_2, Status_2 extends number, ContentType_2 extends AnyContentTypeWithAutocompleteForMostCommonOnes, Outputs_2 extends readonly OutputObject<ResponseBody_2, Status_2, ContentType_2>[]>(outputs: Outputs_2) => { handler: (handler: TypedRouteHandler<Body_1, Query, Params, Options2_1, ResponseBody_2, Status_2, ContentType_2, Outputs_2, void | TypedNextResponseType<z.TypeOf<Outputs_2[number]["schema"]>, Outputs_2[number]["status"], Outputs_2[number]["contentType"]> | NextResponse<z.TypeOf<Outputs_2[number]["schema"]>>>) => RouteOperationDefinition<Method>; }; handler: (handler: TypedRouteHandler<Body_1, Query, Params, Options2_1, unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes, readonly OutputObject<unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes>[], void | NextResponse<unknown> | TypedNextResponseType<unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes>>) => RouteOperationDefinition<Method>; }; outputs: <ResponseBody_3, Status_3 extends number, ContentType_3 extends AnyContentTypeWithAutocompleteForMostCommonOnes, Outputs_3 extends readonly OutputObject<ResponseBody_3, Status_3, ContentType_3>[]>(outputs: Outputs_3) => { handler: (handler: TypedRouteHandler<Body_1, Query, Params, Options1_1, ResponseBody_3, Status_3, ContentType_3, Outputs_3, void | TypedNextResponseType<z.TypeOf<Outputs_3[number]["schema"]>, Outputs_3[number]["status"], Outputs_3[number]["contentType"]> | NextResponse<z.TypeOf<Outputs_3[number]["schema"]>>>) => RouteOperationDefinition<Method>; }; handler: (handler: TypedRouteHandler<Body_1, Query, Params, Options1_1, unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes, readonly OutputObject<unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes>[], void | NextResponse<unknown> | TypedNextResponseType<unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes>>) => RouteOperationDefinition<Method>; }; handler: (handler: TypedRouteHandler<Body_1, Query, Params, BaseOptions, unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes, readonly OutputObject<unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes>[], void | NextResponse<unknown> | TypedNextResponseType<unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes>>) => RouteOperationDefinition<Method>; }; outputs: <ResponseBody_4, Status_4 extends number, ContentType_4 extends AnyContentTypeWithAutocompleteForMostCommonOnes, Outputs_4 extends readonly OutputObject<ResponseBody_4, Status_4, ContentType_4>[]>(outputs: Outputs_4) => { middleware: <Options1_2 extends BaseOptions>(middleware1: RouteMiddleware<BaseOptions, Options1_2, ResponseBody_4, Status_4, ContentType_4, Outputs_4, void | TypedNextResponseType<z.TypeOf<Outputs_4[number]["schema"]>, Outputs_4[number]["status"], Outputs_4[number]["contentType"]> | NextResponse<z.TypeOf<Outputs_4[number]["schema"]>>>) => { middleware: <Options2_2 extends BaseOptions>(middleware2: RouteMiddleware<Options1_2, Options2_2, ResponseBody_4, Status_4, ContentType_4, Outputs_4, void | TypedNextResponseType<z.TypeOf<Outputs_4[number]["schema"]>, Outputs_4[number]["status"], Outputs_4[number]["contentType"]> | NextResponse<z.TypeOf<Outputs_4[number]["schema"]>>>) => { middleware: <Options3_2 extends BaseOptions>(middleware3: RouteMiddleware<Options2_2, Options3_2, ResponseBody_4, Status_4, ContentType_4, Outputs_4, void | TypedNextResponseType<z.TypeOf<Outputs_4[number]["schema"]>, Outputs_4[number]["status"], Outputs_4[number]["contentType"]> | NextResponse<z.TypeOf<Outputs_4[number]["schema"]>>>) => { handler: (handler: TypedRouteHandler<unknown, BaseQuery, BaseParams, Options3_2, ResponseBody_4, Status_4, ContentType_4, Outputs_4, void | TypedNextResponseType<z.TypeOf<Outputs_4[number]["schema"]>, Outputs_4[number]["status"], Outputs_4[number]["contentType"]> | NextResponse<z.TypeOf<Outputs_4[number]["schema"]>>>) => RouteOperationDefinition<Method>; }; handler: (handler: TypedRouteHandler<unknown, BaseQuery, BaseParams, Options2_2, ResponseBody_4, Status_4, ContentType_4, Outputs_4, void | TypedNextResponseType<z.TypeOf<Outputs_4[number]["schema"]>, Outputs_4[number]["status"], Outputs_4[number]["contentType"]> | NextResponse<z.TypeOf<Outputs_4[number]["schema"]>>>) => RouteOperationDefinition<Method>; }; handler: (handler: TypedRouteHandler<unknown, BaseQuery, BaseParams, Options1_2, ResponseBody_4, Status_4, ContentType_4, Outputs_4, void | TypedNextResponseType<z.TypeOf<Outputs_4[number]["schema"]>, Outputs_4[number]["status"], Outputs_4[number]["contentType"]> | NextResponse<z.TypeOf<Outputs_4[number]["schema"]>>>) => RouteOperationDefinition<Method>; }; handler: (handler: TypedRouteHandler<unknown, BaseQuery, BaseParams, BaseOptions, ResponseBody_4, Status_4, ContentType_4, Outputs_4, void | TypedNextResponseType<z.TypeOf<Outputs_4[number]["schema"]>, Outputs_4[number]["status"], Outputs_4[number]["contentType"]> | NextResponse<z.TypeOf<Outputs_4[number]["schema"]>>>) => RouteOperationDefinition<Method>; }; middleware: <Options1_3 extends BaseOptions>(middleware1: RouteMiddleware<BaseOptions, Options1_3, unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes, readonly OutputObject<unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes>[], void | NextResponse<unknown> | TypedNextResponseType<unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes>>) => { middleware: <Options2_3 extends BaseOptions>(middleware2: RouteMiddleware<Options1_3, Options2_3, unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes, readonly OutputObject<unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes>[], void | NextResponse<unknown> | TypedNextResponseType<unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes>>) => { middleware: <Options3_3 extends BaseOptions>(middleware3: RouteMiddleware<Options2_3, Options3_3, unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes, readonly OutputObject<unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes>[], void | NextResponse<unknown> | TypedNextResponseType<unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes>>) => { handler: (handler: TypedRouteHandler<unknown, BaseQuery, BaseParams, Options3_3, unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes, readonly OutputObject<unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes>[], void | NextResponse<unknown> | TypedNextResponseType<unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes>>) => RouteOperationDefinition<Method>; }; handler: (handler: TypedRouteHandler<unknown, BaseQuery, BaseParams, Options2_3, unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes, readonly OutputObject<unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes>[], void | NextResponse<unknown> | TypedNextResponseType<unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes>>) => RouteOperationDefinition<Method>; }; handler: (handler: TypedRouteHandler<unknown, BaseQuery, BaseParams, Options1_3, unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes, readonly OutputObject<unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes>[], void | NextResponse<unknown> | TypedNextResponseType<unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes>>) => RouteOperationDefinition<Method>; }; handler: (handler: TypedRouteHandler) => RouteOperationDefinition<Method>; }; declare const route: <T extends Record<string, RouteOperationDefinition<"GET" | "PUT" | "POST" | "DELETE" | "OPTIONS" | "HEAD" | "PATCH">>>(operations: T, options?: { openApiPath?: OpenApiPathItem; }) => { [key in T[keyof T]["method"]]: { (req: NextRequest, context: { params: BaseParams; }): Promise<NextResponse<unknown> | TypedNextResponseType<unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes>>; _getPathsForRoute(route: string): Promise<NrfOasData>; }; }; declare const rpcRoute: <T extends Record<string, RpcOperationDefinition<any, any, any>>>(operations: T, options?: { openApiPath?: OpenApiPathItem; }) => { POST: { (req: NextRequest, { params }: { params: BaseParams; }): Promise<NextResponse<any>>; _getPathsForRoute(route: string): Promise<NrfOasData>; client: RpcClient<T>; }; }; interface NrfOasData { paths?: OpenAPIV3_1.PathsObject; schemas?: Record<string, OpenAPIV3_1.SchemaObject>; } type TypedNextApiRequest<Body = unknown, Query = BaseQuery> = Modify<NextApiRequest, { body: Body; query: Query; method: ValidMethod; }>; type TypedNextApiResponse<Body, Status, ContentType> = Modify<NextApiResponse<Body>, { status: (status: Status) => TypedNextApiResponse<Body, Status, ContentType>; redirect: (status: Status, url: string) => TypedNextApiResponse<Body, Status, ContentType>; setDraftMode: (options: { enable: boolean; }) => TypedNextApiResponse<Body, Status, ContentType>; setPreviewData: (data: object | string, options?: { maxAge?: number; path?: string; }) => TypedNextApiResponse<Body, Status, ContentType>; clearPreviewData: (options?: { path?: string; }) => TypedNextApiResponse<Body, Status, ContentType>; setHeader: <K extends AnyCase<'Content-Type'> | string, V extends number | string | readonly string[]>(name: K, value: K extends AnyCase<'Content-Type'> ? ContentType : V) => void; }>; type TypedApiRouteHandler<Body = unknown, Query extends BaseQuery = BaseQuery, Options extends BaseOptions = BaseOptions, ResponseBody = unknown, Status extends BaseStatus = BaseStatus, ContentType extends BaseContentType = BaseContentType, Outputs extends ReadonlyArray<OutputObject<ResponseBody, Status, ContentType>> = ReadonlyArray<OutputObject<ResponseBody, Status, ContentType>>> = (req: TypedNextApiRequest<Body, Query>, res: TypedNextApiResponse<z.infer<Outputs[number]['schema']>, Outputs[number]['status'], Outputs[number]['contentType']>, options: Options) => Promise<void> | void; type ApiRouteMiddleware<InputOptions extends BaseOptions = BaseOptions, OutputOptions extends BaseOptions = BaseOptions, ResponseBody = unknown, Status extends BaseStatus = BaseStatus, ContentType extends BaseContentType = BaseContentType, Outputs extends ReadonlyArray<OutputObject<ResponseBody, Status, ContentType>> = ReadonlyArray<OutputObject<ResponseBody, Status, ContentType>>> = (req: NextApiRequest, res: TypedNextApiResponse<z.infer<Outputs[number]['schema']>, Outputs[number]['status'], Outputs[number]['contentType']>, options: InputOptions) => Promise<void> | void | OutputOptions; interface InputObject<Body = unknown, Query = BaseQuery> { contentType?: BaseContentType; body?: ZodSchema<Body>; query?: ZodSchema<Query>; } interface ApiRouteOperationDefinition<Method extends keyof typeof ValidMethod = keyof typeof ValidMethod> { openApiOperation?: OpenApiOperation; method: Method; input?: InputObject; outputs?: readonly OutputObject[]; middleware1?: ApiRouteMiddleware; middleware2?: ApiRouteMiddleware; middleware3?: ApiRouteMiddleware; handler?: TypedApiRouteHandler; } declare const apiRouteOperation: <Method extends "GET" | "PUT" | "POST" | "DELETE" | "OPTIONS" | "HEAD" | "PATCH">({ openApiOperation, method }: { openApiOperation?: Partial<Pick<openapi_types.OpenAPIV3_1.OperationObject<{}>, "servers" | "security" | "tags" | "externalDocs" | "description" | "summary" | "parameters" | "callbacks" | "deprecated">> | undefined; method: Method; }) => { input: <Body_1, Query extends BaseQuery>(input: InputObject<Body_1, Query>) => { outputs: <ResponseBody, Status extends number, ContentType extends AnyContentTypeWithAutocompleteForMostCommonOnes, Outputs extends readonly OutputObject<ResponseBody, Status, ContentType>[]>(outputs: Outputs) => { middleware: <Options1 extends BaseOptions>(middleware1: ApiRouteMiddleware<BaseOptions, Options1, ResponseBody, Status, ContentType, Outputs>) => { middleware: <Options2 extends BaseOptions>(middleware2: ApiRouteMiddleware<Options1, Options2, ResponseBody, Status, ContentType, Outputs>) => { middleware: <Options3 extends BaseOptions>(middleware3: ApiRouteMiddleware<Options2, Options3, ResponseBody, Status, ContentType, Outputs>) => { handler: (handler: TypedApiRouteHandler<Body_1, Query, Options3, ResponseBody, Status, ContentType, Outputs>) => ApiRouteOperationDefinition<Method>; }; handler: (handler: TypedApiRouteHandler<Body_1, Query, Options2, ResponseBody, Status, ContentType, Outputs>) => ApiRouteOperationDefinition<Method>; }; handler: (handler: TypedApiRouteHandler<Body_1, Query, Options1, ResponseBody, Status, ContentType, Outputs>) => ApiRouteOperationDefinition<Method>; }; handler: (handler: TypedApiRouteHandler<Body_1, Query, BaseOptions, ResponseBody, Status, ContentType, Outputs>) => ApiRouteOperationDefinition<Method>; }; middleware: <Options1_1 extends BaseOptions>(middleware1: ApiRouteMiddleware<BaseOptions, Options1_1, unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes, readonly OutputObject<unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes>[]>) => { middleware: <Options2_1 extends BaseOptions>(middleware2: ApiRouteMiddleware<Options1_1, Options2_1, unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes, readonly OutputObject<unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes>[]>) => { middleware: <Options3_1 extends BaseOptions>(middleware3: ApiRouteMiddleware<Options2_1, Options3_1, unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes, readonly OutputObject<unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes>[]>) => { outputs: <ResponseBody_1, Status_1 extends number, ContentType_1 extends AnyContentTypeWithAutocompleteForMostCommonOnes, Outputs_1 extends readonly OutputObject<ResponseBody_1, Status_1, ContentType_1>[]>(outputs: Outputs_1) => { handler: (handler: TypedApiRouteHandler<Body_1, Query, Options3_1, ResponseBody_1, Status_1, ContentType_1, Outputs_1>) => ApiRouteOperationDefinition<Method>; }; handler: (handler: TypedApiRouteHandler<Body_1, Query, Options3_1, unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes, readonly OutputObject<unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes>[]>) => ApiRouteOperationDefinition<Method>; }; outputs: <ResponseBody_2, Status_2 extends number, ContentType_2 extends AnyContentTypeWithAutocompleteForMostCommonOnes, Outputs_2 extends readonly OutputObject<ResponseBody_2, Status_2, ContentType_2>[]>(outputs: Outputs_2) => { handler: (handler: TypedApiRouteHandler<Body_1, Query, Options2_1, ResponseBody_2, Status_2, ContentType_2, Outputs_2>) => ApiRouteOperationDefinition<Method>; }; handler: (handler: TypedApiRouteHandler<Body_1, Query, Options2_1, unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes, readonly OutputObject<unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes>[]>) => ApiRouteOperationDefinition<Method>; }; outputs: <ResponseBody_3, Status_3 extends number, ContentType_3 extends AnyContentTypeWithAutocompleteForMostCommonOnes, Outputs_3 extends readonly OutputObject<ResponseBody_3, Status_3, ContentType_3>[]>(outputs: Outputs_3) => { handler: (handler: TypedApiRouteHandler<Body_1, Query, Options1_1, ResponseBody_3, Status_3, ContentType_3, Outputs_3>) => ApiRouteOperationDefinition<Method>; }; handler: (handler: TypedApiRouteHandler<Body_1, Query, Options1_1, unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes, readonly OutputObject<unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes>[]>) => ApiRouteOperationDefinition<Method>; }; handler: (handler: TypedApiRouteHandler<Body_1, Query, BaseOptions, unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes, readonly OutputObject<unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes>[]>) => ApiRouteOperationDefinition<Method>; }; outputs: <ResponseBody_4, Status_4 extends number, ContentType_4 extends AnyContentTypeWithAutocompleteForMostCommonOnes, Outputs_4 extends readonly OutputObject<ResponseBody_4, Status_4, ContentType_4>[]>(outputs: Outputs_4) => { middleware: <Options1_2 extends BaseOptions>(middleware1: ApiRouteMiddleware<BaseOptions, Options1_2, unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes, readonly OutputObject<unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes>[]>) => { middleware: <Options2_2 extends BaseOptions>(middleware2: ApiRouteMiddleware<Options1_2, Options2_2, unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes, readonly OutputObject<unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes>[]>) => { middleware: <Options3_2 extends BaseOptions>(middleware3: ApiRouteMiddleware<Options2_2, Options3_2, unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes, readonly OutputObject<unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes>[]>) => { handler: (handler: TypedApiRouteHandler<unknown, BaseQuery, Options3_2, ResponseBody_4, Status_4, ContentType_4, Outputs_4>) => ApiRouteOperationDefinition<Method>; }; handler: (handler: TypedApiRouteHandler<unknown, BaseQuery, Options2_2, ResponseBody_4, Status_4, ContentType_4, Outputs_4>) => ApiRouteOperationDefinition<Method>; }; handler: (handler: TypedApiRouteHandler<unknown, BaseQuery, Options1_2, ResponseBody_4, Status_4, ContentType_4, Outputs_4>) => ApiRouteOperationDefinition<Method>; }; handler: (handler: TypedApiRouteHandler<unknown, BaseQuery, BaseOptions, ResponseBody_4, Status_4, ContentType_4, Outputs_4>) => ApiRouteOperationDefinition<Method>; }; middleware: <Options1_3 extends BaseOptions>(middleware1: ApiRouteMiddleware<BaseOptions, Options1_3, unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes, readonly OutputObject<unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes>[]>) => { middleware: <Options2_3 extends BaseOptions>(middleware2: ApiRouteMiddleware<Options1_3, Options2_3, unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes, readonly OutputObject<unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes>[]>) => { middleware: <Options3_3 extends BaseOptions>(middleware3: ApiRouteMiddleware<Options2_3, Options3_3, unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes, readonly OutputObject<unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes>[]>) => { handler: (handler: TypedApiRouteHandler<unknown, BaseQuery, Options3_3, unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes, readonly OutputObject<unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes>[]>) => ApiRouteOperationDefinition<Method>; }; handler: (handler: TypedApiRouteHandler<unknown, BaseQuery, Options2_3, unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes, readonly OutputObject<unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes>[]>) => ApiRouteOperationDefinition<Method>; }; handler: (handler: TypedApiRouteHandler<unknown, BaseQuery, Options1_3, unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes, readonly OutputObject<unknown, number, AnyContentTypeWithAutocompleteForMostCommonOnes>[]>) => ApiRouteOperationDefinition<Method>; }; handler: (handler: TypedApiRouteHandler) => ApiRouteOperationDefinition<Method>; }; declare const apiRoute: <T extends Record<string, ApiRouteOperationDefinition<"GET" | "PUT" | "POST" | "DELETE" | "OPTIONS" | "HEAD" | "PATCH">>>(operations: T, options?: { openApiPath?: OpenApiPathItem; }) => { (req: NextApiRequest, res: NextApiResponse): Promise<Response | undefined>; _getPathsForRoute(route: string): Promise<NrfOasData>; }; declare const docsApiRoute: (_config?: NextRestFrameworkConfig) => { (req: NextApiRequest, res: NextApiResponse): Promise<Response | undefined>; _nextRestFrameworkConfig: Required<NextRestFrameworkConfig> & NextRestFrameworkConfig; }; declare const rpcApiRoute: <T extends Record<string, RpcOperationDefinition<any, any, any>>>(operations: T, options?: { openApiPath?: OpenApiPathItem; openApiOperation?: OpenApiOperation; }) => { (req: NextApiRequest, res: NextApiResponse): Promise<Response | undefined>; _getPathsForRoute(route: string): Promise<NrfOasData>; client: RpcClient<T>; }; export { TypedNextResponse, apiRoute, apiRouteOperation, docsApiRoute, docsRoute, route, routeOperation, rpcApiRoute, rpcRoute };