///
///
///
///
import { Server } from 'http';
import * as Koa from 'koa';
import * as Router from 'koa-router';
import { Component } from '../../Component';
import { IOn } from '../../index';
import { HttpRequestEvent } from '../HttpRequest/HttpRequestEvent';
import { Hub } from '../Hub';
export interface IRouteConfig {
methods: string[];
path: string;
component: Component;
}
/**
* This acts as a http event emitter, maintaining routes to components
* and specifically emitting to those components based on routes
*/
export declare class HttpServer extends Component {
Emit: {
(name: 'HttpServer.ready', component: HttpServer);
(name: 'HttpServer.request', event: HttpRequestEvent): Promise | HttpRequestEvent;
};
On: (IOn<{
name: 'HttpServer.ready';
event: HttpServer;
}> & IOn<{
name: 'HttpServer.request';
event: HttpRequestEvent;
return: Promise | HttpRequestEvent;
}>);
Declared: ('HttpServer.request' | 'HttpServer.request.response' | 'HttpServer.ready');
port: number;
host: string;
protocol: 'http' | 'https';
protected app: Koa;
protected router: Router;
protected server: Server;
constructor(config: {
port: HttpServer['port'];
host: HttpServer['host'];
});
readonly uri: string;
route(routePath: string): {
to: (component: Component) => HttpServer;
};
private registerRoute({component, methods, path});
private createRequestMiddleware;
}