import { MJComponentLibraryEntity } from '@memberjunction/core-entities';
export interface ParsedDependency {
    name: string;
    versionSpec: string;
}
export interface VersionRequirement {
    library: string;
    versionSpec: string;
    requestedBy: string;
}
export interface ResolvedVersion {
    library: string;
    version: string;
    satisfies: VersionRequirement[];
    warnings?: string[];
}
export interface DependencyNode {
    library: MJComponentLibraryEntity;
    dependencies: Map<string, string>;
    dependents: Set<string>;
}
export interface DependencyGraph {
    nodes: Map<string, DependencyNode>;
    roots: Set<string>;
}
export interface LoadOrderResult {
    success: boolean;
    order?: MJComponentLibraryEntity[];
    cycles?: string[][];
    errors?: string[];
    warnings?: string[];
}
export type VersionRangeType = 'exact' | 'tilde' | 'caret' | 'range' | 'any';
export interface ParsedVersion {
    major: number;
    minor: number;
    patch: number;
    prerelease?: string;
    build?: string;
}
export interface VersionRange {
    type: VersionRangeType;
    operator?: string;
    version?: ParsedVersion;
    raw: string;
}
export interface LoadedLibraryState {
    name: string;
    version: string;
    globalVariable: string;
    loadedAt: Date;
    requestedBy: string[];
    dependencies: string[];
}
export interface DependencyResolutionOptions {
    allowPrerelease?: boolean;
    preferLatest?: boolean;
    strict?: boolean;
    maxDepth?: number;
    debug?: boolean;
}
//# sourceMappingURL=dependency-types.d.ts.map