#pragma once
#include "./basic_types.hpp"

namespace lsp::protocol
{
    struct Registration
    {
        string id;
        string method;
        std::optional<LSPAny> registerOptions;
    };

    struct RegistrationParams
    {
        std::vector<Registration> registrations;
    };

    struct StaticRegistrationOptions
    {
        std::optional<string> id;
    };

    struct TextDocumentRegistrationOptions
    {
        std::optional<DocumentSelector> documentSelector;
    };

    struct Unregistration
    {
        string id;
        string method;
    };

    struct UnregistrationParams
    {
        std::vector<Unregistration> unregistration;
    };

} // namespace lsp::protocol
