#ifndef EVSE_LINK_EVENTS_H_
#define EVSE_LINK_EVENTS_H_

#include "esp_event.h"
#include <stdint.h>

ESP_EVENT_DECLARE_BASE(EVSE_LINK_EVENTS);

#define EVSE_LINK_TAG_MAX_LEN 32

typedef enum {
    LINK_EVENT_FRAME_RECEIVED,
    LINK_EVENT_SLAVE_ONLINE,         // payload: evse_link_slave_presence_event_t
    LINK_EVENT_SLAVE_OFFLINE,        // payload: evse_link_slave_presence_event_t (master-side) ou NULL (slave-side fallback)
    LINK_EVENT_MASTER_POLL_SENT,
    LINK_EVENT_CURRENT_LIMIT_APPLIED,
    LINK_EVENT_SLAVE_CONFIG_UPDATED,
    LINK_EVENT_REMOTE_AUTH_GRANTED
} evse_link_event_t;

typedef struct {
    char tag[EVSE_LINK_TAG_MAX_LEN];
} evse_link_auth_grant_event_t;

typedef struct {
    uint8_t slave_id;
} evse_link_slave_presence_event_t;

#endif // EVSE_LINK_EVENTS_H_
