#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 HauseArrest;
using HauseArrestCxxQtThread = ::rust::cxxqt1::CxxQtThread<HauseArrest>;

} // namespace CXX

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

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


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


namespace CXX::rust::cxxqtgen1 {
::QMetaObject::Connection
HauseArrest_init_session_finishedConnect(CXX::HauseArrest& self, ::CXX::rust::cxxqtgen1::HauseArrestCxxQtSignalHandlerinit_session_finished closure, ::Qt::ConnectionType type);
} // namespace CXX::rust::cxxqtgen1

namespace CXX::rust::cxxqtgen1 {
::QMetaObject::Connection
HauseArrest_check_is_dir_and_list_finishedConnect(CXX::HauseArrest& self, ::CXX::rust::cxxqtgen1::HauseArrestCxxQtSignalHandlercheck_is_dir_and_list_finished closure, ::Qt::ConnectionType type);
} // namespace CXX::rust::cxxqtgen1

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

  virtual ~HauseArrest() = default;

public:
  Q_INVOKABLE QString const& get_bundle_id() const noexcept;
  Q_INVOKABLE void init_session() noexcept;
  Q_INVOKABLE void check_is_dir_and_list(QString const& path) const noexcept;
  Q_INVOKABLE QByteArray file_to_buffer(QString const& file_path) const noexcept;
  Q_INVOKABLE QString start_video_stream(QString const& file_path) const noexcept;
  Q_INVOKABLE bool delete_path(QString const& path) const noexcept;
  Q_SIGNAL void init_session_finished(bool success);
  Q_SIGNAL void check_is_dir_and_list_finished(bool success, QMap_QString_QVariant const& entries);
  explicit HauseArrest(QString arg0, QString arg1);

private:
  template<typename T>
friend auto ::rust::cxxqt1::qtThread(const T& qobject) -> ::rust::cxxqt1::CxxQtThread<T>;
  explicit HauseArrest(::CXX::cxx_qt_HauseArrest::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, HauseArrest>::value, "HauseArrest must inherit from QObject");
} // namespace CXX



Q_DECLARE_METATYPE(CXX::HauseArrest*)

