"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
"""
import builtins
import google.protobuf.descriptor
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 account_witness_proxy(google.protobuf.message.Message):
    """A user may vote for a witness or proposal directly (using an operation: account_witness_vote_operation or update_proposal_votes_operation)
    or indirectly (using the proxy - operation:  account_witness_proxy_operation).
    If a user sets a proxy, the witness votes are removed and the proposal votes are deactivated.
    If a user removes a proxy, there are no witness votes and the proposal votes are activated.
    Settings proxy means that a user wants to cede a decision on which witnesses to vote for to an account indicated as {proxy}. 
    {proxy} will also vote for proposals in the name of {account}.
    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.
    If the proxy was set and now it is removed, the additionally the virtual operation: proxy_cleared_operation is generated. 

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

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    ACCOUNT_FIELD_NUMBER: builtins.int
    PROXY_FIELD_NUMBER: builtins.int
    account: builtins.str
    """@param {string} account"""
    proxy: builtins.str
    """@param {string} proxy - Account name. To remove the proxy, the parameter should be set empty.
                            Only one proxy may be set for an account.
    """
    def __init__(
        self,
        *,
        account: builtins.str | None = ...,
        proxy: builtins.str | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["account", b"account", "proxy", b"proxy"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["account", b"account", "proxy", b"proxy"]) -> None: ...

global___account_witness_proxy = account_witness_proxy
