sig
  val names : string list
  val n_trades :
    ([< `Read | `Set_and_create ], Raw_bar.t, int)
    Fieldslib.Field.t_with_perm
  val has_gaps :
    ([< `Read | `Set_and_create ], Raw_bar.t, bool)
    Fieldslib.Field.t_with_perm
  val wap :
    ([< `Read | `Set_and_create ], Raw_bar.t, Price.t)
    Fieldslib.Field.t_with_perm
  val vo :
    ([< `Read | `Set_and_create ], Raw_bar.t, Volume.t)
    Fieldslib.Field.t_with_perm
  val cl :
    ([< `Read | `Set_and_create ], Raw_bar.t, Price.t)
    Fieldslib.Field.t_with_perm
  val lo :
    ([< `Read | `Set_and_create ], Raw_bar.t, Price.t)
    Fieldslib.Field.t_with_perm
  val hi :
    ([< `Read | `Set_and_create ], Raw_bar.t, Price.t)
    Fieldslib.Field.t_with_perm
  val op :
    ([< `Read | `Set_and_create ], Raw_bar.t, Price.t)
    Fieldslib.Field.t_with_perm
  val stamp :
    ([< `Read | `Set_and_create ], Raw_bar.t, Core.Std.Time.t)
    Fieldslib.Field.t_with_perm
  val make_creator :
    stamp:(([< `Read | `Set_and_create ], Raw_bar.t, Core.Std.Time.t)
           Fieldslib.Field.t_with_perm -> '-> ('-> Core.Std.Time.t) * 'c) ->
    op:(([< `Read | `Set_and_create ], Raw_bar.t, Price.t)
        Fieldslib.Field.t_with_perm -> '-> ('-> Price.t) * 'd) ->
    hi:(([< `Read | `Set_and_create ], Raw_bar.t, Price.t)
        Fieldslib.Field.t_with_perm -> '-> ('-> Price.t) * 'e) ->
    lo:(([< `Read | `Set_and_create ], Raw_bar.t, Price.t)
        Fieldslib.Field.t_with_perm -> '-> ('-> Price.t) * 'f) ->
    cl:(([< `Read | `Set_and_create ], Raw_bar.t, Price.t)
        Fieldslib.Field.t_with_perm -> '-> ('-> Price.t) * 'g) ->
    vo:(([< `Read | `Set_and_create ], Raw_bar.t, Volume.t)
        Fieldslib.Field.t_with_perm -> '-> ('-> Volume.t) * 'h) ->
    wap:(([< `Read | `Set_and_create ], Raw_bar.t, Price.t)
         Fieldslib.Field.t_with_perm -> '-> ('-> Price.t) * 'i) ->
    has_gaps:(([< `Read | `Set_and_create ], Raw_bar.t, bool)
              Fieldslib.Field.t_with_perm -> '-> ('-> bool) * 'j) ->
    n_trades:(([< `Read | `Set_and_create ], Raw_bar.t, int)
              Fieldslib.Field.t_with_perm -> '-> ('-> int) * 'k) ->
    '-> ('-> Raw_bar.t) * 'k
  val create :
    stamp:Core.Std.Time.t ->
    op:Price.t ->
    hi:Price.t ->
    lo:Price.t ->
    cl:Price.t ->
    vo:Volume.t -> wap:Price.t -> has_gaps:bool -> n_trades:int -> Raw_bar.t
  val map :
    stamp:(([< `Read | `Set_and_create ], Raw_bar.t, Core.Std.Time.t)
           Fieldslib.Field.t_with_perm -> Core.Std.Time.t) ->
    op:(([< `Read | `Set_and_create ], Raw_bar.t, Price.t)
        Fieldslib.Field.t_with_perm -> Price.t) ->
    hi:(([< `Read | `Set_and_create ], Raw_bar.t, Price.t)
        Fieldslib.Field.t_with_perm -> Price.t) ->
    lo:(([< `Read | `Set_and_create ], Raw_bar.t, Price.t)
        Fieldslib.Field.t_with_perm -> Price.t) ->
    cl:(([< `Read | `Set_and_create ], Raw_bar.t, Price.t)
        Fieldslib.Field.t_with_perm -> Price.t) ->
    vo:(([< `Read | `Set_and_create ], Raw_bar.t, Volume.t)
        Fieldslib.Field.t_with_perm -> Volume.t) ->
    wap:(([< `Read | `Set_and_create ], Raw_bar.t, Price.t)
         Fieldslib.Field.t_with_perm -> Price.t) ->
    has_gaps:(([< `Read | `Set_and_create ], Raw_bar.t, bool)
              Fieldslib.Field.t_with_perm -> bool) ->
    n_trades:(([< `Read | `Set_and_create ], Raw_bar.t, int)
              Fieldslib.Field.t_with_perm -> int) ->
    Raw_bar.t
  val iter :
    stamp:(([< `Read | `Set_and_create ], Raw_bar.t, Core.Std.Time.t)
           Fieldslib.Field.t_with_perm -> 'a) ->
    op:(([< `Read | `Set_and_create ], Raw_bar.t, Price.t)
        Fieldslib.Field.t_with_perm -> 'b) ->
    hi:(([< `Read | `Set_and_create ], Raw_bar.t, Price.t)
        Fieldslib.Field.t_with_perm -> 'c) ->
    lo:(([< `Read | `Set_and_create ], Raw_bar.t, Price.t)
        Fieldslib.Field.t_with_perm -> 'd) ->
    cl:(([< `Read | `Set_and_create ], Raw_bar.t, Price.t)
        Fieldslib.Field.t_with_perm -> 'e) ->
    vo:(([< `Read | `Set_and_create ], Raw_bar.t, Volume.t)
        Fieldslib.Field.t_with_perm -> 'f) ->
    wap:(([< `Read | `Set_and_create ], Raw_bar.t, Price.t)
         Fieldslib.Field.t_with_perm -> 'g) ->
    has_gaps:(([< `Read | `Set_and_create ], Raw_bar.t, bool)
              Fieldslib.Field.t_with_perm -> 'h) ->
    n_trades:(([< `Read | `Set_and_create ], Raw_bar.t, int)
              Fieldslib.Field.t_with_perm -> 'i) ->
    'i
  val fold :
    init:'->
    stamp:('->
           ([< `Read | `Set_and_create ], Raw_bar.t, Core.Std.Time.t)
           Fieldslib.Field.t_with_perm -> 'b) ->
    op:('->
        ([< `Read | `Set_and_create ], Raw_bar.t, Price.t)
        Fieldslib.Field.t_with_perm -> 'c) ->
    hi:('->
        ([< `Read | `Set_and_create ], Raw_bar.t, Price.t)
        Fieldslib.Field.t_with_perm -> 'd) ->
    lo:('->
        ([< `Read | `Set_and_create ], Raw_bar.t, Price.t)
        Fieldslib.Field.t_with_perm -> 'e) ->
    cl:('->
        ([< `Read | `Set_and_create ], Raw_bar.t, Price.t)
        Fieldslib.Field.t_with_perm -> 'f) ->
    vo:('->
        ([< `Read | `Set_and_create ], Raw_bar.t, Volume.t)
        Fieldslib.Field.t_with_perm -> 'g) ->
    wap:('->
         ([< `Read | `Set_and_create ], Raw_bar.t, Price.t)
         Fieldslib.Field.t_with_perm -> 'h) ->
    has_gaps:('->
              ([< `Read | `Set_and_create ], Raw_bar.t, bool)
              Fieldslib.Field.t_with_perm -> 'i) ->
    n_trades:('->
              ([< `Read | `Set_and_create ], Raw_bar.t, int)
              Fieldslib.Field.t_with_perm -> 'j) ->
    'j
  val map_poly :
    ([< `Read | `Set_and_create ], Raw_bar.t, 'a) Fieldslib.Field.user ->
    'a list
  val for_all :
    stamp:(([< `Read | `Set_and_create ], Raw_bar.t, Core.Std.Time.t)
           Fieldslib.Field.t_with_perm -> bool) ->
    op:(([< `Read | `Set_and_create ], Raw_bar.t, Price.t)
        Fieldslib.Field.t_with_perm -> bool) ->
    hi:(([< `Read | `Set_and_create ], Raw_bar.t, Price.t)
        Fieldslib.Field.t_with_perm -> bool) ->
    lo:(([< `Read | `Set_and_create ], Raw_bar.t, Price.t)
        Fieldslib.Field.t_with_perm -> bool) ->
    cl:(([< `Read | `Set_and_create ], Raw_bar.t, Price.t)
        Fieldslib.Field.t_with_perm -> bool) ->
    vo:(([< `Read | `Set_and_create ], Raw_bar.t, Volume.t)
        Fieldslib.Field.t_with_perm -> bool) ->
    wap:(([< `Read | `Set_and_create ], Raw_bar.t, Price.t)
         Fieldslib.Field.t_with_perm -> bool) ->
    has_gaps:(([< `Read | `Set_and_create ], Raw_bar.t, bool)
              Fieldslib.Field.t_with_perm -> bool) ->
    n_trades:(([< `Read | `Set_and_create ], Raw_bar.t, int)
              Fieldslib.Field.t_with_perm -> bool) ->
    bool
  val exists :
    stamp:(([< `Read | `Set_and_create ], Raw_bar.t, Core.Std.Time.t)
           Fieldslib.Field.t_with_perm -> bool) ->
    op:(([< `Read | `Set_and_create ], Raw_bar.t, Price.t)
        Fieldslib.Field.t_with_perm -> bool) ->
    hi:(([< `Read | `Set_and_create ], Raw_bar.t, Price.t)
        Fieldslib.Field.t_with_perm -> bool) ->
    lo:(([< `Read | `Set_and_create ], Raw_bar.t, Price.t)
        Fieldslib.Field.t_with_perm -> bool) ->
    cl:(([< `Read | `Set_and_create ], Raw_bar.t, Price.t)
        Fieldslib.Field.t_with_perm -> bool) ->
    vo:(([< `Read | `Set_and_create ], Raw_bar.t, Volume.t)
        Fieldslib.Field.t_with_perm -> bool) ->
    wap:(([< `Read | `Set_and_create ], Raw_bar.t, Price.t)
         Fieldslib.Field.t_with_perm -> bool) ->
    has_gaps:(([< `Read | `Set_and_create ], Raw_bar.t, bool)
              Fieldslib.Field.t_with_perm -> bool) ->
    n_trades:(([< `Read | `Set_and_create ], Raw_bar.t, int)
              Fieldslib.Field.t_with_perm -> bool) ->
    bool
  val to_list :
    stamp:(([< `Read | `Set_and_create ], Raw_bar.t, Core.Std.Time.t)
           Fieldslib.Field.t_with_perm -> 'a) ->
    op:(([< `Read | `Set_and_create ], Raw_bar.t, Price.t)
        Fieldslib.Field.t_with_perm -> 'a) ->
    hi:(([< `Read | `Set_and_create ], Raw_bar.t, Price.t)
        Fieldslib.Field.t_with_perm -> 'a) ->
    lo:(([< `Read | `Set_and_create ], Raw_bar.t, Price.t)
        Fieldslib.Field.t_with_perm -> 'a) ->
    cl:(([< `Read | `Set_and_create ], Raw_bar.t, Price.t)
        Fieldslib.Field.t_with_perm -> 'a) ->
    vo:(([< `Read | `Set_and_create ], Raw_bar.t, Volume.t)
        Fieldslib.Field.t_with_perm -> 'a) ->
    wap:(([< `Read | `Set_and_create ], Raw_bar.t, Price.t)
         Fieldslib.Field.t_with_perm -> 'a) ->
    has_gaps:(([< `Read | `Set_and_create ], Raw_bar.t, bool)
              Fieldslib.Field.t_with_perm -> 'a) ->
    n_trades:(([< `Read | `Set_and_create ], Raw_bar.t, int)
              Fieldslib.Field.t_with_perm -> 'a) ->
    'a list
  module Direct :
    sig
      val iter :
        Raw_bar.t ->
        stamp:(([< `Read | `Set_and_create ], Raw_bar.t, Core.Std.Time.t)
               Fieldslib.Field.t_with_perm ->
               Raw_bar.t -> Core.Std.Time.t -> 'a) ->
        op:(([< `Read | `Set_and_create ], Raw_bar.t, Price.t)
            Fieldslib.Field.t_with_perm -> Raw_bar.t -> Price.t -> 'b) ->
        hi:(([< `Read | `Set_and_create ], Raw_bar.t, Price.t)
            Fieldslib.Field.t_with_perm -> Raw_bar.t -> Price.t -> 'c) ->
        lo:(([< `Read | `Set_and_create ], Raw_bar.t, Price.t)
            Fieldslib.Field.t_with_perm -> Raw_bar.t -> Price.t -> 'd) ->
        cl:(([< `Read | `Set_and_create ], Raw_bar.t, Price.t)
            Fieldslib.Field.t_with_perm -> Raw_bar.t -> Price.t -> 'e) ->
        vo:(([< `Read | `Set_and_create ], Raw_bar.t, Volume.t)
            Fieldslib.Field.t_with_perm -> Raw_bar.t -> Volume.t -> 'f) ->
        wap:(([< `Read | `Set_and_create ], Raw_bar.t, Price.t)
             Fieldslib.Field.t_with_perm -> Raw_bar.t -> Price.t -> 'g) ->
        has_gaps:(([< `Read | `Set_and_create ], Raw_bar.t, bool)
                  Fieldslib.Field.t_with_perm -> Raw_bar.t -> bool -> 'h) ->
        n_trades:(([< `Read | `Set_and_create ], Raw_bar.t, int)
                  Fieldslib.Field.t_with_perm -> Raw_bar.t -> int -> 'i) ->
        'i
      val fold :
        Raw_bar.t ->
        init:'->
        stamp:('->
               ([< `Read | `Set_and_create ], Raw_bar.t, Core.Std.Time.t)
               Fieldslib.Field.t_with_perm ->
               Raw_bar.t -> Core.Std.Time.t -> 'b) ->
        op:('->
            ([< `Read | `Set_and_create ], Raw_bar.t, Price.t)
            Fieldslib.Field.t_with_perm -> Raw_bar.t -> Price.t -> 'c) ->
        hi:('->
            ([< `Read | `Set_and_create ], Raw_bar.t, Price.t)
            Fieldslib.Field.t_with_perm -> Raw_bar.t -> Price.t -> 'd) ->
        lo:('->
            ([< `Read | `Set_and_create ], Raw_bar.t, Price.t)
            Fieldslib.Field.t_with_perm -> Raw_bar.t -> Price.t -> 'e) ->
        cl:('->
            ([< `Read | `Set_and_create ], Raw_bar.t, Price.t)
            Fieldslib.Field.t_with_perm -> Raw_bar.t -> Price.t -> 'f) ->
        vo:('->
            ([< `Read | `Set_and_create ], Raw_bar.t, Volume.t)
            Fieldslib.Field.t_with_perm -> Raw_bar.t -> Volume.t -> 'g) ->
        wap:('->
             ([< `Read | `Set_and_create ], Raw_bar.t, Price.t)
             Fieldslib.Field.t_with_perm -> Raw_bar.t -> Price.t -> 'h) ->
        has_gaps:('->
                  ([< `Read | `Set_and_create ], Raw_bar.t, bool)
                  Fieldslib.Field.t_with_perm -> Raw_bar.t -> bool -> 'i) ->
        n_trades:('->
                  ([< `Read | `Set_and_create ], Raw_bar.t, int)
                  Fieldslib.Field.t_with_perm -> Raw_bar.t -> int -> 'j) ->
        'j
    end
end