sig
  module V1 :
    sig
      type nobody = nobody
      type me = me
      module Read :
        sig
          type t = Perms.Read.t
          val t_of_sexp : Sexplib.Sexp.t -> Perms.Stable.V1.Read.t
          val sexp_of_t : Perms.Stable.V1.Read.t -> Sexplib.Sexp.t
          val compare :
            Perms.Stable.V1.Read.t -> Perms.Stable.V1.Read.t -> int
          val bin_t : Perms.Stable.V1.Read.t Bin_prot.Type_class.t
          val bin_read_t : Perms.Stable.V1.Read.t Bin_prot.Read.reader
          val __bin_read_t__ :
            (int -> Perms.Stable.V1.Read.t) Bin_prot.Read.reader
          val bin_reader_t :
            Perms.Stable.V1.Read.t Bin_prot.Type_class.reader
          val bin_size_t : Perms.Stable.V1.Read.t Bin_prot.Size.sizer
          val bin_write_t : Perms.Stable.V1.Read.t Bin_prot.Write.writer
          val bin_writer_t :
            Perms.Stable.V1.Read.t Bin_prot.Type_class.writer
        end
      module Write :
        sig
          type t = Perms.Write.t
          val t_of_sexp : Sexplib.Sexp.t -> Perms.Stable.V1.Write.t
          val sexp_of_t : Perms.Stable.V1.Write.t -> Sexplib.Sexp.t
          val compare :
            Perms.Stable.V1.Write.t -> Perms.Stable.V1.Write.t -> int
          val bin_t : Perms.Stable.V1.Write.t Bin_prot.Type_class.t
          val bin_read_t : Perms.Stable.V1.Write.t Bin_prot.Read.reader
          val __bin_read_t__ :
            (int -> Perms.Stable.V1.Write.t) Bin_prot.Read.reader
          val bin_reader_t :
            Perms.Stable.V1.Write.t Bin_prot.Type_class.reader
          val bin_size_t : Perms.Stable.V1.Write.t Bin_prot.Size.sizer
          val bin_write_t : Perms.Stable.V1.Write.t Bin_prot.Write.writer
          val bin_writer_t :
            Perms.Stable.V1.Write.t Bin_prot.Type_class.writer
        end
      module Immutable :
        sig
          type t = Perms.Immutable.t
          val t_of_sexp : Sexplib.Sexp.t -> Perms.Stable.V1.Immutable.t
          val sexp_of_t : Perms.Stable.V1.Immutable.t -> Sexplib.Sexp.t
          val compare :
            Perms.Stable.V1.Immutable.t -> Perms.Stable.V1.Immutable.t -> int
          val bin_t : Perms.Stable.V1.Immutable.t Bin_prot.Type_class.t
          val bin_read_t : Perms.Stable.V1.Immutable.t Bin_prot.Read.reader
          val __bin_read_t__ :
            (int -> Perms.Stable.V1.Immutable.t) Bin_prot.Read.reader
          val bin_reader_t :
            Perms.Stable.V1.Immutable.t Bin_prot.Type_class.reader
          val bin_size_t : Perms.Stable.V1.Immutable.t Bin_prot.Size.sizer
          val bin_write_t : Perms.Stable.V1.Immutable.t Bin_prot.Write.writer
          val bin_writer_t :
            Perms.Stable.V1.Immutable.t Bin_prot.Type_class.writer
        end
      module Read_write :
        sig
          type t = Perms.Read_write.t
          val t_of_sexp : Sexplib.Sexp.t -> Perms.Stable.V1.Read_write.t
          val sexp_of_t : Perms.Stable.V1.Read_write.t -> Sexplib.Sexp.t
          val compare :
            Perms.Stable.V1.Read_write.t ->
            Perms.Stable.V1.Read_write.t -> int
          val bin_t : Perms.Stable.V1.Read_write.t Bin_prot.Type_class.t
          val bin_read_t : Perms.Stable.V1.Read_write.t Bin_prot.Read.reader
          val __bin_read_t__ :
            (int -> Perms.Stable.V1.Read_write.t) Bin_prot.Read.reader
          val bin_reader_t :
            Perms.Stable.V1.Read_write.t Bin_prot.Type_class.reader
          val bin_size_t : Perms.Stable.V1.Read_write.t Bin_prot.Size.sizer
          val bin_write_t :
            Perms.Stable.V1.Read_write.t Bin_prot.Write.writer
          val bin_writer_t :
            Perms.Stable.V1.Read_write.t Bin_prot.Type_class.writer
        end
      module Upper_bound :
        sig
          type 'a t = 'Perms.Upper_bound.t
          val t_of_sexp :
            (Sexplib.Sexp.t -> 'a) ->
            Sexplib.Sexp.t -> 'Perms.Stable.V1.Upper_bound.t
          val sexp_of_t :
            ('-> Sexplib.Sexp.t) ->
            'Perms.Stable.V1.Upper_bound.t -> Sexplib.Sexp.t
          val compare :
            ('-> '-> int) ->
            'Perms.Stable.V1.Upper_bound.t ->
            'Perms.Stable.V1.Upper_bound.t -> int
          val bin_t :
            'Bin_prot.Type_class.t ->
            'Perms.Stable.V1.Upper_bound.t Bin_prot.Type_class.t
          val bin_read_t :
            'Bin_prot.Read.reader ->
            'Perms.Stable.V1.Upper_bound.t Bin_prot.Read.reader
          val __bin_read_t__ :
            'Bin_prot.Read.reader ->
            (int -> 'Perms.Stable.V1.Upper_bound.t) Bin_prot.Read.reader
          val bin_reader_t :
            'Bin_prot.Type_class.reader ->
            'Perms.Stable.V1.Upper_bound.t Bin_prot.Type_class.reader
          val bin_size_t :
            'Bin_prot.Size.sizer ->
            'Perms.Stable.V1.Upper_bound.t Bin_prot.Size.sizer
          val bin_write_t :
            'Bin_prot.Write.writer ->
            'Perms.Stable.V1.Upper_bound.t Bin_prot.Write.writer
          val bin_writer_t :
            'Bin_prot.Type_class.writer ->
            'Perms.Stable.V1.Upper_bound.t Bin_prot.Type_class.writer
        end
      val nobody_of_sexp : Sexplib.Sexp.t -> Perms.nobody
      val sexp_of_nobody : Perms.nobody -> Sexplib.Sexp.t
      val compare_nobody : Perms.nobody -> Perms.nobody -> int
      val bin_nobody : Perms.nobody Bin_prot.Type_class.t
      val bin_read_nobody : Perms.nobody Bin_prot.Read.reader
      val __bin_read_nobody__ : (int -> Perms.nobody) Bin_prot.Read.reader
      val bin_reader_nobody : Perms.nobody Bin_prot.Type_class.reader
      val bin_size_nobody : Perms.nobody Bin_prot.Size.sizer
      val bin_write_nobody : Perms.nobody Bin_prot.Write.writer
      val bin_writer_nobody : Perms.nobody Bin_prot.Type_class.writer
      val me_of_sexp : Sexplib.Sexp.t -> Perms.me
      val sexp_of_me : Perms.me -> Sexplib.Sexp.t
      val compare_me : Perms.me -> Perms.me -> int
      val bin_me : Perms.me Bin_prot.Type_class.t
      val bin_read_me : Perms.me Bin_prot.Read.reader
      val __bin_read_me__ : (int -> Perms.me) Bin_prot.Read.reader
      val bin_reader_me : Perms.me Bin_prot.Type_class.reader
      val bin_size_me : Perms.me Bin_prot.Size.sizer
      val bin_write_me : Perms.me Bin_prot.Write.writer
      val bin_writer_me : Perms.me Bin_prot.Type_class.writer
    end
  module Export :
    sig
      type read = Perms.Read.t
      type write = Perms.Write.t
      type immutable = Perms.Immutable.t
      type read_write = Perms.Read_write.t
      type 'a perms = 'Perms.Upper_bound.t
      val read_of_sexp : Sexplib.Sexp.t -> Perms.Export.read
      val sexp_of_read : Perms.Export.read -> Sexplib.Sexp.t
      val compare_read : Perms.Export.read -> Perms.Export.read -> int
      val bin_read : Perms.Export.read Bin_prot.Type_class.t
      val bin_read_read : Perms.Export.read Bin_prot.Read.reader
      val __bin_read_read__ : (int -> Perms.Export.read) Bin_prot.Read.reader
      val bin_reader_read : Perms.Export.read Bin_prot.Type_class.reader
      val bin_size_read : Perms.Export.read Bin_prot.Size.sizer
      val bin_write_read : Perms.Export.read Bin_prot.Write.writer
      val bin_writer_read : Perms.Export.read Bin_prot.Type_class.writer
      val write_of_sexp : Sexplib.Sexp.t -> Perms.Export.write
      val sexp_of_write : Perms.Export.write -> Sexplib.Sexp.t
      val compare_write : Perms.Export.write -> Perms.Export.write -> int
      val immutable_of_sexp : Sexplib.Sexp.t -> Perms.Export.immutable
      val sexp_of_immutable : Perms.Export.immutable -> Sexplib.Sexp.t
      val compare_immutable :
        Perms.Export.immutable -> Perms.Export.immutable -> int
      val bin_immutable : Perms.Export.immutable Bin_prot.Type_class.t
      val bin_read_immutable : Perms.Export.immutable Bin_prot.Read.reader
      val __bin_read_immutable__ :
        (int -> Perms.Export.immutable) Bin_prot.Read.reader
      val bin_reader_immutable :
        Perms.Export.immutable Bin_prot.Type_class.reader
      val bin_size_immutable : Perms.Export.immutable Bin_prot.Size.sizer
      val bin_write_immutable : Perms.Export.immutable Bin_prot.Write.writer
      val bin_writer_immutable :
        Perms.Export.immutable Bin_prot.Type_class.writer
      val read_write_of_sexp : Sexplib.Sexp.t -> Perms.Export.read_write
      val sexp_of_read_write : Perms.Export.read_write -> Sexplib.Sexp.t
      val compare_read_write :
        Perms.Export.read_write -> Perms.Export.read_write -> int
      val bin_read_write : Perms.Export.read_write Bin_prot.Type_class.t
      val bin_read_read_write : Perms.Export.read_write Bin_prot.Read.reader
      val __bin_read_read_write__ :
        (int -> Perms.Export.read_write) Bin_prot.Read.reader
      val bin_reader_read_write :
        Perms.Export.read_write Bin_prot.Type_class.reader
      val bin_size_read_write : Perms.Export.read_write Bin_prot.Size.sizer
      val bin_write_read_write :
        Perms.Export.read_write Bin_prot.Write.writer
      val bin_writer_read_write :
        Perms.Export.read_write Bin_prot.Type_class.writer
      val perms_of_sexp :
        (Sexplib.Sexp.t -> 'a) -> Sexplib.Sexp.t -> 'Perms.Export.perms
      val sexp_of_perms :
        ('-> Sexplib.Sexp.t) -> 'Perms.Export.perms -> Sexplib.Sexp.t
      val compare_perms :
        ('-> '-> int) ->
        'Perms.Export.perms -> 'Perms.Export.perms -> int
      val bin_perms :
        'Bin_prot.Type_class.t ->
        'Perms.Export.perms Bin_prot.Type_class.t
      val bin_read_perms :
        'Bin_prot.Read.reader -> 'Perms.Export.perms Bin_prot.Read.reader
      val __bin_read_perms__ :
        'Bin_prot.Read.reader ->
        (int -> 'Perms.Export.perms) Bin_prot.Read.reader
      val bin_reader_perms :
        'Bin_prot.Type_class.reader ->
        'Perms.Export.perms Bin_prot.Type_class.reader
      val bin_size_perms :
        'Bin_prot.Size.sizer -> 'Perms.Export.perms Bin_prot.Size.sizer
      val bin_write_perms :
        'Bin_prot.Write.writer ->
        'Perms.Export.perms Bin_prot.Write.writer
      val bin_writer_perms :
        'Bin_prot.Type_class.writer ->
        'Perms.Export.perms Bin_prot.Type_class.writer
    end
end