sig
  class type arrayBuffer =
    object method byteLength : int Js.readonly_prop end
  val arrayBuffer : (int -> Typed_array.arrayBuffer Js.t) Js.constr
  class type arrayBufferView =
    object
      method buffer : Typed_array.arrayBuffer Js.t Js.readonly_prop
      method byteLength : int Js.readonly_prop
      method byteOffset : int Js.readonly_prop
    end
  class type ['a, 'b] typedArray =
    object
      method _BYTES_PER_ELEMENT : int Js.readonly_prop
      method _content_type_ : 'b
      method buffer : arrayBuffer Js.t Js.readonly_prop
      method byteLength : int Js.readonly_prop
      method byteOffset : int Js.readonly_prop
      method length : int Js.readonly_prop
      method set_fromArray : 'Js.js_array Js.t -> int -> unit Js.meth
      method set_fromTypedArray :
        ('a, 'b) Typed_array.typedArray Js.t -> int -> unit Js.meth
      method subarray :
        int -> int -> ('a, 'b) Typed_array.typedArray Js.t Js.meth
      method subarray_toEnd :
        int -> ('a, 'b) Typed_array.typedArray Js.t Js.meth
    end
  type int8Array = (int, [ `Int8 ]) Typed_array.typedArray
  type uint8Array = (int, [ `Uint8 ]) Typed_array.typedArray
  type int16Array = (int, [ `Int16 ]) Typed_array.typedArray
  type uint16Array = (int, [ `Uint16 ]) Typed_array.typedArray
  type int32Array = (int, [ `Int32 ]) Typed_array.typedArray
  type uint32Array = (float, [ `Uint32 ]) Typed_array.typedArray
  type float32Array = (float, [ `Float32 ]) Typed_array.typedArray
  type float64Array = (float, [ `Float64 ]) Typed_array.typedArray
  val int8Array : (int -> Typed_array.int8Array Js.t) Js.constr
  val int8Array_fromArray :
    (int Js.js_array Js.t -> Typed_array.int8Array Js.t) Js.constr
  val int8Array_fromTypedArray :
    (Typed_array.int8Array Js.t -> Typed_array.int8Array Js.t) Js.constr
  val int8Array_fromBuffer :
    (Typed_array.arrayBuffer Js.t -> Typed_array.int8Array Js.t) Js.constr
  val int8Array_inBuffer :
    (Typed_array.arrayBuffer Js.t -> int -> int -> Typed_array.int8Array Js.t)
    Js.constr
  val uint8Array : (int -> Typed_array.uint8Array Js.t) Js.constr
  val uint8Array_fromArray :
    (int Js.js_array Js.t -> Typed_array.uint8Array Js.t) Js.constr
  val uint8Array_fromTypedArray :
    (Typed_array.uint8Array Js.t -> Typed_array.uint8Array Js.t) Js.constr
  val uint8Array_fromBuffer :
    (Typed_array.arrayBuffer Js.t -> Typed_array.uint8Array Js.t) Js.constr
  val uint8Array_inBuffer :
    (Typed_array.arrayBuffer Js.t ->
     int -> int -> Typed_array.uint8Array Js.t)
    Js.constr
  val int16Array : (int -> Typed_array.int16Array Js.t) Js.constr
  val int16Array_fromArray :
    (int Js.js_array Js.t -> Typed_array.int16Array Js.t) Js.constr
  val int16Array_fromTypedArray :
    (Typed_array.int16Array Js.t -> Typed_array.int16Array Js.t) Js.constr
  val int16Array_fromBuffer :
    (Typed_array.arrayBuffer Js.t -> Typed_array.int16Array Js.t) Js.constr
  val int16Array_inBuffer :
    (Typed_array.arrayBuffer Js.t ->
     int -> int -> Typed_array.int16Array Js.t)
    Js.constr
  val uint16Array : (int -> Typed_array.uint16Array Js.t) Js.constr
  val uint16Array_fromArray :
    (int Js.js_array Js.t -> Typed_array.uint16Array Js.t) Js.constr
  val uint16Array_fromTypedArray :
    (Typed_array.uint16Array Js.t -> Typed_array.uint16Array Js.t) Js.constr
  val uint16Array_fromBuffer :
    (Typed_array.arrayBuffer Js.t -> Typed_array.uint16Array Js.t) Js.constr
  val uint16Array_inBuffer :
    (Typed_array.arrayBuffer Js.t ->
     int -> int -> Typed_array.uint16Array Js.t)
    Js.constr
  val int32Array : (int -> Typed_array.int32Array Js.t) Js.constr
  val int32Array_fromArray :
    (int Js.js_array Js.t -> Typed_array.int32Array Js.t) Js.constr
  val int32Array_fromTypedArray :
    (Typed_array.int32Array Js.t -> Typed_array.int32Array Js.t) Js.constr
  val int32Array_fromBuffer :
    (Typed_array.arrayBuffer Js.t -> Typed_array.int32Array Js.t) Js.constr
  val int32Array_inBuffer :
    (Typed_array.arrayBuffer Js.t ->
     int -> int -> Typed_array.int32Array Js.t)
    Js.constr
  val uint32Array : (int -> Typed_array.uint32Array Js.t) Js.constr
  val uint32Array_fromArray :
    (float Js.js_array Js.t -> Typed_array.uint32Array Js.t) Js.constr
  val uint32Array_fromTypedArray :
    (Typed_array.uint32Array Js.t -> Typed_array.uint32Array Js.t) Js.constr
  val uint32Array_fromBuffer :
    (Typed_array.arrayBuffer Js.t -> Typed_array.uint32Array Js.t) Js.constr
  val uint32Array_inBuffer :
    (Typed_array.arrayBuffer Js.t ->
     int -> int -> Typed_array.uint32Array Js.t)
    Js.constr
  val float32Array : (int -> Typed_array.float32Array Js.t) Js.constr
  val float32Array_fromArray :
    (float Js.js_array Js.t -> Typed_array.float32Array Js.t) Js.constr
  val float32Array_fromTypedArray :
    (Typed_array.float32Array Js.t -> Typed_array.float32Array Js.t)
    Js.constr
  val float32Array_fromBuffer :
    (Typed_array.arrayBuffer Js.t -> Typed_array.float32Array Js.t) Js.constr
  val float32Array_inBuffer :
    (Typed_array.arrayBuffer Js.t ->
     int -> int -> Typed_array.float32Array Js.t)
    Js.constr
  val float64Array : (int -> Typed_array.float64Array Js.t) Js.constr
  val float64Array_fromArray :
    (float Js.js_array Js.t -> Typed_array.float64Array Js.t) Js.constr
  val float64Array_fromTypedArray :
    (Typed_array.float64Array Js.t -> Typed_array.float64Array Js.t)
    Js.constr
  val float64Array_fromBuffer :
    (Typed_array.arrayBuffer Js.t -> Typed_array.float64Array Js.t) Js.constr
  val float64Array_inBuffer :
    (Typed_array.arrayBuffer Js.t ->
     int -> int -> Typed_array.float64Array Js.t)
    Js.constr
  val set : ('a, 'b) Typed_array.typedArray Js.t -> int -> '-> unit
  val get : ('a, 'b) Typed_array.typedArray Js.t -> int -> 'Js.optdef
  val unsafe_get : ('a, 'b) Typed_array.typedArray Js.t -> int -> 'a
  class type dataView =
    object
      method buffer : arrayBuffer Js.t Js.readonly_prop
      method byteLength : int Js.readonly_prop
      method byteOffset : int Js.readonly_prop
      method getFloat32 : int -> float Js.meth
      method getFloat32_ : int -> bool Js.t -> float Js.meth
      method getFloat64 : int -> float Js.meth
      method getFloat64_ : int -> bool Js.t -> float Js.meth
      method getInt16_ : int -> bool Js.t -> int Js.meth
      method getInt32 : int -> int Js.meth
      method getInt32_ : int -> bool Js.t -> int Js.meth
      method getInt8 : int -> int Js.meth
      method getUint16 : int -> int Js.meth
      method getUint16_ : int -> bool Js.t -> int Js.meth
      method getUint32 : int -> float Js.meth
      method getUint32_ : int -> bool Js.t -> float Js.meth
      method getUint8 : int -> int Js.meth
      method setFloat32 : int -> float -> unit Js.meth
      method setFloat32_ : int -> float -> bool Js.t -> unit Js.meth
      method setFloat64 : int -> float -> unit Js.meth
      method setFloat64_ : int -> float -> bool Js.t -> unit Js.meth
      method setInt16 : int -> int -> unit Js.meth
      method setInt16_ : int -> int -> bool Js.t -> unit Js.meth
      method setInt32 : int -> int -> unit Js.meth
      method setInt32_ : int -> int -> bool Js.t -> unit Js.meth
      method setInt8 : int -> int -> unit Js.meth
      method setUint16 : int -> int -> unit Js.meth
      method setUint16_ : int -> int -> bool Js.t -> unit Js.meth
      method setUint32 : int -> float -> unit Js.meth
      method setUint32_ : int -> float -> bool Js.t -> unit Js.meth
      method setUint8 : int -> int -> unit Js.meth
    end
  val dataView :
    (Typed_array.arrayBuffer Js.t -> Typed_array.dataView Js.t) Js.constr
  val dataView_inBuffer :
    (Typed_array.arrayBuffer Js.t -> int -> int -> Typed_array.dataView Js.t)
    Js.constr
  module Bigstring :
    sig
      type t =
          (char, Bigarray.int8_unsigned_elt, Bigarray.c_layout)
          Bigarray.Array1.t
      val to_arrayBuffer :
        Typed_array.Bigstring.t -> Typed_array.arrayBuffer Js.t
      val of_arrayBuffer :
        Typed_array.arrayBuffer Js.t -> Typed_array.Bigstring.t
    end
  module String :
    sig val of_arrayBuffer : Typed_array.arrayBuffer Js.t -> string end
end