#pragma once #include "./basic_types.hpp" namespace lsp::protocol { enum class ErrorCode : int { kParseError = -32700, kInvalidRequest = -32600, kMethodNotFound = -32601, kInvalidParams = -32602, kInternalError = -32603, kJsonrpcReservedErrorRangeStart = -32099, kServerNotInitialized = -32002, kUnknownErrorCode = -32001, kJsonrpcReservedErrorRangeEnd = -32000, kLspReservedErrorRangeStart = -32899, kRequestFailed = -32803, kServerCancelled = -32802, kContentModified = -32801, kRequestCancelled = -32800, kLspReservedErrorRangeEnd = -32800 }; struct Message { string jsonrpc = "2.0"; }; struct RequestMessage: Message { std::variant id; string method; std::optional> params; }; struct ResponseError: Message { ErrorCode code; string message; std::optional data; }; struct ResponseMessage: Message { std::variant id; std::optional result; std::optional error; }; struct NotificationMessage: Message { string method; std::optional params; }; struct CancelParams { std::variant id; }; }