#pragma once
#include "config.h"

#include "cpld.hpp"
#include "gpio.hpp"

#include <nlohmann/json.hpp>

#include <iostream>

enum class ConfigType
{
    gpio,
    cpld
};

// this struct represents button interface
struct ButtonConfig
{
    ConfigType type;
    std::string formFactorName;   // name of the button interface
    std::vector<GpioInfo> gpios;  // holds single or group gpio config
    CpldInfo cpld;                // holds single cpld config
    std::vector<int> fds;         // store all the fds listen io event which
                                  // mapped with the gpio or cpld
    nlohmann::json extraJsonInfo; // corresponding to button interface
};
