package p.studio.lsp.services.protocol.mapping;

import org.eclipse.lsp4j.Hover;
import org.eclipse.lsp4j.InitializeResult;
import org.eclipse.lsp4j.MessageParams;
import org.eclipse.lsp4j.PublishDiagnosticsParams;
import p.studio.lsp.messages.BaselineDocumentAnalysis;
import p.studio.lsp.messages.BaselineHover;
import p.studio.lsp.messages.BaselineServerDescription;

public interface ProtocolMessageMapper {
    InitializeResult mapInitializeResult(BaselineServerDescription description);

    PublishDiagnosticsParams mapDiagnostics(String uri, BaselineDocumentAnalysis analysis);

    PublishDiagnosticsParams emptyDiagnostics(String uri);

    Hover mapHover(BaselineHover hover);

    MessageParams mapInfoMessage(String message);
    MessageParams mapErrorMessage(String message);
    MessageParams mapWarningMessage(String message);
}
