# Path: pygls/lsp/types/basic_structures.py
# URI = NewType('URI', str)
# T = TypeVar('T')
# def snake_to_camel(string: str) -> str:
#     def check_result_or_error(cls, values):
#     def check_result_or_error(cls, values):
#     def __eq__(self, other):
#     def __ge__(self, other):
#     def __gt__(self, other):
#     def __le__(self, other):
#     def __lt__(self, other):
#     def __ne__(self, other):
#     def __hash__(self):
#     def __iter__(self):
#     def __repr__(self):
#     def __eq__(self, other):
#     def __hash__(self):
#     def __iter__(self):
#     def __repr__(self):
#     def __eq__(self, other):
#     def __repr__(self):
#     def check_result_or_error(cls, values):
# class Model(BaseModel):
#     class Config:
# class JsonRpcMessage(Model):
# class JsonRPCNotification(JsonRpcMessage):
# class JsonRPCRequestMessage(JsonRpcMessage):
# class JsonRPCResponseMessage(JsonRpcMessage):
# class Position(Model):
# class Range(Model):
# class Location(Model):
# class Trace(str, enum.Enum):
# class CancelParams(Model):
# class ProgressParams(Model):
# class LogTraceParams(Model):
# class SetTraceParams(Model):
# class RegularExpressionsClientCapabilities(Model):
# class ResolveSupportClientCapabilities(Model):
# class LocationLink(Model):
# class DiagnosticSeverity(enum.IntEnum):
# class DiagnosticTag(enum.IntEnum):
# class DiagnosticRelatedInformation(Model):
# class CodeDescription(Model):
# class Diagnostic(Model):
# class Command(Model):
# class TextEdit(Model):
# class AnnotatedTextEdit(TextEdit):
# class ChangeAnnotation(Model):
# class ResourceOperationKind(str, enum.Enum):
# class CreateFileOptions(Model):
# class CreateFile(Model):
# class RenameFileOptions(Model):
# class RenameFile(Model):
# class DeleteFileOptions(Model):
# class DeleteFile(Model):
# class FailureHandlingKind(str, enum.Enum):
# class ChangeAnnotationSupport(Model):
# class WorkspaceEditClientCapabilities(Model):
# class TextDocumentIdentifier(Model):
# class TextDocumentItem(Model):
# class VersionedTextDocumentIdentifier(TextDocumentIdentifier):
# class OptionalVersionedTextDocumentIdentifier(TextDocumentIdentifier):
# class TextDocumentEdit(Model):
# class TextDocumentPositionParams(Model):
# class DocumentFilter(Model):
# class StaticRegistrationOptions(Model):
# class TextDocumentRegistrationOptions(Model):
# class MarkupKind(str, enum.Enum):
# class MarkupContent(Model):
# class WorkspaceEdit(Model):
# class WorkDoneProgressBegin(Model):
# class WorkDoneProgressReport(Model):
# class WorkDoneProgressEnd(Model):
# class WorkDoneProgressParams(Model):
# class WorkDoneProgressOptions(Model):
# class PartialResultParams(Model):


import enum
from typing import List, Optional, Tuple, Union
from pygls.lsp.types.basic_structures import (MarkupContent, MarkupKind, Model, NumType,
                                              TextDocumentPositionParams, WorkDoneProgressOptions,
                                              WorkDoneProgressParams)
    signature_information: Optional[SignatureHelpInformationClientCapabilities]
    context_support: Optional[bool]


class SignatureHelpOptions(WorkDoneProgressOptions):
    trigger_characters: Optional[List[str]]
    retrigger_characters: Optional[List[str]]


class SignatureHelpTriggerKind(enum.IntEnum):
    Invoked = 1
    TriggerCharacter = 2
    ContentChange = 3


class ParameterInformation(Model):
    label: Union[str, Tuple[int, int]]
    documentation: Optional[Union[str, MarkupContent]]


class SignatureInformation(Model):
    label: str
    documentation: Optional[Union[str, MarkupContent]]
    parameters: Optional[List[ParameterInformation]]
    active_parameter: Optional[int]


class SignatureHelp(Model):
    signatures: List[SignatureInformation]
    active_signature: Optional[NumType]

