#pragma once

#include <cxx-qt/casting.h>
#include <cxx-qt/signalhandler.h>
#include <cxx-qt/threading.h>
#include <cxx-qt/type.h>

namespace CXX {
class ServiceManager;
using ServiceManagerCxxQtThread = ::rust::cxxqt1::CxxQtThread<ServiceManager>;

} // namespace CXX

namespace CXX::rust::cxxqtgen1 {
using ServiceManagerCxxQtSignalHandlercable_info_retrieved = ::rust::cxxqt1::SignalHandler<struct ServiceManagerCxxQtSignalParamscable_info_retrieved *>;
} // namespace CXX::rust::cxxqtgen1

namespace CXX::rust::cxxqtgen1 {
using ServiceManagerCxxQtSignalHandlermobilegestalt_info_retrieved = ::rust::cxxqt1::SignalHandler<struct ServiceManagerCxxQtSignalParamsmobilegestalt_info_retrieved *>;
} // namespace CXX::rust::cxxqtgen1

namespace CXX::rust::cxxqtgen1 {
using ServiceManagerCxxQtSignalHandlerdev_image_mounted = ::rust::cxxqt1::SignalHandler<struct ServiceManagerCxxQtSignalParamsdev_image_mounted *>;
} // namespace CXX::rust::cxxqtgen1

namespace CXX::rust::cxxqtgen1 {
using ServiceManagerCxxQtSignalHandlerdeveloper_mode_option_revealed = ::rust::cxxqt1::SignalHandler<struct ServiceManagerCxxQtSignalParamsdeveloper_mode_option_revealed *>;
} // namespace CXX::rust::cxxqtgen1

namespace CXX::rust::cxxqtgen1 {
using ServiceManagerCxxQtSignalHandlermounted_image_retrieved = ::rust::cxxqt1::SignalHandler<struct ServiceManagerCxxQtSignalParamsmounted_image_retrieved *>;
} // namespace CXX::rust::cxxqtgen1

namespace CXX::rust::cxxqtgen1 {
using ServiceManagerCxxQtSignalHandlerinstalled_apps_retrieved = ::rust::cxxqt1::SignalHandler<struct ServiceManagerCxxQtSignalParamsinstalled_apps_retrieved *>;
} // namespace CXX::rust::cxxqtgen1

namespace CXX::rust::cxxqtgen1 {
using ServiceManagerCxxQtSignalHandlerapp_icon_loaded = ::rust::cxxqt1::SignalHandler<struct ServiceManagerCxxQtSignalParamsapp_icon_loaded *>;
} // namespace CXX::rust::cxxqtgen1

namespace CXX::rust::cxxqtgen1 {
using ServiceManagerCxxQtSignalHandlerbattery_info_updated = ::rust::cxxqt1::SignalHandler<struct ServiceManagerCxxQtSignalParamsbattery_info_updated *>;
} // namespace CXX::rust::cxxqtgen1

namespace CXX::rust::cxxqtgen1 {
using ServiceManagerCxxQtSignalHandlerdisk_usage_retrieved = ::rust::cxxqt1::SignalHandler<struct ServiceManagerCxxQtSignalParamsdisk_usage_retrieved *>;
} // namespace CXX::rust::cxxqtgen1

namespace CXX::rust::cxxqtgen1 {
using ServiceManagerCxxQtSignalHandlerinstall_ipa_init = ::rust::cxxqt1::SignalHandler<struct ServiceManagerCxxQtSignalParamsinstall_ipa_init *>;
} // namespace CXX::rust::cxxqtgen1

namespace CXX::rust::cxxqtgen1 {
using ServiceManagerCxxQtSignalHandlerinstall_ipa_progress = ::rust::cxxqt1::SignalHandler<struct ServiceManagerCxxQtSignalParamsinstall_ipa_progress *>;
} // namespace CXX::rust::cxxqtgen1

namespace CXX::rust::cxxqtgen1 {
using ServiceManagerCxxQtSignalHandlerenable_wifi_connections_result = ::rust::cxxqt1::SignalHandler<struct ServiceManagerCxxQtSignalParamsenable_wifi_connections_result *>;
} // namespace CXX::rust::cxxqtgen1


