#pragma once

#include <iostream>
#include <string>
#include "StateBase.hpp"
#include "StateVariables.hpp"

class DescendState final : public StateBase
{
  private:
	enum Actions
	{
		monitorDescend,
		lastAction
	};

  public:
	DescendState(std::string stateid, uint32_t timeout = 0) : StateBase{stateid, timeout}
	{
	}

  private:
	StateVariables SV;

	void doStateEntry() final;
	void doStateActions() final;
	StateNames checkEvents() final;
	void doStateExit(bool timeout) final;
	void defineActionLabels() final;

	Actions runDescendMonitor();
	void getSample();
};
