sig
  type ('tuple, 'variant) u
  type ('tuple, 'variant) t =
      [ `Slots of ('tuple, 'variant) Tuple_type_intf.Slots.u ]
  val slots_per_tuple : ('a, 'b) Tuple_type_intf.Slots.t -> int
  type 'a0 t1 = ('a0, [ `S0 of 'a0 ]) Tuple_type_intf.Slots.t
  type ('a0, 'a1) t2 =
      ('a0 * 'a1, [ `S0 of 'a0 | `S1 of 'a1 ]) Tuple_type_intf.Slots.t
  type ('a0, 'a1, 'a2) t3 =
      ('a0 * 'a1 * 'a2, [ `S0 of 'a0 | `S1 of 'a1 | `S2 of 'a2 ])
      Tuple_type_intf.Slots.t
  type ('a0, 'a1, 'a2, 'a3) t4 =
      ('a0 * 'a1 * 'a2 * 'a3,
       [ `S0 of 'a0 | `S1 of 'a1 | `S2 of 'a2 | `S3 of 'a3 ])
      Tuple_type_intf.Slots.t
  type ('a0, 'a1, 'a2, 'a3, 'a4) t5 =
      ('a0 * 'a1 * 'a2 * 'a3 * 'a4,
       [ `S0 of 'a0 | `S1 of 'a1 | `S2 of 'a2 | `S3 of 'a3 | `S4 of 'a4 ])
      Tuple_type_intf.Slots.t
  type ('a0, 'a1, 'a2, 'a3, 'a4, 'a5) t6 =
      ('a0 * 'a1 * 'a2 * 'a3 * 'a4 * 'a5,
       [ `S0 of 'a0
       | `S1 of 'a1
       | `S2 of 'a2
       | `S3 of 'a3
       | `S4 of 'a4
       | `S5 of 'a5 ])
      Tuple_type_intf.Slots.t
  type ('a0, 'a1, 'a2, 'a3, 'a4, 'a5, 'a6) t7 =
      ('a0 * 'a1 * 'a2 * 'a3 * 'a4 * 'a5 * 'a6,
       [ `S0 of 'a0
       | `S1 of 'a1
       | `S2 of 'a2
       | `S3 of 'a3
       | `S4 of 'a4
       | `S5 of 'a5
       | `S6 of 'a6 ])
      Tuple_type_intf.Slots.t
  type ('a0, 'a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) t8 =
      ('a0 * 'a1 * 'a2 * 'a3 * 'a4 * 'a5 * 'a6 * 'a7,
       [ `S0 of 'a0
       | `S1 of 'a1
       | `S2 of 'a2
       | `S3 of 'a3
       | `S4 of 'a4
       | `S5 of 'a5
       | `S6 of 'a6
       | `S7 of 'a7 ])
      Tuple_type_intf.Slots.t
  type ('a0, 'a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7, 'a8) t9 =
      ('a0 * 'a1 * 'a2 * 'a3 * 'a4 * 'a5 * 'a6 * 'a7 * 'a8,
       [ `S0 of 'a0
       | `S1 of 'a1
       | `S2 of 'a2
       | `S3 of 'a3
       | `S4 of 'a4
       | `S5 of 'a5
       | `S6 of 'a6
       | `S7 of 'a7
       | `S8 of 'a8 ])
      Tuple_type_intf.Slots.t
  val t1 : 'Tuple_type_intf.Slots.t1
  val t2 : ('a, 'b) Tuple_type_intf.Slots.t2
  val t3 : ('a, 'b, 'c) Tuple_type_intf.Slots.t3
  val t4 : ('a, 'b, 'c, 'd) Tuple_type_intf.Slots.t4
  val t5 : ('a, 'b, 'c, 'd, 'e) Tuple_type_intf.Slots.t5
  val t6 : ('a, 'b, 'c, 'd, 'e, 'f) Tuple_type_intf.Slots.t6
  val t7 : ('a, 'b, 'c, 'd, 'e, 'f, 'g) Tuple_type_intf.Slots.t7
  val t8 : ('a, 'b, 'c, 'd, 'e, 'f, 'g, 'h) Tuple_type_intf.Slots.t8
  val t9 : ('a, 'b, 'c, 'd, 'e, 'f, 'g, 'h, 'i) Tuple_type_intf.Slots.t9
  val sexp_of_t :
    ('tuple -> Sexplib.Sexp.t) ->
    ('variant -> Sexplib.Sexp.t) ->
    ('tuple, 'variant) Tuple_type_intf.Slots.t -> Sexplib.Sexp.t
  val sexp_of_t1 :
    ('a0 -> Sexplib.Sexp.t) -> 'a0 Tuple_type_intf.Slots.t1 -> Sexplib.Sexp.t
  val sexp_of_t2 :
    ('a0 -> Sexplib.Sexp.t) ->
    ('a1 -> Sexplib.Sexp.t) ->
    ('a0, 'a1) Tuple_type_intf.Slots.t2 -> Sexplib.Sexp.t
  val sexp_of_t3 :
    ('a0 -> Sexplib.Sexp.t) ->
    ('a1 -> Sexplib.Sexp.t) ->
    ('a2 -> Sexplib.Sexp.t) ->
    ('a0, 'a1, 'a2) Tuple_type_intf.Slots.t3 -> Sexplib.Sexp.t
  val sexp_of_t4 :
    ('a0 -> Sexplib.Sexp.t) ->
    ('a1 -> Sexplib.Sexp.t) ->
    ('a2 -> Sexplib.Sexp.t) ->
    ('a3 -> Sexplib.Sexp.t) ->
    ('a0, 'a1, 'a2, 'a3) Tuple_type_intf.Slots.t4 -> Sexplib.Sexp.t
  val sexp_of_t5 :
    ('a0 -> Sexplib.Sexp.t) ->
    ('a1 -> Sexplib.Sexp.t) ->
    ('a2 -> Sexplib.Sexp.t) ->
    ('a3 -> Sexplib.Sexp.t) ->
    ('a4 -> Sexplib.Sexp.t) ->
    ('a0, 'a1, 'a2, 'a3, 'a4) Tuple_type_intf.Slots.t5 -> Sexplib.Sexp.t
  val sexp_of_t6 :
    ('a0 -> Sexplib.Sexp.t) ->
    ('a1 -> Sexplib.Sexp.t) ->
    ('a2 -> Sexplib.Sexp.t) ->
    ('a3 -> Sexplib.Sexp.t) ->
    ('a4 -> Sexplib.Sexp.t) ->
    ('a5 -> Sexplib.Sexp.t) ->
    ('a0, 'a1, 'a2, 'a3, 'a4, 'a5) Tuple_type_intf.Slots.t6 -> Sexplib.Sexp.t
  val sexp_of_t7 :
    ('a0 -> Sexplib.Sexp.t) ->
    ('a1 -> Sexplib.Sexp.t) ->
    ('a2 -> Sexplib.Sexp.t) ->
    ('a3 -> Sexplib.Sexp.t) ->
    ('a4 -> Sexplib.Sexp.t) ->
    ('a5 -> Sexplib.Sexp.t) ->
    ('a6 -> Sexplib.Sexp.t) ->
    ('a0, 'a1, 'a2, 'a3, 'a4, 'a5, 'a6) Tuple_type_intf.Slots.t7 ->
    Sexplib.Sexp.t
  val sexp_of_t8 :
    ('a0 -> Sexplib.Sexp.t) ->
    ('a1 -> Sexplib.Sexp.t) ->
    ('a2 -> Sexplib.Sexp.t) ->
    ('a3 -> Sexplib.Sexp.t) ->
    ('a4 -> Sexplib.Sexp.t) ->
    ('a5 -> Sexplib.Sexp.t) ->
    ('a6 -> Sexplib.Sexp.t) ->
    ('a7 -> Sexplib.Sexp.t) ->
    ('a0, 'a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Tuple_type_intf.Slots.t8 ->
    Sexplib.Sexp.t
  val sexp_of_t9 :
    ('a0 -> Sexplib.Sexp.t) ->
    ('a1 -> Sexplib.Sexp.t) ->
    ('a2 -> Sexplib.Sexp.t) ->
    ('a3 -> Sexplib.Sexp.t) ->
    ('a4 -> Sexplib.Sexp.t) ->
    ('a5 -> Sexplib.Sexp.t) ->
    ('a6 -> Sexplib.Sexp.t) ->
    ('a7 -> Sexplib.Sexp.t) ->
    ('a8 -> Sexplib.Sexp.t) ->
    ('a0, 'a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7, 'a8) Tuple_type_intf.Slots.t9 ->
    Sexplib.Sexp.t
end