sig
  module Side :
    sig
      type t = [ `bought | `sold ]
      val of_string : string -> t
      val to_string : t -> string
      val t_of_sexp : Sexplib.Sexp.t -> Response.Execution.Side.t
      val __t_of_sexp__ : Sexplib.Sexp.t -> Response.Execution.Side.t
      val sexp_of_t : Response.Execution.Side.t -> Sexplib.Sexp.t
    end
  type t = private {
    order_id : Order_id.t;
    contract : Raw_contract.t;
    exec_id : Execution_id.t;
    time : Core.Std.Time.t;
    account_code : Account_code.t;
    exchange : Exchange.t;
    side : Response.Execution.Side.t;
    volume : Volume.t;
    price : Price.t;
    permanent_id : int;
    client_id : Client_id.t;
    liquidation : int;
    cumulative_volume : Volume.t;
    average_price : Price.t;
    order_ref : string option;
  }
  val order_ref : Response.Execution.t -> string option
  val average_price : Response.Execution.t -> Price.t
  val cumulative_volume : Response.Execution.t -> Volume.t
  val liquidation : Response.Execution.t -> int
  val client_id : Response.Execution.t -> Client_id.t
  val permanent_id : Response.Execution.t -> int
  val price : Response.Execution.t -> Price.t
  val volume : Response.Execution.t -> Volume.t
  val side : Response.Execution.t -> Response.Execution.Side.t
  val exchange : Response.Execution.t -> Exchange.t
  val account_code : Response.Execution.t -> Account_code.t
  val time : Response.Execution.t -> Core.Std.Time.t
  val exec_id : Response.Execution.t -> Execution_id.t
  val order_id : Response.Execution.t -> Order_id.t
  module Fields :
    sig
      val names : string list
      val order_ref :
        (Response.Execution.t, string option) Fieldslib.Field.readonly_t
      val average_price :
        (Response.Execution.t, Price.t) Fieldslib.Field.readonly_t
      val cumulative_volume :
        (Response.Execution.t, Volume.t) Fieldslib.Field.readonly_t
      val liquidation :
        (Response.Execution.t, int) Fieldslib.Field.readonly_t
      val client_id :
        (Response.Execution.t, Client_id.t) Fieldslib.Field.readonly_t
      val permanent_id :
        (Response.Execution.t, int) Fieldslib.Field.readonly_t
      val price : (Response.Execution.t, Price.t) Fieldslib.Field.readonly_t
      val volume :
        (Response.Execution.t, Volume.t) Fieldslib.Field.readonly_t
      val side :
        (Response.Execution.t, Response.Execution.Side.t)
        Fieldslib.Field.readonly_t
      val exchange :
        (Response.Execution.t, Exchange.t) Fieldslib.Field.readonly_t
      val account_code :
        (Response.Execution.t, Account_code.t) Fieldslib.Field.readonly_t
      val time :
        (Response.Execution.t, Core.Std.Time.t) Fieldslib.Field.readonly_t
      val exec_id :
        (Response.Execution.t, Execution_id.t) Fieldslib.Field.readonly_t
      val contract :
        (Response.Execution.t, Raw_contract.t) Fieldslib.Field.readonly_t
      val order_id :
        (Response.Execution.t, Order_id.t) Fieldslib.Field.readonly_t
      val fold :
        init:'acc__ ->
        order_id:('acc__ ->
                  (Response.Execution.t, Order_id.t)
                  Fieldslib.Field.readonly_t -> 'acc__) ->
        contract:('acc__ ->
                  (Response.Execution.t, Raw_contract.t)
                  Fieldslib.Field.readonly_t -> 'acc__) ->
        exec_id:('acc__ ->
                 (Response.Execution.t, Execution_id.t)
                 Fieldslib.Field.readonly_t -> 'acc__) ->
        time:('acc__ ->
              (Response.Execution.t, Core.Std.Time.t)
              Fieldslib.Field.readonly_t -> 'acc__) ->
        account_code:('acc__ ->
                      (Response.Execution.t, Account_code.t)
                      Fieldslib.Field.readonly_t -> 'acc__) ->
        exchange:('acc__ ->
                  (Response.Execution.t, Exchange.t)
                  Fieldslib.Field.readonly_t -> 'acc__) ->
        side:('acc__ ->
              (Response.Execution.t, Response.Execution.Side.t)
              Fieldslib.Field.readonly_t -> 'acc__) ->
        volume:('acc__ ->
                (Response.Execution.t, Volume.t) Fieldslib.Field.readonly_t ->
                'acc__) ->
        price:('acc__ ->
               (Response.Execution.t, Price.t) Fieldslib.Field.readonly_t ->
               'acc__) ->
        permanent_id:('acc__ ->
                      (Response.Execution.t, int) Fieldslib.Field.readonly_t ->
                      'acc__) ->
        client_id:('acc__ ->
                   (Response.Execution.t, Client_id.t)
                   Fieldslib.Field.readonly_t -> 'acc__) ->
        liquidation:('acc__ ->
                     (Response.Execution.t, int) Fieldslib.Field.readonly_t ->
                     'acc__) ->
        cumulative_volume:('acc__ ->
                           (Response.Execution.t, Volume.t)
                           Fieldslib.Field.readonly_t -> 'acc__) ->
        average_price:('acc__ ->
                       (Response.Execution.t, Price.t)
                       Fieldslib.Field.readonly_t -> 'acc__) ->
        order_ref:('acc__ ->
                   (Response.Execution.t, string option)
                   Fieldslib.Field.readonly_t -> 'acc__) ->
        'acc__
      val iter :
        order_id:((Response.Execution.t, Order_id.t)
                  Fieldslib.Field.readonly_t -> unit) ->
        contract:((Response.Execution.t, Raw_contract.t)
                  Fieldslib.Field.readonly_t -> unit) ->
        exec_id:((Response.Execution.t, Execution_id.t)
                 Fieldslib.Field.readonly_t -> unit) ->
        time:((Response.Execution.t, Core.Std.Time.t)
              Fieldslib.Field.readonly_t -> unit) ->
        account_code:((Response.Execution.t, Account_code.t)
                      Fieldslib.Field.readonly_t -> unit) ->
        exchange:((Response.Execution.t, Exchange.t)
                  Fieldslib.Field.readonly_t -> unit) ->
        side:((Response.Execution.t, Response.Execution.Side.t)
              Fieldslib.Field.readonly_t -> unit) ->
        volume:((Response.Execution.t, Volume.t) Fieldslib.Field.readonly_t ->
                unit) ->
        price:((Response.Execution.t, Price.t) Fieldslib.Field.readonly_t ->
               unit) ->
        permanent_id:((Response.Execution.t, int) Fieldslib.Field.readonly_t ->
                      unit) ->
        client_id:((Response.Execution.t, Client_id.t)
                   Fieldslib.Field.readonly_t -> unit) ->
        liquidation:((Response.Execution.t, int) Fieldslib.Field.readonly_t ->
                     unit) ->
        cumulative_volume:((Response.Execution.t, Volume.t)
                           Fieldslib.Field.readonly_t -> unit) ->
        average_price:((Response.Execution.t, Price.t)
                       Fieldslib.Field.readonly_t -> unit) ->
        order_ref:((Response.Execution.t, string option)
                   Fieldslib.Field.readonly_t -> unit) ->
        unit
      val for_all :
        order_id:((Response.Execution.t, Order_id.t)
                  Fieldslib.Field.readonly_t -> bool) ->
        contract:((Response.Execution.t, Raw_contract.t)
                  Fieldslib.Field.readonly_t -> bool) ->
        exec_id:((Response.Execution.t, Execution_id.t)
                 Fieldslib.Field.readonly_t -> bool) ->
        time:((Response.Execution.t, Core.Std.Time.t)
              Fieldslib.Field.readonly_t -> bool) ->
        account_code:((Response.Execution.t, Account_code.t)
                      Fieldslib.Field.readonly_t -> bool) ->
        exchange:((Response.Execution.t, Exchange.t)
                  Fieldslib.Field.readonly_t -> bool) ->
        side:((Response.Execution.t, Response.Execution.Side.t)
              Fieldslib.Field.readonly_t -> bool) ->
        volume:((Response.Execution.t, Volume.t) Fieldslib.Field.readonly_t ->
                bool) ->
        price:((Response.Execution.t, Price.t) Fieldslib.Field.readonly_t ->
               bool) ->
        permanent_id:((Response.Execution.t, int) Fieldslib.Field.readonly_t ->
                      bool) ->
        client_id:((Response.Execution.t, Client_id.t)
                   Fieldslib.Field.readonly_t -> bool) ->
        liquidation:((Response.Execution.t, int) Fieldslib.Field.readonly_t ->
                     bool) ->
        cumulative_volume:((Response.Execution.t, Volume.t)
                           Fieldslib.Field.readonly_t -> bool) ->
        average_price:((Response.Execution.t, Price.t)
                       Fieldslib.Field.readonly_t -> bool) ->
        order_ref:((Response.Execution.t, string option)
                   Fieldslib.Field.readonly_t -> bool) ->
        bool
      val exists :
        order_id:((Response.Execution.t, Order_id.t)
                  Fieldslib.Field.readonly_t -> bool) ->
        contract:((Response.Execution.t, Raw_contract.t)
                  Fieldslib.Field.readonly_t -> bool) ->
        exec_id:((Response.Execution.t, Execution_id.t)
                 Fieldslib.Field.readonly_t -> bool) ->
        time:((Response.Execution.t, Core.Std.Time.t)
              Fieldslib.Field.readonly_t -> bool) ->
        account_code:((Response.Execution.t, Account_code.t)
                      Fieldslib.Field.readonly_t -> bool) ->
        exchange:((Response.Execution.t, Exchange.t)
                  Fieldslib.Field.readonly_t -> bool) ->
        side:((Response.Execution.t, Response.Execution.Side.t)
              Fieldslib.Field.readonly_t -> bool) ->
        volume:((Response.Execution.t, Volume.t) Fieldslib.Field.readonly_t ->
                bool) ->
        price:((Response.Execution.t, Price.t) Fieldslib.Field.readonly_t ->
               bool) ->
        permanent_id:((Response.Execution.t, int) Fieldslib.Field.readonly_t ->
                      bool) ->
        client_id:((Response.Execution.t, Client_id.t)
                   Fieldslib.Field.readonly_t -> bool) ->
        liquidation:((Response.Execution.t, int) Fieldslib.Field.readonly_t ->
                     bool) ->
        cumulative_volume:((Response.Execution.t, Volume.t)
                           Fieldslib.Field.readonly_t -> bool) ->
        average_price:((Response.Execution.t, Price.t)
                       Fieldslib.Field.readonly_t -> bool) ->
        order_ref:((Response.Execution.t, string option)
                   Fieldslib.Field.readonly_t -> bool) ->
        bool
      val to_list :
        order_id:((Response.Execution.t, Order_id.t)
                  Fieldslib.Field.readonly_t -> 'elem__) ->
        contract:((Response.Execution.t, Raw_contract.t)
                  Fieldslib.Field.readonly_t -> 'elem__) ->
        exec_id:((Response.Execution.t, Execution_id.t)
                 Fieldslib.Field.readonly_t -> 'elem__) ->
        time:((Response.Execution.t, Core.Std.Time.t)
              Fieldslib.Field.readonly_t -> 'elem__) ->
        account_code:((Response.Execution.t, Account_code.t)
                      Fieldslib.Field.readonly_t -> 'elem__) ->
        exchange:((Response.Execution.t, Exchange.t)
                  Fieldslib.Field.readonly_t -> 'elem__) ->
        side:((Response.Execution.t, Response.Execution.Side.t)
              Fieldslib.Field.readonly_t -> 'elem__) ->
        volume:((Response.Execution.t, Volume.t) Fieldslib.Field.readonly_t ->
                'elem__) ->
        price:((Response.Execution.t, Price.t) Fieldslib.Field.readonly_t ->
               'elem__) ->
        permanent_id:((Response.Execution.t, int) Fieldslib.Field.readonly_t ->
                      'elem__) ->
        client_id:((Response.Execution.t, Client_id.t)
                   Fieldslib.Field.readonly_t -> 'elem__) ->
        liquidation:((Response.Execution.t, int) Fieldslib.Field.readonly_t ->
                     'elem__) ->
        cumulative_volume:((Response.Execution.t, Volume.t)
                           Fieldslib.Field.readonly_t -> 'elem__) ->
        average_price:((Response.Execution.t, Price.t)
                       Fieldslib.Field.readonly_t -> 'elem__) ->
        order_ref:((Response.Execution.t, string option)
                   Fieldslib.Field.readonly_t -> 'elem__) ->
        'elem__ list
      val map_poly :
        ([< `Read ], Response.Execution.t, 'x0) Fieldslib.Field.user ->
        'x0 list
      module Direct :
        sig
          val iter :
            Response.Execution.t ->
            order_id:((Response.Execution.t, Order_id.t)
                      Fieldslib.Field.readonly_t ->
                      Response.Execution.t -> Order_id.t -> unit) ->
            contract:((Response.Execution.t, Raw_contract.t)
                      Fieldslib.Field.readonly_t ->
                      Response.Execution.t -> Raw_contract.t -> unit) ->
            exec_id:((Response.Execution.t, Execution_id.t)
                     Fieldslib.Field.readonly_t ->
                     Response.Execution.t -> Execution_id.t -> unit) ->
            time:((Response.Execution.t, Core.Std.Time.t)
                  Fieldslib.Field.readonly_t ->
                  Response.Execution.t -> Core.Std.Time.t -> unit) ->
            account_code:((Response.Execution.t, Account_code.t)
                          Fieldslib.Field.readonly_t ->
                          Response.Execution.t -> Account_code.t -> unit) ->
            exchange:((Response.Execution.t, Exchange.t)
                      Fieldslib.Field.readonly_t ->
                      Response.Execution.t -> Exchange.t -> unit) ->
            side:((Response.Execution.t, Response.Execution.Side.t)
                  Fieldslib.Field.readonly_t ->
                  Response.Execution.t -> Response.Execution.Side.t -> unit) ->
            volume:((Response.Execution.t, Volume.t)
                    Fieldslib.Field.readonly_t ->
                    Response.Execution.t -> Volume.t -> unit) ->
            price:((Response.Execution.t, Price.t) Fieldslib.Field.readonly_t ->
                   Response.Execution.t -> Price.t -> unit) ->
            permanent_id:((Response.Execution.t, int)
                          Fieldslib.Field.readonly_t ->
                          Response.Execution.t -> int -> unit) ->
            client_id:((Response.Execution.t, Client_id.t)
                       Fieldslib.Field.readonly_t ->
                       Response.Execution.t -> Client_id.t -> unit) ->
            liquidation:((Response.Execution.t, int)
                         Fieldslib.Field.readonly_t ->
                         Response.Execution.t -> int -> unit) ->
            cumulative_volume:((Response.Execution.t, Volume.t)
                               Fieldslib.Field.readonly_t ->
                               Response.Execution.t -> Volume.t -> unit) ->
            average_price:((Response.Execution.t, Price.t)
                           Fieldslib.Field.readonly_t ->
                           Response.Execution.t -> Price.t -> unit) ->
            order_ref:((Response.Execution.t, string option)
                       Fieldslib.Field.readonly_t ->
                       Response.Execution.t -> string option -> unit) ->
            unit
          val fold :
            Response.Execution.t ->
            init:'acc__ ->
            order_id:('acc__ ->
                      (Response.Execution.t, Order_id.t)
                      Fieldslib.Field.readonly_t ->
                      Response.Execution.t -> Order_id.t -> 'acc__) ->
            contract:('acc__ ->
                      (Response.Execution.t, Raw_contract.t)
                      Fieldslib.Field.readonly_t ->
                      Response.Execution.t -> Raw_contract.t -> 'acc__) ->
            exec_id:('acc__ ->
                     (Response.Execution.t, Execution_id.t)
                     Fieldslib.Field.readonly_t ->
                     Response.Execution.t -> Execution_id.t -> 'acc__) ->
            time:('acc__ ->
                  (Response.Execution.t, Core.Std.Time.t)
                  Fieldslib.Field.readonly_t ->
                  Response.Execution.t -> Core.Std.Time.t -> 'acc__) ->
            account_code:('acc__ ->
                          (Response.Execution.t, Account_code.t)
                          Fieldslib.Field.readonly_t ->
                          Response.Execution.t -> Account_code.t -> 'acc__) ->
            exchange:('acc__ ->
                      (Response.Execution.t, Exchange.t)
                      Fieldslib.Field.readonly_t ->
                      Response.Execution.t -> Exchange.t -> 'acc__) ->
            side:('acc__ ->
                  (Response.Execution.t, Response.Execution.Side.t)
                  Fieldslib.Field.readonly_t ->
                  Response.Execution.t -> Response.Execution.Side.t -> 'acc__) ->
            volume:('acc__ ->
                    (Response.Execution.t, Volume.t)
                    Fieldslib.Field.readonly_t ->
                    Response.Execution.t -> Volume.t -> 'acc__) ->
            price:('acc__ ->
                   (Response.Execution.t, Price.t) Fieldslib.Field.readonly_t ->
                   Response.Execution.t -> Price.t -> 'acc__) ->
            permanent_id:('acc__ ->
                          (Response.Execution.t, int)
                          Fieldslib.Field.readonly_t ->
                          Response.Execution.t -> int -> 'acc__) ->
            client_id:('acc__ ->
                       (Response.Execution.t, Client_id.t)
                       Fieldslib.Field.readonly_t ->
                       Response.Execution.t -> Client_id.t -> 'acc__) ->
            liquidation:('acc__ ->
                         (Response.Execution.t, int)
                         Fieldslib.Field.readonly_t ->
                         Response.Execution.t -> int -> 'acc__) ->
            cumulative_volume:('acc__ ->
                               (Response.Execution.t, Volume.t)
                               Fieldslib.Field.readonly_t ->
                               Response.Execution.t -> Volume.t -> 'acc__) ->
            average_price:('acc__ ->
                           (Response.Execution.t, Price.t)
                           Fieldslib.Field.readonly_t ->
                           Response.Execution.t -> Price.t -> 'acc__) ->
            order_ref:('acc__ ->
                       (Response.Execution.t, string option)
                       Fieldslib.Field.readonly_t ->
                       Response.Execution.t -> string option -> '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 :
    order_id:Order_id.t ->
    contract:[< Security_type.t ] Contract.t ->
    exec_id:Execution_id.t ->
    time:Core.Std.Time.t ->
    account_code:Account_code.t ->
    exchange:Exchange.t ->
    side:Response.Execution.Side.t ->
    volume:Volume.t ->
    price:Price.t ->
    permanent_id:int ->
    client_id:Client_id.t ->
    liquidation:int ->
    cumulative_volume:Volume.t ->
    average_price:Price.t -> order_ref:string option -> Response.Execution.t
  val contract : Response.Execution.t -> [< Security_type.t ] Contract.t
  val pp : Format.formatter -> Response.Execution.t -> unit
  val t_of_sexp : Sexplib.Sexp.t -> Response.Execution.t
  val sexp_of_t : Response.Execution.t -> Sexplib.Sexp.t
end