#pragma once

#include "LibLsp/JsonRpc/NotificationInMessage.h"
#include "LibLsp/lsp/lsp_diagnostic.h"

// Diagnostics
namespace TextDocumentPublishDiagnostics
{
struct Params
{
    // The URI for which diagnostic information is reported.
    lsDocumentUri uri;

    // An array of diagnostic information items.
    std::vector<lsDiagnostic> diagnostics;
    MAKE_SWAP_METHOD(Params, uri, diagnostics);
};

}; // namespace TextDocumentPublishDiagnostics
MAKE_REFLECT_STRUCT(TextDocumentPublishDiagnostics::Params, uri, diagnostics);

/**
 * Diagnostics notifications are sent from the server to the client to
 * signal results of validation runs.
 */
DEFINE_NOTIFICATION_TYPE(
    Notify_TextDocumentPublishDiagnostics, TextDocumentPublishDiagnostics::Params, "textDocument/publishDiagnostics"
);
