/**
 * La classe d'un champ d'une expression _cron_.
 *
 * @class
 */
export default class Field {
    /**
     * Crée un champ d'une expression _cron_ avec un intervalle de valeurs
     * autorisées.
     *
     * @param {number}  min              La valeur minimale (incluse) autorisée.
     * @param {number}  max              La valeur maximale (incluse) autorisée.
     * @param {number}  step             Le pas entre les valeurs.
     * @param {Object}  extra            Les informations supplémentaires.
     * @param {boolean} extra.restricted `true` pour un champ qui était
     *                                   différent de `"*"` ; sinon `false`.
     * @param {boolean} extra.random     `false` pour générer un nombre
     *                                   aléatoire pour le minimum.
     * @returns {Field} Le champ avec les valeurs de l'intervalle.
     * @see https://github.com/tc39/proposal-iterator.range
     */
    static range(min: number, max: number, step: number, extra: {
        restricted: boolean;
        random: boolean;
    }): Field;
    /**
     * Regroupe les valeurs de plusieurs champs.
     *
     * @param {Field[]} fields La liste des champs qui seront regroupés.
     * @returns {Field} Le champ avec la fusion des valeurs.
     */
    static flat(fields: Field[]): Field;
    /**
     * Crée un champ d'une expression _cron_.
     *
     * @param {number[]} values     La liste des valeurs autorisées pour le
     *                              champ.
     * @param {boolean}  restricted `true` pour un champ qui était différent de
     *                              `"*"` ; sinon `false`.
     */
    constructor(values: number[], restricted: boolean);
    /**
     * Retourne la marque indiquant si le champ était différent de `"*"`.
     *
     * @returns {boolean} `true` si le champ était différent de `"*"` ; sinon
     *                    `false`.
     */
    get restricted(): boolean;
    /**
     * Retourne la valeur minimale.
     *
     * @returns {number} La valeur minimale.
     */
    get min(): number;
    /**
     * Retourne la valeur maximale.
     *
     * @returns {number} La valeur maximale.
     */
    get max(): number;
    /**
     * Retourne la liste des valeurs autorisées pour le champ.
     *
     * @returns {number[]} La liste des valeurs.
     */
    values(): number[];
    /**
     * Applique une fonction sur toutes les valeurs.
     *
     * @param {function(number, number, number[]): number} callback La fonction
     *                                                              appelée sur
     *                                                              les valeurs.
     * @returns {Field} Le nouveau champ avec les valeurs modifiées.
     */
    map(callback: (arg0: number, arg1: number, arg2: number[]) => number): Field;
    /**
     * Teste si une valeur est présente dans la liste des valeurs.
     *
     * @param {number} value La valeur qui sera testée.
     * @returns {boolean} `true` si la valeur est présente ; sinon `false`.
     */
    test(value: number): boolean;
    /**
     * Calcule la prochaine valeur supérieure à une valeur.
     *
     * @param {number} value La valeur initiale.
     * @returns {number | undefined} La prochaine valeur ; ou `undefined` si la
     *                               valeur initiale est supérieure à la valeur
     *                               maximale.
     */
    next(value: number): number | undefined;
    #private;
}
