# @generated by generate_proto_mypy_stubs.py.  Do not edit!
import sys
from google.protobuf.descriptor import (
    Descriptor as google___protobuf___descriptor___Descriptor,
    EnumDescriptor as google___protobuf___descriptor___EnumDescriptor,
    FieldDescriptor as google___protobuf___descriptor___FieldDescriptor,
)

from google.protobuf.internal.containers import (
    RepeatedCompositeFieldContainer as google___protobuf___internal___containers___RepeatedCompositeFieldContainer,
    RepeatedScalarFieldContainer as google___protobuf___internal___containers___RepeatedScalarFieldContainer,
)

from google.protobuf.message import (
    Message as google___protobuf___message___Message,
)

from google.protobuf.timestamp_pb2 import (
    Timestamp as google___protobuf___timestamp_pb2___Timestamp,
)

from typing import (
    Iterable as typing___Iterable,
    List as typing___List,
    Mapping as typing___Mapping,
    MutableMapping as typing___MutableMapping,
    Optional as typing___Optional,
    Text as typing___Text,
    Tuple as typing___Tuple,
    Union as typing___Union,
    cast as typing___cast,
)

from typing_extensions import (
    Literal as typing_extensions___Literal,
)


builtin___bool = bool
builtin___bytes = bytes
builtin___float = float
builtin___int = int
builtin___str = str
if sys.version_info < (3,):
    builtin___buffer = buffer
    builtin___unicode = unicode


