from google.protobuf.internal import containers as _containers
from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper
from google.protobuf import descriptor as _descriptor
from google.protobuf import message as _message
from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union

ABAP: Language
APL: Language
Ada: Language
Agda: Language
Apex: Language
AsciiDoc: Language
Assembly: Language
Awk: Language
Bat: Language
BibTeX: Language
BooleanLiteral: SyntaxKind
C: Language
COBOL: Language
CPP: Language
CSS: Language
CSharp: Language
CUDA: Language
CharacterLiteral: SyntaxKind
Clojure: Language
Coffeescript: Language
Comment: SyntaxKind
CommonLisp: Language
Coq: Language
DESCRIPTOR: _descriptor.FileDescriptor
Dart: Language
Definition: SymbolRole
Delphi: Language
Deprecated: DiagnosticTag
Diff: Language
Dockerfile: Language
Dyalog: Language
Elixir: Language
Erlang: Language
Error: Severity
FSharp: Language
Fish: Language
Flow: Language
Fortran: Language
ForwardDefinition: SymbolRole
Generated: SymbolRole
Git_Commit: Language
Git_Config: Language
Git_Rebase: Language
Go: Language
GraphQL: Language
Groovy: Language
HTML: Language
Hack: Language
Handlebars: Language
Haskell: Language
Hint: Severity
Identifier: SyntaxKind
IdentifierAttribute: SyntaxKind
IdentifierBuiltin: SyntaxKind
IdentifierBuiltinType: SyntaxKind
IdentifierConstant: SyntaxKind
IdentifierFunction: SyntaxKind
IdentifierFunctionDefinition: SyntaxKind
IdentifierKeyword: SyntaxKind
IdentifierLocal: SyntaxKind
IdentifierMacro: SyntaxKind
IdentifierMacroDefinition: SyntaxKind
IdentifierModule: SyntaxKind
IdentifierMutableGlobal: SyntaxKind
IdentifierNamespace: SyntaxKind
IdentifierNull: SyntaxKind
IdentifierOperator: SyntaxKind
IdentifierParameter: SyntaxKind
IdentifierShadowed: SyntaxKind
IdentifierType: SyntaxKind
Idris: Language
Import: SymbolRole
Information: Severity
Ini: Language
J: Language
JSON: Language
Java: Language
JavaScript: Language
JavaScriptReact: Language
Jsonnet: Language
Julia: Language
Justfile: Language
Keyword: SyntaxKind
Kotlin: Language
LaTeX: Language
Lean: Language
Less: Language
Lua: Language
Luau: Language
Makefile: Language
Markdown: Language
Matlab: Language
Nickel: Language
Nix: Language
NumericLiteral: SyntaxKind
OCaml: Language
Objective_C: Language
Objective_CPP: Language
PHP: Language
PLSQL: Language
Pascal: Language
Perl: Language
PowerShell: Language
Prolog: Language
Protobuf: Language
PunctuationBracket: SyntaxKind
PunctuationDelimiter: SyntaxKind
Python: Language
R: Language
Racket: Language
Raku: Language
Razor: Language
ReST: Language
ReadAccess: SymbolRole
RegexDelimiter: SyntaxKind
RegexEscape: SyntaxKind
RegexJoin: SyntaxKind
RegexRepeated: SyntaxKind
RegexWildcard: SyntaxKind
Repro: Language
Ruby: Language
Rust: Language
SAS: Language
SCSS: Language
SML: Language
SQL: Language
Sass: Language
Scala: Language
Scheme: Language
ShellScript: Language
Skylark: Language
Slang: Language
Solidity: Language
StringLiteral: SyntaxKind
StringLiteralEscape: SyntaxKind
StringLiteralKey: SyntaxKind
StringLiteralSpecial: SyntaxKind
Svelte: Language
Swift: Language
TOML: Language
Tag: SyntaxKind
TagAttribute: SyntaxKind
TagDelimiter: SyntaxKind
Tcl: Language
TeX: Language
Test: SymbolRole
Thrift: Language
TypeScript: Language
TypeScriptReact: Language
UTF16: TextEncoding
UTF16CodeUnitOffsetFromLineStart: PositionEncoding
UTF32CodeUnitOffsetFromLineStart: PositionEncoding
UTF8: TextEncoding
UTF8CodeUnitOffsetFromLineStart: PositionEncoding
Unnecessary: DiagnosticTag
UnspecifiedDiagnosticTag: DiagnosticTag
UnspecifiedLanguage: Language
UnspecifiedPositionEncoding: PositionEncoding
UnspecifiedProtocolVersion: ProtocolVersion
UnspecifiedSeverity: Severity
UnspecifiedSymbolRole: SymbolRole
UnspecifiedSyntaxKind: SyntaxKind
UnspecifiedTextEncoding: TextEncoding
VHDL: Language
Verilog: Language
VisualBasic: Language
Vue: Language
Warning: Severity
Wolfram: Language
WriteAccess: SymbolRole
XML: Language
XSL: Language
YAML: Language
Zig: Language

