sig
  module Slots : Tuple_type.Slots
  module Slot : Tuple_type.Slot
  type 'slots t
  val blit : ('a t, 'a t) Blit_intf.blit
  val blito : ('a t, 'a t) Blit_intf.blito
  val unsafe_blit : ('a t, 'a t) Blit_intf.blit
  val sub : ('a t, 'a t) Blit_intf.sub
  val subo : ('a t, 'a t) Blit_intf.subo
  val invariant : 'Invariant_intf.inv -> 'a t Invariant_intf.inv
  val create :
    ('tuple, 'a) Slots.t ->
    len:int -> 'tuple -> ('tuple, 'a) Slots.t Flat_array.t
  val copy : 'slots Flat_array.t -> 'slots Flat_array.t
  val length : 'Flat_array.t -> int
  val slots : 'slots Flat_array.t -> 'slots
  val get : ('b, 'v) Slots.t Flat_array.t -> int -> ('v, 'a) Slot.t -> 'a
  val unsafe_get :
    ('b, 'v) Slots.t Flat_array.t -> int -> ('v, 'a) Slot.t -> 'a
  val set :
    ('b, 'v) Slots.t Flat_array.t -> int -> ('v, 'a) Slot.t -> '-> unit
  val unsafe_set :
    ('b, 'v) Slots.t Flat_array.t -> int -> ('v, 'a) Slot.t -> '-> unit
  val get_tuple : ('tuple, 'a) Slots.t Flat_array.t -> int -> 'tuple
  val set_tuple : ('tuple, 'a) Slots.t Flat_array.t -> int -> 'tuple -> unit
  val sexp_of_t :
    ('slots -> Sexplib.Sexp.t) -> 'slots Flat_array.t -> Sexplib.Sexp.t
end