sig
  type t = {
    name : string;
    passwd : string;
    uid : int;
    gid : int;
    gecos : string;
    dir : string;
    shell : string;
  }
  val shell : Unix_syscalls.Passwd.t -> string
  val dir : Unix_syscalls.Passwd.t -> string
  val gecos : Unix_syscalls.Passwd.t -> string
  val gid : Unix_syscalls.Passwd.t -> int
  val uid : Unix_syscalls.Passwd.t -> int
  val passwd : Unix_syscalls.Passwd.t -> string
  val name : Unix_syscalls.Passwd.t -> string
  module Fields :
    sig
      val names : string list
      val shell : (Unix_syscalls.Passwd.t, string) Fieldslib.Field.t
      val dir : (Unix_syscalls.Passwd.t, string) Fieldslib.Field.t
      val gecos : (Unix_syscalls.Passwd.t, string) Fieldslib.Field.t
      val gid : (Unix_syscalls.Passwd.t, int) Fieldslib.Field.t
      val uid : (Unix_syscalls.Passwd.t, int) Fieldslib.Field.t
      val passwd : (Unix_syscalls.Passwd.t, string) Fieldslib.Field.t
      val name : (Unix_syscalls.Passwd.t, string) Fieldslib.Field.t
      val fold :
        init:'acc__ ->
        name:('acc__ ->
              (Unix_syscalls.Passwd.t, string) Fieldslib.Field.t -> 'acc__) ->
        passwd:('acc__ ->
                (Unix_syscalls.Passwd.t, string) Fieldslib.Field.t -> 'acc__) ->
        uid:('acc__ ->
             (Unix_syscalls.Passwd.t, int) Fieldslib.Field.t -> 'acc__) ->
        gid:('acc__ ->
             (Unix_syscalls.Passwd.t, int) Fieldslib.Field.t -> 'acc__) ->
        gecos:('acc__ ->
               (Unix_syscalls.Passwd.t, string) Fieldslib.Field.t -> 'acc__) ->
        dir:('acc__ ->
             (Unix_syscalls.Passwd.t, string) Fieldslib.Field.t -> 'acc__) ->
        shell:('acc__ ->
               (Unix_syscalls.Passwd.t, string) Fieldslib.Field.t -> 'acc__) ->
        'acc__
      val make_creator :
        name:((Unix_syscalls.Passwd.t, string) Fieldslib.Field.t ->
              'compile_acc__ -> ('input__ -> string) * 'compile_acc__) ->
        passwd:((Unix_syscalls.Passwd.t, string) Fieldslib.Field.t ->
                'compile_acc__ -> ('input__ -> string) * 'compile_acc__) ->
        uid:((Unix_syscalls.Passwd.t, int) Fieldslib.Field.t ->
             'compile_acc__ -> ('input__ -> int) * 'compile_acc__) ->
        gid:((Unix_syscalls.Passwd.t, int) Fieldslib.Field.t ->
             'compile_acc__ -> ('input__ -> int) * 'compile_acc__) ->
        gecos:((Unix_syscalls.Passwd.t, string) Fieldslib.Field.t ->
               'compile_acc__ -> ('input__ -> string) * 'compile_acc__) ->
        dir:((Unix_syscalls.Passwd.t, string) Fieldslib.Field.t ->
             'compile_acc__ -> ('input__ -> string) * 'compile_acc__) ->
        shell:((Unix_syscalls.Passwd.t, string) Fieldslib.Field.t ->
               'compile_acc__ -> ('input__ -> string) * 'compile_acc__) ->
        'compile_acc__ ->
        ('input__ -> Unix_syscalls.Passwd.t) * 'compile_acc__
      val create :
        name:string ->
        passwd:string ->
        uid:int ->
        gid:int ->
        gecos:string -> dir:string -> shell:string -> Unix_syscalls.Passwd.t
      val map :
        name:((Unix_syscalls.Passwd.t, string) Fieldslib.Field.t -> string) ->
        passwd:((Unix_syscalls.Passwd.t, string) Fieldslib.Field.t -> string) ->
        uid:((Unix_syscalls.Passwd.t, int) Fieldslib.Field.t -> int) ->
        gid:((Unix_syscalls.Passwd.t, int) Fieldslib.Field.t -> int) ->
        gecos:((Unix_syscalls.Passwd.t, string) Fieldslib.Field.t -> string) ->
        dir:((Unix_syscalls.Passwd.t, string) Fieldslib.Field.t -> string) ->
        shell:((Unix_syscalls.Passwd.t, string) Fieldslib.Field.t -> string) ->
        Unix_syscalls.Passwd.t
      val iter :
        name:((Unix_syscalls.Passwd.t, string) Fieldslib.Field.t -> unit) ->
        passwd:((Unix_syscalls.Passwd.t, string) Fieldslib.Field.t -> unit) ->
        uid:((Unix_syscalls.Passwd.t, int) Fieldslib.Field.t -> unit) ->
        gid:((Unix_syscalls.Passwd.t, int) Fieldslib.Field.t -> unit) ->
        gecos:((Unix_syscalls.Passwd.t, string) Fieldslib.Field.t -> unit) ->
        dir:((Unix_syscalls.Passwd.t, string) Fieldslib.Field.t -> unit) ->
        shell:((Unix_syscalls.Passwd.t, string) Fieldslib.Field.t -> unit) ->
        unit
      val for_all :
        name:((Unix_syscalls.Passwd.t, string) Fieldslib.Field.t -> bool) ->
        passwd:((Unix_syscalls.Passwd.t, string) Fieldslib.Field.t -> bool) ->
        uid:((Unix_syscalls.Passwd.t, int) Fieldslib.Field.t -> bool) ->
        gid:((Unix_syscalls.Passwd.t, int) Fieldslib.Field.t -> bool) ->
        gecos:((Unix_syscalls.Passwd.t, string) Fieldslib.Field.t -> bool) ->
        dir:((Unix_syscalls.Passwd.t, string) Fieldslib.Field.t -> bool) ->
        shell:((Unix_syscalls.Passwd.t, string) Fieldslib.Field.t -> bool) ->
        bool
      val exists :
        name:((Unix_syscalls.Passwd.t, string) Fieldslib.Field.t -> bool) ->
        passwd:((Unix_syscalls.Passwd.t, string) Fieldslib.Field.t -> bool) ->
        uid:((Unix_syscalls.Passwd.t, int) Fieldslib.Field.t -> bool) ->
        gid:((Unix_syscalls.Passwd.t, int) Fieldslib.Field.t -> bool) ->
        gecos:((Unix_syscalls.Passwd.t, string) Fieldslib.Field.t -> bool) ->
        dir:((Unix_syscalls.Passwd.t, string) Fieldslib.Field.t -> bool) ->
        shell:((Unix_syscalls.Passwd.t, string) Fieldslib.Field.t -> bool) ->
        bool
      val to_list :
        name:((Unix_syscalls.Passwd.t, string) Fieldslib.Field.t -> 'elem__) ->
        passwd:((Unix_syscalls.Passwd.t, string) Fieldslib.Field.t -> 'elem__) ->
        uid:((Unix_syscalls.Passwd.t, int) Fieldslib.Field.t -> 'elem__) ->
        gid:((Unix_syscalls.Passwd.t, int) Fieldslib.Field.t -> 'elem__) ->
        gecos:((Unix_syscalls.Passwd.t, string) Fieldslib.Field.t -> 'elem__) ->
        dir:((Unix_syscalls.Passwd.t, string) Fieldslib.Field.t -> 'elem__) ->
        shell:((Unix_syscalls.Passwd.t, string) Fieldslib.Field.t -> 'elem__) ->
        'elem__ list
      val map_poly :
        ([< `Read | `Set_and_create ], Unix_syscalls.Passwd.t, 'x0)
        Fieldslib.Field.user -> 'x0 list
      module Direct :
        sig
          val iter :
            Unix_syscalls.Passwd.t ->
            name:((Unix_syscalls.Passwd.t, string) Fieldslib.Field.t ->
                  Unix_syscalls.Passwd.t -> string -> unit) ->
            passwd:((Unix_syscalls.Passwd.t, string) Fieldslib.Field.t ->
                    Unix_syscalls.Passwd.t -> string -> unit) ->
            uid:((Unix_syscalls.Passwd.t, int) Fieldslib.Field.t ->
                 Unix_syscalls.Passwd.t -> int -> unit) ->
            gid:((Unix_syscalls.Passwd.t, int) Fieldslib.Field.t ->
                 Unix_syscalls.Passwd.t -> int -> unit) ->
            gecos:((Unix_syscalls.Passwd.t, string) Fieldslib.Field.t ->
                   Unix_syscalls.Passwd.t -> string -> unit) ->
            dir:((Unix_syscalls.Passwd.t, string) Fieldslib.Field.t ->
                 Unix_syscalls.Passwd.t -> string -> unit) ->
            shell:((Unix_syscalls.Passwd.t, string) Fieldslib.Field.t ->
                   Unix_syscalls.Passwd.t -> string -> unit) ->
            unit
          val fold :
            Unix_syscalls.Passwd.t ->
            init:'acc__ ->
            name:('acc__ ->
                  (Unix_syscalls.Passwd.t, string) Fieldslib.Field.t ->
                  Unix_syscalls.Passwd.t -> string -> 'acc__) ->
            passwd:('acc__ ->
                    (Unix_syscalls.Passwd.t, string) Fieldslib.Field.t ->
                    Unix_syscalls.Passwd.t -> string -> 'acc__) ->
            uid:('acc__ ->
                 (Unix_syscalls.Passwd.t, int) Fieldslib.Field.t ->
                 Unix_syscalls.Passwd.t -> int -> 'acc__) ->
            gid:('acc__ ->
                 (Unix_syscalls.Passwd.t, int) Fieldslib.Field.t ->
                 Unix_syscalls.Passwd.t -> int -> 'acc__) ->
            gecos:('acc__ ->
                   (Unix_syscalls.Passwd.t, string) Fieldslib.Field.t ->
                   Unix_syscalls.Passwd.t -> string -> 'acc__) ->
            dir:('acc__ ->
                 (Unix_syscalls.Passwd.t, string) Fieldslib.Field.t ->
                 Unix_syscalls.Passwd.t -> string -> 'acc__) ->
            shell:('acc__ ->
                   (Unix_syscalls.Passwd.t, string) Fieldslib.Field.t ->
                   Unix_syscalls.Passwd.t -> string -> 'acc__) ->
            'acc__
        end
    end
  val getbyname : string -> Unix_syscalls.Passwd.t option Import.Deferred.t
  val getbyname_exn : string -> Unix_syscalls.Passwd.t Import.Deferred.t
  val getbyuid : int -> Unix_syscalls.Passwd.t option Import.Deferred.t
  val getbyuid_exn : int -> Unix_syscalls.Passwd.t Import.Deferred.t
  val t_of_sexp : Sexplib.Sexp.t -> Unix_syscalls.Passwd.t
  val sexp_of_t : Unix_syscalls.Passwd.t -> Sexplib.Sexp.t
end