Module type Timeout_intf.S

type 'a t
val create : Time.Controller.t -> Time.Span.t -> f:( Time.t -> 'a ) -> 'a t
val to_deferred : 'a t -> 'a Async_kernel.Deferred.t
val peek : 'a t -> 'a option
val cancel : Time.Controller.t -> 'a t -> 'a -> unit
val remaining_time : 'a t -> Time.Span.t
val await : timeout_duration:Time.Span.t -> Time.Controller.t -> 'a Async_kernel.Deferred.t -> [ `Ok of 'a | `Timeout ] Async_kernel.Deferred.t
val await_exn : timeout_duration:Time.Span.t -> Time.Controller.t -> 'a Async_kernel.Deferred.t -> 'a Async_kernel.Deferred.t