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

///|
#external
pub type KTX2Exporter

///|
#module("@mizchi/three-mbt/asset-extra")
pub extern "js" fn KTX2Exporter::KTX2Exporter() -> KTX2Exporter = "kTX2Exporter"

///|
extern "js" fn KTX2Exporter::ffi_export_texture(
  self : KTX2Exporter,
  texture : DataTexture,
) -> @js_async.Promise[Bytes] =
  #| (self, texture) => Promise.resolve().then(() => self.parse(texture))

///|
pub async fn KTX2Exporter::export_texture(
  self : KTX2Exporter,
  texture : DataTexture,
) -> Bytes raise ExportError {
  try {
    let value = self.ffi_export_texture(texture).wait()
    value
  } catch {
    error => raise ExportError((error : Error).to_string())
  }
}

///|
extern "js" fn KTX2Exporter::ffi_export_volume(
  self : KTX2Exporter,
  texture : Data3DTexture,
) -> @js_async.Promise[Bytes] =
  #| (self, texture) => Promise.resolve().then(() => self.parse(texture))

///|
pub async fn KTX2Exporter::export_volume(
  self : KTX2Exporter,
  texture : Data3DTexture,
) -> Bytes raise ExportError {
  try {
    let value = self.ffi_export_volume(texture).wait()
    value
  } catch {
    error => raise ExportError((error : Error).to_string())
  }
}

///|
extern "js" fn KTX2Exporter::ffi_export_target(
  self : KTX2Exporter,
  renderer : WebGLRenderer,
  target : WebGLRenderTarget,
) -> @js_async.Promise[Bytes] =
  #| (self, renderer, target) => Promise.resolve().then(() => self.parse(renderer, target))

///|
pub async fn KTX2Exporter::export_target(
  self : KTX2Exporter,
  renderer : WebGLRenderer,
  target : WebGLRenderTarget,
) -> Bytes raise ExportError {
  try {
    let value = self.ffi_export_target(renderer, target).wait()
    value
  } catch {
    error => raise ExportError((error : Error).to_string())
  }
}