///
/// JHybridLunarDatePickerSpec.cpp
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
/// https://github.com/mrousavy/nitro
/// Copyright © 2025 Marc Rousavy @ Margelo
///

#include "JHybridLunarDatePickerSpec.hpp"

// Forward declaration of `LDP_PresentParams` to properly resolve imports.
namespace margelo::nitro::lunardatepicker { struct LDP_PresentParams; }
// Forward declaration of `LDP_PickerMode` to properly resolve imports.
namespace margelo::nitro::lunardatepicker { enum class LDP_PickerMode; }
// Forward declaration of `LDP_Range` to properly resolve imports.
namespace margelo::nitro::lunardatepicker { struct LDP_Range; }
// Forward declaration of `LDP_PriceData` to properly resolve imports.
namespace margelo::nitro::lunardatepicker { struct LDP_PriceData; }
// Forward declaration of `LDP_ConfigParams` to properly resolve imports.
namespace margelo::nitro::lunardatepicker { struct LDP_ConfigParams; }
// Forward declaration of `LDP_CustomStyle` to properly resolve imports.
namespace margelo::nitro::lunardatepicker { struct LDP_CustomStyle; }
// Forward declaration of `LDP_CustomLanguage` to properly resolve imports.
namespace margelo::nitro::lunardatepicker { struct LDP_CustomLanguage; }
// Forward declaration of `LDP_PriceUpdateParams` to properly resolve imports.
namespace margelo::nitro::lunardatepicker { struct LDP_PriceUpdateParams; }

#include "LDP_PresentParams.hpp"
#include "JLDP_PresentParams.hpp"
#include <string>
#include "LDP_PickerMode.hpp"
#include "JLDP_PickerMode.hpp"
#include <functional>
#include "LDP_Range.hpp"
#include "JFunc_void_LDP_Range.hpp"
#include "JLDP_Range.hpp"
#include <optional>
#include <vector>
#include "LDP_PriceData.hpp"
#include "JLDP_PriceData.hpp"
#include "JFunc_void_std__string.hpp"
#include "JFunc_void_std__string_std__vector_std__string_.hpp"
#include "LDP_ConfigParams.hpp"
#include "JLDP_ConfigParams.hpp"
#include <unordered_map>
#include "LDP_CustomStyle.hpp"
#include "JLDP_CustomStyle.hpp"
#include "LDP_CustomLanguage.hpp"
#include "JLDP_CustomLanguage.hpp"
#include "LDP_PriceUpdateParams.hpp"
#include "JLDP_PriceUpdateParams.hpp"

namespace margelo::nitro::lunardatepicker {

  jni::local_ref<JHybridLunarDatePickerSpec::jhybriddata> JHybridLunarDatePickerSpec::initHybrid(jni::alias_ref<jhybridobject> jThis) {
    return makeCxxInstance(jThis);
  }

  void JHybridLunarDatePickerSpec::registerNatives() {
    registerHybrid({
      makeNativeMethod("initHybrid", JHybridLunarDatePickerSpec::initHybrid),
    });
  }

  size_t JHybridLunarDatePickerSpec::getExternalMemorySize() noexcept {
    static const auto method = javaClassStatic()->getMethod<jlong()>("getMemorySize");
    return method(_javaPart);
  }

  // Properties
  

  // Methods
  void JHybridLunarDatePickerSpec::present(const LDP_PresentParams& params) {
    static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<JLDP_PresentParams> /* params */)>("present_cxx");
    method(_javaPart, JLDP_PresentParams::fromCpp(params));
  }
  void JHybridLunarDatePickerSpec::configure(const LDP_ConfigParams& config) {
    static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<JLDP_ConfigParams> /* config */)>("configure");
    method(_javaPart, JLDP_ConfigParams::fromCpp(config));
  }
  void JHybridLunarDatePickerSpec::updatePrices(const LDP_PriceUpdateParams& params) {
    static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<JLDP_PriceUpdateParams> /* params */)>("updatePrices");
    method(_javaPart, JLDP_PriceUpdateParams::fromCpp(params));
  }

} // namespace margelo::nitro::lunardatepicker
