sig
  type nobody
  type me
  module Read :
    sig
      type t = [ `Read ]
      val t_of_sexp : Sexplib.Sexp.t -> Perms.Read.t
      val __t_of_sexp__ : Sexplib.Sexp.t -> Perms.Read.t
      val sexp_of_t : Perms.Read.t -> Sexplib.Sexp.t
      val compare : Perms.Read.t -> Perms.Read.t -> int
      val bin_t : Perms.Read.t Bin_prot.Type_class.t
      val bin_read_t : Perms.Read.t Bin_prot.Read.reader
      val __bin_read_t__ : (int -> Perms.Read.t) Bin_prot.Read.reader
      val bin_reader_t : Perms.Read.t Bin_prot.Type_class.reader
      val bin_size_t : Perms.Read.t Bin_prot.Size.sizer
      val bin_write_t : Perms.Read.t Bin_prot.Write.writer
      val bin_writer_t : Perms.Read.t Bin_prot.Type_class.writer
    end
  module Write :
    sig
      type t = [ `Who_can_write of Perms.me ]
      val t_of_sexp : Sexplib.Sexp.t -> Perms.Write.t
      val __t_of_sexp__ : Sexplib.Sexp.t -> Perms.Write.t
      val sexp_of_t : Perms.Write.t -> Sexplib.Sexp.t
      val compare : Perms.Write.t -> Perms.Write.t -> int
      val bin_t : Perms.Write.t Bin_prot.Type_class.t
      val bin_read_t : Perms.Write.t Bin_prot.Read.reader
      val __bin_read_t__ : (int -> Perms.Write.t) Bin_prot.Read.reader
      val bin_reader_t : Perms.Write.t Bin_prot.Type_class.reader
      val bin_size_t : Perms.Write.t Bin_prot.Size.sizer
      val bin_write_t : Perms.Write.t Bin_prot.Write.writer
      val bin_writer_t : Perms.Write.t Bin_prot.Type_class.writer
    end
  module Immutable :
    sig
      type t = [ `Read | `Who_can_write of Perms.nobody ]
      val t_of_sexp : Sexplib.Sexp.t -> Perms.Immutable.t
      val __t_of_sexp__ : Sexplib.Sexp.t -> Perms.Immutable.t
      val sexp_of_t : Perms.Immutable.t -> Sexplib.Sexp.t
      val compare : Perms.Immutable.t -> Perms.Immutable.t -> int
      val bin_t : Perms.Immutable.t Bin_prot.Type_class.t
      val bin_read_t : Perms.Immutable.t Bin_prot.Read.reader
      val __bin_read_t__ : (int -> Perms.Immutable.t) Bin_prot.Read.reader
      val bin_reader_t : Perms.Immutable.t Bin_prot.Type_class.reader
      val bin_size_t : Perms.Immutable.t Bin_prot.Size.sizer
      val bin_write_t : Perms.Immutable.t Bin_prot.Write.writer
      val bin_writer_t : Perms.Immutable.t Bin_prot.Type_class.writer
    end
  module Read_write :
    sig
      type t = [ `Read | `Who_can_write of Perms.me ]
      val t_of_sexp : Sexplib.Sexp.t -> Perms.Read_write.t
      val __t_of_sexp__ : Sexplib.Sexp.t -> Perms.Read_write.t
      val sexp_of_t : Perms.Read_write.t -> Sexplib.Sexp.t
      val compare : Perms.Read_write.t -> Perms.Read_write.t -> int
      val bin_t : Perms.Read_write.t Bin_prot.Type_class.t
      val bin_read_t : Perms.Read_write.t Bin_prot.Read.reader
      val __bin_read_t__ : (int -> Perms.Read_write.t) Bin_prot.Read.reader
      val bin_reader_t : Perms.Read_write.t Bin_prot.Type_class.reader
      val bin_size_t : Perms.Read_write.t Bin_prot.Size.sizer
      val bin_write_t : Perms.Read_write.t Bin_prot.Write.writer
      val bin_writer_t : Perms.Read_write.t Bin_prot.Type_class.writer
    end
  module Upper_bound :
    sig
      type 'a t = [ `Read | `Who_can_write of 'a ]
      val t_of_sexp :
        (Sexplib.Sexp.t -> 'a) -> Sexplib.Sexp.t -> 'Perms.Upper_bound.t
      val __t_of_sexp__ :
        (Sexplib.Sexp.t -> 'a) -> Sexplib.Sexp.t -> 'Perms.Upper_bound.t
      val sexp_of_t :
        ('-> Sexplib.Sexp.t) -> 'Perms.Upper_bound.t -> Sexplib.Sexp.t
      val compare :
        ('-> '-> int) ->
        'Perms.Upper_bound.t -> 'Perms.Upper_bound.t -> int
      val bin_t :
        'Bin_prot.Type_class.t ->
        'Perms.Upper_bound.t Bin_prot.Type_class.t
      val bin_read_t :
        'Bin_prot.Read.reader ->
        'Perms.Upper_bound.t Bin_prot.Read.reader
      val __bin_read_t__ :
        'Bin_prot.Read.reader ->
        (int -> 'Perms.Upper_bound.t) Bin_prot.Read.reader
      val bin_reader_t :
        'Bin_prot.Type_class.reader ->
        'Perms.Upper_bound.t Bin_prot.Type_class.reader
      val bin_size_t :
        'Bin_prot.Size.sizer -> 'Perms.Upper_bound.t Bin_prot.Size.sizer
      val bin_write_t :
        'Bin_prot.Write.writer ->
        'Perms.Upper_bound.t Bin_prot.Write.writer
      val bin_writer_t :
        'Bin_prot.Type_class.writer ->
        'Perms.Upper_bound.t 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
  module Stable :
    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
  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