import { Router } from 'express'; import { Socket } from 'socket.io'; import Squad from './squad'; import Scheduler from '../model/scheduler'; import { SMQClient } from '../interfaces/client.smq'; import { Packet } from '../model/packet'; export interface ServiceConfig { id: string; name: string; description: string; jsonLimit: string; routes: Router[]; database?: string; swarmMQ?: { onConnect: () => Promise; onDisconnect: () => Promise; onMessage: (packet: Packet) => Promise; }; startHandler?: () => Promise; stopHandler?: () => Promise; socketHandler?: (socket: Socket) => Promise; scheduler?: Scheduler[]; } export default class Service { private config; private server; private database; private squad; private smqClient; constructor(config: ServiceConfig); start(): Promise; private executeAndScheduleTask; private setupExpress; private setupStopListener; stop(): Promise; getSquad(): Squad; getSMQClient(): SMQClient; }