/**
 * Metadata for a single dependency class.
 *
 * Contains information needed for stable hash-based dependency registration
 * that survives minification and build processes.
 */
export interface DependencyMetadata {
    /** Original class name before minification */
    className: string;
    /** Stable hash key computed from class code */
    hashKey: string;
    /** Service registration type */
    serviceType: 'singleton' | 'transient' | 'constant';
    /** Array of dependency hash keys this service depends on */
    dependencies: string[];
    /** Original class code used for hash computation */
    classCode?: string;
    /** Build timestamp when metadata was generated */
    buildTimestamp?: number;
}
/**
 * Complete dependency metadata for a microservice or bundle.
 *
 * Contains all dependency information needed for container initialization
 * and validation.
 */
export interface DependencyMetadataCollection {
    /** Version of the metadata format */
    version: string;
    /** Build timestamp when metadata was generated */
    buildTimestamp: number;
    /** Hash algorithm used for key generation */
    hashAlgorithm: string;
    /** Array of all dependency metadata entries */
    dependencies: DependencyMetadata[];
    /** Map of class names to hash keys for quick lookup */
    classNameToHashMap: Record<string, string>;
    /** Map of hash keys to class names for reverse lookup */
    hashToClassNameMap: Record<string, string>;
}
/**
 * Hash collision information.
 *
 * Contains details about classes that produce identical hash keys.
 */
export interface HashCollision {
    /** The colliding hash key */
    hashKey: string;
    /** Array of class names that produce this hash */
    collidingClasses: string[];
    /** Array of class codes that produce this hash */
    collidingClassCodes: string[];
}
/**
 * Validation result for dependency metadata.
 *
 * Contains information about metadata validation including any issues found.
 */
export interface MetadataValidationResult {
    /** Whether validation passed */
    isValid: boolean;
    /** Array of hash collisions found */
    collisions: HashCollision[];
    /** Array of validation error messages */
    errors: string[];
    /** Array of validation warning messages */
    warnings: string[];
    /** Total number of dependencies validated */
    dependencyCount: number;
    /** Number of unique hash keys */
    uniqueHashCount: number;
}
