import AppCLI from '../helpers/lib/app';
import IPlugin, { RunningPlatforms } from '../types/plugin/interface/IPlugin';
import IInstance from '../types/plugin/interface/IInstance';
import IGluePluginStore from '../types/store/interface/IGluePluginStore';
export default abstract class BaseGluestackPlugin implements IPlugin {
    app: AppCLI;
    instances: IInstance[];
    type: 'stateless' | 'stateful' | 'devonly';
    gluePluginStore: IGluePluginStore;
    runningPlatforms: RunningPlatforms;
    pluginEnvironment: 'server' | 'client';
    constructor(app: AppCLI, gluePluginStore: IGluePluginStore);
    abstract init(): void;
    abstract destroy(): void;
    abstract getVersion(): string;
    abstract getName(): string;
    abstract runPostInstall(instanceName: string, target: string): void;
    abstract createInstance(key: string, gluePluginStore: IGluePluginStore, installationPath: string): IInstance;
    getType(): 'stateless' | 'stateful' | 'devonly';
    prepare(): Promise<void>;
    getTemplateFolderPath(): string;
    getPackagePath(): string;
    getInstallationPath(target: string): string;
    getInstances(): IInstance[];
    getPluginEnvironment(): "server" | "client";
    build(): Promise<void>;
    watch(callback: Function): Promise<void>;
}
