#pragma once

#include <Arduino.h>
#include "config.h"
#include "data_model.h"

void display_init();
void display_set_role(DeviceRole role);
void display_set_self_ids(uint16_t short_id, const char *device_id);
void display_set_sender_statuses(const SenderStatus *statuses, uint8_t count);
void display_set_last_meter(const MeterData &data);
void display_set_last_read(bool ok, uint32_t ts_utc);
void display_set_last_tx(bool ok, uint32_t ts_utc);
void display_set_sender_queue(uint8_t depth, bool build_pending);
void display_set_sender_batches(uint16_t last_acked_batch_id, uint16_t current_batch_id);
void display_set_last_error(FaultType type, uint32_t ts_utc, uint32_t ts_ms);
void display_set_receiver_status(bool ap_mode, const char *ssid, bool mqtt_ok);
void display_power_down();
void display_tick();
#ifdef ENABLE_TEST_MODE
void display_set_test_code(const char *code);
void display_set_test_code_for_sender(uint8_t index, const char *code);
#endif
