// This file is generated by tools/codegen.sh
// DO NOT EDIT IT.

// clang-format off

//  To parse this JSON data, first install
//
//      json.hpp  https://github.com/nlohmann/json
//
//  Then include this file, and then do
//
//     PackageInfoV2.hpp data = nlohmann::json::parse(jsonString);

#pragma once

#include <optional>
#include <nlohmann/json.hpp>
#include "linglong/api/types/v1/helper.hpp"

#include "linglong/api/types/v1/LlCLIConfig.hpp"
#include "linglong/api/types/v1/ExtensionImpl.hpp"
#include "linglong/api/types/v1/ExtensionDefine.hpp"
#include "linglong/api/types/v1/ApplicationConfigurationPermissions.hpp"

namespace linglong {
namespace api {
namespace types {
namespace v1 {
/**
* this is the each item output of ll-cli list --json
*
* package info of package manager search
*/

using nlohmann::json;

/**
* this is the each item output of ll-cli list --json
*
* package info of package manager search
*/
struct PackageInfoV2 {
/**
* arch of package info
*/
std::vector<std::string> arch;
/**
* base of package info
*/
std::string base;
/**
* channel of package info
*/
std::string channel;
/**
* default ll-cli configuration provided by package
*/
std::optional<LlCLIConfig> cliConfig;
/**
* command of package info
*/
std::optional<std::vector<std::string>> command;
/**
* record linyaps package is compatible with linyaps component version
*/
std::optional<std::string> compatibleVersion;
/**
* description of package info
*/
std::optional<std::string> description;
std::optional<ExtensionImpl> extImpl;
/**
* description of extension
*/
std::optional<std::vector<ExtensionDefine>> extensions;
/**
* id of package info
*/
std::string id;
/**
* kind of package info
*/
std::string kind;
/**
* module of package info
*/
std::string packageInfoV2Module;
/**
* name of package info
*/
std::string name;
std::optional<ApplicationConfigurationPermissions> permissions;
/**
* runtime of package info
*/
std::optional<std::string> runtime;
/**
* version of 'PackageInfo'
*/
std::string schemaVersion;
/**
* Uncompressed package size in bytes
*/
int64_t size;
/**
* this property is only used for app which instead from UAB and it should be null in other
* conditions.
*/
std::optional<std::string> uuid;
/**
* version of package info
*/
std::string version;
};
}
}
}
}

// clang-format on
