// Copyright 2022 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROMEOS_ASH_COMPONENTS_NETWORK_HOTSPOT_UTIL_H_
#define CHROMEOS_ASH_COMPONENTS_NETWORK_HOTSPOT_UTIL_H_
#include "base/component_export.h"
#include "base/values.h"
#include "chromeos/ash/services/hotspot_config/public/mojom/cros_hotspot_config.mojom-forward.h"
namespace ash {
// Convert shill tethering state string value to mojom::HotspotState enum
COMPONENT_EXPORT(CHROMEOS_NETWORK)
hotspot_config::mojom::HotspotState ShillTetheringStateToMojomState(
const std::string& shill_state);
// Converts shill tethering idle reason string value to mojom::DisableReason
// enum
COMPONENT_EXPORT(CHROMEOS_NETWORK)
hotspot_config::mojom::DisableReason ShillTetheringIdleReasonToMojomState(
const std::string& idle_reason);
// Convert shill security mode string value to mojom::WiFiSecurityMode enum
COMPONENT_EXPORT(CHROMEOS_NETWORK)
hotspot_config::mojom::WiFiSecurityMode ShillSecurityToMojom(
const std::string& shill_security);
// Convert shill tethering config dictionary value to mojom::HotspotConfigPtr
COMPONENT_EXPORT(CHROMEOS_NETWORK)
hotspot_config::mojom::HotspotConfigPtr ShillTetheringConfigToMojomConfig(
const base::Value::Dict& shill_tethering_config);
// Convert mojom::HotspotConfigPtr to the corresponding shill tethering config
// value
COMPONENT_EXPORT(CHROMEOS_NETWORK)
base::Value::Dict MojomConfigToShillConfig(
const hotspot_config::mojom::HotspotConfigPtr mojom_config);
// Convert enable or disable tethering result string from shill to
// mojom::HotspotControlResult
COMPONENT_EXPORT(CHROMEOS_NETWORK)
hotspot_config::mojom::HotspotControlResult SetTetheringEnabledResultToMojom(
const std::string& shill_enabled_result);
} // namespace ash
#endif // CHROMEOS_ASH_COMPONENTS_NETWORK_HOTSPOT_UTIL_H_