diff --git a/tools/cpp/build_info_entry_set.h b/tools/cpp/build_info_entry_set.h
index 8716416..37f7d62 100644
--- a/tools/cpp/build_info_entry_set.h
+++ b/tools/cpp/build_info_entry_set.h
@@ -15,4 +15,53 @@
 #ifndef BAZEL_TOOLS_CPP_BUILD_INFO_ENTRY_SET_H_
 #define BAZEL_TOOLS_CPP_BUILD_INFO_ENTRY_SET_H_
 
+#include <string>
+#include <unordered_map>
+
+namespace bazel {
+namespace tools {
+namespace cpp {
+
+class BuildInfoEntrySet {
+ public:
+  BuildInfoEntrySet(
+      std::unordered_map<std::string, std::string>& info_file_map,
+      std::unordered_map<std::string, std::string>& version_file_map)
+      : info_file_map_(info_file_map), version_file_map_(version_file_map) {}
+  enum KeyType {
+    STRING = 0,
+    INTEGER = 1,
+  };
+  struct KeyDescription {
+    KeyDescription(KeyType key_type, const std::string& default_value,
+                   const std::string& redacted_value)
+        : key_type(key_type),
+          default_value(default_value),
+          redacted_value(redacted_value) {}
+    const KeyType key_type;
+    const std::string default_value;
+    const std::string redacted_value;
+    bool operator==(const KeyDescription& kd) const {
+      return (key_type == kd.key_type && default_value == kd.default_value &&
+              redacted_value == kd.redacted_value);
+    }
+  };
+
+  virtual std::unordered_map<std::string, std::string>
+  GetVolatileFileEntries() = 0;
+  virtual std::unordered_map<std::string, std::string>
+  GetNonVolatileFileEntries() = 0;
+  virtual std::unordered_map<std::string, std::string>
+  GetRedactedFileEntries() = 0;
+  virtual ~BuildInfoEntrySet() = 0;
+
+ private:
+  std::unordered_map<std::string, std::string> info_file_map_;
+  std::unordered_map<std::string, std::string> version_file_map_;
+};
+
+}  // namespace cpp
+}  // namespace tools
+}  // namespace bazel
+
 #endif  // BAZEL_TOOLS_CPP_BUILD_INFO_ENTRY_SET_H_
