import { ComponentFS, ComponentConfig } from '../component';
import { PathLinux } from '../../utils/path';
export declare type SemverVersion = string;
export declare type SemverVersionRule = SemverVersion | '-';
export declare type DetailedDependencyPolicy = {
    version: SemverVersion;
    force?: boolean;
};
export declare type DependencyPolicy = SemverVersionRule;
export interface DependenciesPolicyObject {
    [dependencyId: string]: DependencyPolicy;
}
export interface DependenciesPolicy {
    dependencies?: DependenciesPolicyObject;
    devDependencies?: DependenciesPolicyObject;
    peerDependencies?: DependenciesPolicyObject;
}
export interface DependencyResolverWorkspaceConfig {
    policy: DependenciesPolicy;
    packageManager: 'npm' | 'yarn' | 'pnpm';
    strictPeerDependencies: boolean;
    packageManagerArgs: string[];
}
export interface DependencyResolverVariantConfig {
    policy: DependenciesPolicy;
}
export interface RawComponentState {
    filesystem: ComponentFS;
    config: ComponentConfig;
}
export declare type DependencyType = 'package' | 'component';
export declare type Specifier = {
    isDefault: boolean;
    name: string;
};
export declare type ImportSpecifier = {
    mainFile: Specifier;
    linkFile?: Specifier;
};
export declare type RelativePath = {
    sourceRelativePath: PathLinux;
    destinationRelativePath: PathLinux;
    importSpecifiers?: ImportSpecifier[];
    isCustomResolveUsed?: boolean;
    importSource?: string;
};
interface DependencyDefinition {
    dependencyId: string;
    dependencyVersion: SemverVersion;
    type: DependencyType;
    relativePaths?: RelativePath[];
}
interface FileDependencyDefinition {
    dependencyPath: string;
    relativePaths?: RelativePath[];
    isType?: boolean;
}
export declare type FileDependenciesDefinition = FileDependencyDefinition[];
export interface DependenciesDefinition {
    dependencies?: DependencyDefinition[];
    devDependencies?: DependencyDefinition[];
    peerDependencies?: DependencyDefinition[];
}
export declare type installOpts = {
    packageManager?: string;
};
export {};
