#ifndef LOG_MANAGER_H
#define LOG_MANAGER_H

#include "esp_err.h"
#include <stdarg.h>
#include <stdint.h>
#include <stdbool.h>

#ifdef __cplusplus
extern "C" {
#endif

// Log levels
typedef enum {
    LOG_LEVEL_DEBUG = 0,
    LOG_LEVEL_INFO,
    LOG_LEVEL_WARN,
    LOG_LEVEL_ERROR,
    LOG_LEVEL_CRITICAL
} log_level_t;

// Function prototypes
esp_err_t log_manager_init(void);
esp_err_t log_manager_deinit(void);

// Main logging function
esp_err_t log_manager_log(log_level_t level, const char* tag, const char* format, ...);

// Convenience logging functions
esp_err_t log_manager_log_debug(const char* tag, const char* format, ...);
esp_err_t log_manager_log_info(const char* tag, const char* format, ...);
esp_err_t log_manager_log_warn(const char* tag, const char* format, ...);
esp_err_t log_manager_log_error(const char* tag, const char* format, ...);
esp_err_t log_manager_log_critical(const char* tag, const char* format, ...);

// Log management functions
esp_err_t log_manager_rotate_logs(void);
esp_err_t log_manager_cleanup_old_logs(void);
esp_err_t log_manager_get_logs(char** logs, size_t* logs_size);
esp_err_t log_manager_clear_logs(void);

#ifdef __cplusplus
}
#endif

#endif // LOG_MANAGER_H 