sig
  type t
  type more_t = More | Last
  type 'a state_t =
    [ `Exception of exn | `Final of '| `Loaded of Cf_poll.t | `Unloaded ]
  class type virtual ['a] event =
    object
      val mutable put_ : < get : 'a > Queue.t option
      val mutable state_ : [> 'Cf_poll.state_t ] as 'b
      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 -> 'b
      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_t
  class virtual ['a] file :
    [< `R | `W | `X ] ->
    Unix.file_descr ->
    object
      val mutable put_ : < get : 'a > Queue.t option
      val mutable state_ :
        [ `Exception of exn
        | `Final of 'a
        | `Loaded of Cf_poll.t
        | `Unloaded
        | `Working of Cf_poll.t * 'a ]
      method canget : bool
      method get : 'a
      method load : ?q:< get : 'a > Queue.t -> t -> unit
      method private load_ : t -> unit
      method private virtual service_ :
        Cf_poll.t ->
        [ `Exception of exn
        | `Final of 'a
        | `Loaded of Cf_poll.t
        | `Unloaded
        | `Working of Cf_poll.t * 'a ]
      method unload : unit
      method private unload_ : t -> unit
    end
  class virtual ['a] signal : int -> ['a] event
  class virtual ['a] time :
    Cf_tai64n.t ->
    object
      val mutable epoch_ : Cf_tai64n.t
      val mutable put_ : < get : 'a > Queue.t option
      val mutable state_ : [> 'a state_t ] as 'b
      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 -> 'b
      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_t ] as 'b
      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 -> 'b
      method unload : unit
      method private unload_ : t -> unit
    end
end