#ifndef PRODUCTION_SUSHID_SAFEPOWER_AGENT_SCHEDULER_INTERFACE_H_
#define PRODUCTION_SUSHID_SAFEPOWER_AGENT_SCHEDULER_INTERFACE_H_

#include <string_view>

#include "absl/functional/any_invocable.h"
#include "absl/status/status.h"
#include "absl/strings/string_view.h"
#include "absl/time/time.h"

namespace safepower_agent {

class SchedulerInterface {
 public:
  virtual ~SchedulerInterface() = default;

  // Schedule a task that will call a function every interval
  // returns an error if name is already in use
  virtual absl::Status PeriodicCall(absl::AnyInvocable<void()> fn,
                                    absl::Duration interval,
                                    std::string_view name) = 0;

  // Schedule task that will call a function once after waitDuration
  // returns an error if name is already in use
  virtual absl::Status DelayCall(absl::AnyInvocable<void() &&> fn,
                                 absl::Duration wait_duration,
                                 std::string_view name) = 0;

  // Cancel a Scheduled task permanently
  // returns an error if name is not in use
  virtual absl::Status CancelCall(std::string_view name) = 0;

  // Cancel all Scheduled task permanently
  virtual absl::Status CancelAll() = 0;

  // Explicitly disables the Scheduler
  virtual absl::Status Shutdown() = 0;
};
}  // namespace safepower_agent
#endif  // PRODUCTION_SUSHID_SAFEPOWER_AGENT_SCHEDULER_INTERFACE_H_
