sig
  val names : string list
  val combo_legs :
    ([< `Read | `Set_and_create ], Raw_contract.t, int)
    Fieldslib.Field.t_with_perm
  val sec_id :
    ([< `Read | `Set_and_create ], Raw_contract.t, Security_id.Id.t option)
    Fieldslib.Field.t_with_perm
  val sec_id_type :
    ([< `Read | `Set_and_create ], Raw_contract.t, Security_id.Type.t option)
    Fieldslib.Field.t_with_perm
  val include_expired :
    ([< `Read | `Set_and_create ], Raw_contract.t, bool)
    Fieldslib.Field.t_with_perm
  val local_symbol :
    ([< `Read | `Set_and_create ], Raw_contract.t, Symbol.t option)
    Fieldslib.Field.t_with_perm
  val currency :
    ([< `Read | `Set_and_create ], Raw_contract.t, Currency.t)
    Fieldslib.Field.t_with_perm
  val listing_exchange :
    ([< `Read | `Set_and_create ], Raw_contract.t, Exchange.t option)
    Fieldslib.Field.t_with_perm
  val exchange :
    ([< `Read | `Set_and_create ], Raw_contract.t, Exchange.t)
    Fieldslib.Field.t_with_perm
  val multiplier :
    ([< `Read | `Set_and_create ], Raw_contract.t, int option)
    Fieldslib.Field.t_with_perm
  val option_right :
    ([< `Read | `Set_and_create ], Raw_contract.t, Option_right.t option)
    Fieldslib.Field.t_with_perm
  val strike :
    ([< `Read | `Set_and_create ], Raw_contract.t, Price.t option)
    Fieldslib.Field.t_with_perm
  val expiry :
    ([< `Read | `Set_and_create ], Raw_contract.t, Core.Std.Date.t option)
    Fieldslib.Field.t_with_perm
  val sec_type :
    ([< `Read | `Set_and_create ], Raw_contract.t, string)
    Fieldslib.Field.t_with_perm
  val symbol :
    ([< `Read | `Set_and_create ], Raw_contract.t, Symbol.t)
    Fieldslib.Field.t_with_perm
  val con_id :
    ([< `Read | `Set_and_create ], Raw_contract.t, Contract_id.t option)
    Fieldslib.Field.t_with_perm
  val make_creator :
    con_id:(([< `Read | `Set_and_create ], Raw_contract.t,
             Contract_id.t option)
            Fieldslib.Field.t_with_perm ->
            '-> ('-> Contract_id.t option) * 'c) ->
    symbol:(([< `Read | `Set_and_create ], Raw_contract.t, Symbol.t)
            Fieldslib.Field.t_with_perm -> '-> ('-> Symbol.t) * 'd) ->
    sec_type:(([< `Read | `Set_and_create ], Raw_contract.t, string)
              Fieldslib.Field.t_with_perm -> '-> ('-> string) * 'e) ->
    expiry:(([< `Read | `Set_and_create ], Raw_contract.t,
             Core.Std.Date.t option)
            Fieldslib.Field.t_with_perm ->
            '-> ('-> Core.Std.Date.t option) * 'f) ->
    strike:(([< `Read | `Set_and_create ], Raw_contract.t, Price.t option)
            Fieldslib.Field.t_with_perm -> '-> ('-> Price.t option) * 'g) ->
    option_right:(([< `Read | `Set_and_create ], Raw_contract.t,
                   Option_right.t option)
                  Fieldslib.Field.t_with_perm ->
                  '-> ('-> Option_right.t option) * 'h) ->
    multiplier:(([< `Read | `Set_and_create ], Raw_contract.t, int option)
                Fieldslib.Field.t_with_perm -> '-> ('-> int option) * 'i) ->
    exchange:(([< `Read | `Set_and_create ], Raw_contract.t, Exchange.t)
              Fieldslib.Field.t_with_perm -> '-> ('-> Exchange.t) * 'j) ->
    listing_exchange:(([< `Read | `Set_and_create ], Raw_contract.t,
                       Exchange.t option)
                      Fieldslib.Field.t_with_perm ->
                      '-> ('-> Exchange.t option) * 'k) ->
    currency:(([< `Read | `Set_and_create ], Raw_contract.t, Currency.t)
              Fieldslib.Field.t_with_perm -> '-> ('-> Currency.t) * 'l) ->
    local_symbol:(([< `Read | `Set_and_create ], Raw_contract.t,
                   Symbol.t option)
                  Fieldslib.Field.t_with_perm ->
                  '-> ('-> Symbol.t option) * 'm) ->
    include_expired:(([< `Read | `Set_and_create ], Raw_contract.t, bool)
                     Fieldslib.Field.t_with_perm -> '-> ('-> bool) * 'n) ->
    sec_id_type:(([< `Read | `Set_and_create ], Raw_contract.t,
                  Security_id.Type.t option)
                 Fieldslib.Field.t_with_perm ->
                 '-> ('-> Security_id.Type.t option) * 'o) ->
    sec_id:(([< `Read | `Set_and_create ], Raw_contract.t,
             Security_id.Id.t option)
            Fieldslib.Field.t_with_perm ->
            '-> ('-> Security_id.Id.t option) * 'p) ->
    combo_legs:(([< `Read | `Set_and_create ], Raw_contract.t, int)
                Fieldslib.Field.t_with_perm -> '-> ('-> int) * 'q) ->
    '-> ('-> Raw_contract.t) * 'q
  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 ->
    include_expired:bool ->
    sec_id_type:Security_id.Type.t option ->
    sec_id:Security_id.Id.t option -> combo_legs:int -> Raw_contract.t
  val map :
    con_id:(([< `Read | `Set_and_create ], Raw_contract.t,
             Contract_id.t option)
            Fieldslib.Field.t_with_perm -> Contract_id.t option) ->
    symbol:(([< `Read | `Set_and_create ], Raw_contract.t, Symbol.t)
            Fieldslib.Field.t_with_perm -> Symbol.t) ->
    sec_type:(([< `Read | `Set_and_create ], Raw_contract.t, string)
              Fieldslib.Field.t_with_perm -> string) ->
    expiry:(([< `Read | `Set_and_create ], Raw_contract.t,
             Core.Std.Date.t option)
            Fieldslib.Field.t_with_perm -> Core.Std.Date.t option) ->
    strike:(([< `Read | `Set_and_create ], Raw_contract.t, Price.t option)
            Fieldslib.Field.t_with_perm -> Price.t option) ->
    option_right:(([< `Read | `Set_and_create ], Raw_contract.t,
                   Option_right.t option)
                  Fieldslib.Field.t_with_perm -> Option_right.t option) ->
    multiplier:(([< `Read | `Set_and_create ], Raw_contract.t, int option)
                Fieldslib.Field.t_with_perm -> int option) ->
    exchange:(([< `Read | `Set_and_create ], Raw_contract.t, Exchange.t)
              Fieldslib.Field.t_with_perm -> Exchange.t) ->
    listing_exchange:(([< `Read | `Set_and_create ], Raw_contract.t,
                       Exchange.t option)
                      Fieldslib.Field.t_with_perm -> Exchange.t option) ->
    currency:(([< `Read | `Set_and_create ], Raw_contract.t, Currency.t)
              Fieldslib.Field.t_with_perm -> Currency.t) ->
    local_symbol:(([< `Read | `Set_and_create ], Raw_contract.t,
                   Symbol.t option)
                  Fieldslib.Field.t_with_perm -> Symbol.t option) ->
    include_expired:(([< `Read | `Set_and_create ], Raw_contract.t, bool)
                     Fieldslib.Field.t_with_perm -> bool) ->
    sec_id_type:(([< `Read | `Set_and_create ], Raw_contract.t,
                  Security_id.Type.t option)
                 Fieldslib.Field.t_with_perm -> Security_id.Type.t option) ->
    sec_id:(([< `Read | `Set_and_create ], Raw_contract.t,
             Security_id.Id.t option)
            Fieldslib.Field.t_with_perm -> Security_id.Id.t option) ->
    combo_legs:(([< `Read | `Set_and_create ], Raw_contract.t, int)
                Fieldslib.Field.t_with_perm -> int) ->
    Raw_contract.t
  val iter :
    con_id:(([< `Read | `Set_and_create ], Raw_contract.t,
             Contract_id.t option)
            Fieldslib.Field.t_with_perm -> 'a) ->
    symbol:(([< `Read | `Set_and_create ], Raw_contract.t, Symbol.t)
            Fieldslib.Field.t_with_perm -> 'b) ->
    sec_type:(([< `Read | `Set_and_create ], Raw_contract.t, string)
              Fieldslib.Field.t_with_perm -> 'c) ->
    expiry:(([< `Read | `Set_and_create ], Raw_contract.t,
             Core.Std.Date.t option)
            Fieldslib.Field.t_with_perm -> 'd) ->
    strike:(([< `Read | `Set_and_create ], Raw_contract.t, Price.t option)
            Fieldslib.Field.t_with_perm -> 'e) ->
    option_right:(([< `Read | `Set_and_create ], Raw_contract.t,
                   Option_right.t option)
                  Fieldslib.Field.t_with_perm -> 'f) ->
    multiplier:(([< `Read | `Set_and_create ], Raw_contract.t, int option)
                Fieldslib.Field.t_with_perm -> 'g) ->
    exchange:(([< `Read | `Set_and_create ], Raw_contract.t, Exchange.t)
              Fieldslib.Field.t_with_perm -> 'h) ->
    listing_exchange:(([< `Read | `Set_and_create ], Raw_contract.t,
                       Exchange.t option)
                      Fieldslib.Field.t_with_perm -> 'i) ->
    currency:(([< `Read | `Set_and_create ], Raw_contract.t, Currency.t)
              Fieldslib.Field.t_with_perm -> 'j) ->
    local_symbol:(([< `Read | `Set_and_create ], Raw_contract.t,
                   Symbol.t option)
                  Fieldslib.Field.t_with_perm -> 'k) ->
    include_expired:(([< `Read | `Set_and_create ], Raw_contract.t, bool)
                     Fieldslib.Field.t_with_perm -> 'l) ->
    sec_id_type:(([< `Read | `Set_and_create ], Raw_contract.t,
                  Security_id.Type.t option)
                 Fieldslib.Field.t_with_perm -> 'm) ->
    sec_id:(([< `Read | `Set_and_create ], Raw_contract.t,
             Security_id.Id.t option)
            Fieldslib.Field.t_with_perm -> 'n) ->
    combo_legs:(([< `Read | `Set_and_create ], Raw_contract.t, int)
                Fieldslib.Field.t_with_perm -> 'o) ->
    'o
  val fold :
    init:'->
    con_id:('->
            ([< `Read | `Set_and_create ], Raw_contract.t,
             Contract_id.t option)
            Fieldslib.Field.t_with_perm -> 'b) ->
    symbol:('->
            ([< `Read | `Set_and_create ], Raw_contract.t, Symbol.t)
            Fieldslib.Field.t_with_perm -> 'c) ->
    sec_type:('->
              ([< `Read | `Set_and_create ], Raw_contract.t, string)
              Fieldslib.Field.t_with_perm -> 'd) ->
    expiry:('->
            ([< `Read | `Set_and_create ], Raw_contract.t,
             Core.Std.Date.t option)
            Fieldslib.Field.t_with_perm -> 'e) ->
    strike:('->
            ([< `Read | `Set_and_create ], Raw_contract.t, Price.t option)
            Fieldslib.Field.t_with_perm -> 'f) ->
    option_right:('->
                  ([< `Read | `Set_and_create ], Raw_contract.t,
                   Option_right.t option)
                  Fieldslib.Field.t_with_perm -> 'g) ->
    multiplier:('->
                ([< `Read | `Set_and_create ], Raw_contract.t, int option)
                Fieldslib.Field.t_with_perm -> 'h) ->
    exchange:('->
              ([< `Read | `Set_and_create ], Raw_contract.t, Exchange.t)
              Fieldslib.Field.t_with_perm -> 'i) ->
    listing_exchange:('->
                      ([< `Read | `Set_and_create ], Raw_contract.t,
                       Exchange.t option)
                      Fieldslib.Field.t_with_perm -> 'j) ->
    currency:('->
              ([< `Read | `Set_and_create ], Raw_contract.t, Currency.t)
              Fieldslib.Field.t_with_perm -> 'k) ->
    local_symbol:('->
                  ([< `Read | `Set_and_create ], Raw_contract.t,
                   Symbol.t option)
                  Fieldslib.Field.t_with_perm -> 'l) ->
    include_expired:('->
                     ([< `Read | `Set_and_create ], Raw_contract.t, bool)
                     Fieldslib.Field.t_with_perm -> 'm) ->
    sec_id_type:('->
                 ([< `Read | `Set_and_create ], Raw_contract.t,
                  Security_id.Type.t option)
                 Fieldslib.Field.t_with_perm -> 'n) ->
    sec_id:('->
            ([< `Read | `Set_and_create ], Raw_contract.t,
             Security_id.Id.t option)
            Fieldslib.Field.t_with_perm -> 'o) ->
    combo_legs:('->
                ([< `Read | `Set_and_create ], Raw_contract.t, int)
                Fieldslib.Field.t_with_perm -> 'p) ->
    'p
  val map_poly :
    ([< `Read | `Set_and_create ], Raw_contract.t, 'a) Fieldslib.Field.user ->
    'a list
  val for_all :
    con_id:(([< `Read | `Set_and_create ], Raw_contract.t,
             Contract_id.t option)
            Fieldslib.Field.t_with_perm -> bool) ->
    symbol:(([< `Read | `Set_and_create ], Raw_contract.t, Symbol.t)
            Fieldslib.Field.t_with_perm -> bool) ->
    sec_type:(([< `Read | `Set_and_create ], Raw_contract.t, string)
              Fieldslib.Field.t_with_perm -> bool) ->
    expiry:(([< `Read | `Set_and_create ], Raw_contract.t,
             Core.Std.Date.t option)
            Fieldslib.Field.t_with_perm -> bool) ->
    strike:(([< `Read | `Set_and_create ], Raw_contract.t, Price.t option)
            Fieldslib.Field.t_with_perm -> bool) ->
    option_right:(([< `Read | `Set_and_create ], Raw_contract.t,
                   Option_right.t option)
                  Fieldslib.Field.t_with_perm -> bool) ->
    multiplier:(([< `Read | `Set_and_create ], Raw_contract.t, int option)
                Fieldslib.Field.t_with_perm -> bool) ->
    exchange:(([< `Read | `Set_and_create ], Raw_contract.t, Exchange.t)
              Fieldslib.Field.t_with_perm -> bool) ->
    listing_exchange:(([< `Read | `Set_and_create ], Raw_contract.t,
                       Exchange.t option)
                      Fieldslib.Field.t_with_perm -> bool) ->
    currency:(([< `Read | `Set_and_create ], Raw_contract.t, Currency.t)
              Fieldslib.Field.t_with_perm -> bool) ->
    local_symbol:(([< `Read | `Set_and_create ], Raw_contract.t,
                   Symbol.t option)
                  Fieldslib.Field.t_with_perm -> bool) ->
    include_expired:(([< `Read | `Set_and_create ], Raw_contract.t, bool)
                     Fieldslib.Field.t_with_perm -> bool) ->
    sec_id_type:(([< `Read | `Set_and_create ], Raw_contract.t,
                  Security_id.Type.t option)
                 Fieldslib.Field.t_with_perm -> bool) ->
    sec_id:(([< `Read | `Set_and_create ], Raw_contract.t,
             Security_id.Id.t option)
            Fieldslib.Field.t_with_perm -> bool) ->
    combo_legs:(([< `Read | `Set_and_create ], Raw_contract.t, int)
                Fieldslib.Field.t_with_perm -> bool) ->
    bool
  val exists :
    con_id:(([< `Read | `Set_and_create ], Raw_contract.t,
             Contract_id.t option)
            Fieldslib.Field.t_with_perm -> bool) ->
    symbol:(([< `Read | `Set_and_create ], Raw_contract.t, Symbol.t)
            Fieldslib.Field.t_with_perm -> bool) ->
    sec_type:(([< `Read | `Set_and_create ], Raw_contract.t, string)
              Fieldslib.Field.t_with_perm -> bool) ->
    expiry:(([< `Read | `Set_and_create ], Raw_contract.t,
             Core.Std.Date.t option)
            Fieldslib.Field.t_with_perm -> bool) ->
    strike:(([< `Read | `Set_and_create ], Raw_contract.t, Price.t option)
            Fieldslib.Field.t_with_perm -> bool) ->
    option_right:(([< `Read | `Set_and_create ], Raw_contract.t,
                   Option_right.t option)
                  Fieldslib.Field.t_with_perm -> bool) ->
    multiplier:(([< `Read | `Set_and_create ], Raw_contract.t, int option)
                Fieldslib.Field.t_with_perm -> bool) ->
    exchange:(([< `Read | `Set_and_create ], Raw_contract.t, Exchange.t)
              Fieldslib.Field.t_with_perm -> bool) ->
    listing_exchange:(([< `Read | `Set_and_create ], Raw_contract.t,
                       Exchange.t option)
                      Fieldslib.Field.t_with_perm -> bool) ->
    currency:(([< `Read | `Set_and_create ], Raw_contract.t, Currency.t)
              Fieldslib.Field.t_with_perm -> bool) ->
    local_symbol:(([< `Read | `Set_and_create ], Raw_contract.t,
                   Symbol.t option)
                  Fieldslib.Field.t_with_perm -> bool) ->
    include_expired:(([< `Read | `Set_and_create ], Raw_contract.t, bool)
                     Fieldslib.Field.t_with_perm -> bool) ->
    sec_id_type:(([< `Read | `Set_and_create ], Raw_contract.t,
                  Security_id.Type.t option)
                 Fieldslib.Field.t_with_perm -> bool) ->
    sec_id:(([< `Read | `Set_and_create ], Raw_contract.t,
             Security_id.Id.t option)
            Fieldslib.Field.t_with_perm -> bool) ->
    combo_legs:(([< `Read | `Set_and_create ], Raw_contract.t, int)
                Fieldslib.Field.t_with_perm -> bool) ->
    bool
  val to_list :
    con_id:(([< `Read | `Set_and_create ], Raw_contract.t,
             Contract_id.t option)
            Fieldslib.Field.t_with_perm -> 'a) ->
    symbol:(([< `Read | `Set_and_create ], Raw_contract.t, Symbol.t)
            Fieldslib.Field.t_with_perm -> 'a) ->
    sec_type:(([< `Read | `Set_and_create ], Raw_contract.t, string)
              Fieldslib.Field.t_with_perm -> 'a) ->
    expiry:(([< `Read | `Set_and_create ], Raw_contract.t,
             Core.Std.Date.t option)
            Fieldslib.Field.t_with_perm -> 'a) ->
    strike:(([< `Read | `Set_and_create ], Raw_contract.t, Price.t option)
            Fieldslib.Field.t_with_perm -> 'a) ->
    option_right:(([< `Read | `Set_and_create ], Raw_contract.t,
                   Option_right.t option)
                  Fieldslib.Field.t_with_perm -> 'a) ->
    multiplier:(([< `Read | `Set_and_create ], Raw_contract.t, int option)
                Fieldslib.Field.t_with_perm -> 'a) ->
    exchange:(([< `Read | `Set_and_create ], Raw_contract.t, Exchange.t)
              Fieldslib.Field.t_with_perm -> 'a) ->
    listing_exchange:(([< `Read | `Set_and_create ], Raw_contract.t,
                       Exchange.t option)
                      Fieldslib.Field.t_with_perm -> 'a) ->
    currency:(([< `Read | `Set_and_create ], Raw_contract.t, Currency.t)
              Fieldslib.Field.t_with_perm -> 'a) ->
    local_symbol:(([< `Read | `Set_and_create ], Raw_contract.t,
                   Symbol.t option)
                  Fieldslib.Field.t_with_perm -> 'a) ->
    include_expired:(([< `Read | `Set_and_create ], Raw_contract.t, bool)
                     Fieldslib.Field.t_with_perm -> 'a) ->
    sec_id_type:(([< `Read | `Set_and_create ], Raw_contract.t,
                  Security_id.Type.t option)
                 Fieldslib.Field.t_with_perm -> 'a) ->
    sec_id:(([< `Read | `Set_and_create ], Raw_contract.t,
             Security_id.Id.t option)
            Fieldslib.Field.t_with_perm -> 'a) ->
    combo_legs:(([< `Read | `Set_and_create ], Raw_contract.t, int)
                Fieldslib.Field.t_with_perm -> 'a) ->
    'a list
  module Direct :
    sig
      val iter :
        Raw_contract.t ->
        con_id:(([< `Read | `Set_and_create ], Raw_contract.t,
                 Contract_id.t option)
                Fieldslib.Field.t_with_perm ->
                Raw_contract.t -> Contract_id.t option -> 'a) ->
        symbol:(([< `Read | `Set_and_create ], Raw_contract.t, Symbol.t)
                Fieldslib.Field.t_with_perm ->
                Raw_contract.t -> Symbol.t -> 'b) ->
        sec_type:(([< `Read | `Set_and_create ], Raw_contract.t, string)
                  Fieldslib.Field.t_with_perm ->
                  Raw_contract.t -> string -> 'c) ->
        expiry:(([< `Read | `Set_and_create ], Raw_contract.t,
                 Core.Std.Date.t option)
                Fieldslib.Field.t_with_perm ->
                Raw_contract.t -> Core.Std.Date.t option -> 'd) ->
        strike:(([< `Read | `Set_and_create ], Raw_contract.t,
                 Price.t option)
                Fieldslib.Field.t_with_perm ->
                Raw_contract.t -> Price.t option -> 'e) ->
        option_right:(([< `Read | `Set_and_create ], Raw_contract.t,
                       Option_right.t option)
                      Fieldslib.Field.t_with_perm ->
                      Raw_contract.t -> Option_right.t option -> 'f) ->
        multiplier:(([< `Read | `Set_and_create ], Raw_contract.t,
                     int option)
                    Fieldslib.Field.t_with_perm ->
                    Raw_contract.t -> int option -> 'g) ->
        exchange:(([< `Read | `Set_and_create ], Raw_contract.t, Exchange.t)
                  Fieldslib.Field.t_with_perm ->
                  Raw_contract.t -> Exchange.t -> 'h) ->
        listing_exchange:(([< `Read | `Set_and_create ], Raw_contract.t,
                           Exchange.t option)
                          Fieldslib.Field.t_with_perm ->
                          Raw_contract.t -> Exchange.t option -> 'i) ->
        currency:(([< `Read | `Set_and_create ], Raw_contract.t, Currency.t)
                  Fieldslib.Field.t_with_perm ->
                  Raw_contract.t -> Currency.t -> 'j) ->
        local_symbol:(([< `Read | `Set_and_create ], Raw_contract.t,
                       Symbol.t option)
                      Fieldslib.Field.t_with_perm ->
                      Raw_contract.t -> Symbol.t option -> 'k) ->
        include_expired:(([< `Read | `Set_and_create ], Raw_contract.t, bool)
                         Fieldslib.Field.t_with_perm ->
                         Raw_contract.t -> bool -> 'l) ->
        sec_id_type:(([< `Read | `Set_and_create ], Raw_contract.t,
                      Security_id.Type.t option)
                     Fieldslib.Field.t_with_perm ->
                     Raw_contract.t -> Security_id.Type.t option -> 'm) ->
        sec_id:(([< `Read | `Set_and_create ], Raw_contract.t,
                 Security_id.Id.t option)
                Fieldslib.Field.t_with_perm ->
                Raw_contract.t -> Security_id.Id.t option -> 'n) ->
        combo_legs:(([< `Read | `Set_and_create ], Raw_contract.t, int)
                    Fieldslib.Field.t_with_perm ->
                    Raw_contract.t -> int -> 'o) ->
        'o
      val fold :
        Raw_contract.t ->
        init:'->
        con_id:('->
                ([< `Read | `Set_and_create ], Raw_contract.t,
                 Contract_id.t option)
                Fieldslib.Field.t_with_perm ->
                Raw_contract.t -> Contract_id.t option -> 'b) ->
        symbol:('->
                ([< `Read | `Set_and_create ], Raw_contract.t, Symbol.t)
                Fieldslib.Field.t_with_perm ->
                Raw_contract.t -> Symbol.t -> 'c) ->
        sec_type:('->
                  ([< `Read | `Set_and_create ], Raw_contract.t, string)
                  Fieldslib.Field.t_with_perm ->
                  Raw_contract.t -> string -> 'd) ->
        expiry:('->
                ([< `Read | `Set_and_create ], Raw_contract.t,
                 Core.Std.Date.t option)
                Fieldslib.Field.t_with_perm ->
                Raw_contract.t -> Core.Std.Date.t option -> 'e) ->
        strike:('->
                ([< `Read | `Set_and_create ], Raw_contract.t,
                 Price.t option)
                Fieldslib.Field.t_with_perm ->
                Raw_contract.t -> Price.t option -> 'f) ->
        option_right:('->
                      ([< `Read | `Set_and_create ], Raw_contract.t,
                       Option_right.t option)
                      Fieldslib.Field.t_with_perm ->
                      Raw_contract.t -> Option_right.t option -> 'g) ->
        multiplier:('->
                    ([< `Read | `Set_and_create ], Raw_contract.t,
                     int option)
                    Fieldslib.Field.t_with_perm ->
                    Raw_contract.t -> int option -> 'h) ->
        exchange:('->
                  ([< `Read | `Set_and_create ], Raw_contract.t, Exchange.t)
                  Fieldslib.Field.t_with_perm ->
                  Raw_contract.t -> Exchange.t -> 'i) ->
        listing_exchange:('->
                          ([< `Read | `Set_and_create ], Raw_contract.t,
                           Exchange.t option)
                          Fieldslib.Field.t_with_perm ->
                          Raw_contract.t -> Exchange.t option -> 'j) ->
        currency:('->
                  ([< `Read | `Set_and_create ], Raw_contract.t, Currency.t)
                  Fieldslib.Field.t_with_perm ->
                  Raw_contract.t -> Currency.t -> 'k) ->
        local_symbol:('->
                      ([< `Read | `Set_and_create ], Raw_contract.t,
                       Symbol.t option)
                      Fieldslib.Field.t_with_perm ->
                      Raw_contract.t -> Symbol.t option -> 'l) ->
        include_expired:('->
                         ([< `Read | `Set_and_create ], Raw_contract.t, bool)
                         Fieldslib.Field.t_with_perm ->
                         Raw_contract.t -> bool -> 'm) ->
        sec_id_type:('->
                     ([< `Read | `Set_and_create ], Raw_contract.t,
                      Security_id.Type.t option)
                     Fieldslib.Field.t_with_perm ->
                     Raw_contract.t -> Security_id.Type.t option -> 'n) ->
        sec_id:('->
                ([< `Read | `Set_and_create ], Raw_contract.t,
                 Security_id.Id.t option)
                Fieldslib.Field.t_with_perm ->
                Raw_contract.t -> Security_id.Id.t option -> 'o) ->
        combo_legs:('->
                    ([< `Read | `Set_and_create ], Raw_contract.t, int)
                    Fieldslib.Field.t_with_perm ->
                    Raw_contract.t -> int -> 'p) ->
        'p
    end
end