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

import NitroModules

/**
 * Represents an instance of `LDP_ConfigParams`, backed by a C++ struct.
 */
public typealias LDP_ConfigParams = margelo.nitro.lunardatepicker.LDP_ConfigParams

public extension LDP_ConfigParams {
  private typealias bridge = margelo.nitro.lunardatepicker.bridge.swift

  /**
   * Create a new instance of `LDP_ConfigParams`.
   */
  init(themes: Dictionary<String, LDP_CustomStyle>, languages: Dictionary<String, LDP_CustomLanguage>, yearRangeOffset: Double, timeZoneOffset: Double, showSubmitButton: Bool, fromImage: LDP_NativeAssetSource, toImage: LDP_NativeAssetSource, closeImage: LDP_NativeAssetSource) {
    self.init({ () -> bridge.std__unordered_map_std__string__LDP_CustomStyle_ in
      var __map = bridge.create_std__unordered_map_std__string__LDP_CustomStyle_(themes.count)
      for (__k, __v) in themes {
        bridge.emplace_std__unordered_map_std__string__LDP_CustomStyle_(&__map, std.string(__k), __v)
      }
      return __map
    }(), { () -> bridge.std__unordered_map_std__string__LDP_CustomLanguage_ in
      var __map = bridge.create_std__unordered_map_std__string__LDP_CustomLanguage_(languages.count)
      for (__k, __v) in languages {
        bridge.emplace_std__unordered_map_std__string__LDP_CustomLanguage_(&__map, std.string(__k), __v)
      }
      return __map
    }(), yearRangeOffset, timeZoneOffset, showSubmitButton, fromImage, toImage, closeImage)
  }

  @inline(__always)
  var themes: Dictionary<String, LDP_CustomStyle> {
    return { () -> Dictionary<String, LDP_CustomStyle> in
      var __dictionary = Dictionary<String, LDP_CustomStyle>(minimumCapacity: self.__themes.size())
      let __keys = bridge.get_std__unordered_map_std__string__LDP_CustomStyle__keys(self.__themes)
      for __key in __keys {
        let __value = bridge.get_std__unordered_map_std__string__LDP_CustomStyle__value(self.__themes, __key)
        __dictionary[String(__key)] = __value
      }
      return __dictionary
    }()
  }
  
  @inline(__always)
  var languages: Dictionary<String, LDP_CustomLanguage> {
    return { () -> Dictionary<String, LDP_CustomLanguage> in
      var __dictionary = Dictionary<String, LDP_CustomLanguage>(minimumCapacity: self.__languages.size())
      let __keys = bridge.get_std__unordered_map_std__string__LDP_CustomLanguage__keys(self.__languages)
      for __key in __keys {
        let __value = bridge.get_std__unordered_map_std__string__LDP_CustomLanguage__value(self.__languages, __key)
        __dictionary[String(__key)] = __value
      }
      return __dictionary
    }()
  }
  
  @inline(__always)
  var yearRangeOffset: Double {
    return self.__yearRangeOffset
  }
  
  @inline(__always)
  var timeZoneOffset: Double {
    return self.__timeZoneOffset
  }
  
  @inline(__always)
  var showSubmitButton: Bool {
    return self.__showSubmitButton
  }
  
  @inline(__always)
  var fromImage: LDP_NativeAssetSource {
    return self.__fromImage
  }
  
  @inline(__always)
  var toImage: LDP_NativeAssetSource {
    return self.__toImage
  }
  
  @inline(__always)
  var closeImage: LDP_NativeAssetSource {
    return self.__closeImage
  }
}
