using NodaTime; namespace DysonNetwork.Sphere.Storage; /// /// Common interface for cloud file entities that can be used in file operations. /// This interface exposes the essential properties needed for file operations /// and is implemented by both CloudFile and CloudFileReferenceObject. /// public interface ICloudFile { public Instant CreatedAt { get; } public Instant UpdatedAt { get; } public Instant? DeletedAt { get; } /// /// Gets the unique identifier of the cloud file. /// string Id { get; } /// /// Gets the name of the cloud file. /// string Name { get; } /// /// Gets the file metadata dictionary. /// Dictionary? FileMeta { get; } /// /// Gets the user metadata dictionary. /// Dictionary? UserMeta { get; } /// /// Gets the MIME type of the file. /// string? MimeType { get; } /// /// Gets the hash of the file content. /// string? Hash { get; } /// /// Gets the size of the file in bytes. /// long Size { get; } /// /// Gets whether the file has a compressed version available. /// bool HasCompression { get; } }