sig
  type 'a t = 'a option
  val some : '-> 'a option
  val isSome : 'a option -> bool
  val isSomeValue :
    ([ `Arity_2 of 'a * 'a ], bool) Js.Internal.fn -> '-> 'a option -> bool
  val isNone : 'a option -> bool
  val getExn : 'a option -> 'a
  val equal :
    ([ `Arity_2 of 'a * 'b ], bool) Js.Internal.fn ->
    'a option -> 'b option -> bool
  val andThen :
    ([ `Arity_1 of 'a ], 'b option) Js.Internal.fn -> 'a option -> 'b option
  val map : ([ `Arity_1 of 'a ], 'b) Js.Internal.fn -> 'a option -> 'b option
  val default : '-> 'a option -> 'a
  val filter :
    ([ `Arity_1 of 'a ], bool) Js.Internal.fn -> 'a option -> 'a option
  val firstSome : 'a option -> 'a option -> 'a option
end