using NodaTime; namespace DysonNetwork.Sphere.Storage; /// <summary> /// 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. /// </summary> public interface ICloudFile { public Instant CreatedAt { get; } public Instant UpdatedAt { get; } public Instant? DeletedAt { get; } /// <summary> /// Gets the unique identifier of the cloud file. /// </summary> string Id { get; } /// <summary> /// Gets the name of the cloud file. /// </summary> string Name { get; } /// <summary> /// Gets the file metadata dictionary. /// </summary> Dictionary<string, object>? FileMeta { get; } /// <summary> /// Gets the user metadata dictionary. /// </summary> Dictionary<string, object>? UserMeta { get; } /// <summary> /// Gets the MIME type of the file. /// </summary> string? MimeType { get; } /// <summary> /// Gets the hash of the file content. /// </summary> string? Hash { get; } /// <summary> /// Gets the size of the file in bytes. /// </summary> long Size { get; } /// <summary> /// Gets whether the file has a compressed version available. /// </summary> bool HasCompression { get; } }