#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"
)