#ifndef COUNTDOWN_HPP_INCLUDED
#define COUNTDOWN_HPP_INCLUDED

#include <iostream>
#include <cstdint>

/** @addtogroup Types
* @{ */
class Countdown
{
    public:
        Countdown();
        Countdown(std::uint64_t Time);
        void Reset();
        void SetTime(std::uint64_t Time);
        std::uint64_t GetTimeRemaining() const;
        std::uint64_t GetStartTime() const;
        bool IsFinished() const;

        friend std::ostream& operator<<(std::ostream& OS, const Countdown& C);
        operator bool() const;

        ~Countdown();
    private:
        std::uint64_t Time;
        std::uint64_t StartTime;
};

/** @} */

#endif // COUNTDOWN_HPP_INCLUDED
