sig
  module Slots : Tuple_type.Slots
  module Slot : Tuple_type.Slot
  type 'slots t
  val invariant : 'Invariant_intf.inv -> 'a t Invariant_intf.inv
  val create :
    ?capacity:int -> ('a, 'b) Slots.t -> ('a, 'b) Slots.t Flat_queue.t
  val capacity : 'Flat_queue.t -> int
  val set_capacity : 'Flat_queue.t -> int -> unit
  val length : 'Flat_queue.t -> int
  val is_empty : 'Flat_queue.t -> bool
  val get : ('b, 'v) Slots.t Flat_queue.t -> int -> ('v, 'a) Slot.t -> 'a
  val unsafe_get :
    ('b, 'v) Slots.t Flat_queue.t -> int -> ('v, 'a) Slot.t -> 'a
  val set :
    ('b, 'v) Slots.t Flat_queue.t -> int -> ('v, 'a) Slot.t -> '-> unit
  val unsafe_set :
    ('b, 'v) Slots.t Flat_queue.t -> int -> ('v, 'a) Slot.t -> '-> unit
  val drop_front : ?n:int -> 'Flat_queue.t -> unit
  val clear : 'Flat_queue.t -> unit
  val enqueue1 : 'a0 Slots.t1 Flat_queue.t -> 'a0 -> unit
  val enqueue2 : ('a0, 'a1) Slots.t2 Flat_queue.t -> 'a0 -> 'a1 -> unit
  val enqueue3 :
    ('a0, 'a1, 'a2) Slots.t3 Flat_queue.t -> 'a0 -> 'a1 -> 'a2 -> unit
  val enqueue4 :
    ('a0, 'a1, 'a2, 'a3) Slots.t4 Flat_queue.t ->
    'a0 -> 'a1 -> 'a2 -> 'a3 -> unit
  val enqueue5 :
    ('a0, 'a1, 'a2, 'a3, 'a4) Slots.t5 Flat_queue.t ->
    'a0 -> 'a1 -> 'a2 -> 'a3 -> 'a4 -> unit
  val enqueue6 :
    ('a0, 'a1, 'a2, 'a3, 'a4, 'a5) Slots.t6 Flat_queue.t ->
    'a0 -> 'a1 -> 'a2 -> 'a3 -> 'a4 -> 'a5 -> unit
  val enqueue7 :
    ('a0, 'a1, 'a2, 'a3, 'a4, 'a5, 'a6) Slots.t7 Flat_queue.t ->
    'a0 -> 'a1 -> 'a2 -> 'a3 -> 'a4 -> 'a5 -> 'a6 -> unit
  val enqueue8 :
    ('a0, 'a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Slots.t8 Flat_queue.t ->
    'a0 -> 'a1 -> 'a2 -> 'a3 -> 'a4 -> 'a5 -> 'a6 -> 'a7 -> unit
  val enqueue9 :
    ('a0, 'a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7, 'a8) Slots.t9 Flat_queue.t ->
    'a0 -> 'a1 -> 'a2 -> 'a3 -> 'a4 -> 'a5 -> 'a6 -> 'a7 -> 'a8 -> unit
  val get_all_slots : ('tuple, 'a) Slots.t Flat_queue.t -> int -> 'tuple
  val set_all_slots :
    ('tuple, 'a) Slots.t Flat_queue.t -> int -> 'tuple -> unit
  val fold :
    ('tuple, 'b) Slots.t Flat_queue.t ->
    init:'-> f:('-> 'tuple -> 'a) -> 'a
  val iter : ('tuple, 'a) Slots.t Flat_queue.t -> f:('tuple -> unit) -> unit
  val sexp_of_t :
    ('slots -> Sexplib.Sexp.t) -> 'slots Flat_queue.t -> Sexplib.Sexp.t
end