use js_sys::{ArrayBuffer, Iterator, JsString, Object, Uint8Array};
use wasm_bindgen::prelude::*;
#[wasm_bindgen]
extern {
#[wasm_bindgen(extends = Uint8Array)]
#[derive(Clone, Debug)]
pub type Buffer;
#[wasm_bindgen(static_method_of = Buffer)]
pub fn alloc(size: f64, fill: Option<&Buffer>, encoding: Option<&JsString>) -> Buffer;
#[wasm_bindgen(static_method_of = Buffer, js_name = "allocUnsafe")]
pub fn alloc_unsafe(size: f64) -> Buffer;
#[wasm_bindgen(static_method_of = Buffer, js_name = "byteLength")]
pub fn byte_length(string: &JsString, encoding: Option<&JsString>) -> f64;
#[wasm_bindgen(static_method_of = Buffer, js_name = "compare")]
pub fn compare_(buf1: &Buffer, buf2: &Buffer) -> i32;
#[wasm_bindgen(static_method_of = Buffer)]
pub fn concat(list: Box<[JsValue]>, total_length: Option<f64>) -> Buffer;
#[wasm_bindgen(static_method_of = Buffer, js_name = "isBuffer")]
pub fn is_buffer(value: &JsValue) -> bool;
#[wasm_bindgen(static_method_of = Buffer, js_name = "isEncoding")]
pub fn is_encoding(encoding: &JsString) -> bool;
#[wasm_bindgen(static_method_of = Buffer, js_name = "from")]
pub fn from_array(array: Box<[JsValue]>) -> Buffer;
#[wasm_bindgen(static_method_of = Buffer, js_name = "from")]
pub fn from_array_buffer(buffer: &ArrayBuffer, byte_offset: Option<f64>, length: Option<f64>) -> Buffer;
#[wasm_bindgen(static_method_of = Buffer, js_name = "from")]
pub fn from_array_uint8(array: &Uint8Array) -> Buffer;
#[wasm_bindgen(static_method_of = Buffer, js_name = "from")]
pub fn from_string(string: &JsString, encoding: Option<&JsString>) -> Buffer;
#[wasm_bindgen(static_method_of = Buffer, getter, js_name = "poolSize")]
pub fn pool_size() -> f64;
#[wasm_bindgen(method)]
pub fn compare(
this: &Buffer,
target: &Buffer,
target_start: Option<f64>,
target_end: Option<f64>,
source_start: Option<f64>,
source_end: Option<f64>,
) -> i32;
#[wasm_bindgen(method)]
pub fn copy(
this: &Buffer,
target: &Buffer,
target_start: Option<f64>,
source_start: Option<f64>,
source_end: Option<f64>,
) -> f64;
#[wasm_bindgen(method)]
pub fn entries(this: &Buffer) -> Iterator;
#[wasm_bindgen(method)]
pub fn equals(this: &Buffer, that: &Buffer) -> bool;
#[wasm_bindgen(method)]
pub fn fill(
this: &Buffer,
value: &JsValue,
offset: Option<f64>,
end: Option<f64>,
encoding: Option<JsString>,
) -> Buffer;
#[wasm_bindgen(method)]
pub fn includes(this: &Buffer, value: &JsValue, offset: Option<f64>, encoding: Option<&JsString>) -> bool;
#[wasm_bindgen(method, js_name = "indexOf")]
pub fn index_of(this: &Buffer, value: &JsValue, offset: Option<f64>, encoding: Option<&JsString>) -> f64;
#[wasm_bindgen(method)]
pub fn keys(this: &Buffer) -> Iterator;
#[wasm_bindgen(method, js_name = "lastIndexOf")]
pub fn last_index_of(this: &Buffer, value: &JsValue, offset: Option<f64>, encoding: Option<&JsString>) -> f64;
#[wasm_bindgen(method, js_name = "readBigInt64BE")]
pub fn read_big_int64_be(this: &Buffer, offset: Option<f64>) -> i64;
#[wasm_bindgen(method, js_name = "readBigInt64LE")]
pub fn read_big_int64_le(this: &Buffer, offset: Option<f64>) -> i64;
#[wasm_bindgen(method, js_name = "readBigUInt64BE")]
pub fn read_big_uint64_be(this: &Buffer, offset: Option<f64>) -> u64;
#[wasm_bindgen(method, js_name = "readBigUInt64LE")]
pub fn read_big_uint64_le(this: &Buffer, offset: Option<f64>) -> u64;
#[wasm_bindgen(method, js_name = "readDoubleBE")]
pub fn read_double_be(this: &Buffer, offset: Option<f64>) -> f64;
#[wasm_bindgen(method, js_name = "readDoubleLE")]
pub fn read_double_le(this: &Buffer, offset: Option<f64>) -> f64;
#[wasm_bindgen(method, js_name = "readFloatBE")]
pub fn read_float_be(this: &Buffer, offset: Option<f64>) -> f32;
#[wasm_bindgen(method, js_name = "readFloatLE")]
pub fn read_float_le(this: &Buffer, offset: Option<f64>) -> f32;
#[wasm_bindgen(method, js_name = "readIntBE")]
pub fn read_int_be(this: &Buffer, offset: f64, length: u8) -> f64;
#[wasm_bindgen(method, js_name = "readIntLE")]
pub fn read_int_le(this: &Buffer, offset: f64, length: u8) -> f64;
#[wasm_bindgen(method, js_name = "readInt8")]
pub fn read_int8(this: &Buffer, offset: Option<f64>) -> i8;
#[wasm_bindgen(method, js_name = "readInt16BE")]
pub fn read_int16_be(this: &Buffer, offset: Option<f64>) -> i16;
#[wasm_bindgen(method, js_name = "readInt16LE")]
pub fn read_int16_le(this: &Buffer, offset: Option<f64>) -> i16;
#[wasm_bindgen(method, js_name = "readInt32BE")]
pub fn read_int32_be(this: &Buffer, offset: Option<f64>) -> i32;
#[wasm_bindgen(method, js_name = "readInt32LE")]
pub fn read_int32_le(this: &Buffer, offset: Option<f64>) -> i32;
#[wasm_bindgen(method, js_name = "readUIntBE")]
pub fn read_uint_be(this: &Buffer, offset: f64, length: u8) -> f64;
#[wasm_bindgen(method, js_name = "readUIntLE")]
pub fn read_uint_le(this: &Buffer, offset: f64, length: u8) -> f64;
#[wasm_bindgen(method, js_name = "readUInt8")]
pub fn read_uint8(this: &Buffer, offset: Option<f64>) -> u8;
#[wasm_bindgen(method, js_name = "readUInt16BE")]
pub fn read_uint16_be(this: &Buffer, offset: Option<f64>) -> u16;
#[wasm_bindgen(method, js_name = "readUInt16LE")]
pub fn read_uint16_le(this: &Buffer, offset: Option<f64>) -> u16;
#[wasm_bindgen(method, js_name = "readUInt32BE")]
pub fn read_uint32_be(this: &Buffer, offset: Option<f64>) -> u32;
#[wasm_bindgen(method, js_name = "readUInt32LE")]
pub fn read_uint32_le(this: &Buffer, offset: Option<f64>) -> u32;
#[wasm_bindgen(method)]
pub fn slice(this: &Buffer, start: Option<f64>, end: Option<f64>) -> Buffer;
#[wasm_bindgen(method)]
pub fn subarray(this: &Buffer, start: Option<f64>, end: Option<f64>) -> Buffer;
#[wasm_bindgen(method)]
pub fn swap16(this: &Buffer) -> Buffer;
#[wasm_bindgen(method)]
pub fn swap32(this: &Buffer) -> Buffer;
#[wasm_bindgen(method)]
pub fn swap64(this: &Buffer) -> Buffer;
#[wasm_bindgen(method, js_name = "toJSON")]
pub fn to_json(this: &Buffer) -> Object;
#[wasm_bindgen(method, js_name = "toString")]
pub fn to_string(this: &Buffer, encoding: Option<JsString>, start: Option<f64>, end: Option<f64>) -> JsString;
#[wasm_bindgen(method)]
pub fn values(this: &Buffer) -> Iterator;
#[wasm_bindgen(method)]
pub fn write(
this: &Buffer,
string: &JsString,
offset: Option<f64>,
length: Option<f64>,
encoding: Option<&JsString>,
) -> f64;
#[wasm_bindgen(method, js_name = "writeBigInt64BE")]
pub fn write_big_int64_be(this: &Buffer, value: i64, offset: Option<f64>) -> f64;
#[wasm_bindgen(method, js_name = "writeBigInt64LE")]
pub fn write_big_int64_le(this: &Buffer, value: i64, offset: Option<f64>) -> f64;
#[wasm_bindgen(method, js_name = "writeBigUInt64BE")]
pub fn write_big_uint64_be(this: &Buffer, value: u64, offset: Option<f64>) -> f64;
#[wasm_bindgen(method, js_name = "writeBigUInt64LE")]
pub fn write_big_uint64_le(this: &Buffer, value: u64, offset: Option<f64>) -> f64;
#[wasm_bindgen(method, js_name = "writeDoubleBE")]
pub fn write_double_be(this: &Buffer, value: f64, offset: Option<f64>) -> f64;
#[wasm_bindgen(method, js_name = "writeDoubleLE")]
pub fn write_double_le(this: &Buffer, value: f64, offset: Option<f64>) -> f64;
#[wasm_bindgen(method, js_name = "writeFloatBE")]
pub fn write_float_be(this: &Buffer, value: f32, offset: Option<f64>) -> f64;
#[wasm_bindgen(method, js_name = "writeFloatLE")]
pub fn write_float_le(this: &Buffer, value: f32, offset: Option<f64>) -> f64;
#[wasm_bindgen(method, js_name = "writeInt8")]
pub fn write_int8(this: &Buffer, value: i8, offset: Option<f64>) -> f64;
#[wasm_bindgen(method, js_name = "writeInt16BE")]
pub fn write_int16_be(this: &Buffer, value: i16, offset: Option<f64>) -> f64;
#[wasm_bindgen(method, js_name = "writeInt16LE")]
pub fn write_int16_le(this: &Buffer, value: i16, offset: Option<f64>) -> f64;
#[wasm_bindgen(method, js_name = "writeInt32BE")]
pub fn write_int32_be(this: &Buffer, value: i32, offset: Option<f64>) -> f64;
#[wasm_bindgen(method, js_name = "writeInt32LE")]
pub fn write_int32_le(this: &Buffer, value: i32, offset: Option<f64>) -> f64;
#[wasm_bindgen(method, js_name = "writeUInt8")]
pub fn write_uint8(this: &Buffer, value: u8, offset: Option<f64>) -> f64;
#[wasm_bindgen(method, js_name = "writeUInt16BE")]
pub fn write_uint16_be(this: &Buffer, value: u16, offset: Option<f64>) -> f64;
#[wasm_bindgen(method, js_name = "writeUInt16LE")]
pub fn write_uint16_le(this: &Buffer, value: u16, offset: Option<f64>) -> f64;
#[wasm_bindgen(method, js_name = "writeUInt32BE")]
pub fn write_uint32_be(this: &Buffer, value: u32, offset: Option<f64>) -> f64;
#[wasm_bindgen(method, js_name = "writeUInt32LE")]
pub fn write_uint32_le(this: &Buffer, value: u32, offset: Option<f64>) -> f64;
#[wasm_bindgen(method, getter)]
pub fn length(this: &Buffer) -> f64;
}