// Type definitions for koa-compose 3.2 // Project: https://github.com/koajs/compose // Definitions by: jKey Lu // Anton Astashov // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.3 import * as Koa from "koa"; declare function compose( middleware: [Koa.Middleware, Koa.Middleware] ): Koa.Middleware; declare function compose( middleware: [Koa.Middleware, Koa.Middleware, Koa.Middleware] ): Koa.Middleware; declare function compose( middleware: [Koa.Middleware, Koa.Middleware, Koa.Middleware, Koa.Middleware] ): Koa.Middleware; declare function compose( middleware: [ Koa.Middleware, Koa.Middleware, Koa.Middleware, Koa.Middleware, Koa.Middleware ] ): Koa.Middleware; declare function compose( middleware: [ Koa.Middleware, Koa.Middleware, Koa.Middleware, Koa.Middleware, Koa.Middleware, Koa.Middleware ] ): Koa.Middleware; declare function compose( middleware: [ Koa.Middleware, Koa.Middleware, Koa.Middleware, Koa.Middleware, Koa.Middleware, Koa.Middleware, Koa.Middleware ] ): Koa.Middleware; declare function compose( middleware: [ Koa.Middleware, Koa.Middleware, Koa.Middleware, Koa.Middleware, Koa.Middleware, Koa.Middleware, Koa.Middleware, Koa.Middleware ] ): Koa.Middleware; declare function compose(middleware: Array>): compose.ComposedMiddleware; declare namespace compose { type Middleware = (context: T, next: Koa.Next) => any; type ComposedMiddleware = (context: T, next?: Koa.Next) => Promise; } export = compose;