sig
  type t = private {
    stamp : Core.Std.Time.t;
    price : Price.t;
    size : Volume.t;
  }
  val size : Tws.Trade.t -> Volume.t
  val price : Tws.Trade.t -> Price.t
  val stamp : Tws.Trade.t -> Core.Std.Time.t
  module Fields :
    sig
      val names : string list
      val size : (Tws.Trade.t, Volume.t) Fieldslib.Field.readonly_t
      val price : (Tws.Trade.t, Price.t) Fieldslib.Field.readonly_t
      val stamp : (Tws.Trade.t, Core.Std.Time.t) Fieldslib.Field.readonly_t
      val fold :
        init:'acc__ ->
        stamp:('acc__ ->
               (Tws.Trade.t, Core.Std.Time.t) Fieldslib.Field.readonly_t ->
               'acc__) ->
        price:('acc__ ->
               (Tws.Trade.t, Price.t) Fieldslib.Field.readonly_t -> 'acc__) ->
        size:('acc__ ->
              (Tws.Trade.t, Volume.t) Fieldslib.Field.readonly_t -> 'acc__) ->
        'acc__
      val iter :
        stamp:((Tws.Trade.t, Core.Std.Time.t) Fieldslib.Field.readonly_t ->
               unit) ->
        price:((Tws.Trade.t, Price.t) Fieldslib.Field.readonly_t -> unit) ->
        size:((Tws.Trade.t, Volume.t) Fieldslib.Field.readonly_t -> unit) ->
        unit
      val for_all :
        stamp:((Tws.Trade.t, Core.Std.Time.t) Fieldslib.Field.readonly_t ->
               bool) ->
        price:((Tws.Trade.t, Price.t) Fieldslib.Field.readonly_t -> bool) ->
        size:((Tws.Trade.t, Volume.t) Fieldslib.Field.readonly_t -> bool) ->
        bool
      val exists :
        stamp:((Tws.Trade.t, Core.Std.Time.t) Fieldslib.Field.readonly_t ->
               bool) ->
        price:((Tws.Trade.t, Price.t) Fieldslib.Field.readonly_t -> bool) ->
        size:((Tws.Trade.t, Volume.t) Fieldslib.Field.readonly_t -> bool) ->
        bool
      val to_list :
        stamp:((Tws.Trade.t, Core.Std.Time.t) Fieldslib.Field.readonly_t ->
               'elem__) ->
        price:((Tws.Trade.t, Price.t) Fieldslib.Field.readonly_t -> 'elem__) ->
        size:((Tws.Trade.t, Volume.t) Fieldslib.Field.readonly_t -> 'elem__) ->
        'elem__ list
      val map_poly :
        ([< `Read ], Tws.Trade.t, 'x0) Fieldslib.Field.user -> 'x0 list
      module Direct :
        sig
          val iter :
            Tws.Trade.t ->
            stamp:((Tws.Trade.t, Core.Std.Time.t) Fieldslib.Field.readonly_t ->
                   Tws.Trade.t -> Core.Std.Time.t -> unit) ->
            price:((Tws.Trade.t, Price.t) Fieldslib.Field.readonly_t ->
                   Tws.Trade.t -> Price.t -> unit) ->
            size:((Tws.Trade.t, Volume.t) Fieldslib.Field.readonly_t ->
                  Tws.Trade.t -> Volume.t -> unit) ->
            unit
          val fold :
            Tws.Trade.t ->
            init:'acc__ ->
            stamp:('acc__ ->
                   (Tws.Trade.t, Core.Std.Time.t) Fieldslib.Field.readonly_t ->
                   Tws.Trade.t -> Core.Std.Time.t -> 'acc__) ->
            price:('acc__ ->
                   (Tws.Trade.t, Price.t) Fieldslib.Field.readonly_t ->
                   Tws.Trade.t -> Price.t -> 'acc__) ->
            size:('acc__ ->
                  (Tws.Trade.t, Volume.t) Fieldslib.Field.readonly_t ->
                  Tws.Trade.t -> Volume.t -> 'acc__) ->
            'acc__
        end
    end
  val pp : Format.formatter -> Tws.Trade.t -> unit
  val t_of_sexp : Sexplib.Sexp.t -> Tws.Trade.t
  val sexp_of_t : Tws.Trade.t -> Sexplib.Sexp.t
end