#pragma once

#include "esphome/core/component.h"
#include "esphome/components/output/binary_output.h"
#include "esphome/components/light/light_output.h"

namespace esphome::binary {

class BinaryLightOutput final : public light::LightOutput {
 public:
  void set_output(output::BinaryOutput *output) { output_ = output; }
  light::LightTraits get_traits() override {
    auto traits = light::LightTraits();
    traits.set_supported_color_modes({light::ColorMode::ON_OFF});
    return traits;
  }
  void write_state(light::LightState *state) override {
    bool binary;
    state->current_values_as_binary(&binary);
    if (binary) {
      this->output_->turn_on();
    } else {
      this->output_->turn_off();
    }
  }

 protected:
  output::BinaryOutput *output_;
};

}  // namespace esphome::binary
