/// <reference types="node" />
import { Ref, BitObject } from '../objects';
import Source from './source';
import { CustomResolvedPath } from '../../consumer/component/consumer-component';
import ConsumerComponent from '../../consumer/component';
import { BitIds, BitId } from '../../bit-id';
import { Doclet } from '../../jsdoc/types';
import { Results } from '../../consumer/specs-results/specs-results';
import { Dependencies, Dependency } from '../../consumer/component/dependencies';
import { PathLinux, PathLinuxRelative } from '../../utils/path';
import { CompilerExtensionModel } from '../../legacy-extensions/compiler-extension';
import { TesterExtensionModel } from '../../legacy-extensions/tester-extension';
import { SourceFile } from '../../consumer/component/sources';
import Repository from '../objects/repository';
import { ComponentOverridesData } from '../../consumer/config/component-overrides';
import { EnvPackages } from '../../legacy-extensions/env-extension';
import { ExtensionDataList } from '../../consumer/config/extension-data';
declare type CiProps = {
    error: Record<string, any>;
    startTime: string;
    endTime: string;
};
export declare type SourceFileModel = {
    name: string;
    relativePath: PathLinux;
    test: boolean;
    file: Ref;
};
export declare type DistFileModel = SourceFileModel;
export declare type ArtifactFileModel = {
    relativePath: PathLinux;
    file: Ref;
};
export declare type Log = {
    message: string;
    date: string;
    username: string | undefined;
    email: string | undefined;
};
export declare type VersionProps = {
    mainFile: PathLinux;
    files: Array<SourceFileModel>;
    dists?: Array<DistFileModel> | undefined;
    mainDistFile: PathLinux | undefined;
    compiler?: CompilerExtensionModel | undefined;
    tester?: TesterExtensionModel | undefined;
    log: Log;
    ci?: CiProps;
    specsResults?: Results | undefined;
    docs?: Doclet[];
    dependencies?: Dependency[];
    devDependencies?: Dependency[];
    flattenedDependencies?: BitIds;
    flattenedDevDependencies?: BitIds;
    packageDependencies?: {
        [key: string]: string;
    };
    devPackageDependencies?: {
        [key: string]: string;
    };
    peerPackageDependencies?: {
        [key: string]: string;
    };
    compilerPackageDependencies?: EnvPackages;
    testerPackageDependencies?: EnvPackages;
    bindingPrefix?: string;
    ignoreSharedDir?: boolean;
    customResolvedPaths?: CustomResolvedPath[];
    overrides: ComponentOverridesData;
    packageJsonChangedProps?: Record<string, any>;
    extensions?: ExtensionDataList;
};
export default class Version extends BitObject {
    mainFile: PathLinux;
    files: Array<SourceFileModel>;
    dists: Array<DistFileModel> | undefined;
    mainDistFile: PathLinuxRelative | undefined;
    compiler: CompilerExtensionModel | undefined;
    tester: TesterExtensionModel | undefined;
    log: Log;
    ci: CiProps | {};
    specsResults: Results | undefined;
    docs: Doclet[] | undefined;
    dependencies: Dependencies;
    devDependencies: Dependencies;
    flattenedDependencies: BitIds;
    flattenedDevDependencies: BitIds;
    packageDependencies: {
        [key: string]: string;
    };
    devPackageDependencies: {
        [key: string]: string;
    };
    peerPackageDependencies: {
        [key: string]: string;
    };
    compilerPackageDependencies: EnvPackages;
    testerPackageDependencies: EnvPackages;
    bindingPrefix: string | undefined;
    ignoreSharedDir: boolean | undefined;
    customResolvedPaths: CustomResolvedPath[] | undefined;
    overrides: ComponentOverridesData;
    packageJsonChangedProps: Record<string, any>;
    extensions: ExtensionDataList;
    constructor(props: VersionProps);
    validateVersion(): void;
    id(): string;
    get extensionDependencies(): Dependencies;
    getAllFlattenedDependencies(): BitIds;
    getAllDependencies(): Dependency[];
    get depsIdsGroupedByType(): {
        dependencies: BitIds;
        devDependencies: BitIds;
        extensionDependencies: BitIds;
    };
    getAllDependenciesCloned(): Dependencies;
    getAllDependenciesIds(): BitIds;
    getDependenciesIdsExcludeExtensions(): BitIds;
    updateFlattenedDependency(currentId: BitId, newId: BitId): void;
    refs(): Ref[];
    toObject(): any;
    validateBeforePersisting(versionStr: string): void;
    toBuffer(pretty: boolean): Buffer;
    static parse(contents: string): Version;
    static from(versionProps: VersionProps): Version;
    static fromComponent({ component, files, dists, mainDistFile, flattenedDependencies, flattenedDevDependencies, message, specsResults, extensions, username, email }: {
        component: ConsumerComponent;
        files: Array<SourceFileModel>;
        flattenedDependencies: BitIds;
        flattenedDevDependencies: BitIds;
        message: string;
        dists: Array<DistFileModel> | undefined;
        mainDistFile: PathLinuxRelative;
        specsResults: Results | undefined;
        extensions: ExtensionDataList;
        username: string | undefined;
        email: string | undefined;
    }): Version;
    setSpecsResults(specsResults: Results | undefined): void;
    setDist(dist: Source | undefined): void;
    setCIProps(ci: CiProps): void;
    modelFilesToSourceFiles(repository: Repository): Promise<SourceFile[]>;
    validate(): void;
}
export {};
