Source code for helium_py.proto

# flake8: noqa
# Generated by the protocol buffer compiler.  DO NOT EDIT!
# sources: blockchain_block.proto, blockchain_block_v1.proto, blockchain_gossip_handler.proto, blockchain_region_param_v1.proto, blockchain_snapshot_handler.proto, blockchain_state_channel_v1.proto, blockchain_sync_handler.proto, blockchain_txn.proto, blockchain_txn_add_gateway_v1.proto, blockchain_txn_assert_location_v1.proto, blockchain_txn_assert_location_v2.proto, blockchain_txn_coinbase_v1.proto, blockchain_txn_consensus_group_failure_v1.proto, blockchain_txn_consensus_group_v1.proto, blockchain_txn_create_htlc_v1.proto, blockchain_txn_dc_coinbase_v1.proto, blockchain_txn_gen_gateway_v1.proto, blockchain_txn_gen_price_oracle_v1.proto, blockchain_txn_gen_validator_v1.proto, blockchain_txn_oui_v1.proto, blockchain_txn_payment_v1.proto, blockchain_txn_payment_v2.proto, blockchain_txn_poc_receipts_v1.proto, blockchain_txn_poc_request_v1.proto, blockchain_txn_price_oracle_v1.proto, blockchain_txn_redeem_htlc_v1.proto, blockchain_txn_rewards_v1.proto, blockchain_txn_rewards_v2.proto, blockchain_txn_routing_v1.proto, blockchain_txn_security_coinbase_v1.proto, blockchain_txn_security_exchange_v1.proto, blockchain_txn_stake_validator_v1.proto, blockchain_txn_state_channel_close_v1.proto, blockchain_txn_state_channel_open_v1.proto, blockchain_txn_token_burn_exchange_rate_v1.proto, blockchain_txn_token_burn_v1.proto, blockchain_txn_transfer_hotspot_v1.proto, blockchain_txn_transfer_hotspot_v2.proto, blockchain_txn_transfer_validator_stake_v1.proto, blockchain_txn_unstake_validator_v1.proto, blockchain_txn_update_gateway_oui_v1.proto, blockchain_txn_validator_heartbeat_v1.proto, blockchain_txn_vars_v1.proto, discovery.proto, packet.proto, service/gateway.proto, service/router.proto, service/state_channel.proto
# plugin: python-betterproto
"""Localized Python protocol buffers for Helium."""
from dataclasses import dataclass
from typing import AsyncIterable, AsyncIterator, Dict, Iterable, List, Union

import betterproto
import grpclib
from betterproto.grpc.grpclib_server import ServiceBase


