sig
  module Proto_T :
    sig
      type t = { cnt : int; exp : float; }
      val from_protobuf : Protobuf.Decoder.t -> Model_intf.Data.Proto_T.t
      val to_protobuf :
        Model_intf.Data.Proto_T.t -> Protobuf.Encoder.t -> unit
      val pp : Format.formatter -> Model_intf.Data.Proto_T.t -> unit
      val show : Model_intf.Data.Proto_T.t -> string
    end
  module T :
    sig
      type t = Proto_T.t = { cnt : int; exp : float; }
      val pp : Format.formatter -> t -> unit
      val show : t -> string
    end
  type t = T.t
  val create : cnt:int -> exp:float -> t
  val count : t -> int
  val expect : t -> float
  val update :
    cnt:int ->
    exp:float ->
    update_rule:Prob_cache_common.Update_rules.Update_fn.t ->
    prior_count:('-> int) -> prior_exp:('-> float) -> '-> t option -> t
  val from_protobuf : Protobuf.Decoder.t -> Model_intf.Data.Proto_T.t
  val to_protobuf : Model_intf.Data.Proto_T.t -> Protobuf.Encoder.t -> unit
end