sig
  type t = private {
    contract : Raw_contract.t;
    market_name : string;
    trading_class : string;
    min_tick : float;
    order_types : string list;
    valid_exchanges : Exchange.t list;
    price_magnifier : int;
    underlying_id : int;
    long_name : string;
    contract_month : string;
    industry : string;
    category : string;
    subcategory : string;
    time_zone : Core.Std.Time.Zone.t option;
    trading_hours : Trading_times.t list;
    liquid_hours : Trading_times.t list;
  }
  val liquid_hours : Response.Contract_data.t -> Trading_times.t list
  val trading_hours : Response.Contract_data.t -> Trading_times.t list
  val time_zone : Response.Contract_data.t -> Core.Std.Time.Zone.t option
  val subcategory : Response.Contract_data.t -> string
  val category : Response.Contract_data.t -> string
  val industry : Response.Contract_data.t -> string
  val contract_month : Response.Contract_data.t -> string
  val long_name : Response.Contract_data.t -> string
  val underlying_id : Response.Contract_data.t -> int
  val price_magnifier : Response.Contract_data.t -> int
  val valid_exchanges : Response.Contract_data.t -> Exchange.t list
  val order_types : Response.Contract_data.t -> string list
  val min_tick : Response.Contract_data.t -> float
  val trading_class : Response.Contract_data.t -> string
  val market_name : Response.Contract_data.t -> string
  module Fields :
    sig
      val names : string list
      val liquid_hours :
        (Response.Contract_data.t, Trading_times.t list)
        Fieldslib.Field.readonly_t
      val trading_hours :
        (Response.Contract_data.t, Trading_times.t list)
        Fieldslib.Field.readonly_t
      val time_zone :
        (Response.Contract_data.t, Core.Std.Time.Zone.t option)
        Fieldslib.Field.readonly_t
      val subcategory :
        (Response.Contract_data.t, string) Fieldslib.Field.readonly_t
      val category :
        (Response.Contract_data.t, string) Fieldslib.Field.readonly_t
      val industry :
        (Response.Contract_data.t, string) Fieldslib.Field.readonly_t
      val contract_month :
        (Response.Contract_data.t, string) Fieldslib.Field.readonly_t
      val long_name :
        (Response.Contract_data.t, string) Fieldslib.Field.readonly_t
      val underlying_id :
        (Response.Contract_data.t, int) Fieldslib.Field.readonly_t
      val price_magnifier :
        (Response.Contract_data.t, int) Fieldslib.Field.readonly_t
      val valid_exchanges :
        (Response.Contract_data.t, Exchange.t list)
        Fieldslib.Field.readonly_t
      val order_types :
        (Response.Contract_data.t, string list) Fieldslib.Field.readonly_t
      val min_tick :
        (Response.Contract_data.t, float) Fieldslib.Field.readonly_t
      val trading_class :
        (Response.Contract_data.t, string) Fieldslib.Field.readonly_t
      val market_name :
        (Response.Contract_data.t, string) Fieldslib.Field.readonly_t
      val contract :
        (Response.Contract_data.t, Raw_contract.t) Fieldslib.Field.readonly_t
      val fold :
        init:'acc__ ->
        contract:('acc__ ->
                  (Response.Contract_data.t, Raw_contract.t)
                  Fieldslib.Field.readonly_t -> 'acc__) ->
        market_name:('acc__ ->
                     (Response.Contract_data.t, string)
                     Fieldslib.Field.readonly_t -> 'acc__) ->
        trading_class:('acc__ ->
                       (Response.Contract_data.t, string)
                       Fieldslib.Field.readonly_t -> 'acc__) ->
        min_tick:('acc__ ->
                  (Response.Contract_data.t, float)
                  Fieldslib.Field.readonly_t -> 'acc__) ->
        order_types:('acc__ ->
                     (Response.Contract_data.t, string list)
                     Fieldslib.Field.readonly_t -> 'acc__) ->
        valid_exchanges:('acc__ ->
                         (Response.Contract_data.t, Exchange.t list)
                         Fieldslib.Field.readonly_t -> 'acc__) ->
        price_magnifier:('acc__ ->
                         (Response.Contract_data.t, int)
                         Fieldslib.Field.readonly_t -> 'acc__) ->
        underlying_id:('acc__ ->
                       (Response.Contract_data.t, int)
                       Fieldslib.Field.readonly_t -> 'acc__) ->
        long_name:('acc__ ->
                   (Response.Contract_data.t, string)
                   Fieldslib.Field.readonly_t -> 'acc__) ->
        contract_month:('acc__ ->
                        (Response.Contract_data.t, string)
                        Fieldslib.Field.readonly_t -> 'acc__) ->
        industry:('acc__ ->
                  (Response.Contract_data.t, string)
                  Fieldslib.Field.readonly_t -> 'acc__) ->
        category:('acc__ ->
                  (Response.Contract_data.t, string)
                  Fieldslib.Field.readonly_t -> 'acc__) ->
        subcategory:('acc__ ->
                     (Response.Contract_data.t, string)
                     Fieldslib.Field.readonly_t -> 'acc__) ->
        time_zone:('acc__ ->
                   (Response.Contract_data.t, Core.Std.Time.Zone.t option)
                   Fieldslib.Field.readonly_t -> 'acc__) ->
        trading_hours:('acc__ ->
                       (Response.Contract_data.t, Trading_times.t list)
                       Fieldslib.Field.readonly_t -> 'acc__) ->
        liquid_hours:('acc__ ->
                      (Response.Contract_data.t, Trading_times.t list)
                      Fieldslib.Field.readonly_t -> 'acc__) ->
        'acc__
      val iter :
        contract:((Response.Contract_data.t, Raw_contract.t)
                  Fieldslib.Field.readonly_t -> unit) ->
        market_name:((Response.Contract_data.t, string)
                     Fieldslib.Field.readonly_t -> unit) ->
        trading_class:((Response.Contract_data.t, string)
                       Fieldslib.Field.readonly_t -> unit) ->
        min_tick:((Response.Contract_data.t, float)
                  Fieldslib.Field.readonly_t -> unit) ->
        order_types:((Response.Contract_data.t, string list)
                     Fieldslib.Field.readonly_t -> unit) ->
        valid_exchanges:((Response.Contract_data.t, Exchange.t list)
                         Fieldslib.Field.readonly_t -> unit) ->
        price_magnifier:((Response.Contract_data.t, int)
                         Fieldslib.Field.readonly_t -> unit) ->
        underlying_id:((Response.Contract_data.t, int)
                       Fieldslib.Field.readonly_t -> unit) ->
        long_name:((Response.Contract_data.t, string)
                   Fieldslib.Field.readonly_t -> unit) ->
        contract_month:((Response.Contract_data.t, string)
                        Fieldslib.Field.readonly_t -> unit) ->
        industry:((Response.Contract_data.t, string)
                  Fieldslib.Field.readonly_t -> unit) ->
        category:((Response.Contract_data.t, string)
                  Fieldslib.Field.readonly_t -> unit) ->
        subcategory:((Response.Contract_data.t, string)
                     Fieldslib.Field.readonly_t -> unit) ->
        time_zone:((Response.Contract_data.t, Core.Std.Time.Zone.t option)
                   Fieldslib.Field.readonly_t -> unit) ->
        trading_hours:((Response.Contract_data.t, Trading_times.t list)
                       Fieldslib.Field.readonly_t -> unit) ->
        liquid_hours:((Response.Contract_data.t, Trading_times.t list)
                      Fieldslib.Field.readonly_t -> unit) ->
        unit
      val for_all :
        contract:((Response.Contract_data.t, Raw_contract.t)
                  Fieldslib.Field.readonly_t -> bool) ->
        market_name:((Response.Contract_data.t, string)
                     Fieldslib.Field.readonly_t -> bool) ->
        trading_class:((Response.Contract_data.t, string)
                       Fieldslib.Field.readonly_t -> bool) ->
        min_tick:((Response.Contract_data.t, float)
                  Fieldslib.Field.readonly_t -> bool) ->
        order_types:((Response.Contract_data.t, string list)
                     Fieldslib.Field.readonly_t -> bool) ->
        valid_exchanges:((Response.Contract_data.t, Exchange.t list)
                         Fieldslib.Field.readonly_t -> bool) ->
        price_magnifier:((Response.Contract_data.t, int)
                         Fieldslib.Field.readonly_t -> bool) ->
        underlying_id:((Response.Contract_data.t, int)
                       Fieldslib.Field.readonly_t -> bool) ->
        long_name:((Response.Contract_data.t, string)
                   Fieldslib.Field.readonly_t -> bool) ->
        contract_month:((Response.Contract_data.t, string)
                        Fieldslib.Field.readonly_t -> bool) ->
        industry:((Response.Contract_data.t, string)
                  Fieldslib.Field.readonly_t -> bool) ->
        category:((Response.Contract_data.t, string)
                  Fieldslib.Field.readonly_t -> bool) ->
        subcategory:((Response.Contract_data.t, string)
                     Fieldslib.Field.readonly_t -> bool) ->
        time_zone:((Response.Contract_data.t, Core.Std.Time.Zone.t option)
                   Fieldslib.Field.readonly_t -> bool) ->
        trading_hours:((Response.Contract_data.t, Trading_times.t list)
                       Fieldslib.Field.readonly_t -> bool) ->
        liquid_hours:((Response.Contract_data.t, Trading_times.t list)
                      Fieldslib.Field.readonly_t -> bool) ->
        bool
      val exists :
        contract:((Response.Contract_data.t, Raw_contract.t)
                  Fieldslib.Field.readonly_t -> bool) ->
        market_name:((Response.Contract_data.t, string)
                     Fieldslib.Field.readonly_t -> bool) ->
        trading_class:((Response.Contract_data.t, string)
                       Fieldslib.Field.readonly_t -> bool) ->
        min_tick:((Response.Contract_data.t, float)
                  Fieldslib.Field.readonly_t -> bool) ->
        order_types:((Response.Contract_data.t, string list)
                     Fieldslib.Field.readonly_t -> bool) ->
        valid_exchanges:((Response.Contract_data.t, Exchange.t list)
                         Fieldslib.Field.readonly_t -> bool) ->
        price_magnifier:((Response.Contract_data.t, int)
                         Fieldslib.Field.readonly_t -> bool) ->
        underlying_id:((Response.Contract_data.t, int)
                       Fieldslib.Field.readonly_t -> bool) ->
        long_name:((Response.Contract_data.t, string)
                   Fieldslib.Field.readonly_t -> bool) ->
        contract_month:((Response.Contract_data.t, string)
                        Fieldslib.Field.readonly_t -> bool) ->
        industry:((Response.Contract_data.t, string)
                  Fieldslib.Field.readonly_t -> bool) ->
        category:((Response.Contract_data.t, string)
                  Fieldslib.Field.readonly_t -> bool) ->
        subcategory:((Response.Contract_data.t, string)
                     Fieldslib.Field.readonly_t -> bool) ->
        time_zone:((Response.Contract_data.t, Core.Std.Time.Zone.t option)
                   Fieldslib.Field.readonly_t -> bool) ->
        trading_hours:((Response.Contract_data.t, Trading_times.t list)
                       Fieldslib.Field.readonly_t -> bool) ->
        liquid_hours:((Response.Contract_data.t, Trading_times.t list)
                      Fieldslib.Field.readonly_t -> bool) ->
        bool
      val to_list :
        contract:((Response.Contract_data.t, Raw_contract.t)
                  Fieldslib.Field.readonly_t -> 'elem__) ->
        market_name:((Response.Contract_data.t, string)
                     Fieldslib.Field.readonly_t -> 'elem__) ->
        trading_class:((Response.Contract_data.t, string)
                       Fieldslib.Field.readonly_t -> 'elem__) ->
        min_tick:((Response.Contract_data.t, float)
                  Fieldslib.Field.readonly_t -> 'elem__) ->
        order_types:((Response.Contract_data.t, string list)
                     Fieldslib.Field.readonly_t -> 'elem__) ->
        valid_exchanges:((Response.Contract_data.t, Exchange.t list)
                         Fieldslib.Field.readonly_t -> 'elem__) ->
        price_magnifier:((Response.Contract_data.t, int)
                         Fieldslib.Field.readonly_t -> 'elem__) ->
        underlying_id:((Response.Contract_data.t, int)
                       Fieldslib.Field.readonly_t -> 'elem__) ->
        long_name:((Response.Contract_data.t, string)
                   Fieldslib.Field.readonly_t -> 'elem__) ->
        contract_month:((Response.Contract_data.t, string)
                        Fieldslib.Field.readonly_t -> 'elem__) ->
        industry:((Response.Contract_data.t, string)
                  Fieldslib.Field.readonly_t -> 'elem__) ->
        category:((Response.Contract_data.t, string)
                  Fieldslib.Field.readonly_t -> 'elem__) ->
        subcategory:((Response.Contract_data.t, string)
                     Fieldslib.Field.readonly_t -> 'elem__) ->
        time_zone:((Response.Contract_data.t, Core.Std.Time.Zone.t option)
                   Fieldslib.Field.readonly_t -> 'elem__) ->
        trading_hours:((Response.Contract_data.t, Trading_times.t list)
                       Fieldslib.Field.readonly_t -> 'elem__) ->
        liquid_hours:((Response.Contract_data.t, Trading_times.t list)
                      Fieldslib.Field.readonly_t -> 'elem__) ->
        'elem__ list
      val map_poly :
        ([< `Read ], Response.Contract_data.t, 'x0) Fieldslib.Field.user ->
        'x0 list
      module Direct :
        sig
          val iter :
            Response.Contract_data.t ->
            contract:((Response.Contract_data.t, Raw_contract.t)
                      Fieldslib.Field.readonly_t ->
                      Response.Contract_data.t -> Raw_contract.t -> unit) ->
            market_name:((Response.Contract_data.t, string)
                         Fieldslib.Field.readonly_t ->
                         Response.Contract_data.t -> string -> unit) ->
            trading_class:((Response.Contract_data.t, string)
                           Fieldslib.Field.readonly_t ->
                           Response.Contract_data.t -> string -> unit) ->
            min_tick:((Response.Contract_data.t, float)
                      Fieldslib.Field.readonly_t ->
                      Response.Contract_data.t -> float -> unit) ->
            order_types:((Response.Contract_data.t, string list)
                         Fieldslib.Field.readonly_t ->
                         Response.Contract_data.t -> string list -> unit) ->
            valid_exchanges:((Response.Contract_data.t, Exchange.t list)
                             Fieldslib.Field.readonly_t ->
                             Response.Contract_data.t ->
                             Exchange.t list -> unit) ->
            price_magnifier:((Response.Contract_data.t, int)
                             Fieldslib.Field.readonly_t ->
                             Response.Contract_data.t -> int -> unit) ->
            underlying_id:((Response.Contract_data.t, int)
                           Fieldslib.Field.readonly_t ->
                           Response.Contract_data.t -> int -> unit) ->
            long_name:((Response.Contract_data.t, string)
                       Fieldslib.Field.readonly_t ->
                       Response.Contract_data.t -> string -> unit) ->
            contract_month:((Response.Contract_data.t, string)
                            Fieldslib.Field.readonly_t ->
                            Response.Contract_data.t -> string -> unit) ->
            industry:((Response.Contract_data.t, string)
                      Fieldslib.Field.readonly_t ->
                      Response.Contract_data.t -> string -> unit) ->
            category:((Response.Contract_data.t, string)
                      Fieldslib.Field.readonly_t ->
                      Response.Contract_data.t -> string -> unit) ->
            subcategory:((Response.Contract_data.t, string)
                         Fieldslib.Field.readonly_t ->
                         Response.Contract_data.t -> string -> unit) ->
            time_zone:((Response.Contract_data.t,
                        Core.Std.Time.Zone.t option)
                       Fieldslib.Field.readonly_t ->
                       Response.Contract_data.t ->
                       Core.Std.Time.Zone.t option -> unit) ->
            trading_hours:((Response.Contract_data.t, Trading_times.t list)
                           Fieldslib.Field.readonly_t ->
                           Response.Contract_data.t ->
                           Trading_times.t list -> unit) ->
            liquid_hours:((Response.Contract_data.t, Trading_times.t list)
                          Fieldslib.Field.readonly_t ->
                          Response.Contract_data.t ->
                          Trading_times.t list -> unit) ->
            unit
          val fold :
            Response.Contract_data.t ->
            init:'acc__ ->
            contract:('acc__ ->
                      (Response.Contract_data.t, Raw_contract.t)
                      Fieldslib.Field.readonly_t ->
                      Response.Contract_data.t -> Raw_contract.t -> 'acc__) ->
            market_name:('acc__ ->
                         (Response.Contract_data.t, string)
                         Fieldslib.Field.readonly_t ->
                         Response.Contract_data.t -> string -> 'acc__) ->
            trading_class:('acc__ ->
                           (Response.Contract_data.t, string)
                           Fieldslib.Field.readonly_t ->
                           Response.Contract_data.t -> string -> 'acc__) ->
            min_tick:('acc__ ->
                      (Response.Contract_data.t, float)
                      Fieldslib.Field.readonly_t ->
                      Response.Contract_data.t -> float -> 'acc__) ->
            order_types:('acc__ ->
                         (Response.Contract_data.t, string list)
                         Fieldslib.Field.readonly_t ->
                         Response.Contract_data.t -> string list -> 'acc__) ->
            valid_exchanges:('acc__ ->
                             (Response.Contract_data.t, Exchange.t list)
                             Fieldslib.Field.readonly_t ->
                             Response.Contract_data.t ->
                             Exchange.t list -> 'acc__) ->
            price_magnifier:('acc__ ->
                             (Response.Contract_data.t, int)
                             Fieldslib.Field.readonly_t ->
                             Response.Contract_data.t -> int -> 'acc__) ->
            underlying_id:('acc__ ->
                           (Response.Contract_data.t, int)
                           Fieldslib.Field.readonly_t ->
                           Response.Contract_data.t -> int -> 'acc__) ->
            long_name:('acc__ ->
                       (Response.Contract_data.t, string)
                       Fieldslib.Field.readonly_t ->
                       Response.Contract_data.t -> string -> 'acc__) ->
            contract_month:('acc__ ->
                            (Response.Contract_data.t, string)
                            Fieldslib.Field.readonly_t ->
                            Response.Contract_data.t -> string -> 'acc__) ->
            industry:('acc__ ->
                      (Response.Contract_data.t, string)
                      Fieldslib.Field.readonly_t ->
                      Response.Contract_data.t -> string -> 'acc__) ->
            category:('acc__ ->
                      (Response.Contract_data.t, string)
                      Fieldslib.Field.readonly_t ->
                      Response.Contract_data.t -> string -> 'acc__) ->
            subcategory:('acc__ ->
                         (Response.Contract_data.t, string)
                         Fieldslib.Field.readonly_t ->
                         Response.Contract_data.t -> string -> 'acc__) ->
            time_zone:('acc__ ->
                       (Response.Contract_data.t,
                        Core.Std.Time.Zone.t option)
                       Fieldslib.Field.readonly_t ->
                       Response.Contract_data.t ->
                       Core.Std.Time.Zone.t option -> 'acc__) ->
            trading_hours:('acc__ ->
                           (Response.Contract_data.t, Trading_times.t list)
                           Fieldslib.Field.readonly_t ->
                           Response.Contract_data.t ->
                           Trading_times.t list -> 'acc__) ->
            liquid_hours:('acc__ ->
                          (Response.Contract_data.t, Trading_times.t list)
                          Fieldslib.Field.readonly_t ->
                          Response.Contract_data.t ->
                          Trading_times.t list -> 'acc__) ->
            'acc__
        end
    end
  val unpickler : t Tws_prot.Unpickler.t
  val pickler : t Tws_prot.Pickler.t Core.Std.Only_in_test.t
  val ( = ) : t -> t -> bool
  val create :
    contract:[< Security_type.t ] Contract.t ->
    market_name:string ->
    trading_class:string ->
    min_tick:float ->
    order_types:string list ->
    valid_exchanges:Exchange.t list ->
    price_magnifier:int ->
    underlying_id:int ->
    long_name:string ->
    contract_month:string ->
    industry:string ->
    category:string ->
    subcategory:string ->
    time_zone:Core.Std.Time.Zone.t ->
    trading_hours:Trading_times.t list ->
    liquid_hours:Trading_times.t list -> Response.Contract_data.t
  val contract : Response.Contract_data.t -> [< Security_type.t ] Contract.t
  val regular_trading_times : Response.Contract_data.t -> Trading_times.t
  val extended_trading_times : Response.Contract_data.t -> Trading_times.t
  val t_of_sexp : Sexplib.Sexp.t -> Response.Contract_data.t
  val sexp_of_t : Response.Contract_data.t -> Sexplib.Sexp.t
end