#pragma once

#include "LibLsp/JsonRpc/RequestInMessage.h"
#include "LibLsp/JsonRpc/lsResponseMessage.h"

#include "LibLsp/lsp/CodeActionParams.h"
#include "checkHashCodeEqualsStatus.h"
#include "checkConstructorsStatus.h"

struct  LspDelegateField {
        LspVariableBinding field;
        std::vector<LspMethodBinding> delegateMethods;

        MAKE_SWAP_METHOD(LspDelegateField, field, delegateMethods);
};
MAKE_REFLECT_STRUCT(LspDelegateField, field, delegateMethods);


struct CheckDelegateMethodsResponse {
        std::vector<LspDelegateField> delegateFields;

        MAKE_SWAP_METHOD(CheckDelegateMethodsResponse, delegateFields)
};
MAKE_REFLECT_STRUCT(CheckDelegateMethodsResponse, delegateFields)

DEFINE_REQUEST_RESPONSE_TYPE(java_checkDelegateMethodsStatus,
        lsCodeActionParams, CheckDelegateMethodsResponse, "java/checkDelegateMethodsStatus");


