sig
  module Change :
    sig
      type t =
          Unknown
        | Ask_price of Price.t
        | Bid_price of Price.t
        | Ask_size of Volume.t
        | Bid_size of Volume.t
        | Ask_price_and_size of Price.t * Volume.t
        | Bid_price_and_size of Price.t * Volume.t
      val t_of_sexp : Sexplib.Sexp.t -> Tws.Quote.Change.t
      val sexp_of_t : Tws.Quote.Change.t -> Sexplib.Sexp.t
    end
  type t = private {
    stamp : Core.Std.Time.t;
    ask_price : Price.t;
    bid_price : Price.t;
    ask_size : Volume.t;
    bid_size : Volume.t;
    change : Tws.Quote.Change.t;
  }
  val change : Tws.Quote.t -> Tws.Quote.Change.t
  val bid_size : Tws.Quote.t -> Volume.t
  val ask_size : Tws.Quote.t -> Volume.t
  val bid_price : Tws.Quote.t -> Price.t
  val ask_price : Tws.Quote.t -> Price.t
  val stamp : Tws.Quote.t -> Core.Std.Time.t
  module Fields :
    sig
      val names : string list
      val change :
        (Tws.Quote.t, Tws.Quote.Change.t) Fieldslib.Field.readonly_t
      val bid_size : (Tws.Quote.t, Volume.t) Fieldslib.Field.readonly_t
      val ask_size : (Tws.Quote.t, Volume.t) Fieldslib.Field.readonly_t
      val bid_price : (Tws.Quote.t, Price.t) Fieldslib.Field.readonly_t
      val ask_price : (Tws.Quote.t, Price.t) Fieldslib.Field.readonly_t
      val stamp : (Tws.Quote.t, Core.Std.Time.t) Fieldslib.Field.readonly_t
      val fold :
        init:'acc__ ->
        stamp:('acc__ ->
               (Tws.Quote.t, Core.Std.Time.t) Fieldslib.Field.readonly_t ->
               'acc__) ->
        ask_price:('acc__ ->
                   (Tws.Quote.t, Price.t) Fieldslib.Field.readonly_t ->
                   'acc__) ->
        bid_price:('acc__ ->
                   (Tws.Quote.t, Price.t) Fieldslib.Field.readonly_t ->
                   'acc__) ->
        ask_size:('acc__ ->
                  (Tws.Quote.t, Volume.t) Fieldslib.Field.readonly_t ->
                  'acc__) ->
        bid_size:('acc__ ->
                  (Tws.Quote.t, Volume.t) Fieldslib.Field.readonly_t ->
                  'acc__) ->
        change:('acc__ ->
                (Tws.Quote.t, Tws.Quote.Change.t) Fieldslib.Field.readonly_t ->
                'acc__) ->
        'acc__
      val iter :
        stamp:((Tws.Quote.t, Core.Std.Time.t) Fieldslib.Field.readonly_t ->
               unit) ->
        ask_price:((Tws.Quote.t, Price.t) Fieldslib.Field.readonly_t -> unit) ->
        bid_price:((Tws.Quote.t, Price.t) Fieldslib.Field.readonly_t -> unit) ->
        ask_size:((Tws.Quote.t, Volume.t) Fieldslib.Field.readonly_t -> unit) ->
        bid_size:((Tws.Quote.t, Volume.t) Fieldslib.Field.readonly_t -> unit) ->
        change:((Tws.Quote.t, Tws.Quote.Change.t) Fieldslib.Field.readonly_t ->
                unit) ->
        unit
      val for_all :
        stamp:((Tws.Quote.t, Core.Std.Time.t) Fieldslib.Field.readonly_t ->
               bool) ->
        ask_price:((Tws.Quote.t, Price.t) Fieldslib.Field.readonly_t -> bool) ->
        bid_price:((Tws.Quote.t, Price.t) Fieldslib.Field.readonly_t -> bool) ->
        ask_size:((Tws.Quote.t, Volume.t) Fieldslib.Field.readonly_t -> bool) ->
        bid_size:((Tws.Quote.t, Volume.t) Fieldslib.Field.readonly_t -> bool) ->
        change:((Tws.Quote.t, Tws.Quote.Change.t) Fieldslib.Field.readonly_t ->
                bool) ->
        bool
      val exists :
        stamp:((Tws.Quote.t, Core.Std.Time.t) Fieldslib.Field.readonly_t ->
               bool) ->
        ask_price:((Tws.Quote.t, Price.t) Fieldslib.Field.readonly_t -> bool) ->
        bid_price:((Tws.Quote.t, Price.t) Fieldslib.Field.readonly_t -> bool) ->
        ask_size:((Tws.Quote.t, Volume.t) Fieldslib.Field.readonly_t -> bool) ->
        bid_size:((Tws.Quote.t, Volume.t) Fieldslib.Field.readonly_t -> bool) ->
        change:((Tws.Quote.t, Tws.Quote.Change.t) Fieldslib.Field.readonly_t ->
                bool) ->
        bool
      val to_list :
        stamp:((Tws.Quote.t, Core.Std.Time.t) Fieldslib.Field.readonly_t ->
               'elem__) ->
        ask_price:((Tws.Quote.t, Price.t) Fieldslib.Field.readonly_t ->
                   'elem__) ->
        bid_price:((Tws.Quote.t, Price.t) Fieldslib.Field.readonly_t ->
                   'elem__) ->
        ask_size:((Tws.Quote.t, Volume.t) Fieldslib.Field.readonly_t ->
                  'elem__) ->
        bid_size:((Tws.Quote.t, Volume.t) Fieldslib.Field.readonly_t ->
                  'elem__) ->
        change:((Tws.Quote.t, Tws.Quote.Change.t) Fieldslib.Field.readonly_t ->
                'elem__) ->
        'elem__ list
      val map_poly :
        ([< `Read ], Tws.Quote.t, 'x0) Fieldslib.Field.user -> 'x0 list
      module Direct :
        sig
          val iter :
            Tws.Quote.t ->
            stamp:((Tws.Quote.t, Core.Std.Time.t) Fieldslib.Field.readonly_t ->
                   Tws.Quote.t -> Core.Std.Time.t -> unit) ->
            ask_price:((Tws.Quote.t, Price.t) Fieldslib.Field.readonly_t ->
                       Tws.Quote.t -> Price.t -> unit) ->
            bid_price:((Tws.Quote.t, Price.t) Fieldslib.Field.readonly_t ->
                       Tws.Quote.t -> Price.t -> unit) ->
            ask_size:((Tws.Quote.t, Volume.t) Fieldslib.Field.readonly_t ->
                      Tws.Quote.t -> Volume.t -> unit) ->
            bid_size:((Tws.Quote.t, Volume.t) Fieldslib.Field.readonly_t ->
                      Tws.Quote.t -> Volume.t -> unit) ->
            change:((Tws.Quote.t, Tws.Quote.Change.t)
                    Fieldslib.Field.readonly_t ->
                    Tws.Quote.t -> Tws.Quote.Change.t -> unit) ->
            unit
          val fold :
            Tws.Quote.t ->
            init:'acc__ ->
            stamp:('acc__ ->
                   (Tws.Quote.t, Core.Std.Time.t) Fieldslib.Field.readonly_t ->
                   Tws.Quote.t -> Core.Std.Time.t -> 'acc__) ->
            ask_price:('acc__ ->
                       (Tws.Quote.t, Price.t) Fieldslib.Field.readonly_t ->
                       Tws.Quote.t -> Price.t -> 'acc__) ->
            bid_price:('acc__ ->
                       (Tws.Quote.t, Price.t) Fieldslib.Field.readonly_t ->
                       Tws.Quote.t -> Price.t -> 'acc__) ->
            ask_size:('acc__ ->
                      (Tws.Quote.t, Volume.t) Fieldslib.Field.readonly_t ->
                      Tws.Quote.t -> Volume.t -> 'acc__) ->
            bid_size:('acc__ ->
                      (Tws.Quote.t, Volume.t) Fieldslib.Field.readonly_t ->
                      Tws.Quote.t -> Volume.t -> 'acc__) ->
            change:('acc__ ->
                    (Tws.Quote.t, Tws.Quote.Change.t)
                    Fieldslib.Field.readonly_t ->
                    Tws.Quote.t -> Tws.Quote.Change.t -> 'acc__) ->
            'acc__
        end
    end
  val pp : Format.formatter -> Tws.Quote.t -> unit
  val t_of_sexp : Sexplib.Sexp.t -> Tws.Quote.t
  val sexp_of_t : Tws.Quote.t -> Sexplib.Sexp.t
end