sig
  module Priority : Cf_ordered.Total_T
  class virtual ['level] prioritizer :
    object
      method virtual code : 'level -> Priority.t
      method virtual tag : 'level -> string
    end
  class ['level] event :
    'level #Cf_journal.T.prioritizer ->
    'level ->
    string ->
    object
      method level : 'level
      method message : string
      method prioritizer : 'level Cf_journal.T.prioritizer
    end
  class virtual ['a] archiver :
    object
      constraint 'a = 'level #Cf_journal.T.event
      method virtual emit : '-> unit
    end
  class virtual ['c] agent :
    'level #Cf_journal.T.prioritizer ->
    'level ->
    'c list ->
    object
      constraint 'c =
        ('level #Cf_journal.T.event as 'd) #Cf_journal.T.archiver
      val mutable archivers_ : 'c list
      val mutable limit_ : Priority.t
      method enabled : 'level -> bool
      method private virtual event : 'level -> string -> 'd
      method private put :
        ''b.
          'level -> ('-> 'b) -> ('a, unit, string, 'b) Stdlib.format4 -> 'a
      method setlimit : 'level -> unit
    end
end