#ifndef KONAN_LIBEMPORIXAPI_H
#define KONAN_LIBEMPORIXAPI_H
#ifdef __cplusplus
extern "C" {
#endif
#ifdef __cplusplus
typedef bool            libemporixapi_KBoolean;
#else
typedef _Bool           libemporixapi_KBoolean;
#endif
typedef unsigned short     libemporixapi_KChar;
typedef signed char        libemporixapi_KByte;
typedef short              libemporixapi_KShort;
typedef int                libemporixapi_KInt;
typedef long long          libemporixapi_KLong;
typedef unsigned char      libemporixapi_KUByte;
typedef unsigned short     libemporixapi_KUShort;
typedef unsigned int       libemporixapi_KUInt;
typedef unsigned long long libemporixapi_KULong;
typedef float              libemporixapi_KFloat;
typedef double             libemporixapi_KDouble;
typedef float __attribute__ ((__vector_size__ (16))) libemporixapi_KVector128;
typedef void*              libemporixapi_KNativePtr;
struct libemporixapi_KType;
typedef struct libemporixapi_KType libemporixapi_KType;

typedef struct {
  libemporixapi_KNativePtr pinned;
} libemporixapi_kref_kotlin_Byte;
typedef struct {
  libemporixapi_KNativePtr pinned;
} libemporixapi_kref_kotlin_Short;
typedef struct {
  libemporixapi_KNativePtr pinned;
} libemporixapi_kref_kotlin_Int;
typedef struct {
  libemporixapi_KNativePtr pinned;
} libemporixapi_kref_kotlin_Long;
typedef struct {
  libemporixapi_KNativePtr pinned;
} libemporixapi_kref_kotlin_Float;
typedef struct {
  libemporixapi_KNativePtr pinned;
} libemporixapi_kref_kotlin_Double;
typedef struct {
  libemporixapi_KNativePtr pinned;
} libemporixapi_kref_kotlin_Char;
typedef struct {
  libemporixapi_KNativePtr pinned;
} libemporixapi_kref_kotlin_Boolean;
typedef struct {
  libemporixapi_KNativePtr pinned;
} libemporixapi_kref_kotlin_Unit;
typedef struct {
  libemporixapi_KNativePtr pinned;
} libemporixapi_kref_kotlin_UByte;
typedef struct {
  libemporixapi_KNativePtr pinned;
} libemporixapi_kref_kotlin_UShort;
typedef struct {
  libemporixapi_KNativePtr pinned;
} libemporixapi_kref_kotlin_UInt;
typedef struct {
  libemporixapi_KNativePtr pinned;
} libemporixapi_kref_kotlin_ULong;
typedef struct {
  libemporixapi_KNativePtr pinned;
} libemporixapi_kref_at_fyayc_emporixapi_Configuration;
typedef struct {
  libemporixapi_KNativePtr pinned;
} libemporixapi_kref_io_ktor_client_HttpClient;
typedef struct {
  libemporixapi_KNativePtr pinned;
} libemporixapi_kref_kotlin_Any;
typedef struct {
  libemporixapi_KNativePtr pinned;
} libemporixapi_kref_kotlin_collections_Map;
typedef struct {
  libemporixapi_KNativePtr pinned;
} libemporixapi_kref_at_fyayc_emporixapi_products_BundledProduct;
typedef struct {
  libemporixapi_KNativePtr pinned;
} libemporixapi_kref_at_fyayc_emporixapi_products_BundledProduct_$serializer;
typedef struct {
  libemporixapi_KNativePtr pinned;
} libemporixapi_kref_kotlinx_serialization_descriptors_SerialDescriptor;
typedef struct {
  libemporixapi_KNativePtr pinned;
} libemporixapi_kref_kotlin_Array;
typedef struct {
  libemporixapi_KNativePtr pinned;
} libemporixapi_kref_kotlinx_serialization_encoding_Decoder;
typedef struct {
  libemporixapi_KNativePtr pinned;
} libemporixapi_kref_kotlinx_serialization_encoding_Encoder;
typedef struct {
  libemporixapi_KNativePtr pinned;
} libemporixapi_kref_at_fyayc_emporixapi_products_BundledProduct_Companion;
typedef struct {
  libemporixapi_KNativePtr pinned;
} libemporixapi_kref_kotlinx_serialization_KSerializer;
typedef struct {
  libemporixapi_KNativePtr pinned;
} libemporixapi_kref_at_fyayc_emporixapi_products_CreateProduct;
typedef struct {
  libemporixapi_KNativePtr pinned;
} libemporixapi_kref_at_fyayc_emporixapi_products_CreateProduct_Companion;
typedef struct {
  libemporixapi_KNativePtr pinned;
} libemporixapi_kref_at_fyayc_emporixapi_products_CreateBasicProduct;
typedef struct {
  libemporixapi_KNativePtr pinned;
} libemporixapi_kref_at_fyayc_emporixapi_products_Template;
typedef struct {
  libemporixapi_KNativePtr pinned;
} libemporixapi_kref_kotlin_collections_List;
typedef struct {
  libemporixapi_KNativePtr pinned;
} libemporixapi_kref_at_fyayc_emporixapi_products_Metadata;
typedef struct {
  libemporixapi_KNativePtr pinned;
} libemporixapi_kref_at_fyayc_emporixapi_products_CreateBasicProduct_$serializer;
typedef struct {
  libemporixapi_KNativePtr pinned;
} libemporixapi_kref_at_fyayc_emporixapi_products_CreateBasicProduct_Companion;
typedef struct {
  libemporixapi_KNativePtr pinned;
} libemporixapi_kref_at_fyayc_emporixapi_products_CreateBundleProduct;
typedef struct {
  libemporixapi_KNativePtr pinned;
} libemporixapi_kref_at_fyayc_emporixapi_products_CreateBundleProduct_$serializer;
typedef struct {
  libemporixapi_KNativePtr pinned;
} libemporixapi_kref_at_fyayc_emporixapi_products_CreateBundleProduct_Companion;
typedef struct {
  libemporixapi_KNativePtr pinned;
} libemporixapi_kref_at_fyayc_emporixapi_products_IProductClient;
typedef struct {
  libemporixapi_KNativePtr pinned;
} libemporixapi_kref_at_fyayc_emporixapi_products_Metadata_$serializer;
typedef struct {
  libemporixapi_KNativePtr pinned;
} libemporixapi_kref_at_fyayc_emporixapi_products_Metadata_Companion;
typedef struct {
  libemporixapi_KNativePtr pinned;
} libemporixapi_kref_at_fyayc_emporixapi_products_ProductClient;
typedef struct {
  libemporixapi_KNativePtr pinned;
} libemporixapi_kref_at_fyayc_emporixapi_products_RelatedItem;
typedef struct {
  libemporixapi_KNativePtr pinned;
} libemporixapi_kref_at_fyayc_emporixapi_products_RelatedItem_$serializer;
typedef struct {
  libemporixapi_KNativePtr pinned;
} libemporixapi_kref_at_fyayc_emporixapi_products_RelatedItem_Companion;
typedef struct {
  libemporixapi_KNativePtr pinned;
} libemporixapi_kref_at_fyayc_emporixapi_products_Template_$serializer;
typedef struct {
  libemporixapi_KNativePtr pinned;
} libemporixapi_kref_at_fyayc_emporixapi_products_Template_Companion;
typedef struct {
  libemporixapi_KNativePtr pinned;
} libemporixapi_kref_at_fyayc_emporixapi_products_Vendor;


typedef struct {
  /* Service functions. */
  void (*DisposeStablePointer)(libemporixapi_KNativePtr ptr);
  void (*DisposeString)(const char* string);
  libemporixapi_KBoolean (*IsInstance)(libemporixapi_KNativePtr ref, const libemporixapi_KType* type);
  libemporixapi_kref_kotlin_Byte (*createNullableByte)(libemporixapi_KByte);
  libemporixapi_KByte (*getNonNullValueOfByte)(libemporixapi_kref_kotlin_Byte);
  libemporixapi_kref_kotlin_Short (*createNullableShort)(libemporixapi_KShort);
  libemporixapi_KShort (*getNonNullValueOfShort)(libemporixapi_kref_kotlin_Short);
  libemporixapi_kref_kotlin_Int (*createNullableInt)(libemporixapi_KInt);
  libemporixapi_KInt (*getNonNullValueOfInt)(libemporixapi_kref_kotlin_Int);
  libemporixapi_kref_kotlin_Long (*createNullableLong)(libemporixapi_KLong);
  libemporixapi_KLong (*getNonNullValueOfLong)(libemporixapi_kref_kotlin_Long);
  libemporixapi_kref_kotlin_Float (*createNullableFloat)(libemporixapi_KFloat);
  libemporixapi_KFloat (*getNonNullValueOfFloat)(libemporixapi_kref_kotlin_Float);
  libemporixapi_kref_kotlin_Double (*createNullableDouble)(libemporixapi_KDouble);
  libemporixapi_KDouble (*getNonNullValueOfDouble)(libemporixapi_kref_kotlin_Double);
  libemporixapi_kref_kotlin_Char (*createNullableChar)(libemporixapi_KChar);
  libemporixapi_KChar (*getNonNullValueOfChar)(libemporixapi_kref_kotlin_Char);
  libemporixapi_kref_kotlin_Boolean (*createNullableBoolean)(libemporixapi_KBoolean);
  libemporixapi_KBoolean (*getNonNullValueOfBoolean)(libemporixapi_kref_kotlin_Boolean);
  libemporixapi_kref_kotlin_Unit (*createNullableUnit)(void);
  libemporixapi_kref_kotlin_UByte (*createNullableUByte)(libemporixapi_KUByte);
  libemporixapi_KUByte (*getNonNullValueOfUByte)(libemporixapi_kref_kotlin_UByte);
  libemporixapi_kref_kotlin_UShort (*createNullableUShort)(libemporixapi_KUShort);
  libemporixapi_KUShort (*getNonNullValueOfUShort)(libemporixapi_kref_kotlin_UShort);
  libemporixapi_kref_kotlin_UInt (*createNullableUInt)(libemporixapi_KUInt);
  libemporixapi_KUInt (*getNonNullValueOfUInt)(libemporixapi_kref_kotlin_UInt);
  libemporixapi_kref_kotlin_ULong (*createNullableULong)(libemporixapi_KULong);
  libemporixapi_KULong (*getNonNullValueOfULong)(libemporixapi_kref_kotlin_ULong);

  /* User functions. */
  struct {
    struct {
      struct {
        struct {
          struct {
            struct {
              libemporixapi_KType* (*_type)(void);
              libemporixapi_kref_at_fyayc_emporixapi_Configuration (*Configuration)(const char* endpoint, const char* tenant, libemporixapi_kref_io_ktor_client_HttpClient client);
              libemporixapi_kref_io_ktor_client_HttpClient (*get_client)(libemporixapi_kref_at_fyayc_emporixapi_Configuration thiz);
              const char* (*get_endpoint)(libemporixapi_kref_at_fyayc_emporixapi_Configuration thiz);
              const char* (*get_tenant)(libemporixapi_kref_at_fyayc_emporixapi_Configuration thiz);
              const char* (*component1)(libemporixapi_kref_at_fyayc_emporixapi_Configuration thiz);
              const char* (*component2)(libemporixapi_kref_at_fyayc_emporixapi_Configuration thiz);
              libemporixapi_kref_io_ktor_client_HttpClient (*component3)(libemporixapi_kref_at_fyayc_emporixapi_Configuration thiz);
              libemporixapi_kref_at_fyayc_emporixapi_Configuration (*copy)(libemporixapi_kref_at_fyayc_emporixapi_Configuration thiz, const char* endpoint, const char* tenant, libemporixapi_kref_io_ktor_client_HttpClient client);
              libemporixapi_KBoolean (*equals)(libemporixapi_kref_at_fyayc_emporixapi_Configuration thiz, libemporixapi_kref_kotlin_Any other);
              libemporixapi_KInt (*hashCode)(libemporixapi_kref_at_fyayc_emporixapi_Configuration thiz);
              const char* (*toString)(libemporixapi_kref_at_fyayc_emporixapi_Configuration thiz);
            } Configuration;
            struct {
              struct {
                struct {
                  libemporixapi_KType* (*_type)(void);
                  libemporixapi_kref_at_fyayc_emporixapi_products_BundledProduct_$serializer (*_instance)();
                  libemporixapi_kref_kotlinx_serialization_descriptors_SerialDescriptor (*get_descriptor)(libemporixapi_kref_at_fyayc_emporixapi_products_BundledProduct_$serializer thiz);
                  libemporixapi_kref_kotlin_Array (*childSerializers)(libemporixapi_kref_at_fyayc_emporixapi_products_BundledProduct_$serializer thiz);
                  libemporixapi_kref_at_fyayc_emporixapi_products_BundledProduct (*deserialize)(libemporixapi_kref_at_fyayc_emporixapi_products_BundledProduct_$serializer thiz, libemporixapi_kref_kotlinx_serialization_encoding_Decoder decoder);
                  void (*serialize)(libemporixapi_kref_at_fyayc_emporixapi_products_BundledProduct_$serializer thiz, libemporixapi_kref_kotlinx_serialization_encoding_Encoder encoder, libemporixapi_kref_at_fyayc_emporixapi_products_BundledProduct value);
                } $serializer;
                struct {
                  libemporixapi_KType* (*_type)(void);
                  libemporixapi_kref_at_fyayc_emporixapi_products_BundledProduct_Companion (*_instance)();
                  libemporixapi_kref_kotlinx_serialization_KSerializer (*serializer)(libemporixapi_kref_at_fyayc_emporixapi_products_BundledProduct_Companion thiz);
                } Companion;
                libemporixapi_KType* (*_type)(void);
                libemporixapi_kref_at_fyayc_emporixapi_products_BundledProduct (*BundledProduct)(const char* productId, libemporixapi_KInt amount);
                libemporixapi_KInt (*get_amount)(libemporixapi_kref_at_fyayc_emporixapi_products_BundledProduct thiz);
                const char* (*get_productId)(libemporixapi_kref_at_fyayc_emporixapi_products_BundledProduct thiz);
                const char* (*component1)(libemporixapi_kref_at_fyayc_emporixapi_products_BundledProduct thiz);
                libemporixapi_KInt (*component2)(libemporixapi_kref_at_fyayc_emporixapi_products_BundledProduct thiz);
                libemporixapi_kref_at_fyayc_emporixapi_products_BundledProduct (*copy)(libemporixapi_kref_at_fyayc_emporixapi_products_BundledProduct thiz, const char* productId, libemporixapi_KInt amount);
                libemporixapi_KBoolean (*equals)(libemporixapi_kref_at_fyayc_emporixapi_products_BundledProduct thiz, libemporixapi_kref_kotlin_Any other);
                libemporixapi_KInt (*hashCode)(libemporixapi_kref_at_fyayc_emporixapi_products_BundledProduct thiz);
                const char* (*toString)(libemporixapi_kref_at_fyayc_emporixapi_products_BundledProduct thiz);
              } BundledProduct;
              struct {
                struct {
                  libemporixapi_KType* (*_type)(void);
                  libemporixapi_kref_at_fyayc_emporixapi_products_CreateProduct_Companion (*_instance)();
                  libemporixapi_kref_kotlinx_serialization_KSerializer (*serializer)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateProduct_Companion thiz, libemporixapi_kref_kotlin_Array typeParamsSerializers);
                  libemporixapi_kref_kotlinx_serialization_KSerializer (*serializer_)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateProduct_Companion thiz);
                } Companion;
                libemporixapi_KType* (*_type)(void);
              } CreateProduct;
              struct {
                struct {
                  libemporixapi_KType* (*_type)(void);
                  libemporixapi_kref_at_fyayc_emporixapi_products_CreateBasicProduct_$serializer (*_instance)();
                  libemporixapi_kref_kotlinx_serialization_descriptors_SerialDescriptor (*get_descriptor)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBasicProduct_$serializer thiz);
                  libemporixapi_kref_kotlin_Array (*childSerializers)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBasicProduct_$serializer thiz);
                  libemporixapi_kref_at_fyayc_emporixapi_products_CreateBasicProduct (*deserialize)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBasicProduct_$serializer thiz, libemporixapi_kref_kotlinx_serialization_encoding_Decoder decoder);
                  void (*serialize)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBasicProduct_$serializer thiz, libemporixapi_kref_kotlinx_serialization_encoding_Encoder encoder, libemporixapi_kref_at_fyayc_emporixapi_products_CreateBasicProduct value);
                } $serializer;
                struct {
                  libemporixapi_KType* (*_type)(void);
                  libemporixapi_kref_at_fyayc_emporixapi_products_CreateBasicProduct_Companion (*_instance)();
                  libemporixapi_kref_kotlinx_serialization_KSerializer (*serializer)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBasicProduct_Companion thiz);
                } Companion;
                libemporixapi_KType* (*_type)(void);
                libemporixapi_kref_at_fyayc_emporixapi_products_CreateBasicProduct (*CreateBasicProduct)(const char* code, libemporixapi_kref_kotlin_collections_Map name, libemporixapi_kref_kotlin_collections_Map description, libemporixapi_kref_kotlin_Boolean published, libemporixapi_kref_at_fyayc_emporixapi_products_Template template_, libemporixapi_kref_kotlin_collections_Map taxClasses, libemporixapi_kref_kotlin_collections_List relatedItems, libemporixapi_kref_kotlin_collections_Map mixins, libemporixapi_kref_kotlin_Boolean weightDependent, const char* brandId, libemporixapi_kref_kotlin_collections_List labelIds, libemporixapi_kref_at_fyayc_emporixapi_products_Metadata metadata, const char* id);
                const char* (*get_brandId)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBasicProduct thiz);
                const char* (*get_code)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBasicProduct thiz);
                libemporixapi_kref_kotlin_collections_Map (*get_description)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBasicProduct thiz);
                const char* (*get_id)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBasicProduct thiz);
                libemporixapi_kref_kotlin_collections_List (*get_labelIds)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBasicProduct thiz);
                libemporixapi_kref_at_fyayc_emporixapi_products_Metadata (*get_metadata)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBasicProduct thiz);
                libemporixapi_kref_kotlin_collections_Map (*get_mixins)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBasicProduct thiz);
                libemporixapi_kref_kotlin_collections_Map (*get_name)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBasicProduct thiz);
                libemporixapi_kref_kotlin_Boolean (*get_published)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBasicProduct thiz);
                libemporixapi_kref_kotlin_collections_List (*get_relatedItems)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBasicProduct thiz);
                libemporixapi_kref_kotlin_collections_Map (*get_taxClasses)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBasicProduct thiz);
                libemporixapi_kref_at_fyayc_emporixapi_products_Template (*get_template)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBasicProduct thiz);
                libemporixapi_kref_kotlin_Boolean (*get_weightDependent)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBasicProduct thiz);
                const char* (*component1)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBasicProduct thiz);
                const char* (*component10)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBasicProduct thiz);
                libemporixapi_kref_kotlin_collections_List (*component11)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBasicProduct thiz);
                libemporixapi_kref_at_fyayc_emporixapi_products_Metadata (*component12)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBasicProduct thiz);
                const char* (*component13)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBasicProduct thiz);
                libemporixapi_kref_kotlin_collections_Map (*component2)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBasicProduct thiz);
                libemporixapi_kref_kotlin_collections_Map (*component3)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBasicProduct thiz);
                libemporixapi_kref_kotlin_Boolean (*component4)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBasicProduct thiz);
                libemporixapi_kref_at_fyayc_emporixapi_products_Template (*component5)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBasicProduct thiz);
                libemporixapi_kref_kotlin_collections_Map (*component6)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBasicProduct thiz);
                libemporixapi_kref_kotlin_collections_List (*component7)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBasicProduct thiz);
                libemporixapi_kref_kotlin_collections_Map (*component8)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBasicProduct thiz);
                libemporixapi_kref_kotlin_Boolean (*component9)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBasicProduct thiz);
                libemporixapi_kref_at_fyayc_emporixapi_products_CreateBasicProduct (*copy)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBasicProduct thiz, const char* code, libemporixapi_kref_kotlin_collections_Map name, libemporixapi_kref_kotlin_collections_Map description, libemporixapi_kref_kotlin_Boolean published, libemporixapi_kref_at_fyayc_emporixapi_products_Template template_, libemporixapi_kref_kotlin_collections_Map taxClasses, libemporixapi_kref_kotlin_collections_List relatedItems, libemporixapi_kref_kotlin_collections_Map mixins, libemporixapi_kref_kotlin_Boolean weightDependent, const char* brandId, libemporixapi_kref_kotlin_collections_List labelIds, libemporixapi_kref_at_fyayc_emporixapi_products_Metadata metadata, const char* id);
                libemporixapi_KBoolean (*equals)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBasicProduct thiz, libemporixapi_kref_kotlin_Any other);
                libemporixapi_KInt (*hashCode)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBasicProduct thiz);
                const char* (*toString)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBasicProduct thiz);
              } CreateBasicProduct;
              struct {
                struct {
                  libemporixapi_KType* (*_type)(void);
                  libemporixapi_kref_at_fyayc_emporixapi_products_CreateBundleProduct_$serializer (*_instance)();
                  libemporixapi_kref_kotlinx_serialization_descriptors_SerialDescriptor (*get_descriptor)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBundleProduct_$serializer thiz);
                  libemporixapi_kref_kotlin_Array (*childSerializers)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBundleProduct_$serializer thiz);
                  libemporixapi_kref_at_fyayc_emporixapi_products_CreateBundleProduct (*deserialize)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBundleProduct_$serializer thiz, libemporixapi_kref_kotlinx_serialization_encoding_Decoder decoder);
                  void (*serialize)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBundleProduct_$serializer thiz, libemporixapi_kref_kotlinx_serialization_encoding_Encoder encoder, libemporixapi_kref_at_fyayc_emporixapi_products_CreateBundleProduct value);
                } $serializer;
                struct {
                  libemporixapi_KType* (*_type)(void);
                  libemporixapi_kref_at_fyayc_emporixapi_products_CreateBundleProduct_Companion (*_instance)();
                  libemporixapi_kref_kotlinx_serialization_KSerializer (*serializer)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBundleProduct_Companion thiz);
                } Companion;
                libemporixapi_KType* (*_type)(void);
                libemporixapi_kref_at_fyayc_emporixapi_products_CreateBundleProduct (*CreateBundleProduct)(const char* code, libemporixapi_kref_kotlin_collections_List bundledProducts, libemporixapi_kref_kotlin_collections_Map name, libemporixapi_kref_kotlin_collections_Map description, libemporixapi_kref_kotlin_Boolean published, libemporixapi_kref_at_fyayc_emporixapi_products_Template template_, libemporixapi_kref_kotlin_collections_Map taxClasses, libemporixapi_kref_kotlin_collections_List relatedItems, libemporixapi_kref_kotlin_collections_Map mixins, libemporixapi_kref_kotlin_Boolean weightDependent, const char* brandId, libemporixapi_kref_kotlin_collections_List labelIds, libemporixapi_kref_at_fyayc_emporixapi_products_Metadata metadata, const char* id);
                const char* (*get_brandId)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBundleProduct thiz);
                libemporixapi_kref_kotlin_collections_List (*get_bundledProducts)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBundleProduct thiz);
                const char* (*get_code)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBundleProduct thiz);
                libemporixapi_kref_kotlin_collections_Map (*get_description)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBundleProduct thiz);
                const char* (*get_id)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBundleProduct thiz);
                libemporixapi_kref_kotlin_collections_List (*get_labelIds)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBundleProduct thiz);
                libemporixapi_kref_at_fyayc_emporixapi_products_Metadata (*get_metadata)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBundleProduct thiz);
                libemporixapi_kref_kotlin_collections_Map (*get_mixins)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBundleProduct thiz);
                libemporixapi_kref_kotlin_collections_Map (*get_name)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBundleProduct thiz);
                libemporixapi_kref_kotlin_Boolean (*get_published)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBundleProduct thiz);
                libemporixapi_kref_kotlin_collections_List (*get_relatedItems)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBundleProduct thiz);
                libemporixapi_kref_kotlin_collections_Map (*get_taxClasses)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBundleProduct thiz);
                libemporixapi_kref_at_fyayc_emporixapi_products_Template (*get_template)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBundleProduct thiz);
                libemporixapi_kref_kotlin_Boolean (*get_weightDependent)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBundleProduct thiz);
                const char* (*component1)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBundleProduct thiz);
                libemporixapi_kref_kotlin_Boolean (*component10)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBundleProduct thiz);
                const char* (*component11)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBundleProduct thiz);
                libemporixapi_kref_kotlin_collections_List (*component12)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBundleProduct thiz);
                libemporixapi_kref_at_fyayc_emporixapi_products_Metadata (*component13)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBundleProduct thiz);
                const char* (*component14)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBundleProduct thiz);
                libemporixapi_kref_kotlin_collections_List (*component2)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBundleProduct thiz);
                libemporixapi_kref_kotlin_collections_Map (*component3)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBundleProduct thiz);
                libemporixapi_kref_kotlin_collections_Map (*component4)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBundleProduct thiz);
                libemporixapi_kref_kotlin_Boolean (*component5)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBundleProduct thiz);
                libemporixapi_kref_at_fyayc_emporixapi_products_Template (*component6)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBundleProduct thiz);
                libemporixapi_kref_kotlin_collections_Map (*component7)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBundleProduct thiz);
                libemporixapi_kref_kotlin_collections_List (*component8)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBundleProduct thiz);
                libemporixapi_kref_kotlin_collections_Map (*component9)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBundleProduct thiz);
                libemporixapi_kref_at_fyayc_emporixapi_products_CreateBundleProduct (*copy)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBundleProduct thiz, const char* code, libemporixapi_kref_kotlin_collections_List bundledProducts, libemporixapi_kref_kotlin_collections_Map name, libemporixapi_kref_kotlin_collections_Map description, libemporixapi_kref_kotlin_Boolean published, libemporixapi_kref_at_fyayc_emporixapi_products_Template template_, libemporixapi_kref_kotlin_collections_Map taxClasses, libemporixapi_kref_kotlin_collections_List relatedItems, libemporixapi_kref_kotlin_collections_Map mixins, libemporixapi_kref_kotlin_Boolean weightDependent, const char* brandId, libemporixapi_kref_kotlin_collections_List labelIds, libemporixapi_kref_at_fyayc_emporixapi_products_Metadata metadata, const char* id);
                libemporixapi_KBoolean (*equals)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBundleProduct thiz, libemporixapi_kref_kotlin_Any other);
                libemporixapi_KInt (*hashCode)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBundleProduct thiz);
                const char* (*toString)(libemporixapi_kref_at_fyayc_emporixapi_products_CreateBundleProduct thiz);
              } CreateBundleProduct;
              struct {
                libemporixapi_KType* (*_type)(void);
              } IProductClient;
              struct {
                struct {
                  libemporixapi_KType* (*_type)(void);
                  libemporixapi_kref_at_fyayc_emporixapi_products_Metadata_$serializer (*_instance)();
                  libemporixapi_kref_kotlinx_serialization_descriptors_SerialDescriptor (*get_descriptor)(libemporixapi_kref_at_fyayc_emporixapi_products_Metadata_$serializer thiz);
                  libemporixapi_kref_kotlin_Array (*childSerializers)(libemporixapi_kref_at_fyayc_emporixapi_products_Metadata_$serializer thiz);
                  libemporixapi_kref_at_fyayc_emporixapi_products_Metadata (*deserialize)(libemporixapi_kref_at_fyayc_emporixapi_products_Metadata_$serializer thiz, libemporixapi_kref_kotlinx_serialization_encoding_Decoder decoder);
                  void (*serialize)(libemporixapi_kref_at_fyayc_emporixapi_products_Metadata_$serializer thiz, libemporixapi_kref_kotlinx_serialization_encoding_Encoder encoder, libemporixapi_kref_at_fyayc_emporixapi_products_Metadata value);
                } $serializer;
                struct {
                  libemporixapi_KType* (*_type)(void);
                  libemporixapi_kref_at_fyayc_emporixapi_products_Metadata_Companion (*_instance)();
                  libemporixapi_kref_kotlinx_serialization_KSerializer (*serializer)(libemporixapi_kref_at_fyayc_emporixapi_products_Metadata_Companion thiz);
                } Companion;
                libemporixapi_KType* (*_type)(void);
                libemporixapi_kref_at_fyayc_emporixapi_products_Metadata (*Metadata)(libemporixapi_kref_kotlin_Int version);
                libemporixapi_kref_kotlin_Int (*get_version)(libemporixapi_kref_at_fyayc_emporixapi_products_Metadata thiz);
                libemporixapi_kref_kotlin_Int (*component1)(libemporixapi_kref_at_fyayc_emporixapi_products_Metadata thiz);
                libemporixapi_kref_at_fyayc_emporixapi_products_Metadata (*copy)(libemporixapi_kref_at_fyayc_emporixapi_products_Metadata thiz, libemporixapi_kref_kotlin_Int version);
                libemporixapi_KBoolean (*equals)(libemporixapi_kref_at_fyayc_emporixapi_products_Metadata thiz, libemporixapi_kref_kotlin_Any other);
                libemporixapi_KInt (*hashCode)(libemporixapi_kref_at_fyayc_emporixapi_products_Metadata thiz);
                const char* (*toString)(libemporixapi_kref_at_fyayc_emporixapi_products_Metadata thiz);
              } Metadata;
              struct {
                libemporixapi_KType* (*_type)(void);
                libemporixapi_kref_at_fyayc_emporixapi_products_ProductClient (*ProductClient)(libemporixapi_kref_at_fyayc_emporixapi_Configuration configuration);
              } ProductClient;
              struct {
                struct {
                  libemporixapi_KType* (*_type)(void);
                  libemporixapi_kref_at_fyayc_emporixapi_products_RelatedItem_$serializer (*_instance)();
                  libemporixapi_kref_kotlinx_serialization_descriptors_SerialDescriptor (*get_descriptor)(libemporixapi_kref_at_fyayc_emporixapi_products_RelatedItem_$serializer thiz);
                  libemporixapi_kref_kotlin_Array (*childSerializers)(libemporixapi_kref_at_fyayc_emporixapi_products_RelatedItem_$serializer thiz);
                  libemporixapi_kref_at_fyayc_emporixapi_products_RelatedItem (*deserialize)(libemporixapi_kref_at_fyayc_emporixapi_products_RelatedItem_$serializer thiz, libemporixapi_kref_kotlinx_serialization_encoding_Decoder decoder);
                  void (*serialize)(libemporixapi_kref_at_fyayc_emporixapi_products_RelatedItem_$serializer thiz, libemporixapi_kref_kotlinx_serialization_encoding_Encoder encoder, libemporixapi_kref_at_fyayc_emporixapi_products_RelatedItem value);
                } $serializer;
                struct {
                  libemporixapi_KType* (*_type)(void);
                  libemporixapi_kref_at_fyayc_emporixapi_products_RelatedItem_Companion (*_instance)();
                  libemporixapi_kref_kotlinx_serialization_KSerializer (*serializer)(libemporixapi_kref_at_fyayc_emporixapi_products_RelatedItem_Companion thiz);
                } Companion;
                libemporixapi_KType* (*_type)(void);
                libemporixapi_kref_at_fyayc_emporixapi_products_RelatedItem (*RelatedItem)(const char* refId, const char* type);
                const char* (*get_refId)(libemporixapi_kref_at_fyayc_emporixapi_products_RelatedItem thiz);
                const char* (*get_type)(libemporixapi_kref_at_fyayc_emporixapi_products_RelatedItem thiz);
                const char* (*component1)(libemporixapi_kref_at_fyayc_emporixapi_products_RelatedItem thiz);
                const char* (*component2)(libemporixapi_kref_at_fyayc_emporixapi_products_RelatedItem thiz);
                libemporixapi_kref_at_fyayc_emporixapi_products_RelatedItem (*copy)(libemporixapi_kref_at_fyayc_emporixapi_products_RelatedItem thiz, const char* refId, const char* type);
                libemporixapi_KBoolean (*equals)(libemporixapi_kref_at_fyayc_emporixapi_products_RelatedItem thiz, libemporixapi_kref_kotlin_Any other);
                libemporixapi_KInt (*hashCode)(libemporixapi_kref_at_fyayc_emporixapi_products_RelatedItem thiz);
                const char* (*toString)(libemporixapi_kref_at_fyayc_emporixapi_products_RelatedItem thiz);
              } RelatedItem;
              struct {
                struct {
                  libemporixapi_KType* (*_type)(void);
                  libemporixapi_kref_at_fyayc_emporixapi_products_Template_$serializer (*_instance)();
                  libemporixapi_kref_kotlinx_serialization_descriptors_SerialDescriptor (*get_descriptor)(libemporixapi_kref_at_fyayc_emporixapi_products_Template_$serializer thiz);
                  libemporixapi_kref_kotlin_Array (*childSerializers)(libemporixapi_kref_at_fyayc_emporixapi_products_Template_$serializer thiz);
                  libemporixapi_kref_at_fyayc_emporixapi_products_Template (*deserialize)(libemporixapi_kref_at_fyayc_emporixapi_products_Template_$serializer thiz, libemporixapi_kref_kotlinx_serialization_encoding_Decoder decoder);
                  void (*serialize)(libemporixapi_kref_at_fyayc_emporixapi_products_Template_$serializer thiz, libemporixapi_kref_kotlinx_serialization_encoding_Encoder encoder, libemporixapi_kref_at_fyayc_emporixapi_products_Template value);
                } $serializer;
                struct {
                  libemporixapi_KType* (*_type)(void);
                  libemporixapi_kref_at_fyayc_emporixapi_products_Template_Companion (*_instance)();
                  libemporixapi_kref_kotlinx_serialization_KSerializer (*serializer)(libemporixapi_kref_at_fyayc_emporixapi_products_Template_Companion thiz);
                } Companion;
                libemporixapi_KType* (*_type)(void);
                libemporixapi_kref_at_fyayc_emporixapi_products_Template (*Template)(const char* id, const char* version);
                const char* (*get_id)(libemporixapi_kref_at_fyayc_emporixapi_products_Template thiz);
                const char* (*get_version)(libemporixapi_kref_at_fyayc_emporixapi_products_Template thiz);
                const char* (*component1)(libemporixapi_kref_at_fyayc_emporixapi_products_Template thiz);
                const char* (*component2)(libemporixapi_kref_at_fyayc_emporixapi_products_Template thiz);
                libemporixapi_kref_at_fyayc_emporixapi_products_Template (*copy)(libemporixapi_kref_at_fyayc_emporixapi_products_Template thiz, const char* id, const char* version);
                libemporixapi_KBoolean (*equals)(libemporixapi_kref_at_fyayc_emporixapi_products_Template thiz, libemporixapi_kref_kotlin_Any other);
                libemporixapi_KInt (*hashCode)(libemporixapi_kref_at_fyayc_emporixapi_products_Template thiz);
                const char* (*toString)(libemporixapi_kref_at_fyayc_emporixapi_products_Template thiz);
              } Template;
              struct {
                libemporixapi_KType* (*_type)(void);
                libemporixapi_kref_at_fyayc_emporixapi_products_Vendor (*Vendor)(const char* id, const char* name);
                const char* (*get_id)(libemporixapi_kref_at_fyayc_emporixapi_products_Vendor thiz);
                const char* (*get_name)(libemporixapi_kref_at_fyayc_emporixapi_products_Vendor thiz);
                const char* (*component1)(libemporixapi_kref_at_fyayc_emporixapi_products_Vendor thiz);
                const char* (*component2)(libemporixapi_kref_at_fyayc_emporixapi_products_Vendor thiz);
                libemporixapi_kref_at_fyayc_emporixapi_products_Vendor (*copy)(libemporixapi_kref_at_fyayc_emporixapi_products_Vendor thiz, const char* id, const char* name);
                libemporixapi_KBoolean (*equals)(libemporixapi_kref_at_fyayc_emporixapi_products_Vendor thiz, libemporixapi_kref_kotlin_Any other);
                libemporixapi_KInt (*hashCode)(libemporixapi_kref_at_fyayc_emporixapi_products_Vendor thiz);
                const char* (*toString)(libemporixapi_kref_at_fyayc_emporixapi_products_Vendor thiz);
              } Vendor;
              libemporixapi_kref_kotlin_collections_Map (*returnAMap)();
              void (*logThisCall)();
            } products;
          } emporixapi;
        } fyayc;
      } at;
    } root;
  } kotlin;
} libemporixapi_ExportedSymbols;
extern libemporixapi_ExportedSymbols* libemporixapi_symbols(void);
#ifdef __cplusplus
}  /* extern "C" */
#endif
#endif  /* KONAN_LIBEMPORIXAPI_H */
