import type { Server } from 'http'; import type { SlotRegistry } from '@teambit/harmony'; import type { Logger, LoggerMain } from '@teambit/logger'; import type { Express } from 'express'; import type { Route } from './types'; import type { MiddlewareManifest } from './middleware-manifest'; export type ExpressConfig = { port: number; namespace: string; loggerIgnorePath: string[]; }; export type MiddlewareSlot = SlotRegistry; export type RouteSlot = SlotRegistry; export declare class ExpressMain { /** * extension config */ readonly config: ExpressConfig; /** * slot for registering graphql modules */ private moduleSlot; /** * logger extension. */ readonly logger: Logger; readonly middlewareSlot: MiddlewareSlot; static runtime: import("@teambit/harmony").RuntimeDefinition; constructor( /** * extension config */ config: ExpressConfig, /** * slot for registering graphql modules */ moduleSlot: RouteSlot, /** * logger extension. */ logger: Logger, middlewareSlot: MiddlewareSlot); /** * start an express server. */ listen(port?: number): Promise; static(root: string, opts?: any): any; /** * register a new express routes. * route will be added as `/api/${route}` */ register(routes: Route[]): this; /** * register a new middleware into express. */ registerMiddleware(middlewares: MiddlewareManifest[]): this; private createRootRoutes; createApp(expressApp?: Express, options?: { disableBodyParser: true; }): Express; private createRoutes; private verbValidation; private catchErrorsMiddlewares; private bodyParser; static slots: (((registerFn: () => string) => SlotRegistry) | ((registerFn: () => string) => SlotRegistry))[]; static dependencies: import("@teambit/harmony").Aspect[]; static defaultConfig: { port: number; namespace: string; loggerIgnorePath: string[]; }; static provider([loggerFactory]: [LoggerMain], config: ExpressConfig, [routeSlot, middlewareSlot]: [RouteSlot, MiddlewareSlot]): Promise; }