#ifndef COMPONENTS_SYNC_BASE_USER_SELECTABLE_TYPE_H_
#define COMPONENTS_SYNC_BASE_USER_SELECTABLE_TYPE_H_
#include <iosfwd>
#include <optional>
#include <string>
#include "base/containers/enum_set.h"
#include "build/chromeos_buildflags.h"
#include "components/sync/base/data_type.h"
namespace syncer {
enum class UserSelectableType { … };
UserSelectableTypeSet;
const char* GetUserSelectableTypeName(UserSelectableType type);
std::optional<UserSelectableType> GetUserSelectableTypeFromString(
const std::string& type);
std::string UserSelectableTypeSetToString(UserSelectableTypeSet types);
DataTypeSet UserSelectableTypeToAllDataTypes(UserSelectableType type);
DataType UserSelectableTypeToCanonicalDataType(UserSelectableType type);
#if BUILDFLAG(IS_CHROMEOS_ASH)
enum class UserSelectableOsType {
kOsApps,
kFirstType = kOsApps,
kOsPreferences,
kOsWifiConfigurations,
kLastType = kOsWifiConfigurations
};
using UserSelectableOsTypeSet = base::EnumSet<UserSelectableOsType,
UserSelectableOsType::kFirstType,
UserSelectableOsType::kLastType>;
const char* GetUserSelectableOsTypeName(UserSelectableOsType type);
std::string UserSelectableOsTypeSetToString(UserSelectableOsTypeSet types);
DataTypeSet UserSelectableOsTypeToAllDataTypes(UserSelectableOsType type);
DataType UserSelectableOsTypeToCanonicalDataType(UserSelectableOsType type);
std::optional<UserSelectableOsType> GetUserSelectableOsTypeFromString(
const std::string& type);
#endif
std::ostream& operator<<(std::ostream& stream, const UserSelectableType& type);
std::ostream& operator<<(std::ostream& stream,
const UserSelectableTypeSet& types);
}
#endif