#include "idescriptor_rust_codebase/src/service_manager.cxx.h"


namespace CXX::rust::cxxqtgen1 {
::QMetaObject::Connection
ServiceManager_cable_info_retrievedConnect(CXX::ServiceManager& self, ::CXX::rust::cxxqtgen1::ServiceManagerCxxQtSignalHandlercable_info_retrieved closure, ::Qt::ConnectionType type);
} // namespace CXX::rust::cxxqtgen1

namespace CXX::rust::cxxqtgen1 {
::QMetaObject::Connection
ServiceManager_mobilegestalt_info_retrievedConnect(CXX::ServiceManager& self, ::CXX::rust::cxxqtgen1::ServiceManagerCxxQtSignalHandlermobilegestalt_info_retrieved closure, ::Qt::ConnectionType type);
} // namespace CXX::rust::cxxqtgen1

namespace CXX::rust::cxxqtgen1 {
::QMetaObject::Connection
ServiceManager_dev_image_mountedConnect(CXX::ServiceManager& self, ::CXX::rust::cxxqtgen1::ServiceManagerCxxQtSignalHandlerdev_image_mounted closure, ::Qt::ConnectionType type);
} // namespace CXX::rust::cxxqtgen1

namespace CXX::rust::cxxqtgen1 {
::QMetaObject::Connection
ServiceManager_developer_mode_option_revealedConnect(CXX::ServiceManager& self, ::CXX::rust::cxxqtgen1::ServiceManagerCxxQtSignalHandlerdeveloper_mode_option_revealed closure, ::Qt::ConnectionType type);
} // namespace CXX::rust::cxxqtgen1

namespace CXX::rust::cxxqtgen1 {
::QMetaObject::Connection
ServiceManager_mounted_image_retrievedConnect(CXX::ServiceManager& self, ::CXX::rust::cxxqtgen1::ServiceManagerCxxQtSignalHandlermounted_image_retrieved closure, ::Qt::ConnectionType type);
} // namespace CXX::rust::cxxqtgen1

namespace CXX::rust::cxxqtgen1 {
::QMetaObject::Connection
ServiceManager_installed_apps_retrievedConnect(CXX::ServiceManager& self, ::CXX::rust::cxxqtgen1::ServiceManagerCxxQtSignalHandlerinstalled_apps_retrieved closure, ::Qt::ConnectionType type);
} // namespace CXX::rust::cxxqtgen1

namespace CXX::rust::cxxqtgen1 {
::QMetaObject::Connection
ServiceManager_app_icon_loadedConnect(CXX::ServiceManager& self, ::CXX::rust::cxxqtgen1::ServiceManagerCxxQtSignalHandlerapp_icon_loaded closure, ::Qt::ConnectionType type);
} // namespace CXX::rust::cxxqtgen1

namespace CXX::rust::cxxqtgen1 {
::QMetaObject::Connection
ServiceManager_battery_info_updatedConnect(CXX::ServiceManager& self, ::CXX::rust::cxxqtgen1::ServiceManagerCxxQtSignalHandlerbattery_info_updated closure, ::Qt::ConnectionType type);
} // namespace CXX::rust::cxxqtgen1

namespace CXX::rust::cxxqtgen1 {
::QMetaObject::Connection
ServiceManager_disk_usage_retrievedConnect(CXX::ServiceManager& self, ::CXX::rust::cxxqtgen1::ServiceManagerCxxQtSignalHandlerdisk_usage_retrieved closure, ::Qt::ConnectionType type);
} // namespace CXX::rust::cxxqtgen1

namespace CXX::rust::cxxqtgen1 {
::QMetaObject::Connection
ServiceManager_install_ipa_initConnect(CXX::ServiceManager& self, ::CXX::rust::cxxqtgen1::ServiceManagerCxxQtSignalHandlerinstall_ipa_init closure, ::Qt::ConnectionType type);
} // namespace CXX::rust::cxxqtgen1

