sig
  type t
  type more = More | Last
  type 'a state =
      Unloaded
    | Loaded of Cf_poll.t
    | Working of Cf_poll.t * 'a
    | Final of 'a
    | Exception of exn
  class type virtual ['a] event =
    object
      val mutable put_ : < get : 'a > Queue.t option
      val mutable state_ : 'Cf_poll.state
      method canget : bool
      method get : 'a
      method load : ?q:< get : 'a > Queue.t -> Cf_poll.t -> unit
      method private load_ : Cf_poll.t -> unit
      method private virtual service : Cf_poll.t -> 'Cf_poll.state
      method unload : unit
      method private unload_ : Cf_poll.t -> unit
    end
  exception Not_ready
  val create : unit -> Cf_poll.t
  val cycle : Cf_poll.t -> Cf_poll.more
  type rwx = [ `R | `W | `X ]
  class virtual ['a] file : [< Cf_poll.rwx ] -> Unix.file_descr -> ['a] event
  class virtual ['a] signal : int -> ['a] event
  class virtual ['a] time :
    ?t0:Cf_tai64n.t ->
    float ->
    object
      val mutable epoch_ : Cf_tai64n.t
      val mutable put_ : < get : 'a > Queue.t option
      val mutable state_ : 'a state
      method canget : bool
      method get : 'a
      method load : ?q:< get : 'a > Queue.t -> t -> unit
      method private load_ : t -> unit
      method private virtual service : t -> 'a state
      method unload : unit
      method private unload_ : t -> unit
    end
  class virtual ['a] idle :
    object
      val mutable epoch_ : Cf_tai64n.t option
      val mutable put_ : < get : 'a > Queue.t option
      val mutable state_ : 'a state
      method canget : bool
      method get : 'a
      method load : ?q:< get : 'a > Queue.t -> t -> unit
      method private load_ : t -> unit
      method private virtual service : t -> 'a state
      method unload : unit
      method private unload_ : t -> unit
    end
end