import { SchemaValues } from '@sprucelabs/schema';
import { SpruceSchemas } from './../../.spruce/schemas/schemas.types';
import { FileDescription, NpmPackage } from '../../types/cli.types';
import AbstractFeature, { FeatureOptions } from '../AbstractFeature';
import { FeatureCode } from '../features.types';
export default class SkillFeature<S extends SkillFeatureOptionsSchema = SkillFeatureOptionsSchema> extends AbstractFeature<S> {
    nameReadable: string;
    code: FeatureCode;
    description: string;
    readonly installOrderWeight = 100;
    protected _packageDependencies: NpmPackage[];
    optionsSchema: S;
    actionsDir: string;
    private engines;
    scripts: {
        build: string;
        'build.ci': string;
        'build.dev': string;
        'build.copy-files': string;
        'build.resolve-paths': string;
        'build.tsc': string;
        clean: string;
        'clean.all': string;
        'clean.build': string;
        'clean.dependencies': string;
        'fix.lint': string;
        lint: string;
        'lint.tsc': string;
        'post.watch.build': string;
        rebuild: string;
        'update.dependencies': string;
        'resolve-paths.lint': string;
        test: string;
        'watch.build.dev': string;
        'watch.rebuild': string;
        'watch.tsc': string;
        boot: string;
        'boot.local': string;
        health: string;
        'health.local': string;
    };
    readonly fileDescriptions: FileDescription[];
    constructor(options: FeatureOptions);
    private handleRegisterAbstractTestClasses;
    beforePackageInstall(options: SkillFeatureOptions): Promise<{
        files: import("../../writers/AbstractWriter").WriteResults;
        cwd: string;
    }>;
    afterPackageInstall(options: SkillFeatureOptions): Promise<{}>;
    private install;
    private resolveDestination;
    installScripts(destination?: string): Promise<void>;
    setEngines(destination: string): void;
    handleWillExecute(options: {
        featureCode: string;
        actionCode: string;
        options?: UpgradeOptions;
    }): Promise<{
        files: import("../../writers/AbstractWriter").WriteResults;
    } | {
        files?: undefined;
    }>;
}
type SkillFeatureOptionsSchema = SpruceSchemas.SpruceCli.v2020_07_22.SkillFeatureSchema;
type SkillFeatureOptions = SpruceSchemas.SpruceCli.v2020_07_22.SkillFeature;
declare module '../../features/features.types' {
    interface FeatureMap {
        skill: SkillFeature;
    }
    interface FeatureOptionsMap {
        skill: SchemaValues<SkillFeatureOptionsSchema>;
    }
}
type UpgradeOptions = SpruceSchemas.SpruceCli.v2020_07_22.UpgradeSkillOptions;
export {};
