/// import { Middleware, MiddlewareFn, FlowHandler } from "./flow"; import * as http from "http"; import Promise from "yaku"; export interface RoutesListen { (): Promise; (port: number, hostname?: string, backlog?: number): Promise; (port: number, hostname?: string): Promise; (path: string): Promise; (handle: any): Promise; } export interface RoutesClose { (): Promise; } export declare class Routes extends Array { constructor(); server: http.Server; address: () => { port: number; family: string; address: string; }; listen: RoutesListen; close: RoutesClose; } export declare type Middleware = Middleware; export interface MiddlewareFn extends MiddlewareFn { } export interface Flow { (): Routes; (...middlewares: Middleware[]): FlowHandler; } /** * Create an array instance with some handy server helper methods. * @param FlowArray middlewares Optional. If not provided, the return type will be * a FlowArray, else a middleware Function. * @return FlowArray | Function * @example * ```js * import flow from "noflow" * let app = flow(); * app.push("OK"); * app.listen(8123).then(() => console.log("started")); * ``` */ declare let flow: Flow; export default flow;