// This file was generated by generate-manifest.mts.
// DO NOT MODIFY. ALL CHANGES WILL BE OVERWRITTEN.

#pragma once

#include <any>
#include <map>
#include <optional>
#include <string_view>
#include <vector>

namespace ReactApp
{
    using JSONObject = std::map<std::string_view, std::any>;

    struct Component {
        std::string_view appKey;
        std::optional<std::string_view> displayName;
        std::optional<JSONObject> initialProperties;
        std::optional<std::string_view> presentationStyle;
        std::optional<std::string_view> slug;
    };

    struct Manifest {
        std::string_view name;
        std::string_view displayName;
        std::optional<std::string_view> version;
        std::optional<std::string_view> bundleRoot;
        std::optional<std::string_view> singleApp;
        std::optional<std::vector<Component>> components;
    };

    Manifest GetManifest();
    std::string_view GetManifestChecksum();

}  // namespace ReactApp
