/**
 * La classe d'une tâche _cronée_.
 *
 * @class
 */
export default class Cron {
    /**
     * Crée une tâche _cronée_.
     *
     * @param {string | string[]} cronex            La ou les expressions _cron_
     *                                              indiquant les horaires
     *                                              d'exécution de la tâche.
     * @param {Function}          func              La fonction appelée à chaque
     *                                              horaire indiqué dans les
     *                                              expressions _cron_.
     * @param {Object}            [options]         Les options de la tâche
     *                                              _cronée_.
     * @param {boolean}           [options.active]  `true` (par défaut) pour
     *                                              activer la tâche ; sinon
     *                                              `false`.
     * @param {any}               [options.thisArg] Le `this` utilisé pour la
     *                                              fonction (la tâche _cronée_
     *                                              par défaut).
     * @param {any[]}             [options.args]    Les paramètres passés à la
     *                                              fonction (aucun paramètre
     *                                              par défaut).
     * @throws {Error}      Si la syntaxe d'une expression _cron_ est
     *                      incorrecte.
     * @throws {RangeError} Si un intervalle d'une expression _cron_ est
     *                      invalide (hors limite ou quand la borne supérieure
     *                      est plus petite que la borne inférieure).
     * @throws {TypeError}  Si le constructeur est appelé sans le mot clé `new`
     *                      ou si un des paramètres n'a pas le bon type.
     */
    constructor(cronex: string | string[], func: Function, options?: {
        active?: boolean | undefined;
        thisArg?: any;
        args?: any[] | undefined;
    });
    /**
     * Définit l'état de la tâche.
     *
     * @param {boolean} value `true` pour activer la tâche ; sinon `false`.
     */
    set active(value: boolean);
    /**
     * Récupère l'état de la tâche (active ou non).
     *
     * @returns {boolean} `true` si la tâche est active ; sinon `false`.
     */
    get active(): boolean;
    /**
     * Exécute manuellement la fonction.
     */
    run(): void;
    /**
     * Active la tâche.
     *
     * @returns {boolean} `true` quand la tâche a été activée ; `false` si elle
     *                    était déjà active.
     */
    start(): boolean;
    /**
     * Désactive la tâche.
     *
     * @returns {boolean} `true` quand la tâche a été désactivée ; `false` si
     *                    elle était déjà inactive.
     */
    stop(): boolean;
    /**
     * Teste si une date respecte une des expressions _cron_ de la tâche.
     *
     * @param {Date} [date] La date qui sera testée (ou l'instant présent par
     *                      défaut).
     * @returns {boolean} `true` si une des expressions est respectée ; sinon
     *                    `false`.
     */
    test(date?: Date): boolean;
    /**
     * Calcule la prochaine date respectant une des expressions _cron_ de la
     * tâche.
     *
     * @param {Date} [start] La date de début (ou l'instant présent par défaut).
     * @returns {Date} La prochaine date respectant une des expressions.
     */
    next(start?: Date): Date;
    /**
     * Désactive la tâche lors de la suppression de l'objet.
     */
    [Symbol.dispose](): void;
    #private;
}
