import { ProcessDescription } from 'pm2'; import Environment from '~/environment'; import { HashMap } from '~/types'; import { RunnerMode } from '~/runner'; export default abstract class Apparatus { environment: Environment; static apparatusName: string; protected env: HashMap; protected declaration: Declaration; constructor(environment: Environment, declaration?: Partial); start(options?: Partial, readyCb?: ReadyCallback): Promise; stop(): Promise; abstract onStart(options?: ApparatusStartOptions): Promise; abstract onStop(code?: string | number): Promise; } export interface ApparatusDeclaration { } export interface ApparatusStartOptions { mode: RunnerMode; readyTimeout?: number; } export interface ApparatusContext { paths?: string[]; processDescription?: ProcessDescription; [key: string]: any; } export declare type ReadyCallback = (...args: any[]) => any;