[docs]class Origin(betterproto.Enum): origin_p2p = 0 origin_radio = 1
[docs]class BlockchainTxnRewardV1Type(betterproto.Enum): securities = 0 data_credits = 1 poc_challengees = 2 poc_challengers = 3 poc_witnesses = 4 consensus = 5
[docs]class PacketpacketType(betterproto.Enum): longfi = 0 lorawan = 1
[docs]class Region(betterproto.Enum): US915 = 0 EU868 = 1 EU433 = 2 CN470 = 3 CN779 = 4 AU915 = 5 AS923_1 = 6 KR920 = 7 IN865 = 8 AS923_2 = 9 AS923_3 = 10 AS923_4 = 11
[docs]class BlockchainStateChannelStateV1(betterproto.Enum): open = 0 closed = 1
[docs]class RegionSpreading(betterproto.Enum): SF_INVALID = 0 SF7 = 1 SF8 = 2 SF9 = 3 SF10 = 4 SF11 = 5 SF12 = 6
[docs]class CloseState(betterproto.Enum): close_state_closable = 0 close_state_closing = 1 close_state_closed = 2 close_state_dispute = 3
[docs]@dataclass(eq=False, repr=False) class BlockchainTxnCoinbaseV1(betterproto.Message): payee: bytes = betterproto.bytes_field(1) amount: int = betterproto.uint64_field(2)
[docs]@dataclass(eq=False, repr=False) class BlockchainTxnSecurityCoinbaseV1(betterproto.Message): payee: bytes = betterproto.bytes_field(1) amount: int = betterproto.uint64_field(2)
[docs]@dataclass(eq=False, repr=False) class BlockchainTxnOuiV1(betterproto.Message): owner: bytes = betterproto.bytes_field(1) addresses: List[bytes] = betterproto.bytes_field(2) filter: bytes = betterproto.bytes_field(3) requested_subnet_size: int = betterproto.uint32_field(4) payer: bytes = betterproto.bytes_field(5) staking_fee: int = betterproto.uint64_field(6) fee: int = betterproto.uint64_field(7) owner_signature: bytes = betterproto.bytes_field(8) payer_signature: bytes = betterproto.bytes_field(9) oui: int = betterproto.uint64_field(10)
[docs]@dataclass(eq=False, repr=False) class BlockchainTxnGenGatewayV1(betterproto.Message): gateway: bytes = betterproto.bytes_field(1) owner: bytes = betterproto.bytes_field(2) location: str = betterproto.string_field(3) nonce: int = betterproto.uint64_field(4)
[docs]@dataclass(eq=False, repr=False) class UpdateRouters(betterproto.Message): router_addresses: List[bytes] = betterproto.bytes_field(1)
[docs]@dataclass(eq=False, repr=False) class UpdateXor(betterproto.Message): index: int = betterproto.uint32_field(1) filter: bytes = betterproto.bytes_field(2)
[docs]@dataclass(eq=False, repr=False) class BlockchainTxnRoutingV1(betterproto.Message): oui: int = betterproto.uint32_field(1) owner: bytes = betterproto.bytes_field(2) update_routers: "UpdateRouters" = betterproto.message_field(3, group="update") new_xor: bytes = betterproto.bytes_field(4, group="update") update_xor: "UpdateXor" = betterproto.message_field(5, group="update") request_subnet: int = betterproto.uint32_field(6, group="update") fee: int = betterproto.uint64_field(7) nonce: int = betterproto.uint64_field(8) signature: bytes = betterproto.bytes_field(9) staking_fee: int = betterproto.uint64_field(10)
[docs]@dataclass(eq=False, repr=False) class BlockchainTxnPaymentV1(betterproto.Message): payer: bytes = betterproto.bytes_field(1) payee: bytes = betterproto.bytes_field(2) amount: int = betterproto.uint64_field(3) fee: int = betterproto.uint64_field(4) nonce: int = betterproto.uint64_field(5) signature: bytes = betterproto.bytes_field(6)
[docs]@dataclass(eq=False, repr=False) class BlockchainTxnSecurityExchangeV1(betterproto.Message): payer: bytes = betterproto.bytes_field(1) payee: bytes = betterproto.bytes_field(2) amount: int = betterproto.uint64_field(3) fee: int = betterproto.uint64_field(4) nonce: int = betterproto.uint64_field(5) signature: bytes = betterproto.bytes_field(6)
[docs]@dataclass(eq=False, repr=False) class BlockchainTxnConsensusGroupV1(betterproto.Message): members: List[bytes] = betterproto.bytes_field(1) proof: bytes = betterproto.bytes_field(2) height: int = betterproto.uint64_field(3) delay: int = betterproto.uint32_field(4)
[docs]@dataclass(eq=False, repr=False) class BlockchainTxnConsensusGroupFailureV1(betterproto.Message): failed_members: List[bytes] = betterproto.bytes_field(1) height: int = betterproto.uint64_field(2) delay: int = betterproto.uint64_field(3) members: List[bytes] = betterproto.bytes_field(4) signatures: List[bytes] = betterproto.bytes_field(5)
[docs]@dataclass(eq=False, repr=False) class BlockchainTxnAddGatewayV1(betterproto.Message): owner: bytes = betterproto.bytes_field(1) gateway: bytes = betterproto.bytes_field(2) owner_signature: bytes = betterproto.bytes_field(3) gateway_signature: bytes = betterproto.bytes_field(4) payer: bytes = betterproto.bytes_field(5) payer_signature: bytes = betterproto.bytes_field(6) staking_fee: int = betterproto.uint64_field(7) fee: int = betterproto.uint64_field(8)
[docs]@dataclass(eq=False, repr=False) class BlockchainTxnAssertLocationV1(betterproto.Message): gateway: bytes = betterproto.bytes_field(1) owner: bytes = betterproto.bytes_field(2) payer: bytes = betterproto.bytes_field(3) gateway_signature: bytes = betterproto.bytes_field(4) owner_signature: bytes = betterproto.bytes_field(5) payer_signature: bytes = betterproto.bytes_field(6) # Use the h3 string representation since it will use all 64 bits (and JS # doesn't support that) location: str = betterproto.string_field(7) nonce: int = betterproto.uint64_field(8) staking_fee: int = betterproto.uint64_field(9) fee: int = betterproto.uint64_field(10)
[docs]@dataclass(eq=False, repr=False) class BlockchainTxnCreateHtlcV1(betterproto.Message): payer: bytes = betterproto.bytes_field(1) payee: bytes = betterproto.bytes_field(2) address: bytes = betterproto.bytes_field(3) hashlock: bytes = betterproto.bytes_field(4) timelock: int = betterproto.uint64_field(5) amount: int = betterproto.uint64_field(6) fee: int = betterproto.uint64_field(7) signature: bytes = betterproto.bytes_field(8) nonce: int = betterproto.uint64_field(9)
[docs]@dataclass(eq=False, repr=False) class BlockchainTxnRedeemHtlcV1(betterproto.Message): payee: bytes = betterproto.bytes_field(1) address: bytes = betterproto.bytes_field(2) preimage: bytes = betterproto.bytes_field(3) fee: int = betterproto.uint64_field(4) signature: bytes = betterproto.bytes_field(5)
[docs]@dataclass(eq=False, repr=False) class BlockchainTxnPocRequestV1(betterproto.Message): challenger: bytes = betterproto.bytes_field(1) secret_hash: bytes = betterproto.bytes_field(2) onion_key_hash: bytes = betterproto.bytes_field(3) block_hash: bytes = betterproto.bytes_field(4) fee: int = betterproto.uint64_field(5) signature: bytes = betterproto.bytes_field(6) version: int = betterproto.uint32_field(7)
[docs]@dataclass(eq=False, repr=False) class BlockchainPocReceiptV1(betterproto.Message): gateway: bytes = betterproto.bytes_field(1) timestamp: int = betterproto.uint64_field(2) signal: int = betterproto.sint32_field(3) data: bytes = betterproto.bytes_field(4) origin: "Origin" = betterproto.enum_field(5) signature: bytes = betterproto.bytes_field(6) snr: float = betterproto.float_field(7) frequency: float = betterproto.float_field(8) channel: int = betterproto.int32_field(9) datarate: str = betterproto.string_field(10) addr_hash: bytes = betterproto.bytes_field(11) # Transmit power at which this packet was transmitted It is x10, for example: # 270 = 27db, 36 = 3.6db etc tx_power: int = betterproto.int32_field(12)
[docs]@dataclass(eq=False, repr=False) class BlockchainPocWitnessV1(betterproto.Message): gateway: bytes = betterproto.bytes_field(1) timestamp: int = betterproto.uint64_field(2) signal: int = betterproto.sint32_field(3) packet_hash: bytes = betterproto.bytes_field(4) signature: bytes = betterproto.bytes_field(5) snr: float = betterproto.float_field(6) frequency: float = betterproto.float_field(7) channel: int = betterproto.int32_field(8) datarate: str = betterproto.string_field(9)
[docs]@dataclass(eq=False, repr=False) class BlockchainPocResponseV1(betterproto.Message): receipt: "BlockchainPocReceiptV1" = betterproto.message_field(1, group="payload") witness: "BlockchainPocWitnessV1" = betterproto.message_field(2, group="payload")
[docs]@dataclass(eq=False, repr=False) class BlockchainPocPathElementV1(betterproto.Message): challengee: bytes = betterproto.bytes_field(1) receipt: "BlockchainPocReceiptV1" = betterproto.message_field(2) witnesses: List["BlockchainPocWitnessV1"] = betterproto.message_field(3)
[docs]@dataclass(eq=False, repr=False) class BlockchainTxnPocReceiptsV1(betterproto.Message): challenger: bytes = betterproto.bytes_field(1) secret: bytes = betterproto.bytes_field(2) onion_key_hash: bytes = betterproto.bytes_field(3) path: List["BlockchainPocPathElementV1"] = betterproto.message_field(4) fee: int = betterproto.uint64_field(5) signature: bytes = betterproto.bytes_field(6) request_block_hash: bytes = betterproto.bytes_field(7)
[docs]@dataclass(eq=False, repr=False) class BlockchainVarV1(betterproto.Message): name: str = betterproto.string_field(1) type: str = betterproto.string_field(2) value: bytes = betterproto.bytes_field(3)
[docs]@dataclass(eq=False, repr=False) class BlockchainTxnVarsV1(betterproto.Message): vars: List["BlockchainVarV1"] = betterproto.message_field(1) version_predicate: int = betterproto.uint32_field(2) proof: bytes = betterproto.bytes_field(3) master_key: bytes = betterproto.bytes_field(4) key_proof: bytes = betterproto.bytes_field(5) cancels: List[bytes] = betterproto.bytes_field(6) unsets: List[bytes] = betterproto.bytes_field(7) nonce: int = betterproto.uint32_field(8) multi_keys: List[bytes] = betterproto.bytes_field(9) multi_proofs: List[bytes] = betterproto.bytes_field(10) multi_key_proofs: List[bytes] = betterproto.bytes_field(11)
[docs]@dataclass(eq=False, repr=False) class BlockchainTxnRewardV1(betterproto.Message): account: bytes = betterproto.bytes_field(1) gateway: bytes = betterproto.bytes_field(3) amount: int = betterproto.uint64_field(4) type: "blockchain_txn_reward_v1.Type" = betterproto.enum_field(5)
[docs]@dataclass(eq=False, repr=False) class BlockchainTxnRewardsV1(betterproto.Message): start_epoch: int = betterproto.uint64_field(1) end_epoch: int = betterproto.uint64_field(2) rewards: List["BlockchainTxnRewardV1"] = betterproto.message_field(3)
[docs]@dataclass(eq=False, repr=False) class BlockchainTxnTokenBurnV1(betterproto.Message): payer: bytes = betterproto.bytes_field(1) payee: bytes = betterproto.bytes_field(2) amount: int = betterproto.uint64_field(3) nonce: int = betterproto.uint64_field(4) signature: bytes = betterproto.bytes_field(5) fee: int = betterproto.uint64_field(6) memo: int = betterproto.uint64_field(7)
[docs]@dataclass(eq=False, repr=False) class BlockchainTxnDcCoinbaseV1(betterproto.Message): payee: bytes = betterproto.bytes_field(1) amount: int = betterproto.uint64_field(2)
[docs]@dataclass(eq=False, repr=False) class BlockchainTxnTokenBurnExchangeRateV1(betterproto.Message): rate: int = betterproto.uint64_field(1)
[docs]@dataclass(eq=False, repr=False) class BlockchainTxnStateChannelOpenV1(betterproto.Message): id: bytes = betterproto.bytes_field(1) owner: bytes = betterproto.bytes_field(2) amount: int = betterproto.int64_field(3) expire_within: int = betterproto.int64_field(4) oui: int = betterproto.uint64_field(5) nonce: int = betterproto.uint64_field(6) signature: bytes = betterproto.bytes_field(7) fee: int = betterproto.uint64_field(8)
[docs]@dataclass(eq=False, repr=False) class BlockchainTxnUpdateGatewayOuiV1(betterproto.Message): gateway: bytes = betterproto.bytes_field(1) oui: int = betterproto.uint64_field(2) nonce: int = betterproto.uint64_field(3) fee: int = betterproto.uint64_field(4) gateway_owner_signature: bytes = betterproto.bytes_field(5) oui_owner_signature: bytes = betterproto.bytes_field(6)
[docs]@dataclass(eq=False, repr=False) class Eui(betterproto.Message): deveui: int = betterproto.uint64_field(1) appeui: int = betterproto.uint64_field(2)
[docs]@dataclass(eq=False, repr=False) class RoutingInformation(betterproto.Message): devaddr: int = betterproto.uint32_field(1, group="data") eui: "Eui" = betterproto.message_field(2, group="data")
[docs]@dataclass(eq=False, repr=False) class Window(betterproto.Message): timestamp: int = betterproto.uint64_field(1) frequency: float = betterproto.float_field(2) datarate: str = betterproto.string_field(3)
[docs]@dataclass(eq=False, repr=False) class Packet(betterproto.Message): oui: int = betterproto.uint32_field(1) type: "packet.PacketType" = betterproto.enum_field(2) payload: bytes = betterproto.bytes_field(3) timestamp: int = betterproto.uint64_field(4) signal_strength: float = betterproto.float_field(5) frequency: float = betterproto.float_field(6) datarate: str = betterproto.string_field(7) snr: float = betterproto.float_field(8) routing: "RoutingInformation" = betterproto.message_field(9) rx2_window: "Window" = betterproto.message_field(10)
[docs]@dataclass(eq=False, repr=False) class BlockchainStateChannelSummaryV1(betterproto.Message): client_pubkeybin: bytes = betterproto.bytes_field(1) num_packets: int = betterproto.uint64_field(2) num_dcs: int = betterproto.uint64_field(3)
[docs]@dataclass(eq=False, repr=False) class BlockchainStateChannelV1(betterproto.Message): id: bytes = betterproto.bytes_field(1) owner: bytes = betterproto.bytes_field(2) credits: int = betterproto.uint64_field(3) nonce: int = betterproto.uint64_field(4) summaries: List["BlockchainStateChannelSummaryV1"] = betterproto.message_field(5) root_hash: bytes = betterproto.bytes_field(6) # This is unused but we can't remove it yet skewed: bytes = betterproto.bytes_field(7) state: "BlockchainStateChannelStateV1" = betterproto.enum_field(8) expire_at_block: int = betterproto.uint64_field(9) signature: bytes = betterproto.bytes_field(10)
[docs]@dataclass(eq=False, repr=False) class BlockchainStateChannelResponseV1(betterproto.Message): accepted: bool = betterproto.bool_field(1) downlink: "Packet" = betterproto.message_field(4)
[docs]@dataclass(eq=False, repr=False) class BlockchainStateChannelPacketV1(betterproto.Message): packet: "Packet" = betterproto.message_field(1) hotspot: bytes = betterproto.bytes_field(2) signature: bytes = betterproto.bytes_field(3) region: "Region" = betterproto.enum_field(4) hold_time: int = betterproto.uint64_field(5)
[docs]@dataclass(eq=False, repr=False) class BlockchainStateChannelOfferV1(betterproto.Message): routing: "RoutingInformation" = betterproto.message_field(1) packet_hash: bytes = betterproto.bytes_field(2) payload_size: int = betterproto.uint64_field(3) fcnt: int = betterproto.uint32_field(4) hotspot: bytes = betterproto.bytes_field(5) signature: bytes = betterproto.bytes_field(6) region: "Region" = betterproto.enum_field(7) req_diff: bool = betterproto.bool_field(8)
[docs]@dataclass(eq=False, repr=False) class BlockchainStateChannelPurchaseV1(betterproto.Message): sc: "BlockchainStateChannelV1" = betterproto.message_field(1) hotspot: bytes = betterproto.bytes_field(2) packet_hash: bytes = betterproto.bytes_field(3) region: "Region" = betterproto.enum_field(4) sc_diff: "BlockchainStateChannelDiffV1" = betterproto.message_field(5)
[docs]@dataclass(eq=False, repr=False) class BlockchainStateChannelDiffV1(betterproto.Message): id: bytes = betterproto.bytes_field(1) add_nonce: int = betterproto.uint64_field(2) signature: bytes = betterproto.bytes_field(3) diffs: List["BlockchainStateChannelDiffEntryV1"] = betterproto.message_field(4)
[docs]@dataclass(eq=False, repr=False) class BlockchainStateChannelDiffEntryV1(betterproto.Message): append: "BlockchainStateChannelDiffAppendSummaryV1" = betterproto.message_field( 1, group="entry" ) add: "BlockchainStateChannelDiffUpdateSummaryV1" = betterproto.message_field( 2, group="entry" )
[docs]@dataclass(eq=False, repr=False) class BlockchainStateChannelDiffAppendSummaryV1(betterproto.Message): client_pubkeybin: bytes = betterproto.bytes_field(1) num_packets: int = betterproto.uint64_field(2) num_dcs: int = betterproto.uint64_field(3)
[docs]@dataclass(eq=False, repr=False) class BlockchainStateChannelDiffUpdateSummaryV1(betterproto.Message): client_index: int = betterproto.uint64_field(1) add_packets: int = betterproto.uint64_field(2) add_dcs: int = betterproto.uint64_field(3)
[docs]@dataclass(eq=False, repr=False) class BlockchainStateChannelBannerV1(betterproto.Message): """DEPRECATED""" sc: "BlockchainStateChannelV1" = betterproto.message_field(1)
[docs]@dataclass(eq=False, repr=False) class BlockchainStateChannelRejectionV1(betterproto.Message): reject: int = betterproto.uint32_field(1) packet_hash: bytes = betterproto.bytes_field(2)
[docs]@dataclass(eq=False, repr=False) class BlockchainStateChannelMessageV1(betterproto.Message): response: "BlockchainStateChannelResponseV1" = betterproto.message_field( 2, group="msg" ) packet: "BlockchainStateChannelPacketV1" = betterproto.message_field(4, group="msg") offer: "BlockchainStateChannelOfferV1" = betterproto.message_field(5, group="msg") purchase: "BlockchainStateChannelPurchaseV1" = betterproto.message_field( 6, group="msg" ) banner: "BlockchainStateChannelBannerV1" = betterproto.message_field(7, group="msg") reject: "BlockchainStateChannelRejectionV1" = betterproto.message_field( 8, group="msg" )
[docs]@dataclass(eq=False, repr=False) class BlockchainTxnStateChannelCloseV1(betterproto.Message): state_channel: "BlockchainStateChannelV1" = betterproto.message_field(1) closer: bytes = betterproto.bytes_field(2) signature: bytes = betterproto.bytes_field(3) fee: int = betterproto.uint64_field(4) conflicts_with: "BlockchainStateChannelV1" = betterproto.message_field(5)
[docs]@dataclass(eq=False, repr=False) class BlockchainTxnPaymentV2(betterproto.Message): payer: bytes = betterproto.bytes_field(1) payments: List["Payment"] = betterproto.message_field(2) fee: int = betterproto.uint64_field(3) nonce: int = betterproto.uint64_field(4) signature: bytes = betterproto.bytes_field(5)
[docs]@dataclass(eq=False, repr=False) class Payment(betterproto.Message): payee: bytes = betterproto.bytes_field(1) amount: int = betterproto.uint64_field(2) memo: int = betterproto.uint64_field(3)
[docs]@dataclass(eq=False, repr=False) class BlockchainTxnPriceOracleV1(betterproto.Message): public_key: bytes = betterproto.bytes_field(1) price: int = betterproto.uint64_field(2) block_height: int = betterproto.uint64_field(3) signature: bytes = betterproto.bytes_field(4)
[docs]@dataclass(eq=False, repr=False) class BlockchainTxnGenPriceOracleV1(betterproto.Message): price: int = betterproto.uint64_field(1)
[docs]@dataclass(eq=False, repr=False) class BlockchainTxnTransferHotspotV1(betterproto.Message): gateway: bytes = betterproto.bytes_field(1) seller: bytes = betterproto.bytes_field(2) buyer: bytes = betterproto.bytes_field(3) seller_signature: bytes = betterproto.bytes_field(4) buyer_signature: bytes = betterproto.bytes_field(5) buyer_nonce: int = betterproto.uint64_field(6) amount_to_seller: int = betterproto.uint64_field(7) fee: int = betterproto.uint64_field(8)
[docs]@dataclass(eq=False, repr=False) class BlockchainTxnRewardV2(betterproto.Message): account: bytes = betterproto.bytes_field(1) amount: int = betterproto.uint64_field(2)
[docs]@dataclass(eq=False, repr=False) class BlockchainTxnRewardsV2(betterproto.Message): start_epoch: int = betterproto.uint64_field(1) end_epoch: int = betterproto.uint64_field(2) rewards: List["BlockchainTxnRewardV2"] = betterproto.message_field(3)
[docs]@dataclass(eq=False, repr=False) class BlockchainTxnGenValidatorV1(betterproto.Message): address: bytes = betterproto.bytes_field(1) owner: bytes = betterproto.bytes_field(2) stake: int = betterproto.uint64_field(3)
[docs]@dataclass(eq=False, repr=False) class BlockchainTxnStakeValidatorV1(betterproto.Message): address: bytes = betterproto.bytes_field(1) owner: bytes = betterproto.bytes_field(2) stake: int = betterproto.uint64_field(3) owner_signature: bytes = betterproto.bytes_field(4) fee: int = betterproto.uint64_field(5)
[docs]@dataclass(eq=False, repr=False) class BlockchainTxnTransferValidatorStakeV1(betterproto.Message): old_address: bytes = betterproto.bytes_field(1) new_address: bytes = betterproto.bytes_field(2) old_owner: bytes = betterproto.bytes_field(3) new_owner: bytes = betterproto.bytes_field(4) old_owner_signature: bytes = betterproto.bytes_field(5) new_owner_signature: bytes = betterproto.bytes_field(6) fee: int = betterproto.uint64_field(7) stake_amount: int = betterproto.uint64_field(8) # optional amount (in bones) the new owner is transferring to the old owner payment_amount: int = betterproto.uint64_field(9)
[docs]@dataclass(eq=False, repr=False) class BlockchainTxnUnstakeValidatorV1(betterproto.Message): address: bytes = betterproto.bytes_field(1) owner: bytes = betterproto.bytes_field(2) owner_signature: bytes = betterproto.bytes_field(3) fee: int = betterproto.uint64_field(4) stake_amount: int = betterproto.uint64_field(5) stake_release_height: int = betterproto.uint64_field(6)
[docs]@dataclass(eq=False, repr=False) class BlockchainTxnValidatorHeartbeatV1(betterproto.Message): address: bytes = betterproto.bytes_field(1) height: int = betterproto.uint64_field(2) version: int = betterproto.uint32_field(3) signature: bytes = betterproto.bytes_field(4)
[docs]@dataclass(eq=False, repr=False) class BlockchainTxnAssertLocationV2(betterproto.Message): gateway: bytes = betterproto.bytes_field(1) owner: bytes = betterproto.bytes_field(2) payer: bytes = betterproto.bytes_field(3) owner_signature: bytes = betterproto.bytes_field(4) payer_signature: bytes = betterproto.bytes_field(5) # Use the h3 string representation since it will use all 64 bits (and JS # doesn't support that) location: str = betterproto.string_field(6) nonce: int = betterproto.uint64_field(7) # It is assumed that this gain applies to both rx and tx gain: int = betterproto.int32_field(8) elevation: int = betterproto.int32_field(9) staking_fee: int = betterproto.uint64_field(10) fee: int = betterproto.uint64_field(11)
[docs]@dataclass(eq=False, repr=False) class BlockchainTxnTransferHotspotV2(betterproto.Message): gateway: bytes = betterproto.bytes_field(1) owner: bytes = betterproto.bytes_field(2) owner_signature: bytes = betterproto.bytes_field(3) new_owner: bytes = betterproto.bytes_field(4) fee: int = betterproto.uint64_field(5) # gateway nonce nonce: int = betterproto.uint64_field(6)
[docs]@dataclass(eq=False, repr=False) class BlockchainTxn(betterproto.Message): add_gateway: "BlockchainTxnAddGatewayV1" = betterproto.message_field(1, group="txn") assert_location: "BlockchainTxnAssertLocationV1" = betterproto.message_field( 2, group="txn" ) coinbase: "BlockchainTxnCoinbaseV1" = betterproto.message_field(3, group="txn") create_htlc: "BlockchainTxnCreateHtlcV1" = betterproto.message_field(4, group="txn") gen_gateway: "BlockchainTxnGenGatewayV1" = betterproto.message_field(5, group="txn") consensus_group: "BlockchainTxnConsensusGroupV1" = betterproto.message_field( 6, group="txn" ) oui: "BlockchainTxnOuiV1" = betterproto.message_field(7, group="txn") payment: "BlockchainTxnPaymentV1" = betterproto.message_field(8, group="txn") poc_receipts: "BlockchainTxnPocReceiptsV1" = betterproto.message_field( 9, group="txn" ) poc_request: "BlockchainTxnPocRequestV1" = betterproto.message_field( 10, group="txn" ) redeem_htlc: "BlockchainTxnRedeemHtlcV1" = betterproto.message_field( 11, group="txn" ) security_coinbase: "BlockchainTxnSecurityCoinbaseV1" = betterproto.message_field( 12, group="txn" ) routing: "BlockchainTxnRoutingV1" = betterproto.message_field(13, group="txn") security_exchange: "BlockchainTxnSecurityExchangeV1" = betterproto.message_field( 14, group="txn" ) vars: "BlockchainTxnVarsV1" = betterproto.message_field(15, group="txn") rewards: "BlockchainTxnRewardsV1" = betterproto.message_field(16, group="txn") token_burn: "BlockchainTxnTokenBurnV1" = betterproto.message_field(17, group="txn") dc_coinbase: "BlockchainTxnDcCoinbaseV1" = betterproto.message_field( 18, group="txn" ) token_burn_exchange_rate: "BlockchainTxnTokenBurnExchangeRateV1" = ( betterproto.message_field(19, group="txn") ) bundle: "BlockchainTxnBundleV1" = betterproto.message_field(20, group="txn") state_channel_open: "BlockchainTxnStateChannelOpenV1" = betterproto.message_field( 21, group="txn" ) update_gateway_oui: "BlockchainTxnUpdateGatewayOuiV1" = betterproto.message_field( 22, group="txn" ) state_channel_close: "BlockchainTxnStateChannelCloseV1" = betterproto.message_field( 23, group="txn" ) payment_v2: "BlockchainTxnPaymentV2" = betterproto.message_field(24, group="txn") price_oracle_submission: "BlockchainTxnPriceOracleV1" = betterproto.message_field( 25, group="txn" ) gen_price_oracle: "BlockchainTxnGenPriceOracleV1" = betterproto.message_field( 26, group="txn" ) transfer_hotspot: "BlockchainTxnTransferHotspotV1" = betterproto.message_field( 27, group="txn" ) gen_validator: "BlockchainTxnGenValidatorV1" = betterproto.message_field( 28, group="txn" ) stake_validator: "BlockchainTxnStakeValidatorV1" = betterproto.message_field( 29, group="txn" ) transfer_val_stake: "BlockchainTxnTransferValidatorStakeV1" = ( betterproto.message_field(30, group="txn") ) unstake_validator: "BlockchainTxnUnstakeValidatorV1" = betterproto.message_field( 31, group="txn" ) val_heartbeat: "BlockchainTxnValidatorHeartbeatV1" = betterproto.message_field( 32, group="txn" ) consensus_group_failure: "BlockchainTxnConsensusGroupFailureV1" = ( betterproto.message_field(33, group="txn") ) rewards_v2: "BlockchainTxnRewardsV2" = betterproto.message_field(34, group="txn") assert_location_v2: "BlockchainTxnAssertLocationV2" = betterproto.message_field( 35, group="txn" ) transfer_hotspot_v2: "BlockchainTxnTransferHotspotV2" = betterproto.message_field( 36, group="txn" )
[docs]@dataclass(eq=False, repr=False) class BlockchainTxnBundleV1(betterproto.Message): transactions: List["BlockchainTxn"] = betterproto.message_field(1)
[docs]@dataclass(eq=False, repr=False) class BlockchainSignatureV1(betterproto.Message): signer: bytes = betterproto.bytes_field(1) signature: bytes = betterproto.bytes_field(2)
[docs]@dataclass(eq=False, repr=False) class BlockchainSeenVoteV1(betterproto.Message): index: int = betterproto.uint32_field(1) vector: bytes = betterproto.bytes_field(2)
[docs]@dataclass(eq=False, repr=False) class BlockchainBlockV1(betterproto.Message): prev_hash: bytes = betterproto.bytes_field(1) height: int = betterproto.uint64_field(2) time: int = betterproto.uint64_field(3) hbbft_round: int = betterproto.uint64_field(4) transactions: List["BlockchainTxn"] = betterproto.message_field(5) signatures: List["BlockchainSignatureV1"] = betterproto.message_field(6) election_epoch: int = betterproto.uint64_field(7) epoch_start: int = betterproto.uint64_field(8) rescue_signature: bytes = betterproto.bytes_field(9) seen_votes: List["BlockchainSeenVoteV1"] = betterproto.message_field(10) bba_completion: bytes = betterproto.bytes_field(11) snapshot_hash: bytes = betterproto.bytes_field(12) rescue_signatures: List[bytes] = betterproto.bytes_field(13)
[docs]@dataclass(eq=False, repr=False) class BlockchainBlock(betterproto.Message): v1: "BlockchainBlockV1" = betterproto.message_field(1, group="block")
[docs]@dataclass(eq=False, repr=False) class BlockchainGossipBlock(betterproto.Message): from_: bytes = betterproto.bytes_field(1) block: bytes = betterproto.bytes_field(2) hash: bytes = betterproto.bytes_field(3) height: int = betterproto.uint64_field(4)
[docs]@dataclass(eq=False, repr=False) class BlockchainRegionParamsV1(betterproto.Message): region_params: List["BlockchainRegionParamV1"] = betterproto.message_field(1)
[docs]@dataclass(eq=False, repr=False) class TaggedSpreading(betterproto.Message): region_spreading: "RegionSpreading" = betterproto.enum_field(1) max_packet_size: int = betterproto.uint32_field(2)
[docs]@dataclass(eq=False, repr=False) class BlockchainRegionSpreadingV1(betterproto.Message): tagged_spreading: List["TaggedSpreading"] = betterproto.message_field(1)
[docs]@dataclass(eq=False, repr=False) class BlockchainRegionParamV1(betterproto.Message): # in hertz channel_frequency: int = betterproto.uint64_field(1) # in hertz bandwidth: int = betterproto.uint32_field(2) # in dBi x 10 max_eirp: int = betterproto.uint32_field(3) # list of atoms spreading: "BlockchainRegionSpreadingV1" = betterproto.message_field(4)
[docs]@dataclass(eq=False, repr=False) class BlockchainSnapshotReq(betterproto.Message): height: int = betterproto.uint64_field(1) hash: bytes = betterproto.bytes_field(2)
[docs]@dataclass(eq=False, repr=False) class BlockchainSnapshotResp(betterproto.Message): next_height: int = betterproto.sint64_field(1) snapshot: bytes = betterproto.bytes_field(2)
[docs]@dataclass(eq=False, repr=False) class BlockchainSyncHash(betterproto.Message): hash: bytes = betterproto.bytes_field(1) heights: List[int] = betterproto.uint64_field(2)
[docs]@dataclass(eq=False, repr=False) class BlockchainSyncBlocks(betterproto.Message): blocks: List[bytes] = betterproto.bytes_field(1)
[docs]@dataclass(eq=False, repr=False) class BlockchainSyncReq(betterproto.Message): hash: "BlockchainSyncHash" = betterproto.message_field(1, group="msg") response: bool = betterproto.bool_field(2, group="msg")
[docs]@dataclass(eq=False, repr=False) class DiscoveryStart(betterproto.Message): hotspot: bytes = betterproto.bytes_field(1) packets: List[bytes] = betterproto.bytes_field(2) signature: bytes = betterproto.bytes_field(3)
[docs]@dataclass(eq=False, repr=False) class GatewayConfigReqV1(betterproto.Message): keys: List[str] = betterproto.string_field(1)
[docs]@dataclass(eq=False, repr=False) class GatewayConfigRespV1(betterproto.Message): result: List["BlockchainVarV1"] = betterproto.message_field(1)
[docs]@dataclass(eq=False, repr=False) class GatewayConfigUpdateReqV1(betterproto.Message): pass
[docs]@dataclass(eq=False, repr=False) class GatewayConfigUpdateStreamedRespV1(betterproto.Message): keys: List[str] = betterproto.string_field(1)
[docs]@dataclass(eq=False, repr=False) class GatewayValidatorsReqV1(betterproto.Message): quantity: int = betterproto.uint32_field(1)
[docs]@dataclass(eq=False, repr=False) class GatewayValidatorsRespV1(betterproto.Message): result: List["RoutingAddress"] = betterproto.message_field(1)
[docs]@dataclass(eq=False, repr=False) class GatewayRespV1(betterproto.Message): height: int = betterproto.uint64_field(1) signature: bytes = betterproto.bytes_field(2) is_active_resp: "GatewayScIsActiveRespV1" = betterproto.message_field( 3, group="msg" ) is_overpaid_resp: "GatewayScIsOverpaidRespV1" = betterproto.message_field( 4, group="msg" ) close_resp: "GatewayScCloseRespV1" = betterproto.message_field(5, group="msg") follow_streamed_resp: "GatewayScFollowStreamedRespV1" = betterproto.message_field( 6, group="msg" ) routing_streamed_resp: "GatewayRoutingStreamedRespV1" = betterproto.message_field( 7, group="msg" ) config_resp: "GatewayConfigRespV1" = betterproto.message_field(8, group="msg") config_update_streamed_resp: "GatewayConfigUpdateStreamedRespV1" = ( betterproto.message_field(9, group="msg") ) validators_resp: "GatewayValidatorsRespV1" = betterproto.message_field( 12, group="msg" ) block_time: int = betterproto.uint64_field(10) block_age: int = betterproto.uint64_field(11)
[docs]@dataclass(eq=False, repr=False) class GatewayScIsActiveReqV1(betterproto.Message): sc_id: bytes = betterproto.bytes_field(1) sc_owner: bytes = betterproto.bytes_field(2)
[docs]@dataclass(eq=False, repr=False) class GatewayScIsActiveRespV1(betterproto.Message): sc_id: bytes = betterproto.bytes_field(1) sc_owner: bytes = betterproto.bytes_field(2) active: bool = betterproto.bool_field(3) sc_expiry_at_block: int = betterproto.uint64_field(4) sc_original_dc_amount: int = betterproto.uint64_field(5)
[docs]@dataclass(eq=False, repr=False) class GatewayScIsOverpaidReqV1(betterproto.Message): sc_id: bytes = betterproto.bytes_field(1) sc_owner: bytes = betterproto.bytes_field(2) total_dcs: int = betterproto.uint64_field(3)
[docs]@dataclass(eq=False, repr=False) class GatewayScIsOverpaidRespV1(betterproto.Message): sc_id: bytes = betterproto.bytes_field(1) sc_owner: bytes = betterproto.bytes_field(2) overpaid: bool = betterproto.bool_field(3)
[docs]@dataclass(eq=False, repr=False) class GatewayScCloseReqV1(betterproto.Message): close_txn: "BlockchainTxnStateChannelCloseV1" = betterproto.message_field(1)
[docs]@dataclass(eq=False, repr=False) class GatewayScCloseRespV1(betterproto.Message): sc_id: bytes = betterproto.bytes_field(1) response: bytes = betterproto.bytes_field(2)
[docs]@dataclass(eq=False, repr=False) class GatewayScFollowReqV1(betterproto.Message): sc_id: bytes = betterproto.bytes_field(1) sc_owner: bytes = betterproto.bytes_field(2)
[docs]@dataclass(eq=False, repr=False) class GatewayScFollowStreamedRespV1(betterproto.Message): sc_id: bytes = betterproto.bytes_field(1) sc_owner: bytes = betterproto.bytes_field(2) close_state: "CloseState" = betterproto.enum_field(3)
[docs]@dataclass(eq=False, repr=False) class Routing(betterproto.Message): oui: int = betterproto.uint32_field(1) owner: bytes = betterproto.bytes_field(2) addresses: List["RoutingAddress"] = betterproto.message_field(3) filters: List[bytes] = betterproto.bytes_field(4) subnets: List[bytes] = betterproto.bytes_field(5)
[docs]@dataclass(eq=False, repr=False) class RoutingAddress(betterproto.Message): pub_key: bytes = betterproto.bytes_field(1) uri: bytes = betterproto.bytes_field(2)
[docs]@dataclass(eq=False, repr=False) class GatewayRoutingReqV1(betterproto.Message): height: int = betterproto.uint64_field(1)
[docs]@dataclass(eq=False, repr=False) class GatewayRoutingStreamedRespV1(betterproto.Message): routings: List["Routing"] = betterproto.message_field(1)
[docs]class GatewayStub(betterproto.ServiceStub): async def is_active_sc(self) -> "GatewayRespV1": request = GatewayScIsActiveReqV1() return await self._unary_unary( "/helium.gateway/is_active_sc", request, GatewayRespV1 ) async def is_overpaid_sc(self) -> "GatewayRespV1": request = GatewayScIsOverpaidReqV1() return await self._unary_unary( "/helium.gateway/is_overpaid_sc", request, GatewayRespV1 ) async def close_sc(self) -> "GatewayRespV1": request = GatewayScCloseReqV1() return await self._unary_unary( "/helium.gateway/close_sc", request, GatewayRespV1 ) async def follow_sc( self, request_iterator: Union[ AsyncIterable["GatewayScFollowReqV1"], Iterable["GatewayScFollowReqV1"] ], ) -> AsyncIterator["GatewayRespV1"]: async for response in self._stream_stream( "/helium.gateway/follow_sc", request_iterator, GatewayScFollowReqV1, GatewayRespV1, ): yield response async def routing(self) -> AsyncIterator["GatewayRespV1"]: request = GatewayRoutingReqV1() async for response in self._unary_stream( "/helium.gateway/routing", request, GatewayRespV1, ): yield response async def config(self) -> "GatewayRespV1": request = GatewayConfigReqV1() return await self._unary_unary("/helium.gateway/config", request, GatewayRespV1) async def config_update(self) -> AsyncIterator["GatewayRespV1"]: request = GatewayConfigUpdateReqV1() async for response in self._unary_stream( "/helium.gateway/config_update", request, GatewayRespV1, ): yield response async def validators(self) -> "GatewayRespV1": request = GatewayValidatorsReqV1() return await self._unary_unary( "/helium.gateway/validators", request, GatewayRespV1 )
[docs]class RouterStub(betterproto.ServiceStub): async def route(self) -> "BlockchainStateChannelMessageV1": request = BlockchainStateChannelMessageV1() return await self._unary_unary( "/helium.router/route", request, BlockchainStateChannelMessageV1 )
[docs]class StateChannelStub(betterproto.ServiceStub): async def msg( self, request_iterator: Union[ AsyncIterable["BlockchainStateChannelMessageV1"], Iterable["BlockchainStateChannelMessageV1"], ], ) -> AsyncIterator["BlockchainStateChannelMessageV1"]: async for response in self._stream_stream( "/helium.state_channel/msg", request_iterator, BlockchainStateChannelMessageV1, BlockchainStateChannelMessageV1, ): yield response
[docs]class GatewayBase(betterproto.ServiceStub): async def is_active_sc(self) -> "GatewayRespV1": raise grpclib.GRPCError(grpclib.const.Status.UNIMPLEMENTED) async def is_overpaid_sc(self) -> "GatewayRespV1": raise grpclib.GRPCError(grpclib.const.Status.UNIMPLEMENTED) async def close_sc(self) -> "GatewayRespV1": raise grpclib.GRPCError(grpclib.const.Status.UNIMPLEMENTED) async def follow_sc( self, request_iterator: AsyncIterator["GatewayScFollowReqV1"] ) -> AsyncIterator["GatewayRespV1"]: raise grpclib.GRPCError(grpclib.const.Status.UNIMPLEMENTED) async def routing(self) -> AsyncIterator["GatewayRespV1"]: raise grpclib.GRPCError(grpclib.const.Status.UNIMPLEMENTED) async def config(self) -> "GatewayRespV1": raise grpclib.GRPCError(grpclib.const.Status.UNIMPLEMENTED) async def config_update(self) -> AsyncIterator["GatewayRespV1"]: raise grpclib.GRPCError(grpclib.const.Status.UNIMPLEMENTED) async def validators(self) -> "GatewayRespV1": raise grpclib.GRPCError(grpclib.const.Status.UNIMPLEMENTED) async def __rpc_is_active_sc(self, stream: grpclib.server.Stream) -> None: request = await stream.recv_message() request_kwargs = {} response = await self.is_active_sc(**request_kwargs) await stream.send_message(response) async def __rpc_is_overpaid_sc(self, stream: grpclib.server.Stream) -> None: request = await stream.recv_message() request_kwargs = {} response = await self.is_overpaid_sc(**request_kwargs) await stream.send_message(response) async def __rpc_close_sc(self, stream: grpclib.server.Stream) -> None: request = await stream.recv_message() request_kwargs = {} response = await self.close_sc(**request_kwargs) await stream.send_message(response) async def __rpc_follow_sc(self, stream: grpclib.server.Stream) -> None: request_kwargs = {"request_iterator": stream.__aiter__()} await self._call_rpc_handler_server_stream( self.follow_sc, stream, request_kwargs, ) async def __rpc_routing(self, stream: grpclib.server.Stream) -> None: request = await stream.recv_message() request_kwargs = {} await self._call_rpc_handler_server_stream( self.routing, stream, request_kwargs, ) async def __rpc_config(self, stream: grpclib.server.Stream) -> None: request = await stream.recv_message() request_kwargs = {} response = await self.config(**request_kwargs) await stream.send_message(response) async def __rpc_config_update(self, stream: grpclib.server.Stream) -> None: request = await stream.recv_message() request_kwargs = {} await self._call_rpc_handler_server_stream( self.config_update, stream, request_kwargs, ) async def __rpc_validators(self, stream: grpclib.server.Stream) -> None: request = await stream.recv_message() request_kwargs = {} response = await self.validators(**request_kwargs) await stream.send_message(response) def __mapping__(self) -> Dict[str, grpclib.const.Handler]: return { "/helium.gateway/is_active_sc": grpclib.const.Handler( self.__rpc_is_active_sc, grpclib.const.Cardinality.UNARY_UNARY, GatewayScIsActiveReqV1, GatewayRespV1, ), "/helium.gateway/is_overpaid_sc": grpclib.const.Handler( self.__rpc_is_overpaid_sc, grpclib.const.Cardinality.UNARY_UNARY, GatewayScIsOverpaidReqV1, GatewayRespV1, ), "/helium.gateway/close_sc": grpclib.const.Handler( self.__rpc_close_sc, grpclib.const.Cardinality.UNARY_UNARY, GatewayScCloseReqV1, GatewayRespV1, ), "/helium.gateway/follow_sc": grpclib.const.Handler( self.__rpc_follow_sc, grpclib.const.Cardinality.STREAM_STREAM, GatewayScFollowReqV1, GatewayRespV1, ), "/helium.gateway/routing": grpclib.const.Handler( self.__rpc_routing, grpclib.const.Cardinality.UNARY_STREAM, GatewayRoutingReqV1, GatewayRespV1, ), "/helium.gateway/config": grpclib.const.Handler( self.__rpc_config, grpclib.const.Cardinality.UNARY_UNARY, GatewayConfigReqV1, GatewayRespV1, ), "/helium.gateway/config_update": grpclib.const.Handler( self.__rpc_config_update, grpclib.const.Cardinality.UNARY_STREAM, GatewayConfigUpdateReqV1, GatewayRespV1, ), "/helium.gateway/validators": grpclib.const.Handler( self.__rpc_validators, grpclib.const.Cardinality.UNARY_UNARY, GatewayValidatorsReqV1, GatewayRespV1, ), }
[docs]class RouterBase(ServiceBase): async def route(self) -> "BlockchainStateChannelMessageV1": raise grpclib.GRPCError(grpclib.const.Status.UNIMPLEMENTED) async def __rpc_route(self, stream: grpclib.server.Stream) -> None: request = await stream.recv_message() request_kwargs = {} response = await self.route(**request_kwargs) await stream.send_message(response) def __mapping__(self) -> Dict[str, grpclib.const.Handler]: return { "/helium.router/route": grpclib.const.Handler( self.__rpc_route, grpclib.const.Cardinality.UNARY_UNARY, BlockchainStateChannelMessageV1, BlockchainStateChannelMessageV1, ), }
[docs]class StateChannelBase(ServiceBase): async def msg( self, request_iterator: AsyncIterator["BlockchainStateChannelMessageV1"] ) -> AsyncIterator["BlockchainStateChannelMessageV1"]: raise grpclib.GRPCError(grpclib.const.Status.UNIMPLEMENTED) async def __rpc_msg(self, stream: grpclib.server.Stream) -> None: request_kwargs = {"request_iterator": stream.__aiter__()} await self._call_rpc_handler_server_stream( self.msg, stream, request_kwargs, ) def __mapping__(self) -> Dict[str, grpclib.const.Handler]: return { "/helium.state_channel/msg": grpclib.const.Handler( self.__rpc_msg, grpclib.const.Cardinality.STREAM_STREAM, BlockchainStateChannelMessageV1, BlockchainStateChannelMessageV1, ), }