namespace StellaOps.Scanner.Analyzers.OS.Windows.WinSxS;
///
/// Represents metadata extracted from a Windows Side-by-Side (WinSxS) assembly manifest.
///
internal sealed record WinSxSAssemblyMetadata(
/// Assembly name (e.g., "Microsoft.Windows.Common-Controls").
string Name,
/// Assembly version (e.g., "6.0.0.0").
string Version,
/// Processor architecture (e.g., "x86", "amd64", "arm64", "msil", "wow64").
string ProcessorArchitecture,
/// Public key token (e.g., "6595b64144ccf1df").
string? PublicKeyToken,
/// Language/culture (e.g., "en-us", "*", or empty).
string? Language,
/// Assembly type (e.g., "win32", "win32-policy").
string? Type,
/// Version scope (e.g., "nonSxS" for non-side-by-side assemblies).
string? VersionScope,
/// Manifest file path.
string ManifestPath,
/// Associated catalog (.cat) file path if found.
string? CatalogPath,
/// Catalog signature thumbprint if available.
string? CatalogThumbprint,
/// KB reference from patch manifest if available.
string? KbReference,
/// Files declared in the assembly manifest.
IReadOnlyList Files);
///
/// Represents a file entry in a WinSxS assembly manifest.
///
internal sealed record WinSxSFileEntry(
/// File name.
string Name,
/// File hash algorithm (e.g., "SHA256").
string? HashAlgorithm,
/// File hash value.
string? Hash,
/// File size in bytes.
long? Size,
/// Destination path within the assembly.
string? DestinationPath);