

#ifndef SBK_AKONADICALENDAR_PYTHON_H
#define SBK_AKONADICALENDAR_PYTHON_H

//workaround to access protected functions
#define protected public

#include <sbkpython.h>
#include <sbkmodule.h>
#include <sbkconverter.h>
// Module Includes
#include <akonadicore_python.h>
#include <pyside6_qtcore_python.h>
#include <pyside6_qtgui_python.h>
#include <kcoreaddons_python.h>
#include <pyside6_qtwidgets_python.h>
#include <kcalendarcore_python.h>

// Bound library includes
#include <akonadi/attribute.h>
#include <blockalarmsattribute.h>
#include <calendarbase.h>
#include <calendarclipboard.h>
#include <calendarutils.h>
#include <calfilterpartstatusproxymodel.h>
#include <calfilterproxymodel.h>
#include <collectioncalendar.h>
#include <etmcalendar.h>
#include <fetchjobcalendar.h>
#include <freebusymanager.h>
#include <history.h>
#include <icalimporter.h>
#include <incidencechanger.h>
#include <incidencetreemodel.h>
#include <itiphandler.h>
#include <publishdialog.h>
#include <searchcollectionhelper.h>
#include <standardcalendaractionmanager.h>
#include <todomodel.h>
#include <todopurger.h>
// Conversion Includes - Primitive Types
#include <QAnyStringView>
#include <qbytearrayview.h>
#include <qchar.h>
#include <QtCore/qlatin1stringview.h>
#include <QString>
#include <QStringList>
#include <QStringView>
#include <qvariant.h>

// Conversion Includes - Container Types
#include <QHash>
#include <QList>
#include <QMap>
#include <QMultiHash>
#include <QMultiMap>
#include <QPair>
#include <QQueue>
#include <QSet>
#include <QStack>
#include <array>
#include <list>
#include <map>
#include <utility>
#include <unordered_map>
#include <vector>


// Type indices
enum : int {
    SBK_AkonadiCalendarAkonadi_IDX                           = 0,
    SBK_Akonadi_BlockAlarmsAttribute_IDX                     = 1,
    SBK_Akonadi_CalFilterPartStatusProxyModel_IDX            = 2,
    SBK_Akonadi_CalFilterProxyModel_IDX                      = 3,
    SBK_Akonadi_CalendarBase_IDX                             = 4,
    SBK_Akonadi_CalendarClipboard_Mode_IDX                   = 6,
    SBK_Akonadi_CalendarClipboard_IDX                        = 5,
    SBK_AkonadiCalendarAkonadi_CalendarUtils_IDX             = 7,
    SBK_Akonadi_CollectionCalendar_IDX                       = 8,
    SBK_Akonadi_ETMCalendar_CollectionColumn_IDX             = 10,
    SBK_Akonadi_ETMCalendar_IDX                              = 9,
    SBK_Akonadi_FetchJobCalendar_IDX                         = 11,
    SBK_Akonadi_FreeBusyManager_IDX                          = 12,
    SBK_Akonadi_History_ResultCode_IDX                       = 14,
    SBK_Akonadi_History_IDX                                  = 13,
    SBK_Akonadi_ICalImporter_IDX                             = 15,
    SBK_Akonadi_ITIPHandler_Result_IDX                       = 17,
    SBK_Akonadi_ITIPHandler_IDX                              = 16,
    SBK_Akonadi_IncidenceChanger_ResultCode_IDX              = 23,
    SBK_Akonadi_IncidenceChanger_DestinationPolicy_IDX       = 20,
    SBK_Akonadi_IncidenceChanger_InvitationPolicy_IDX        = 21,
    SBK_Akonadi_IncidenceChanger_InvitationPrivacy_IDX       = 22,
    SBK_Akonadi_IncidenceChanger_ChangeType_IDX              = 19,
    SBK_Akonadi_IncidenceChanger_IDX                         = 18,
    SBK_Akonadi_IncidenceTreeModel_IDX                       = 24,
    SBK_Akonadi_PublishDialog_IDX                            = 25,
    SBK_Akonadi_SearchCollectionHelper_IDX                   = 26,
    SBK_Akonadi_StandardCalendarActionManager_Type_IDX       = 28,
    SBK_Akonadi_StandardCalendarActionManager_IDX            = 27,
    SBK_Akonadi_TodoModel_IDX                                = 29,
    SBK_Akonadi_TodoPurger_IDX                               = 30,
    SBK_AkonadiCalendar_IDX_COUNT                            = 31,
};

