constructor(options) {
        this.config = options.config;

        this.nextPollTimeout = undefined;
        this.retryWaitTime = BASE_RETRY_WAIT_TIME;

        this.config.onUpdate((key) => {
            if (key === "ntpClient") {
                this.reconfigure();
            }
        });

        if (this.config.get("ntpClient").enabled) {
            this.state = new States.ValetudoNTPClientEnabledState({});
        } else {
            this.state = new States.ValetudoNTPClientDisabledState({});
        }

        // On startup, we need to wait for a while for Valetudo to fully start up (at least when using pkg) or else
        // we will get ntp sync timeouts in the log due to something blocking the process for a while
        setTimeout(() => {
            this.reconfigure();
        }, 10000);
    }
@param {object} options
@param {import("./Configuration")} options.config