# Path: pygls/lsp/types/basic_structures.py
# class Model(BaseModel):
#     class Config:
#         alias_generator = snake_to_camel
#         allow_population_by_field_name = True
#         fields = {
#             'from_': 'from'
#         }
# 
# class PartialResultParams(Model):
#     partial_result_token: Optional[ProgressToken]
# 
# class TextDocumentPositionParams(Model):
#     text_document: TextDocumentIdentifier
#     position: Position
# 
# class TextDocumentRegistrationOptions(Model):
#     document_selector: Optional[DocumentSelector]
# 
# class WorkDoneProgressOptions(Model):
#     work_done_progress: Optional[ProgressToken]
# 
# class WorkDoneProgressParams(Model):
#     work_done_token: Optional[ProgressToken]


import enum
from typing import Optional
from pygls.lsp.types.basic_structures import (Model, PartialResultParams,
                                              TextDocumentPositionParams,
                                              TextDocumentRegistrationOptions,
                                              WorkDoneProgressOptions, WorkDoneProgressParams)
class MonikerClientCapabilities(Model):
    dynamic_registration: Optional[bool]


class MonikerOptions(WorkDoneProgressOptions):
    pass


class MonikerRegistrationOptions(TextDocumentRegistrationOptions, MonikerOptions):
    pass


class MonikerParams(TextDocumentPositionParams, WorkDoneProgressParams, PartialResultParams):
    pass


class UniquenessLevel(str, enum.Enum):
    Document = 'document'
    Project = 'project'
    Group = 'group'
    Scheme = 'scheme'
    Global = 'global'


class MonikerKind(str, enum.Enum):
    Import = 'import'
    Export = 'export'
    Local = 'local'



# Path: pygls/lsp/types/basic_structures.py
# class Model(BaseModel):
#     class Config:
#         alias_generator = snake_to_camel
#         allow_population_by_field_name = True
#         fields = {
#             'from_': 'from'
#         }
# 
# class PartialResultParams(Model):
#     partial_result_token: Optional[ProgressToken]
# 
# class TextDocumentPositionParams(Model):
#     text_document: TextDocumentIdentifier
#     position: Position
# 
# class TextDocumentRegistrationOptions(Model):
#     document_selector: Optional[DocumentSelector]
# 
# class WorkDoneProgressOptions(Model):
#     work_done_progress: Optional[ProgressToken]
# 
# class WorkDoneProgressParams(Model):
#     work_done_token: Optional[ProgressToken]


# Path: pygls/lsp/types/language_features/monikers.py
import enum
from typing import Optional
from pygls.lsp.types.basic_structures import (Model, PartialResultParams,
                                              TextDocumentPositionParams,
                                              TextDocumentRegistrationOptions,
                                              WorkDoneProgressOptions, WorkDoneProgressParams)

class MonikerClientCapabilities(Model):
    dynamic_registration: Optional[bool]


class MonikerOptions(WorkDoneProgressOptions):
    pass


class MonikerRegistrationOptions(TextDocumentRegistrationOptions, MonikerOptions):
    pass


class MonikerParams(TextDocumentPositionParams, WorkDoneProgressParams, PartialResultParams):
    pass


class UniquenessLevel(str, enum.Enum):
    Document = 'document'
    Project = 'project'
    Group = 'group'
    Scheme = 'scheme'
    Global = 'global'


class MonikerKind(str, enum.Enum):
    Import = 'import'
    Export = 'export'
    Local = 'local'



class Moniker(Model):