sig
  type time_src =
      [ `of_microseconds of int64
      | `of_milliseconds of int32
      | `of_seconds of float
      | `of_sfTime of SFTime.t ]
  class time :
    Oo_sfml_system.time_src ->
    object
      val time : SFTime.t
      method as_microseconds : unit -> int64
      method as_milliseconds : unit -> int32
      method as_seconds : unit -> float
      method t : SFTime.t
    end
  module Time :
    sig
      val add :
        Oo_sfml_system.time -> Oo_sfml_system.time -> Oo_sfml_system.time
      val sub :
        Oo_sfml_system.time -> Oo_sfml_system.time -> Oo_sfml_system.time
      val mul : Oo_sfml_system.time -> float -> Oo_sfml_system.time
      val div : Oo_sfml_system.time -> float -> Oo_sfml_system.time
      val ( + ) :
        Oo_sfml_system.time -> Oo_sfml_system.time -> Oo_sfml_system.time
      val ( - ) :
        Oo_sfml_system.time -> Oo_sfml_system.time -> Oo_sfml_system.time
      val ( * ) : Oo_sfml_system.time -> float -> Oo_sfml_system.time
      val ( / ) : Oo_sfml_system.time -> float -> Oo_sfml_system.time
    end
  val sleep : duration:Oo_sfml_system.time -> unit
  type time_as = [ `microseconds | `milliseconds | `seconds ]
  class clock :
    object
      val clock : SFClock.t
      method get_elapsed_time : unit -> SFTime.t
      method restart : unit -> SFTime.t
    end
  class pausable_clock :
    paused:bool ->
    object
      val clock : SFPausableClock.t
      method elapsed_time : SFTime.t
      method get_elapsed_time : unit -> SFTime.t
      method is_paused : unit -> bool
      method pause : unit -> unit
      method restart : paused:bool -> SFTime.t
      method start : unit -> unit
    end
  val config : < compiled_version : int * int >
end