import { Request, Response, NextFunction, Router } from 'express'; import { OpenAPIV3 } from 'express-openapi-validator/dist/framework/types'; import { operations as Operations, paths as Paths } from './generated'; declare type KeysOfUnion = T extends T ? keyof T : never; declare type Url = keyof Paths; declare type Method = KeysOfUnion; export declare const openapi: OpenAPIV3.Document; export declare type RouteType = [ Operations[O] extends { parameters: { path: any; }; } ? Operations[O]['parameters']['path'] : undefined, Operations[O]['responses'][200]['content'][keyof Operations[O]['responses'][200]['content']], undefined, Operations[O] extends { parameters: { query: any; }; } ? Operations[O]['parameters']['query'] : undefined ]; export interface Route { url: string; method: Method; resolver: (req: Request[0], RouteType[1], RouteType[2], RouteType[3]>, resp: Response[1]>, next: NextFunction) => unknown; } export declare function createRoute(operation: O, resolver: (req: Request[0], RouteType[1], RouteType[2], RouteType[3]>, resp: Response[1]>, next: NextFunction) => unknown): Route; export declare function createRouter(routes: Route[]): Router; export declare function getRouteUrl(operation: O, params: RouteType[0], query: RouteType[3]): string; export {};