#pragma once
#include "esp_event.h"
#include "auth_types.h"   // só tipos comuns; evita incluir auth.h

ESP_EVENT_DECLARE_BASE(AUTH_EVENTS);

/* IDs de eventos */
typedef enum {
    AUTH_EVENT_TAG_PROCESSED = 0,  // resultado LOCAL -> auth_tag_event_data_t
    AUTH_EVENT_TAG_VERIFY,         // pedir validação OCPP -> auth_tag_verify_event_t
    AUTH_EVENT_TAG_SAVED,          // registada (modo registo) -> auth_tag_event_data_t
    AUTH_EVENT_MODE_CHANGED,       // modo alterado -> auth_mode_event_data_t
    AUTH_EVENT_INIT,               // estado inicial -> auth_mode_event_data_t
} auth_event_id_t;

/* Payloads */
typedef struct {
    char tag[AUTH_TAG_MAX_LEN];
    bool authorized;
} auth_tag_event_data_t;

typedef struct {
    char tag[AUTH_TAG_MAX_LEN];
    uint32_t req_id;               // opcional p/ correlacionar
} auth_tag_verify_event_t;

typedef struct {
    auth_mode_t mode;
} auth_mode_event_data_t;
