sig
  type 'a t = 'a option
  val some : '-> 'a option
  val isSome : 'a option -> bool
  val isSomeValue : ('-> '-> bool [@bs]) -> '-> 'a option -> bool
  val isNone : 'a option -> bool
  val getExn : 'a option -> 'a
  val equal : ('-> '-> bool [@bs]) -> 'a option -> 'b option -> bool
  val andThen : ('-> 'b option [@bs]) -> 'a option -> 'b option
  val map : ('-> 'b [@bs]) -> 'a option -> 'b option
  val default : '-> 'a option -> 'a
  val filter : ('-> bool [@bs]) -> 'a option -> 'a option
  val firstSome : 'a option -> 'a option -> 'a option
end