class MonitoringInfoSpec(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    urn = ... # type: typing___Text
    type = ... # type: typing___Text
    required_labels = ... # type: google___protobuf___internal___containers___RepeatedScalarFieldContainer[typing___Text]

    @property
    def annotations(self) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[Annotation]: ...

    def __init__(self,
        *,
        urn : typing___Optional[typing___Text] = None,
        type : typing___Optional[typing___Text] = None,
        required_labels : typing___Optional[typing___Iterable[typing___Text]] = None,
        annotations : typing___Optional[typing___Iterable[Annotation]] = None,
        ) -> None: ...
    if sys.version_info >= (3,):
        @classmethod
        def FromString(cls, s: builtin___bytes) -> MonitoringInfoSpec: ...
    else:
        @classmethod
        def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> MonitoringInfoSpec: ...
    def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    if sys.version_info >= (3,):
        def ClearField(self, field_name: typing_extensions___Literal[u"annotations",u"required_labels",u"type",u"urn"]) -> None: ...
    else:
        def ClearField(self, field_name: typing_extensions___Literal[u"annotations",b"annotations",u"required_labels",b"required_labels",u"type",b"type",u"urn",b"urn"]) -> None: ...

class Annotation(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    key = ... # type: typing___Text
    value = ... # type: typing___Text

    def __init__(self,
        *,
        key : typing___Optional[typing___Text] = None,
        value : typing___Optional[typing___Text] = None,
        ) -> None: ...
    if sys.version_info >= (3,):
        @classmethod
        def FromString(cls, s: builtin___bytes) -> Annotation: ...
    else:
        @classmethod
        def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> Annotation: ...
    def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    if sys.version_info >= (3,):
        def ClearField(self, field_name: typing_extensions___Literal[u"key",u"value"]) -> None: ...
    else:
        def ClearField(self, field_name: typing_extensions___Literal[u"key",b"key",u"value",b"value"]) -> None: ...

class MonitoringInfoSpecs(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    class Enum(builtin___int):
        DESCRIPTOR: google___protobuf___descriptor___EnumDescriptor = ...
        @classmethod
        def Name(cls, number: builtin___int) -> builtin___str: ...
        @classmethod
        def Value(cls, name: builtin___str) -> 'MonitoringInfoSpecs.Enum': ...
        @classmethod
        def keys(cls) -> typing___List[builtin___str]: ...
        @classmethod
        def values(cls) -> typing___List['MonitoringInfoSpecs.Enum']: ...
        @classmethod
        def items(cls) -> typing___List[typing___Tuple[builtin___str, 'MonitoringInfoSpecs.Enum']]: ...
        USER_SUM_INT64 = typing___cast('MonitoringInfoSpecs.Enum', 0)
        USER_SUM_DOUBLE = typing___cast('MonitoringInfoSpecs.Enum', 1)
        USER_DISTRIBUTION_INT64 = typing___cast('MonitoringInfoSpecs.Enum', 2)
        USER_DISTRIBUTION_DOUBLE = typing___cast('MonitoringInfoSpecs.Enum', 3)
        USER_LATEST_INT64 = typing___cast('MonitoringInfoSpecs.Enum', 4)
        USER_LATEST_DOUBLE = typing___cast('MonitoringInfoSpecs.Enum', 5)
        USER_TOP_N_INT64 = typing___cast('MonitoringInfoSpecs.Enum', 6)
        USER_TOP_N_DOUBLE = typing___cast('MonitoringInfoSpecs.Enum', 7)
        USER_BOTTOM_N_INT64 = typing___cast('MonitoringInfoSpecs.Enum', 8)
        USER_BOTTOM_N_DOUBLE = typing___cast('MonitoringInfoSpecs.Enum', 9)
        ELEMENT_COUNT = typing___cast('MonitoringInfoSpecs.Enum', 10)
        SAMPLED_BYTE_SIZE = typing___cast('MonitoringInfoSpecs.Enum', 11)
        START_BUNDLE_MSECS = typing___cast('MonitoringInfoSpecs.Enum', 12)
        PROCESS_BUNDLE_MSECS = typing___cast('MonitoringInfoSpecs.Enum', 13)
        FINISH_BUNDLE_MSECS = typing___cast('MonitoringInfoSpecs.Enum', 14)
        TOTAL_MSECS = typing___cast('MonitoringInfoSpecs.Enum', 15)
        WORK_REMAINING = typing___cast('MonitoringInfoSpecs.Enum', 16)
        WORK_COMPLETED = typing___cast('MonitoringInfoSpecs.Enum', 17)
        DATA_CHANNEL_READ_INDEX = typing___cast('MonitoringInfoSpecs.Enum', 18)
        API_REQUEST_COUNT = typing___cast('MonitoringInfoSpecs.Enum', 19)
        API_REQUEST_LATENCIES = typing___cast('MonitoringInfoSpecs.Enum', 20)
    USER_SUM_INT64 = typing___cast('MonitoringInfoSpecs.Enum', 0)
    USER_SUM_DOUBLE = typing___cast('MonitoringInfoSpecs.Enum', 1)
    USER_DISTRIBUTION_INT64 = typing___cast('MonitoringInfoSpecs.Enum', 2)
    USER_DISTRIBUTION_DOUBLE = typing___cast('MonitoringInfoSpecs.Enum', 3)
    USER_LATEST_INT64 = typing___cast('MonitoringInfoSpecs.Enum', 4)
    USER_LATEST_DOUBLE = typing___cast('MonitoringInfoSpecs.Enum', 5)
    USER_TOP_N_INT64 = typing___cast('MonitoringInfoSpecs.Enum', 6)
    USER_TOP_N_DOUBLE = typing___cast('MonitoringInfoSpecs.Enum', 7)
    USER_BOTTOM_N_INT64 = typing___cast('MonitoringInfoSpecs.Enum', 8)
    USER_BOTTOM_N_DOUBLE = typing___cast('MonitoringInfoSpecs.Enum', 9)
    ELEMENT_COUNT = typing___cast('MonitoringInfoSpecs.Enum', 10)
    SAMPLED_BYTE_SIZE = typing___cast('MonitoringInfoSpecs.Enum', 11)
    START_BUNDLE_MSECS = typing___cast('MonitoringInfoSpecs.Enum', 12)
    PROCESS_BUNDLE_MSECS = typing___cast('MonitoringInfoSpecs.Enum', 13)
    FINISH_BUNDLE_MSECS = typing___cast('MonitoringInfoSpecs.Enum', 14)
    TOTAL_MSECS = typing___cast('MonitoringInfoSpecs.Enum', 15)
    WORK_REMAINING = typing___cast('MonitoringInfoSpecs.Enum', 16)
    WORK_COMPLETED = typing___cast('MonitoringInfoSpecs.Enum', 17)
    DATA_CHANNEL_READ_INDEX = typing___cast('MonitoringInfoSpecs.Enum', 18)
    API_REQUEST_COUNT = typing___cast('MonitoringInfoSpecs.Enum', 19)
    API_REQUEST_LATENCIES = typing___cast('MonitoringInfoSpecs.Enum', 20)


    def __init__(self,
        ) -> None: ...
    if sys.version_info >= (3,):
        @classmethod
        def FromString(cls, s: builtin___bytes) -> MonitoringInfoSpecs: ...
    else:
        @classmethod
        def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> MonitoringInfoSpecs: ...
    def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...

class MonitoringInfoLabelProps(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    name = ... # type: typing___Text

    def __init__(self,
        *,
        name : typing___Optional[typing___Text] = None,
        ) -> None: ...
    if sys.version_info >= (3,):
        @classmethod
        def FromString(cls, s: builtin___bytes) -> MonitoringInfoLabelProps: ...
    else:
        @classmethod
        def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> MonitoringInfoLabelProps: ...
    def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    if sys.version_info >= (3,):
        def ClearField(self, field_name: typing_extensions___Literal[u"name"]) -> None: ...
    else:
        def ClearField(self, field_name: typing_extensions___Literal[u"name",b"name"]) -> None: ...

class MonitoringInfo(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    class MonitoringInfoLabels(builtin___int):
        DESCRIPTOR: google___protobuf___descriptor___EnumDescriptor = ...
        @classmethod
        def Name(cls, number: builtin___int) -> builtin___str: ...
        @classmethod
        def Value(cls, name: builtin___str) -> 'MonitoringInfo.MonitoringInfoLabels': ...
        @classmethod
        def keys(cls) -> typing___List[builtin___str]: ...
        @classmethod
        def values(cls) -> typing___List['MonitoringInfo.MonitoringInfoLabels']: ...
        @classmethod
        def items(cls) -> typing___List[typing___Tuple[builtin___str, 'MonitoringInfo.MonitoringInfoLabels']]: ...
        TRANSFORM = typing___cast('MonitoringInfo.MonitoringInfoLabels', 0)
        PCOLLECTION = typing___cast('MonitoringInfo.MonitoringInfoLabels', 1)
        WINDOWING_STRATEGY = typing___cast('MonitoringInfo.MonitoringInfoLabels', 2)
        CODER = typing___cast('MonitoringInfo.MonitoringInfoLabels', 3)
        ENVIRONMENT = typing___cast('MonitoringInfo.MonitoringInfoLabels', 4)
        NAMESPACE = typing___cast('MonitoringInfo.MonitoringInfoLabels', 5)
        NAME = typing___cast('MonitoringInfo.MonitoringInfoLabels', 6)
        SERVICE = typing___cast('MonitoringInfo.MonitoringInfoLabels', 7)
        METHOD = typing___cast('MonitoringInfo.MonitoringInfoLabels', 8)
        RESOURCE = typing___cast('MonitoringInfo.MonitoringInfoLabels', 9)
        STATUS = typing___cast('MonitoringInfo.MonitoringInfoLabels', 10)
        BIGQUERY_PROJECT_ID = typing___cast('MonitoringInfo.MonitoringInfoLabels', 11)
        BIGQUERY_DATASET = typing___cast('MonitoringInfo.MonitoringInfoLabels', 12)
        BIGQUERY_TABLE = typing___cast('MonitoringInfo.MonitoringInfoLabels', 13)
        BIGQUERY_VIEW = typing___cast('MonitoringInfo.MonitoringInfoLabels', 14)
        BIGQUERY_QUERY_NAME = typing___cast('MonitoringInfo.MonitoringInfoLabels', 15)
        GCS_BUCKET = typing___cast('MonitoringInfo.MonitoringInfoLabels', 16)
        GCS_PROJECT_ID = typing___cast('MonitoringInfo.MonitoringInfoLabels', 17)
        DATASTORE_PROJECT = typing___cast('MonitoringInfo.MonitoringInfoLabels', 18)
        DATASTORE_NAMESPACE = typing___cast('MonitoringInfo.MonitoringInfoLabels', 19)
        BIGTABLE_PROJECT_ID = typing___cast('MonitoringInfo.MonitoringInfoLabels', 20)
        INSTANCE_ID = typing___cast('MonitoringInfo.MonitoringInfoLabels', 21)
        TABLE_ID = typing___cast('MonitoringInfo.MonitoringInfoLabels', 22)
        SPANNER_PROJECT_ID = typing___cast('MonitoringInfo.MonitoringInfoLabels', 23)
        SPANNER_DATABASE_ID = typing___cast('MonitoringInfo.MonitoringInfoLabels', 24)
        SPANNER_TABLE_ID = typing___cast('MonitoringInfo.MonitoringInfoLabels', 25)
        SPANNER_INSTANCE_ID = typing___cast('MonitoringInfo.MonitoringInfoLabels', 26)
        SPANNER_QUERY_NAME = typing___cast('MonitoringInfo.MonitoringInfoLabels', 27)
    TRANSFORM = typing___cast('MonitoringInfo.MonitoringInfoLabels', 0)
    PCOLLECTION = typing___cast('MonitoringInfo.MonitoringInfoLabels', 1)
    WINDOWING_STRATEGY = typing___cast('MonitoringInfo.MonitoringInfoLabels', 2)
    CODER = typing___cast('MonitoringInfo.MonitoringInfoLabels', 3)
    ENVIRONMENT = typing___cast('MonitoringInfo.MonitoringInfoLabels', 4)
    NAMESPACE = typing___cast('MonitoringInfo.MonitoringInfoLabels', 5)
    NAME = typing___cast('MonitoringInfo.MonitoringInfoLabels', 6)
    SERVICE = typing___cast('MonitoringInfo.MonitoringInfoLabels', 7)
    METHOD = typing___cast('MonitoringInfo.MonitoringInfoLabels', 8)
    RESOURCE = typing___cast('MonitoringInfo.MonitoringInfoLabels', 9)
    STATUS = typing___cast('MonitoringInfo.MonitoringInfoLabels', 10)
    BIGQUERY_PROJECT_ID = typing___cast('MonitoringInfo.MonitoringInfoLabels', 11)
    BIGQUERY_DATASET = typing___cast('MonitoringInfo.MonitoringInfoLabels', 12)
    BIGQUERY_TABLE = typing___cast('MonitoringInfo.MonitoringInfoLabels', 13)
    BIGQUERY_VIEW = typing___cast('MonitoringInfo.MonitoringInfoLabels', 14)
    BIGQUERY_QUERY_NAME = typing___cast('MonitoringInfo.MonitoringInfoLabels', 15)
    GCS_BUCKET = typing___cast('MonitoringInfo.MonitoringInfoLabels', 16)
    GCS_PROJECT_ID = typing___cast('MonitoringInfo.MonitoringInfoLabels', 17)
    DATASTORE_PROJECT = typing___cast('MonitoringInfo.MonitoringInfoLabels', 18)
    DATASTORE_NAMESPACE = typing___cast('MonitoringInfo.MonitoringInfoLabels', 19)
    BIGTABLE_PROJECT_ID = typing___cast('MonitoringInfo.MonitoringInfoLabels', 20)
    INSTANCE_ID = typing___cast('MonitoringInfo.MonitoringInfoLabels', 21)
    TABLE_ID = typing___cast('MonitoringInfo.MonitoringInfoLabels', 22)
    SPANNER_PROJECT_ID = typing___cast('MonitoringInfo.MonitoringInfoLabels', 23)
    SPANNER_DATABASE_ID = typing___cast('MonitoringInfo.MonitoringInfoLabels', 24)
    SPANNER_TABLE_ID = typing___cast('MonitoringInfo.MonitoringInfoLabels', 25)
    SPANNER_INSTANCE_ID = typing___cast('MonitoringInfo.MonitoringInfoLabels', 26)
    SPANNER_QUERY_NAME = typing___cast('MonitoringInfo.MonitoringInfoLabels', 27)

    class LabelsEntry(google___protobuf___message___Message):
        DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
        key = ... # type: typing___Text
        value = ... # type: typing___Text

        def __init__(self,
            *,
            key : typing___Optional[typing___Text] = None,
            value : typing___Optional[typing___Text] = None,
            ) -> None: ...
        if sys.version_info >= (3,):
            @classmethod
            def FromString(cls, s: builtin___bytes) -> MonitoringInfo.LabelsEntry: ...
        else:
            @classmethod
            def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> MonitoringInfo.LabelsEntry: ...
        def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
        def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
        if sys.version_info >= (3,):
            def ClearField(self, field_name: typing_extensions___Literal[u"key",u"value"]) -> None: ...
        else:
            def ClearField(self, field_name: typing_extensions___Literal[u"key",b"key",u"value",b"value"]) -> None: ...

    urn = ... # type: typing___Text
    type = ... # type: typing___Text
    payload = ... # type: builtin___bytes

    @property
    def labels(self) -> typing___MutableMapping[typing___Text, typing___Text]: ...

    @property
    def start_time(self) -> google___protobuf___timestamp_pb2___Timestamp: ...

    def __init__(self,
        *,
        urn : typing___Optional[typing___Text] = None,
        type : typing___Optional[typing___Text] = None,
        payload : typing___Optional[builtin___bytes] = None,
        labels : typing___Optional[typing___Mapping[typing___Text, typing___Text]] = None,
        start_time : typing___Optional[google___protobuf___timestamp_pb2___Timestamp] = None,
        ) -> None: ...
    if sys.version_info >= (3,):
        @classmethod
        def FromString(cls, s: builtin___bytes) -> MonitoringInfo: ...
    else:
        @classmethod
        def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> MonitoringInfo: ...
    def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    if sys.version_info >= (3,):
        def HasField(self, field_name: typing_extensions___Literal[u"start_time"]) -> builtin___bool: ...
        def ClearField(self, field_name: typing_extensions___Literal[u"labels",u"payload",u"start_time",u"type",u"urn"]) -> None: ...
    else:
        def HasField(self, field_name: typing_extensions___Literal[u"start_time",b"start_time"]) -> builtin___bool: ...
        def ClearField(self, field_name: typing_extensions___Literal[u"labels",b"labels",u"payload",b"payload",u"start_time",b"start_time",u"type",b"type",u"urn",b"urn"]) -> None: ...

class MonitoringInfoTypeUrns(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    class Enum(builtin___int):
        DESCRIPTOR: google___protobuf___descriptor___EnumDescriptor = ...
        @classmethod
        def Name(cls, number: builtin___int) -> builtin___str: ...
        @classmethod
        def Value(cls, name: builtin___str) -> 'MonitoringInfoTypeUrns.Enum': ...
        @classmethod
        def keys(cls) -> typing___List[builtin___str]: ...
        @classmethod
        def values(cls) -> typing___List['MonitoringInfoTypeUrns.Enum']: ...
        @classmethod
        def items(cls) -> typing___List[typing___Tuple[builtin___str, 'MonitoringInfoTypeUrns.Enum']]: ...
        SUM_INT64_TYPE = typing___cast('MonitoringInfoTypeUrns.Enum', 0)
        SUM_DOUBLE_TYPE = typing___cast('MonitoringInfoTypeUrns.Enum', 1)
        DISTRIBUTION_INT64_TYPE = typing___cast('MonitoringInfoTypeUrns.Enum', 2)
        DISTRIBUTION_DOUBLE_TYPE = typing___cast('MonitoringInfoTypeUrns.Enum', 3)
        LATEST_INT64_TYPE = typing___cast('MonitoringInfoTypeUrns.Enum', 4)
        LATEST_DOUBLE_TYPE = typing___cast('MonitoringInfoTypeUrns.Enum', 5)
        TOP_N_INT64_TYPE = typing___cast('MonitoringInfoTypeUrns.Enum', 6)
        TOP_N_DOUBLE_TYPE = typing___cast('MonitoringInfoTypeUrns.Enum', 7)
        BOTTOM_N_INT64_TYPE = typing___cast('MonitoringInfoTypeUrns.Enum', 8)
        BOTTOM_N_DOUBLE_TYPE = typing___cast('MonitoringInfoTypeUrns.Enum', 9)
        PROGRESS_TYPE = typing___cast('MonitoringInfoTypeUrns.Enum', 10)
    SUM_INT64_TYPE = typing___cast('MonitoringInfoTypeUrns.Enum', 0)
    SUM_DOUBLE_TYPE = typing___cast('MonitoringInfoTypeUrns.Enum', 1)
    DISTRIBUTION_INT64_TYPE = typing___cast('MonitoringInfoTypeUrns.Enum', 2)
    DISTRIBUTION_DOUBLE_TYPE = typing___cast('MonitoringInfoTypeUrns.Enum', 3)
    LATEST_INT64_TYPE = typing___cast('MonitoringInfoTypeUrns.Enum', 4)
    LATEST_DOUBLE_TYPE = typing___cast('MonitoringInfoTypeUrns.Enum', 5)
    TOP_N_INT64_TYPE = typing___cast('MonitoringInfoTypeUrns.Enum', 6)
    TOP_N_DOUBLE_TYPE = typing___cast('MonitoringInfoTypeUrns.Enum', 7)
    BOTTOM_N_INT64_TYPE = typing___cast('MonitoringInfoTypeUrns.Enum', 8)
    BOTTOM_N_DOUBLE_TYPE = typing___cast('MonitoringInfoTypeUrns.Enum', 9)
    PROGRESS_TYPE = typing___cast('MonitoringInfoTypeUrns.Enum', 10)


    def __init__(self,
        ) -> None: ...
    if sys.version_info >= (3,):
        @classmethod
        def FromString(cls, s: builtin___bytes) -> MonitoringInfoTypeUrns: ...
    else:
        @classmethod
        def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> MonitoringInfoTypeUrns: ...
    def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...

label_props = ... # type: google___protobuf___descriptor___FieldDescriptor

monitoring_info_spec = ... # type: google___protobuf___descriptor___FieldDescriptor
