sig
  type t
  external create : unit -> SFClock.t = "caml_sfClock_create"
  external destroy : clock:SFClock.t -> unit = "caml_sfClock_destroy"
  external restart : clock:SFClock.t -> SFTime.t = "caml_sfClock_restart"
  external restart_asSeconds : clock:SFClock.t -> float
    = "caml_sfClock_restart_asSeconds"
  external restart_asMilliseconds : clock:SFClock.t -> int32
    = "caml_sfClock_restart_asMilliseconds"
  external restart_asMicroseconds : clock:SFClock.t -> int64
    = "caml_sfClock_restart_asMicroseconds"
  external getElapsedTime : clock:SFClock.t -> SFTime.t
    = "caml_sfClock_getElapsedTime"
  external getElapsedTime_asSeconds : clock:SFClock.t -> float
    = "caml_sfClock_getElapsedTime_asSeconds"
  external getElapsedTime_asMilliseconds : clock:SFClock.t -> int32
    = "caml_sfClock_getElapsedTime_asMilliseconds"
  external getElapsedTime_asMicroseconds : clock:SFClock.t -> int64
    = "caml_sfClock_getElapsedTime_asMicroseconds"
end