namespace CXX::rust::cxxqtgen1 {
::QMetaObject::Connection
ServiceManager_install_ipa_progressConnect(CXX::ServiceManager& self, ::CXX::rust::cxxqtgen1::ServiceManagerCxxQtSignalHandlerinstall_ipa_progress closure, ::Qt::ConnectionType type);
} // namespace CXX::rust::cxxqtgen1

namespace CXX::rust::cxxqtgen1 {
::QMetaObject::Connection
ServiceManager_enable_wifi_connections_resultConnect(CXX::ServiceManager& self, ::CXX::rust::cxxqtgen1::ServiceManagerCxxQtSignalHandlerenable_wifi_connections_result closure, ::Qt::ConnectionType type);
} // namespace CXX::rust::cxxqtgen1

namespace CXX {
class ServiceManager : public QObject, private ::rust::cxxqt1::CxxQtType<RServiceManager>, private ::rust::cxxqt1::CxxQtThreading<ServiceManager>
{
  Q_OBJECT
public:
  

  virtual ~ServiceManager() = default;

public:
  Q_INVOKABLE void set_udid(QString const& udid) noexcept;
  Q_INVOKABLE void get_cable_info() const noexcept;
  Q_INVOKABLE void reveal_developer_mode_option_in_ui() const noexcept;
  Q_INVOKABLE void query_mobilegestalt(QList_QString const& keys) const noexcept;
  Q_INVOKABLE void mount_dev_image(QString const& image_path, QString const& sig) const noexcept;
  Q_INVOKABLE void get_mounted_image() const noexcept;
  Q_INVOKABLE void fetch_installed_apps() const noexcept;
  Q_INVOKABLE ::std::int32_t set_location(QString const& latitude, QString const& longitude) const noexcept;
  Q_INVOKABLE void fetch_app_icon(QString bundle_id) const noexcept;
  Q_INVOKABLE void fetch_disk_usage(bool skip_gallery_usage) const noexcept;
  Q_INVOKABLE bool restart() const noexcept;
  Q_INVOKABLE bool shutdown() const noexcept;
  Q_INVOKABLE bool enter_recovery_mode() const noexcept;
  Q_INVOKABLE void install_ipa(QString const& ipa_path) const noexcept;
  Q_INVOKABLE void enable_wifi_connections() const noexcept;
  Q_SIGNAL void cable_info_retrieved(QString info);
  Q_SIGNAL void mobilegestalt_info_retrieved(QMap_QString_QVariant info);
  Q_SIGNAL void dev_image_mounted(bool success, bool is_locked);
  Q_SIGNAL void developer_mode_option_revealed(bool success);
  Q_SIGNAL void mounted_image_retrieved(bool success, bool is_locked, QByteArray sig, ::std::uint64_t sig_length);
  Q_SIGNAL void installed_apps_retrieved(QMap_QString_QVariant const& apps);
  Q_SIGNAL void app_icon_loaded(QString bundle_id, QByteArray icon_data);
  Q_SIGNAL void battery_info_updated(QString const& info);
  Q_SIGNAL void disk_usage_retrieved(bool success, ::std::uint64_t apps_usage, ::std::uint64_t gallery_usage);
  Q_SIGNAL void install_ipa_init(bool started, QString state);
  Q_SIGNAL void install_ipa_progress(double progress, QString state);
  Q_SIGNAL void enable_wifi_connections_result(bool success);
  explicit ServiceManager(QString arg0, ::std::uint32_t arg1);

private:
  template<typename T>
friend auto ::rust::cxxqt1::qtThread(const T& qobject) -> ::rust::cxxqt1::CxxQtThread<T>;
  explicit ServiceManager(::CXX::cxx_qt_ServiceManager::CxxQtConstructorArguments0&& args);


private:
  template<typename Inner, typename Outer>
  friend Inner& ::rust::cxxqt1::unsafeRustMut(Outer& outer);

  template<typename Inner, typename Outer>
  friend const Inner& ::rust::cxxqt1::unsafeRust(const Outer& outer);
};

static_assert(::std::is_base_of<QObject, ServiceManager>::value, "ServiceManager must inherit from QObject");
} // namespace CXX



Q_DECLARE_METATYPE(CXX::ServiceManager*)

