import { Request, RequestHandler, NextFunction, Response, Router as ExpressRouter } from 'express'; import { OpenAPIV3 } from 'openapi-types'; import { Endpoint } from './Endpoint.class'; export interface Doc extends Omit { responses?: OpenAPIV3.ResponsesObject; } export interface DocResponse extends Omit { } export interface Route { path: string; method: OpenAPIV3.HttpMethods; } export interface EndpointInstance { route: Route; doc: OpenAPIV3.OperationObject; endpoints: Endpoint[]; handlers: ((req: Request, res: Response, next: NextFunction) => Promise)[]; } declare type Router = Omit & RequestHandler & { [method in OpenAPIV3.HttpMethods]: (path: string, ...endpoints: Endpoint[]) => Router; } & { endpointInstances: EndpointInstance[]; doc: OpenAPIV3.PathsObject<{}, {}>; }; export declare function Router(): Router; export {};