import { Blueprint, Predicates } from 'optimal';
import { AbstractConstructor } from '@boost/common';
import ModuleLoader from './ModuleLoader';
export { Blueprint, Predicates };
export interface PluginType<T> {
    afterBootstrap: ((plugin: T) => void) | null;
    beforeBootstrap: ((plugin: T) => void) | null;
    contract: AbstractConstructor<T>;
    loader: ModuleLoader<T>;
    pluralName: string;
    scopes: string[];
    singularName: string;
}
export declare type PluginSetting<P> = (string | {
    [key: string]: any;
} | P)[];
export declare type Status = 'pending' | 'running' | 'skipped' | 'passed' | 'failed';
export declare type OutputLevel = 1 | 2 | 3;
export declare type Color = 'black' | 'red' | 'green' | 'yellow' | 'blue' | 'magenta' | 'cyan' | 'white' | 'gray';
export declare type ColorType = 'default' | 'failure' | 'pending' | 'success' | 'warning';
export declare type ColorPalette = {
    [T in ColorType]: Color | string;
};
export interface BugSetting {
    url?: string;
    email?: string;
}
export interface TypeSetting {
    type: string;
    url: string;
}
export interface PeopleSetting {
    name: string;
    email?: string;
    url?: string;
}
export interface SettingMap {
    [key: string]: string;
}
export interface DependencyMap {
    [module: string]: string;
}
export interface WorkspaceMetadata {
    jsonPath: string;
    packagePath: string;
    packageName: string;
    workspacePath: string;
    workspaceName: string;
}
export interface PackageConfig {
    name: string;
    version: string;
    description?: string;
    keywords?: string[];
    homepage?: string;
    bugs?: string | BugSetting;
    license?: string | TypeSetting | TypeSetting[];
    author?: string | PeopleSetting;
    contributors?: string[] | PeopleSetting[];
    files?: string[];
    main?: string;
    browser?: string;
    bin?: any;
    man?: string | string[];
    repository?: string | TypeSetting;
    scripts?: SettingMap;
    config?: SettingMap;
    dependencies?: DependencyMap;
    devDependencies?: DependencyMap;
    peerDependencies?: DependencyMap;
    bundledDependencies?: string[];
    optionalDependencies?: DependencyMap;
    engines?: SettingMap;
    os?: string[];
    cpu?: string[];
    private?: boolean;
    publishConfig?: SettingMap;
    module?: string;
    sideEffects?: boolean | string[];
}
export interface WorkspacePackageConfig extends PackageConfig {
    workspace: WorkspaceMetadata;
}
export interface WorkspaceOptions {
    relative?: boolean;
    root?: string;
}
//# sourceMappingURL=types.d.ts.map