"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
Copyright (c) 2019-2024 Iotic Labs Ltd. All rights reserved.

Iotics Web protocol definitions (input)
"""

import builtins
import collections.abc
import google.protobuf.descriptor
import google.protobuf.internal.containers
import google.protobuf.message
import google.protobuf.timestamp_pb2
import iotics.api.common_pb2
import typing

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

@typing.final
class InputID(google.protobuf.message.Message):
    """Representation of an input."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    ID_FIELD_NUMBER: builtins.int
    TWINID_FIELD_NUMBER: builtins.int
    HOSTID_FIELD_NUMBER: builtins.int
    id: builtins.str
    """Input Identifier string representation (simple string) (unique within the scope of a twin identifier's input set)"""
    twinId: builtins.str
    """Twin identifier string representation (simple string) (twin to which the input belongs)"""
    hostId: builtins.str
    """Host identifier string representation (simple string) (Host to which the twin belongs)"""
    def __init__(
        self,
        *,
        id: builtins.str = ...,
        twinId: builtins.str = ...,
        hostId: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["hostId", b"hostId", "id", b"id", "twinId", b"twinId"]) -> None: ...

global___InputID = InputID

@typing.final
class DeleteInputRequest(google.protobuf.message.Message):
    """DeleteInputRequest is used to delete an input from a given twin."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    @typing.final
    class Arguments(google.protobuf.message.Message):
        """DeleteInputRequest arguments."""

        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        INPUTID_FIELD_NUMBER: builtins.int
        @property
        def inputId(self) -> global___InputID:
            """Input to delete"""

        def __init__(
            self,
            *,
            inputId: global___InputID | None = ...,
        ) -> None: ...
        def HasField(self, field_name: typing.Literal["inputId", b"inputId"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing.Literal["inputId", b"inputId"]) -> None: ...

    HEADERS_FIELD_NUMBER: builtins.int
    ARGS_FIELD_NUMBER: builtins.int
    @property
    def headers(self) -> iotics.api.common_pb2.Headers:
        """DeleteInputRequest headers"""

    @property
    def args(self) -> global___DeleteInputRequest.Arguments:
        """DeleteInputRequest mandatory arguments"""

    def __init__(
        self,
        *,
        headers: iotics.api.common_pb2.Headers | None = ...,
        args: global___DeleteInputRequest.Arguments | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["args", b"args", "headers", b"headers"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["args", b"args", "headers", b"headers"]) -> None: ...

global___DeleteInputRequest = DeleteInputRequest

@typing.final
class DeleteInputResponse(google.protobuf.message.Message):
    """DeleteInputResponse describes a deleted input."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    @typing.final
    class Payload(google.protobuf.message.Message):
        """DeleteInputResponse payload."""

        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        INPUTID_FIELD_NUMBER: builtins.int
        @property
        def inputId(self) -> global___InputID:
            """Deleted input"""

        def __init__(
            self,
            *,
            inputId: global___InputID | None = ...,
        ) -> None: ...
        def HasField(self, field_name: typing.Literal["inputId", b"inputId"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing.Literal["inputId", b"inputId"]) -> None: ...

    HEADERS_FIELD_NUMBER: builtins.int
    PAYLOAD_FIELD_NUMBER: builtins.int
    @property
    def headers(self) -> iotics.api.common_pb2.Headers:
        """DeleteInputResponse headers"""

    @property
    def payload(self) -> global___DeleteInputResponse.Payload:
        """DeleteInputResponse payload"""

    def __init__(
        self,
        *,
        headers: iotics.api.common_pb2.Headers | None = ...,
        payload: global___DeleteInputResponse.Payload | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["headers", b"headers", "payload", b"payload"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["headers", b"headers", "payload", b"payload"]) -> None: ...

global___DeleteInputResponse = DeleteInputResponse

@typing.final
class CreateInputRequest(google.protobuf.message.Message):
    """CreateInputRequest describes a created input."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    @typing.final
    class Payload(google.protobuf.message.Message):
        """CreateInputRequest payload."""

        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        ID_FIELD_NUMBER: builtins.int
        id: builtins.str
        """Input identifier string representation (simple string) (unique within the scope of a twin identifier's input set)"""
        def __init__(
            self,
            *,
            id: builtins.str = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing.Literal["id", b"id"]) -> None: ...

    @typing.final
    class Arguments(google.protobuf.message.Message):
        """Arguments describes the mandatory arguments to identify the twin owning this input"""

        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        TWINID_FIELD_NUMBER: builtins.int
        @property
        def twinId(self) -> iotics.api.common_pb2.TwinID:
            """Identifier of the twin owning this input"""

        def __init__(
            self,
            *,
            twinId: iotics.api.common_pb2.TwinID | None = ...,
        ) -> None: ...
        def HasField(self, field_name: typing.Literal["twinId", b"twinId"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing.Literal["twinId", b"twinId"]) -> None: ...

    HEADERS_FIELD_NUMBER: builtins.int
    ARGS_FIELD_NUMBER: builtins.int
    PAYLOAD_FIELD_NUMBER: builtins.int
    @property
    def headers(self) -> iotics.api.common_pb2.Headers:
        """CreateInputRequest headers"""

    @property
    def args(self) -> global___CreateInputRequest.Arguments:
        """CreateInputRequest arguments"""

    @property
    def payload(self) -> global___CreateInputRequest.Payload:
        """CreateInputRequest payload"""

    def __init__(
        self,
        *,
        headers: iotics.api.common_pb2.Headers | None = ...,
        args: global___CreateInputRequest.Arguments | None = ...,
        payload: global___CreateInputRequest.Payload | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["args", b"args", "headers", b"headers", "payload", b"payload"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["args", b"args", "headers", b"headers", "payload", b"payload"]) -> None: ...

global___CreateInputRequest = CreateInputRequest

@typing.final
class CreateInputResponse(google.protobuf.message.Message):
    """CreateInputResponse describes a created input."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    @typing.final
    class Payload(google.protobuf.message.Message):
        """CreateInputResponse payload."""

        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        INPUTID_FIELD_NUMBER: builtins.int
        @property
        def inputId(self) -> global___InputID:
            """Created input"""

        def __init__(
            self,
            *,
            inputId: global___InputID | None = ...,
        ) -> None: ...
        def HasField(self, field_name: typing.Literal["inputId", b"inputId"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing.Literal["inputId", b"inputId"]) -> None: ...

    HEADERS_FIELD_NUMBER: builtins.int
    PAYLOAD_FIELD_NUMBER: builtins.int
    @property
    def headers(self) -> iotics.api.common_pb2.Headers:
        """CreateInputResponse headers"""

    @property
    def payload(self) -> global___CreateInputResponse.Payload:
        """CreateInputResponse payload"""

    def __init__(
        self,
        *,
        headers: iotics.api.common_pb2.Headers | None = ...,
        payload: global___CreateInputResponse.Payload | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["headers", b"headers", "payload", b"payload"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["headers", b"headers", "payload", b"payload"]) -> None: ...

global___CreateInputResponse = CreateInputResponse

@typing.final
class UpdateInputRequest(google.protobuf.message.Message):
    """UpdateInputRequest is used to update an input."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    @typing.final
    class Payload(google.protobuf.message.Message):
        """UdpateInputRequest payload used to update one or more field"""

        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        VALUES_FIELD_NUMBER: builtins.int
        PROPERTIES_FIELD_NUMBER: builtins.int
        @property
        def values(self) -> iotics.api.common_pb2.Values:
            """Values describe individual data items to add/remove"""

        @property
        def properties(self) -> iotics.api.common_pb2.PropertyUpdate:
            """Properties describe individual properties to add/remove. Note only custom properties can be modified here."""

        def __init__(
            self,
            *,
            values: iotics.api.common_pb2.Values | None = ...,
            properties: iotics.api.common_pb2.PropertyUpdate | None = ...,
        ) -> None: ...
        def HasField(self, field_name: typing.Literal["properties", b"properties", "values", b"values"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing.Literal["properties", b"properties", "values", b"values"]) -> None: ...

    @typing.final
    class Arguments(google.protobuf.message.Message):
        """UpdateInputRequest arguments"""

        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        INPUTID_FIELD_NUMBER: builtins.int
        @property
        def inputId(self) -> global___InputID:
            """Input to update"""

        def __init__(
            self,
            *,
            inputId: global___InputID | None = ...,
        ) -> None: ...
        def HasField(self, field_name: typing.Literal["inputId", b"inputId"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing.Literal["inputId", b"inputId"]) -> None: ...

    HEADERS_FIELD_NUMBER: builtins.int
    ARGS_FIELD_NUMBER: builtins.int
    PAYLOAD_FIELD_NUMBER: builtins.int
    @property
    def headers(self) -> iotics.api.common_pb2.Headers:
        """UpdateInputRequest headers"""

    @property
    def args(self) -> global___UpdateInputRequest.Arguments:
        """UpdateInputRequest arguments"""

    @property
    def payload(self) -> global___UpdateInputRequest.Payload:
        """UpdateInputRequest payload"""

    def __init__(
        self,
        *,
        headers: iotics.api.common_pb2.Headers | None = ...,
        args: global___UpdateInputRequest.Arguments | None = ...,
        payload: global___UpdateInputRequest.Payload | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["args", b"args", "headers", b"headers", "payload", b"payload"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["args", b"args", "headers", b"headers", "payload", b"payload"]) -> None: ...

global___UpdateInputRequest = UpdateInputRequest

@typing.final
class UpdateInputResponse(google.protobuf.message.Message):
    """UpdateInputResponse describes an updated input."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    @typing.final
    class Payload(google.protobuf.message.Message):
        """UpdateInputResponse payload."""

        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        INPUTID_FIELD_NUMBER: builtins.int
        @property
        def inputId(self) -> global___InputID:
            """Updated input"""

        def __init__(
            self,
            *,
            inputId: global___InputID | None = ...,
        ) -> None: ...
        def HasField(self, field_name: typing.Literal["inputId", b"inputId"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing.Literal["inputId", b"inputId"]) -> None: ...

    HEADERS_FIELD_NUMBER: builtins.int
    PAYLOAD_FIELD_NUMBER: builtins.int
    @property
    def headers(self) -> iotics.api.common_pb2.Headers:
        """UpdateInputResponse headers"""

    @property
    def payload(self) -> global___UpdateInputResponse.Payload:
        """UpdateInputResponse payload"""

    def __init__(
        self,
        *,
        headers: iotics.api.common_pb2.Headers | None = ...,
        payload: global___UpdateInputResponse.Payload | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["headers", b"headers", "payload", b"payload"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["headers", b"headers", "payload", b"payload"]) -> None: ...

global___UpdateInputResponse = UpdateInputResponse

@typing.final
class DescribeInputRequest(google.protobuf.message.Message):
    """DescribeInputRequest is used to request the input metadata."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    @typing.final
    class Arguments(google.protobuf.message.Message):
        """DescribeInputRequest arguments."""

        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        INPUTID_FIELD_NUMBER: builtins.int
        @property
        def inputId(self) -> global___InputID:
            """Input to describe"""

        def __init__(
            self,
            *,
            inputId: global___InputID | None = ...,
        ) -> None: ...
        def HasField(self, field_name: typing.Literal["inputId", b"inputId"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing.Literal["inputId", b"inputId"]) -> None: ...

    HEADERS_FIELD_NUMBER: builtins.int
    ARGS_FIELD_NUMBER: builtins.int
    @property
    def headers(self) -> iotics.api.common_pb2.Headers:
        """DescribeInputRequest headers"""

    @property
    def args(self) -> global___DescribeInputRequest.Arguments:
        """DescribeInputRequest mandatory arguments"""

    def __init__(
        self,
        *,
        headers: iotics.api.common_pb2.Headers | None = ...,
        args: global___DescribeInputRequest.Arguments | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["args", b"args", "headers", b"headers"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["args", b"args", "headers", b"headers"]) -> None: ...

global___DescribeInputRequest = DescribeInputRequest

@typing.final
class DescribeInputResponse(google.protobuf.message.Message):
    """DescribeInputResponse provides metadata lookup for individual input resources."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    @typing.final
    class MetaResult(google.protobuf.message.Message):
        """DescribeInputResponse metadata result."""

        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        VALUES_FIELD_NUMBER: builtins.int
        PROPERTIES_FIELD_NUMBER: builtins.int
        @property
        def values(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[iotics.api.common_pb2.Value]:
            """Values semantically describing the Input messages"""

        @property
        def properties(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[iotics.api.common_pb2.Property]:
            """Custom properties associated with this input."""

        def __init__(
            self,
            *,
            values: collections.abc.Iterable[iotics.api.common_pb2.Value] | None = ...,
            properties: collections.abc.Iterable[iotics.api.common_pb2.Property] | None = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing.Literal["properties", b"properties", "values", b"values"]) -> None: ...

    @typing.final
    class Payload(google.protobuf.message.Message):
        """DescribeInputResponse payload."""

        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        INPUTID_FIELD_NUMBER: builtins.int
        RESULT_FIELD_NUMBER: builtins.int
        @property
        def inputId(self) -> global___InputID:
            """Described input"""

        @property
        def result(self) -> global___DescribeInputResponse.MetaResult:
            """Metadata result"""

        def __init__(
            self,
            *,
            inputId: global___InputID | None = ...,
            result: global___DescribeInputResponse.MetaResult | None = ...,
        ) -> None: ...
        def HasField(self, field_name: typing.Literal["inputId", b"inputId", "result", b"result"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing.Literal["inputId", b"inputId", "result", b"result"]) -> None: ...

    HEADERS_FIELD_NUMBER: builtins.int
    PAYLOAD_FIELD_NUMBER: builtins.int
    @property
    def headers(self) -> iotics.api.common_pb2.Headers:
        """DescribeInputResponse headers"""

    @property
    def payload(self) -> global___DescribeInputResponse.Payload:
        """DescribeInputResponse payload"""

    def __init__(
        self,
        *,
        headers: iotics.api.common_pb2.Headers | None = ...,
        payload: global___DescribeInputResponse.Payload | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["headers", b"headers", "payload", b"payload"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["headers", b"headers", "payload", b"payload"]) -> None: ...

global___DescribeInputResponse = DescribeInputResponse

@typing.final
class UpsertInputWithMeta(google.protobuf.message.Message):
    """UpsertInputWithMeta is used to describe the full input state. Used in UpsertTwinRequest."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    ID_FIELD_NUMBER: builtins.int
    VALUES_FIELD_NUMBER: builtins.int
    PROPERTIES_FIELD_NUMBER: builtins.int
    id: builtins.str
    """Input Identifier string representation (simple string) (unique within the scope of a twin identifier's input set)"""
    @property
    def values(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[iotics.api.common_pb2.Value]:
        """Values to set"""

    @property
    def properties(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[iotics.api.common_pb2.Property]:
        """Properties to set"""

    def __init__(
        self,
        *,
        id: builtins.str = ...,
        values: collections.abc.Iterable[iotics.api.common_pb2.Value] | None = ...,
        properties: collections.abc.Iterable[iotics.api.common_pb2.Property] | None = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["id", b"id", "properties", b"properties", "values", b"values"]) -> None: ...

global___UpsertInputWithMeta = UpsertInputWithMeta

@typing.final
class InputMessage(google.protobuf.message.Message):
    """InputMessage describes a message that can be sent to an input"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    OCCURREDAT_FIELD_NUMBER: builtins.int
    MIME_FIELD_NUMBER: builtins.int
    DATA_FIELD_NUMBER: builtins.int
    mime: builtins.str
    """Mime is the mime type of the encoded data."""
    data: builtins.bytes
    """Data is the actual message, encoded according the the mime type. The data should follow the Input's
    value definitions but that is not enforced. (See also Value)
    """
    @property
    def occurredAt(self) -> google.protobuf.timestamp_pb2.Timestamp:
        """OccurredAt is the UTC timestamp of the message.
        Typically this is either the time at which an application sent this message
        or the time applicable to the message itself. (Optional: set to host time if not provided)
        """

    def __init__(
        self,
        *,
        occurredAt: google.protobuf.timestamp_pb2.Timestamp | None = ...,
        mime: builtins.str = ...,
        data: builtins.bytes = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["occurredAt", b"occurredAt"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["data", b"data", "mime", b"mime", "occurredAt", b"occurredAt"]) -> None: ...

global___InputMessage = InputMessage

@typing.final
class ReceiveInputMessageRequest(google.protobuf.message.Message):
    """ReceiveInputMessageRequest is used to receive messages sent to a given Input."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    @typing.final
    class Arguments(google.protobuf.message.Message):
        """ReceiveInputMessageRequest arguments."""

        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        INPUTID_FIELD_NUMBER: builtins.int
        @property
        def inputId(self) -> global___InputID:
            """Input to listen messages from"""

        def __init__(
            self,
            *,
            inputId: global___InputID | None = ...,
        ) -> None: ...
        def HasField(self, field_name: typing.Literal["inputId", b"inputId"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing.Literal["inputId", b"inputId"]) -> None: ...

    HEADERS_FIELD_NUMBER: builtins.int
    ARGS_FIELD_NUMBER: builtins.int
    @property
    def headers(self) -> iotics.api.common_pb2.Headers:
        """ReceiveInputMessageRequest headers"""

    @property
    def args(self) -> global___ReceiveInputMessageRequest.Arguments:
        """ReceiveInputMessageRequest mandatory arguments"""

    def __init__(
        self,
        *,
        headers: iotics.api.common_pb2.Headers | None = ...,
        args: global___ReceiveInputMessageRequest.Arguments | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["args", b"args", "headers", b"headers"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["args", b"args", "headers", b"headers"]) -> None: ...

global___ReceiveInputMessageRequest = ReceiveInputMessageRequest

@typing.final
class ReceiveInputMessageResponse(google.protobuf.message.Message):
    """ReceiveInputMessageResponse contains a message sent to the Input."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

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

        INPUTID_FIELD_NUMBER: builtins.int
        MESSAGE_FIELD_NUMBER: builtins.int
        @property
        def inputId(self) -> global___InputID:
            """Input the message has been sent to"""

        @property
        def message(self) -> global___InputMessage:
            """Input message"""

        def __init__(
            self,
            *,
            inputId: global___InputID | None = ...,
            message: global___InputMessage | None = ...,
        ) -> None: ...
        def HasField(self, field_name: typing.Literal["inputId", b"inputId", "message", b"message"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing.Literal["inputId", b"inputId", "message", b"message"]) -> None: ...

    HEADERS_FIELD_NUMBER: builtins.int
    PAYLOAD_FIELD_NUMBER: builtins.int
    @property
    def headers(self) -> iotics.api.common_pb2.Headers:
        """ReceiveInputMessageResponse headers"""

    @property
    def payload(self) -> global___ReceiveInputMessageResponse.Payload:
        """ReceiveInputMessageResponse payload"""

    def __init__(
        self,
        *,
        headers: iotics.api.common_pb2.Headers | None = ...,
        payload: global___ReceiveInputMessageResponse.Payload | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["headers", b"headers", "payload", b"payload"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["headers", b"headers", "payload", b"payload"]) -> None: ...

global___ReceiveInputMessageResponse = ReceiveInputMessageResponse
