diff --git a/src/sdevent.hpp b/src/sdevent.hpp
new file mode 100644
index 0000000..be8b510
--- /dev/null
+++ b/src/sdevent.hpp
@@ -0,0 +1,82 @@
+#pragma once
+
+#include "sdevent/event.hpp"
+#include "sdevent/timer.hpp"
+
+namespace phosphor
+{
+namespace dbus
+{
+namespace monitoring
+{
+
+/** @class SDEvent
+ *  @brief SDEventType access delegate implementation for sdevent.
+ */
+class SDEvent
+{
+    protected:
+        /** @brief Share a single event loop amongst users. */
+        static auto& getEvent()
+        {
+            static auto event = sdevent::event::newDefault();
+            return event;
+        }
+
+    public:
+        /** @brief Wrapper for sd_event_now. */
+        static auto now()
+        {
+            return getEvent().now();
+        }
+};
+
+/** @class SDEventTimer
+ *  @brief TimerType access delegate implementation for sdevent.
+ */
+class SDEventTimer : public SDEvent
+{
+    public:
+        SDEventTimer() = delete;
+        SDEventTimer(const SDEventTimer&) = default;
+        SDEventTimer(SDEventTimer&&) = default;
+        SDEventTimer& operator=(const SDEventTimer&) = default;
+        SDEventTimer& operator=(SDEventTimer&&) = default;
+        ~SDEventTimer() = default;
+
+        explicit SDEventTimer(
+            const sdevent::event::timer::Timer::Callback& callback)
+            : timer(getEvent(), callback) {}
+
+        /** @brief Update a timer expiration. */
+        void update(
+            const std::chrono::steady_clock::time_point& expires)
+        {
+            timer.setTime(expires);
+        }
+
+        /** @brief Query timer state. */
+        auto enabled()
+        {
+            return timer.enabled() != SD_EVENT_OFF;
+        }
+
+        /** @brief Enable a timer. */
+        void enable()
+        {
+            timer.enable(SD_EVENT_ONESHOT);
+        }
+
+        /** @brief Disable a timer. */
+        void disable()
+        {
+            timer.enable(SD_EVENT_OFF);
+        }
+
+    private:
+        sdevent::event::timer::Timer timer;
+};
+
+} // namespace monitoring
+} // namespace dbus
+} // namespace phosphor
diff --git a/src/templates/generated.mako.hpp b/src/templates/generated.mako.hpp
index 9e89983..914b065 100644
--- a/src/templates/generated.mako.hpp
+++ b/src/templates/generated.mako.hpp
@@ -10,6 +10,7 @@
 #include "method.hpp"
 #include "propertywatchimpl.hpp"
 #include "sdbusplus.hpp"
+#include "sdevent.hpp"
 
 using namespace std::string_literals;
 
