// This file was autogenerated by the `uniffi-bindgen-gecko-js` crate.
// Trust me, you don't want to mess with it!

import {
  ArrayBufferDataStream,
  FfiConverter,
  FfiConverterArrayBuffer,
  FfiConverterInt8,
  FfiConverterUInt8,
  FfiConverterInt16,
  FfiConverterUInt16,
  FfiConverterInt32,
  FfiConverterUInt32,
  FfiConverterInt64,
  FfiConverterUInt64,
  FfiConverterFloat32,
  FfiConverterFloat64,
  FfiConverterBoolean,
  FfiConverterBytes,
  FfiConverterString,
  UniFFICallbackHandler,
  UniFFICallbackMethodHandler,
  UniFFIError,
  UniFFIInternalError,
  UniFFITypeError,
  constructUniffiObject,
  handleRustResult,
  uniffiObjectPtr,
} from "moz-src:///toolkit/components/uniffi-js/js/UniFFI.sys.mjs";
{%- for import in imports %}
{{ import }}
{%- endfor %}

// Objects intended to be used in the unit tests
export var UnitTestObjs = {
    uniffiObjectPtr,
};

{%- for func in functions %}
{%- let callable=func.callable %}
{{ func.js_docstring }}
export {% if func.callable.is_js_async %}async {% endif %}function {{ func.name }}({%- filter indent(4) %}{% include "js/CallableArgs.sys.mjs" %}{% endfilter %}) {
   {% include "js/CallableBody.sys.mjs" %}
}
{% endfor %}
{% include "Types.sys.mjs" %}

{%- if fixture %}
// Wrapper to skip type checking for function arguments
//
// This is only defined and used on test fixtures.  The goal is to skip the JS type checking so that
// we can test the lower-level C++ type checking.
export class UniffiSkipJsTypeCheck {
    constructor(value) {
        this.value = value;
    }
}
{%- endif %}
