"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
"""

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
import waCommon.WACommon_pb2

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

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

@typing.final
class MessageTransport(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    @typing.final
    class Payload(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        APPLICATIONPAYLOAD_FIELD_NUMBER: builtins.int
        FUTUREPROOF_FIELD_NUMBER: builtins.int
        futureProof: waCommon.WACommon_pb2.FutureProofBehavior.ValueType
        @property
        def applicationPayload(self) -> waCommon.WACommon_pb2.SubProtocol: ...
        def __init__(
            self,
            *,
            applicationPayload: waCommon.WACommon_pb2.SubProtocol | None = ...,
            futureProof: waCommon.WACommon_pb2.FutureProofBehavior.ValueType | None = ...,
        ) -> None: ...
        def HasField(self, field_name: typing.Literal["applicationPayload", b"applicationPayload", "futureProof", b"futureProof"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing.Literal["applicationPayload", b"applicationPayload", "futureProof", b"futureProof"]) -> None: ...

    @typing.final
    class Protocol(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        @typing.final
        class Ancillary(google.protobuf.message.Message):
            DESCRIPTOR: google.protobuf.descriptor.Descriptor

            @typing.final
            class BackupDirective(google.protobuf.message.Message):
                DESCRIPTOR: google.protobuf.descriptor.Descriptor

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

                class _ActionTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[MessageTransport.Protocol.Ancillary.BackupDirective._ActionType.ValueType], builtins.type):
                    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
                    NOOP: MessageTransport.Protocol.Ancillary.BackupDirective._ActionType.ValueType  # 0
                    UPSERT: MessageTransport.Protocol.Ancillary.BackupDirective._ActionType.ValueType  # 1
                    DELETE: MessageTransport.Protocol.Ancillary.BackupDirective._ActionType.ValueType  # 2
                    UPSERT_AND_DELETE: MessageTransport.Protocol.Ancillary.BackupDirective._ActionType.ValueType  # 3

                class ActionType(_ActionType, metaclass=_ActionTypeEnumTypeWrapper): ...
                NOOP: MessageTransport.Protocol.Ancillary.BackupDirective.ActionType.ValueType  # 0
                UPSERT: MessageTransport.Protocol.Ancillary.BackupDirective.ActionType.ValueType  # 1
                DELETE: MessageTransport.Protocol.Ancillary.BackupDirective.ActionType.ValueType  # 2
                UPSERT_AND_DELETE: MessageTransport.Protocol.Ancillary.BackupDirective.ActionType.ValueType  # 3

                MESSAGEID_FIELD_NUMBER: builtins.int
                ACTIONTYPE_FIELD_NUMBER: builtins.int
                SUPPLEMENTALKEY_FIELD_NUMBER: builtins.int
                messageID: builtins.str
                actionType: global___MessageTransport.Protocol.Ancillary.BackupDirective.ActionType.ValueType
                supplementalKey: builtins.str
                def __init__(
                    self,
                    *,
                    messageID: builtins.str | None = ...,
                    actionType: global___MessageTransport.Protocol.Ancillary.BackupDirective.ActionType.ValueType | None = ...,
                    supplementalKey: builtins.str | None = ...,
                ) -> None: ...
                def HasField(self, field_name: typing.Literal["actionType", b"actionType", "messageID", b"messageID", "supplementalKey", b"supplementalKey"]) -> builtins.bool: ...
                def ClearField(self, field_name: typing.Literal["actionType", b"actionType", "messageID", b"messageID", "supplementalKey", b"supplementalKey"]) -> None: ...

            @typing.final
            class ICDCParticipantDevices(google.protobuf.message.Message):
                DESCRIPTOR: google.protobuf.descriptor.Descriptor

                @typing.final
                class ICDCIdentityListDescription(google.protobuf.message.Message):
                    DESCRIPTOR: google.protobuf.descriptor.Descriptor

                    SEQ_FIELD_NUMBER: builtins.int
                    SIGNINGDEVICE_FIELD_NUMBER: builtins.int
                    UNKNOWNDEVICES_FIELD_NUMBER: builtins.int
                    UNKNOWNDEVICEIDS_FIELD_NUMBER: builtins.int
                    seq: builtins.int
                    signingDevice: builtins.bytes
                    @property
                    def unknownDevices(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.bytes]: ...
                    @property
                    def unknownDeviceIDs(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ...
                    def __init__(
                        self,
                        *,
                        seq: builtins.int | None = ...,
                        signingDevice: builtins.bytes | None = ...,
                        unknownDevices: collections.abc.Iterable[builtins.bytes] | None = ...,
                        unknownDeviceIDs: collections.abc.Iterable[builtins.int] | None = ...,
                    ) -> None: ...
                    def HasField(self, field_name: typing.Literal["seq", b"seq", "signingDevice", b"signingDevice"]) -> builtins.bool: ...
                    def ClearField(self, field_name: typing.Literal["seq", b"seq", "signingDevice", b"signingDevice", "unknownDeviceIDs", b"unknownDeviceIDs", "unknownDevices", b"unknownDevices"]) -> None: ...

                SENDERIDENTITY_FIELD_NUMBER: builtins.int
                RECIPIENTIDENTITIES_FIELD_NUMBER: builtins.int
                RECIPIENTUSERJIDS_FIELD_NUMBER: builtins.int
                @property
                def senderIdentity(self) -> global___MessageTransport.Protocol.Ancillary.ICDCParticipantDevices.ICDCIdentityListDescription: ...
                @property
                def recipientIdentities(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___MessageTransport.Protocol.Ancillary.ICDCParticipantDevices.ICDCIdentityListDescription]: ...
                @property
                def recipientUserJIDs(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ...
                def __init__(
                    self,
                    *,
                    senderIdentity: global___MessageTransport.Protocol.Ancillary.ICDCParticipantDevices.ICDCIdentityListDescription | None = ...,
                    recipientIdentities: collections.abc.Iterable[global___MessageTransport.Protocol.Ancillary.ICDCParticipantDevices.ICDCIdentityListDescription] | None = ...,
                    recipientUserJIDs: collections.abc.Iterable[builtins.str] | None = ...,
                ) -> None: ...
                def HasField(self, field_name: typing.Literal["senderIdentity", b"senderIdentity"]) -> builtins.bool: ...
                def ClearField(self, field_name: typing.Literal["recipientIdentities", b"recipientIdentities", "recipientUserJIDs", b"recipientUserJIDs", "senderIdentity", b"senderIdentity"]) -> None: ...

            @typing.final
            class SenderKeyDistributionMessage(google.protobuf.message.Message):
                DESCRIPTOR: google.protobuf.descriptor.Descriptor

                GROUPID_FIELD_NUMBER: builtins.int
                AXOLOTLSENDERKEYDISTRIBUTIONMESSAGE_FIELD_NUMBER: builtins.int
                groupID: builtins.str
                axolotlSenderKeyDistributionMessage: builtins.bytes
                def __init__(
                    self,
                    *,
                    groupID: builtins.str | None = ...,
                    axolotlSenderKeyDistributionMessage: builtins.bytes | None = ...,
                ) -> None: ...
                def HasField(self, field_name: typing.Literal["axolotlSenderKeyDistributionMessage", b"axolotlSenderKeyDistributionMessage", "groupID", b"groupID"]) -> builtins.bool: ...
                def ClearField(self, field_name: typing.Literal["axolotlSenderKeyDistributionMessage", b"axolotlSenderKeyDistributionMessage", "groupID", b"groupID"]) -> None: ...

            SKDM_FIELD_NUMBER: builtins.int
            DEVICELISTMETADATA_FIELD_NUMBER: builtins.int
            ICDC_FIELD_NUMBER: builtins.int
            BACKUPDIRECTIVE_FIELD_NUMBER: builtins.int
            @property
            def skdm(self) -> global___MessageTransport.Protocol.Ancillary.SenderKeyDistributionMessage: ...
            @property
            def deviceListMetadata(self) -> global___DeviceListMetadata: ...
            @property
            def icdc(self) -> global___MessageTransport.Protocol.Ancillary.ICDCParticipantDevices: ...
            @property
            def backupDirective(self) -> global___MessageTransport.Protocol.Ancillary.BackupDirective: ...
            def __init__(
                self,
                *,
                skdm: global___MessageTransport.Protocol.Ancillary.SenderKeyDistributionMessage | None = ...,
                deviceListMetadata: global___DeviceListMetadata | None = ...,
                icdc: global___MessageTransport.Protocol.Ancillary.ICDCParticipantDevices | None = ...,
                backupDirective: global___MessageTransport.Protocol.Ancillary.BackupDirective | None = ...,
            ) -> None: ...
            def HasField(self, field_name: typing.Literal["backupDirective", b"backupDirective", "deviceListMetadata", b"deviceListMetadata", "icdc", b"icdc", "skdm", b"skdm"]) -> builtins.bool: ...
            def ClearField(self, field_name: typing.Literal["backupDirective", b"backupDirective", "deviceListMetadata", b"deviceListMetadata", "icdc", b"icdc", "skdm", b"skdm"]) -> None: ...

        @typing.final
        class Integral(google.protobuf.message.Message):
            DESCRIPTOR: google.protobuf.descriptor.Descriptor

            @typing.final
            class DeviceSentMessage(google.protobuf.message.Message):
                DESCRIPTOR: google.protobuf.descriptor.Descriptor

                DESTINATIONJID_FIELD_NUMBER: builtins.int
                PHASH_FIELD_NUMBER: builtins.int
                destinationJID: builtins.str
                phash: builtins.str
                def __init__(
                    self,
                    *,
                    destinationJID: builtins.str | None = ...,
                    phash: builtins.str | None = ...,
                ) -> None: ...
                def HasField(self, field_name: typing.Literal["destinationJID", b"destinationJID", "phash", b"phash"]) -> builtins.bool: ...
                def ClearField(self, field_name: typing.Literal["destinationJID", b"destinationJID", "phash", b"phash"]) -> None: ...

            PADDING_FIELD_NUMBER: builtins.int
            DSM_FIELD_NUMBER: builtins.int
            padding: builtins.bytes
            @property
            def DSM(self) -> global___MessageTransport.Protocol.Integral.DeviceSentMessage: ...
            def __init__(
                self,
                *,
                padding: builtins.bytes | None = ...,
                DSM: global___MessageTransport.Protocol.Integral.DeviceSentMessage | None = ...,
            ) -> None: ...
            def HasField(self, field_name: typing.Literal["DSM", b"DSM", "padding", b"padding"]) -> builtins.bool: ...
            def ClearField(self, field_name: typing.Literal["DSM", b"DSM", "padding", b"padding"]) -> None: ...

        INTEGRAL_FIELD_NUMBER: builtins.int
        ANCILLARY_FIELD_NUMBER: builtins.int
        @property
        def integral(self) -> global___MessageTransport.Protocol.Integral: ...
        @property
        def ancillary(self) -> global___MessageTransport.Protocol.Ancillary: ...
        def __init__(
            self,
            *,
            integral: global___MessageTransport.Protocol.Integral | None = ...,
            ancillary: global___MessageTransport.Protocol.Ancillary | None = ...,
        ) -> None: ...
        def HasField(self, field_name: typing.Literal["ancillary", b"ancillary", "integral", b"integral"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing.Literal["ancillary", b"ancillary", "integral", b"integral"]) -> None: ...

    PAYLOAD_FIELD_NUMBER: builtins.int
    PROTOCOL_FIELD_NUMBER: builtins.int
    @property
    def payload(self) -> global___MessageTransport.Payload: ...
    @property
    def protocol(self) -> global___MessageTransport.Protocol: ...
    def __init__(
        self,
        *,
        payload: global___MessageTransport.Payload | None = ...,
        protocol: global___MessageTransport.Protocol | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["payload", b"payload", "protocol", b"protocol"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["payload", b"payload", "protocol", b"protocol"]) -> None: ...

global___MessageTransport = MessageTransport

@typing.final
class DeviceListMetadata(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    SENDERKEYHASH_FIELD_NUMBER: builtins.int
    SENDERTIMESTAMP_FIELD_NUMBER: builtins.int
    RECIPIENTKEYHASH_FIELD_NUMBER: builtins.int
    RECIPIENTTIMESTAMP_FIELD_NUMBER: builtins.int
    senderKeyHash: builtins.bytes
    senderTimestamp: builtins.int
    recipientKeyHash: builtins.bytes
    recipientTimestamp: builtins.int
    def __init__(
        self,
        *,
        senderKeyHash: builtins.bytes | None = ...,
        senderTimestamp: builtins.int | None = ...,
        recipientKeyHash: builtins.bytes | None = ...,
        recipientTimestamp: builtins.int | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["recipientKeyHash", b"recipientKeyHash", "recipientTimestamp", b"recipientTimestamp", "senderKeyHash", b"senderKeyHash", "senderTimestamp", b"senderTimestamp"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["recipientKeyHash", b"recipientKeyHash", "recipientTimestamp", b"recipientTimestamp", "senderKeyHash", b"senderKeyHash", "senderTimestamp", b"senderTimestamp"]) -> None: ...

global___DeviceListMetadata = DeviceListMetadata
