"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
"""
import asset_pb2
import builtins
import google.protobuf.descriptor
import google.protobuf.message
import legacy_chain_properties_pb2
import sys

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

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

@typing_extensions.final
class witness_update(google.protobuf.message.Message):
    """The operation witness_update_operation may be used to become a new witness or to update witness properties.
    There are two operations that allow to update witness properties witness_update_operation and witness_set_properties_operation.
    In order to update witness properties it is recommended to use witness_set_properties_operation.

    If a user wants to become a witness, the operation witness_update_operation should be created.
    If the witness doesn’t want to be a witness any more, the operation witness_update_operation with empty { block_signing_key }
    should be created.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    OWNER_FIELD_NUMBER: builtins.int
    URL_FIELD_NUMBER: builtins.int
    BLOCK_SIGNING_KEY_FIELD_NUMBER: builtins.int
    PROPS_FIELD_NUMBER: builtins.int
    FEE_FIELD_NUMBER: builtins.int
    owner: builtins.str
    """@param {string} owner - The witness who wants to update properties or a user who wants to become a witness."""
    url: builtins.str
    """@param {string} url - url to information about witness."""
    block_signing_key: builtins.str
    """@param {string} block_signing_key - Public block signing key."""
    @property
    def props(self) -> legacy_chain_properties_pb2.legacy_chain_properties:
        """@param {legacy_chain_properties} props"""
    @property
    def fee(self) -> asset_pb2.asset:
        """@param {asset} fee - The asset is validated (the format should be correct and should be expressed in Hive),
                             but the fee is currently ignored.
        """
    def __init__(
        self,
        *,
        owner: builtins.str | None = ...,
        url: builtins.str | None = ...,
        block_signing_key: builtins.str | None = ...,
        props: legacy_chain_properties_pb2.legacy_chain_properties | None = ...,
        fee: asset_pb2.asset | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["block_signing_key", b"block_signing_key", "fee", b"fee", "owner", b"owner", "props", b"props", "url", b"url"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["block_signing_key", b"block_signing_key", "fee", b"fee", "owner", b"owner", "props", b"props", "url", b"url"]) -> None: ...

global___witness_update = witness_update
