"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
"""
import builtins
import collections.abc
import future_extensions_pb2
import google.protobuf.descriptor
import google.protobuf.internal.containers
import google.protobuf.message
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 update_proposal_votes(google.protobuf.message.Message):
    """A user may vote for proposals directly using an operation: update_proposal_votes_operation,
    or indirectly using the proxy - operation:  account_witness_proxy_operation.
    A user may vote for proposals submitted by the other users.
    By voting for the proposal, a user may select which proposals should be funded.
    A user may vote for as many proposals as they wants, but you cannot vote twice for the same proposal.
    If a proxy is specified then all existing votes are deactivated. When the proxy is removed, the votes will be activated.
    Your vote power depends on your HP.
    If the operation account_witness_vote_operation or account_witness_proxy_operation or update_proposal_votes_operation
    is not executed in HIVE_GOVERNANCE_VOTE_EXPIRATION_PERIOD, the votes are removed and the virtual operation:
    expired_account_notification_operation is generated.

    Description https://gitlab.syncad.com/hive/hive/-/blob/develop/doc/devs/operations/45_update_proposal_votes.md?ref_type=heads
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    VOTER_FIELD_NUMBER: builtins.int
    PROPOSAL_IDS_FIELD_NUMBER: builtins.int
    APPROVE_FIELD_NUMBER: builtins.int
    EXTENSIONS_FIELD_NUMBER: builtins.int
    voter: builtins.str
    """@param {string} voter - Account name."""
    @property
    def proposal_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]:
        """@param {number} proposal_ids - IDs of proposals to vote for/against. Before HF28 nonexisting IDs are ignored from HF28 they trigger an error."""
    approve: builtins.bool
    """@param {bool} approve - To vote for the proposal, the approve = true.
                            To remove the vote, the approve = false.
    """
    @property
    def extensions(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[future_extensions_pb2.future_extensions]:
        """@param {future_extensions} extensions"""
    def __init__(
        self,
        *,
        voter: builtins.str | None = ...,
        proposal_ids: collections.abc.Iterable[builtins.int] | None = ...,
        approve: builtins.bool | None = ...,
        extensions: collections.abc.Iterable[future_extensions_pb2.future_extensions] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["approve", b"approve", "voter", b"voter"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["approve", b"approve", "extensions", b"extensions", "proposal_ids", b"proposal_ids", "voter", b"voter"]) -> None: ...

global___update_proposal_votes = update_proposal_votes
