/// import * as t from './common/types'; export declare type ILogProps = { [key: string]: string | number | boolean | undefined; }; export declare type ServerStart = (options?: { port?: number | string; log?: ILogProps; silent?: boolean; }) => Promise; export declare type IMicro = { server: t.Server; router: t.IRouter; handler: t.RouteHandler; service?: IMicroService; events$: t.Observable; request$: t.Observable; response$: t.Observable; start: ServerStart; stop(): Promise; }; export declare type IMicroService = { port: number; isRunning: boolean; events$: t.Observable; request$: t.Observable; response$: t.Observable; stop(): Promise; }; export declare type MicroEvent = IMicroStartedEvent | IMicroStoppedEvent | IMicroRequestEvent | IMicroResponseEvent; export declare type IMicroStartedEvent = { type: 'SERVICE/started'; payload: IMicroStarted; }; export declare type IMicroStarted = { elapsed: t.IDuration; port: number; }; export declare type IMicroStoppedEvent = { type: 'SERVICE/stopped'; payload: IMicroStopped; }; export declare type IMicroStopped = { elapsed: t.IDuration; port: number; error?: string; }; export declare type IMicroRequestEvent = { type: 'SERVICE/request'; payload: IMicroRequest; }; export declare type IMicroRequest = { method: t.HttpMethod; url: string; req: t.IncomingMessage; error?: string; isModified: boolean; modify(input: IMicroRequestModify | (() => Promise)): void; }; export declare type IMicroRequestModify = any> = { context?: C; }; export declare type IMicroResponseEvent = { type: 'SERVICE/response'; payload: IMicroResponse; }; export declare type IMicroResponse = any> = { elapsed: t.IDuration; method: t.HttpMethod; url: string; req: t.IncomingMessage; res: t.IRouteResponse; error?: string; isModified: boolean; context: C; modify(input: t.IRouteResponse | (() => Promise)): void; };