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

///|
#external
pub type SphericalHarmonics3

///|
#module("@mizchi/three-mbt/constructors")
pub extern "js" fn SphericalHarmonics3::SphericalHarmonics3() -> SphericalHarmonics3 = "sphericalHarmonics3"

///|
pub extern "js" fn SphericalHarmonics3::coefficients(
  self : SphericalHarmonics3,
) -> FixedArray[Vector3] =
  #| (self) => self.coefficients.slice()

///|
pub extern "js" fn SphericalHarmonics3::set(
  self : SphericalHarmonics3,
  coefficients : FixedArray[Vector3],
) -> SphericalHarmonics3 =
  #| (self, coefficients) => self.set(coefficients)

///|
pub extern "js" fn SphericalHarmonics3::clone(
  self : SphericalHarmonics3,
) -> SphericalHarmonics3 =
  #| (self) => self.clone()

///|
pub extern "js" fn SphericalHarmonics3::copy(
  self : SphericalHarmonics3,
  other : SphericalHarmonics3,
) -> SphericalHarmonics3 =
  #| (self, other) => self.copy(other)

///|
pub extern "js" fn SphericalHarmonics3::equals(
  self : SphericalHarmonics3,
  other : SphericalHarmonics3,
) -> Bool =
  #| (self, other) => self.equals(other)

///|
pub extern "js" fn SphericalHarmonics3::zero(
  self : SphericalHarmonics3,
) -> SphericalHarmonics3 =
  #| (self) => self.zero()

///|
pub extern "js" fn SphericalHarmonics3::add(
  self : SphericalHarmonics3,
  other : SphericalHarmonics3,
) -> SphericalHarmonics3 =
  #| (self, other) => self.add(other)

///|
pub extern "js" fn SphericalHarmonics3::add_scaled_sh(
  self : SphericalHarmonics3,
  other : SphericalHarmonics3,
  scale : Double,
) -> SphericalHarmonics3 =
  #| (self, other, scale) => self.addScaledSH(other, scale)

///|
pub extern "js" fn SphericalHarmonics3::scale(
  self : SphericalHarmonics3,
  scale : Double,
) -> SphericalHarmonics3 =
  #| (self, scale) => self.scale(scale)

///|
pub extern "js" fn SphericalHarmonics3::lerp(
  self : SphericalHarmonics3,
  other : SphericalHarmonics3,
  alpha : Double,
) -> SphericalHarmonics3 =
  #| (self, other, alpha) => self.lerp(other, alpha)

///|
pub extern "js" fn SphericalHarmonics3::from_array(
  self : SphericalHarmonics3,
  values : FixedArray[Double],
  offset : Int,
) -> SphericalHarmonics3 =
  #| (self, values, offset) => self.fromArray(values, offset)

///|
pub extern "js" fn SphericalHarmonics3::to_array(
  self : SphericalHarmonics3,
) -> FixedArray[Double] =
  #| (self) => self.toArray()

///|
pub extern "js" fn SphericalHarmonics3::to_array_into(
  self : SphericalHarmonics3,
  values : FixedArray[Double],
  offset : Int,
) -> FixedArray[Double] =
  #| (self, values, offset) => self.toArray(values, offset)

///|
pub extern "js" fn SphericalHarmonics3::get_at(
  self : SphericalHarmonics3,
  normal : Vector3,
  target : Vector3,
) -> Vector3 =
  #| (self, normal, target) => self.getAt(normal, target)

///|
pub extern "js" fn SphericalHarmonics3::get_irradiance_at(
  self : SphericalHarmonics3,
  normal : Vector3,
  target : Vector3,
) -> Vector3 =
  #| (self, normal, target) => self.getIrradianceAt(normal, target)

///|
#module("@mizchi/three-mbt/statics")
pub extern "js" fn SphericalHarmonics3::get_basis_at(
  normal : Vector3,
  target : FixedArray[Double],
) -> Unit = "SphericalHarmonics3_get_basis_at"