"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
Copyright 2024-present BAIKAL AI Inc."""
import bareun.lang_common_pb2
import builtins
import collections.abc
import google.protobuf.descriptor
import google.protobuf.internal.containers
import google.protobuf.internal.enum_type_wrapper
import google.protobuf.message
import sys
import typing

if sys.version_info >= (3, 10):
    import typing as typing_extensions
else:
    import typing_extensions

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

class _RevisionCategory:
    ValueType = typing.NewType("ValueType", builtins.int)
    V: typing_extensions.TypeAlias = ValueType

class _RevisionCategoryEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_RevisionCategory.ValueType], builtins.type):  # noqa: F821
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    UNKNOWN: _RevisionCategory.ValueType  # 0
    """교정 카테고리가 없음"""
    GRAMMER: _RevisionCategory.ValueType  # 1
    """교정 유형: 맞춤법 어법에 관한 사항
    활용, 조사 결합, 구둣점 등
    """
    WORD: _RevisionCategory.ValueType  # 2
    """교정 유형: 맞춤법 단어단위 규칙에 관한 사항
    사이시옷, 두음법칙, 한자결합(율,률) 등
    """
    SPACING: _RevisionCategory.ValueType  # 3
    """교정 유형: 띄어쓰기에 관한 사항"""
    STANDARD: _RevisionCategory.ValueType  # 8
    """교정 유형: 표준어 일반"""
    TYPO: _RevisionCategory.ValueType  # 9
    """교정 유형: 오탈자"""
    FOREIGN_WORD: _RevisionCategory.ValueType  # 10
    """교정 유형: 외래어 표기법"""
    CONFUSABLE_WORDS: _RevisionCategory.ValueType  # 11
    """교정 유형: 혼동하기 쉬운 단어"""
    SENTENCE: _RevisionCategory.ValueType  # 12
    """교정 유형: 문장 단위 오류"""
    CONFIRM: _RevisionCategory.ValueType  # 13
    """교정 유형: 확인 필요"""

class RevisionCategory(_RevisionCategory, metaclass=_RevisionCategoryEnumTypeWrapper):
    """한국어 문장 교정의 카테고리"""

UNKNOWN: RevisionCategory.ValueType  # 0
"""교정 카테고리가 없음"""
GRAMMER: RevisionCategory.ValueType  # 1
"""교정 유형: 맞춤법 어법에 관한 사항
활용, 조사 결합, 구둣점 등
"""
WORD: RevisionCategory.ValueType  # 2
"""교정 유형: 맞춤법 단어단위 규칙에 관한 사항
사이시옷, 두음법칙, 한자결합(율,률) 등
"""
SPACING: RevisionCategory.ValueType  # 3
"""교정 유형: 띄어쓰기에 관한 사항"""
STANDARD: RevisionCategory.ValueType  # 8
"""교정 유형: 표준어 일반"""
TYPO: RevisionCategory.ValueType  # 9
"""교정 유형: 오탈자"""
FOREIGN_WORD: RevisionCategory.ValueType  # 10
"""교정 유형: 외래어 표기법"""
CONFUSABLE_WORDS: RevisionCategory.ValueType  # 11
"""교정 유형: 혼동하기 쉬운 단어"""
SENTENCE: RevisionCategory.ValueType  # 12
"""교정 유형: 문장 단위 오류"""
CONFIRM: RevisionCategory.ValueType  # 13
"""교정 유형: 확인 필요"""
global___RevisionCategory = RevisionCategory

class _CustomDictPos:
    ValueType = typing.NewType("ValueType", builtins.int)
    V: typing_extensions.TypeAlias = ValueType

class _CustomDictPosEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_CustomDictPos.ValueType], builtins.type):  # noqa: F821
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    POS_UNK: _CustomDictPos.ValueType  # 0
    """해당 없음"""
    POS_NNG: _CustomDictPos.ValueType  # 1
    """복합명사 사전"""
    POS_NNP: _CustomDictPos.ValueType  # 2
    """고유명사 사전"""
    POS_NNG_CARET: _CustomDictPos.ValueType  # 3
    """복합명사 분리 사전"""
    POS_VV: _CustomDictPos.ValueType  # 4
    """동사 사전"""
    POS_VA: _CustomDictPos.ValueType  # 5
    """형용사 사전"""
    POS_MM: _CustomDictPos.ValueType  # 6
    """관형사 사전"""
    POS_MAG: _CustomDictPos.ValueType  # 7
    """부사 사전"""
    POS_IC: _CustomDictPos.ValueType  # 8
    """감탄사 사전"""

class CustomDictPos(_CustomDictPos, metaclass=_CustomDictPosEnumTypeWrapper):
    """사용자 사전용 형태소"""

POS_UNK: CustomDictPos.ValueType  # 0
"""해당 없음"""
POS_NNG: CustomDictPos.ValueType  # 1
"""복합명사 사전"""
POS_NNP: CustomDictPos.ValueType  # 2
"""고유명사 사전"""
POS_NNG_CARET: CustomDictPos.ValueType  # 3
"""복합명사 분리 사전"""
POS_VV: CustomDictPos.ValueType  # 4
"""동사 사전"""
POS_VA: CustomDictPos.ValueType  # 5
"""형용사 사전"""
POS_MM: CustomDictPos.ValueType  # 6
"""관형사 사전"""
POS_MAG: CustomDictPos.ValueType  # 7
"""부사 사전"""
POS_IC: CustomDictPos.ValueType  # 8
"""감탄사 사전"""
global___CustomDictPos = CustomDictPos

class RevisionConfig(google.protobuf.message.Message):
    """=================================
    GRAMMER ERROR CORRECTION
    =================================

    맞춤법 교정기 설정
    맞춤법 교정기 설정은 아무런 설정을 하지 않을 경우에 기본값을 설정하는 것을 기준으로
    설정한다.
    (참고) 이 옵션은 구현 과정에서 지속적으로 추가될 수 있다.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    DISABLE_SPLIT_SENTENCE_FIELD_NUMBER: builtins.int
    DISABLE_CARET_SPACING_FIELD_NUMBER: builtins.int
    DISABLE_VX_SPACING_FIELD_NUMBER: builtins.int
    ENABLE_CLEANUP_WHITESPACE_FIELD_NUMBER: builtins.int
    ENABLE_SENTENCE_CHECK_FIELD_NUMBER: builtins.int
    disable_split_sentence: builtins.bool
    """split sentence 비활성화하면 문장 단위 분할을 하지 않는다."""
    disable_caret_spacing: builtins.bool
    """복합명사 분리 사전 적용 비활성화"""
    disable_vx_spacing: builtins.bool
    """보조 용언 띄어쓰기 비활성화"""
    enable_cleanup_whitespace: builtins.bool
    """공백을 제거하는 것을 활성화하기"""
    enable_sentence_check: builtins.bool
    """문장 단위 점검 활성화"""
    def __init__(
        self,
        *,
        disable_split_sentence: builtins.bool = ...,
        disable_caret_spacing: builtins.bool = ...,
        disable_vx_spacing: builtins.bool = ...,
        enable_cleanup_whitespace: builtins.bool = ...,
        enable_sentence_check: builtins.bool = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["disable_caret_spacing", b"disable_caret_spacing", "disable_split_sentence", b"disable_split_sentence", "disable_vx_spacing", b"disable_vx_spacing", "enable_cleanup_whitespace", b"enable_cleanup_whitespace", "enable_sentence_check", b"enable_sentence_check"]) -> None: ...

