sig
  type 'a t = 'a array
  val filterInPlace :
    ([ `Arity_1 of 'a ], bool) Js.Internal.fn -> 'Js_vector.t -> unit
  val empty : 'Js_vector.t -> unit
  val pushBack : '-> 'Js_vector.t -> unit
  val copy : 'Js_vector.t -> 'Js_vector.t
  val memByRef : '-> 'Js_vector.t -> bool
  val iter :
    ([ `Arity_1 of 'a ], unit) Js.Internal.fn -> 'Js_vector.t -> unit
  val iteri :
    ([ `Arity_2 of int * 'a ], unit) Js.Internal.fn -> 'Js_vector.t -> unit
  val ofList : 'a list -> 'Js_vector.t
  val toList : 'Js_vector.t -> 'a list
  val map :
    ([ `Arity_1 of 'a ], 'b) Js.Internal.fn ->
    'Js_vector.t -> 'Js_vector.t
  val mapi :
    ([ `Arity_2 of int * 'a ], 'b) Js.Internal.fn ->
    'Js_vector.t -> 'Js_vector.t
  val foldLeft :
    ([ `Arity_2 of 'a * 'b ], 'a) Js.Internal.fn ->
    '-> 'Js_vector.t -> 'a
  val foldRight :
    ([ `Arity_2 of 'b * 'a ], 'a) Js.Internal.fn ->
    'Js_vector.t -> '-> 'a
  external length : 'Js_vector.t -> int = "%array_length"
  external get : 'Js_vector.t -> int -> 'a = "%array_safe_get"
  external set : 'Js_vector.t -> int -> '-> unit = "%array_safe_set"
  external make : int -> '-> 'Js_vector.t = "caml_make_vect"
  val init :
    int -> ([ `Arity_1 of int ], 'a) Js.Internal.fn -> 'Js_vector.t
  external unsafe_get : 'Js_vector.t -> int -> 'a = "%array_unsafe_get"
  external unsafe_set : 'Js_vector.t -> int -> '-> unit
    = "%array_unsafe_set"
end