import { Request, Response, Handler as Handler$1, Express } from 'express'; import { Server } from 'http'; import { Server as Server$1 } from 'https'; import { AddressInfo } from 'net'; import { AsyncLocalStorage } from 'node:async_hooks'; import { OptionsJson } from 'body-parser'; import { CookieParseOptions } from 'cookie-parser'; import { CorsOptions, CorsOptionsDelegate } from 'cors'; import { HelmetOptions } from 'helmet'; declare const getStats: (port: any) => { set: (field: any, number?: number) => number; add: (field: any, number?: number) => number; getCounter: (field: any) => number; registerEvent: (eventName: any, data: any) => void; getEvents: (eventName: any) => any; logStartup: () => any; }; interface ErrorClass { new (...args: unknown[]): TError; } type Path = string; type Config = { cors?: CorsOptions | CorsOptionsDelegate | false; jsonBodyParser?: OptionsJson | false; cookieParser?: [secret?: string | string[], options?: CookieParseOptions] | false; helmet?: HelmetOptions | false; }; type ContextContainer = Record> = { get: (key: TKey) => TContext[TKey]; set: (key: TKey, value: TContext[TKey]) => void; nativeLocalStorage: AsyncLocalStorage; run: (fn: (...params: TParams) => Promise, ...params: TParams) => Promise; }; type GetContextContainerHelper = Record> = () => { get: (key: TKey) => TContext[TKey]; set: (key: TKey, value: TContext[TKey]) => void; nativeLocalStorage: AsyncLocalStorage; }; type HandlerParams = Record, TRequestContext extends Record = Record, TGlobalContext extends Record = Record> = { body: any; query: any; params: any; method: string; originalUrl: string; protocol: string; xhr: boolean; getHeader: (x: string) => string; get: (x: string) => string; locals: TLocals; next: (error?: any) => void; req: Request & { requestTiming?: number; }; res: Response; requestContext: TRequestContext extends false ? TRequestContext extends false ? never : never : ContextContainer; globalContext: TGlobalContext extends false ? TGlobalContext extends false ? never : never : ContextContainer; }; type Headers = { [headerName: string]: string; }; type ResponseDefinition = { body?: string | object | Buffer; status?: number; method?: string; redirect?: false | string; headers?: Headers; type?: string; }; type SingleHandler = Record, TLocals extends Record = Record, TRequestContext extends Record = Record, TGlobalContext extends Record = Record> = (handlerParams: HandlerParams & AdditionalRouteParams) => ResponseDefinition | Promise | Error | Promise | void | Promise | Promise; type Handler = Record, TLocals extends Record = Record, TRequestContext extends Record = Record, TGlobalContext extends Record = Record> = SingleHandler | Handler[]; type SingleErrorHandler = Record, TLocals extends Record = Record, TRequestContext extends Record = Record, TGlobalContext extends Record = Record, TError extends Error = Error> = (error: TError, handlerParams: Omit, 'params'> & AdditionalRouteParams) => ResponseDefinition | Promise | Error | Promise | void | Promise | Promise; type ErrorHandler = Record, TLocals extends Record = Record, TRequestContext extends Record = Record, TGlobalContext extends Record = Record, TError extends Error = Error> = SingleErrorHandler | ErrorHandler[]; type HttpMethod = 'use' | 'get' | 'post' | 'put' | 'delete' | 'del' | 'options' | 'patch' | 'head' | 'checkout' | 'copy' | 'lock' | 'merge' | 'mkactivity' | 'mkcol' | 'move' | 'm-search' | 'notify' | 'purge' | 'report' | 'search' | 'subscribe' | 'trace' | 'unlock' | 'unsubscribe'; type Handlers = Record, TLocals extends Record = Record, TRequestContext extends Record = Record, TGlobalContext extends Record = Record> = { [method in HttpMethod]?: Handler | Handler[]; }; type PathObjectRoutes = Record, TLocals extends Record = Record, TRequestContext extends Record = Record, TGlobalContext extends Record = Record> = { [path: string]: Handler | Handlers | Handlers[] | PathObjectRoutes | PathObjectRoutes[] | Routes; }; type ObjectRoute = Record, TLocals extends Record = Record, TRequestContext extends Record = Record, TGlobalContext extends Record = Record> = { path: Path; handlers?: Handlers | Handlers[]; routes?: Routes; }; type ArrayOfArraysRest = Record, TLocals extends Record = Record, TRequestContext extends Record = Record, TGlobalContext extends Record = Record> = Routes | Handlers | Handlers[] | Handler | Handler[] | ArrayOfArrays | ArrayOfArraysRest[]; type ArrayOfArrays = Record, TLocals extends Record = Record, TRequestContext extends Record = Record, TGlobalContext extends Record = Record> = [ Path, ...ArrayOfArraysRest[] ]; type Routes = Record, TLocals extends Record = Record, TRequestContext extends Record = Record, TGlobalContext extends Record = Record> = ObjectRoute[] | Routes[] | ArrayOfArrays | ObjectRoute | PathObjectRoutes; type GetHandlerParams = = Record, TLocals extends Record = Record, TRequestContext extends Record = Record, TGlobalContext extends Record = Record>(params: HandlerParams & AdditionalRouteParams) => Record; type GetErrorHandlerParams = = Record, TLocals extends Record = Record, TRequestContext extends Record = Record, TGlobalContext extends Record = Record>(params: HandlerParams & AdditionalRouteParams) => Record; type MapResponse = = Record>(responseObject: ResponseDefinition, routeParams: AdditionalRouteParams) => Record; type Plugin = Record, TLocals extends Record = Record, TRequestContext extends Record = Record, TGlobalContext extends Record = Record> = (config: SimpleExpressConfigForPlugins) => { getHandlerParams?: GetHandlerParams; getErrorHandlerParams?: GetErrorHandlerParams; mapResponse?: MapResponse; }; type RequestContextConfig = Record, AdditionalRouteParams extends Record = Record, TLocals extends Record = Record> = (handlerParams: HandlerParams & AdditionalRouteParams) => RequestContext; type GlobalContextConfig = Record> = GlobalContext; type SimpleExpressConfig = Record, TLocals extends Record = Record, TRequestContext extends Record = Record, TGlobalContext extends Record = Record> = { port?: string | number; routes?: Routes; middleware?: Handler | Handler[]; errorHandlers?: ErrorHandler | ErrorHandler[]; expressMiddleware?: Handler$1[]; config?: Config; routeParams?: AdditionalRouteParams; app?: Express | symbol; server?: Server | Server$1 | symbol; plugins?: Plugin[]; requestContext?: RequestContextConfig | false; globalContext?: GlobalContextConfig | false; }; type SimpleExpressConfigForPlugins = Record, TLocals extends Record = Record, TRequestContext extends Record = Record, TGlobalContext extends Record = Record> = { port?: string | number; routes?: Routes; middleware?: Handler | Handler[]; errorHandlers?: ErrorHandler | ErrorHandler[]; expressMiddleware?: Handler$1[]; config?: Config; routeParams?: AdditionalRouteParams; app?: Express | symbol; server?: Server | Server$1 | symbol; plugins?: Plugin[]; requestContext?: RequestContextConfig | false; globalContext?: GlobalContextConfig | false; }; type SimpleExpressResult = Record, TGlobalContext extends Record = Record> = { app: Express; server: Server | Server$1; stats: ReturnType; port: string | number; address: AddressInfo | string | null; getRequestContext: GetContextContainerHelper; getGlobalContext: GetContextContainerHelper; }; type ErrorClassInput = ErrorClass | readonly ErrorClass[] | undefined | null; type InferErrorFromClassInput = TErrorClassInput extends readonly ErrorClass[] ? InstanceType : TErrorClassInput extends ErrorClass ? InstanceType : Error; type FallbackErrorHandler, TLocals extends Record, TRequestContext extends Record = Record, TGlobalContext extends Record = Record> = SingleErrorHandler; type ErrorHandlerTupleForClassInput, TLocals extends Record, TRequestContext extends Record = Record, TGlobalContext extends Record = Record, TErrorClassInput extends ErrorClassInput = ErrorClassInput> = readonly [ errorClass: TErrorClassInput, errorHandler: SingleErrorHandler> ]; type SingleErrorHandlerTuple, TLocals extends Record, TRequestContext extends Record = Record, TGlobalContext extends Record = Record> = readonly [ errorHandler: FallbackErrorHandler ]; type ErrorHandlersList, TLocals extends Record, TRequestContext extends Record = Record, TGlobalContext extends Record = Record, TClassInputs extends readonly ErrorClassInput[] = readonly ErrorClassInput[]> = { [K in keyof TClassInputs]: ErrorHandlerTupleForClassInput | SingleErrorHandlerTuple | FallbackErrorHandler; }; type HandleErrorReturn, TLocals extends Record, TRequestContext extends Record = Record, TGlobalContext extends Record = Record> = FallbackErrorHandler[]; declare function handleErrors, TLocals extends Record, TRequestContext extends Record = Record, TGlobalContext extends Record = Record, TErrorClass extends ErrorClass = ErrorClass>(errorClass: TErrorClass, errorHandler: SingleErrorHandler>): HandleErrorReturn; declare function handleErrors, TLocals extends Record, TRequestContext extends Record = Record, TGlobalContext extends Record = Record, TErrorClasses extends readonly ErrorClass[] = readonly ErrorClass[]>(errorClasses: TErrorClasses, errorHandler: SingleErrorHandler>): HandleErrorReturn; declare function handleErrors, TLocals extends Record, TRequestContext extends Record = Record, TGlobalContext extends Record = Record>(errorHandler: FallbackErrorHandler): HandleErrorReturn; declare function handleErrors, TLocals extends Record, TRequestContext extends Record = Record, TGlobalContext extends Record = Record, TClassInputs extends readonly ErrorClassInput[] = readonly ErrorClassInput[]>(handlers: ErrorHandlersList): HandleErrorReturn; declare function handleErrors, TLocals extends Record, TRequestContext extends Record = Record, TGlobalContext extends Record = Record, TClassInputs extends readonly ErrorClassInput[] = readonly ErrorClassInput[]>(handlers: ErrorHandlersList, defaultErrorHandler: FallbackErrorHandler): HandleErrorReturn; declare const ensureArray: (value: T) => T extends any[] ? T : T[]; declare let getRequestContext: any; declare let getGlobalContext: any; declare const simpleExpress: = Record, TLocals extends Record = Record, TRequestContext extends Record = Record, TGlobalContext extends Record = Record>({ port, plugins: rawPlugins, requestContext: requestContextConfig, globalContext: globalContextConfig, routes, middleware: rawMiddleware, errorHandlers, expressMiddleware, config: userConfig, routeParams, app: userApp, server: userServer, }?: SimpleExpressConfig) => Promise>; declare const wrapMiddleware: (...middleware: (Handler$1 | Handler$1[])[]) => (({ req, res, next }: HandlerParams) => void)[]; export { type Config, type ErrorHandler, type Handler, type HandlerParams, type Plugin, type Routes, type SimpleExpressConfig, type SimpleExpressConfigForPlugins, type SimpleExpressResult, simpleExpress as default, ensureArray, getGlobalContext, getRequestContext, handleErrors as handleError, simpleExpress, wrapMiddleware };