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

///|
#external
pub type DRACOExporter

///|
#module("@mizchi/three-mbt/asset-formats")
pub extern "js" fn DRACOExporter::DRACOExporter() -> DRACOExporter = "dRACOExporter"

///|
extern "js" fn DRACOExporter::ffi_load_encoder(
  self : DRACOExporter,
  url : String,
) -> @js_async.Promise[Unit] =
  #| (self, url) => Promise.resolve().then(() => self.loadEncoder(url))

///|
pub async fn DRACOExporter::load_encoder(
  self : DRACOExporter,
  url : String,
) -> Unit raise LoadError {
  try {
    let value = self.ffi_load_encoder(url).wait()
    value
  } catch {
    error => raise LoadError((error : Error).to_string())
  }
}

///|
extern "js" fn DRACOExporter::ffi_export_mesh(
  self : DRACOExporter,
  object : Mesh,
  options : DRACOExportOptions,
) -> @js_async.Promise[Bytes] =
  #| (self, object, options) => Promise.resolve().then(() => self.parseAsync(object,{...options,quantization:options.quantization.slice()}).then(data=>new Uint8Array(data.buffer,data.byteOffset,data.byteLength).slice()))

///|
pub async fn DRACOExporter::export_mesh(
  self : DRACOExporter,
  object : Mesh,
  options : DRACOExportOptions,
) -> Bytes raise ExportError {
  try {
    let value = self.ffi_export_mesh(object, options).wait()
    value
  } catch {
    error => raise ExportError((error : Error).to_string())
  }
}

///|
extern "js" fn DRACOExporter::ffi_export_points(
  self : DRACOExporter,
  object : Points,
  options : DRACOExportOptions,
) -> @js_async.Promise[Bytes] =
  #| (self, object, options) => Promise.resolve().then(() => self.parseAsync(object,{...options,quantization:options.quantization.slice()}).then(data=>new Uint8Array(data.buffer,data.byteOffset,data.byteLength).slice()))

///|
pub async fn DRACOExporter::export_points(
  self : DRACOExporter,
  object : Points,
  options : DRACOExportOptions,
) -> Bytes raise ExportError {
  try {
    let value = self.ffi_export_points(object, options).wait()
    value
  } catch {
    error => raise ExportError((error : Error).to_string())
  }
}