#ifndef BUTTON_BEHAVIOUR_h
#define BUTTON_BEHAVIOUR_h
#include "Arduino.h"
#include "Behaviours.h"
#include <VizBlocks.h>

class ButtonPressed : public Behaviour
{
	/*
	 * Class that defines a behaviour that publishes a
	 * ButtonPressed message to the input topic of the
	 * MQQT broker
	 */
	VizBlocks* _node;

public:
	ButtonPressed(VizBlocks* node, String name = "ButtonPressed");
	char* args();
	String start(String args);
};

class ButtonReleased : public Behaviour
{
	/*
	 * Class that defines a behaviour that publishes a
	 * ButtonReleased message to the input topic of the
	 * MQQT broker
	 */
	VizBlocks* _node;

public:
	ButtonReleased(VizBlocks* node, String name = "ButtonReleased");
	char* args();
	String start(String args);
};

class ButtonClicked : public Behaviour
{
	/*
	 * Class that defines a behaviour that publishes a
	 * ButtonClicked message to the input topic of the
	 * MQQT broker
	 */
	VizBlocks* _node;

public:
	ButtonClicked(VizBlocks* node, String name = "ButtonClicked");
	char* args();
	String start(String args);
};

class ButtonHeld : public Behaviour
{
	/*
	 * Class that defines a behaviour that publishes a
	 * ButtonLongPressed message to the input topic of the
	 * MQQT broker
	 */
	VizBlocks* _node;

public:
	ButtonHeld(VizBlocks* node, String name = "ButtonHeld");
	/**
	   @brief What does this do?
	 */
	char* args();

	/**
	   @brief What does this do?
	 */
	String start(String args);
};

class ButtonTick : public Behaviour
{
	/*
	 * Class that defines a behaviour that publishes a
	 * ButtonRepeatPressed message to the input topic of the
	 * MQQT broker
	 */
	VizBlocks* _node;

public:
	ButtonTick(VizBlocks* node, String name = "ButtonTick");

	/**
	   @brief What does this do?
	 */
	char* args();
	String start(String args);
};

#endif