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