sig
  module State :
    sig
      type t =
          [ `Cancelled
          | `Filled
          | `Inactive
          | `Pending_cancel
          | `Pending_submit
          | `Pre_submitted
          | `Submitted ]
      val t_of_sexp : Sexplib.Sexp.t -> Response.Order_status.State.t
      val __t_of_sexp__ : Sexplib.Sexp.t -> Response.Order_status.State.t
      val sexp_of_t : Response.Order_status.State.t -> Sexplib.Sexp.t
    end
  type t = private {
    state : Response.Order_status.State.t;
    filled : Volume.t;
    remaining : Volume.t;
    avg_fill_price : Price.t;
    permanent_id : int;
    parent_id : Order_id.t;
    last_fill_price : Price.t;
    client_id : Client_id.t;
    why_held : string option;
  }
  val why_held : Response.Order_status.t -> string option
  val client_id : Response.Order_status.t -> Client_id.t
  val last_fill_price : Response.Order_status.t -> Price.t
  val parent_id : Response.Order_status.t -> Order_id.t
  val permanent_id : Response.Order_status.t -> int
  val avg_fill_price : Response.Order_status.t -> Price.t
  val remaining : Response.Order_status.t -> Volume.t
  val filled : Response.Order_status.t -> Volume.t
  val state : Response.Order_status.t -> Response.Order_status.State.t
  module Fields :
    sig
      val names : string list
      val why_held :
        (Response.Order_status.t, string option) Fieldslib.Field.readonly_t
      val client_id :
        (Response.Order_status.t, Client_id.t) Fieldslib.Field.readonly_t
      val last_fill_price :
        (Response.Order_status.t, Price.t) Fieldslib.Field.readonly_t
      val parent_id :
        (Response.Order_status.t, Order_id.t) Fieldslib.Field.readonly_t
      val permanent_id :
        (Response.Order_status.t, int) Fieldslib.Field.readonly_t
      val avg_fill_price :
        (Response.Order_status.t, Price.t) Fieldslib.Field.readonly_t
      val remaining :
        (Response.Order_status.t, Volume.t) Fieldslib.Field.readonly_t
      val filled :
        (Response.Order_status.t, Volume.t) Fieldslib.Field.readonly_t
      val state :
        (Response.Order_status.t, Response.Order_status.State.t)
        Fieldslib.Field.readonly_t
      val fold :
        init:'acc__ ->
        state:('acc__ ->
               (Response.Order_status.t, Response.Order_status.State.t)
               Fieldslib.Field.readonly_t -> 'acc__) ->
        filled:('acc__ ->
                (Response.Order_status.t, Volume.t)
                Fieldslib.Field.readonly_t -> 'acc__) ->
        remaining:('acc__ ->
                   (Response.Order_status.t, Volume.t)
                   Fieldslib.Field.readonly_t -> 'acc__) ->
        avg_fill_price:('acc__ ->
                        (Response.Order_status.t, Price.t)
                        Fieldslib.Field.readonly_t -> 'acc__) ->
        permanent_id:('acc__ ->
                      (Response.Order_status.t, int)
                      Fieldslib.Field.readonly_t -> 'acc__) ->
        parent_id:('acc__ ->
                   (Response.Order_status.t, Order_id.t)
                   Fieldslib.Field.readonly_t -> 'acc__) ->
        last_fill_price:('acc__ ->
                         (Response.Order_status.t, Price.t)
                         Fieldslib.Field.readonly_t -> 'acc__) ->
        client_id:('acc__ ->
                   (Response.Order_status.t, Client_id.t)
                   Fieldslib.Field.readonly_t -> 'acc__) ->
        why_held:('acc__ ->
                  (Response.Order_status.t, string option)
                  Fieldslib.Field.readonly_t -> 'acc__) ->
        'acc__
      val iter :
        state:((Response.Order_status.t, Response.Order_status.State.t)
               Fieldslib.Field.readonly_t -> unit) ->
        filled:((Response.Order_status.t, Volume.t)
                Fieldslib.Field.readonly_t -> unit) ->
        remaining:((Response.Order_status.t, Volume.t)
                   Fieldslib.Field.readonly_t -> unit) ->
        avg_fill_price:((Response.Order_status.t, Price.t)
                        Fieldslib.Field.readonly_t -> unit) ->
        permanent_id:((Response.Order_status.t, int)
                      Fieldslib.Field.readonly_t -> unit) ->
        parent_id:((Response.Order_status.t, Order_id.t)
                   Fieldslib.Field.readonly_t -> unit) ->
        last_fill_price:((Response.Order_status.t, Price.t)
                         Fieldslib.Field.readonly_t -> unit) ->
        client_id:((Response.Order_status.t, Client_id.t)
                   Fieldslib.Field.readonly_t -> unit) ->
        why_held:((Response.Order_status.t, string option)
                  Fieldslib.Field.readonly_t -> unit) ->
        unit
      val for_all :
        state:((Response.Order_status.t, Response.Order_status.State.t)
               Fieldslib.Field.readonly_t -> bool) ->
        filled:((Response.Order_status.t, Volume.t)
                Fieldslib.Field.readonly_t -> bool) ->
        remaining:((Response.Order_status.t, Volume.t)
                   Fieldslib.Field.readonly_t -> bool) ->
        avg_fill_price:((Response.Order_status.t, Price.t)
                        Fieldslib.Field.readonly_t -> bool) ->
        permanent_id:((Response.Order_status.t, int)
                      Fieldslib.Field.readonly_t -> bool) ->
        parent_id:((Response.Order_status.t, Order_id.t)
                   Fieldslib.Field.readonly_t -> bool) ->
        last_fill_price:((Response.Order_status.t, Price.t)
                         Fieldslib.Field.readonly_t -> bool) ->
        client_id:((Response.Order_status.t, Client_id.t)
                   Fieldslib.Field.readonly_t -> bool) ->
        why_held:((Response.Order_status.t, string option)
                  Fieldslib.Field.readonly_t -> bool) ->
        bool
      val exists :
        state:((Response.Order_status.t, Response.Order_status.State.t)
               Fieldslib.Field.readonly_t -> bool) ->
        filled:((Response.Order_status.t, Volume.t)
                Fieldslib.Field.readonly_t -> bool) ->
        remaining:((Response.Order_status.t, Volume.t)
                   Fieldslib.Field.readonly_t -> bool) ->
        avg_fill_price:((Response.Order_status.t, Price.t)
                        Fieldslib.Field.readonly_t -> bool) ->
        permanent_id:((Response.Order_status.t, int)
                      Fieldslib.Field.readonly_t -> bool) ->
        parent_id:((Response.Order_status.t, Order_id.t)
                   Fieldslib.Field.readonly_t -> bool) ->
        last_fill_price:((Response.Order_status.t, Price.t)
                         Fieldslib.Field.readonly_t -> bool) ->
        client_id:((Response.Order_status.t, Client_id.t)
                   Fieldslib.Field.readonly_t -> bool) ->
        why_held:((Response.Order_status.t, string option)
                  Fieldslib.Field.readonly_t -> bool) ->
        bool
      val to_list :
        state:((Response.Order_status.t, Response.Order_status.State.t)
               Fieldslib.Field.readonly_t -> 'elem__) ->
        filled:((Response.Order_status.t, Volume.t)
                Fieldslib.Field.readonly_t -> 'elem__) ->
        remaining:((Response.Order_status.t, Volume.t)
                   Fieldslib.Field.readonly_t -> 'elem__) ->
        avg_fill_price:((Response.Order_status.t, Price.t)
                        Fieldslib.Field.readonly_t -> 'elem__) ->
        permanent_id:((Response.Order_status.t, int)
                      Fieldslib.Field.readonly_t -> 'elem__) ->
        parent_id:((Response.Order_status.t, Order_id.t)
                   Fieldslib.Field.readonly_t -> 'elem__) ->
        last_fill_price:((Response.Order_status.t, Price.t)
                         Fieldslib.Field.readonly_t -> 'elem__) ->
        client_id:((Response.Order_status.t, Client_id.t)
                   Fieldslib.Field.readonly_t -> 'elem__) ->
        why_held:((Response.Order_status.t, string option)
                  Fieldslib.Field.readonly_t -> 'elem__) ->
        'elem__ list
      val map_poly :
        ([< `Read ], Response.Order_status.t, 'x0) Fieldslib.Field.user ->
        'x0 list
      module Direct :
        sig
          val iter :
            Response.Order_status.t ->
            state:((Response.Order_status.t, Response.Order_status.State.t)
                   Fieldslib.Field.readonly_t ->
                   Response.Order_status.t ->
                   Response.Order_status.State.t -> unit) ->
            filled:((Response.Order_status.t, Volume.t)
                    Fieldslib.Field.readonly_t ->
                    Response.Order_status.t -> Volume.t -> unit) ->
            remaining:((Response.Order_status.t, Volume.t)
                       Fieldslib.Field.readonly_t ->
                       Response.Order_status.t -> Volume.t -> unit) ->
            avg_fill_price:((Response.Order_status.t, Price.t)
                            Fieldslib.Field.readonly_t ->
                            Response.Order_status.t -> Price.t -> unit) ->
            permanent_id:((Response.Order_status.t, int)
                          Fieldslib.Field.readonly_t ->
                          Response.Order_status.t -> int -> unit) ->
            parent_id:((Response.Order_status.t, Order_id.t)
                       Fieldslib.Field.readonly_t ->
                       Response.Order_status.t -> Order_id.t -> unit) ->
            last_fill_price:((Response.Order_status.t, Price.t)
                             Fieldslib.Field.readonly_t ->
                             Response.Order_status.t -> Price.t -> unit) ->
            client_id:((Response.Order_status.t, Client_id.t)
                       Fieldslib.Field.readonly_t ->
                       Response.Order_status.t -> Client_id.t -> unit) ->
            why_held:((Response.Order_status.t, string option)
                      Fieldslib.Field.readonly_t ->
                      Response.Order_status.t -> string option -> unit) ->
            unit
          val fold :
            Response.Order_status.t ->
            init:'acc__ ->
            state:('acc__ ->
                   (Response.Order_status.t, Response.Order_status.State.t)
                   Fieldslib.Field.readonly_t ->
                   Response.Order_status.t ->
                   Response.Order_status.State.t -> 'acc__) ->
            filled:('acc__ ->
                    (Response.Order_status.t, Volume.t)
                    Fieldslib.Field.readonly_t ->
                    Response.Order_status.t -> Volume.t -> 'acc__) ->
            remaining:('acc__ ->
                       (Response.Order_status.t, Volume.t)
                       Fieldslib.Field.readonly_t ->
                       Response.Order_status.t -> Volume.t -> 'acc__) ->
            avg_fill_price:('acc__ ->
                            (Response.Order_status.t, Price.t)
                            Fieldslib.Field.readonly_t ->
                            Response.Order_status.t -> Price.t -> 'acc__) ->
            permanent_id:('acc__ ->
                          (Response.Order_status.t, int)
                          Fieldslib.Field.readonly_t ->
                          Response.Order_status.t -> int -> 'acc__) ->
            parent_id:('acc__ ->
                       (Response.Order_status.t, Order_id.t)
                       Fieldslib.Field.readonly_t ->
                       Response.Order_status.t -> Order_id.t -> 'acc__) ->
            last_fill_price:('acc__ ->
                             (Response.Order_status.t, Price.t)
                             Fieldslib.Field.readonly_t ->
                             Response.Order_status.t -> Price.t -> 'acc__) ->
            client_id:('acc__ ->
                       (Response.Order_status.t, Client_id.t)
                       Fieldslib.Field.readonly_t ->
                       Response.Order_status.t -> Client_id.t -> 'acc__) ->
            why_held:('acc__ ->
                      (Response.Order_status.t, string option)
                      Fieldslib.Field.readonly_t ->
                      Response.Order_status.t -> string option -> 'acc__) ->
            'acc__
        end
    end
  val unpickler : t Tws_prot.Unpickler.t
  val pickler : t Tws_prot.Pickler.t Core.Std.Only_in_test.t
  val ( = ) : t -> t -> bool
  val create :
    state:Response.Order_status.State.t ->
    filled:Volume.t ->
    remaining:Volume.t ->
    avg_fill_price:Price.t ->
    permanent_id:int ->
    parent_id:Order_id.t ->
    last_fill_price:Price.t ->
    client_id:Client_id.t ->
    why_held:string option -> Response.Order_status.t
  val t_of_sexp : Sexplib.Sexp.t -> Response.Order_status.t
  val sexp_of_t : Response.Order_status.t -> Sexplib.Sexp.t
end