#ifndef LOGINAPI_H
#define LOGINAPI_H

#include <QFuture>
#include <QJsonObject>
#include <QString>

#include "../network/networkaccessmanager.h"

namespace AuthApi {

// 登录接口参数
struct LoginParams
{
    QString username;
    QString password;
};

// 登录接口返回值
struct LoginResult
{
    QString accessToken;
};

// 刷新令牌返回结果
struct RefreshTokenResult
{
    QString data;
    int status;
};

/**
 * 登录
 * @param data 登录参数
 * @return 返回包含 LoginResult 的 Future
 */
QFuture<HttpResponse> loginApi(const LoginParams& data);

/**
 * 刷新accessToken
 * @return 返回包含 RefreshTokenResult 的 Future
 */
QFuture<HttpResponse> refreshTokenApi();

/**
 * 退出登录
 * @return 返回包含基本响应的 Future
 */
QFuture<HttpResponse> logoutApi();

/**
 * 获取用户权限码
 * @return 返回包含权限码数组的 Future
 */
QFuture<HttpResponse> getAccessCodesApi();

} // namespace AuthApi

#endif // LOGINAPI_H
