#pragma once

#include "LibLsp/JsonRpc/RequestInMessage.h"
#include "LibLsp/JsonRpc/lsResponseMessage.h"
#include "LibLsp/lsp/CodeActionParams.h"
#include "checkHashCodeEqualsStatus.h"

struct LspMethodBinding
{
    std::string bindingKey;
    std::string name;
    std::vector<std::string> parameters;

    MAKE_SWAP_METHOD(LspMethodBinding, bindingKey, name, parameters);
};
MAKE_REFLECT_STRUCT(LspMethodBinding, bindingKey, name, parameters);

struct CheckConstructorsResponse
{
    std::vector<LspMethodBinding> constructors;
    std::vector<LspVariableBinding> fields;
    MAKE_SWAP_METHOD(CheckConstructorsResponse, constructors, fields)
};
MAKE_REFLECT_STRUCT(CheckConstructorsResponse, constructors, fields)

DEFINE_REQUEST_RESPONSE_TYPE(
    java_checkConstructorsStatus, lsCodeActionParams, CheckConstructorsResponse, "java/checkConstructorsStatus"
)
