import Emittery from 'emittery'; import { Nullable } from '@mlytics/core-ts/core/type/basic'; import { DelayBackoff } from '@mlytics/core-ts/core/util/backoff'; import { TaskManager } from '@mlytics/core-ts/core/util/future'; import { AbstractDaemon } from '../daemon/daemon'; interface SpecLauncher { activate(): Promise; deactivate(): Promise; reactivate(): Promise; } declare abstract class AbstractLauncher extends Emittery implements SpecLauncher { protected _daemon?: Nullable; protected _taskManager: TaskManager; protected _backoff: DelayBackoff; protected abstract _initialize(): void; activate(): Promise; protected abstract _activate(): Promise; deactivate(): Promise; protected abstract _deactivate(): Promise; reactivate(): Promise; protected abstract _reactivate(): Promise; protected _terminate(): Promise; protected abstract _bindEvents(): Promise; protected abstract _buildTasks(): Promise; } export { SpecLauncher, AbstractLauncher };