class Descriptor(_message.Message):
    __slots__ = ["disambiguator", "name", "suffix"]
    class Suffix(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
        __slots__ = []
    DISAMBIGUATOR_FIELD_NUMBER: _ClassVar[int]
    Local: Descriptor.Suffix
    Macro: Descriptor.Suffix
    Meta: Descriptor.Suffix
    Method: Descriptor.Suffix
    NAME_FIELD_NUMBER: _ClassVar[int]
    Namespace: Descriptor.Suffix
    Package: Descriptor.Suffix
    Parameter: Descriptor.Suffix
    SUFFIX_FIELD_NUMBER: _ClassVar[int]
    Term: Descriptor.Suffix
    Type: Descriptor.Suffix
    TypeParameter: Descriptor.Suffix
    UnspecifiedSuffix: Descriptor.Suffix
    disambiguator: str
    name: str
    suffix: Descriptor.Suffix
    def __init__(self, name: _Optional[str] = ..., disambiguator: _Optional[str] = ..., suffix: _Optional[_Union[Descriptor.Suffix, str]] = ...) -> None: ...

class Diagnostic(_message.Message):
    __slots__ = ["code", "message", "severity", "source", "tags"]
    CODE_FIELD_NUMBER: _ClassVar[int]
    MESSAGE_FIELD_NUMBER: _ClassVar[int]
    SEVERITY_FIELD_NUMBER: _ClassVar[int]
    SOURCE_FIELD_NUMBER: _ClassVar[int]
    TAGS_FIELD_NUMBER: _ClassVar[int]
    code: str
    message: str
    severity: Severity
    source: str
    tags: _containers.RepeatedScalarFieldContainer[DiagnosticTag]
    def __init__(self, severity: _Optional[_Union[Severity, str]] = ..., code: _Optional[str] = ..., message: _Optional[str] = ..., source: _Optional[str] = ..., tags: _Optional[_Iterable[_Union[DiagnosticTag, str]]] = ...) -> None: ...

class Document(_message.Message):
    __slots__ = ["language", "occurrences", "position_encoding", "relative_path", "symbols", "text"]
    LANGUAGE_FIELD_NUMBER: _ClassVar[int]
    OCCURRENCES_FIELD_NUMBER: _ClassVar[int]
    POSITION_ENCODING_FIELD_NUMBER: _ClassVar[int]
    RELATIVE_PATH_FIELD_NUMBER: _ClassVar[int]
    SYMBOLS_FIELD_NUMBER: _ClassVar[int]
    TEXT_FIELD_NUMBER: _ClassVar[int]
    language: str
    occurrences: _containers.RepeatedCompositeFieldContainer[Occurrence]
    position_encoding: PositionEncoding
    relative_path: str
    symbols: _containers.RepeatedCompositeFieldContainer[SymbolInformation]
    text: str
    def __init__(self, language: _Optional[str] = ..., relative_path: _Optional[str] = ..., occurrences: _Optional[_Iterable[_Union[Occurrence, _Mapping]]] = ..., symbols: _Optional[_Iterable[_Union[SymbolInformation, _Mapping]]] = ..., text: _Optional[str] = ..., position_encoding: _Optional[_Union[PositionEncoding, str]] = ...) -> None: ...

class Index(_message.Message):
    __slots__ = ["documents", "external_symbols", "metadata"]
    DOCUMENTS_FIELD_NUMBER: _ClassVar[int]
    EXTERNAL_SYMBOLS_FIELD_NUMBER: _ClassVar[int]
    METADATA_FIELD_NUMBER: _ClassVar[int]
    documents: _containers.RepeatedCompositeFieldContainer[Document]
    external_symbols: _containers.RepeatedCompositeFieldContainer[SymbolInformation]
    metadata: Metadata
    def __init__(self, metadata: _Optional[_Union[Metadata, _Mapping]] = ..., documents: _Optional[_Iterable[_Union[Document, _Mapping]]] = ..., external_symbols: _Optional[_Iterable[_Union[SymbolInformation, _Mapping]]] = ...) -> None: ...

class Metadata(_message.Message):
    __slots__ = ["project_root", "text_document_encoding", "tool_info", "version"]
    PROJECT_ROOT_FIELD_NUMBER: _ClassVar[int]
    TEXT_DOCUMENT_ENCODING_FIELD_NUMBER: _ClassVar[int]
    TOOL_INFO_FIELD_NUMBER: _ClassVar[int]
    VERSION_FIELD_NUMBER: _ClassVar[int]
    project_root: str
    text_document_encoding: TextEncoding
    tool_info: ToolInfo
    version: ProtocolVersion
    def __init__(self, version: _Optional[_Union[ProtocolVersion, str]] = ..., tool_info: _Optional[_Union[ToolInfo, _Mapping]] = ..., project_root: _Optional[str] = ..., text_document_encoding: _Optional[_Union[TextEncoding, str]] = ...) -> None: ...

class Occurrence(_message.Message):
    __slots__ = ["diagnostics", "enclosing_range", "override_documentation", "range", "symbol", "symbol_roles", "syntax_kind"]
    DIAGNOSTICS_FIELD_NUMBER: _ClassVar[int]
    ENCLOSING_RANGE_FIELD_NUMBER: _ClassVar[int]
    OVERRIDE_DOCUMENTATION_FIELD_NUMBER: _ClassVar[int]
    RANGE_FIELD_NUMBER: _ClassVar[int]
    SYMBOL_FIELD_NUMBER: _ClassVar[int]
    SYMBOL_ROLES_FIELD_NUMBER: _ClassVar[int]
    SYNTAX_KIND_FIELD_NUMBER: _ClassVar[int]
    diagnostics: _containers.RepeatedCompositeFieldContainer[Diagnostic]
    enclosing_range: _containers.RepeatedScalarFieldContainer[int]
    override_documentation: _containers.RepeatedScalarFieldContainer[str]
    range: _containers.RepeatedScalarFieldContainer[int]
    symbol: str
    symbol_roles: int
    syntax_kind: SyntaxKind
    def __init__(self, range: _Optional[_Iterable[int]] = ..., symbol: _Optional[str] = ..., symbol_roles: _Optional[int] = ..., override_documentation: _Optional[_Iterable[str]] = ..., syntax_kind: _Optional[_Union[SyntaxKind, str]] = ..., diagnostics: _Optional[_Iterable[_Union[Diagnostic, _Mapping]]] = ..., enclosing_range: _Optional[_Iterable[int]] = ...) -> None: ...

class Package(_message.Message):
    __slots__ = ["manager", "name", "version"]
    MANAGER_FIELD_NUMBER: _ClassVar[int]
    NAME_FIELD_NUMBER: _ClassVar[int]
    VERSION_FIELD_NUMBER: _ClassVar[int]
    manager: str
    name: str
    version: str
    def __init__(self, manager: _Optional[str] = ..., name: _Optional[str] = ..., version: _Optional[str] = ...) -> None: ...

class Relationship(_message.Message):
    __slots__ = ["is_definition", "is_implementation", "is_reference", "is_type_definition", "symbol"]
    IS_DEFINITION_FIELD_NUMBER: _ClassVar[int]
    IS_IMPLEMENTATION_FIELD_NUMBER: _ClassVar[int]
    IS_REFERENCE_FIELD_NUMBER: _ClassVar[int]
    IS_TYPE_DEFINITION_FIELD_NUMBER: _ClassVar[int]
    SYMBOL_FIELD_NUMBER: _ClassVar[int]
    is_definition: bool
    is_implementation: bool
    is_reference: bool
    is_type_definition: bool
    symbol: str
    def __init__(self, symbol: _Optional[str] = ..., is_reference: bool = ..., is_implementation: bool = ..., is_type_definition: bool = ..., is_definition: bool = ...) -> None: ...

class Symbol(_message.Message):
    __slots__ = ["descriptors", "package", "scheme"]
    DESCRIPTORS_FIELD_NUMBER: _ClassVar[int]
    PACKAGE_FIELD_NUMBER: _ClassVar[int]
    SCHEME_FIELD_NUMBER: _ClassVar[int]
    descriptors: _containers.RepeatedCompositeFieldContainer[Descriptor]
    package: Package
    scheme: str
    def __init__(self, scheme: _Optional[str] = ..., package: _Optional[_Union[Package, _Mapping]] = ..., descriptors: _Optional[_Iterable[_Union[Descriptor, _Mapping]]] = ...) -> None: ...

class SymbolInformation(_message.Message):
    __slots__ = ["display_name", "documentation", "enclosing_symbol", "kind", "relationships", "signature_documentation", "symbol"]
    class Kind(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
        __slots__ = []
    AbstractMethod: SymbolInformation.Kind
    Accessor: SymbolInformation.Kind
    Array: SymbolInformation.Kind
    Assertion: SymbolInformation.Kind
    AssociatedType: SymbolInformation.Kind
    Attribute: SymbolInformation.Kind
    Axiom: SymbolInformation.Kind
    Boolean: SymbolInformation.Kind
    Class: SymbolInformation.Kind
    Concept: SymbolInformation.Kind
    Constant: SymbolInformation.Kind
    Constructor: SymbolInformation.Kind
    Contract: SymbolInformation.Kind
    DISPLAY_NAME_FIELD_NUMBER: _ClassVar[int]
    DOCUMENTATION_FIELD_NUMBER: _ClassVar[int]
    DataFamily: SymbolInformation.Kind
    Delegate: SymbolInformation.Kind
    ENCLOSING_SYMBOL_FIELD_NUMBER: _ClassVar[int]
    Enum: SymbolInformation.Kind
    EnumMember: SymbolInformation.Kind
    Error: SymbolInformation.Kind
    Event: SymbolInformation.Kind
    Extension: SymbolInformation.Kind
    Fact: SymbolInformation.Kind
    Field: SymbolInformation.Kind
    File: SymbolInformation.Kind
    Function: SymbolInformation.Kind
    Getter: SymbolInformation.Kind
    Grammar: SymbolInformation.Kind
    Instance: SymbolInformation.Kind
    Interface: SymbolInformation.Kind
    KIND_FIELD_NUMBER: _ClassVar[int]
    Key: SymbolInformation.Kind
    Lang: SymbolInformation.Kind
    Lemma: SymbolInformation.Kind
    Library: SymbolInformation.Kind
    Macro: SymbolInformation.Kind
    Message: SymbolInformation.Kind
    Method: SymbolInformation.Kind
    MethodAlias: SymbolInformation.Kind
    MethodReceiver: SymbolInformation.Kind
    MethodSpecification: SymbolInformation.Kind
    Mixin: SymbolInformation.Kind
    Modifier: SymbolInformation.Kind
    Module: SymbolInformation.Kind
    Namespace: SymbolInformation.Kind
    Null: SymbolInformation.Kind
    Number: SymbolInformation.Kind
    Object: SymbolInformation.Kind
    Operator: SymbolInformation.Kind
    Package: SymbolInformation.Kind
    PackageObject: SymbolInformation.Kind
    Parameter: SymbolInformation.Kind
    ParameterLabel: SymbolInformation.Kind
    Pattern: SymbolInformation.Kind
    Predicate: SymbolInformation.Kind
    Property: SymbolInformation.Kind
    Protocol: SymbolInformation.Kind
    ProtocolMethod: SymbolInformation.Kind
    PureVirtualMethod: SymbolInformation.Kind
    Quasiquoter: SymbolInformation.Kind
    RELATIONSHIPS_FIELD_NUMBER: _ClassVar[int]
    SIGNATURE_DOCUMENTATION_FIELD_NUMBER: _ClassVar[int]
    SYMBOL_FIELD_NUMBER: _ClassVar[int]
    SelfParameter: SymbolInformation.Kind
    Setter: SymbolInformation.Kind
    Signature: SymbolInformation.Kind
    SingletonClass: SymbolInformation.Kind
    SingletonMethod: SymbolInformation.Kind
    StaticDataMember: SymbolInformation.Kind
    StaticEvent: SymbolInformation.Kind
    StaticField: SymbolInformation.Kind
    StaticMethod: SymbolInformation.Kind
    StaticProperty: SymbolInformation.Kind
    StaticVariable: SymbolInformation.Kind
    String: SymbolInformation.Kind
    Struct: SymbolInformation.Kind
    Subscript: SymbolInformation.Kind
    Tactic: SymbolInformation.Kind
    Theorem: SymbolInformation.Kind
    ThisParameter: SymbolInformation.Kind
    Trait: SymbolInformation.Kind
    TraitMethod: SymbolInformation.Kind
    Type: SymbolInformation.Kind
    TypeAlias: SymbolInformation.Kind
    TypeClass: SymbolInformation.Kind
    TypeClassMethod: SymbolInformation.Kind
    TypeFamily: SymbolInformation.Kind
    TypeParameter: SymbolInformation.Kind
    Union: SymbolInformation.Kind
    UnspecifiedKind: SymbolInformation.Kind
    Value: SymbolInformation.Kind
    Variable: SymbolInformation.Kind
    display_name: str
    documentation: _containers.RepeatedScalarFieldContainer[str]
    enclosing_symbol: str
    kind: SymbolInformation.Kind
    relationships: _containers.RepeatedCompositeFieldContainer[Relationship]
    signature_documentation: Document
    symbol: str
    def __init__(self, symbol: _Optional[str] = ..., documentation: _Optional[_Iterable[str]] = ..., relationships: _Optional[_Iterable[_Union[Relationship, _Mapping]]] = ..., kind: _Optional[_Union[SymbolInformation.Kind, str]] = ..., display_name: _Optional[str] = ..., signature_documentation: _Optional[_Union[Document, _Mapping]] = ..., enclosing_symbol: _Optional[str] = ...) -> None: ...

class ToolInfo(_message.Message):
    __slots__ = ["arguments", "name", "version"]
    ARGUMENTS_FIELD_NUMBER: _ClassVar[int]
    NAME_FIELD_NUMBER: _ClassVar[int]
    VERSION_FIELD_NUMBER: _ClassVar[int]
    arguments: _containers.RepeatedScalarFieldContainer[str]
    name: str
    version: str
    def __init__(self, name: _Optional[str] = ..., version: _Optional[str] = ..., arguments: _Optional[_Iterable[str]] = ...) -> None: ...

class ProtocolVersion(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
    __slots__ = []

class TextEncoding(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
    __slots__ = []

class PositionEncoding(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
    __slots__ = []

class SymbolRole(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
    __slots__ = []

class SyntaxKind(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
    __slots__ = []

class Severity(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
    __slots__ = []

class DiagnosticTag(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
    __slots__ = []

class Language(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
    __slots__ = []
