import { ChildProcess } from 'child_process'; import express from 'express'; import { Container } from 'inversify'; import { Logger } from '@5minds/processcube_engine_sdk'; import { BaseController } from '../Api/Controller/BaseController'; import { SocketController } from '../Api/Controller/SocketController'; import { ServiceFacade } from './ServiceFacade'; import { WorkerFacade } from './WorkerFacade'; export type ClassConstructor = new (...args: Array) => unknown; export type SocketControllerConstructor = new (...args: Array) => SocketController; export type ProxyConfiguration = { proxyKey: string; targetKey: string; target: ClassConstructor; provideGlobally?: boolean; getGlobally?: boolean; }; export type HttpRouteConfiguration = { route: string; method: 'post' | 'get' | 'delete' | 'put'; controllerClass: ClassConstructor; controllerMethod: Function; isCancelable?: boolean; isDeprecated?: boolean | string; deprecateSilently?: boolean; }; export declare function subscribable(): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor; export declare function cancelable(): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor; export declare abstract class EngineRouter { engineApiRouter?: express.Router; extensionRouter?: express.Router; protected workerFacade?: WorkerFacade; protected serviceFacade?: ServiceFacade; protected logger: Logger; protected globalContainer: Container; protected routerContainer: Container; private engineApiRoutes; private extensionRoutes; private proxies; private socketControllers; private eventTopicsListening; private loggerNamespace; constructor(workerFacade: WorkerFacade, serviceFacade: ServiceFacade, globalContainer: Container, namespace: string); private onNotificationPublishedCallback; init(): Promise; getChildProcess(): ChildProcess; dispose(): Promise; onNotificationPublished(callback: (topic: string, message: any) => void): void; abstract initProxies(): Array; abstract initSocketController(): Array; abstract initEventTopicsListening(): Array; abstract initHttpRoutes(): Array; protected getExtensionRoutes(): Promise>; protected getController(controller: ClassConstructor): TController; private buildIoc; private buildProxies; private buildControllers; private initMainThreadRouting; private registerEngineApiRoute; private registerExtensionRoute; private registerHttpRoute; private initMainThreadSocketNotificationBindings; private initWorkerRouting; }