sig
  val iter :
    Raw_order.t ->
    order_id:(([< `Read | `Set_and_create ], Raw_order.t, Order_id.t)
              Fieldslib.Field.t_with_perm -> Raw_order.t -> Order_id.t -> 'a) ->
    action:(([< `Read | `Set_and_create ], Raw_order.t, string)
            Fieldslib.Field.t_with_perm -> Raw_order.t -> string -> 'b) ->
    quantity:(([< `Read | `Set_and_create ], Raw_order.t, Volume.t)
              Fieldslib.Field.t_with_perm -> Raw_order.t -> Volume.t -> 'c) ->
    order_type:(([< `Read | `Set_and_create ], Raw_order.t, string)
                Fieldslib.Field.t_with_perm -> Raw_order.t -> string -> 'd) ->
    limit_price:(([< `Read | `Set_and_create ], Raw_order.t, Price.t option)
                 Fieldslib.Field.t_with_perm ->
                 Raw_order.t -> Price.t option -> 'e) ->
    stop_price:(([< `Read | `Set_and_create ], Raw_order.t, Price.t option)
                Fieldslib.Field.t_with_perm ->
                Raw_order.t -> Price.t option -> 'f) ->
    time_in_force:(([< `Read | `Set_and_create ], Raw_order.t,
                    Raw_order.Time_in_force.t option)
                   Fieldslib.Field.t_with_perm ->
                   Raw_order.t -> Raw_order.Time_in_force.t option -> 'g) ->
    oca_group_name:(([< `Read | `Set_and_create ], Raw_order.t,
                     string option)
                    Fieldslib.Field.t_with_perm ->
                    Raw_order.t -> string option -> 'h) ->
    oca_type:(([< `Read | `Set_and_create ], Raw_order.t,
               Raw_order.Oca_type.t option)
              Fieldslib.Field.t_with_perm ->
              Raw_order.t -> Raw_order.Oca_type.t option -> 'i) ->
    order_ref:(([< `Read | `Set_and_create ], Raw_order.t, string option)
               Fieldslib.Field.t_with_perm ->
               Raw_order.t -> string option -> 'j) ->
    transmit:(([< `Read | `Set_and_create ], Raw_order.t, bool)
              Fieldslib.Field.t_with_perm -> Raw_order.t -> bool -> 'k) ->
    parent_id:(([< `Read | `Set_and_create ], Raw_order.t, Order_id.t option)
               Fieldslib.Field.t_with_perm ->
               Raw_order.t -> Order_id.t option -> 'l) ->
    block_order:(([< `Read | `Set_and_create ], Raw_order.t, bool)
                 Fieldslib.Field.t_with_perm -> Raw_order.t -> bool -> 'm) ->
    sweep_to_fill:(([< `Read | `Set_and_create ], Raw_order.t, bool)
                   Fieldslib.Field.t_with_perm -> Raw_order.t -> bool -> 'n) ->
    display_size:(([< `Read | `Set_and_create ], Raw_order.t,
                   Volume.t option)
                  Fieldslib.Field.t_with_perm ->
                  Raw_order.t -> Volume.t option -> 'o) ->
    stop_trigger_method:(([< `Read | `Set_and_create ], Raw_order.t,
                          Raw_order.Stop_trigger_method.t)
                         Fieldslib.Field.t_with_perm ->
                         Raw_order.t -> Raw_order.Stop_trigger_method.t -> 'p) ->
    outside_regular_trading_hours:(([< `Read | `Set_and_create ],
                                    Raw_order.t, bool)
                                   Fieldslib.Field.t_with_perm ->
                                   Raw_order.t -> bool -> 'q) ->
    hidden:(([< `Read | `Set_and_create ], Raw_order.t, bool)
            Fieldslib.Field.t_with_perm -> Raw_order.t -> bool -> 'r) ->
    good_after_date_time:(([< `Read | `Set_and_create ], Raw_order.t,
                           Core.Std.Time.t option)
                          Fieldslib.Field.t_with_perm ->
                          Raw_order.t -> Core.Std.Time.t option -> 's) ->
    good_till_date_time:(([< `Read | `Set_and_create ], Raw_order.t,
                          Core.Std.Time.t option)
                         Fieldslib.Field.t_with_perm ->
                         Raw_order.t -> Core.Std.Time.t option -> 't) ->
    override_percentage_constraints:(([< `Read | `Set_and_create ],
                                      Raw_order.t, bool)
                                     Fieldslib.Field.t_with_perm ->
                                     Raw_order.t -> bool -> 'u) ->
    rule80A:(([< `Read | `Set_and_create ], Raw_order.t,
              Raw_order.Rule80A.t option)
             Fieldslib.Field.t_with_perm ->
             Raw_order.t -> Raw_order.Rule80A.t option -> 'v) ->
    all_or_none:(([< `Read | `Set_and_create ], Raw_order.t, bool)
                 Fieldslib.Field.t_with_perm -> Raw_order.t -> bool -> 'w) ->
    minimum_quantity:(([< `Read | `Set_and_create ], Raw_order.t,
                       Volume.t option)
                      Fieldslib.Field.t_with_perm ->
                      Raw_order.t -> Volume.t option -> 'x) ->
    percent_offset:(([< `Read | `Set_and_create ], Raw_order.t, float option)
                    Fieldslib.Field.t_with_perm ->
                    Raw_order.t -> float option -> 'y) ->
    trailing_stop_price:(([< `Read | `Set_and_create ], Raw_order.t,
                          Price.t option)
                         Fieldslib.Field.t_with_perm ->
                         Raw_order.t -> Price.t option -> 'z) ->
    trailing_percent:(([< `Read | `Set_and_create ], Raw_order.t,
                       float option)
                      Fieldslib.Field.t_with_perm ->
                      Raw_order.t -> float option -> 'a1) ->
    financial_advisor_group:(([< `Read | `Set_and_create ], Raw_order.t,
                              string option)
                             Fieldslib.Field.t_with_perm ->
                             Raw_order.t -> string option -> 'b1) ->
    financial_advisor_profile:(([< `Read | `Set_and_create ], Raw_order.t,
                                string option)
                               Fieldslib.Field.t_with_perm ->
                               Raw_order.t -> string option -> 'c1) ->
    financial_advisor_method:(([< `Read | `Set_and_create ], Raw_order.t,
                               string option)
                              Fieldslib.Field.t_with_perm ->
                              Raw_order.t -> string option -> 'd1) ->
    financial_advisor_percentage:(([< `Read | `Set_and_create ], Raw_order.t,
                                   string option)
                                  Fieldslib.Field.t_with_perm ->
                                  Raw_order.t -> string option -> 'e1) ->
    open_close:(([< `Read | `Set_and_create ], Raw_order.t,
                 Raw_order.Open_close.t)
                Fieldslib.Field.t_with_perm ->
                Raw_order.t -> Raw_order.Open_close.t -> 'f1) ->
    origin:(([< `Read | `Set_and_create ], Raw_order.t, Raw_order.Origin.t)
            Fieldslib.Field.t_with_perm ->
            Raw_order.t -> Raw_order.Origin.t -> 'g1) ->
    short_sale_slot:(([< `Read | `Set_and_create ], Raw_order.t, int option)
                     Fieldslib.Field.t_with_perm ->
                     Raw_order.t -> int option -> 'h1) ->
    designated_location:(([< `Read | `Set_and_create ], Raw_order.t,
                          string option)
                         Fieldslib.Field.t_with_perm ->
                         Raw_order.t -> string option -> 'i1) ->
    exemption_code:(([< `Read | `Set_and_create ], Raw_order.t, int)
                    Fieldslib.Field.t_with_perm -> Raw_order.t -> int -> 'j1) ->
    discretionary_amount:(([< `Read | `Set_and_create ], Raw_order.t,
                           float option)
                          Fieldslib.Field.t_with_perm ->
                          Raw_order.t -> float option -> 'k1) ->
    electronic_trade_only:(([< `Read | `Set_and_create ], Raw_order.t, bool)
                           Fieldslib.Field.t_with_perm ->
                           Raw_order.t -> bool -> 'l1) ->
    firm_quote_only:(([< `Read | `Set_and_create ], Raw_order.t, bool)
                     Fieldslib.Field.t_with_perm ->
                     Raw_order.t -> bool -> 'm1) ->
    nbbo_price_cap:(([< `Read | `Set_and_create ], Raw_order.t, float option)
                    Fieldslib.Field.t_with_perm ->
                    Raw_order.t -> float option -> 'n1) ->
    opt_out_smart_routing:(([< `Read | `Set_and_create ], Raw_order.t, bool)
                           Fieldslib.Field.t_with_perm ->
                           Raw_order.t -> bool -> 'o1) ->
    auction_strategy:(([< `Read | `Set_and_create ], Raw_order.t,
                       Raw_order.Auction_strategy.t option)
                      Fieldslib.Field.t_with_perm ->
                      Raw_order.t ->
                      Raw_order.Auction_strategy.t option -> 'p1) ->
    starting_price:(([< `Read | `Set_and_create ], Raw_order.t,
                     Price.t option)
                    Fieldslib.Field.t_with_perm ->
                    Raw_order.t -> Price.t option -> 'q1) ->
    stock_reference_price:(([< `Read | `Set_and_create ], Raw_order.t,
                            Price.t option)
                           Fieldslib.Field.t_with_perm ->
                           Raw_order.t -> Price.t option -> 'r1) ->
    delta:(([< `Read | `Set_and_create ], Raw_order.t, float option)
           Fieldslib.Field.t_with_perm -> Raw_order.t -> float option -> 's1) ->
    lower_stock_price_range:(([< `Read | `Set_and_create ], Raw_order.t,
                              Price.t option)
                             Fieldslib.Field.t_with_perm ->
                             Raw_order.t -> Price.t option -> 't1) ->
    upper_stock_price_range:(([< `Read | `Set_and_create ], Raw_order.t,
                              Price.t option)
                             Fieldslib.Field.t_with_perm ->
                             Raw_order.t -> Price.t option -> 'u1) ->
    volatility:(([< `Read | `Set_and_create ], Raw_order.t, float option)
                Fieldslib.Field.t_with_perm ->
                Raw_order.t -> float option -> 'v1) ->
    volatility_type:(([< `Read | `Set_and_create ], Raw_order.t,
                      Raw_order.Volatility_type.t option)
                     Fieldslib.Field.t_with_perm ->
                     Raw_order.t -> Raw_order.Volatility_type.t option -> 'w1) ->
    continuous_update:(([< `Read | `Set_and_create ], Raw_order.t, bool)
                       Fieldslib.Field.t_with_perm ->
                       Raw_order.t -> bool -> 'x1) ->
    reference_price_type:(([< `Read | `Set_and_create ], Raw_order.t,
                           Raw_order.Reference_price_type.t option)
                          Fieldslib.Field.t_with_perm ->
                          Raw_order.t ->
                          Raw_order.Reference_price_type.t option -> 'y1) ->
    delta_neutral_order_type:(([< `Read | `Set_and_create ], Raw_order.t,
                               Order_type.t option)
                              Fieldslib.Field.t_with_perm ->
                              Raw_order.t -> Order_type.t option -> 'z1) ->
    delta_neutral_aux_price:(([< `Read | `Set_and_create ], Raw_order.t,
                              Price.t option)
                             Fieldslib.Field.t_with_perm ->
                             Raw_order.t -> Price.t option -> 'a2) ->
    delta_neutral_contract_id:(([< `Read | `Set_and_create ], Raw_order.t,
                                Contract_id.t option)
                               Fieldslib.Field.t_with_perm ->
                               Raw_order.t -> Contract_id.t option -> 'b2) ->
    delta_neutral_settling_firm:(([< `Read | `Set_and_create ], Raw_order.t,
                                  string option)
                                 Fieldslib.Field.t_with_perm ->
                                 Raw_order.t -> string option -> 'c2) ->
    delta_neutral_clearing_account:(([< `Read | `Set_and_create ],
                                     Raw_order.t, string option)
                                    Fieldslib.Field.t_with_perm ->
                                    Raw_order.t -> string option -> 'd2) ->
    delta_neutral_clearing_intent:(([< `Read | `Set_and_create ],
                                    Raw_order.t, string option)
                                   Fieldslib.Field.t_with_perm ->
                                   Raw_order.t -> string option -> 'e2) ->
    basis_points:(([< `Read | `Set_and_create ], Raw_order.t, float option)
                  Fieldslib.Field.t_with_perm ->
                  Raw_order.t -> float option -> 'f2) ->
    basis_points_type:(([< `Read | `Set_and_create ], Raw_order.t,
                        int option)
                       Fieldslib.Field.t_with_perm ->
                       Raw_order.t -> int option -> 'g2) ->
    scale_initial_level_size:(([< `Read | `Set_and_create ], Raw_order.t,
                               Volume.t option)
                              Fieldslib.Field.t_with_perm ->
                              Raw_order.t -> Volume.t option -> 'h2) ->
    scale_subsequent_level_size:(([< `Read | `Set_and_create ], Raw_order.t,
                                  Volume.t option)
                                 Fieldslib.Field.t_with_perm ->
                                 Raw_order.t -> Volume.t option -> 'i2) ->
    scale_price_increment:(([< `Read | `Set_and_create ], Raw_order.t,
                            float option)
                           Fieldslib.Field.t_with_perm ->
                           Raw_order.t -> float option -> 'j2) ->
    scale_price_adjust_value:(([< `Read | `Set_and_create ], Raw_order.t,
                               float option)
                              Fieldslib.Field.t_with_perm ->
                              Raw_order.t -> float option -> 'k2) ->
    scale_price_adjust_interval:(([< `Read | `Set_and_create ], Raw_order.t,
                                  int option)
                                 Fieldslib.Field.t_with_perm ->
                                 Raw_order.t -> int option -> 'l2) ->
    scale_profit_offset:(([< `Read | `Set_and_create ], Raw_order.t,
                          float option)
                         Fieldslib.Field.t_with_perm ->
                         Raw_order.t -> float option -> 'm2) ->
    scale_auto_reset:(([< `Read | `Set_and_create ], Raw_order.t, bool)
                      Fieldslib.Field.t_with_perm ->
                      Raw_order.t -> bool -> 'n2) ->
    scale_init_position:(([< `Read | `Set_and_create ], Raw_order.t,
                          int option)
                         Fieldslib.Field.t_with_perm ->
                         Raw_order.t -> int option -> 'o2) ->
    scale_init_fill_quantity:(([< `Read | `Set_and_create ], Raw_order.t,
                               int option)
                              Fieldslib.Field.t_with_perm ->
                              Raw_order.t -> int option -> 'p2) ->
    scale_random_percent:(([< `Read | `Set_and_create ], Raw_order.t, bool)
                          Fieldslib.Field.t_with_perm ->
                          Raw_order.t -> bool -> 'q2) ->
    hedge_type:(([< `Read | `Set_and_create ], Raw_order.t,
                 Raw_order.Hedge_type.t option)
                Fieldslib.Field.t_with_perm ->
                Raw_order.t -> Raw_order.Hedge_type.t option -> 'r2) ->
    hedge_parameter:(([< `Read | `Set_and_create ], Raw_order.t,
                      string option)
                     Fieldslib.Field.t_with_perm ->
                     Raw_order.t -> string option -> 's2) ->
    account_code:(([< `Read | `Set_and_create ], Raw_order.t,
                   Account_code.t option)
                  Fieldslib.Field.t_with_perm ->
                  Raw_order.t -> Account_code.t option -> 't2) ->
    settling_firm:(([< `Read | `Set_and_create ], Raw_order.t, string option)
                   Fieldslib.Field.t_with_perm ->
                   Raw_order.t -> string option -> 'u2) ->
    clearing_account:(([< `Read | `Set_and_create ], Raw_order.t,
                       string option)
                      Fieldslib.Field.t_with_perm ->
                      Raw_order.t -> string option -> 'v2) ->
    clearing_intent:(([< `Read | `Set_and_create ], Raw_order.t,
                      Raw_order.Clearing_intent.t option)
                     Fieldslib.Field.t_with_perm ->
                     Raw_order.t -> Raw_order.Clearing_intent.t option -> 'w2) ->
    algo_strategy:(([< `Read | `Set_and_create ], Raw_order.t, string option)
                   Fieldslib.Field.t_with_perm ->
                   Raw_order.t -> string option -> 'x2) ->
    request_pre_trade_information:(([< `Read | `Set_and_create ],
                                    Raw_order.t, bool)
                                   Fieldslib.Field.t_with_perm ->
                                   Raw_order.t -> bool -> 'y2) ->
    not_held:(([< `Read | `Set_and_create ], Raw_order.t, bool)
              Fieldslib.Field.t_with_perm -> Raw_order.t -> bool -> 'z2) ->
    'z2
  val fold :
    Raw_order.t ->
    init:'->
    order_id:('->
              ([< `Read | `Set_and_create ], Raw_order.t, Order_id.t)
              Fieldslib.Field.t_with_perm -> Raw_order.t -> Order_id.t -> 'b) ->
    action:('->
            ([< `Read | `Set_and_create ], Raw_order.t, string)
            Fieldslib.Field.t_with_perm -> Raw_order.t -> string -> 'c) ->
    quantity:('->
              ([< `Read | `Set_and_create ], Raw_order.t, Volume.t)
              Fieldslib.Field.t_with_perm -> Raw_order.t -> Volume.t -> 'd) ->
    order_type:('->
                ([< `Read | `Set_and_create ], Raw_order.t, string)
                Fieldslib.Field.t_with_perm -> Raw_order.t -> string -> 'e) ->
    limit_price:('->
                 ([< `Read | `Set_and_create ], Raw_order.t, Price.t option)
                 Fieldslib.Field.t_with_perm ->
                 Raw_order.t -> Price.t option -> 'f) ->
    stop_price:('->
                ([< `Read | `Set_and_create ], Raw_order.t, Price.t option)
                Fieldslib.Field.t_with_perm ->
                Raw_order.t -> Price.t option -> 'g) ->
    time_in_force:('->
                   ([< `Read | `Set_and_create ], Raw_order.t,
                    Raw_order.Time_in_force.t option)
                   Fieldslib.Field.t_with_perm ->
                   Raw_order.t -> Raw_order.Time_in_force.t option -> 'h) ->
    oca_group_name:('->
                    ([< `Read | `Set_and_create ], Raw_order.t,
                     string option)
                    Fieldslib.Field.t_with_perm ->
                    Raw_order.t -> string option -> 'i) ->
    oca_type:('->
              ([< `Read | `Set_and_create ], Raw_order.t,
               Raw_order.Oca_type.t option)
              Fieldslib.Field.t_with_perm ->
              Raw_order.t -> Raw_order.Oca_type.t option -> 'j) ->
    order_ref:('->
               ([< `Read | `Set_and_create ], Raw_order.t, string option)
               Fieldslib.Field.t_with_perm ->
               Raw_order.t -> string option -> 'k) ->
    transmit:('->
              ([< `Read | `Set_and_create ], Raw_order.t, bool)
              Fieldslib.Field.t_with_perm -> Raw_order.t -> bool -> 'l) ->
    parent_id:('->
               ([< `Read | `Set_and_create ], Raw_order.t, Order_id.t option)
               Fieldslib.Field.t_with_perm ->
               Raw_order.t -> Order_id.t option -> 'm) ->
    block_order:('->
                 ([< `Read | `Set_and_create ], Raw_order.t, bool)
                 Fieldslib.Field.t_with_perm -> Raw_order.t -> bool -> 'n) ->
    sweep_to_fill:('->
                   ([< `Read | `Set_and_create ], Raw_order.t, bool)
                   Fieldslib.Field.t_with_perm -> Raw_order.t -> bool -> 'o) ->
    display_size:('->
                  ([< `Read | `Set_and_create ], Raw_order.t,
                   Volume.t option)
                  Fieldslib.Field.t_with_perm ->
                  Raw_order.t -> Volume.t option -> 'p) ->
    stop_trigger_method:('->
                         ([< `Read | `Set_and_create ], Raw_order.t,
                          Raw_order.Stop_trigger_method.t)
                         Fieldslib.Field.t_with_perm ->
                         Raw_order.t -> Raw_order.Stop_trigger_method.t -> 'q) ->
    outside_regular_trading_hours:('->
                                   ([< `Read | `Set_and_create ],
                                    Raw_order.t, bool)
                                   Fieldslib.Field.t_with_perm ->
                                   Raw_order.t -> bool -> 'r) ->
    hidden:('->
            ([< `Read | `Set_and_create ], Raw_order.t, bool)
            Fieldslib.Field.t_with_perm -> Raw_order.t -> bool -> 's) ->
    good_after_date_time:('->
                          ([< `Read | `Set_and_create ], Raw_order.t,
                           Core.Std.Time.t option)
                          Fieldslib.Field.t_with_perm ->
                          Raw_order.t -> Core.Std.Time.t option -> 't) ->
    good_till_date_time:('->
                         ([< `Read | `Set_and_create ], Raw_order.t,
                          Core.Std.Time.t option)
                         Fieldslib.Field.t_with_perm ->
                         Raw_order.t -> Core.Std.Time.t option -> 'u) ->
    override_percentage_constraints:('->
                                     ([< `Read | `Set_and_create ],
                                      Raw_order.t, bool)
                                     Fieldslib.Field.t_with_perm ->
                                     Raw_order.t -> bool -> 'v) ->
    rule80A:('->
             ([< `Read | `Set_and_create ], Raw_order.t,
              Raw_order.Rule80A.t option)
             Fieldslib.Field.t_with_perm ->
             Raw_order.t -> Raw_order.Rule80A.t option -> 'w) ->
    all_or_none:('->
                 ([< `Read | `Set_and_create ], Raw_order.t, bool)
                 Fieldslib.Field.t_with_perm -> Raw_order.t -> bool -> 'x) ->
    minimum_quantity:('->
                      ([< `Read | `Set_and_create ], Raw_order.t,
                       Volume.t option)
                      Fieldslib.Field.t_with_perm ->
                      Raw_order.t -> Volume.t option -> 'y) ->
    percent_offset:('->
                    ([< `Read | `Set_and_create ], Raw_order.t, float option)
                    Fieldslib.Field.t_with_perm ->
                    Raw_order.t -> float option -> 'z) ->
    trailing_stop_price:('->
                         ([< `Read | `Set_and_create ], Raw_order.t,
                          Price.t option)
                         Fieldslib.Field.t_with_perm ->
                         Raw_order.t -> Price.t option -> 'a1) ->
    trailing_percent:('a1 ->
                      ([< `Read | `Set_and_create ], Raw_order.t,
                       float option)
                      Fieldslib.Field.t_with_perm ->
                      Raw_order.t -> float option -> 'b1) ->
    financial_advisor_group:('b1 ->
                             ([< `Read | `Set_and_create ], Raw_order.t,
                              string option)
                             Fieldslib.Field.t_with_perm ->
                             Raw_order.t -> string option -> 'c1) ->
    financial_advisor_profile:('c1 ->
                               ([< `Read | `Set_and_create ], Raw_order.t,
                                string option)
                               Fieldslib.Field.t_with_perm ->
                               Raw_order.t -> string option -> 'd1) ->
    financial_advisor_method:('d1 ->
                              ([< `Read | `Set_and_create ], Raw_order.t,
                               string option)
                              Fieldslib.Field.t_with_perm ->
                              Raw_order.t -> string option -> 'e1) ->
    financial_advisor_percentage:('e1 ->
                                  ([< `Read | `Set_and_create ], Raw_order.t,
                                   string option)
                                  Fieldslib.Field.t_with_perm ->
                                  Raw_order.t -> string option -> 'f1) ->
    open_close:('f1 ->
                ([< `Read | `Set_and_create ], Raw_order.t,
                 Raw_order.Open_close.t)
                Fieldslib.Field.t_with_perm ->
                Raw_order.t -> Raw_order.Open_close.t -> 'g1) ->
    origin:('g1 ->
            ([< `Read | `Set_and_create ], Raw_order.t, Raw_order.Origin.t)
            Fieldslib.Field.t_with_perm ->
            Raw_order.t -> Raw_order.Origin.t -> 'h1) ->
    short_sale_slot:('h1 ->
                     ([< `Read | `Set_and_create ], Raw_order.t, int option)
                     Fieldslib.Field.t_with_perm ->
                     Raw_order.t -> int option -> 'i1) ->
    designated_location:('i1 ->
                         ([< `Read | `Set_and_create ], Raw_order.t,
                          string option)
                         Fieldslib.Field.t_with_perm ->
                         Raw_order.t -> string option -> 'j1) ->
    exemption_code:('j1 ->
                    ([< `Read | `Set_and_create ], Raw_order.t, int)
                    Fieldslib.Field.t_with_perm -> Raw_order.t -> int -> 'k1) ->
    discretionary_amount:('k1 ->
                          ([< `Read | `Set_and_create ], Raw_order.t,
                           float option)
                          Fieldslib.Field.t_with_perm ->
                          Raw_order.t -> float option -> 'l1) ->
    electronic_trade_only:('l1 ->
                           ([< `Read | `Set_and_create ], Raw_order.t, bool)
                           Fieldslib.Field.t_with_perm ->
                           Raw_order.t -> bool -> 'm1) ->
    firm_quote_only:('m1 ->
                     ([< `Read | `Set_and_create ], Raw_order.t, bool)
                     Fieldslib.Field.t_with_perm ->
                     Raw_order.t -> bool -> 'n1) ->
    nbbo_price_cap:('n1 ->
                    ([< `Read | `Set_and_create ], Raw_order.t, float option)
                    Fieldslib.Field.t_with_perm ->
                    Raw_order.t -> float option -> 'o1) ->
    opt_out_smart_routing:('o1 ->
                           ([< `Read | `Set_and_create ], Raw_order.t, bool)
                           Fieldslib.Field.t_with_perm ->
                           Raw_order.t -> bool -> 'p1) ->
    auction_strategy:('p1 ->
                      ([< `Read | `Set_and_create ], Raw_order.t,
                       Raw_order.Auction_strategy.t option)
                      Fieldslib.Field.t_with_perm ->
                      Raw_order.t ->
                      Raw_order.Auction_strategy.t option -> 'q1) ->
    starting_price:('q1 ->
                    ([< `Read | `Set_and_create ], Raw_order.t,
                     Price.t option)
                    Fieldslib.Field.t_with_perm ->
                    Raw_order.t -> Price.t option -> 'r1) ->
    stock_reference_price:('r1 ->
                           ([< `Read | `Set_and_create ], Raw_order.t,
                            Price.t option)
                           Fieldslib.Field.t_with_perm ->
                           Raw_order.t -> Price.t option -> 's1) ->
    delta:('s1 ->
           ([< `Read | `Set_and_create ], Raw_order.t, float option)
           Fieldslib.Field.t_with_perm -> Raw_order.t -> float option -> 't1) ->
    lower_stock_price_range:('t1 ->
                             ([< `Read | `Set_and_create ], Raw_order.t,
                              Price.t option)
                             Fieldslib.Field.t_with_perm ->
                             Raw_order.t -> Price.t option -> 'u1) ->
    upper_stock_price_range:('u1 ->
                             ([< `Read | `Set_and_create ], Raw_order.t,
                              Price.t option)
                             Fieldslib.Field.t_with_perm ->
                             Raw_order.t -> Price.t option -> 'v1) ->
    volatility:('v1 ->
                ([< `Read | `Set_and_create ], Raw_order.t, float option)
                Fieldslib.Field.t_with_perm ->
                Raw_order.t -> float option -> 'w1) ->
    volatility_type:('w1 ->
                     ([< `Read | `Set_and_create ], Raw_order.t,
                      Raw_order.Volatility_type.t option)
                     Fieldslib.Field.t_with_perm ->
                     Raw_order.t -> Raw_order.Volatility_type.t option -> 'x1) ->
    continuous_update:('x1 ->
                       ([< `Read | `Set_and_create ], Raw_order.t, bool)
                       Fieldslib.Field.t_with_perm ->
                       Raw_order.t -> bool -> 'y1) ->
    reference_price_type:('y1 ->
                          ([< `Read | `Set_and_create ], Raw_order.t,
                           Raw_order.Reference_price_type.t option)
                          Fieldslib.Field.t_with_perm ->
                          Raw_order.t ->
                          Raw_order.Reference_price_type.t option -> 'z1) ->
    delta_neutral_order_type:('z1 ->
                              ([< `Read | `Set_and_create ], Raw_order.t,
                               Order_type.t option)
                              Fieldslib.Field.t_with_perm ->
                              Raw_order.t -> Order_type.t option -> 'a2) ->
    delta_neutral_aux_price:('a2 ->
                             ([< `Read | `Set_and_create ], Raw_order.t,
                              Price.t option)
                             Fieldslib.Field.t_with_perm ->
                             Raw_order.t -> Price.t option -> 'b2) ->
    delta_neutral_contract_id:('b2 ->
                               ([< `Read | `Set_and_create ], Raw_order.t,
                                Contract_id.t option)
                               Fieldslib.Field.t_with_perm ->
                               Raw_order.t -> Contract_id.t option -> 'c2) ->
    delta_neutral_settling_firm:('c2 ->
                                 ([< `Read | `Set_and_create ], Raw_order.t,
                                  string option)
                                 Fieldslib.Field.t_with_perm ->
                                 Raw_order.t -> string option -> 'd2) ->
    delta_neutral_clearing_account:('d2 ->
                                    ([< `Read | `Set_and_create ],
                                     Raw_order.t, string option)
                                    Fieldslib.Field.t_with_perm ->
                                    Raw_order.t -> string option -> 'e2) ->
    delta_neutral_clearing_intent:('e2 ->
                                   ([< `Read | `Set_and_create ],
                                    Raw_order.t, string option)
                                   Fieldslib.Field.t_with_perm ->
                                   Raw_order.t -> string option -> 'f2) ->
    basis_points:('f2 ->
                  ([< `Read | `Set_and_create ], Raw_order.t, float option)
                  Fieldslib.Field.t_with_perm ->
                  Raw_order.t -> float option -> 'g2) ->
    basis_points_type:('g2 ->
                       ([< `Read | `Set_and_create ], Raw_order.t,
                        int option)
                       Fieldslib.Field.t_with_perm ->
                       Raw_order.t -> int option -> 'h2) ->
    scale_initial_level_size:('h2 ->
                              ([< `Read | `Set_and_create ], Raw_order.t,
                               Volume.t option)
                              Fieldslib.Field.t_with_perm ->
                              Raw_order.t -> Volume.t option -> 'i2) ->
    scale_subsequent_level_size:('i2 ->
                                 ([< `Read | `Set_and_create ], Raw_order.t,
                                  Volume.t option)
                                 Fieldslib.Field.t_with_perm ->
                                 Raw_order.t -> Volume.t option -> 'j2) ->
    scale_price_increment:('j2 ->
                           ([< `Read | `Set_and_create ], Raw_order.t,
                            float option)
                           Fieldslib.Field.t_with_perm ->
                           Raw_order.t -> float option -> 'k2) ->
    scale_price_adjust_value:('k2 ->
                              ([< `Read | `Set_and_create ], Raw_order.t,
                               float option)
                              Fieldslib.Field.t_with_perm ->
                              Raw_order.t -> float option -> 'l2) ->
    scale_price_adjust_interval:('l2 ->
                                 ([< `Read | `Set_and_create ], Raw_order.t,
                                  int option)
                                 Fieldslib.Field.t_with_perm ->
                                 Raw_order.t -> int option -> 'm2) ->
    scale_profit_offset:('m2 ->
                         ([< `Read | `Set_and_create ], Raw_order.t,
                          float option)
                         Fieldslib.Field.t_with_perm ->
                         Raw_order.t -> float option -> 'n2) ->
    scale_auto_reset:('n2 ->
                      ([< `Read | `Set_and_create ], Raw_order.t, bool)
                      Fieldslib.Field.t_with_perm ->
                      Raw_order.t -> bool -> 'o2) ->
    scale_init_position:('o2 ->
                         ([< `Read | `Set_and_create ], Raw_order.t,
                          int option)
                         Fieldslib.Field.t_with_perm ->
                         Raw_order.t -> int option -> 'p2) ->
    scale_init_fill_quantity:('p2 ->
                              ([< `Read | `Set_and_create ], Raw_order.t,
                               int option)
                              Fieldslib.Field.t_with_perm ->
                              Raw_order.t -> int option -> 'q2) ->
    scale_random_percent:('q2 ->
                          ([< `Read | `Set_and_create ], Raw_order.t, bool)
                          Fieldslib.Field.t_with_perm ->
                          Raw_order.t -> bool -> 'r2) ->
    hedge_type:('r2 ->
                ([< `Read | `Set_and_create ], Raw_order.t,
                 Raw_order.Hedge_type.t option)
                Fieldslib.Field.t_with_perm ->
                Raw_order.t -> Raw_order.Hedge_type.t option -> 's2) ->
    hedge_parameter:('s2 ->
                     ([< `Read | `Set_and_create ], Raw_order.t,
                      string option)
                     Fieldslib.Field.t_with_perm ->
                     Raw_order.t -> string option -> 't2) ->
    account_code:('t2 ->
                  ([< `Read | `Set_and_create ], Raw_order.t,
                   Account_code.t option)
                  Fieldslib.Field.t_with_perm ->
                  Raw_order.t -> Account_code.t option -> 'u2) ->
    settling_firm:('u2 ->
                   ([< `Read | `Set_and_create ], Raw_order.t, string option)
                   Fieldslib.Field.t_with_perm ->
                   Raw_order.t -> string option -> 'v2) ->
    clearing_account:('v2 ->
                      ([< `Read | `Set_and_create ], Raw_order.t,
                       string option)
                      Fieldslib.Field.t_with_perm ->
                      Raw_order.t -> string option -> 'w2) ->
    clearing_intent:('w2 ->
                     ([< `Read | `Set_and_create ], Raw_order.t,
                      Raw_order.Clearing_intent.t option)
                     Fieldslib.Field.t_with_perm ->
                     Raw_order.t -> Raw_order.Clearing_intent.t option -> 'x2) ->
    algo_strategy:('x2 ->
                   ([< `Read | `Set_and_create ], Raw_order.t, string option)
                   Fieldslib.Field.t_with_perm ->
                   Raw_order.t -> string option -> 'y2) ->
    request_pre_trade_information:('y2 ->
                                   ([< `Read | `Set_and_create ],
                                    Raw_order.t, bool)
                                   Fieldslib.Field.t_with_perm ->
                                   Raw_order.t -> bool -> 'z2) ->
    not_held:('z2 ->
              ([< `Read | `Set_and_create ], Raw_order.t, bool)
              Fieldslib.Field.t_with_perm -> Raw_order.t -> bool -> 'a3) ->
    'a3
end