// This variable stores all Python types exported by this module.
extern Shiboken::Module::TypeInitStruct *SbkAkonadiCalendarTypeStructs;

// This variable stores the Python module object exported by this module.
extern PyObject *SbkAkonadiCalendarModuleObject;

// This variable stores all type converters exported by this module.
extern SbkConverter **SbkAkonadiCalendarTypeConverters;

// Converter indices
enum [[deprecated]] : int {
    SBK_AKONADICALENDAR_QLIST_INT_IDX                        = 0, // QList<int>
    SBK_AKONADICALENDAR_QLIST_KCALENDARCORE_ATTENDEE_PARTSTAT_IDX = 1, // QList<KCalendarCore::Attendee::PartStat>
    SBK_AKONADICALENDAR_QMAP_INT_QVARIANT_IDX                = 2, // QMap<int,QVariant>
    SBK_AKONADICALENDAR_QLIST_QMODELINDEX_IDX                = 3, // QList<QModelIndex>
    SBK_AKONADICALENDAR_QHASH_INT_QBYTEARRAY_IDX             = 4, // QHash<int,QByteArray>
    SBK_AKONADICALENDAR_QLIST_LONGLONG_IDX                   = 5, // QList<long long>
    SBK_AKONADICALENDAR_QLIST_AKONADI_ITEM_IDX               = 6, // QList<Akonadi::Item>
    SBK_AKONADICALENDAR_QSET_QBYTEARRAY_IDX                  = 7, // QSet<QByteArray>
    SBK_AKONADICALENDAR_QLIST_AKONADI_COLLECTION_IDX         = 8, // QList<Akonadi::Collection>
    SBK_AKONADICALENDAR_QLIST_QVARIANT_IDX                   = 9, // QList<QVariant>
    SBK_AKONADICALENDAR_QLIST_QSTRING_IDX                    = 10, // QList<QString>
    SBK_AKONADICALENDAR_QMAP_QSTRING_QVARIANT_IDX            = 11, // QMap<QString,QVariant>
    SBK_AKONADICALENDAR_CONVERTERS_IDX_COUNT                 = 12,
};

// Converter indices
enum : int {
    SBK_AkonadiCalendar_QList_int_IDX                        = 0, // QList<int>
    SBK_AkonadiCalendar_QList_KCalendarCore_Attendee_PartStat_IDX = 1, // QList<KCalendarCore::Attendee::PartStat>
    SBK_AkonadiCalendar_QMap_int_QVariant_IDX                = 2, // QMap<int,QVariant>
    SBK_AkonadiCalendar_QList_QModelIndex_IDX                = 3, // QList<QModelIndex>
    SBK_AkonadiCalendar_QHash_int_QByteArray_IDX             = 4, // QHash<int,QByteArray>
    SBK_AkonadiCalendar_QList_longlong_IDX                   = 5, // QList<long long>
    SBK_AkonadiCalendar_QList_Akonadi_Item_IDX               = 6, // QList<Akonadi::Item>
    SBK_AkonadiCalendar_QSet_QByteArray_IDX                  = 7, // QSet<QByteArray>
    SBK_AkonadiCalendar_QList_Akonadi_Collection_IDX         = 8, // QList<Akonadi::Collection>
    SBK_AkonadiCalendar_QList_QVariant_IDX                   = 9, // QList<QVariant>
    SBK_AkonadiCalendar_QList_QString_IDX                    = 10, // QList<QString>
    SBK_AkonadiCalendar_QMap_QString_QVariant_IDX            = 11, // QMap<QString,QVariant>
    SBK_AkonadiCalendar_CONVERTERS_IDX_COUNT                 = 12,
};
// Macros for type check

