sig
  type 'a t = 'a list
  val length : 'Js_list.t -> int
  val cons : '-> 'Js_list.t -> 'Js_list.t
  val isEmpty : 'Js_list.t -> bool
  val hd : 'Js_list.t -> 'a option
  val tl : 'Js_list.t -> 'Js_list.t option
  val nth : 'Js_list.t -> int -> 'a option
  val revAppend : 'Js_list.t -> 'Js_list.t -> 'Js_list.t
  val rev : 'Js_list.t -> 'Js_list.t
  val mapRev : ('-> 'b [@bs]) -> 'Js_list.t -> 'Js_list.t
  val map : ('-> 'b [@bs]) -> 'Js_list.t -> 'Js_list.t
  val iter : ('-> unit [@bs]) -> 'Js_list.t -> unit
  val iteri : (int -> '-> unit [@bs]) -> 'Js_list.t -> unit
  val foldLeft : ('-> '-> 'a [@bs]) -> '-> 'b list -> 'a
  val foldRight : ('-> '-> 'b [@bs]) -> 'a list -> '-> 'b
  val flatten : 'Js_list.t Js_list.t -> 'Js_list.t
  val filter : ('-> bool [@bs]) -> 'Js_list.t -> 'Js_list.t
  val filterMap : ('-> 'b option [@bs]) -> 'Js_list.t -> 'Js_list.t
  val countBy : ('-> bool [@bs]) -> 'a list -> int
  val init : int -> (int -> 'a [@bs]) -> 'Js_list.t
  val equal : ('-> '-> bool [@bs]) -> 'a list -> 'a list -> bool
end