import Emittery from 'emittery'; import { TaskManager } from '@mlytics/core-ts/core/util/future'; interface SpecDaemon { activate(): Promise; deactivate(): Promise; } declare abstract class AbstractDaemon extends Emittery implements SpecDaemon { protected _taskManager: TaskManager; protected abstract _initialize(): void; activate(): Promise; protected abstract _activate(): Promise; deactivate(): Promise; protected abstract _deactivate(): Promise; protected abstract _storePool(): Promise; protected abstract _clearPool(): Promise; protected abstract _buildTasks(): Promise; protected abstract _recordEnabled(): Promise; protected abstract _recordDisabled(): Promise; } export { SpecDaemon, AbstractDaemon };