/**
 * @file license.h
 * @brief 设备授权鉴权
 */

#ifndef CORE_LICENSE_H
#define CORE_LICENSE_H

#include <stdint.h>
#include <stddef.h>
#include <stdbool.h>

#ifdef __cplusplus
extern "C" {
#endif

typedef struct engine_internal_ctx engine_internal_ctx_t;

/** 鉴权响应类型 */
typedef enum {
    LIC_RESP_UNKNOWN = 0,
    LIC_RESP_MUST,       /* 服务端要求激活 [MUST] */
    LIC_RESP_PASS,       /* 鉴权通过 [RES]:[PASS] */
    LIC_RESP_FAILED,     /* 鉴权失败 [RES]:[FAILED] */
    LIC_RESP_ACTIVE_OK,  /* 激活确认 [ACTIVE]:xxx */
} license_resp_type_t;

/**
 * @brief 发送激活消息
 * @param device_id 设备 ID
 * @param user_id   用户 ID
 * @param license_key 授权密钥
 */
int license_activate(engine_internal_ctx_t *ctx,
                     const char *device_id, const char *user_id,
                     const char *license_key);

/**
 * @brief 解析鉴权响应类型
 * @return 响应类型枚举
 */
license_resp_type_t license_parse_response(const char *buf, size_t len);

/** @brief 判断鉴权是否成功（PASS 或 ACTIVE_OK）*/
bool license_handle_response(const char *buf, size_t len);

#ifdef __cplusplus
}
#endif

#endif /* CORE_LICENSE_H */
