import {BaseProcess} from "../../core/process/BaseProcess";
import {Reference} from "../reference/v2/Reference";

interface Type<T> extends Function {
    new(...args: any[]): T;
}

export class EnginePluginManager extends BaseProcess {
    acquire<T>(klass: Type<T>): Promise<Reference<T>>

    getPlugin<T>(klass: Type<T>): T | undefined

    startup(): Promise<void>

    shutdown(): Promise<void>
}