# Path: pygls/lsp/types/basic_structures.py
# URI = NewType('URI', str)
# T = TypeVar('T')
# def snake_to_camel(string: str) -> str:
#     def check_result_or_error(cls, values):
#     def check_result_or_error(cls, values):
#     def __eq__(self, other):
#     def __ge__(self, other):
#     def __gt__(self, other):
#     def __le__(self, other):
#     def __lt__(self, other):
#     def __ne__(self, other):
#     def __hash__(self):
#     def __iter__(self):
#     def __repr__(self):
#     def __eq__(self, other):
#     def __hash__(self):
#     def __iter__(self):
#     def __repr__(self):
#     def __eq__(self, other):
#     def __repr__(self):
#     def check_result_or_error(cls, values):
# class Model(BaseModel):
#     class Config:
# class JsonRpcMessage(Model):
# class JsonRPCNotification(JsonRpcMessage):
# class JsonRPCRequestMessage(JsonRpcMessage):
# class JsonRPCResponseMessage(JsonRpcMessage):
# class Position(Model):
# class Range(Model):
# class Location(Model):
# class Trace(str, enum.Enum):
# class CancelParams(Model):
# class ProgressParams(Model):
# class LogTraceParams(Model):
# class SetTraceParams(Model):
# class RegularExpressionsClientCapabilities(Model):
# class ResolveSupportClientCapabilities(Model):
# class LocationLink(Model):
# class DiagnosticSeverity(enum.IntEnum):
# class DiagnosticTag(enum.IntEnum):
# class DiagnosticRelatedInformation(Model):
# class CodeDescription(Model):
# class Diagnostic(Model):
# class Command(Model):
# class TextEdit(Model):
# class AnnotatedTextEdit(TextEdit):
# class ChangeAnnotation(Model):
# class ResourceOperationKind(str, enum.Enum):
# class CreateFileOptions(Model):
# class CreateFile(Model):
# class RenameFileOptions(Model):
# class RenameFile(Model):
# class DeleteFileOptions(Model):
# class DeleteFile(Model):
# class FailureHandlingKind(str, enum.Enum):
# class ChangeAnnotationSupport(Model):
# class WorkspaceEditClientCapabilities(Model):
# class TextDocumentIdentifier(Model):
# class TextDocumentItem(Model):
# class VersionedTextDocumentIdentifier(TextDocumentIdentifier):
# class OptionalVersionedTextDocumentIdentifier(TextDocumentIdentifier):
# class TextDocumentEdit(Model):
# class TextDocumentPositionParams(Model):
# class DocumentFilter(Model):
# class StaticRegistrationOptions(Model):
# class TextDocumentRegistrationOptions(Model):
# class MarkupKind(str, enum.Enum):
# class MarkupContent(Model):
# class WorkspaceEdit(Model):
# class WorkDoneProgressBegin(Model):
# class WorkDoneProgressReport(Model):
# class WorkDoneProgressEnd(Model):
# class WorkDoneProgressParams(Model):
# class WorkDoneProgressOptions(Model):
# class PartialResultParams(Model):


# Path: pygls/lsp/types/language_features/signature_help.py
import enum
from typing import List, Optional, Tuple, Union
from pygls.lsp.types.basic_structures import (MarkupContent, MarkupKind, Model, NumType,
                                              TextDocumentPositionParams, WorkDoneProgressOptions,
                                              WorkDoneProgressParams)

    signature_information: Optional[SignatureHelpInformationClientCapabilities]
    context_support: Optional[bool]


class SignatureHelpOptions(WorkDoneProgressOptions):
    trigger_characters: Optional[List[str]]
    retrigger_characters: Optional[List[str]]


class SignatureHelpTriggerKind(enum.IntEnum):
    Invoked = 1
    TriggerCharacter = 2
    ContentChange = 3


class ParameterInformation(Model):
    label: Union[str, Tuple[int, int]]
    documentation: Optional[Union[str, MarkupContent]]


class SignatureInformation(Model):
    label: str
    documentation: Optional[Union[str, MarkupContent]]
    parameters: Optional[List[ParameterInformation]]
    active_parameter: Optional[int]


class SignatureHelp(Model):
    signatures: List[SignatureInformation]
    active_signature: Optional[NumType]

    active_parameter: Optional[NumType]