"""
@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 (interests)
"""

import builtins
import google.protobuf.descriptor
import google.protobuf.message
import google.protobuf.wrappers_pb2
import iotics.api.common_pb2
import iotics.api.feed_pb2
import iotics.api.input_pb2
import typing

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

@typing.final
class InputInterest(google.protobuf.message.Message):
    """An interest is the relationship between a Twin and an Input."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    SENDERTWINID_FIELD_NUMBER: builtins.int
    DESTINPUTID_FIELD_NUMBER: builtins.int
    @property
    def senderTwinId(self) -> iotics.api.common_pb2.TwinID:
        """Sender twin unique identifier."""

    @property
    def destInputId(self) -> iotics.api.input_pb2.InputID:
        """a reference to the input of interest"""

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

global___InputInterest = InputInterest

@typing.final
class SendInputMessageRequest(google.protobuf.message.Message):
    """SendInputMessageRequest is used to send a message to a given input."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

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

        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        MESSAGE_FIELD_NUMBER: builtins.int
        @property
        def message(self) -> iotics.api.input_pb2.InputMessage:
            """Message to send"""

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

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

        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        INTEREST_FIELD_NUMBER: builtins.int
        @property
        def interest(self) -> global___InputInterest:
            """The interest"""

        def __init__(
            self,
            *,
            interest: global___InputInterest | None = ...,
        ) -> None: ...
        def HasField(self, field_name: typing.Literal["interest", b"interest"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing.Literal["interest", b"interest"]) -> 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:
        """SendInputMessageRequest headers"""

    @property
    def args(self) -> global___SendInputMessageRequest.Arguments:
        """SendInputMessageRequest mandatory arguments"""

    @property
    def payload(self) -> global___SendInputMessageRequest.Payload:
        """SendInputMessageRequest payload"""

    def __init__(
        self,
        *,
        headers: iotics.api.common_pb2.Headers | None = ...,
        args: global___SendInputMessageRequest.Arguments | None = ...,
        payload: global___SendInputMessageRequest.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___SendInputMessageRequest = SendInputMessageRequest

@typing.final
class SendInputMessageResponse(google.protobuf.message.Message):
    """SendInputMessageResponse is used to indicate a successful send."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

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

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

global___SendInputMessageResponse = SendInputMessageResponse

@typing.final
class Interest(google.protobuf.message.Message):
    """An interest is the relationship between a Twin and a Feed. For example, creating
    an interest on (following) a Feed results in any data shared on said Feed to be forwarded to
    the associated Twin. Interests can be revoked either by the subscriber or provider and there
    may only be one interest between any unique Twin and Feed combination.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    FOLLOWERTWINID_FIELD_NUMBER: builtins.int
    FOLLOWEDFEEDID_FIELD_NUMBER: builtins.int
    @property
    def followerTwinId(self) -> iotics.api.common_pb2.TwinID:
        """Follower twin unique identifier."""

    @property
    def followedFeedId(self) -> iotics.api.feed_pb2.FeedID:
        """a reference to the interested feed"""

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

global___Interest = Interest

@typing.final
class FetchInterestRequest(google.protobuf.message.Message):
    """---------------------------------------

    FetchInterestRequest is used to initiate a stream to get the feed data shared on a given interest.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

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

        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        INTEREST_FIELD_NUMBER: builtins.int
        @property
        def interest(self) -> global___Interest:
            """The interest"""

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

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

    @property
    def args(self) -> global___FetchInterestRequest.Arguments:
        """FetchInterestRequest arguments"""

    @property
    def fetchLastStored(self) -> google.protobuf.wrappers_pb2.BoolValue:
        """whether to fetch the last stored value if available (false by default)"""

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

global___FetchInterestRequest = FetchInterestRequest

@typing.final
class FetchInterestResponse(google.protobuf.message.Message):
    """FetchInterestResponse describes a feed value shared on a given interest."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

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

        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        INTEREST_FIELD_NUMBER: builtins.int
        FEEDDATA_FIELD_NUMBER: builtins.int
        @property
        def interest(self) -> global___Interest:
            """The interest"""

        @property
        def feedData(self) -> iotics.api.common_pb2.FeedData:
            """The shared data"""

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

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

    @property
    def payload(self) -> global___FetchInterestResponse.Payload:
        """FetchInterestResponse payload"""

    def __init__(
        self,
        *,
        headers: iotics.api.common_pb2.Headers | None = ...,
        payload: global___FetchInterestResponse.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___FetchInterestResponse = FetchInterestResponse

@typing.final
class FetchLastStoredRequest(google.protobuf.message.Message):
    """---------------------------------------

    FetchLastStoredRequest is used to fetch the last stored value on a given interest if available.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

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

        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        INTEREST_FIELD_NUMBER: builtins.int
        @property
        def interest(self) -> global___Interest:
            """The interest"""

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

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

    @property
    def args(self) -> global___FetchLastStoredRequest.Arguments:
        """FetchLastStoredRequest arguments"""

    def __init__(
        self,
        *,
        headers: iotics.api.common_pb2.Headers | None = ...,
        args: global___FetchLastStoredRequest.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___FetchLastStoredRequest = FetchLastStoredRequest