global___RevisionConfig = RevisionConfig

class CorrectErrorRequest(google.protobuf.message.Message):
    """맞춤법 교정 요청 메시지"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    DOCUMENT_FIELD_NUMBER: builtins.int
    ENCODING_TYPE_FIELD_NUMBER: builtins.int
    CUSTOM_DOMAIN_FIELD_NUMBER: builtins.int
    CUSTOM_DICT_NAMES_FIELD_NUMBER: builtins.int
    CONFIG_FIELD_NUMBER: builtins.int
    @property
    def document(self) -> bareun.lang_common_pb2.Document:
        """입력 문서"""
    encoding_type: bareun.lang_common_pb2.EncodingType.ValueType
    """오프셋을 계산하기 위한 인코딩 타입"""
    custom_domain: builtins.str
    """커스텀 사전 도메인 정보, 하나만 지정 가능합니다.
    v4.0에서는 폐기될 예정입니다. 새로운 custom_dict_names를 사용해주세요.
    새로운 custom_dict_names에 값이 들어있는 경우, 이 값은 무시됩니다.
    """
    @property
    def custom_dict_names(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """커스텀 사전 이름들
        CustomDictionaryService를 사용해서 만든 사전을 여러 개 지정한다.
        하나 이상의 지정할 경우, 먼저 나오는 사전이 우선되어 사용된다.
        """
    @property
    def config(self) -> global___RevisionConfig:
        """맞춤법 교정기 적용시 옵션을 지정한다."""
    def __init__(
        self,
        *,
        document: bareun.lang_common_pb2.Document | None = ...,
        encoding_type: bareun.lang_common_pb2.EncodingType.ValueType = ...,
        custom_domain: builtins.str = ...,
        custom_dict_names: collections.abc.Iterable[builtins.str] | None = ...,
        config: global___RevisionConfig | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["config", b"config", "document", b"document"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["config", b"config", "custom_dict_names", b"custom_dict_names", "custom_domain", b"custom_domain", "document", b"document", "encoding_type", b"encoding_type"]) -> None: ...

global___CorrectErrorRequest = CorrectErrorRequest

class ReviseHelp(google.protobuf.message.Message):
    """교정에 대한 도움말 객체"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    ID_FIELD_NUMBER: builtins.int
    CATEGORY_FIELD_NUMBER: builtins.int
    COMMENT_FIELD_NUMBER: builtins.int
    EXAMPLES_FIELD_NUMBER: builtins.int
    RULE_ARTICLE_FIELD_NUMBER: builtins.int
    id: builtins.str
    """도움말 ID, 고정된 도움말이 있을 수 있고, 동적으로 생성되는 도움말이 있을 수 있다."""
    category: global___RevisionCategory.ValueType
    """문장 교정의 카테고리"""
    comment: builtins.str
    """바뀌어야 하는 이유에 대한 섧명"""
    @property
    def examples(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """변경이 될 수 있는 문장들"""
    rule_article: builtins.str
    """관련 규정"""
    def __init__(
        self,
        *,
        id: builtins.str = ...,
        category: global___RevisionCategory.ValueType = ...,
        comment: builtins.str = ...,
        examples: collections.abc.Iterable[builtins.str] | None = ...,
        rule_article: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["category", b"category", "comment", b"comment", "examples", b"examples", "id", b"id", "rule_article", b"rule_article"]) -> None: ...

global___ReviseHelp = ReviseHelp

class Revision(google.protobuf.message.Message):
    """한개의 교정에 대한 정보"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    REVISED_FIELD_NUMBER: builtins.int
    SCORE_FIELD_NUMBER: builtins.int
    CATEGORY_FIELD_NUMBER: builtins.int
    HELP_ID_FIELD_NUMBER: builtins.int
    revised: builtins.str
    """수정을 제안한 토큰"""
    score: builtins.float
    """수정에 대한 점수, 점수가 높으면 수정의 후보가 높다."""
    category: global___RevisionCategory.ValueType
    """RevisionCagetory 정보"""
    help_id: builtins.str
    """수정에 대한 도움말, 인덱스 정보"""
    def __init__(
        self,
        *,
        revised: builtins.str = ...,
        score: builtins.float = ...,
        category: global___RevisionCategory.ValueType = ...,
        help_id: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["category", b"category", "help_id", b"help_id", "revised", b"revised", "score", b"score"]) -> None: ...

global___Revision = Revision

class RevisedBlock(google.protobuf.message.Message):
    """RevisedBlock은 교정 대상인 원문과 수정된 결과, 이유, 사용자 사전 추가 정보를 담고 있다.

    - origin: 교정의 원문으로, 교정 대상이 되는 원문의 위치와 범위 정보를 담고 있다.
    - revised: 교정 결과를 포함하며, 여러 개의 교정 후보가 있는 경우 가장 대표적인 
      교정 결과를 포함한다.
    - revisions: 하나 이상의 교정 후보를 포함하며, 각 교정 결과는 점수, 카테고리, 
      도움말 정보를 포함한다.
    - nested: 여러 개의 블럭이 하나로 합쳐지는 경우, 기존의 블럭들은 nested 블럭에 
      포함된다.
    - lemma: 교정 대상에 대해 교정을 하지 않을 수도 있으며, 이를 사용자 사전에 
      추가해야 하는 경우 원형을 밝혀 추가할 수 있도록 한다.
    - pos: 사전에 추가할 경우, 해당 단어의 형태 정보를 포함한다.

    [여러 블럭을 합치는 경우]
    띄어쓰기 및 붙여쓰기가 여러 블럭에 연달아 있는 경우, 그 경계가 계속해서 
    합쳐질 수 있다. 예를 들어, "`하지만아무도도와드리지않았다.`"의 경우, 
    "하지만 아무도", "아무도 도와", "도와드리지", "드리지 않았다."처럼 블럭이 
    서로 경계에 닿아 있다. 이 경우 "`하지만아무도도와드리지않았다.`"를 하나의 
    블럭으로 처리한다. 이를 UI에서 계산하여 처리하는 것은 많은 노력이 필요하므로, 
    위의 4가지 경우를 `nested` 블럭에 포함하여 기술하도록 한다.

    [사용자 사전 후보 제시]
    원문에 포함된 교정 블럭에 대한 교정 후보를 제시하는 것이 적절하지 않은 경우, 
    사용자는 이 단어를 새로운 사전에 등록할 수 있다. 이를 위해 등록의 원본을 
    제시한다. 예를 들어, "신박했다"라는 어절에 대해 교정한 경우, lemma로 "신박하"를 
    제시하고 "형용사"로 품사를 제시할 수 있다. 여기에는 띄어 쓴 블럭의 복합명사도 
    포함될 수 있다. 이 경우 "제품^품질관리^체계"처럼 대부분의 UI 처리 단위에서는 
    이를 세부적으로 나눠서 표현할 필요는 없지만, 포함된 블럭을 구분하여 표현하고자 
    하는 경우에도 이를 감안할 수 있다.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    ORIGIN_FIELD_NUMBER: builtins.int
    REVISED_FIELD_NUMBER: builtins.int
    REVISIONS_FIELD_NUMBER: builtins.int
    NESTED_FIELD_NUMBER: builtins.int
    LEMMA_FIELD_NUMBER: builtins.int
    POS_FIELD_NUMBER: builtins.int
    @property
    def origin(self) -> bareun.lang_common_pb2.TextSpan:
        """교정 원문의 위치 및 원문 정보
        대부분은 어절 단위이지만, nested가 있는 경우 여러 블럭이 포함될 수 있다.
        원문의 한 어절에 여러 개의 교정이 있는 경우에는 이를 묶을 수도 있다.
        """
    revised: builtins.str
    """교정된 결과물, 여러가지 중에 하나로서 가장 대표적인 것"""
    @property
    def revisions(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Revision]:
        """다양한 교정 문장의 예시들"""
    @property
    def nested(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___RevisedBlock]:
        """한 어절에 여러 개의 수정이 이뤄지거나,
        서로 다른 어절의 수정이 경계를 닿아서 겹치는 경우에는
        기존의 교정 블럭은 nested에 포함된다.
        """
    lemma: builtins.str
    """사용사 사전에 추가하기 위한 기본 단위, nested가 존재하는 쓸 수 없다."""
    pos: global___CustomDictPos.ValueType
    """사용사 사전에 추가할 품사"""
    def __init__(
        self,
        *,
        origin: bareun.lang_common_pb2.TextSpan | None = ...,
        revised: builtins.str = ...,
        revisions: collections.abc.Iterable[global___Revision] | None = ...,
        nested: collections.abc.Iterable[global___RevisedBlock] | None = ...,
        lemma: builtins.str = ...,
        pos: global___CustomDictPos.ValueType = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["origin", b"origin"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["lemma", b"lemma", "nested", b"nested", "origin", b"origin", "pos", b"pos", "revised", b"revised", "revisions", b"revisions"]) -> None: ...

global___RevisedBlock = RevisedBlock

class RevisedSentence(google.protobuf.message.Message):
    """교정된 하나의 문장"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    ORIGIN_FIELD_NUMBER: builtins.int
    REVISED_FIELD_NUMBER: builtins.int
    origin: builtins.str
    """원래 문장"""
    revised: builtins.str
    """교정된 전체 문장"""
    def __init__(
        self,
        *,
        origin: builtins.str = ...,
        revised: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["origin", b"origin", "revised", b"revised"]) -> None: ...

global___RevisedSentence = RevisedSentence

class CleanUpRange(google.protobuf.message.Message):
    """CleanUpRange 교정대상에서 불필요한 공백을 지워야할 범위"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    class _CleanUpPosition:
        ValueType = typing.NewType("ValueType", builtins.int)
        V: typing_extensions.TypeAlias = ValueType

    class _CleanUpPositionEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[CleanUpRange._CleanUpPosition.ValueType], builtins.type):  # noqa: F821
        DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
        START: CleanUpRange._CleanUpPosition.ValueType  # 0
        """처음"""
        END: CleanUpRange._CleanUpPosition.ValueType  # 1
        """끝"""
        MIDDLE: CleanUpRange._CleanUpPosition.ValueType  # 2
        """중간"""

    class CleanUpPosition(_CleanUpPosition, metaclass=_CleanUpPositionEnumTypeWrapper):
        """지워야할 위치에 대한 추가 정보"""

    START: CleanUpRange.CleanUpPosition.ValueType  # 0
    """처음"""
    END: CleanUpRange.CleanUpPosition.ValueType  # 1
    """끝"""
    MIDDLE: CleanUpRange.CleanUpPosition.ValueType  # 2
    """중간"""

    OFFSET_FIELD_NUMBER: builtins.int
    LENGTH_FIELD_NUMBER: builtins.int
    POSITION_FIELD_NUMBER: builtins.int
    offset: builtins.int
    """위치"""
    length: builtins.int
    """길이"""
    position: global___CleanUpRange.CleanUpPosition.ValueType
    def __init__(
        self,
        *,
        offset: builtins.int = ...,
        length: builtins.int = ...,
        position: global___CleanUpRange.CleanUpPosition.ValueType = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["length", b"length", "offset", b"offset", "position", b"position"]) -> None: ...

global___CleanUpRange = CleanUpRange

class CorrectErrorResponse(google.protobuf.message.Message):
    """맞춤법 교정의 응답"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    class HelpsEntry(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        KEY_FIELD_NUMBER: builtins.int
        VALUE_FIELD_NUMBER: builtins.int
        key: builtins.str
        @property
        def value(self) -> global___ReviseHelp: ...
        def __init__(
            self,
            *,
            key: builtins.str = ...,
            value: global___ReviseHelp | None = ...,
        ) -> None: ...
        def HasField(self, field_name: typing_extensions.Literal["value", b"value"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ...

    ORIGIN_FIELD_NUMBER: builtins.int
    REVISED_FIELD_NUMBER: builtins.int
    REVISED_BLOCKS_FIELD_NUMBER: builtins.int
    WHITESPACE_CLEANUP_RANGES_FIELD_NUMBER: builtins.int
    REVISED_SENTENCES_FIELD_NUMBER: builtins.int
    HELPS_FIELD_NUMBER: builtins.int
    LANGUAGE_FIELD_NUMBER: builtins.int
    origin: builtins.str
    """원래 요청 문서"""
    revised: builtins.str
    """교정 문장 문서"""
    @property
    def revised_blocks(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___RevisedBlock]:
        """수정된 결과들 하나 이상"""
    @property
    def whitespace_cleanup_ranges(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___CleanUpRange]:
        """교정대상에서 지워야할 공백들의 목록"""
    @property
    def revised_sentences(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___RevisedSentence]:
        """교정된 문장들"""
    @property
    def helps(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, global___ReviseHelp]:
        """교정 도움말들에 대한 정보"""
    language: builtins.str
    """텍스트의 언어, 만일 언어가 지정되지 않은 경우에는 자동으로 탐지하여 반환한다.
    언어가 지정된 경우에는 동일한 언어를 반환한다.
    이때, 언어는 ko_KR 등과 같이 사용한다.
    """
    def __init__(
        self,
        *,
        origin: builtins.str = ...,
        revised: builtins.str = ...,
        revised_blocks: collections.abc.Iterable[global___RevisedBlock] | None = ...,
        whitespace_cleanup_ranges: collections.abc.Iterable[global___CleanUpRange] | None = ...,
        revised_sentences: collections.abc.Iterable[global___RevisedSentence] | None = ...,
        helps: collections.abc.Mapping[builtins.str, global___ReviseHelp] | None = ...,
        language: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["helps", b"helps", "language", b"language", "origin", b"origin", "revised", b"revised", "revised_blocks", b"revised_blocks", "revised_sentences", b"revised_sentences", "whitespace_cleanup_ranges", b"whitespace_cleanup_ranges"]) -> None: ...

global___CorrectErrorResponse = CorrectErrorResponse
