import * as t from 'typanion';
import { BumpType } from '../../../core/bump-utils';
import { ChangelogEntry } from '../../../core/changelog';
import { IConfiguration, VersionBranch } from '../../../core/configuration';
import { Git } from '../../../core/git';
import { LogReporter } from '../../../core/log-reporter';
import { IProject, IWorkspace } from '../../../core/workspace-utils';
import { IGitPlatform, IPlugin, IPluginInitialize } from '../..';
export declare const isNodeManifest: t.StrictTest<unknown, Partial<Pick<{
    version: string | undefined;
    name: string;
    private: boolean | undefined;
    workspaces: string[] | undefined;
}, "version" | "private" | "workspaces">> & Pick<{
    version: string | undefined;
    name: string;
    private: boolean | undefined;
    workspaces: string[] | undefined;
}, "name"> & {
    [x: string]: unknown;
}> & t.Trait<Partial<Pick<{
    version: string | undefined;
    name: string;
    private: boolean | undefined;
    workspaces: string[] | undefined;
}, "version" | "private" | "workspaces">> & Pick<{
    version: string | undefined;
    name: string;
    private: boolean | undefined;
    workspaces: string[] | undefined;
}, "name"> & {
    [x: string]: unknown;
}> & {
    properties: {
        version: t.StrictValidator<unknown, string | undefined>;
        name: t.StrictValidator<unknown, string>;
        private: t.StrictValidator<unknown, boolean | undefined>;
        workspaces: t.StrictValidator<unknown, string[] | undefined>;
    };
};
export type NodeManifest = t.InferType<typeof isNodeManifest>;
export interface NodeManifestContent {
    manifest: NodeManifest;
    eofInEnd: boolean;
}
export declare function loadManifest(folder: string): Promise<NodeManifestContent | null>;
export declare function persistManifest(folder: string, manifestContent: NodeManifestContent): Promise<void>;
export declare class NodeWorkspace implements IWorkspace {
    protected _project: NodeProject;
    private manifestContent;
    get manifest(): Partial<Pick<{
        version: string | undefined;
        name: string;
        private: boolean | undefined;
        workspaces: string[] | undefined;
    }, "version" | "private" | "workspaces">> & Pick<{
        version: string | undefined;
        name: string;
        private: boolean | undefined;
        workspaces: string[] | undefined;
    }, "name"> & {
        [x: string]: unknown;
    };
    readonly relativeCwd: string;
    get cwd(): string;
    get version(): string;
    get private(): boolean;
    get config(): any;
    get packageName(): string;
    get project(): NodeProject;
    get tagPrefix(): any;
    constructor(project: NodeProject, relativeCwd: string, manifestContent: NodeManifestContent);
    updateChangelog(entry: ChangelogEntry): Promise<string>;
    updateVersion(version: string): Promise<void>;
    detectBumpType(configuration: IConfiguration, versionBranch: VersionBranch, gitPlatform: IGitPlatform, logger?: LogReporter): Promise<BumpType>;
}
export declare class NodeProject extends NodeWorkspace implements IProject, IPlugin {
    readonly name = "Node project";
    private _cwd;
    private _config;
    private _git;
    get cwd(): any;
    get config(): any;
    get git(): Git;
    childWorkspaces: NodeWorkspace[];
    get workspaces(): NodeWorkspace[];
    get project(): NodeProject;
    static initialize(initialize: IPluginInitialize): Promise<NodeProject | null>;
    private constructor();
}
