// Generated by scripts/generate.mjs from bindings/api.mjs. Do not edit.

///|
#external
pub type SimplexNoise

///|
#module("@mizchi/three-mbt/parametric")
pub extern "js" fn SimplexNoise::SimplexNoise() -> SimplexNoise = "simplexNoise"

///|
#module("@mizchi/three-mbt/parametric")
pub extern "js" fn SimplexNoise::seeded(seed : Int) -> SimplexNoise = "simplexNoiseSeeded"

///|
#module("@mizchi/three-mbt/parametric")
extern "js" fn SimplexNoise::ffi_create_with_random(
  random : () -> Double,
) -> JsResult[SimplexNoise] = "simplexNoiseRandomChecked"

///|
pub fn SimplexNoise::with_random(
  random : () -> Double,
) -> SimplexNoise raise ModelingError {
  match SimplexNoise::ffi_create_with_random(random).into_result() {
    Ok(value) => value
    Err(message) => raise ModelingError(message)
  }
}

///|
pub extern "js" fn SimplexNoise::noise(
  self : SimplexNoise,
  x : Double,
  y : Double,
) -> Double =
  #| (self, x, y) => self.noise(x, y)

///|
pub extern "js" fn SimplexNoise::noise3d(
  self : SimplexNoise,
  x : Double,
  y : Double,
  z : Double,
) -> Double =
  #| (self, x, y, z) => self.noise3d(x, y, z)

///|
pub extern "js" fn SimplexNoise::noise4d(
  self : SimplexNoise,
  x : Double,
  y : Double,
  z : Double,
  w : Double,
) -> Double =
  #| (self, x, y, z, w) => self.noise4d(x, y, z, w)