#pragma once

#include <cstdint>
#include <filesystem>
#include <string>

namespace smartcut::core {

struct SourceIdentity {
  std::string canonical_path;
  std::uintmax_t byte_length = 0;
  std::int64_t modification_time = 0;
  std::string first_block_hash;
  std::string last_block_hash;
  std::string source_uuid;

  static SourceIdentity from_file(const std::filesystem::path& path);
  std::string to_json() const;
};

}  // namespace smartcut::core
