sig
  val names : string list
  val request_pre_trade_information :
    ([< `Read | `Set_and_create ], Submit_order.t, bool)
    Fieldslib.Field.t_with_perm
  val algo_strategy :
    ([< `Read | `Set_and_create ], Submit_order.t, string option)
    Fieldslib.Field.t_with_perm
  val underlying_combo :
    ([< `Read | `Set_and_create ], Submit_order.t, bool)
    Fieldslib.Field.t_with_perm
  val not_held :
    ([< `Read | `Set_and_create ], Submit_order.t, bool)
    Fieldslib.Field.t_with_perm
  val clearing_intent :
    ([< `Read | `Set_and_create ], Submit_order.t,
     Raw_order.Clearing_intent.t option)
    Fieldslib.Field.t_with_perm
  val clearing_account :
    ([< `Read | `Set_and_create ], Submit_order.t, string option)
    Fieldslib.Field.t_with_perm
  val opt_out_smart_routing :
    ([< `Read | `Set_and_create ], Submit_order.t, bool)
    Fieldslib.Field.t_with_perm
  val hedge_type :
    ([< `Read | `Set_and_create ], Submit_order.t,
     Raw_order.Hedge_type.t option)
    Fieldslib.Field.t_with_perm
  val scale_price_increment :
    ([< `Read | `Set_and_create ], Submit_order.t, float option)
    Fieldslib.Field.t_with_perm
  val scale_subsequent_level_size :
    ([< `Read | `Set_and_create ], Submit_order.t, Volume.t option)
    Fieldslib.Field.t_with_perm
  val scale_initial_level_size :
    ([< `Read | `Set_and_create ], Submit_order.t, Volume.t option)
    Fieldslib.Field.t_with_perm
  val trailing_percent :
    ([< `Read | `Set_and_create ], Submit_order.t, float option)
    Fieldslib.Field.t_with_perm
  val trailing_stop_price :
    ([< `Read | `Set_and_create ], Submit_order.t, Price.t option)
    Fieldslib.Field.t_with_perm
  val reference_price_type :
    ([< `Read | `Set_and_create ], Submit_order.t,
     Raw_order.Reference_price_type.t option)
    Fieldslib.Field.t_with_perm
  val continuous_update :
    ([< `Read | `Set_and_create ], Submit_order.t, bool)
    Fieldslib.Field.t_with_perm
  val delta_neutral_aux_price :
    ([< `Read | `Set_and_create ], Submit_order.t, Price.t option)
    Fieldslib.Field.t_with_perm
  val delta_neutral_order_type :
    ([< `Read | `Set_and_create ], Submit_order.t, Order_type.t option)
    Fieldslib.Field.t_with_perm
  val volatility_type :
    ([< `Read | `Set_and_create ], Submit_order.t,
     Raw_order.Volatility_type.t option)
    Fieldslib.Field.t_with_perm
  val volatility :
    ([< `Read | `Set_and_create ], Submit_order.t, float option)
    Fieldslib.Field.t_with_perm
  val override_percentage_constraints :
    ([< `Read | `Set_and_create ], Submit_order.t, bool)
    Fieldslib.Field.t_with_perm
  val upper_stock_price_range :
    ([< `Read | `Set_and_create ], Submit_order.t, Price.t option)
    Fieldslib.Field.t_with_perm
  val lower_stock_price_range :
    ([< `Read | `Set_and_create ], Submit_order.t, Price.t option)
    Fieldslib.Field.t_with_perm
  val delta :
    ([< `Read | `Set_and_create ], Submit_order.t, float option)
    Fieldslib.Field.t_with_perm
  val stock_reference_price :
    ([< `Read | `Set_and_create ], Submit_order.t, Price.t option)
    Fieldslib.Field.t_with_perm
  val starting_price :
    ([< `Read | `Set_and_create ], Submit_order.t, Price.t option)
    Fieldslib.Field.t_with_perm
  val auction_strategy :
    ([< `Read | `Set_and_create ], Submit_order.t,
     Raw_order.Auction_strategy.t option)
    Fieldslib.Field.t_with_perm
  val nbbo_price_cap :
    ([< `Read | `Set_and_create ], Submit_order.t, float option)
    Fieldslib.Field.t_with_perm
  val firm_quote_only :
    ([< `Read | `Set_and_create ], Submit_order.t, bool)
    Fieldslib.Field.t_with_perm
  val electronic_trade_only :
    ([< `Read | `Set_and_create ], Submit_order.t, bool)
    Fieldslib.Field.t_with_perm
  val percent_offset :
    ([< `Read | `Set_and_create ], Submit_order.t, float option)
    Fieldslib.Field.t_with_perm
  val minimum_quantity :
    ([< `Read | `Set_and_create ], Submit_order.t, Volume.t option)
    Fieldslib.Field.t_with_perm
  val all_or_none :
    ([< `Read | `Set_and_create ], Submit_order.t, bool)
    Fieldslib.Field.t_with_perm
  val settling_firm :
    ([< `Read | `Set_and_create ], Submit_order.t, string option)
    Fieldslib.Field.t_with_perm
  val rule80A :
    ([< `Read | `Set_and_create ], Submit_order.t,
     Raw_order.Rule80A.t option)
    Fieldslib.Field.t_with_perm
  val oca_type :
    ([< `Read | `Set_and_create ], Submit_order.t,
     Raw_order.Oca_type.t option)
    Fieldslib.Field.t_with_perm
  val exemption_code :
    ([< `Read | `Set_and_create ], Submit_order.t, int)
    Fieldslib.Field.t_with_perm
  val designated_location :
    ([< `Read | `Set_and_create ], Submit_order.t, string option)
    Fieldslib.Field.t_with_perm
  val short_sale_slot :
    ([< `Read | `Set_and_create ], Submit_order.t, int option)
    Fieldslib.Field.t_with_perm
  val financial_advisor_profile :
    ([< `Read | `Set_and_create ], Submit_order.t, string option)
    Fieldslib.Field.t_with_perm
  val financial_advisor_percentage :
    ([< `Read | `Set_and_create ], Submit_order.t, string option)
    Fieldslib.Field.t_with_perm
  val financial_advisor_method :
    ([< `Read | `Set_and_create ], Submit_order.t, string option)
    Fieldslib.Field.t_with_perm
  val financial_advisor_group :
    ([< `Read | `Set_and_create ], Submit_order.t, string option)
    Fieldslib.Field.t_with_perm
  val good_till_date_time :
    ([< `Read | `Set_and_create ], Submit_order.t, Core.Std.Time.t option)
    Fieldslib.Field.t_with_perm
  val good_after_date_time :
    ([< `Read | `Set_and_create ], Submit_order.t, Core.Std.Time.t option)
    Fieldslib.Field.t_with_perm
  val discretionary_amount :
    ([< `Read | `Set_and_create ], Submit_order.t, float option)
    Fieldslib.Field.t_with_perm
  val shares_allocation :
    ([< `Read | `Set_and_create ], Submit_order.t, string)
    Fieldslib.Field.t_with_perm
  val hidden :
    ([< `Read | `Set_and_create ], Submit_order.t, bool)
    Fieldslib.Field.t_with_perm
  val outside_regular_trading_hours :
    ([< `Read | `Set_and_create ], Submit_order.t, bool)
    Fieldslib.Field.t_with_perm
  val stop_trigger_method :
    ([< `Read | `Set_and_create ], Submit_order.t,
     Raw_order.Stop_trigger_method.t)
    Fieldslib.Field.t_with_perm
  val display_size :
    ([< `Read | `Set_and_create ], Submit_order.t, Volume.t option)
    Fieldslib.Field.t_with_perm
  val sweep_to_fill :
    ([< `Read | `Set_and_create ], Submit_order.t, bool)
    Fieldslib.Field.t_with_perm
  val block_order :
    ([< `Read | `Set_and_create ], Submit_order.t, bool)
    Fieldslib.Field.t_with_perm
  val parent_id :
    ([< `Read | `Set_and_create ], Submit_order.t, Order_id.t option)
    Fieldslib.Field.t_with_perm
  val transmit :
    ([< `Read | `Set_and_create ], Submit_order.t, bool)
    Fieldslib.Field.t_with_perm
  val order_ref :
    ([< `Read | `Set_and_create ], Submit_order.t, string option)
    Fieldslib.Field.t_with_perm
  val origin :
    ([< `Read | `Set_and_create ], Submit_order.t, Raw_order.Origin.t)
    Fieldslib.Field.t_with_perm
  val open_close :
    ([< `Read | `Set_and_create ], Submit_order.t, Raw_order.Open_close.t)
    Fieldslib.Field.t_with_perm
  val account_code :
    ([< `Read | `Set_and_create ], Submit_order.t, Account_code.t)
    Fieldslib.Field.t_with_perm
  val oca_group_name :
    ([< `Read | `Set_and_create ], Submit_order.t, string option)
    Fieldslib.Field.t_with_perm
  val time_in_force :
    ([< `Read | `Set_and_create ], Submit_order.t,
     Raw_order.Time_in_force.t option)
    Fieldslib.Field.t_with_perm
  val stop_price :
    ([< `Read | `Set_and_create ], Submit_order.t, Price.t option)
    Fieldslib.Field.t_with_perm
  val limit_price :
    ([< `Read | `Set_and_create ], Submit_order.t, Price.t option)
    Fieldslib.Field.t_with_perm
  val order_kind :
    ([< `Read | `Set_and_create ], Submit_order.t, string)
    Fieldslib.Field.t_with_perm
  val quantity :
    ([< `Read | `Set_and_create ], Submit_order.t, Volume.t)
    Fieldslib.Field.t_with_perm
  val action :
    ([< `Read | `Set_and_create ], Submit_order.t, string)
    Fieldslib.Field.t_with_perm
  val sec_id :
    ([< `Read | `Set_and_create ], Submit_order.t, Security_id.Id.t option)
    Fieldslib.Field.t_with_perm
  val sec_id_type :
    ([< `Read | `Set_and_create ], Submit_order.t, Security_id.Type.t option)
    Fieldslib.Field.t_with_perm
  val local_symbol :
    ([< `Read | `Set_and_create ], Submit_order.t, Symbol.t option)
    Fieldslib.Field.t_with_perm
  val currency :
    ([< `Read | `Set_and_create ], Submit_order.t, Currency.t)
    Fieldslib.Field.t_with_perm
  val listing_exchange :
    ([< `Read | `Set_and_create ], Submit_order.t, Exchange.t option)
    Fieldslib.Field.t_with_perm
  val exchange :
    ([< `Read | `Set_and_create ], Submit_order.t, Exchange.t)
    Fieldslib.Field.t_with_perm
  val multiplier :
    ([< `Read | `Set_and_create ], Submit_order.t, int option)
    Fieldslib.Field.t_with_perm
  val option_right :
    ([< `Read | `Set_and_create ], Submit_order.t, Option_right.t option)
    Fieldslib.Field.t_with_perm
  val strike :
    ([< `Read | `Set_and_create ], Submit_order.t, Price.t option)
    Fieldslib.Field.t_with_perm
  val expiry :
    ([< `Read | `Set_and_create ], Submit_order.t, Core.Std.Date.t option)
    Fieldslib.Field.t_with_perm
  val sec_type :
    ([< `Read | `Set_and_create ], Submit_order.t, string)
    Fieldslib.Field.t_with_perm
  val symbol :
    ([< `Read | `Set_and_create ], Submit_order.t, Symbol.t)
    Fieldslib.Field.t_with_perm
  val con_id :
    ([< `Read | `Set_and_create ], Submit_order.t, Contract_id.t option)
    Fieldslib.Field.t_with_perm
  val make_creator :
    con_id:(([< `Read | `Set_and_create ], Submit_order.t,
             Contract_id.t option)
            Fieldslib.Field.t_with_perm ->
            '-> ('-> Contract_id.t option) * 'c) ->
    symbol:(([< `Read | `Set_and_create ], Submit_order.t, Symbol.t)
            Fieldslib.Field.t_with_perm -> '-> ('-> Symbol.t) * 'd) ->
    sec_type:(([< `Read | `Set_and_create ], Submit_order.t, string)
              Fieldslib.Field.t_with_perm -> '-> ('-> string) * 'e) ->
    expiry:(([< `Read | `Set_and_create ], Submit_order.t,
             Core.Std.Date.t option)
            Fieldslib.Field.t_with_perm ->
            '-> ('-> Core.Std.Date.t option) * 'f) ->
    strike:(([< `Read | `Set_and_create ], Submit_order.t, Price.t option)
            Fieldslib.Field.t_with_perm -> '-> ('-> Price.t option) * 'g) ->
    option_right:(([< `Read | `Set_and_create ], Submit_order.t,
                   Option_right.t option)
                  Fieldslib.Field.t_with_perm ->
                  '-> ('-> Option_right.t option) * 'h) ->
    multiplier:(([< `Read | `Set_and_create ], Submit_order.t, int option)
                Fieldslib.Field.t_with_perm -> '-> ('-> int option) * 'i) ->
    exchange:(([< `Read | `Set_and_create ], Submit_order.t, Exchange.t)
              Fieldslib.Field.t_with_perm -> '-> ('-> Exchange.t) * 'j) ->
    listing_exchange:(([< `Read | `Set_and_create ], Submit_order.t,
                       Exchange.t option)
                      Fieldslib.Field.t_with_perm ->
                      '-> ('-> Exchange.t option) * 'k) ->
    currency:(([< `Read | `Set_and_create ], Submit_order.t, Currency.t)
              Fieldslib.Field.t_with_perm -> '-> ('-> Currency.t) * 'l) ->
    local_symbol:(([< `Read | `Set_and_create ], Submit_order.t,
                   Symbol.t option)
                  Fieldslib.Field.t_with_perm ->
                  '-> ('-> Symbol.t option) * 'm) ->
    sec_id_type:(([< `Read | `Set_and_create ], Submit_order.t,
                  Security_id.Type.t option)
                 Fieldslib.Field.t_with_perm ->
                 '-> ('-> Security_id.Type.t option) * 'n) ->
    sec_id:(([< `Read | `Set_and_create ], Submit_order.t,
             Security_id.Id.t option)
            Fieldslib.Field.t_with_perm ->
            '-> ('-> Security_id.Id.t option) * 'o) ->
    action:(([< `Read | `Set_and_create ], Submit_order.t, string)
            Fieldslib.Field.t_with_perm -> '-> ('-> string) * 'p) ->
    quantity:(([< `Read | `Set_and_create ], Submit_order.t, Volume.t)
              Fieldslib.Field.t_with_perm -> '-> ('-> Volume.t) * 'q) ->
    order_kind:(([< `Read | `Set_and_create ], Submit_order.t, string)
                Fieldslib.Field.t_with_perm -> '-> ('-> string) * 'r) ->
    limit_price:(([< `Read | `Set_and_create ], Submit_order.t,
                  Price.t option)
                 Fieldslib.Field.t_with_perm ->
                 '-> ('-> Price.t option) * 's) ->
    stop_price:(([< `Read | `Set_and_create ], Submit_order.t,
                 Price.t option)
                Fieldslib.Field.t_with_perm ->
                '-> ('-> Price.t option) * 't) ->
    time_in_force:(([< `Read | `Set_and_create ], Submit_order.t,
                    Raw_order.Time_in_force.t option)
                   Fieldslib.Field.t_with_perm ->
                   '-> ('-> Raw_order.Time_in_force.t option) * 'u) ->
    oca_group_name:(([< `Read | `Set_and_create ], Submit_order.t,
                     string option)
                    Fieldslib.Field.t_with_perm ->
                    '-> ('-> string option) * 'v) ->
    account_code:(([< `Read | `Set_and_create ], Submit_order.t,
                   Account_code.t)
                  Fieldslib.Field.t_with_perm ->
                  '-> ('-> Account_code.t) * 'w) ->
    open_close:(([< `Read | `Set_and_create ], Submit_order.t,
                 Raw_order.Open_close.t)
                Fieldslib.Field.t_with_perm ->
                '-> ('-> Raw_order.Open_close.t) * 'x) ->
    origin:(([< `Read | `Set_and_create ], Submit_order.t,
             Raw_order.Origin.t)
            Fieldslib.Field.t_with_perm ->
            '-> ('-> Raw_order.Origin.t) * 'y) ->
    order_ref:(([< `Read | `Set_and_create ], Submit_order.t, string option)
               Fieldslib.Field.t_with_perm ->
               '-> ('-> string option) * 'z) ->
    transmit:(([< `Read | `Set_and_create ], Submit_order.t, bool)
              Fieldslib.Field.t_with_perm -> '-> ('-> bool) * 'a1) ->
    parent_id:(([< `Read | `Set_and_create ], Submit_order.t,
                Order_id.t option)
               Fieldslib.Field.t_with_perm ->
               'a1 -> ('-> Order_id.t option) * 'b1) ->
    block_order:(([< `Read | `Set_and_create ], Submit_order.t, bool)
                 Fieldslib.Field.t_with_perm -> 'b1 -> ('-> bool) * 'c1) ->
    sweep_to_fill:(([< `Read | `Set_and_create ], Submit_order.t, bool)
                   Fieldslib.Field.t_with_perm -> 'c1 -> ('-> bool) * 'd1) ->
    display_size:(([< `Read | `Set_and_create ], Submit_order.t,
                   Volume.t option)
                  Fieldslib.Field.t_with_perm ->
                  'd1 -> ('-> Volume.t option) * 'e1) ->
    stop_trigger_method:(([< `Read | `Set_and_create ], Submit_order.t,
                          Raw_order.Stop_trigger_method.t)
                         Fieldslib.Field.t_with_perm ->
                         'e1 -> ('-> Raw_order.Stop_trigger_method.t) * 'f1) ->
    outside_regular_trading_hours:(([< `Read | `Set_and_create ],
                                    Submit_order.t, bool)
                                   Fieldslib.Field.t_with_perm ->
                                   'f1 -> ('-> bool) * 'g1) ->
    hidden:(([< `Read | `Set_and_create ], Submit_order.t, bool)
            Fieldslib.Field.t_with_perm -> 'g1 -> ('-> bool) * 'h1) ->
    shares_allocation:(([< `Read | `Set_and_create ], Submit_order.t, string)
                       Fieldslib.Field.t_with_perm ->
                       'h1 -> ('-> string) * 'i1) ->
    discretionary_amount:(([< `Read | `Set_and_create ], Submit_order.t,
                           float option)
                          Fieldslib.Field.t_with_perm ->
                          'i1 -> ('-> float option) * 'j1) ->
    good_after_date_time:(([< `Read | `Set_and_create ], Submit_order.t,
                           Core.Std.Time.t option)
                          Fieldslib.Field.t_with_perm ->
                          'j1 -> ('-> Core.Std.Time.t option) * 'k1) ->
    good_till_date_time:(([< `Read | `Set_and_create ], Submit_order.t,
                          Core.Std.Time.t option)
                         Fieldslib.Field.t_with_perm ->
                         'k1 -> ('-> Core.Std.Time.t option) * 'l1) ->
    financial_advisor_group:(([< `Read | `Set_and_create ], Submit_order.t,
                              string option)
                             Fieldslib.Field.t_with_perm ->
                             'l1 -> ('-> string option) * 'm1) ->
    financial_advisor_method:(([< `Read | `Set_and_create ], Submit_order.t,
                               string option)
                              Fieldslib.Field.t_with_perm ->
                              'm1 -> ('-> string option) * 'n1) ->
    financial_advisor_percentage:(([< `Read | `Set_and_create ],
                                   Submit_order.t, string option)
                                  Fieldslib.Field.t_with_perm ->
                                  'n1 -> ('-> string option) * 'o1) ->
    financial_advisor_profile:(([< `Read | `Set_and_create ], Submit_order.t,
                                string option)
                               Fieldslib.Field.t_with_perm ->
                               'o1 -> ('-> string option) * 'p1) ->
    short_sale_slot:(([< `Read | `Set_and_create ], Submit_order.t,
                      int option)
                     Fieldslib.Field.t_with_perm ->
                     'p1 -> ('-> int option) * 'q1) ->
    designated_location:(([< `Read | `Set_and_create ], Submit_order.t,
                          string option)
                         Fieldslib.Field.t_with_perm ->
                         'q1 -> ('-> string option) * 'r1) ->
    exemption_code:(([< `Read | `Set_and_create ], Submit_order.t, int)
                    Fieldslib.Field.t_with_perm -> 'r1 -> ('-> int) * 's1) ->
    oca_type:(([< `Read | `Set_and_create ], Submit_order.t,
               Raw_order.Oca_type.t option)
              Fieldslib.Field.t_with_perm ->
              's1 -> ('-> Raw_order.Oca_type.t option) * 't1) ->
    rule80A:(([< `Read | `Set_and_create ], Submit_order.t,
              Raw_order.Rule80A.t option)
             Fieldslib.Field.t_with_perm ->
             't1 -> ('-> Raw_order.Rule80A.t option) * 'u1) ->
    settling_firm:(([< `Read | `Set_and_create ], Submit_order.t,
                    string option)
                   Fieldslib.Field.t_with_perm ->
                   'u1 -> ('-> string option) * 'v1) ->
    all_or_none:(([< `Read | `Set_and_create ], Submit_order.t, bool)
                 Fieldslib.Field.t_with_perm -> 'v1 -> ('-> bool) * 'w1) ->
    minimum_quantity:(([< `Read | `Set_and_create ], Submit_order.t,
                       Volume.t option)
                      Fieldslib.Field.t_with_perm ->
                      'w1 -> ('-> Volume.t option) * 'x1) ->
    percent_offset:(([< `Read | `Set_and_create ], Submit_order.t,
                     float option)
                    Fieldslib.Field.t_with_perm ->
                    'x1 -> ('-> float option) * 'y1) ->
    electronic_trade_only:(([< `Read | `Set_and_create ], Submit_order.t,
                            bool)
                           Fieldslib.Field.t_with_perm ->
                           'y1 -> ('-> bool) * 'z1) ->
    firm_quote_only:(([< `Read | `Set_and_create ], Submit_order.t, bool)
                     Fieldslib.Field.t_with_perm -> 'z1 -> ('-> bool) * 'a2) ->
    nbbo_price_cap:(([< `Read | `Set_and_create ], Submit_order.t,
                     float option)
                    Fieldslib.Field.t_with_perm ->
                    'a2 -> ('-> float option) * 'b2) ->
    auction_strategy:(([< `Read | `Set_and_create ], Submit_order.t,
                       Raw_order.Auction_strategy.t option)
                      Fieldslib.Field.t_with_perm ->
                      'b2 ->
                      ('-> Raw_order.Auction_strategy.t option) * 'c2) ->
    starting_price:(([< `Read | `Set_and_create ], Submit_order.t,
                     Price.t option)
                    Fieldslib.Field.t_with_perm ->
                    'c2 -> ('-> Price.t option) * 'd2) ->
    stock_reference_price:(([< `Read | `Set_and_create ], Submit_order.t,
                            Price.t option)
                           Fieldslib.Field.t_with_perm ->
                           'd2 -> ('-> Price.t option) * 'e2) ->
    delta:(([< `Read | `Set_and_create ], Submit_order.t, float option)
           Fieldslib.Field.t_with_perm -> 'e2 -> ('-> float option) * 'f2) ->
    lower_stock_price_range:(([< `Read | `Set_and_create ], Submit_order.t,
                              Price.t option)
                             Fieldslib.Field.t_with_perm ->
                             'f2 -> ('-> Price.t option) * 'g2) ->
    upper_stock_price_range:(([< `Read | `Set_and_create ], Submit_order.t,
                              Price.t option)
                             Fieldslib.Field.t_with_perm ->
                             'g2 -> ('-> Price.t option) * 'h2) ->
    override_percentage_constraints:(([< `Read | `Set_and_create ],
                                      Submit_order.t, bool)
                                     Fieldslib.Field.t_with_perm ->
                                     'h2 -> ('-> bool) * 'i2) ->
    volatility:(([< `Read | `Set_and_create ], Submit_order.t, float option)
                Fieldslib.Field.t_with_perm ->
                'i2 -> ('-> float option) * 'j2) ->
    volatility_type:(([< `Read | `Set_and_create ], Submit_order.t,
                      Raw_order.Volatility_type.t option)
                     Fieldslib.Field.t_with_perm ->
                     'j2 -> ('-> Raw_order.Volatility_type.t option) * 'k2) ->
    delta_neutral_order_type:(([< `Read | `Set_and_create ], Submit_order.t,
                               Order_type.t option)
                              Fieldslib.Field.t_with_perm ->
                              'k2 -> ('-> Order_type.t option) * 'l2) ->
    delta_neutral_aux_price:(([< `Read | `Set_and_create ], Submit_order.t,
                              Price.t option)
                             Fieldslib.Field.t_with_perm ->
                             'l2 -> ('-> Price.t option) * 'm2) ->
    continuous_update:(([< `Read | `Set_and_create ], Submit_order.t, bool)
                       Fieldslib.Field.t_with_perm ->
                       'm2 -> ('-> bool) * 'n2) ->
    reference_price_type:(([< `Read | `Set_and_create ], Submit_order.t,
                           Raw_order.Reference_price_type.t option)
                          Fieldslib.Field.t_with_perm ->
                          'n2 ->
                          ('-> Raw_order.Reference_price_type.t option) *
                          'o2) ->
    trailing_stop_price:(([< `Read | `Set_and_create ], Submit_order.t,
                          Price.t option)
                         Fieldslib.Field.t_with_perm ->
                         'o2 -> ('-> Price.t option) * 'p2) ->
    trailing_percent:(([< `Read | `Set_and_create ], Submit_order.t,
                       float option)
                      Fieldslib.Field.t_with_perm ->
                      'p2 -> ('-> float option) * 'q2) ->
    scale_initial_level_size:(([< `Read | `Set_and_create ], Submit_order.t,
                               Volume.t option)
                              Fieldslib.Field.t_with_perm ->
                              'q2 -> ('-> Volume.t option) * 'r2) ->
    scale_subsequent_level_size:(([< `Read | `Set_and_create ],
                                  Submit_order.t, Volume.t option)
                                 Fieldslib.Field.t_with_perm ->
                                 'r2 -> ('-> Volume.t option) * 's2) ->
    scale_price_increment:(([< `Read | `Set_and_create ], Submit_order.t,
                            float option)
                           Fieldslib.Field.t_with_perm ->
                           's2 -> ('-> float option) * 't2) ->
    hedge_type:(([< `Read | `Set_and_create ], Submit_order.t,
                 Raw_order.Hedge_type.t option)
                Fieldslib.Field.t_with_perm ->
                't2 -> ('-> Raw_order.Hedge_type.t option) * 'u2) ->
    opt_out_smart_routing:(([< `Read | `Set_and_create ], Submit_order.t,
                            bool)
                           Fieldslib.Field.t_with_perm ->
                           'u2 -> ('-> bool) * 'v2) ->
    clearing_account:(([< `Read | `Set_and_create ], Submit_order.t,
                       string option)
                      Fieldslib.Field.t_with_perm ->
                      'v2 -> ('-> string option) * 'w2) ->
    clearing_intent:(([< `Read | `Set_and_create ], Submit_order.t,
                      Raw_order.Clearing_intent.t option)
                     Fieldslib.Field.t_with_perm ->
                     'w2 -> ('-> Raw_order.Clearing_intent.t option) * 'x2) ->
    not_held:(([< `Read | `Set_and_create ], Submit_order.t, bool)
              Fieldslib.Field.t_with_perm -> 'x2 -> ('-> bool) * 'y2) ->
    underlying_combo:(([< `Read | `Set_and_create ], Submit_order.t, bool)
                      Fieldslib.Field.t_with_perm ->
                      'y2 -> ('-> bool) * 'z2) ->
    algo_strategy:(([< `Read | `Set_and_create ], Submit_order.t,
                    string option)
                   Fieldslib.Field.t_with_perm ->
                   'z2 -> ('-> string option) * 'a3) ->
    request_pre_trade_information:(([< `Read | `Set_and_create ],
                                    Submit_order.t, bool)
                                   Fieldslib.Field.t_with_perm ->
                                   'a3 -> ('-> bool) * 'b3) ->
    '-> ('-> Submit_order.t) * 'b3
  val create :
    con_id:Contract_id.t option ->
    symbol:Symbol.t ->
    sec_type:string ->
    expiry:Core.Std.Date.t option ->
    strike:Price.t option ->
    option_right:Option_right.t option ->
    multiplier:int option ->
    exchange:Exchange.t ->
    listing_exchange:Exchange.t option ->
    currency:Currency.t ->
    local_symbol:Symbol.t option ->
    sec_id_type:Security_id.Type.t option ->
    sec_id:Security_id.Id.t option ->
    action:string ->
    quantity:Volume.t ->
    order_kind:string ->
    limit_price:Price.t option ->
    stop_price:Price.t option ->
    time_in_force:Raw_order.Time_in_force.t option ->
    oca_group_name:string option ->
    account_code:Account_code.t ->
    open_close:Raw_order.Open_close.t ->
    origin:Raw_order.Origin.t ->
    order_ref:string option ->
    transmit:bool ->
    parent_id:Order_id.t option ->
    block_order:bool ->
    sweep_to_fill:bool ->
    display_size:Volume.t option ->
    stop_trigger_method:Raw_order.Stop_trigger_method.t ->
    outside_regular_trading_hours:bool ->
    hidden:bool ->
    shares_allocation:string ->
    discretionary_amount:float option ->
    good_after_date_time:Core.Std.Time.t option ->
    good_till_date_time:Core.Std.Time.t option ->
    financial_advisor_group:string option ->
    financial_advisor_method:string option ->
    financial_advisor_percentage:string option ->
    financial_advisor_profile:string option ->
    short_sale_slot:int option ->
    designated_location:string option ->
    exemption_code:int ->
    oca_type:Raw_order.Oca_type.t option ->
    rule80A:Raw_order.Rule80A.t option ->
    settling_firm:string option ->
    all_or_none:bool ->
    minimum_quantity:Volume.t option ->
    percent_offset:float option ->
    electronic_trade_only:bool ->
    firm_quote_only:bool ->
    nbbo_price_cap:float option ->
    auction_strategy:Raw_order.Auction_strategy.t option ->
    starting_price:Price.t option ->
    stock_reference_price:Price.t option ->
    delta:float option ->
    lower_stock_price_range:Price.t option ->
    upper_stock_price_range:Price.t option ->
    override_percentage_constraints:bool ->
    volatility:float option ->
    volatility_type:Raw_order.Volatility_type.t option ->
    delta_neutral_order_type:Order_type.t option ->
    delta_neutral_aux_price:Price.t option ->
    continuous_update:bool ->
    reference_price_type:Raw_order.Reference_price_type.t option ->
    trailing_stop_price:Price.t option ->
    trailing_percent:float option ->
    scale_initial_level_size:Volume.t option ->
    scale_subsequent_level_size:Volume.t option ->
    scale_price_increment:float option ->
    hedge_type:Raw_order.Hedge_type.t option ->
    opt_out_smart_routing:bool ->
    clearing_account:string option ->
    clearing_intent:Raw_order.Clearing_intent.t option ->
    not_held:bool ->
    underlying_combo:bool ->
    algo_strategy:string option ->
    request_pre_trade_information:bool -> Submit_order.t
  val map :
    con_id:(([< `Read | `Set_and_create ], Submit_order.t,
             Contract_id.t option)
            Fieldslib.Field.t_with_perm -> Contract_id.t option) ->
    symbol:(([< `Read | `Set_and_create ], Submit_order.t, Symbol.t)
            Fieldslib.Field.t_with_perm -> Symbol.t) ->
    sec_type:(([< `Read | `Set_and_create ], Submit_order.t, string)
              Fieldslib.Field.t_with_perm -> string) ->
    expiry:(([< `Read | `Set_and_create ], Submit_order.t,
             Core.Std.Date.t option)
            Fieldslib.Field.t_with_perm -> Core.Std.Date.t option) ->
    strike:(([< `Read | `Set_and_create ], Submit_order.t, Price.t option)
            Fieldslib.Field.t_with_perm -> Price.t option) ->
    option_right:(([< `Read | `Set_and_create ], Submit_order.t,
                   Option_right.t option)
                  Fieldslib.Field.t_with_perm -> Option_right.t option) ->
    multiplier:(([< `Read | `Set_and_create ], Submit_order.t, int option)
                Fieldslib.Field.t_with_perm -> int option) ->
    exchange:(([< `Read | `Set_and_create ], Submit_order.t, Exchange.t)
              Fieldslib.Field.t_with_perm -> Exchange.t) ->
    listing_exchange:(([< `Read | `Set_and_create ], Submit_order.t,
                       Exchange.t option)
                      Fieldslib.Field.t_with_perm -> Exchange.t option) ->
    currency:(([< `Read | `Set_and_create ], Submit_order.t, Currency.t)
              Fieldslib.Field.t_with_perm -> Currency.t) ->
    local_symbol:(([< `Read | `Set_and_create ], Submit_order.t,
                   Symbol.t option)
                  Fieldslib.Field.t_with_perm -> Symbol.t option) ->
    sec_id_type:(([< `Read | `Set_and_create ], Submit_order.t,
                  Security_id.Type.t option)
                 Fieldslib.Field.t_with_perm -> Security_id.Type.t option) ->
    sec_id:(([< `Read | `Set_and_create ], Submit_order.t,
             Security_id.Id.t option)
            Fieldslib.Field.t_with_perm -> Security_id.Id.t option) ->
    action:(([< `Read | `Set_and_create ], Submit_order.t, string)
            Fieldslib.Field.t_with_perm -> string) ->
    quantity:(([< `Read | `Set_and_create ], Submit_order.t, Volume.t)
              Fieldslib.Field.t_with_perm -> Volume.t) ->
    order_kind:(([< `Read | `Set_and_create ], Submit_order.t, string)
                Fieldslib.Field.t_with_perm -> string) ->
    limit_price:(([< `Read | `Set_and_create ], Submit_order.t,
                  Price.t option)
                 Fieldslib.Field.t_with_perm -> Price.t option) ->
    stop_price:(([< `Read | `Set_and_create ], Submit_order.t,
                 Price.t option)
                Fieldslib.Field.t_with_perm -> Price.t option) ->
    time_in_force:(([< `Read | `Set_and_create ], Submit_order.t,
                    Raw_order.Time_in_force.t option)
                   Fieldslib.Field.t_with_perm ->
                   Raw_order.Time_in_force.t option) ->
    oca_group_name:(([< `Read | `Set_and_create ], Submit_order.t,
                     string option)
                    Fieldslib.Field.t_with_perm -> string option) ->
    account_code:(([< `Read | `Set_and_create ], Submit_order.t,
                   Account_code.t)
                  Fieldslib.Field.t_with_perm -> Account_code.t) ->
    open_close:(([< `Read | `Set_and_create ], Submit_order.t,
                 Raw_order.Open_close.t)
                Fieldslib.Field.t_with_perm -> Raw_order.Open_close.t) ->
    origin:(([< `Read | `Set_and_create ], Submit_order.t,
             Raw_order.Origin.t)
            Fieldslib.Field.t_with_perm -> Raw_order.Origin.t) ->
    order_ref:(([< `Read | `Set_and_create ], Submit_order.t, string option)
               Fieldslib.Field.t_with_perm -> string option) ->
    transmit:(([< `Read | `Set_and_create ], Submit_order.t, bool)
              Fieldslib.Field.t_with_perm -> bool) ->
    parent_id:(([< `Read | `Set_and_create ], Submit_order.t,
                Order_id.t option)
               Fieldslib.Field.t_with_perm -> Order_id.t option) ->
    block_order:(([< `Read | `Set_and_create ], Submit_order.t, bool)
                 Fieldslib.Field.t_with_perm -> bool) ->
    sweep_to_fill:(([< `Read | `Set_and_create ], Submit_order.t, bool)
                   Fieldslib.Field.t_with_perm -> bool) ->
    display_size:(([< `Read | `Set_and_create ], Submit_order.t,
                   Volume.t option)
                  Fieldslib.Field.t_with_perm -> Volume.t option) ->
    stop_trigger_method:(([< `Read | `Set_and_create ], Submit_order.t,
                          Raw_order.Stop_trigger_method.t)
                         Fieldslib.Field.t_with_perm ->
                         Raw_order.Stop_trigger_method.t) ->
    outside_regular_trading_hours:(([< `Read | `Set_and_create ],
                                    Submit_order.t, bool)
                                   Fieldslib.Field.t_with_perm -> bool) ->
    hidden:(([< `Read | `Set_and_create ], Submit_order.t, bool)
            Fieldslib.Field.t_with_perm -> bool) ->
    shares_allocation:(([< `Read | `Set_and_create ], Submit_order.t, string)
                       Fieldslib.Field.t_with_perm -> string) ->
    discretionary_amount:(([< `Read | `Set_and_create ], Submit_order.t,
                           float option)
                          Fieldslib.Field.t_with_perm -> float option) ->
    good_after_date_time:(([< `Read | `Set_and_create ], Submit_order.t,
                           Core.Std.Time.t option)
                          Fieldslib.Field.t_with_perm ->
                          Core.Std.Time.t option) ->
    good_till_date_time:(([< `Read | `Set_and_create ], Submit_order.t,
                          Core.Std.Time.t option)
                         Fieldslib.Field.t_with_perm ->
                         Core.Std.Time.t option) ->
    financial_advisor_group:(([< `Read | `Set_and_create ], Submit_order.t,
                              string option)
                             Fieldslib.Field.t_with_perm -> string option) ->
    financial_advisor_method:(([< `Read | `Set_and_create ], Submit_order.t,
                               string option)
                              Fieldslib.Field.t_with_perm -> string option) ->
    financial_advisor_percentage:(([< `Read | `Set_and_create ],
                                   Submit_order.t, string option)
                                  Fieldslib.Field.t_with_perm ->
                                  string option) ->
    financial_advisor_profile:(([< `Read | `Set_and_create ], Submit_order.t,
                                string option)
                               Fieldslib.Field.t_with_perm -> string option) ->
    short_sale_slot:(([< `Read | `Set_and_create ], Submit_order.t,
                      int option)
                     Fieldslib.Field.t_with_perm -> int option) ->
    designated_location:(([< `Read | `Set_and_create ], Submit_order.t,
                          string option)
                         Fieldslib.Field.t_with_perm -> string option) ->
    exemption_code:(([< `Read | `Set_and_create ], Submit_order.t, int)
                    Fieldslib.Field.t_with_perm -> int) ->
    oca_type:(([< `Read | `Set_and_create ], Submit_order.t,
               Raw_order.Oca_type.t option)
              Fieldslib.Field.t_with_perm -> Raw_order.Oca_type.t option) ->
    rule80A:(([< `Read | `Set_and_create ], Submit_order.t,
              Raw_order.Rule80A.t option)
             Fieldslib.Field.t_with_perm -> Raw_order.Rule80A.t option) ->
    settling_firm:(([< `Read | `Set_and_create ], Submit_order.t,
                    string option)
                   Fieldslib.Field.t_with_perm -> string option) ->
    all_or_none:(([< `Read | `Set_and_create ], Submit_order.t, bool)
                 Fieldslib.Field.t_with_perm -> bool) ->
    minimum_quantity:(([< `Read | `Set_and_create ], Submit_order.t,
                       Volume.t option)
                      Fieldslib.Field.t_with_perm -> Volume.t option) ->
    percent_offset:(([< `Read | `Set_and_create ], Submit_order.t,
                     float option)
                    Fieldslib.Field.t_with_perm -> float option) ->
    electronic_trade_only:(([< `Read | `Set_and_create ], Submit_order.t,
                            bool)
                           Fieldslib.Field.t_with_perm -> bool) ->
    firm_quote_only:(([< `Read | `Set_and_create ], Submit_order.t, bool)
                     Fieldslib.Field.t_with_perm -> bool) ->
    nbbo_price_cap:(([< `Read | `Set_and_create ], Submit_order.t,
                     float option)
                    Fieldslib.Field.t_with_perm -> float option) ->
    auction_strategy:(([< `Read | `Set_and_create ], Submit_order.t,
                       Raw_order.Auction_strategy.t option)
                      Fieldslib.Field.t_with_perm ->
                      Raw_order.Auction_strategy.t option) ->
    starting_price:(([< `Read | `Set_and_create ], Submit_order.t,
                     Price.t option)
                    Fieldslib.Field.t_with_perm -> Price.t option) ->
    stock_reference_price:(([< `Read | `Set_and_create ], Submit_order.t,
                            Price.t option)
                           Fieldslib.Field.t_with_perm -> Price.t option) ->
    delta:(([< `Read | `Set_and_create ], Submit_order.t, float option)
           Fieldslib.Field.t_with_perm -> float option) ->
    lower_stock_price_range:(([< `Read | `Set_and_create ], Submit_order.t,
                              Price.t option)
                             Fieldslib.Field.t_with_perm -> Price.t option) ->
    upper_stock_price_range:(([< `Read | `Set_and_create ], Submit_order.t,
                              Price.t option)
                             Fieldslib.Field.t_with_perm -> Price.t option) ->
    override_percentage_constraints:(([< `Read | `Set_and_create ],
                                      Submit_order.t, bool)
                                     Fieldslib.Field.t_with_perm -> bool) ->
    volatility:(([< `Read | `Set_and_create ], Submit_order.t, float option)
                Fieldslib.Field.t_with_perm -> float option) ->
    volatility_type:(([< `Read | `Set_and_create ], Submit_order.t,
                      Raw_order.Volatility_type.t option)
                     Fieldslib.Field.t_with_perm ->
                     Raw_order.Volatility_type.t option) ->
    delta_neutral_order_type:(([< `Read | `Set_and_create ], Submit_order.t,
                               Order_type.t option)
                              Fieldslib.Field.t_with_perm ->
                              Order_type.t option) ->
    delta_neutral_aux_price:(([< `Read | `Set_and_create ], Submit_order.t,
                              Price.t option)
                             Fieldslib.Field.t_with_perm -> Price.t option) ->
    continuous_update:(([< `Read | `Set_and_create ], Submit_order.t, bool)
                       Fieldslib.Field.t_with_perm -> bool) ->
    reference_price_type:(([< `Read | `Set_and_create ], Submit_order.t,
                           Raw_order.Reference_price_type.t option)
                          Fieldslib.Field.t_with_perm ->
                          Raw_order.Reference_price_type.t option) ->
    trailing_stop_price:(([< `Read | `Set_and_create ], Submit_order.t,
                          Price.t option)
                         Fieldslib.Field.t_with_perm -> Price.t option) ->
    trailing_percent:(([< `Read | `Set_and_create ], Submit_order.t,
                       float option)
                      Fieldslib.Field.t_with_perm -> float option) ->
    scale_initial_level_size:(([< `Read | `Set_and_create ], Submit_order.t,
                               Volume.t option)
                              Fieldslib.Field.t_with_perm -> Volume.t option) ->
    scale_subsequent_level_size:(([< `Read | `Set_and_create ],
                                  Submit_order.t, Volume.t option)
                                 Fieldslib.Field.t_with_perm ->
                                 Volume.t option) ->
    scale_price_increment:(([< `Read | `Set_and_create ], Submit_order.t,
                            float option)
                           Fieldslib.Field.t_with_perm -> float option) ->
    hedge_type:(([< `Read | `Set_and_create ], Submit_order.t,
                 Raw_order.Hedge_type.t option)
                Fieldslib.Field.t_with_perm -> Raw_order.Hedge_type.t option) ->
    opt_out_smart_routing:(([< `Read | `Set_and_create ], Submit_order.t,
                            bool)
                           Fieldslib.Field.t_with_perm -> bool) ->
    clearing_account:(([< `Read | `Set_and_create ], Submit_order.t,
                       string option)
                      Fieldslib.Field.t_with_perm -> string option) ->
    clearing_intent:(([< `Read | `Set_and_create ], Submit_order.t,
                      Raw_order.Clearing_intent.t option)
                     Fieldslib.Field.t_with_perm ->
                     Raw_order.Clearing_intent.t option) ->
    not_held:(([< `Read | `Set_and_create ], Submit_order.t, bool)
              Fieldslib.Field.t_with_perm -> bool) ->
    underlying_combo:(([< `Read | `Set_and_create ], Submit_order.t, bool)
                      Fieldslib.Field.t_with_perm -> bool) ->
    algo_strategy:(([< `Read | `Set_and_create ], Submit_order.t,
                    string option)
                   Fieldslib.Field.t_with_perm -> string option) ->
    request_pre_trade_information:(([< `Read | `Set_and_create ],
                                    Submit_order.t, bool)
                                   Fieldslib.Field.t_with_perm -> bool) ->
    Submit_order.t
  val iter :
    con_id:(([< `Read | `Set_and_create ], Submit_order.t,
             Contract_id.t option)
            Fieldslib.Field.t_with_perm -> 'a) ->
    symbol:(([< `Read | `Set_and_create ], Submit_order.t, Symbol.t)
            Fieldslib.Field.t_with_perm -> 'b) ->
    sec_type:(([< `Read | `Set_and_create ], Submit_order.t, string)
              Fieldslib.Field.t_with_perm -> 'c) ->
    expiry:(([< `Read | `Set_and_create ], Submit_order.t,
             Core.Std.Date.t option)
            Fieldslib.Field.t_with_perm -> 'd) ->
    strike:(([< `Read | `Set_and_create ], Submit_order.t, Price.t option)
            Fieldslib.Field.t_with_perm -> 'e) ->
    option_right:(([< `Read | `Set_and_create ], Submit_order.t,
                   Option_right.t option)
                  Fieldslib.Field.t_with_perm -> 'f) ->
    multiplier:(([< `Read | `Set_and_create ], Submit_order.t, int option)
                Fieldslib.Field.t_with_perm -> 'g) ->
    exchange:(([< `Read | `Set_and_create ], Submit_order.t, Exchange.t)
              Fieldslib.Field.t_with_perm -> 'h) ->
    listing_exchange:(([< `Read | `Set_and_create ], Submit_order.t,
                       Exchange.t option)
                      Fieldslib.Field.t_with_perm -> 'i) ->
    currency:(([< `Read | `Set_and_create ], Submit_order.t, Currency.t)
              Fieldslib.Field.t_with_perm -> 'j) ->
    local_symbol:(([< `Read | `Set_and_create ], Submit_order.t,
                   Symbol.t option)
                  Fieldslib.Field.t_with_perm -> 'k) ->
    sec_id_type:(([< `Read | `Set_and_create ], Submit_order.t,
                  Security_id.Type.t option)
                 Fieldslib.Field.t_with_perm -> 'l) ->
    sec_id:(([< `Read | `Set_and_create ], Submit_order.t,
             Security_id.Id.t option)
            Fieldslib.Field.t_with_perm -> 'm) ->
    action:(([< `Read | `Set_and_create ], Submit_order.t, string)
            Fieldslib.Field.t_with_perm -> 'n) ->
    quantity:(([< `Read | `Set_and_create ], Submit_order.t, Volume.t)
              Fieldslib.Field.t_with_perm -> 'o) ->
    order_kind:(([< `Read | `Set_and_create ], Submit_order.t, string)
                Fieldslib.Field.t_with_perm -> 'p) ->
    limit_price:(([< `Read | `Set_and_create ], Submit_order.t,
                  Price.t option)
                 Fieldslib.Field.t_with_perm -> 'q) ->
    stop_price:(([< `Read | `Set_and_create ], Submit_order.t,
                 Price.t option)
                Fieldslib.Field.t_with_perm -> 'r) ->
    time_in_force:(([< `Read | `Set_and_create ], Submit_order.t,
                    Raw_order.Time_in_force.t option)
                   Fieldslib.Field.t_with_perm -> 's) ->
    oca_group_name:(([< `Read | `Set_and_create ], Submit_order.t,
                     string option)
                    Fieldslib.Field.t_with_perm -> 't) ->
    account_code:(([< `Read | `Set_and_create ], Submit_order.t,
                   Account_code.t)
                  Fieldslib.Field.t_with_perm -> 'u) ->
    open_close:(([< `Read | `Set_and_create ], Submit_order.t,
                 Raw_order.Open_close.t)
                Fieldslib.Field.t_with_perm -> 'v) ->
    origin:(([< `Read | `Set_and_create ], Submit_order.t,
             Raw_order.Origin.t)
            Fieldslib.Field.t_with_perm -> 'w) ->
    order_ref:(([< `Read | `Set_and_create ], Submit_order.t, string option)
               Fieldslib.Field.t_with_perm -> 'x) ->
    transmit:(([< `Read | `Set_and_create ], Submit_order.t, bool)
              Fieldslib.Field.t_with_perm -> 'y) ->
    parent_id:(([< `Read | `Set_and_create ], Submit_order.t,
                Order_id.t option)
               Fieldslib.Field.t_with_perm -> 'z) ->
    block_order:(([< `Read | `Set_and_create ], Submit_order.t, bool)
                 Fieldslib.Field.t_with_perm -> 'a1) ->
    sweep_to_fill:(([< `Read | `Set_and_create ], Submit_order.t, bool)
                   Fieldslib.Field.t_with_perm -> 'b1) ->
    display_size:(([< `Read | `Set_and_create ], Submit_order.t,
                   Volume.t option)
                  Fieldslib.Field.t_with_perm -> 'c1) ->
    stop_trigger_method:(([< `Read | `Set_and_create ], Submit_order.t,
                          Raw_order.Stop_trigger_method.t)
                         Fieldslib.Field.t_with_perm -> 'd1) ->
    outside_regular_trading_hours:(([< `Read | `Set_and_create ],
                                    Submit_order.t, bool)
                                   Fieldslib.Field.t_with_perm -> 'e1) ->
    hidden:(([< `Read | `Set_and_create ], Submit_order.t, bool)
            Fieldslib.Field.t_with_perm -> 'f1) ->
    shares_allocation:(([< `Read | `Set_and_create ], Submit_order.t, string)
                       Fieldslib.Field.t_with_perm -> 'g1) ->
    discretionary_amount:(([< `Read | `Set_and_create ], Submit_order.t,
                           float option)
                          Fieldslib.Field.t_with_perm -> 'h1) ->
    good_after_date_time:(([< `Read | `Set_and_create ], Submit_order.t,
                           Core.Std.Time.t option)
                          Fieldslib.Field.t_with_perm -> 'i1) ->
    good_till_date_time:(([< `Read | `Set_and_create ], Submit_order.t,
                          Core.Std.Time.t option)
                         Fieldslib.Field.t_with_perm -> 'j1) ->
    financial_advisor_group:(([< `Read | `Set_and_create ], Submit_order.t,
                              string option)
                             Fieldslib.Field.t_with_perm -> 'k1) ->
    financial_advisor_method:(([< `Read | `Set_and_create ], Submit_order.t,
                               string option)
                              Fieldslib.Field.t_with_perm -> 'l1) ->
    financial_advisor_percentage:(([< `Read | `Set_and_create ],
                                   Submit_order.t, string option)
                                  Fieldslib.Field.t_with_perm -> 'm1) ->
    financial_advisor_profile:(([< `Read | `Set_and_create ], Submit_order.t,
                                string option)
                               Fieldslib.Field.t_with_perm -> 'n1) ->
    short_sale_slot:(([< `Read | `Set_and_create ], Submit_order.t,
                      int option)
                     Fieldslib.Field.t_with_perm -> 'o1) ->
    designated_location:(([< `Read | `Set_and_create ], Submit_order.t,
                          string option)
                         Fieldslib.Field.t_with_perm -> 'p1) ->
    exemption_code:(([< `Read | `Set_and_create ], Submit_order.t, int)
                    Fieldslib.Field.t_with_perm -> 'q1) ->
    oca_type:(([< `Read | `Set_and_create ], Submit_order.t,
               Raw_order.Oca_type.t option)
              Fieldslib.Field.t_with_perm -> 'r1) ->
    rule80A:(([< `Read | `Set_and_create ], Submit_order.t,
              Raw_order.Rule80A.t option)
             Fieldslib.Field.t_with_perm -> 's1) ->
    settling_firm:(([< `Read | `Set_and_create ], Submit_order.t,
                    string option)
                   Fieldslib.Field.t_with_perm -> 't1) ->
    all_or_none:(([< `Read | `Set_and_create ], Submit_order.t, bool)
                 Fieldslib.Field.t_with_perm -> 'u1) ->
    minimum_quantity:(([< `Read | `Set_and_create ], Submit_order.t,
                       Volume.t option)
                      Fieldslib.Field.t_with_perm -> 'v1) ->
    percent_offset:(([< `Read | `Set_and_create ], Submit_order.t,
                     float option)
                    Fieldslib.Field.t_with_perm -> 'w1) ->
    electronic_trade_only:(([< `Read | `Set_and_create ], Submit_order.t,
                            bool)
                           Fieldslib.Field.t_with_perm -> 'x1) ->
    firm_quote_only:(([< `Read | `Set_and_create ], Submit_order.t, bool)
                     Fieldslib.Field.t_with_perm -> 'y1) ->
    nbbo_price_cap:(([< `Read | `Set_and_create ], Submit_order.t,
                     float option)
                    Fieldslib.Field.t_with_perm -> 'z1) ->
    auction_strategy:(([< `Read | `Set_and_create ], Submit_order.t,
                       Raw_order.Auction_strategy.t option)
                      Fieldslib.Field.t_with_perm -> 'a2) ->
    starting_price:(([< `Read | `Set_and_create ], Submit_order.t,
                     Price.t option)
                    Fieldslib.Field.t_with_perm -> 'b2) ->
    stock_reference_price:(([< `Read | `Set_and_create ], Submit_order.t,
                            Price.t option)
                           Fieldslib.Field.t_with_perm -> 'c2) ->
    delta:(([< `Read | `Set_and_create ], Submit_order.t, float option)
           Fieldslib.Field.t_with_perm -> 'd2) ->
    lower_stock_price_range:(([< `Read | `Set_and_create ], Submit_order.t,
                              Price.t option)
                             Fieldslib.Field.t_with_perm -> 'e2) ->
    upper_stock_price_range:(([< `Read | `Set_and_create ], Submit_order.t,
                              Price.t option)
                             Fieldslib.Field.t_with_perm -> 'f2) ->
    override_percentage_constraints:(([< `Read | `Set_and_create ],
                                      Submit_order.t, bool)
                                     Fieldslib.Field.t_with_perm -> 'g2) ->
    volatility:(([< `Read | `Set_and_create ], Submit_order.t, float option)
                Fieldslib.Field.t_with_perm -> 'h2) ->
    volatility_type:(([< `Read | `Set_and_create ], Submit_order.t,
                      Raw_order.Volatility_type.t option)
                     Fieldslib.Field.t_with_perm -> 'i2) ->
    delta_neutral_order_type:(([< `Read | `Set_and_create ], Submit_order.t,
                               Order_type.t option)
                              Fieldslib.Field.t_with_perm -> 'j2) ->
    delta_neutral_aux_price:(([< `Read | `Set_and_create ], Submit_order.t,
                              Price.t option)
                             Fieldslib.Field.t_with_perm -> 'k2) ->
    continuous_update:(([< `Read | `Set_and_create ], Submit_order.t, bool)
                       Fieldslib.Field.t_with_perm -> 'l2) ->
    reference_price_type:(([< `Read | `Set_and_create ], Submit_order.t,
                           Raw_order.Reference_price_type.t option)
                          Fieldslib.Field.t_with_perm -> 'm2) ->
    trailing_stop_price:(([< `Read | `Set_and_create ], Submit_order.t,
                          Price.t option)
                         Fieldslib.Field.t_with_perm -> 'n2) ->
    trailing_percent:(([< `Read | `Set_and_create ], Submit_order.t,
                       float option)
                      Fieldslib.Field.t_with_perm -> 'o2) ->
    scale_initial_level_size:(([< `Read | `Set_and_create ], Submit_order.t,
                               Volume.t option)
                              Fieldslib.Field.t_with_perm -> 'p2) ->
    scale_subsequent_level_size:(([< `Read | `Set_and_create ],
                                  Submit_order.t, Volume.t option)
                                 Fieldslib.Field.t_with_perm -> 'q2) ->
    scale_price_increment:(([< `Read | `Set_and_create ], Submit_order.t,
                            float option)
                           Fieldslib.Field.t_with_perm -> 'r2) ->
    hedge_type:(([< `Read | `Set_and_create ], Submit_order.t,
                 Raw_order.Hedge_type.t option)
                Fieldslib.Field.t_with_perm -> 's2) ->
    opt_out_smart_routing:(([< `Read | `Set_and_create ], Submit_order.t,
                            bool)
                           Fieldslib.Field.t_with_perm -> 't2) ->
    clearing_account:(([< `Read | `Set_and_create ], Submit_order.t,
                       string option)
                      Fieldslib.Field.t_with_perm -> 'u2) ->
    clearing_intent:(([< `Read | `Set_and_create ], Submit_order.t,
                      Raw_order.Clearing_intent.t option)
                     Fieldslib.Field.t_with_perm -> 'v2) ->
    not_held:(([< `Read | `Set_and_create ], Submit_order.t, bool)
              Fieldslib.Field.t_with_perm -> 'w2) ->
    underlying_combo:(([< `Read | `Set_and_create ], Submit_order.t, bool)
                      Fieldslib.Field.t_with_perm -> 'x2) ->
    algo_strategy:(([< `Read | `Set_and_create ], Submit_order.t,
                    string option)
                   Fieldslib.Field.t_with_perm -> 'y2) ->
    request_pre_trade_information:(([< `Read | `Set_and_create ],
                                    Submit_order.t, bool)
                                   Fieldslib.Field.t_with_perm -> 'z2) ->
    'z2
  val fold :
    init:'->
    con_id:('->
            ([< `Read | `Set_and_create ], Submit_order.t,
             Contract_id.t option)
            Fieldslib.Field.t_with_perm -> 'b) ->
    symbol:('->
            ([< `Read | `Set_and_create ], Submit_order.t, Symbol.t)
            Fieldslib.Field.t_with_perm -> 'c) ->
    sec_type:('->
              ([< `Read | `Set_and_create ], Submit_order.t, string)
              Fieldslib.Field.t_with_perm -> 'd) ->
    expiry:('->
            ([< `Read | `Set_and_create ], Submit_order.t,
             Core.Std.Date.t option)
            Fieldslib.Field.t_with_perm -> 'e) ->
    strike:('->
            ([< `Read | `Set_and_create ], Submit_order.t, Price.t option)
            Fieldslib.Field.t_with_perm -> 'f) ->
    option_right:('->
                  ([< `Read | `Set_and_create ], Submit_order.t,
                   Option_right.t option)
                  Fieldslib.Field.t_with_perm -> 'g) ->
    multiplier:('->
                ([< `Read | `Set_and_create ], Submit_order.t, int option)
                Fieldslib.Field.t_with_perm -> 'h) ->
    exchange:('->
              ([< `Read | `Set_and_create ], Submit_order.t, Exchange.t)
              Fieldslib.Field.t_with_perm -> 'i) ->
    listing_exchange:('->
                      ([< `Read | `Set_and_create ], Submit_order.t,
                       Exchange.t option)
                      Fieldslib.Field.t_with_perm -> 'j) ->
    currency:('->
              ([< `Read | `Set_and_create ], Submit_order.t, Currency.t)
              Fieldslib.Field.t_with_perm -> 'k) ->
    local_symbol:('->
                  ([< `Read | `Set_and_create ], Submit_order.t,
                   Symbol.t option)
                  Fieldslib.Field.t_with_perm -> 'l) ->
    sec_id_type:('->
                 ([< `Read | `Set_and_create ], Submit_order.t,
                  Security_id.Type.t option)
                 Fieldslib.Field.t_with_perm -> 'm) ->
    sec_id:('->
            ([< `Read | `Set_and_create ], Submit_order.t,
             Security_id.Id.t option)
            Fieldslib.Field.t_with_perm -> 'n) ->
    action:('->
            ([< `Read | `Set_and_create ], Submit_order.t, string)
            Fieldslib.Field.t_with_perm -> 'o) ->
    quantity:('->
              ([< `Read | `Set_and_create ], Submit_order.t, Volume.t)
              Fieldslib.Field.t_with_perm -> 'p) ->
    order_kind:('->
                ([< `Read | `Set_and_create ], Submit_order.t, string)
                Fieldslib.Field.t_with_perm -> 'q) ->
    limit_price:('->
                 ([< `Read | `Set_and_create ], Submit_order.t,
                  Price.t option)
                 Fieldslib.Field.t_with_perm -> 'r) ->
    stop_price:('->
                ([< `Read | `Set_and_create ], Submit_order.t,
                 Price.t option)
                Fieldslib.Field.t_with_perm -> 's) ->
    time_in_force:('->
                   ([< `Read | `Set_and_create ], Submit_order.t,
                    Raw_order.Time_in_force.t option)
                   Fieldslib.Field.t_with_perm -> 't) ->
    oca_group_name:('->
                    ([< `Read | `Set_and_create ], Submit_order.t,
                     string option)
                    Fieldslib.Field.t_with_perm -> 'u) ->
    account_code:('->
                  ([< `Read | `Set_and_create ], Submit_order.t,
                   Account_code.t)
                  Fieldslib.Field.t_with_perm -> 'v) ->
    open_close:('->
                ([< `Read | `Set_and_create ], Submit_order.t,
                 Raw_order.Open_close.t)
                Fieldslib.Field.t_with_perm -> 'w) ->
    origin:('->
            ([< `Read | `Set_and_create ], Submit_order.t,
             Raw_order.Origin.t)
            Fieldslib.Field.t_with_perm -> 'x) ->
    order_ref:('->
               ([< `Read | `Set_and_create ], Submit_order.t, string option)
               Fieldslib.Field.t_with_perm -> 'y) ->
    transmit:('->
              ([< `Read | `Set_and_create ], Submit_order.t, bool)
              Fieldslib.Field.t_with_perm -> 'z) ->
    parent_id:('->
               ([< `Read | `Set_and_create ], Submit_order.t,
                Order_id.t option)
               Fieldslib.Field.t_with_perm -> 'a1) ->
    block_order:('a1 ->
                 ([< `Read | `Set_and_create ], Submit_order.t, bool)
                 Fieldslib.Field.t_with_perm -> 'b1) ->
    sweep_to_fill:('b1 ->
                   ([< `Read | `Set_and_create ], Submit_order.t, bool)
                   Fieldslib.Field.t_with_perm -> 'c1) ->
    display_size:('c1 ->
                  ([< `Read | `Set_and_create ], Submit_order.t,
                   Volume.t option)
                  Fieldslib.Field.t_with_perm -> 'd1) ->
    stop_trigger_method:('d1 ->
                         ([< `Read | `Set_and_create ], Submit_order.t,
                          Raw_order.Stop_trigger_method.t)
                         Fieldslib.Field.t_with_perm -> 'e1) ->
    outside_regular_trading_hours:('e1 ->
                                   ([< `Read | `Set_and_create ],
                                    Submit_order.t, bool)
                                   Fieldslib.Field.t_with_perm -> 'f1) ->
    hidden:('f1 ->
            ([< `Read | `Set_and_create ], Submit_order.t, bool)
            Fieldslib.Field.t_with_perm -> 'g1) ->
    shares_allocation:('g1 ->
                       ([< `Read | `Set_and_create ], Submit_order.t, string)
                       Fieldslib.Field.t_with_perm -> 'h1) ->
    discretionary_amount:('h1 ->
                          ([< `Read | `Set_and_create ], Submit_order.t,
                           float option)
                          Fieldslib.Field.t_with_perm -> 'i1) ->
    good_after_date_time:('i1 ->
                          ([< `Read | `Set_and_create ], Submit_order.t,
                           Core.Std.Time.t option)
                          Fieldslib.Field.t_with_perm -> 'j1) ->
    good_till_date_time:('j1 ->
                         ([< `Read | `Set_and_create ], Submit_order.t,
                          Core.Std.Time.t option)
                         Fieldslib.Field.t_with_perm -> 'k1) ->
    financial_advisor_group:('k1 ->
                             ([< `Read | `Set_and_create ], Submit_order.t,
                              string option)
                             Fieldslib.Field.t_with_perm -> 'l1) ->
    financial_advisor_method:('l1 ->
                              ([< `Read | `Set_and_create ], Submit_order.t,
                               string option)
                              Fieldslib.Field.t_with_perm -> 'm1) ->
    financial_advisor_percentage:('m1 ->
                                  ([< `Read | `Set_and_create ],
                                   Submit_order.t, string option)
                                  Fieldslib.Field.t_with_perm -> 'n1) ->
    financial_advisor_profile:('n1 ->
                               ([< `Read | `Set_and_create ], Submit_order.t,
                                string option)
                               Fieldslib.Field.t_with_perm -> 'o1) ->
    short_sale_slot:('o1 ->
                     ([< `Read | `Set_and_create ], Submit_order.t,
                      int option)
                     Fieldslib.Field.t_with_perm -> 'p1) ->
    designated_location:('p1 ->
                         ([< `Read | `Set_and_create ], Submit_order.t,
                          string option)
                         Fieldslib.Field.t_with_perm -> 'q1) ->
    exemption_code:('q1 ->
                    ([< `Read | `Set_and_create ], Submit_order.t, int)
                    Fieldslib.Field.t_with_perm -> 'r1) ->
    oca_type:('r1 ->
              ([< `Read | `Set_and_create ], Submit_order.t,
               Raw_order.Oca_type.t option)
              Fieldslib.Field.t_with_perm -> 's1) ->
    rule80A:('s1 ->
             ([< `Read | `Set_and_create ], Submit_order.t,
              Raw_order.Rule80A.t option)
             Fieldslib.Field.t_with_perm -> 't1) ->
    settling_firm:('t1 ->
                   ([< `Read | `Set_and_create ], Submit_order.t,
                    string option)
                   Fieldslib.Field.t_with_perm -> 'u1) ->
    all_or_none:('u1 ->
                 ([< `Read | `Set_and_create ], Submit_order.t, bool)
                 Fieldslib.Field.t_with_perm -> 'v1) ->
    minimum_quantity:('v1 ->
                      ([< `Read | `Set_and_create ], Submit_order.t,
                       Volume.t option)
                      Fieldslib.Field.t_with_perm -> 'w1) ->
    percent_offset:('w1 ->
                    ([< `Read | `Set_and_create ], Submit_order.t,
                     float option)
                    Fieldslib.Field.t_with_perm -> 'x1) ->
    electronic_trade_only:('x1 ->
                           ([< `Read | `Set_and_create ], Submit_order.t,
                            bool)
                           Fieldslib.Field.t_with_perm -> 'y1) ->
    firm_quote_only:('y1 ->
                     ([< `Read | `Set_and_create ], Submit_order.t, bool)
                     Fieldslib.Field.t_with_perm -> 'z1) ->
    nbbo_price_cap:('z1 ->
                    ([< `Read | `Set_and_create ], Submit_order.t,
                     float option)
                    Fieldslib.Field.t_with_perm -> 'a2) ->
    auction_strategy:('a2 ->
                      ([< `Read | `Set_and_create ], Submit_order.t,
                       Raw_order.Auction_strategy.t option)
                      Fieldslib.Field.t_with_perm -> 'b2) ->
    starting_price:('b2 ->
                    ([< `Read | `Set_and_create ], Submit_order.t,
                     Price.t option)
                    Fieldslib.Field.t_with_perm -> 'c2) ->
    stock_reference_price:('c2 ->
                           ([< `Read | `Set_and_create ], Submit_order.t,
                            Price.t option)
                           Fieldslib.Field.t_with_perm -> 'd2) ->
    delta:('d2 ->
           ([< `Read | `Set_and_create ], Submit_order.t, float option)
           Fieldslib.Field.t_with_perm -> 'e2) ->
    lower_stock_price_range:('e2 ->
                             ([< `Read | `Set_and_create ], Submit_order.t,
                              Price.t option)
                             Fieldslib.Field.t_with_perm -> 'f2) ->
    upper_stock_price_range:('f2 ->
                             ([< `Read | `Set_and_create ], Submit_order.t,
                              Price.t option)
                             Fieldslib.Field.t_with_perm -> 'g2) ->
    override_percentage_constraints:('g2 ->
                                     ([< `Read | `Set_and_create ],
                                      Submit_order.t, bool)
                                     Fieldslib.Field.t_with_perm -> 'h2) ->
    volatility:('h2 ->
                ([< `Read | `Set_and_create ], Submit_order.t, float option)
                Fieldslib.Field.t_with_perm -> 'i2) ->
    volatility_type:('i2 ->
                     ([< `Read | `Set_and_create ], Submit_order.t,
                      Raw_order.Volatility_type.t option)
                     Fieldslib.Field.t_with_perm -> 'j2) ->
    delta_neutral_order_type:('j2 ->
                              ([< `Read | `Set_and_create ], Submit_order.t,
                               Order_type.t option)
                              Fieldslib.Field.t_with_perm -> 'k2) ->
    delta_neutral_aux_price:('k2 ->
                             ([< `Read | `Set_and_create ], Submit_order.t,
                              Price.t option)
                             Fieldslib.Field.t_with_perm -> 'l2) ->
    continuous_update:('l2 ->
                       ([< `Read | `Set_and_create ], Submit_order.t, bool)
                       Fieldslib.Field.t_with_perm -> 'm2) ->
    reference_price_type:('m2 ->
                          ([< `Read | `Set_and_create ], Submit_order.t,
                           Raw_order.Reference_price_type.t option)
                          Fieldslib.Field.t_with_perm -> 'n2) ->
    trailing_stop_price:('n2 ->
                         ([< `Read | `Set_and_create ], Submit_order.t,
                          Price.t option)
                         Fieldslib.Field.t_with_perm -> 'o2) ->
    trailing_percent:('o2 ->
                      ([< `Read | `Set_and_create ], Submit_order.t,
                       float option)
                      Fieldslib.Field.t_with_perm -> 'p2) ->
    scale_initial_level_size:('p2 ->
                              ([< `Read | `Set_and_create ], Submit_order.t,
                               Volume.t option)
                              Fieldslib.Field.t_with_perm -> 'q2) ->
    scale_subsequent_level_size:('q2 ->
                                 ([< `Read | `Set_and_create ],
                                  Submit_order.t, Volume.t option)
                                 Fieldslib.Field.t_with_perm -> 'r2) ->
    scale_price_increment:('r2 ->
                           ([< `Read | `Set_and_create ], Submit_order.t,
                            float option)
                           Fieldslib.Field.t_with_perm -> 's2) ->
    hedge_type:('s2 ->
                ([< `Read | `Set_and_create ], Submit_order.t,
                 Raw_order.Hedge_type.t option)
                Fieldslib.Field.t_with_perm -> 't2) ->
    opt_out_smart_routing:('t2 ->
                           ([< `Read | `Set_and_create ], Submit_order.t,
                            bool)
                           Fieldslib.Field.t_with_perm -> 'u2) ->
    clearing_account:('u2 ->
                      ([< `Read | `Set_and_create ], Submit_order.t,
                       string option)
                      Fieldslib.Field.t_with_perm -> 'v2) ->
    clearing_intent:('v2 ->
                     ([< `Read | `Set_and_create ], Submit_order.t,
                      Raw_order.Clearing_intent.t option)
                     Fieldslib.Field.t_with_perm -> 'w2) ->
    not_held:('w2 ->
              ([< `Read | `Set_and_create ], Submit_order.t, bool)
              Fieldslib.Field.t_with_perm -> 'x2) ->
    underlying_combo:('x2 ->
                      ([< `Read | `Set_and_create ], Submit_order.t, bool)
                      Fieldslib.Field.t_with_perm -> 'y2) ->
    algo_strategy:('y2 ->
                   ([< `Read | `Set_and_create ], Submit_order.t,
                    string option)
                   Fieldslib.Field.t_with_perm -> 'z2) ->
    request_pre_trade_information:('z2 ->
                                   ([< `Read | `Set_and_create ],
                                    Submit_order.t, bool)
                                   Fieldslib.Field.t_with_perm -> 'a3) ->
    'a3
  val map_poly :
    ([< `Read | `Set_and_create ], Submit_order.t, 'a) Fieldslib.Field.user ->
    'a list
  val for_all :
    con_id:(([< `Read | `Set_and_create ], Submit_order.t,
             Contract_id.t option)
            Fieldslib.Field.t_with_perm -> bool) ->
    symbol:(([< `Read | `Set_and_create ], Submit_order.t, Symbol.t)
            Fieldslib.Field.t_with_perm -> bool) ->
    sec_type:(([< `Read | `Set_and_create ], Submit_order.t, string)
              Fieldslib.Field.t_with_perm -> bool) ->
    expiry:(([< `Read | `Set_and_create ], Submit_order.t,
             Core.Std.Date.t option)
            Fieldslib.Field.t_with_perm -> bool) ->
    strike:(([< `Read | `Set_and_create ], Submit_order.t, Price.t option)
            Fieldslib.Field.t_with_perm -> bool) ->
    option_right:(([< `Read | `Set_and_create ], Submit_order.t,
                   Option_right.t option)
                  Fieldslib.Field.t_with_perm -> bool) ->
    multiplier:(([< `Read | `Set_and_create ], Submit_order.t, int option)
                Fieldslib.Field.t_with_perm -> bool) ->
    exchange:(([< `Read | `Set_and_create ], Submit_order.t, Exchange.t)
              Fieldslib.Field.t_with_perm -> bool) ->
    listing_exchange:(([< `Read | `Set_and_create ], Submit_order.t,
                       Exchange.t option)
                      Fieldslib.Field.t_with_perm -> bool) ->
    currency:(([< `Read | `Set_and_create ], Submit_order.t, Currency.t)
              Fieldslib.Field.t_with_perm -> bool) ->
    local_symbol:(([< `Read | `Set_and_create ], Submit_order.t,
                   Symbol.t option)
                  Fieldslib.Field.t_with_perm -> bool) ->
    sec_id_type:(([< `Read | `Set_and_create ], Submit_order.t,
                  Security_id.Type.t option)
                 Fieldslib.Field.t_with_perm -> bool) ->
    sec_id:(([< `Read | `Set_and_create ], Submit_order.t,
             Security_id.Id.t option)
            Fieldslib.Field.t_with_perm -> bool) ->
    action:(([< `Read | `Set_and_create ], Submit_order.t, string)
            Fieldslib.Field.t_with_perm -> bool) ->
    quantity:(([< `Read | `Set_and_create ], Submit_order.t, Volume.t)
              Fieldslib.Field.t_with_perm -> bool) ->
    order_kind:(([< `Read | `Set_and_create ], Submit_order.t, string)
                Fieldslib.Field.t_with_perm -> bool) ->
    limit_price:(([< `Read | `Set_and_create ], Submit_order.t,
                  Price.t option)
                 Fieldslib.Field.t_with_perm -> bool) ->
    stop_price:(([< `Read | `Set_and_create ], Submit_order.t,
                 Price.t option)
                Fieldslib.Field.t_with_perm -> bool) ->
    time_in_force:(([< `Read | `Set_and_create ], Submit_order.t,
                    Raw_order.Time_in_force.t option)
                   Fieldslib.Field.t_with_perm -> bool) ->
    oca_group_name:(([< `Read | `Set_and_create ], Submit_order.t,
                     string option)
                    Fieldslib.Field.t_with_perm -> bool) ->
    account_code:(([< `Read | `Set_and_create ], Submit_order.t,
                   Account_code.t)
                  Fieldslib.Field.t_with_perm -> bool) ->
    open_close:(([< `Read | `Set_and_create ], Submit_order.t,
                 Raw_order.Open_close.t)
                Fieldslib.Field.t_with_perm -> bool) ->
    origin:(([< `Read | `Set_and_create ], Submit_order.t,
             Raw_order.Origin.t)
            Fieldslib.Field.t_with_perm -> bool) ->
    order_ref:(([< `Read | `Set_and_create ], Submit_order.t, string option)
               Fieldslib.Field.t_with_perm -> bool) ->
    transmit:(([< `Read | `Set_and_create ], Submit_order.t, bool)
              Fieldslib.Field.t_with_perm -> bool) ->
    parent_id:(([< `Read | `Set_and_create ], Submit_order.t,
                Order_id.t option)
               Fieldslib.Field.t_with_perm -> bool) ->
    block_order:(([< `Read | `Set_and_create ], Submit_order.t, bool)
                 Fieldslib.Field.t_with_perm -> bool) ->
    sweep_to_fill:(([< `Read | `Set_and_create ], Submit_order.t, bool)
                   Fieldslib.Field.t_with_perm -> bool) ->
    display_size:(([< `Read | `Set_and_create ], Submit_order.t,
                   Volume.t option)
                  Fieldslib.Field.t_with_perm -> bool) ->
    stop_trigger_method:(([< `Read | `Set_and_create ], Submit_order.t,
                          Raw_order.Stop_trigger_method.t)
                         Fieldslib.Field.t_with_perm -> bool) ->
    outside_regular_trading_hours:(([< `Read | `Set_and_create ],
                                    Submit_order.t, bool)
                                   Fieldslib.Field.t_with_perm -> bool) ->
    hidden:(([< `Read | `Set_and_create ], Submit_order.t, bool)
            Fieldslib.Field.t_with_perm -> bool) ->
    shares_allocation:(([< `Read | `Set_and_create ], Submit_order.t, string)
                       Fieldslib.Field.t_with_perm -> bool) ->
    discretionary_amount:(([< `Read | `Set_and_create ], Submit_order.t,
                           float option)
                          Fieldslib.Field.t_with_perm -> bool) ->
    good_after_date_time:(([< `Read | `Set_and_create ], Submit_order.t,
                           Core.Std.Time.t option)
                          Fieldslib.Field.t_with_perm -> bool) ->
    good_till_date_time:(([< `Read | `Set_and_create ], Submit_order.t,
                          Core.Std.Time.t option)
                         Fieldslib.Field.t_with_perm -> bool) ->
    financial_advisor_group:(([< `Read | `Set_and_create ], Submit_order.t,
                              string option)
                             Fieldslib.Field.t_with_perm -> bool) ->
    financial_advisor_method:(([< `Read | `Set_and_create ], Submit_order.t,
                               string option)
                              Fieldslib.Field.t_with_perm -> bool) ->
    financial_advisor_percentage:(([< `Read | `Set_and_create ],
                                   Submit_order.t, string option)
                                  Fieldslib.Field.t_with_perm -> bool) ->
    financial_advisor_profile:(([< `Read | `Set_and_create ], Submit_order.t,
                                string option)
                               Fieldslib.Field.t_with_perm -> bool) ->
    short_sale_slot:(([< `Read | `Set_and_create ], Submit_order.t,
                      int option)
                     Fieldslib.Field.t_with_perm -> bool) ->
    designated_location:(([< `Read | `Set_and_create ], Submit_order.t,
                          string option)
                         Fieldslib.Field.t_with_perm -> bool) ->
    exemption_code:(([< `Read | `Set_and_create ], Submit_order.t, int)
                    Fieldslib.Field.t_with_perm -> bool) ->
    oca_type:(([< `Read | `Set_and_create ], Submit_order.t,
               Raw_order.Oca_type.t option)
              Fieldslib.Field.t_with_perm -> bool) ->
    rule80A:(([< `Read | `Set_and_create ], Submit_order.t,
              Raw_order.Rule80A.t option)
             Fieldslib.Field.t_with_perm -> bool) ->
    settling_firm:(([< `Read | `Set_and_create ], Submit_order.t,
                    string option)
                   Fieldslib.Field.t_with_perm -> bool) ->
    all_or_none:(([< `Read | `Set_and_create ], Submit_order.t, bool)
                 Fieldslib.Field.t_with_perm -> bool) ->
    minimum_quantity:(([< `Read | `Set_and_create ], Submit_order.t,
                       Volume.t option)
                      Fieldslib.Field.t_with_perm -> bool) ->
    percent_offset:(([< `Read | `Set_and_create ], Submit_order.t,
                     float option)
                    Fieldslib.Field.t_with_perm -> bool) ->
    electronic_trade_only:(([< `Read | `Set_and_create ], Submit_order.t,
                            bool)
                           Fieldslib.Field.t_with_perm -> bool) ->
    firm_quote_only:(([< `Read | `Set_and_create ], Submit_order.t, bool)
                     Fieldslib.Field.t_with_perm -> bool) ->
    nbbo_price_cap:(([< `Read | `Set_and_create ], Submit_order.t,
                     float option)
                    Fieldslib.Field.t_with_perm -> bool) ->
    auction_strategy:(([< `Read | `Set_and_create ], Submit_order.t,
                       Raw_order.Auction_strategy.t option)
                      Fieldslib.Field.t_with_perm -> bool) ->
    starting_price:(([< `Read | `Set_and_create ], Submit_order.t,
                     Price.t option)
                    Fieldslib.Field.t_with_perm -> bool) ->
    stock_reference_price:(([< `Read | `Set_and_create ], Submit_order.t,
                            Price.t option)
                           Fieldslib.Field.t_with_perm -> bool) ->
    delta:(([< `Read | `Set_and_create ], Submit_order.t, float option)
           Fieldslib.Field.t_with_perm -> bool) ->
    lower_stock_price_range:(([< `Read | `Set_and_create ], Submit_order.t,
                              Price.t option)
                             Fieldslib.Field.t_with_perm -> bool) ->
    upper_stock_price_range:(([< `Read | `Set_and_create ], Submit_order.t,
                              Price.t option)
                             Fieldslib.Field.t_with_perm -> bool) ->
    override_percentage_constraints:(([< `Read | `Set_and_create ],
                                      Submit_order.t, bool)
                                     Fieldslib.Field.t_with_perm -> bool) ->
    volatility:(([< `Read | `Set_and_create ], Submit_order.t, float option)
                Fieldslib.Field.t_with_perm -> bool) ->
    volatility_type:(([< `Read | `Set_and_create ], Submit_order.t,
                      Raw_order.Volatility_type.t option)
                     Fieldslib.Field.t_with_perm -> bool) ->
    delta_neutral_order_type:(([< `Read | `Set_and_create ], Submit_order.t,
                               Order_type.t option)
                              Fieldslib.Field.t_with_perm -> bool) ->
    delta_neutral_aux_price:(([< `Read | `Set_and_create ], Submit_order.t,
                              Price.t option)
                             Fieldslib.Field.t_with_perm -> bool) ->
    continuous_update:(([< `Read | `Set_and_create ], Submit_order.t, bool)
                       Fieldslib.Field.t_with_perm -> bool) ->
    reference_price_type:(([< `Read | `Set_and_create ], Submit_order.t,
                           Raw_order.Reference_price_type.t option)
                          Fieldslib.Field.t_with_perm -> bool) ->
    trailing_stop_price:(([< `Read | `Set_and_create ], Submit_order.t,
                          Price.t option)
                         Fieldslib.Field.t_with_perm -> bool) ->
    trailing_percent:(([< `Read | `Set_and_create ], Submit_order.t,
                       float option)
                      Fieldslib.Field.t_with_perm -> bool) ->
    scale_initial_level_size:(([< `Read | `Set_and_create ], Submit_order.t,
                               Volume.t option)
                              Fieldslib.Field.t_with_perm -> bool) ->
    scale_subsequent_level_size:(([< `Read | `Set_and_create ],
                                  Submit_order.t, Volume.t option)
                                 Fieldslib.Field.t_with_perm -> bool) ->
    scale_price_increment:(([< `Read | `Set_and_create ], Submit_order.t,
                            float option)
                           Fieldslib.Field.t_with_perm -> bool) ->
    hedge_type:(([< `Read | `Set_and_create ], Submit_order.t,
                 Raw_order.Hedge_type.t option)
                Fieldslib.Field.t_with_perm -> bool) ->
    opt_out_smart_routing:(([< `Read | `Set_and_create ], Submit_order.t,
                            bool)
                           Fieldslib.Field.t_with_perm -> bool) ->
    clearing_account:(([< `Read | `Set_and_create ], Submit_order.t,
                       string option)
                      Fieldslib.Field.t_with_perm -> bool) ->
    clearing_intent:(([< `Read | `Set_and_create ], Submit_order.t,
                      Raw_order.Clearing_intent.t option)
                     Fieldslib.Field.t_with_perm -> bool) ->
    not_held:(([< `Read | `Set_and_create ], Submit_order.t, bool)
              Fieldslib.Field.t_with_perm -> bool) ->
    underlying_combo:(([< `Read | `Set_and_create ], Submit_order.t, bool)
                      Fieldslib.Field.t_with_perm -> bool) ->
    algo_strategy:(([< `Read | `Set_and_create ], Submit_order.t,
                    string option)
                   Fieldslib.Field.t_with_perm -> bool) ->
    request_pre_trade_information:(([< `Read | `Set_and_create ],
                                    Submit_order.t, bool)
                                   Fieldslib.Field.t_with_perm -> bool) ->
    bool
  val exists :
    con_id:(([< `Read | `Set_and_create ], Submit_order.t,
             Contract_id.t option)
            Fieldslib.Field.t_with_perm -> bool) ->
    symbol:(([< `Read | `Set_and_create ], Submit_order.t, Symbol.t)
            Fieldslib.Field.t_with_perm -> bool) ->
    sec_type:(([< `Read | `Set_and_create ], Submit_order.t, string)
              Fieldslib.Field.t_with_perm -> bool) ->
    expiry:(([< `Read | `Set_and_create ], Submit_order.t,
             Core.Std.Date.t option)
            Fieldslib.Field.t_with_perm -> bool) ->
    strike:(([< `Read | `Set_and_create ], Submit_order.t, Price.t option)
            Fieldslib.Field.t_with_perm -> bool) ->
    option_right:(([< `Read | `Set_and_create ], Submit_order.t,
                   Option_right.t option)
                  Fieldslib.Field.t_with_perm -> bool) ->
    multiplier:(([< `Read | `Set_and_create ], Submit_order.t, int option)
                Fieldslib.Field.t_with_perm -> bool) ->
    exchange:(([< `Read | `Set_and_create ], Submit_order.t, Exchange.t)
              Fieldslib.Field.t_with_perm -> bool) ->
    listing_exchange:(([< `Read | `Set_and_create ], Submit_order.t,
                       Exchange.t option)
                      Fieldslib.Field.t_with_perm -> bool) ->
    currency:(([< `Read | `Set_and_create ], Submit_order.t, Currency.t)
              Fieldslib.Field.t_with_perm -> bool) ->
    local_symbol:(([< `Read | `Set_and_create ], Submit_order.t,
                   Symbol.t option)
                  Fieldslib.Field.t_with_perm -> bool) ->
    sec_id_type:(([< `Read | `Set_and_create ], Submit_order.t,
                  Security_id.Type.t option)
                 Fieldslib.Field.t_with_perm -> bool) ->
    sec_id:(([< `Read | `Set_and_create ], Submit_order.t,
             Security_id.Id.t option)
            Fieldslib.Field.t_with_perm -> bool) ->
    action:(([< `Read | `Set_and_create ], Submit_order.t, string)
            Fieldslib.Field.t_with_perm -> bool) ->
    quantity:(([< `Read | `Set_and_create ], Submit_order.t, Volume.t)
              Fieldslib.Field.t_with_perm -> bool) ->
    order_kind:(([< `Read | `Set_and_create ], Submit_order.t, string)
                Fieldslib.Field.t_with_perm -> bool) ->
    limit_price:(([< `Read | `Set_and_create ], Submit_order.t,
                  Price.t option)
                 Fieldslib.Field.t_with_perm -> bool) ->
    stop_price:(([< `Read | `Set_and_create ], Submit_order.t,
                 Price.t option)
                Fieldslib.Field.t_with_perm -> bool) ->
    time_in_force:(([< `Read | `Set_and_create ], Submit_order.t,
                    Raw_order.Time_in_force.t option)
                   Fieldslib.Field.t_with_perm -> bool) ->
    oca_group_name:(([< `Read | `Set_and_create ], Submit_order.t,
                     string option)
                    Fieldslib.Field.t_with_perm -> bool) ->
    account_code:(([< `Read | `Set_and_create ], Submit_order.t,
                   Account_code.t)
                  Fieldslib.Field.t_with_perm -> bool) ->
    open_close:(([< `Read | `Set_and_create ], Submit_order.t,
                 Raw_order.Open_close.t)
                Fieldslib.Field.t_with_perm -> bool) ->
    origin:(([< `Read | `Set_and_create ], Submit_order.t,
             Raw_order.Origin.t)
            Fieldslib.Field.t_with_perm -> bool) ->
    order_ref:(([< `Read | `Set_and_create ], Submit_order.t, string option)
               Fieldslib.Field.t_with_perm -> bool) ->
    transmit:(([< `Read | `Set_and_create ], Submit_order.t, bool)
              Fieldslib.Field.t_with_perm -> bool) ->
    parent_id:(([< `Read | `Set_and_create ], Submit_order.t,
                Order_id.t option)
               Fieldslib.Field.t_with_perm -> bool) ->
    block_order:(([< `Read | `Set_and_create ], Submit_order.t, bool)
                 Fieldslib.Field.t_with_perm -> bool) ->
    sweep_to_fill:(([< `Read | `Set_and_create ], Submit_order.t, bool)
                   Fieldslib.Field.t_with_perm -> bool) ->
    display_size:(([< `Read | `Set_and_create ], Submit_order.t,
                   Volume.t option)
                  Fieldslib.Field.t_with_perm -> bool) ->
    stop_trigger_method:(([< `Read | `Set_and_create ], Submit_order.t,
                          Raw_order.Stop_trigger_method.t)
                         Fieldslib.Field.t_with_perm -> bool) ->
    outside_regular_trading_hours:(([< `Read | `Set_and_create ],
                                    Submit_order.t, bool)
                                   Fieldslib.Field.t_with_perm -> bool) ->
    hidden:(([< `Read | `Set_and_create ], Submit_order.t, bool)
            Fieldslib.Field.t_with_perm -> bool) ->
    shares_allocation:(([< `Read | `Set_and_create ], Submit_order.t, string)
                       Fieldslib.Field.t_with_perm -> bool) ->
    discretionary_amount:(([< `Read | `Set_and_create ], Submit_order.t,
                           float option)
                          Fieldslib.Field.t_with_perm -> bool) ->
    good_after_date_time:(([< `Read | `Set_and_create ], Submit_order.t,
                           Core.Std.Time.t option)
                          Fieldslib.Field.t_with_perm -> bool) ->
    good_till_date_time:(([< `Read | `Set_and_create ], Submit_order.t,
                          Core.Std.Time.t option)
                         Fieldslib.Field.t_with_perm -> bool) ->
    financial_advisor_group:(([< `Read | `Set_and_create ], Submit_order.t,
                              string option)
                             Fieldslib.Field.t_with_perm -> bool) ->
    financial_advisor_method:(([< `Read | `Set_and_create ], Submit_order.t,
                               string option)
                              Fieldslib.Field.t_with_perm -> bool) ->
    financial_advisor_percentage:(([< `Read | `Set_and_create ],
                                   Submit_order.t, string option)
                                  Fieldslib.Field.t_with_perm -> bool) ->
    financial_advisor_profile:(([< `Read | `Set_and_create ], Submit_order.t,
                                string option)
                               Fieldslib.Field.t_with_perm -> bool) ->
    short_sale_slot:(([< `Read | `Set_and_create ], Submit_order.t,
                      int option)
                     Fieldslib.Field.t_with_perm -> bool) ->
    designated_location:(([< `Read | `Set_and_create ], Submit_order.t,
                          string option)
                         Fieldslib.Field.t_with_perm -> bool) ->
    exemption_code:(([< `Read | `Set_and_create ], Submit_order.t, int)
                    Fieldslib.Field.t_with_perm -> bool) ->
    oca_type:(([< `Read | `Set_and_create ], Submit_order.t,
               Raw_order.Oca_type.t option)
              Fieldslib.Field.t_with_perm -> bool) ->
    rule80A:(([< `Read | `Set_and_create ], Submit_order.t,
              Raw_order.Rule80A.t option)
             Fieldslib.Field.t_with_perm -> bool) ->
    settling_firm:(([< `Read | `Set_and_create ], Submit_order.t,
                    string option)
                   Fieldslib.Field.t_with_perm -> bool) ->
    all_or_none:(([< `Read | `Set_and_create ], Submit_order.t, bool)
                 Fieldslib.Field.t_with_perm -> bool) ->
    minimum_quantity:(([< `Read | `Set_and_create ], Submit_order.t,
                       Volume.t option)
                      Fieldslib.Field.t_with_perm -> bool) ->
    percent_offset:(([< `Read | `Set_and_create ], Submit_order.t,
                     float option)
                    Fieldslib.Field.t_with_perm -> bool) ->
    electronic_trade_only:(([< `Read | `Set_and_create ], Submit_order.t,
                            bool)
                           Fieldslib.Field.t_with_perm -> bool) ->
    firm_quote_only:(([< `Read | `Set_and_create ], Submit_order.t, bool)
                     Fieldslib.Field.t_with_perm -> bool) ->
    nbbo_price_cap:(([< `Read | `Set_and_create ], Submit_order.t,
                     float option)
                    Fieldslib.Field.t_with_perm -> bool) ->
    auction_strategy:(([< `Read | `Set_and_create ], Submit_order.t,
                       Raw_order.Auction_strategy.t option)
                      Fieldslib.Field.t_with_perm -> bool) ->
    starting_price:(([< `Read | `Set_and_create ], Submit_order.t,
                     Price.t option)
                    Fieldslib.Field.t_with_perm -> bool) ->
    stock_reference_price:(([< `Read | `Set_and_create ], Submit_order.t,
                            Price.t option)
                           Fieldslib.Field.t_with_perm -> bool) ->
    delta:(([< `Read | `Set_and_create ], Submit_order.t, float option)
           Fieldslib.Field.t_with_perm -> bool) ->
    lower_stock_price_range:(([< `Read | `Set_and_create ], Submit_order.t,
                              Price.t option)
                             Fieldslib.Field.t_with_perm -> bool) ->
    upper_stock_price_range:(([< `Read | `Set_and_create ], Submit_order.t,
                              Price.t option)
                             Fieldslib.Field.t_with_perm -> bool) ->
    override_percentage_constraints:(([< `Read | `Set_and_create ],
                                      Submit_order.t, bool)
                                     Fieldslib.Field.t_with_perm -> bool) ->
    volatility:(([< `Read | `Set_and_create ], Submit_order.t, float option)
                Fieldslib.Field.t_with_perm -> bool) ->
    volatility_type:(([< `Read | `Set_and_create ], Submit_order.t,
                      Raw_order.Volatility_type.t option)
                     Fieldslib.Field.t_with_perm -> bool) ->
    delta_neutral_order_type:(([< `Read | `Set_and_create ], Submit_order.t,
                               Order_type.t option)
                              Fieldslib.Field.t_with_perm -> bool) ->
    delta_neutral_aux_price:(([< `Read | `Set_and_create ], Submit_order.t,
                              Price.t option)
                             Fieldslib.Field.t_with_perm -> bool) ->
    continuous_update:(([< `Read | `Set_and_create ], Submit_order.t, bool)
                       Fieldslib.Field.t_with_perm -> bool) ->
    reference_price_type:(([< `Read | `Set_and_create ], Submit_order.t,
                           Raw_order.Reference_price_type.t option)
                          Fieldslib.Field.t_with_perm -> bool) ->
    trailing_stop_price:(([< `Read | `Set_and_create ], Submit_order.t,
                          Price.t option)
                         Fieldslib.Field.t_with_perm -> bool) ->
    trailing_percent:(([< `Read | `Set_and_create ], Submit_order.t,
                       float option)
                      Fieldslib.Field.t_with_perm -> bool) ->
    scale_initial_level_size:(([< `Read | `Set_and_create ], Submit_order.t,
                               Volume.t option)
                              Fieldslib.Field.t_with_perm -> bool) ->
    scale_subsequent_level_size:(([< `Read | `Set_and_create ],
                                  Submit_order.t, Volume.t option)
                                 Fieldslib.Field.t_with_perm -> bool) ->
    scale_price_increment:(([< `Read | `Set_and_create ], Submit_order.t,
                            float option)
                           Fieldslib.Field.t_with_perm -> bool) ->
    hedge_type:(([< `Read | `Set_and_create ], Submit_order.t,
                 Raw_order.Hedge_type.t option)
                Fieldslib.Field.t_with_perm -> bool) ->
    opt_out_smart_routing:(([< `Read | `Set_and_create ], Submit_order.t,
                            bool)
                           Fieldslib.Field.t_with_perm -> bool) ->
    clearing_account:(([< `Read | `Set_and_create ], Submit_order.t,
                       string option)
                      Fieldslib.Field.t_with_perm -> bool) ->
    clearing_intent:(([< `Read | `Set_and_create ], Submit_order.t,
                      Raw_order.Clearing_intent.t option)
                     Fieldslib.Field.t_with_perm -> bool) ->
    not_held:(([< `Read | `Set_and_create ], Submit_order.t, bool)
              Fieldslib.Field.t_with_perm -> bool) ->
    underlying_combo:(([< `Read | `Set_and_create ], Submit_order.t, bool)
                      Fieldslib.Field.t_with_perm -> bool) ->
    algo_strategy:(([< `Read | `Set_and_create ], Submit_order.t,
                    string option)
                   Fieldslib.Field.t_with_perm -> bool) ->
    request_pre_trade_information:(([< `Read | `Set_and_create ],
                                    Submit_order.t, bool)
                                   Fieldslib.Field.t_with_perm -> bool) ->
    bool
  val to_list :
    con_id:(([< `Read | `Set_and_create ], Submit_order.t,
             Contract_id.t option)
            Fieldslib.Field.t_with_perm -> 'a) ->
    symbol:(([< `Read | `Set_and_create ], Submit_order.t, Symbol.t)
            Fieldslib.Field.t_with_perm -> 'a) ->
    sec_type:(([< `Read | `Set_and_create ], Submit_order.t, string)
              Fieldslib.Field.t_with_perm -> 'a) ->
    expiry:(([< `Read | `Set_and_create ], Submit_order.t,
             Core.Std.Date.t option)
            Fieldslib.Field.t_with_perm -> 'a) ->
    strike:(([< `Read | `Set_and_create ], Submit_order.t, Price.t option)
            Fieldslib.Field.t_with_perm -> 'a) ->
    option_right:(([< `Read | `Set_and_create ], Submit_order.t,
                   Option_right.t option)
                  Fieldslib.Field.t_with_perm -> 'a) ->
    multiplier:(([< `Read | `Set_and_create ], Submit_order.t, int option)
                Fieldslib.Field.t_with_perm -> 'a) ->
    exchange:(([< `Read | `Set_and_create ], Submit_order.t, Exchange.t)
              Fieldslib.Field.t_with_perm -> 'a) ->
    listing_exchange:(([< `Read | `Set_and_create ], Submit_order.t,
                       Exchange.t option)
                      Fieldslib.Field.t_with_perm -> 'a) ->
    currency:(([< `Read | `Set_and_create ], Submit_order.t, Currency.t)
              Fieldslib.Field.t_with_perm -> 'a) ->
    local_symbol:(([< `Read | `Set_and_create ], Submit_order.t,
                   Symbol.t option)
                  Fieldslib.Field.t_with_perm -> 'a) ->
    sec_id_type:(([< `Read | `Set_and_create ], Submit_order.t,
                  Security_id.Type.t option)
                 Fieldslib.Field.t_with_perm -> 'a) ->
    sec_id:(([< `Read | `Set_and_create ], Submit_order.t,
             Security_id.Id.t option)
            Fieldslib.Field.t_with_perm -> 'a) ->
    action:(([< `Read | `Set_and_create ], Submit_order.t, string)
            Fieldslib.Field.t_with_perm -> 'a) ->
    quantity:(([< `Read | `Set_and_create ], Submit_order.t, Volume.t)
              Fieldslib.Field.t_with_perm -> 'a) ->
    order_kind:(([< `Read | `Set_and_create ], Submit_order.t, string)
                Fieldslib.Field.t_with_perm -> 'a) ->
    limit_price:(([< `Read | `Set_and_create ], Submit_order.t,
                  Price.t option)
                 Fieldslib.Field.t_with_perm -> 'a) ->
    stop_price:(([< `Read | `Set_and_create ], Submit_order.t,
                 Price.t option)
                Fieldslib.Field.t_with_perm -> 'a) ->
    time_in_force:(([< `Read | `Set_and_create ], Submit_order.t,
                    Raw_order.Time_in_force.t option)
                   Fieldslib.Field.t_with_perm -> 'a) ->
    oca_group_name:(([< `Read | `Set_and_create ], Submit_order.t,
                     string option)
                    Fieldslib.Field.t_with_perm -> 'a) ->
    account_code:(([< `Read | `Set_and_create ], Submit_order.t,
                   Account_code.t)
                  Fieldslib.Field.t_with_perm -> 'a) ->
    open_close:(([< `Read | `Set_and_create ], Submit_order.t,
                 Raw_order.Open_close.t)
                Fieldslib.Field.t_with_perm -> 'a) ->
    origin:(([< `Read | `Set_and_create ], Submit_order.t,
             Raw_order.Origin.t)
            Fieldslib.Field.t_with_perm -> 'a) ->
    order_ref:(([< `Read | `Set_and_create ], Submit_order.t, string option)
               Fieldslib.Field.t_with_perm -> 'a) ->
    transmit:(([< `Read | `Set_and_create ], Submit_order.t, bool)
              Fieldslib.Field.t_with_perm -> 'a) ->
    parent_id:(([< `Read | `Set_and_create ], Submit_order.t,
                Order_id.t option)
               Fieldslib.Field.t_with_perm -> 'a) ->
    block_order:(([< `Read | `Set_and_create ], Submit_order.t, bool)
                 Fieldslib.Field.t_with_perm -> 'a) ->
    sweep_to_fill:(([< `Read | `Set_and_create ], Submit_order.t, bool)
                   Fieldslib.Field.t_with_perm -> 'a) ->
    display_size:(([< `Read | `Set_and_create ], Submit_order.t,
                   Volume.t option)
                  Fieldslib.Field.t_with_perm -> 'a) ->
    stop_trigger_method:(([< `Read | `Set_and_create ], Submit_order.t,
                          Raw_order.Stop_trigger_method.t)
                         Fieldslib.Field.t_with_perm -> 'a) ->
    outside_regular_trading_hours:(([< `Read | `Set_and_create ],
                                    Submit_order.t, bool)
                                   Fieldslib.Field.t_with_perm -> 'a) ->
    hidden:(([< `Read | `Set_and_create ], Submit_order.t, bool)
            Fieldslib.Field.t_with_perm -> 'a) ->
    shares_allocation:(([< `Read | `Set_and_create ], Submit_order.t, string)
                       Fieldslib.Field.t_with_perm -> 'a) ->
    discretionary_amount:(([< `Read | `Set_and_create ], Submit_order.t,
                           float option)
                          Fieldslib.Field.t_with_perm -> 'a) ->
    good_after_date_time:(([< `Read | `Set_and_create ], Submit_order.t,
                           Core.Std.Time.t option)
                          Fieldslib.Field.t_with_perm -> 'a) ->
    good_till_date_time:(([< `Read | `Set_and_create ], Submit_order.t,
                          Core.Std.Time.t option)
                         Fieldslib.Field.t_with_perm -> 'a) ->
    financial_advisor_group:(([< `Read | `Set_and_create ], Submit_order.t,
                              string option)
                             Fieldslib.Field.t_with_perm -> 'a) ->
    financial_advisor_method:(([< `Read | `Set_and_create ], Submit_order.t,
                               string option)
                              Fieldslib.Field.t_with_perm -> 'a) ->
    financial_advisor_percentage:(([< `Read | `Set_and_create ],
                                   Submit_order.t, string option)
                                  Fieldslib.Field.t_with_perm -> 'a) ->
    financial_advisor_profile:(([< `Read | `Set_and_create ], Submit_order.t,
                                string option)
                               Fieldslib.Field.t_with_perm -> 'a) ->
    short_sale_slot:(([< `Read | `Set_and_create ], Submit_order.t,
                      int option)
                     Fieldslib.Field.t_with_perm -> 'a) ->
    designated_location:(([< `Read | `Set_and_create ], Submit_order.t,
                          string option)
                         Fieldslib.Field.t_with_perm -> 'a) ->
    exemption_code:(([< `Read | `Set_and_create ], Submit_order.t, int)
                    Fieldslib.Field.t_with_perm -> 'a) ->
    oca_type:(([< `Read | `Set_and_create ], Submit_order.t,
               Raw_order.Oca_type.t option)
              Fieldslib.Field.t_with_perm -> 'a) ->
    rule80A:(([< `Read | `Set_and_create ], Submit_order.t,
              Raw_order.Rule80A.t option)
             Fieldslib.Field.t_with_perm -> 'a) ->
    settling_firm:(([< `Read | `Set_and_create ], Submit_order.t,
                    string option)
                   Fieldslib.Field.t_with_perm -> 'a) ->
    all_or_none:(([< `Read | `Set_and_create ], Submit_order.t, bool)
                 Fieldslib.Field.t_with_perm -> 'a) ->
    minimum_quantity:(([< `Read | `Set_and_create ], Submit_order.t,
                       Volume.t option)
                      Fieldslib.Field.t_with_perm -> 'a) ->
    percent_offset:(([< `Read | `Set_and_create ], Submit_order.t,
                     float option)
                    Fieldslib.Field.t_with_perm -> 'a) ->
    electronic_trade_only:(([< `Read | `Set_and_create ], Submit_order.t,
                            bool)
                           Fieldslib.Field.t_with_perm -> 'a) ->
    firm_quote_only:(([< `Read | `Set_and_create ], Submit_order.t, bool)
                     Fieldslib.Field.t_with_perm -> 'a) ->
    nbbo_price_cap:(([< `Read | `Set_and_create ], Submit_order.t,
                     float option)
                    Fieldslib.Field.t_with_perm -> 'a) ->
    auction_strategy:(([< `Read | `Set_and_create ], Submit_order.t,
                       Raw_order.Auction_strategy.t option)
                      Fieldslib.Field.t_with_perm -> 'a) ->
    starting_price:(([< `Read | `Set_and_create ], Submit_order.t,
                     Price.t option)
                    Fieldslib.Field.t_with_perm -> 'a) ->
    stock_reference_price:(([< `Read | `Set_and_create ], Submit_order.t,
                            Price.t option)
                           Fieldslib.Field.t_with_perm -> 'a) ->
    delta:(([< `Read | `Set_and_create ], Submit_order.t, float option)
           Fieldslib.Field.t_with_perm -> 'a) ->
    lower_stock_price_range:(([< `Read | `Set_and_create ], Submit_order.t,
                              Price.t option)
                             Fieldslib.Field.t_with_perm -> 'a) ->
    upper_stock_price_range:(([< `Read | `Set_and_create ], Submit_order.t,
                              Price.t option)
                             Fieldslib.Field.t_with_perm -> 'a) ->
    override_percentage_constraints:(([< `Read | `Set_and_create ],
                                      Submit_order.t, bool)
                                     Fieldslib.Field.t_with_perm -> 'a) ->
    volatility:(([< `Read | `Set_and_create ], Submit_order.t, float option)
                Fieldslib.Field.t_with_perm -> 'a) ->
    volatility_type:(([< `Read | `Set_and_create ], Submit_order.t,
                      Raw_order.Volatility_type.t option)
                     Fieldslib.Field.t_with_perm -> 'a) ->
    delta_neutral_order_type:(([< `Read | `Set_and_create ], Submit_order.t,
                               Order_type.t option)
                              Fieldslib.Field.t_with_perm -> 'a) ->
    delta_neutral_aux_price:(([< `Read | `Set_and_create ], Submit_order.t,
                              Price.t option)
                             Fieldslib.Field.t_with_perm -> 'a) ->
    continuous_update:(([< `Read | `Set_and_create ], Submit_order.t, bool)
                       Fieldslib.Field.t_with_perm -> 'a) ->
    reference_price_type:(([< `Read | `Set_and_create ], Submit_order.t,
                           Raw_order.Reference_price_type.t option)
                          Fieldslib.Field.t_with_perm -> 'a) ->
    trailing_stop_price:(([< `Read | `Set_and_create ], Submit_order.t,
                          Price.t option)
                         Fieldslib.Field.t_with_perm -> 'a) ->
    trailing_percent:(([< `Read | `Set_and_create ], Submit_order.t,
                       float option)
                      Fieldslib.Field.t_with_perm -> 'a) ->
    scale_initial_level_size:(([< `Read | `Set_and_create ], Submit_order.t,
                               Volume.t option)
                              Fieldslib.Field.t_with_perm -> 'a) ->
    scale_subsequent_level_size:(([< `Read | `Set_and_create ],
                                  Submit_order.t, Volume.t option)
                                 Fieldslib.Field.t_with_perm -> 'a) ->
    scale_price_increment:(([< `Read | `Set_and_create ], Submit_order.t,
                            float option)
                           Fieldslib.Field.t_with_perm -> 'a) ->
    hedge_type:(([< `Read | `Set_and_create ], Submit_order.t,
                 Raw_order.Hedge_type.t option)
                Fieldslib.Field.t_with_perm -> 'a) ->
    opt_out_smart_routing:(([< `Read | `Set_and_create ], Submit_order.t,
                            bool)
                           Fieldslib.Field.t_with_perm -> 'a) ->
    clearing_account:(([< `Read | `Set_and_create ], Submit_order.t,
                       string option)
                      Fieldslib.Field.t_with_perm -> 'a) ->
    clearing_intent:(([< `Read | `Set_and_create ], Submit_order.t,
                      Raw_order.Clearing_intent.t option)
                     Fieldslib.Field.t_with_perm -> 'a) ->
    not_held:(([< `Read | `Set_and_create ], Submit_order.t, bool)
              Fieldslib.Field.t_with_perm -> 'a) ->
    underlying_combo:(([< `Read | `Set_and_create ], Submit_order.t, bool)
                      Fieldslib.Field.t_with_perm -> 'a) ->
    algo_strategy:(([< `Read | `Set_and_create ], Submit_order.t,
                    string option)
                   Fieldslib.Field.t_with_perm -> 'a) ->
    request_pre_trade_information:(([< `Read | `Set_and_create ],
                                    Submit_order.t, bool)
                                   Fieldslib.Field.t_with_perm -> 'a) ->
    'a list
  module Direct :
    sig
      val iter :
        Submit_order.t ->
        con_id:(([< `Read | `Set_and_create ], Submit_order.t,
                 Contract_id.t option)
                Fieldslib.Field.t_with_perm ->
                Submit_order.t -> Contract_id.t option -> 'a) ->
        symbol:(([< `Read | `Set_and_create ], Submit_order.t, Symbol.t)
                Fieldslib.Field.t_with_perm ->
                Submit_order.t -> Symbol.t -> 'b) ->
        sec_type:(([< `Read | `Set_and_create ], Submit_order.t, string)
                  Fieldslib.Field.t_with_perm ->
                  Submit_order.t -> string -> 'c) ->
        expiry:(([< `Read | `Set_and_create ], Submit_order.t,
                 Core.Std.Date.t option)
                Fieldslib.Field.t_with_perm ->
                Submit_order.t -> Core.Std.Date.t option -> 'd) ->
        strike:(([< `Read | `Set_and_create ], Submit_order.t,
                 Price.t option)
                Fieldslib.Field.t_with_perm ->
                Submit_order.t -> Price.t option -> 'e) ->
        option_right:(([< `Read | `Set_and_create ], Submit_order.t,
                       Option_right.t option)
                      Fieldslib.Field.t_with_perm ->
                      Submit_order.t -> Option_right.t option -> 'f) ->
        multiplier:(([< `Read | `Set_and_create ], Submit_order.t,
                     int option)
                    Fieldslib.Field.t_with_perm ->
                    Submit_order.t -> int option -> 'g) ->
        exchange:(([< `Read | `Set_and_create ], Submit_order.t, Exchange.t)
                  Fieldslib.Field.t_with_perm ->
                  Submit_order.t -> Exchange.t -> 'h) ->
        listing_exchange:(([< `Read | `Set_and_create ], Submit_order.t,
                           Exchange.t option)
                          Fieldslib.Field.t_with_perm ->
                          Submit_order.t -> Exchange.t option -> 'i) ->
        currency:(([< `Read | `Set_and_create ], Submit_order.t, Currency.t)
                  Fieldslib.Field.t_with_perm ->
                  Submit_order.t -> Currency.t -> 'j) ->
        local_symbol:(([< `Read | `Set_and_create ], Submit_order.t,
                       Symbol.t option)
                      Fieldslib.Field.t_with_perm ->
                      Submit_order.t -> Symbol.t option -> 'k) ->
        sec_id_type:(([< `Read | `Set_and_create ], Submit_order.t,
                      Security_id.Type.t option)
                     Fieldslib.Field.t_with_perm ->
                     Submit_order.t -> Security_id.Type.t option -> 'l) ->
        sec_id:(([< `Read | `Set_and_create ], Submit_order.t,
                 Security_id.Id.t option)
                Fieldslib.Field.t_with_perm ->
                Submit_order.t -> Security_id.Id.t option -> 'm) ->
        action:(([< `Read | `Set_and_create ], Submit_order.t, string)
                Fieldslib.Field.t_with_perm -> Submit_order.t -> string -> 'n) ->
        quantity:(([< `Read | `Set_and_create ], Submit_order.t, Volume.t)
                  Fieldslib.Field.t_with_perm ->
                  Submit_order.t -> Volume.t -> 'o) ->
        order_kind:(([< `Read | `Set_and_create ], Submit_order.t, string)
                    Fieldslib.Field.t_with_perm ->
                    Submit_order.t -> string -> 'p) ->
        limit_price:(([< `Read | `Set_and_create ], Submit_order.t,
                      Price.t option)
                     Fieldslib.Field.t_with_perm ->
                     Submit_order.t -> Price.t option -> 'q) ->
        stop_price:(([< `Read | `Set_and_create ], Submit_order.t,
                     Price.t option)
                    Fieldslib.Field.t_with_perm ->
                    Submit_order.t -> Price.t option -> 'r) ->
        time_in_force:(([< `Read | `Set_and_create ], Submit_order.t,
                        Raw_order.Time_in_force.t option)
                       Fieldslib.Field.t_with_perm ->
                       Submit_order.t ->
                       Raw_order.Time_in_force.t option -> 's) ->
        oca_group_name:(([< `Read | `Set_and_create ], Submit_order.t,
                         string option)
                        Fieldslib.Field.t_with_perm ->
                        Submit_order.t -> string option -> 't) ->
        account_code:(([< `Read | `Set_and_create ], Submit_order.t,
                       Account_code.t)
                      Fieldslib.Field.t_with_perm ->
                      Submit_order.t -> Account_code.t -> 'u) ->
        open_close:(([< `Read | `Set_and_create ], Submit_order.t,
                     Raw_order.Open_close.t)
                    Fieldslib.Field.t_with_perm ->
                    Submit_order.t -> Raw_order.Open_close.t -> 'v) ->
        origin:(([< `Read | `Set_and_create ], Submit_order.t,
                 Raw_order.Origin.t)
                Fieldslib.Field.t_with_perm ->
                Submit_order.t -> Raw_order.Origin.t -> 'w) ->
        order_ref:(([< `Read | `Set_and_create ], Submit_order.t,
                    string option)
                   Fieldslib.Field.t_with_perm ->
                   Submit_order.t -> string option -> 'x) ->
        transmit:(([< `Read | `Set_and_create ], Submit_order.t, bool)
                  Fieldslib.Field.t_with_perm -> Submit_order.t -> bool -> 'y) ->
        parent_id:(([< `Read | `Set_and_create ], Submit_order.t,
                    Order_id.t option)
                   Fieldslib.Field.t_with_perm ->
                   Submit_order.t -> Order_id.t option -> 'z) ->
        block_order:(([< `Read | `Set_and_create ], Submit_order.t, bool)
                     Fieldslib.Field.t_with_perm ->
                     Submit_order.t -> bool -> 'a1) ->
        sweep_to_fill:(([< `Read | `Set_and_create ], Submit_order.t, bool)
                       Fieldslib.Field.t_with_perm ->
                       Submit_order.t -> bool -> 'b1) ->
        display_size:(([< `Read | `Set_and_create ], Submit_order.t,
                       Volume.t option)
                      Fieldslib.Field.t_with_perm ->
                      Submit_order.t -> Volume.t option -> 'c1) ->
        stop_trigger_method:(([< `Read | `Set_and_create ], Submit_order.t,
                              Raw_order.Stop_trigger_method.t)
                             Fieldslib.Field.t_with_perm ->
                             Submit_order.t ->
                             Raw_order.Stop_trigger_method.t -> 'd1) ->
        outside_regular_trading_hours:(([< `Read | `Set_and_create ],
                                        Submit_order.t, bool)
                                       Fieldslib.Field.t_with_perm ->
                                       Submit_order.t -> bool -> 'e1) ->
        hidden:(([< `Read | `Set_and_create ], Submit_order.t, bool)
                Fieldslib.Field.t_with_perm -> Submit_order.t -> bool -> 'f1) ->
        shares_allocation:(([< `Read | `Set_and_create ], Submit_order.t,
                            string)
                           Fieldslib.Field.t_with_perm ->
                           Submit_order.t -> string -> 'g1) ->
        discretionary_amount:(([< `Read | `Set_and_create ], Submit_order.t,
                               float option)
                              Fieldslib.Field.t_with_perm ->
                              Submit_order.t -> float option -> 'h1) ->
        good_after_date_time:(([< `Read | `Set_and_create ], Submit_order.t,
                               Core.Std.Time.t option)
                              Fieldslib.Field.t_with_perm ->
                              Submit_order.t -> Core.Std.Time.t option -> 'i1) ->
        good_till_date_time:(([< `Read | `Set_and_create ], Submit_order.t,
                              Core.Std.Time.t option)
                             Fieldslib.Field.t_with_perm ->
                             Submit_order.t -> Core.Std.Time.t option -> 'j1) ->
        financial_advisor_group:(([< `Read | `Set_and_create ],
                                  Submit_order.t, string option)
                                 Fieldslib.Field.t_with_perm ->
                                 Submit_order.t -> string option -> 'k1) ->
        financial_advisor_method:(([< `Read | `Set_and_create ],
                                   Submit_order.t, string option)
                                  Fieldslib.Field.t_with_perm ->
                                  Submit_order.t -> string option -> 'l1) ->
        financial_advisor_percentage:(([< `Read | `Set_and_create ],
                                       Submit_order.t, string option)
                                      Fieldslib.Field.t_with_perm ->
                                      Submit_order.t -> string option -> 'm1) ->
        financial_advisor_profile:(([< `Read | `Set_and_create ],
                                    Submit_order.t, string option)
                                   Fieldslib.Field.t_with_perm ->
                                   Submit_order.t -> string option -> 'n1) ->
        short_sale_slot:(([< `Read | `Set_and_create ], Submit_order.t,
                          int option)
                         Fieldslib.Field.t_with_perm ->
                         Submit_order.t -> int option -> 'o1) ->
        designated_location:(([< `Read | `Set_and_create ], Submit_order.t,
                              string option)
                             Fieldslib.Field.t_with_perm ->
                             Submit_order.t -> string option -> 'p1) ->
        exemption_code:(([< `Read | `Set_and_create ], Submit_order.t, int)
                        Fieldslib.Field.t_with_perm ->
                        Submit_order.t -> int -> 'q1) ->
        oca_type:(([< `Read | `Set_and_create ], Submit_order.t,
                   Raw_order.Oca_type.t option)
                  Fieldslib.Field.t_with_perm ->
                  Submit_order.t -> Raw_order.Oca_type.t option -> 'r1) ->
        rule80A:(([< `Read | `Set_and_create ], Submit_order.t,
                  Raw_order.Rule80A.t option)
                 Fieldslib.Field.t_with_perm ->
                 Submit_order.t -> Raw_order.Rule80A.t option -> 's1) ->
        settling_firm:(([< `Read | `Set_and_create ], Submit_order.t,
                        string option)
                       Fieldslib.Field.t_with_perm ->
                       Submit_order.t -> string option -> 't1) ->
        all_or_none:(([< `Read | `Set_and_create ], Submit_order.t, bool)
                     Fieldslib.Field.t_with_perm ->
                     Submit_order.t -> bool -> 'u1) ->
        minimum_quantity:(([< `Read | `Set_and_create ], Submit_order.t,
                           Volume.t option)
                          Fieldslib.Field.t_with_perm ->
                          Submit_order.t -> Volume.t option -> 'v1) ->
        percent_offset:(([< `Read | `Set_and_create ], Submit_order.t,
                         float option)
                        Fieldslib.Field.t_with_perm ->
                        Submit_order.t -> float option -> 'w1) ->
        electronic_trade_only:(([< `Read | `Set_and_create ], Submit_order.t,
                                bool)
                               Fieldslib.Field.t_with_perm ->
                               Submit_order.t -> bool -> 'x1) ->
        firm_quote_only:(([< `Read | `Set_and_create ], Submit_order.t, bool)
                         Fieldslib.Field.t_with_perm ->
                         Submit_order.t -> bool -> 'y1) ->
        nbbo_price_cap:(([< `Read | `Set_and_create ], Submit_order.t,
                         float option)
                        Fieldslib.Field.t_with_perm ->
                        Submit_order.t -> float option -> 'z1) ->
        auction_strategy:(([< `Read | `Set_and_create ], Submit_order.t,
                           Raw_order.Auction_strategy.t option)
                          Fieldslib.Field.t_with_perm ->
                          Submit_order.t ->
                          Raw_order.Auction_strategy.t option -> 'a2) ->
        starting_price:(([< `Read | `Set_and_create ], Submit_order.t,
                         Price.t option)
                        Fieldslib.Field.t_with_perm ->
                        Submit_order.t -> Price.t option -> 'b2) ->
        stock_reference_price:(([< `Read | `Set_and_create ], Submit_order.t,
                                Price.t option)
                               Fieldslib.Field.t_with_perm ->
                               Submit_order.t -> Price.t option -> 'c2) ->
        delta:(([< `Read | `Set_and_create ], Submit_order.t, float option)
               Fieldslib.Field.t_with_perm ->
               Submit_order.t -> float option -> 'd2) ->
        lower_stock_price_range:(([< `Read | `Set_and_create ],
                                  Submit_order.t, Price.t option)
                                 Fieldslib.Field.t_with_perm ->
                                 Submit_order.t -> Price.t option -> 'e2) ->
        upper_stock_price_range:(([< `Read | `Set_and_create ],
                                  Submit_order.t, Price.t option)
                                 Fieldslib.Field.t_with_perm ->
                                 Submit_order.t -> Price.t option -> 'f2) ->
        override_percentage_constraints:(([< `Read | `Set_and_create ],
                                          Submit_order.t, bool)
                                         Fieldslib.Field.t_with_perm ->
                                         Submit_order.t -> bool -> 'g2) ->
        volatility:(([< `Read | `Set_and_create ], Submit_order.t,
                     float option)
                    Fieldslib.Field.t_with_perm ->
                    Submit_order.t -> float option -> 'h2) ->
        volatility_type:(([< `Read | `Set_and_create ], Submit_order.t,
                          Raw_order.Volatility_type.t option)
                         Fieldslib.Field.t_with_perm ->
                         Submit_order.t ->
                         Raw_order.Volatility_type.t option -> 'i2) ->
        delta_neutral_order_type:(([< `Read | `Set_and_create ],
                                   Submit_order.t, Order_type.t option)
                                  Fieldslib.Field.t_with_perm ->
                                  Submit_order.t ->
                                  Order_type.t option -> 'j2) ->
        delta_neutral_aux_price:(([< `Read | `Set_and_create ],
                                  Submit_order.t, Price.t option)
                                 Fieldslib.Field.t_with_perm ->
                                 Submit_order.t -> Price.t option -> 'k2) ->
        continuous_update:(([< `Read | `Set_and_create ], Submit_order.t,
                            bool)
                           Fieldslib.Field.t_with_perm ->
                           Submit_order.t -> bool -> 'l2) ->
        reference_price_type:(([< `Read | `Set_and_create ], Submit_order.t,
                               Raw_order.Reference_price_type.t option)
                              Fieldslib.Field.t_with_perm ->
                              Submit_order.t ->
                              Raw_order.Reference_price_type.t option -> 'm2) ->
        trailing_stop_price:(([< `Read | `Set_and_create ], Submit_order.t,
                              Price.t option)
                             Fieldslib.Field.t_with_perm ->
                             Submit_order.t -> Price.t option -> 'n2) ->
        trailing_percent:(([< `Read | `Set_and_create ], Submit_order.t,
                           float option)
                          Fieldslib.Field.t_with_perm ->
                          Submit_order.t -> float option -> 'o2) ->
        scale_initial_level_size:(([< `Read | `Set_and_create ],
                                   Submit_order.t, Volume.t option)
                                  Fieldslib.Field.t_with_perm ->
                                  Submit_order.t -> Volume.t option -> 'p2) ->
        scale_subsequent_level_size:(([< `Read | `Set_and_create ],
                                      Submit_order.t, Volume.t option)
                                     Fieldslib.Field.t_with_perm ->
                                     Submit_order.t -> Volume.t option -> 'q2) ->
        scale_price_increment:(([< `Read | `Set_and_create ], Submit_order.t,
                                float option)
                               Fieldslib.Field.t_with_perm ->
                               Submit_order.t -> float option -> 'r2) ->
        hedge_type:(([< `Read | `Set_and_create ], Submit_order.t,
                     Raw_order.Hedge_type.t option)
                    Fieldslib.Field.t_with_perm ->
                    Submit_order.t -> Raw_order.Hedge_type.t option -> 's2) ->
        opt_out_smart_routing:(([< `Read | `Set_and_create ], Submit_order.t,
                                bool)
                               Fieldslib.Field.t_with_perm ->
                               Submit_order.t -> bool -> 't2) ->
        clearing_account:(([< `Read | `Set_and_create ], Submit_order.t,
                           string option)
                          Fieldslib.Field.t_with_perm ->
                          Submit_order.t -> string option -> 'u2) ->
        clearing_intent:(([< `Read | `Set_and_create ], Submit_order.t,
                          Raw_order.Clearing_intent.t option)
                         Fieldslib.Field.t_with_perm ->
                         Submit_order.t ->
                         Raw_order.Clearing_intent.t option -> 'v2) ->
        not_held:(([< `Read | `Set_and_create ], Submit_order.t, bool)
                  Fieldslib.Field.t_with_perm ->
                  Submit_order.t -> bool -> 'w2) ->
        underlying_combo:(([< `Read | `Set_and_create ], Submit_order.t,
                           bool)
                          Fieldslib.Field.t_with_perm ->
                          Submit_order.t -> bool -> 'x2) ->
        algo_strategy:(([< `Read | `Set_and_create ], Submit_order.t,
                        string option)
                       Fieldslib.Field.t_with_perm ->
                       Submit_order.t -> string option -> 'y2) ->
        request_pre_trade_information:(([< `Read | `Set_and_create ],
                                        Submit_order.t, bool)
                                       Fieldslib.Field.t_with_perm ->
                                       Submit_order.t -> bool -> 'z2) ->
        'z2
      val fold :
        Submit_order.t ->
        init:'->
        con_id:('->
                ([< `Read | `Set_and_create ], Submit_order.t,
                 Contract_id.t option)
                Fieldslib.Field.t_with_perm ->
                Submit_order.t -> Contract_id.t option -> 'b) ->
        symbol:('->
                ([< `Read | `Set_and_create ], Submit_order.t, Symbol.t)
                Fieldslib.Field.t_with_perm ->
                Submit_order.t -> Symbol.t -> 'c) ->
        sec_type:('->
                  ([< `Read | `Set_and_create ], Submit_order.t, string)
                  Fieldslib.Field.t_with_perm ->
                  Submit_order.t -> string -> 'd) ->
        expiry:('->
                ([< `Read | `Set_and_create ], Submit_order.t,
                 Core.Std.Date.t option)
                Fieldslib.Field.t_with_perm ->
                Submit_order.t -> Core.Std.Date.t option -> 'e) ->
        strike:('->
                ([< `Read | `Set_and_create ], Submit_order.t,
                 Price.t option)
                Fieldslib.Field.t_with_perm ->
                Submit_order.t -> Price.t option -> 'f) ->
        option_right:('->
                      ([< `Read | `Set_and_create ], Submit_order.t,
                       Option_right.t option)
                      Fieldslib.Field.t_with_perm ->
                      Submit_order.t -> Option_right.t option -> 'g) ->
        multiplier:('->
                    ([< `Read | `Set_and_create ], Submit_order.t,
                     int option)
                    Fieldslib.Field.t_with_perm ->
                    Submit_order.t -> int option -> 'h) ->
        exchange:('->
                  ([< `Read | `Set_and_create ], Submit_order.t, Exchange.t)
                  Fieldslib.Field.t_with_perm ->
                  Submit_order.t -> Exchange.t -> 'i) ->
        listing_exchange:('->
                          ([< `Read | `Set_and_create ], Submit_order.t,
                           Exchange.t option)
                          Fieldslib.Field.t_with_perm ->
                          Submit_order.t -> Exchange.t option -> 'j) ->
        currency:('->
                  ([< `Read | `Set_and_create ], Submit_order.t, Currency.t)
                  Fieldslib.Field.t_with_perm ->
                  Submit_order.t -> Currency.t -> 'k) ->
        local_symbol:('->
                      ([< `Read | `Set_and_create ], Submit_order.t,
                       Symbol.t option)
                      Fieldslib.Field.t_with_perm ->
                      Submit_order.t -> Symbol.t option -> 'l) ->
        sec_id_type:('->
                     ([< `Read | `Set_and_create ], Submit_order.t,
                      Security_id.Type.t option)
                     Fieldslib.Field.t_with_perm ->
                     Submit_order.t -> Security_id.Type.t option -> 'm) ->
        sec_id:('->
                ([< `Read | `Set_and_create ], Submit_order.t,
                 Security_id.Id.t option)
                Fieldslib.Field.t_with_perm ->
                Submit_order.t -> Security_id.Id.t option -> 'n) ->
        action:('->
                ([< `Read | `Set_and_create ], Submit_order.t, string)
                Fieldslib.Field.t_with_perm -> Submit_order.t -> string -> 'o) ->
        quantity:('->
                  ([< `Read | `Set_and_create ], Submit_order.t, Volume.t)
                  Fieldslib.Field.t_with_perm ->
                  Submit_order.t -> Volume.t -> 'p) ->
        order_kind:('->
                    ([< `Read | `Set_and_create ], Submit_order.t, string)
                    Fieldslib.Field.t_with_perm ->
                    Submit_order.t -> string -> 'q) ->
        limit_price:('->
                     ([< `Read | `Set_and_create ], Submit_order.t,
                      Price.t option)
                     Fieldslib.Field.t_with_perm ->
                     Submit_order.t -> Price.t option -> 'r) ->
        stop_price:('->
                    ([< `Read | `Set_and_create ], Submit_order.t,
                     Price.t option)
                    Fieldslib.Field.t_with_perm ->
                    Submit_order.t -> Price.t option -> 's) ->
        time_in_force:('->
                       ([< `Read | `Set_and_create ], Submit_order.t,
                        Raw_order.Time_in_force.t option)
                       Fieldslib.Field.t_with_perm ->
                       Submit_order.t ->
                       Raw_order.Time_in_force.t option -> 't) ->
        oca_group_name:('->
                        ([< `Read | `Set_and_create ], Submit_order.t,
                         string option)
                        Fieldslib.Field.t_with_perm ->
                        Submit_order.t -> string option -> 'u) ->
        account_code:('->
                      ([< `Read | `Set_and_create ], Submit_order.t,
                       Account_code.t)
                      Fieldslib.Field.t_with_perm ->
                      Submit_order.t -> Account_code.t -> 'v) ->
        open_close:('->
                    ([< `Read | `Set_and_create ], Submit_order.t,
                     Raw_order.Open_close.t)
                    Fieldslib.Field.t_with_perm ->
                    Submit_order.t -> Raw_order.Open_close.t -> 'w) ->
        origin:('->
                ([< `Read | `Set_and_create ], Submit_order.t,
                 Raw_order.Origin.t)
                Fieldslib.Field.t_with_perm ->
                Submit_order.t -> Raw_order.Origin.t -> 'x) ->
        order_ref:('->
                   ([< `Read | `Set_and_create ], Submit_order.t,
                    string option)
                   Fieldslib.Field.t_with_perm ->
                   Submit_order.t -> string option -> 'y) ->
        transmit:('->
                  ([< `Read | `Set_and_create ], Submit_order.t, bool)
                  Fieldslib.Field.t_with_perm -> Submit_order.t -> bool -> 'z) ->
        parent_id:('->
                   ([< `Read | `Set_and_create ], Submit_order.t,
                    Order_id.t option)
                   Fieldslib.Field.t_with_perm ->
                   Submit_order.t -> Order_id.t option -> 'a1) ->
        block_order:('a1 ->
                     ([< `Read | `Set_and_create ], Submit_order.t, bool)
                     Fieldslib.Field.t_with_perm ->
                     Submit_order.t -> bool -> 'b1) ->
        sweep_to_fill:('b1 ->
                       ([< `Read | `Set_and_create ], Submit_order.t, bool)
                       Fieldslib.Field.t_with_perm ->
                       Submit_order.t -> bool -> 'c1) ->
        display_size:('c1 ->
                      ([< `Read | `Set_and_create ], Submit_order.t,
                       Volume.t option)
                      Fieldslib.Field.t_with_perm ->
                      Submit_order.t -> Volume.t option -> 'd1) ->
        stop_trigger_method:('d1 ->
                             ([< `Read | `Set_and_create ], Submit_order.t,
                              Raw_order.Stop_trigger_method.t)
                             Fieldslib.Field.t_with_perm ->
                             Submit_order.t ->
                             Raw_order.Stop_trigger_method.t -> 'e1) ->
        outside_regular_trading_hours:('e1 ->
                                       ([< `Read | `Set_and_create ],
                                        Submit_order.t, bool)
                                       Fieldslib.Field.t_with_perm ->
                                       Submit_order.t -> bool -> 'f1) ->
        hidden:('f1 ->
                ([< `Read | `Set_and_create ], Submit_order.t, bool)
                Fieldslib.Field.t_with_perm -> Submit_order.t -> bool -> 'g1) ->
        shares_allocation:('g1 ->
                           ([< `Read | `Set_and_create ], Submit_order.t,
                            string)
                           Fieldslib.Field.t_with_perm ->
                           Submit_order.t -> string -> 'h1) ->
        discretionary_amount:('h1 ->
                              ([< `Read | `Set_and_create ], Submit_order.t,
                               float option)
                              Fieldslib.Field.t_with_perm ->
                              Submit_order.t -> float option -> 'i1) ->
        good_after_date_time:('i1 ->
                              ([< `Read | `Set_and_create ], Submit_order.t,
                               Core.Std.Time.t option)
                              Fieldslib.Field.t_with_perm ->
                              Submit_order.t -> Core.Std.Time.t option -> 'j1) ->
        good_till_date_time:('j1 ->
                             ([< `Read | `Set_and_create ], Submit_order.t,
                              Core.Std.Time.t option)
                             Fieldslib.Field.t_with_perm ->
                             Submit_order.t -> Core.Std.Time.t option -> 'k1) ->
        financial_advisor_group:('k1 ->
                                 ([< `Read | `Set_and_create ],
                                  Submit_order.t, string option)
                                 Fieldslib.Field.t_with_perm ->
                                 Submit_order.t -> string option -> 'l1) ->
        financial_advisor_method:('l1 ->
                                  ([< `Read | `Set_and_create ],
                                   Submit_order.t, string option)
                                  Fieldslib.Field.t_with_perm ->
                                  Submit_order.t -> string option -> 'm1) ->
        financial_advisor_percentage:('m1 ->
                                      ([< `Read | `Set_and_create ],
                                       Submit_order.t, string option)
                                      Fieldslib.Field.t_with_perm ->
                                      Submit_order.t -> string option -> 'n1) ->
        financial_advisor_profile:('n1 ->
                                   ([< `Read | `Set_and_create ],
                                    Submit_order.t, string option)
                                   Fieldslib.Field.t_with_perm ->
                                   Submit_order.t -> string option -> 'o1) ->
        short_sale_slot:('o1 ->
                         ([< `Read | `Set_and_create ], Submit_order.t,
                          int option)
                         Fieldslib.Field.t_with_perm ->
                         Submit_order.t -> int option -> 'p1) ->
        designated_location:('p1 ->
                             ([< `Read | `Set_and_create ], Submit_order.t,
                              string option)
                             Fieldslib.Field.t_with_perm ->
                             Submit_order.t -> string option -> 'q1) ->
        exemption_code:('q1 ->
                        ([< `Read | `Set_and_create ], Submit_order.t, int)
                        Fieldslib.Field.t_with_perm ->
                        Submit_order.t -> int -> 'r1) ->
        oca_type:('r1 ->
                  ([< `Read | `Set_and_create ], Submit_order.t,
                   Raw_order.Oca_type.t option)
                  Fieldslib.Field.t_with_perm ->
                  Submit_order.t -> Raw_order.Oca_type.t option -> 's1) ->
        rule80A:('s1 ->
                 ([< `Read | `Set_and_create ], Submit_order.t,
                  Raw_order.Rule80A.t option)
                 Fieldslib.Field.t_with_perm ->
                 Submit_order.t -> Raw_order.Rule80A.t option -> 't1) ->
        settling_firm:('t1 ->
                       ([< `Read | `Set_and_create ], Submit_order.t,
                        string option)
                       Fieldslib.Field.t_with_perm ->
                       Submit_order.t -> string option -> 'u1) ->
        all_or_none:('u1 ->
                     ([< `Read | `Set_and_create ], Submit_order.t, bool)
                     Fieldslib.Field.t_with_perm ->
                     Submit_order.t -> bool -> 'v1) ->
        minimum_quantity:('v1 ->
                          ([< `Read | `Set_and_create ], Submit_order.t,
                           Volume.t option)
                          Fieldslib.Field.t_with_perm ->
                          Submit_order.t -> Volume.t option -> 'w1) ->
        percent_offset:('w1 ->
                        ([< `Read | `Set_and_create ], Submit_order.t,
                         float option)
                        Fieldslib.Field.t_with_perm ->
                        Submit_order.t -> float option -> 'x1) ->
        electronic_trade_only:('x1 ->
                               ([< `Read | `Set_and_create ], Submit_order.t,
                                bool)
                               Fieldslib.Field.t_with_perm ->
                               Submit_order.t -> bool -> 'y1) ->
        firm_quote_only:('y1 ->
                         ([< `Read | `Set_and_create ], Submit_order.t, bool)
                         Fieldslib.Field.t_with_perm ->
                         Submit_order.t -> bool -> 'z1) ->
        nbbo_price_cap:('z1 ->
                        ([< `Read | `Set_and_create ], Submit_order.t,
                         float option)
                        Fieldslib.Field.t_with_perm ->
                        Submit_order.t -> float option -> 'a2) ->
        auction_strategy:('a2 ->
                          ([< `Read | `Set_and_create ], Submit_order.t,
                           Raw_order.Auction_strategy.t option)
                          Fieldslib.Field.t_with_perm ->
                          Submit_order.t ->
                          Raw_order.Auction_strategy.t option -> 'b2) ->
        starting_price:('b2 ->
                        ([< `Read | `Set_and_create ], Submit_order.t,
                         Price.t option)
                        Fieldslib.Field.t_with_perm ->
                        Submit_order.t -> Price.t option -> 'c2) ->
        stock_reference_price:('c2 ->
                               ([< `Read | `Set_and_create ], Submit_order.t,
                                Price.t option)
                               Fieldslib.Field.t_with_perm ->
                               Submit_order.t -> Price.t option -> 'd2) ->
        delta:('d2 ->
               ([< `Read | `Set_and_create ], Submit_order.t, float option)
               Fieldslib.Field.t_with_perm ->
               Submit_order.t -> float option -> 'e2) ->
        lower_stock_price_range:('e2 ->
                                 ([< `Read | `Set_and_create ],
                                  Submit_order.t, Price.t option)
                                 Fieldslib.Field.t_with_perm ->
                                 Submit_order.t -> Price.t option -> 'f2) ->
        upper_stock_price_range:('f2 ->
                                 ([< `Read | `Set_and_create ],
                                  Submit_order.t, Price.t option)
                                 Fieldslib.Field.t_with_perm ->
                                 Submit_order.t -> Price.t option -> 'g2) ->
        override_percentage_constraints:('g2 ->
                                         ([< `Read | `Set_and_create ],
                                          Submit_order.t, bool)
                                         Fieldslib.Field.t_with_perm ->
                                         Submit_order.t -> bool -> 'h2) ->
        volatility:('h2 ->
                    ([< `Read | `Set_and_create ], Submit_order.t,
                     float option)
                    Fieldslib.Field.t_with_perm ->
                    Submit_order.t -> float option -> 'i2) ->
        volatility_type:('i2 ->
                         ([< `Read | `Set_and_create ], Submit_order.t,
                          Raw_order.Volatility_type.t option)
                         Fieldslib.Field.t_with_perm ->
                         Submit_order.t ->
                         Raw_order.Volatility_type.t option -> 'j2) ->
        delta_neutral_order_type:('j2 ->
                                  ([< `Read | `Set_and_create ],
                                   Submit_order.t, Order_type.t option)
                                  Fieldslib.Field.t_with_perm ->
                                  Submit_order.t ->
                                  Order_type.t option -> 'k2) ->
        delta_neutral_aux_price:('k2 ->
                                 ([< `Read | `Set_and_create ],
                                  Submit_order.t, Price.t option)
                                 Fieldslib.Field.t_with_perm ->
                                 Submit_order.t -> Price.t option -> 'l2) ->
        continuous_update:('l2 ->
                           ([< `Read | `Set_and_create ], Submit_order.t,
                            bool)
                           Fieldslib.Field.t_with_perm ->
                           Submit_order.t -> bool -> 'm2) ->
        reference_price_type:('m2 ->
                              ([< `Read | `Set_and_create ], Submit_order.t,
                               Raw_order.Reference_price_type.t option)
                              Fieldslib.Field.t_with_perm ->
                              Submit_order.t ->
                              Raw_order.Reference_price_type.t option -> 'n2) ->
        trailing_stop_price:('n2 ->
                             ([< `Read | `Set_and_create ], Submit_order.t,
                              Price.t option)
                             Fieldslib.Field.t_with_perm ->
                             Submit_order.t -> Price.t option -> 'o2) ->
        trailing_percent:('o2 ->
                          ([< `Read | `Set_and_create ], Submit_order.t,
                           float option)
                          Fieldslib.Field.t_with_perm ->
                          Submit_order.t -> float option -> 'p2) ->
        scale_initial_level_size:('p2 ->
                                  ([< `Read | `Set_and_create ],
                                   Submit_order.t, Volume.t option)
                                  Fieldslib.Field.t_with_perm ->
                                  Submit_order.t -> Volume.t option -> 'q2) ->
        scale_subsequent_level_size:('q2 ->
                                     ([< `Read | `Set_and_create ],
                                      Submit_order.t, Volume.t option)
                                     Fieldslib.Field.t_with_perm ->
                                     Submit_order.t -> Volume.t option -> 'r2) ->
        scale_price_increment:('r2 ->
                               ([< `Read | `Set_and_create ], Submit_order.t,
                                float option)
                               Fieldslib.Field.t_with_perm ->
                               Submit_order.t -> float option -> 's2) ->
        hedge_type:('s2 ->
                    ([< `Read | `Set_and_create ], Submit_order.t,
                     Raw_order.Hedge_type.t option)
                    Fieldslib.Field.t_with_perm ->
                    Submit_order.t -> Raw_order.Hedge_type.t option -> 't2) ->
        opt_out_smart_routing:('t2 ->
                               ([< `Read | `Set_and_create ], Submit_order.t,
                                bool)
                               Fieldslib.Field.t_with_perm ->
                               Submit_order.t -> bool -> 'u2) ->
        clearing_account:('u2 ->
                          ([< `Read | `Set_and_create ], Submit_order.t,
                           string option)
                          Fieldslib.Field.t_with_perm ->
                          Submit_order.t -> string option -> 'v2) ->
        clearing_intent:('v2 ->
                         ([< `Read | `Set_and_create ], Submit_order.t,
                          Raw_order.Clearing_intent.t option)
                         Fieldslib.Field.t_with_perm ->
                         Submit_order.t ->
                         Raw_order.Clearing_intent.t option -> 'w2) ->
        not_held:('w2 ->
                  ([< `Read | `Set_and_create ], Submit_order.t, bool)
                  Fieldslib.Field.t_with_perm ->
                  Submit_order.t -> bool -> 'x2) ->
        underlying_combo:('x2 ->
                          ([< `Read | `Set_and_create ], Submit_order.t,
                           bool)
                          Fieldslib.Field.t_with_perm ->
                          Submit_order.t -> bool -> 'y2) ->
        algo_strategy:('y2 ->
                       ([< `Read | `Set_and_create ], Submit_order.t,
                        string option)
                       Fieldslib.Field.t_with_perm ->
                       Submit_order.t -> string option -> 'z2) ->
        request_pre_trade_information:('z2 ->
                                       ([< `Read | `Set_and_create ],
                                        Submit_order.t, bool)
                                       Fieldslib.Field.t_with_perm ->
                                       Submit_order.t -> bool -> 'a3) ->
        'a3
    end
end