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; }
}