QT_WARNING_PUSH
QT_WARNING_DISABLE_DEPRECATED
namespace Shiboken
{

// PyType functions, to get the PyObjectType for a type T
template<> inline PyTypeObject *SbkType< ::Akonadi::BlockAlarmsAttribute >() { return Shiboken::Module::get(SbkAkonadiCalendarTypeStructs[SBK_Akonadi_BlockAlarmsAttribute_IDX]); }
template<> inline PyTypeObject *SbkType< ::Akonadi::CalFilterPartStatusProxyModel >() { return Shiboken::Module::get(SbkAkonadiCalendarTypeStructs[SBK_Akonadi_CalFilterPartStatusProxyModel_IDX]); }
template<> inline PyTypeObject *SbkType< ::Akonadi::CalFilterProxyModel >() { return Shiboken::Module::get(SbkAkonadiCalendarTypeStructs[SBK_Akonadi_CalFilterProxyModel_IDX]); }
template<> inline PyTypeObject *SbkType< ::Akonadi::CalendarBase >() { return Shiboken::Module::get(SbkAkonadiCalendarTypeStructs[SBK_Akonadi_CalendarBase_IDX]); }
template<> inline PyTypeObject *SbkType< ::Akonadi::CalendarClipboard::Mode >() { return Shiboken::Module::get(SbkAkonadiCalendarTypeStructs[SBK_Akonadi_CalendarClipboard_Mode_IDX]); }
template<> inline PyTypeObject *SbkType< ::Akonadi::CalendarClipboard >() { return Shiboken::Module::get(SbkAkonadiCalendarTypeStructs[SBK_Akonadi_CalendarClipboard_IDX]); }
template<> inline PyTypeObject *SbkType< ::Akonadi::CollectionCalendar >() { return Shiboken::Module::get(SbkAkonadiCalendarTypeStructs[SBK_Akonadi_CollectionCalendar_IDX]); }
template<> inline PyTypeObject *SbkType< ::Akonadi::ETMCalendar::CollectionColumn >() { return Shiboken::Module::get(SbkAkonadiCalendarTypeStructs[SBK_Akonadi_ETMCalendar_CollectionColumn_IDX]); }
template<> inline PyTypeObject *SbkType< ::Akonadi::ETMCalendar >() { return Shiboken::Module::get(SbkAkonadiCalendarTypeStructs[SBK_Akonadi_ETMCalendar_IDX]); }
template<> inline PyTypeObject *SbkType< ::Akonadi::FetchJobCalendar >() { return Shiboken::Module::get(SbkAkonadiCalendarTypeStructs[SBK_Akonadi_FetchJobCalendar_IDX]); }
template<> inline PyTypeObject *SbkType< ::Akonadi::FreeBusyManager >() { return Shiboken::Module::get(SbkAkonadiCalendarTypeStructs[SBK_Akonadi_FreeBusyManager_IDX]); }
template<> inline PyTypeObject *SbkType< ::Akonadi::History::ResultCode >() { return Shiboken::Module::get(SbkAkonadiCalendarTypeStructs[SBK_Akonadi_History_ResultCode_IDX]); }
template<> inline PyTypeObject *SbkType< ::Akonadi::History >() { return Shiboken::Module::get(SbkAkonadiCalendarTypeStructs[SBK_Akonadi_History_IDX]); }
template<> inline PyTypeObject *SbkType< ::Akonadi::ICalImporter >() { return Shiboken::Module::get(SbkAkonadiCalendarTypeStructs[SBK_Akonadi_ICalImporter_IDX]); }
template<> inline PyTypeObject *SbkType< ::Akonadi::ITIPHandler::Result >() { return Shiboken::Module::get(SbkAkonadiCalendarTypeStructs[SBK_Akonadi_ITIPHandler_Result_IDX]); }
template<> inline PyTypeObject *SbkType< ::Akonadi::ITIPHandler >() { return Shiboken::Module::get(SbkAkonadiCalendarTypeStructs[SBK_Akonadi_ITIPHandler_IDX]); }
template<> inline PyTypeObject *SbkType< ::Akonadi::IncidenceChanger::ResultCode >() { return Shiboken::Module::get(SbkAkonadiCalendarTypeStructs[SBK_Akonadi_IncidenceChanger_ResultCode_IDX]); }
template<> inline PyTypeObject *SbkType< ::Akonadi::IncidenceChanger::DestinationPolicy >() { return Shiboken::Module::get(SbkAkonadiCalendarTypeStructs[SBK_Akonadi_IncidenceChanger_DestinationPolicy_IDX]); }
template<> inline PyTypeObject *SbkType< ::Akonadi::IncidenceChanger::InvitationPolicy >() { return Shiboken::Module::get(SbkAkonadiCalendarTypeStructs[SBK_Akonadi_IncidenceChanger_InvitationPolicy_IDX]); }
template<> inline PyTypeObject *SbkType< ::Akonadi::IncidenceChanger::InvitationPrivacy >() { return Shiboken::Module::get(SbkAkonadiCalendarTypeStructs[SBK_Akonadi_IncidenceChanger_InvitationPrivacy_IDX]); }
template<> inline PyTypeObject *SbkType< ::Akonadi::IncidenceChanger::ChangeType >() { return Shiboken::Module::get(SbkAkonadiCalendarTypeStructs[SBK_Akonadi_IncidenceChanger_ChangeType_IDX]); }
template<> inline PyTypeObject *SbkType< ::Akonadi::IncidenceChanger >() { return Shiboken::Module::get(SbkAkonadiCalendarTypeStructs[SBK_Akonadi_IncidenceChanger_IDX]); }
template<> inline PyTypeObject *SbkType< ::Akonadi::IncidenceTreeModel >() { return Shiboken::Module::get(SbkAkonadiCalendarTypeStructs[SBK_Akonadi_IncidenceTreeModel_IDX]); }
template<> inline PyTypeObject *SbkType< ::Akonadi::PublishDialog >() { return Shiboken::Module::get(SbkAkonadiCalendarTypeStructs[SBK_Akonadi_PublishDialog_IDX]); }
template<> inline PyTypeObject *SbkType< ::Akonadi::SearchCollectionHelper >() { return Shiboken::Module::get(SbkAkonadiCalendarTypeStructs[SBK_Akonadi_SearchCollectionHelper_IDX]); }
template<> inline PyTypeObject *SbkType< ::Akonadi::StandardCalendarActionManager::Type >() { return Shiboken::Module::get(SbkAkonadiCalendarTypeStructs[SBK_Akonadi_StandardCalendarActionManager_Type_IDX]); }
template<> inline PyTypeObject *SbkType< ::Akonadi::StandardCalendarActionManager >() { return Shiboken::Module::get(SbkAkonadiCalendarTypeStructs[SBK_Akonadi_StandardCalendarActionManager_IDX]); }
template<> inline PyTypeObject *SbkType< ::Akonadi::TodoModel >() { return Shiboken::Module::get(SbkAkonadiCalendarTypeStructs[SBK_Akonadi_TodoModel_IDX]); }
template<> inline PyTypeObject *SbkType< ::Akonadi::TodoPurger >() { return Shiboken::Module::get(SbkAkonadiCalendarTypeStructs[SBK_Akonadi_TodoPurger_IDX]); }

} // namespace Shiboken

QT_WARNING_POP
#endif // SBK_AKONADICALENDAR_PYTHON_H

