// Do not edit. This file is generated.
// MoonBit type: QueuingStrategyInit
// Specifications: streams.idl

///|
/// [QueuingStrategyInit](https://developer.mozilla.org/en-US/docs/Web/API/QueuingStrategyInit)
#external
pub type QueuingStrategyInit

///|
pub impl TJsValue for QueuingStrategyInit with to_js(self : QueuingStrategyInit) -> JsValue = "%identity"

///|
pub impl FromJsAny for QueuingStrategyInit with from_js_any(value : JsAny) -> QueuingStrategyInit = "%identity"

///|
pub fn QueuingStrategyInit::new(
  high_water_mark : Double,
) -> QueuingStrategyInit {
  queuing_strategy_init_ffi(TJsValue::to_js(high_water_mark))
}

///|
pub fn QueuingStrategyInit::empty() -> QueuingStrategyInit {
  queuing_strategy_init_empty_ffi()
}

///|
pub fn QueuingStrategyInit::high_water_mark(
  self : QueuingStrategyInit,
) -> Double {
  queuing_strategy_init_get_high_water_mark_ffi(TJsValue::to_js(self))
}

///|
#cfg(target="js")
extern "js" fn queuing_strategy_init_ffi(
  high_water_mark : JsValue,
) -> QueuingStrategyInit =
  #|(highWaterMark) => {
  #|  const obj = {};
  #|  if (highWaterMark !== undefined) obj.highWaterMark = highWaterMark;
  #|  return obj;
  #|}

///|
#cfg(target="js")
extern "js" fn queuing_strategy_init_empty_ffi() -> QueuingStrategyInit = "() => {}"

///|
#cfg(target="js")
extern "js" fn queuing_strategy_init_get_high_water_mark_ffi_js(
  obj : JsValue,
) -> JsValue = "(obj) => obj.highWaterMark"

///|
#cfg(target="js")
fn queuing_strategy_init_get_high_water_mark_ffi(obj : JsValue) -> Double {
  queuing_strategy_init_get_high_water_mark_ffi_js(obj).unsafe_cast()
}

///|
#cfg(target="wasm-gc")
fn queuing_strategy_init_ffi(high_water_mark : JsValue) -> QueuingStrategyInit = "webapi_QueuingStrategyInit" "new"

///|
#cfg(target="wasm-gc")
fn queuing_strategy_init_empty_ffi() -> QueuingStrategyInit = "webapi_Dictionary" "empty"

///|
#cfg(target="wasm-gc")
fn queuing_strategy_init_get_high_water_mark_ffi(obj : JsValue) -> Double = "webapi_QueuingStrategyInit" "get_highWaterMark"