declare module "next-connect" { import { IncomingMessage, ServerResponse } from "http"; export type NextHandler = (err?: any) => void; export type Middleware = | NextConnect | RequestHandler; export type NoMatchHandler = ( req: Req, res: Res ) => any | Promise; export type RequestHandler = ( req: Req, res: Res, next: NextHandler ) => any | Promise; export type ErrorHandler = ( err: any, req: Req, res: Res, next: NextHandler ) => any | Promise; export interface Options { onError?: ErrorHandler; onNoMatch?: NoMatchHandler; attachParams?: boolean; disableResponseWait?: boolean; } interface NextConnect { (req: Req, res: Res): Promise; use( ...handlers: Middleware[] ): this; use( pattern: string | RegExp, ...handlers: Middleware[] ): this; all( ...handlers: RequestHandler[] ): this; all( pattern: string | RegExp, ...handlers: RequestHandler[] ): this; get( ...handlers: RequestHandler[] ): this; get( pattern: string | RegExp, ...handlers: RequestHandler[] ): this; head( ...handlers: RequestHandler[] ): this; head( pattern: string | RegExp, ...handlers: RequestHandler[] ): this; post( ...handlers: RequestHandler[] ): this; post( pattern: string | RegExp, ...handlers: RequestHandler[] ): this; put( ...handlers: RequestHandler[] ): this; put( pattern: string | RegExp, ...handlers: RequestHandler[] ): this; delete( ...handlers: RequestHandler[] ): this; delete( pattern: string | RegExp, ...handlers: RequestHandler[] ): this; options( ...handlers: RequestHandler[] ): this; options( pattern: string | RegExp, ...handlers: RequestHandler[] ): this; trace( ...handlers: RequestHandler[] ): this; trace( pattern: string | RegExp, ...handlers: RequestHandler[] ): this; patch( ...handlers: RequestHandler[] ): this; patch( pattern: string | RegExp, ...handlers: RequestHandler[] ): this; run(req: Req, res: Res): Promise; } export default function ( options?: Options ): NextConnect; }