# Module Extended_unix.Quota

    module Quota: sig .. end

    type bytes = private Core.Std.Int63.t

    type inodes = private Core.Std.Int63.t

    val bytes : Core.Std.Int63.t -> bytes

    val inodes : Core.Std.Int63.t -> inodes

    type 'units limit = {

`` | `soft : `'units option`;`
`` | `hard : `'units option`;`
`` | `grace : `Core.Std.Time.t option`;`

}

    type 'units usage = private 'units

    val query : [ `Group | `User ] ->
           id:int ->
           path:string ->
           (bytes limit *
            bytes usage *
            inodes limit *
            inodes usage)
           Core.Std.Or_error.t

    val set : [ `Group | `User ] ->
           id:int ->
           path:string ->
           bytes limit ->
           inodes limit ->
           unit Core.Std.Or_error.t

    val bytes_of_sexp : Sexplib.Sexp.t -> bytes

    val sexp_of_bytes : bytes -> Sexplib.Sexp.t

    val inodes_of_sexp : Sexplib.Sexp.t -> inodes

    val sexp_of_inodes : inodes -> Sexplib.Sexp.t

    val limit_of_sexp : (Sexplib.Sexp.t -> 'units) ->
           Sexplib.Sexp.t -> 'units limit

    val sexp_of_limit : ('units -> Sexplib.Sexp.t) ->
           'units limit -> Sexplib.Sexp.t