// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.36.10
// 	protoc        v6.32.1
// source: services/blockchain/blockchain_api/blockchain_api.proto

// Package blockchain_api defines the gRPC service interface for blockchain operations.

package blockchain_api

import (
	model "github.com/bsv-blockchain/teranode/model"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	emptypb "google.golang.org/protobuf/types/known/emptypb"
	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
	reflect "reflect"
	sync "sync"
	unsafe "unsafe"
)

const (
	// Verify that this generated code is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
	// Verify that runtime/protoimpl is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)

// swagger:enum FSMEventType
type FSMEventType int32

const (
	FSMEventType_STOP          FSMEventType = 0
	FSMEventType_RUN           FSMEventType = 1
	FSMEventType_CATCHUPBLOCKS FSMEventType = 2
	FSMEventType_LEGACYSYNC    FSMEventType = 3
)

// Enum value maps for FSMEventType.
var (
	FSMEventType_name = map[int32]string{
		0: "STOP",
		1: "RUN",
		2: "CATCHUPBLOCKS",
		3: "LEGACYSYNC",
	}
	FSMEventType_value = map[string]int32{
		"STOP":          0,
		"RUN":           1,
		"CATCHUPBLOCKS": 2,
		"LEGACYSYNC":    3,
	}
)

func (x FSMEventType) Enum() *FSMEventType {
	p := new(FSMEventType)
	*p = x
	return p
}

func (x FSMEventType) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (FSMEventType) Descriptor() protoreflect.EnumDescriptor {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_enumTypes[0].Descriptor()
}

func (FSMEventType) Type() protoreflect.EnumType {
	return &file_services_blockchain_blockchain_api_blockchain_api_proto_enumTypes[0]
}

func (x FSMEventType) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use FSMEventType.Descriptor instead.
func (FSMEventType) EnumDescriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{0}
}

// FSMStateType defines possible states of the blockchain FSM.
type FSMStateType int32

const (
	FSMStateType_IDLE           FSMStateType = 0 // Service is idle
	FSMStateType_RUNNING        FSMStateType = 1 // Service is running normally
	FSMStateType_CATCHINGBLOCKS FSMStateType = 2 // Service is catching up blocks
	FSMStateType_LEGACYSYNCING  FSMStateType = 3 // Service is in legacy sync mode
)

// Enum value maps for FSMStateType.
var (
	FSMStateType_name = map[int32]string{
		0: "IDLE",
		1: "RUNNING",
		2: "CATCHINGBLOCKS",
		3: "LEGACYSYNCING",
	}
	FSMStateType_value = map[string]int32{
		"IDLE":           0,
		"RUNNING":        1,
		"CATCHINGBLOCKS": 2,
		"LEGACYSYNCING":  3,
	}
)

func (x FSMStateType) Enum() *FSMStateType {
	p := new(FSMStateType)
	*p = x
	return p
}

func (x FSMStateType) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (FSMStateType) Descriptor() protoreflect.EnumDescriptor {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_enumTypes[1].Descriptor()
}

func (FSMStateType) Type() protoreflect.EnumType {
	return &file_services_blockchain_blockchain_api_blockchain_api_proto_enumTypes[1]
}

func (x FSMStateType) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use FSMStateType.Descriptor instead.
func (FSMStateType) EnumDescriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{1}
}

// HealthResponse represents the health status of the blockchain service.
type HealthResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Ok            bool                   `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"`              // Overall health status
	Details       string                 `protobuf:"bytes,2,opt,name=details,proto3" json:"details,omitempty"`     // Detailed health information
	Timestamp     *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp of the health check
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *HealthResponse) Reset() {
	*x = HealthResponse{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[0]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *HealthResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*HealthResponse) ProtoMessage() {}

func (x *HealthResponse) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[0]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use HealthResponse.ProtoReflect.Descriptor instead.
func (*HealthResponse) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{0}
}

func (x *HealthResponse) GetOk() bool {
	if x != nil {
		return x.Ok
	}
	return false
}

func (x *HealthResponse) GetDetails() string {
	if x != nil {
		return x.Details
	}
	return ""
}

func (x *HealthResponse) GetTimestamp() *timestamppb.Timestamp {
	if x != nil {
		return x.Timestamp
	}
	return nil
}

// AddBlockRequest contains data for adding a new block to the blockchain.
type AddBlockRequest struct {
	state             protoimpl.MessageState `protogen:"open.v1"`
	Header            []byte                 `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"`                                              // Block header
	SubtreeHashes     [][]byte               `protobuf:"bytes,2,rep,name=subtree_hashes,json=subtreeHashes,proto3" json:"subtree_hashes,omitempty"`           // Merkle tree hashes
	CoinbaseTx        []byte                 `protobuf:"bytes,3,opt,name=coinbase_tx,json=coinbaseTx,proto3" json:"coinbase_tx,omitempty"`                    // Coinbase transaction
	TransactionCount  uint64                 `protobuf:"varint,4,opt,name=transaction_count,json=transactionCount,proto3" json:"transaction_count,omitempty"` // Number of transactions
	SizeInBytes       uint64                 `protobuf:"varint,5,opt,name=size_in_bytes,json=sizeInBytes,proto3" json:"size_in_bytes,omitempty"`              // Block size
	External          bool                   `protobuf:"varint,6,opt,name=external,proto3" json:"external,omitempty"`                                         // External block flag
	PeerId            string                 `protobuf:"bytes,7,opt,name=peer_id,json=peerId,proto3" json:"peer_id,omitempty"`                                // Peer identifier
	OptionMinedSet    bool                   `protobuf:"varint,8,opt,name=optionMinedSet,proto3" json:"optionMinedSet,omitempty"`                             // Option to mark block as mined
	OptionSubtreesSet bool                   `protobuf:"varint,9,opt,name=optionSubtreesSet,proto3" json:"optionSubtreesSet,omitempty"`                       // Option to mark subtrees as set
	OptionInvalid     bool                   `protobuf:"varint,10,opt,name=optionInvalid,proto3" json:"optionInvalid,omitempty"`                              // Option to invalidate block when adding
	OptionID          uint64                 `protobuf:"varint,11,opt,name=optionID,proto3" json:"optionID,omitempty"`                                        // Optional block ID
	unknownFields     protoimpl.UnknownFields
	sizeCache         protoimpl.SizeCache
}

func (x *AddBlockRequest) Reset() {
	*x = AddBlockRequest{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[1]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *AddBlockRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AddBlockRequest) ProtoMessage() {}

func (x *AddBlockRequest) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[1]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use AddBlockRequest.ProtoReflect.Descriptor instead.
func (*AddBlockRequest) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{1}
}

func (x *AddBlockRequest) GetHeader() []byte {
	if x != nil {
		return x.Header
	}
	return nil
}

func (x *AddBlockRequest) GetSubtreeHashes() [][]byte {
	if x != nil {
		return x.SubtreeHashes
	}
	return nil
}

func (x *AddBlockRequest) GetCoinbaseTx() []byte {
	if x != nil {
		return x.CoinbaseTx
	}
	return nil
}

func (x *AddBlockRequest) GetTransactionCount() uint64 {
	if x != nil {
		return x.TransactionCount
	}
	return 0
}

func (x *AddBlockRequest) GetSizeInBytes() uint64 {
	if x != nil {
		return x.SizeInBytes
	}
	return 0
}

func (x *AddBlockRequest) GetExternal() bool {
	if x != nil {
		return x.External
	}
	return false
}

func (x *AddBlockRequest) GetPeerId() string {
	if x != nil {
		return x.PeerId
	}
	return ""
}

func (x *AddBlockRequest) GetOptionMinedSet() bool {
	if x != nil {
		return x.OptionMinedSet
	}
	return false
}

func (x *AddBlockRequest) GetOptionSubtreesSet() bool {
	if x != nil {
		return x.OptionSubtreesSet
	}
	return false
}

func (x *AddBlockRequest) GetOptionInvalid() bool {
	if x != nil {
		return x.OptionInvalid
	}
	return false
}

func (x *AddBlockRequest) GetOptionID() uint64 {
	if x != nil {
		return x.OptionID
	}
	return 0
}

// GetBlockRequest represents a request to retrieve a block by its hash.
type GetBlockRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Hash          []byte                 `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"` // Hash of the block to retrieve
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetBlockRequest) Reset() {
	*x = GetBlockRequest{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[2]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetBlockRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetBlockRequest) ProtoMessage() {}

func (x *GetBlockRequest) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[2]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetBlockRequest.ProtoReflect.Descriptor instead.
func (*GetBlockRequest) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{2}
}

func (x *GetBlockRequest) GetHash() []byte {
	if x != nil {
		return x.Hash
	}
	return nil
}

// GetBlocksRequest represents a request to retrieve multiple blocks.
type GetBlocksRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Hash          []byte                 `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"`    // Starting block hash
	Count         uint32                 `protobuf:"varint,2,opt,name=count,proto3" json:"count,omitempty"` // Number of blocks to retrieve
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetBlocksRequest) Reset() {
	*x = GetBlocksRequest{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[3]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetBlocksRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetBlocksRequest) ProtoMessage() {}

func (x *GetBlocksRequest) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[3]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetBlocksRequest.ProtoReflect.Descriptor instead.
func (*GetBlocksRequest) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{3}
}

func (x *GetBlocksRequest) GetHash() []byte {
	if x != nil {
		return x.Hash
	}
	return nil
}

func (x *GetBlocksRequest) GetCount() uint32 {
	if x != nil {
		return x.Count
	}
	return 0
}

// GetBlocksResponse contains multiple serialized blocks.
type GetBlocksResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Blocks        [][]byte               `protobuf:"bytes,1,rep,name=blocks,proto3" json:"blocks,omitempty"` // List of serialized blocks
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetBlocksResponse) Reset() {
	*x = GetBlocksResponse{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[4]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetBlocksResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetBlocksResponse) ProtoMessage() {}

func (x *GetBlocksResponse) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[4]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetBlocksResponse.ProtoReflect.Descriptor instead.
func (*GetBlocksResponse) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{4}
}

func (x *GetBlocksResponse) GetBlocks() [][]byte {
	if x != nil {
		return x.Blocks
	}
	return nil
}

// GetBlockByHeightRequest represents a request to retrieve a block at a specific height.
type GetBlockByHeightRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Height        uint32                 `protobuf:"varint,1,opt,name=height,proto3" json:"height,omitempty"` // Block height to retrieve
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetBlockByHeightRequest) Reset() {
	*x = GetBlockByHeightRequest{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[5]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetBlockByHeightRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetBlockByHeightRequest) ProtoMessage() {}

func (x *GetBlockByHeightRequest) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[5]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetBlockByHeightRequest.ProtoReflect.Descriptor instead.
func (*GetBlockByHeightRequest) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{5}
}

func (x *GetBlockByHeightRequest) GetHeight() uint32 {
	if x != nil {
		return x.Height
	}
	return 0
}

// GetBlockByIDRequest represents a request to retrieve a block by its ID.
type GetBlockByIDRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Id            uint64                 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` // Block ID to retrieve
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetBlockByIDRequest) Reset() {
	*x = GetBlockByIDRequest{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[6]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetBlockByIDRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetBlockByIDRequest) ProtoMessage() {}

func (x *GetBlockByIDRequest) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[6]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetBlockByIDRequest.ProtoReflect.Descriptor instead.
func (*GetBlockByIDRequest) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{6}
}

func (x *GetBlockByIDRequest) GetId() uint64 {
	if x != nil {
		return x.Id
	}
	return 0
}

// GetNextBlockIDResponse represents the response containing the next available block ID.
type GetNextBlockIDResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	NextBlockId   uint64                 `protobuf:"varint,1,opt,name=next_block_id,json=nextBlockId,proto3" json:"next_block_id,omitempty"` // Next available block ID
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetNextBlockIDResponse) Reset() {
	*x = GetNextBlockIDResponse{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[7]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetNextBlockIDResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetNextBlockIDResponse) ProtoMessage() {}

func (x *GetNextBlockIDResponse) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[7]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetNextBlockIDResponse.ProtoReflect.Descriptor instead.
func (*GetNextBlockIDResponse) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{7}
}

func (x *GetNextBlockIDResponse) GetNextBlockId() uint64 {
	if x != nil {
		return x.NextBlockId
	}
	return 0
}

// GetBlockInChainByHeightHashRequest represents a request to retrieve a block by height in a specific chain.
type GetBlockInChainByHeightHashRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Height        uint32                 `protobuf:"varint,1,opt,name=height,proto3" json:"height,omitempty"`                       // Target block height
	StartHash     []byte                 `protobuf:"bytes,2,opt,name=start_hash,json=startHash,proto3" json:"start_hash,omitempty"` // Starting block hash defining the chain
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetBlockInChainByHeightHashRequest) Reset() {
	*x = GetBlockInChainByHeightHashRequest{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[8]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetBlockInChainByHeightHashRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetBlockInChainByHeightHashRequest) ProtoMessage() {}

func (x *GetBlockInChainByHeightHashRequest) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[8]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetBlockInChainByHeightHashRequest.ProtoReflect.Descriptor instead.
func (*GetBlockInChainByHeightHashRequest) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{8}
}

func (x *GetBlockInChainByHeightHashRequest) GetHeight() uint32 {
	if x != nil {
		return x.Height
	}
	return 0
}

func (x *GetBlockInChainByHeightHashRequest) GetStartHash() []byte {
	if x != nil {
		return x.StartHash
	}
	return nil
}

// GetBlockResponse contains detailed block information.
type GetBlockResponse struct {
	state            protoimpl.MessageState `protogen:"open.v1"`
	Header           []byte                 `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"`                                              // Block header bytes
	Height           uint32                 `protobuf:"varint,2,opt,name=height,proto3" json:"height,omitempty"`                                             // Block height
	CoinbaseTx       []byte                 `protobuf:"bytes,3,opt,name=coinbase_tx,json=coinbaseTx,proto3" json:"coinbase_tx,omitempty"`                    // Coinbase transaction bytes
	TransactionCount uint64                 `protobuf:"varint,4,opt,name=transaction_count,json=transactionCount,proto3" json:"transaction_count,omitempty"` // Total number of transactions
	SubtreeHashes    [][]byte               `protobuf:"bytes,5,rep,name=subtree_hashes,json=subtreeHashes,proto3" json:"subtree_hashes,omitempty"`           // Merkle tree subtree hashes
	SizeInBytes      uint64                 `protobuf:"varint,6,opt,name=size_in_bytes,json=sizeInBytes,proto3" json:"size_in_bytes,omitempty"`              // Total block size in bytes
	Id               uint32                 `protobuf:"varint,7,opt,name=id,proto3" json:"id,omitempty"`                                                     // Block identifier
	unknownFields    protoimpl.UnknownFields
	sizeCache        protoimpl.SizeCache
}

func (x *GetBlockResponse) Reset() {
	*x = GetBlockResponse{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[9]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetBlockResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetBlockResponse) ProtoMessage() {}

func (x *GetBlockResponse) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[9]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetBlockResponse.ProtoReflect.Descriptor instead.
func (*GetBlockResponse) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{9}
}

func (x *GetBlockResponse) GetHeader() []byte {
	if x != nil {
		return x.Header
	}
	return nil
}

func (x *GetBlockResponse) GetHeight() uint32 {
	if x != nil {
		return x.Height
	}
	return 0
}

func (x *GetBlockResponse) GetCoinbaseTx() []byte {
	if x != nil {
		return x.CoinbaseTx
	}
	return nil
}

func (x *GetBlockResponse) GetTransactionCount() uint64 {
	if x != nil {
		return x.TransactionCount
	}
	return 0
}

func (x *GetBlockResponse) GetSubtreeHashes() [][]byte {
	if x != nil {
		return x.SubtreeHashes
	}
	return nil
}

func (x *GetBlockResponse) GetSizeInBytes() uint64 {
	if x != nil {
		return x.SizeInBytes
	}
	return 0
}

func (x *GetBlockResponse) GetId() uint32 {
	if x != nil {
		return x.Id
	}
	return 0
}

// GetFullBlockResponse contains a complete serialized block.
type GetFullBlockResponse struct {
	state          protoimpl.MessageState `protogen:"open.v1"`
	FullBlockBytes []byte                 `protobuf:"bytes,1,opt,name=full_block_bytes,json=fullBlockBytes,proto3" json:"full_block_bytes,omitempty"` // Complete serialized block data
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

func (x *GetFullBlockResponse) Reset() {
	*x = GetFullBlockResponse{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[10]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetFullBlockResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetFullBlockResponse) ProtoMessage() {}

func (x *GetFullBlockResponse) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[10]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetFullBlockResponse.ProtoReflect.Descriptor instead.
func (*GetFullBlockResponse) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{10}
}

func (x *GetFullBlockResponse) GetFullBlockBytes() []byte {
	if x != nil {
		return x.FullBlockBytes
	}
	return nil
}

// GetBlockGraphDataRequest specifies parameters for retrieving blockchain visualization data.
type GetBlockGraphDataRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	PeriodMillis  uint64                 `protobuf:"varint,1,opt,name=period_millis,json=periodMillis,proto3" json:"period_millis,omitempty"` // Time period in milliseconds
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetBlockGraphDataRequest) Reset() {
	*x = GetBlockGraphDataRequest{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[11]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetBlockGraphDataRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetBlockGraphDataRequest) ProtoMessage() {}

func (x *GetBlockGraphDataRequest) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[11]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetBlockGraphDataRequest.ProtoReflect.Descriptor instead.
func (*GetBlockGraphDataRequest) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{11}
}

func (x *GetBlockGraphDataRequest) GetPeriodMillis() uint64 {
	if x != nil {
		return x.PeriodMillis
	}
	return 0
}

// GetBlockExistsResponse indicates whether a block exists.
type GetBlockExistsResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Exists        bool                   `protobuf:"varint,1,opt,name=exists,proto3" json:"exists,omitempty"` // True if the block exists
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetBlockExistsResponse) Reset() {
	*x = GetBlockExistsResponse{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[12]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetBlockExistsResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetBlockExistsResponse) ProtoMessage() {}

func (x *GetBlockExistsResponse) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[12]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetBlockExistsResponse.ProtoReflect.Descriptor instead.
func (*GetBlockExistsResponse) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{12}
}

func (x *GetBlockExistsResponse) GetExists() bool {
	if x != nil {
		return x.Exists
	}
	return false
}

// GetMedianTimeRequest requests median time calculation for a block.
type GetMedianTimeRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	BlockHash     []byte                 `protobuf:"bytes,1,opt,name=blockHash,proto3" json:"blockHash,omitempty"` // Hash of the block
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetMedianTimeRequest) Reset() {
	*x = GetMedianTimeRequest{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[13]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetMedianTimeRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetMedianTimeRequest) ProtoMessage() {}

func (x *GetMedianTimeRequest) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[13]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetMedianTimeRequest.ProtoReflect.Descriptor instead.
func (*GetMedianTimeRequest) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{13}
}

func (x *GetMedianTimeRequest) GetBlockHash() []byte {
	if x != nil {
		return x.BlockHash
	}
	return nil
}

// GetBlockHeadersRequest requests multiple block headers.
type GetBlockHeadersRequest struct {
	state           protoimpl.MessageState `protogen:"open.v1"`
	StartHash       []byte                 `protobuf:"bytes,1,opt,name=startHash,proto3" json:"startHash,omitempty"`              // Starting block hash
	NumberOfHeaders uint64                 `protobuf:"varint,2,opt,name=numberOfHeaders,proto3" json:"numberOfHeaders,omitempty"` // Number of headers to retrieve
	unknownFields   protoimpl.UnknownFields
	sizeCache       protoimpl.SizeCache
}

func (x *GetBlockHeadersRequest) Reset() {
	*x = GetBlockHeadersRequest{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[14]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetBlockHeadersRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetBlockHeadersRequest) ProtoMessage() {}

func (x *GetBlockHeadersRequest) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[14]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetBlockHeadersRequest.ProtoReflect.Descriptor instead.
func (*GetBlockHeadersRequest) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{14}
}

func (x *GetBlockHeadersRequest) GetStartHash() []byte {
	if x != nil {
		return x.StartHash
	}
	return nil
}

func (x *GetBlockHeadersRequest) GetNumberOfHeaders() uint64 {
	if x != nil {
		return x.NumberOfHeaders
	}
	return 0
}

// swagger:model GetBlockHeadersToCommonAncestorRequest
type GetBlockHeadersToCommonAncestorRequest struct {
	state              protoimpl.MessageState `protogen:"open.v1"`
	TargetHash         []byte                 `protobuf:"bytes,1,opt,name=targetHash,proto3" json:"targetHash,omitempty"`
	BlockLocatorHashes [][]byte               `protobuf:"bytes,2,rep,name=blockLocatorHashes,proto3" json:"blockLocatorHashes,omitempty"`
	MaxHeaders         uint32                 `protobuf:"varint,3,opt,name=maxHeaders,proto3" json:"maxHeaders,omitempty"`
	unknownFields      protoimpl.UnknownFields
	sizeCache          protoimpl.SizeCache
}

func (x *GetBlockHeadersToCommonAncestorRequest) Reset() {
	*x = GetBlockHeadersToCommonAncestorRequest{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[15]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetBlockHeadersToCommonAncestorRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetBlockHeadersToCommonAncestorRequest) ProtoMessage() {}

func (x *GetBlockHeadersToCommonAncestorRequest) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[15]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetBlockHeadersToCommonAncestorRequest.ProtoReflect.Descriptor instead.
func (*GetBlockHeadersToCommonAncestorRequest) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{15}
}

func (x *GetBlockHeadersToCommonAncestorRequest) GetTargetHash() []byte {
	if x != nil {
		return x.TargetHash
	}
	return nil
}

func (x *GetBlockHeadersToCommonAncestorRequest) GetBlockLocatorHashes() [][]byte {
	if x != nil {
		return x.BlockLocatorHashes
	}
	return nil
}

func (x *GetBlockHeadersToCommonAncestorRequest) GetMaxHeaders() uint32 {
	if x != nil {
		return x.MaxHeaders
	}
	return 0
}

// swagger:model GetBlockHeadersFromCommonAncestor
type GetBlockHeadersFromCommonAncestorRequest struct {
	state              protoimpl.MessageState `protogen:"open.v1"`
	TargetHash         []byte                 `protobuf:"bytes,1,opt,name=targetHash,proto3" json:"targetHash,omitempty"`                 // Target block hash
	BlockLocatorHashes [][]byte               `protobuf:"bytes,2,rep,name=blockLocatorHashes,proto3" json:"blockLocatorHashes,omitempty"` // Block locator hashes
	MaxHeaders         uint32                 `protobuf:"varint,3,opt,name=maxHeaders,proto3" json:"maxHeaders,omitempty"`                // Maximum number of headers to retrieve
	unknownFields      protoimpl.UnknownFields
	sizeCache          protoimpl.SizeCache
}

func (x *GetBlockHeadersFromCommonAncestorRequest) Reset() {
	*x = GetBlockHeadersFromCommonAncestorRequest{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[16]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetBlockHeadersFromCommonAncestorRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetBlockHeadersFromCommonAncestorRequest) ProtoMessage() {}

func (x *GetBlockHeadersFromCommonAncestorRequest) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[16]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetBlockHeadersFromCommonAncestorRequest.ProtoReflect.Descriptor instead.
func (*GetBlockHeadersFromCommonAncestorRequest) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{16}
}

func (x *GetBlockHeadersFromCommonAncestorRequest) GetTargetHash() []byte {
	if x != nil {
		return x.TargetHash
	}
	return nil
}

func (x *GetBlockHeadersFromCommonAncestorRequest) GetBlockLocatorHashes() [][]byte {
	if x != nil {
		return x.BlockLocatorHashes
	}
	return nil
}

func (x *GetBlockHeadersFromCommonAncestorRequest) GetMaxHeaders() uint32 {
	if x != nil {
		return x.MaxHeaders
	}
	return 0
}

// GetBlockHeadersResponse contains multiple block headers and their metadata.
type GetBlockHeadersResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	BlockHeaders  [][]byte               `protobuf:"bytes,1,rep,name=blockHeaders,proto3" json:"blockHeaders,omitempty"` // List of serialized block headers
	Metas         [][]byte               `protobuf:"bytes,2,rep,name=metas,proto3" json:"metas,omitempty"`               // List of serialized metadata
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetBlockHeadersResponse) Reset() {
	*x = GetBlockHeadersResponse{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[17]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetBlockHeadersResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetBlockHeadersResponse) ProtoMessage() {}

func (x *GetBlockHeadersResponse) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[17]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetBlockHeadersResponse.ProtoReflect.Descriptor instead.
func (*GetBlockHeadersResponse) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{17}
}

func (x *GetBlockHeadersResponse) GetBlockHeaders() [][]byte {
	if x != nil {
		return x.BlockHeaders
	}
	return nil
}

func (x *GetBlockHeadersResponse) GetMetas() [][]byte {
	if x != nil {
		return x.Metas
	}
	return nil
}

// GetBlockHeadersFromTillRequest requests headers between two blocks.
type GetBlockHeadersFromTillRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	StartHash     []byte                 `protobuf:"bytes,1,opt,name=startHash,proto3" json:"startHash,omitempty"` // Starting block hash
	EndHash       []byte                 `protobuf:"bytes,2,opt,name=endHash,proto3" json:"endHash,omitempty"`     // Ending block hash
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetBlockHeadersFromTillRequest) Reset() {
	*x = GetBlockHeadersFromTillRequest{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[18]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetBlockHeadersFromTillRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetBlockHeadersFromTillRequest) ProtoMessage() {}

func (x *GetBlockHeadersFromTillRequest) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[18]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetBlockHeadersFromTillRequest.ProtoReflect.Descriptor instead.
func (*GetBlockHeadersFromTillRequest) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{18}
}

func (x *GetBlockHeadersFromTillRequest) GetStartHash() []byte {
	if x != nil {
		return x.StartHash
	}
	return nil
}

func (x *GetBlockHeadersFromTillRequest) GetEndHash() []byte {
	if x != nil {
		return x.EndHash
	}
	return nil
}

// GetBlockHeadersFromHeightRequest requests headers starting from a height.
type GetBlockHeadersFromHeightRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	StartHeight   uint32                 `protobuf:"varint,1,opt,name=startHeight,proto3" json:"startHeight,omitempty"` // Starting height
	Limit         uint32                 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"`             // Maximum number of headers to retrieve
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetBlockHeadersFromHeightRequest) Reset() {
	*x = GetBlockHeadersFromHeightRequest{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[19]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetBlockHeadersFromHeightRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetBlockHeadersFromHeightRequest) ProtoMessage() {}

func (x *GetBlockHeadersFromHeightRequest) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[19]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetBlockHeadersFromHeightRequest.ProtoReflect.Descriptor instead.
func (*GetBlockHeadersFromHeightRequest) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{19}
}

func (x *GetBlockHeadersFromHeightRequest) GetStartHeight() uint32 {
	if x != nil {
		return x.StartHeight
	}
	return 0
}

func (x *GetBlockHeadersFromHeightRequest) GetLimit() uint32 {
	if x != nil {
		return x.Limit
	}
	return 0
}

// GetBlockHeadersFromHeightResponse contains headers and metadata from a height.
type GetBlockHeadersFromHeightResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	BlockHeaders  [][]byte               `protobuf:"bytes,1,rep,name=blockHeaders,proto3" json:"blockHeaders,omitempty"` // List of serialized block headers
	Metas         [][]byte               `protobuf:"bytes,2,rep,name=metas,proto3" json:"metas,omitempty"`               // List of serialized metadata
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetBlockHeadersFromHeightResponse) Reset() {
	*x = GetBlockHeadersFromHeightResponse{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[20]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetBlockHeadersFromHeightResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetBlockHeadersFromHeightResponse) ProtoMessage() {}

func (x *GetBlockHeadersFromHeightResponse) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[20]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetBlockHeadersFromHeightResponse.ProtoReflect.Descriptor instead.
func (*GetBlockHeadersFromHeightResponse) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{20}
}

func (x *GetBlockHeadersFromHeightResponse) GetBlockHeaders() [][]byte {
	if x != nil {
		return x.BlockHeaders
	}
	return nil
}

func (x *GetBlockHeadersFromHeightResponse) GetMetas() [][]byte {
	if x != nil {
		return x.Metas
	}
	return nil
}

// GetBlockHeadersByHeightRequest requests headers between two heights.
type GetBlockHeadersByHeightRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	StartHeight   uint32                 `protobuf:"varint,1,opt,name=startHeight,proto3" json:"startHeight,omitempty"` // Starting height
	EndHeight     uint32                 `protobuf:"varint,2,opt,name=endHeight,proto3" json:"endHeight,omitempty"`     // Ending height
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetBlockHeadersByHeightRequest) Reset() {
	*x = GetBlockHeadersByHeightRequest{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[21]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetBlockHeadersByHeightRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetBlockHeadersByHeightRequest) ProtoMessage() {}

func (x *GetBlockHeadersByHeightRequest) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[21]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetBlockHeadersByHeightRequest.ProtoReflect.Descriptor instead.
func (*GetBlockHeadersByHeightRequest) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{21}
}

func (x *GetBlockHeadersByHeightRequest) GetStartHeight() uint32 {
	if x != nil {
		return x.StartHeight
	}
	return 0
}

func (x *GetBlockHeadersByHeightRequest) GetEndHeight() uint32 {
	if x != nil {
		return x.EndHeight
	}
	return 0
}

// GetBlockHeadersByHeightResponse contains headers and metadata between heights.
type GetBlockHeadersByHeightResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	BlockHeaders  [][]byte               `protobuf:"bytes,1,rep,name=blockHeaders,proto3" json:"blockHeaders,omitempty"` // List of serialized block headers
	Metas         [][]byte               `protobuf:"bytes,2,rep,name=metas,proto3" json:"metas,omitempty"`               // List of serialized metadata
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetBlockHeadersByHeightResponse) Reset() {
	*x = GetBlockHeadersByHeightResponse{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[22]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetBlockHeadersByHeightResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetBlockHeadersByHeightResponse) ProtoMessage() {}

func (x *GetBlockHeadersByHeightResponse) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[22]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetBlockHeadersByHeightResponse.ProtoReflect.Descriptor instead.
func (*GetBlockHeadersByHeightResponse) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{22}
}

func (x *GetBlockHeadersByHeightResponse) GetBlockHeaders() [][]byte {
	if x != nil {
		return x.BlockHeaders
	}
	return nil
}

func (x *GetBlockHeadersByHeightResponse) GetMetas() [][]byte {
	if x != nil {
		return x.Metas
	}
	return nil
}

// GetBlockHeaderIDsResponse contains block header identifiers.
type GetBlockHeaderIDsResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Ids           []uint32               `protobuf:"varint,1,rep,packed,name=ids,proto3" json:"ids,omitempty"` // List of block header IDs
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetBlockHeaderIDsResponse) Reset() {
	*x = GetBlockHeaderIDsResponse{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[23]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetBlockHeaderIDsResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetBlockHeaderIDsResponse) ProtoMessage() {}

func (x *GetBlockHeaderIDsResponse) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[23]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetBlockHeaderIDsResponse.ProtoReflect.Descriptor instead.
func (*GetBlockHeaderIDsResponse) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{23}
}

func (x *GetBlockHeaderIDsResponse) GetIds() []uint32 {
	if x != nil {
		return x.Ids
	}
	return nil
}

// GetMedianTimeResponse contains block timestamp information.
type GetMedianTimeResponse struct {
	state           protoimpl.MessageState `protogen:"open.v1"`
	BlockHeaderTime []uint32               `protobuf:"varint,1,rep,packed,name=block_header_time,json=blockHeaderTime,proto3" json:"block_header_time,omitempty"` // Timestamps of the last 11 (+1) blocks
	unknownFields   protoimpl.UnknownFields
	sizeCache       protoimpl.SizeCache
}

func (x *GetMedianTimeResponse) Reset() {
	*x = GetMedianTimeResponse{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[24]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetMedianTimeResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetMedianTimeResponse) ProtoMessage() {}

func (x *GetMedianTimeResponse) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[24]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetMedianTimeResponse.ProtoReflect.Descriptor instead.
func (*GetMedianTimeResponse) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{24}
}

func (x *GetMedianTimeResponse) GetBlockHeaderTime() []uint32 {
	if x != nil {
		return x.BlockHeaderTime
	}
	return nil
}

// GetBlockHeaderRequest requests a specific block header.
type GetBlockHeaderRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	BlockHash     []byte                 `protobuf:"bytes,1,opt,name=blockHash,proto3" json:"blockHash,omitempty"` // Hash of the block
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetBlockHeaderRequest) Reset() {
	*x = GetBlockHeaderRequest{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[25]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetBlockHeaderRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetBlockHeaderRequest) ProtoMessage() {}

func (x *GetBlockHeaderRequest) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[25]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetBlockHeaderRequest.ProtoReflect.Descriptor instead.
func (*GetBlockHeaderRequest) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{25}
}

func (x *GetBlockHeaderRequest) GetBlockHash() []byte {
	if x != nil {
		return x.BlockHash
	}
	return nil
}

// CheckBlockIsCurrentChainRequest checks if blocks are in the main chain.
type CheckBlockIsCurrentChainRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	BlockIDs      []uint32               `protobuf:"varint,1,rep,packed,name=blockIDs,proto3" json:"blockIDs,omitempty"` // List of block IDs to check
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CheckBlockIsCurrentChainRequest) Reset() {
	*x = CheckBlockIsCurrentChainRequest{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[26]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CheckBlockIsCurrentChainRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CheckBlockIsCurrentChainRequest) ProtoMessage() {}

func (x *CheckBlockIsCurrentChainRequest) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[26]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CheckBlockIsCurrentChainRequest.ProtoReflect.Descriptor instead.
func (*CheckBlockIsCurrentChainRequest) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{26}
}

func (x *CheckBlockIsCurrentChainRequest) GetBlockIDs() []uint32 {
	if x != nil {
		return x.BlockIDs
	}
	return nil
}

// InvalidateBlockRequest requests to invalidate a block.
type InvalidateBlockRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	BlockHash     []byte                 `protobuf:"bytes,1,opt,name=blockHash,proto3" json:"blockHash,omitempty"` // Hash of the block to invalidate
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *InvalidateBlockRequest) Reset() {
	*x = InvalidateBlockRequest{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[27]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *InvalidateBlockRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*InvalidateBlockRequest) ProtoMessage() {}

func (x *InvalidateBlockRequest) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[27]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use InvalidateBlockRequest.ProtoReflect.Descriptor instead.
func (*InvalidateBlockRequest) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{27}
}

func (x *InvalidateBlockRequest) GetBlockHash() []byte {
	if x != nil {
		return x.BlockHash
	}
	return nil
}

// InvalidateBlockResponse contains the result of block invalidation.
type InvalidateBlockResponse struct {
	state             protoimpl.MessageState `protogen:"open.v1"`
	InvalidatedBlocks [][]byte               `protobuf:"bytes,1,rep,name=invalidatedBlocks,proto3" json:"invalidatedBlocks,omitempty"` // List of invalidated block hashes
	unknownFields     protoimpl.UnknownFields
	sizeCache         protoimpl.SizeCache
}

func (x *InvalidateBlockResponse) Reset() {
	*x = InvalidateBlockResponse{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[28]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *InvalidateBlockResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*InvalidateBlockResponse) ProtoMessage() {}

func (x *InvalidateBlockResponse) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[28]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use InvalidateBlockResponse.ProtoReflect.Descriptor instead.
func (*InvalidateBlockResponse) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{28}
}

func (x *InvalidateBlockResponse) GetInvalidatedBlocks() [][]byte {
	if x != nil {
		return x.InvalidatedBlocks
	}
	return nil
}

// RevalidateBlockRequest requests to revalidate a block.
type RevalidateBlockRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	BlockHash     []byte                 `protobuf:"bytes,1,opt,name=blockHash,proto3" json:"blockHash,omitempty"` // Hash of the block to revalidate
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *RevalidateBlockRequest) Reset() {
	*x = RevalidateBlockRequest{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[29]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RevalidateBlockRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RevalidateBlockRequest) ProtoMessage() {}

func (x *RevalidateBlockRequest) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[29]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use RevalidateBlockRequest.ProtoReflect.Descriptor instead.
func (*RevalidateBlockRequest) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{29}
}

func (x *RevalidateBlockRequest) GetBlockHash() []byte {
	if x != nil {
		return x.BlockHash
	}
	return nil
}

// GetBlockHeaderResponse contains detailed block header information.
type GetBlockHeaderResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	BlockHeader   []byte                 `protobuf:"bytes,1,opt,name=blockHeader,proto3" json:"blockHeader,omitempty"`                       // Serialized block header
	Id            uint32                 `protobuf:"varint,2,opt,name=id,proto3" json:"id,omitempty"`                                        // Block identifier
	Height        uint32                 `protobuf:"varint,3,opt,name=height,proto3" json:"height,omitempty"`                                // Block height
	TxCount       uint64                 `protobuf:"varint,4,opt,name=tx_count,json=txCount,proto3" json:"tx_count,omitempty"`               // Transaction count
	SizeInBytes   uint64                 `protobuf:"varint,5,opt,name=size_in_bytes,json=sizeInBytes,proto3" json:"size_in_bytes,omitempty"` // Block size
	Miner         string                 `protobuf:"bytes,6,opt,name=miner,proto3" json:"miner,omitempty"`                                   // Miner identifier
	PeerId        string                 `protobuf:"bytes,7,opt,name=peer_id,json=peerId,proto3" json:"peer_id,omitempty"`                   // Peer identifier
	BlockTime     uint32                 `protobuf:"varint,8,opt,name=block_time,json=blockTime,proto3" json:"block_time,omitempty"`         // Block timestamp
	Timestamp     uint32                 `protobuf:"varint,9,opt,name=timestamp,proto3" json:"timestamp,omitempty"`                          // Processing timestamp
	ChainWork     []byte                 `protobuf:"bytes,10,opt,name=chain_work,json=chainWork,proto3" json:"chain_work,omitempty"`         // Accumulated chain work
	MinedSet      bool                   `protobuf:"varint,11,opt,name=mined_set,json=minedSet,proto3" json:"mined_set,omitempty"`           // Mined status
	SubtreesSet   bool                   `protobuf:"varint,12,opt,name=subtrees_set,json=subtreesSet,proto3" json:"subtrees_set,omitempty"`  // Subtrees status
	Invalid       bool                   `protobuf:"varint,13,opt,name=invalid,proto3" json:"invalid,omitempty"`                             // Validity status
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetBlockHeaderResponse) Reset() {
	*x = GetBlockHeaderResponse{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[30]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetBlockHeaderResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetBlockHeaderResponse) ProtoMessage() {}

func (x *GetBlockHeaderResponse) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[30]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetBlockHeaderResponse.ProtoReflect.Descriptor instead.
func (*GetBlockHeaderResponse) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{30}
}

func (x *GetBlockHeaderResponse) GetBlockHeader() []byte {
	if x != nil {
		return x.BlockHeader
	}
	return nil
}

func (x *GetBlockHeaderResponse) GetId() uint32 {
	if x != nil {
		return x.Id
	}
	return 0
}

func (x *GetBlockHeaderResponse) GetHeight() uint32 {
	if x != nil {
		return x.Height
	}
	return 0
}

func (x *GetBlockHeaderResponse) GetTxCount() uint64 {
	if x != nil {
		return x.TxCount
	}
	return 0
}

func (x *GetBlockHeaderResponse) GetSizeInBytes() uint64 {
	if x != nil {
		return x.SizeInBytes
	}
	return 0
}

func (x *GetBlockHeaderResponse) GetMiner() string {
	if x != nil {
		return x.Miner
	}
	return ""
}

func (x *GetBlockHeaderResponse) GetPeerId() string {
	if x != nil {
		return x.PeerId
	}
	return ""
}

func (x *GetBlockHeaderResponse) GetBlockTime() uint32 {
	if x != nil {
		return x.BlockTime
	}
	return 0
}

func (x *GetBlockHeaderResponse) GetTimestamp() uint32 {
	if x != nil {
		return x.Timestamp
	}
	return 0
}

func (x *GetBlockHeaderResponse) GetChainWork() []byte {
	if x != nil {
		return x.ChainWork
	}
	return nil
}

func (x *GetBlockHeaderResponse) GetMinedSet() bool {
	if x != nil {
		return x.MinedSet
	}
	return false
}

func (x *GetBlockHeaderResponse) GetSubtreesSet() bool {
	if x != nil {
		return x.SubtreesSet
	}
	return false
}

func (x *GetBlockHeaderResponse) GetInvalid() bool {
	if x != nil {
		return x.Invalid
	}
	return false
}

// CheckBlockIsCurrentChainResponse indicates if blocks are in the main chain.
type CheckBlockIsCurrentChainResponse struct {
	state                protoimpl.MessageState `protogen:"open.v1"`
	IsPartOfCurrentChain bool                   `protobuf:"varint,1,opt,name=isPartOfCurrentChain,proto3" json:"isPartOfCurrentChain,omitempty"` // True if blocks are in main chain
	unknownFields        protoimpl.UnknownFields
	sizeCache            protoimpl.SizeCache
}

func (x *CheckBlockIsCurrentChainResponse) Reset() {
	*x = CheckBlockIsCurrentChainResponse{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[31]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CheckBlockIsCurrentChainResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CheckBlockIsCurrentChainResponse) ProtoMessage() {}

func (x *CheckBlockIsCurrentChainResponse) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[31]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CheckBlockIsCurrentChainResponse.ProtoReflect.Descriptor instead.
func (*CheckBlockIsCurrentChainResponse) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{31}
}

func (x *CheckBlockIsCurrentChainResponse) GetIsPartOfCurrentChain() bool {
	if x != nil {
		return x.IsPartOfCurrentChain
	}
	return false
}

// SubscribeRequest initiates a subscription to blockchain events.
type SubscribeRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Source        string                 `protobuf:"bytes,1,opt,name=source,proto3" json:"source,omitempty"` // Source identifier for the subscription
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *SubscribeRequest) Reset() {
	*x = SubscribeRequest{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[32]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SubscribeRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SubscribeRequest) ProtoMessage() {}

func (x *SubscribeRequest) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[32]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SubscribeRequest.ProtoReflect.Descriptor instead.
func (*SubscribeRequest) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{32}
}

func (x *SubscribeRequest) GetSource() string {
	if x != nil {
		return x.Source
	}
	return ""
}

// Notification represents a blockchain event notification.
type Notification struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Type          model.NotificationType `protobuf:"varint,1,opt,name=type,proto3,enum=model.NotificationType" json:"type,omitempty"` // Type of notification
	Hash          []byte                 `protobuf:"bytes,2,opt,name=hash,proto3" json:"hash,omitempty"`                              // Related block hash
	Base_URL      string                 `protobuf:"bytes,3,opt,name=base_URL,json=baseURL,proto3" json:"base_URL,omitempty"`         // Base URL for additional data
	Metadata      *NotificationMetadata  `protobuf:"bytes,4,opt,name=metadata,proto3" json:"metadata,omitempty"`                      // Additional metadata
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Notification) Reset() {
	*x = Notification{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[33]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Notification) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Notification) ProtoMessage() {}

func (x *Notification) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[33]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Notification.ProtoReflect.Descriptor instead.
func (*Notification) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{33}
}

func (x *Notification) GetType() model.NotificationType {
	if x != nil {
		return x.Type
	}
	return model.NotificationType(0)
}

func (x *Notification) GetHash() []byte {
	if x != nil {
		return x.Hash
	}
	return nil
}

func (x *Notification) GetBase_URL() string {
	if x != nil {
		return x.Base_URL
	}
	return ""
}

func (x *Notification) GetMetadata() *NotificationMetadata {
	if x != nil {
		return x.Metadata
	}
	return nil
}

// NotificationMetadata contains additional notification information.
type NotificationMetadata struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Metadata      map[string]string      `protobuf:"bytes,1,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Key-value pairs of metadata
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *NotificationMetadata) Reset() {
	*x = NotificationMetadata{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[34]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *NotificationMetadata) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*NotificationMetadata) ProtoMessage() {}

func (x *NotificationMetadata) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[34]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use NotificationMetadata.ProtoReflect.Descriptor instead.
func (*NotificationMetadata) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{34}
}

func (x *NotificationMetadata) GetMetadata() map[string]string {
	if x != nil {
		return x.Metadata
	}
	return nil
}

// GetStateRequest requests state data by key.
type GetStateRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Key           string                 `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` // State key to retrieve
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetStateRequest) Reset() {
	*x = GetStateRequest{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[35]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetStateRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetStateRequest) ProtoMessage() {}

func (x *GetStateRequest) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[35]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetStateRequest.ProtoReflect.Descriptor instead.
func (*GetStateRequest) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{35}
}

func (x *GetStateRequest) GetKey() string {
	if x != nil {
		return x.Key
	}
	return ""
}

// StateResponse contains state data.
type StateResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Data          []byte                 `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` // State data
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *StateResponse) Reset() {
	*x = StateResponse{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[36]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *StateResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*StateResponse) ProtoMessage() {}

func (x *StateResponse) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[36]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use StateResponse.ProtoReflect.Descriptor instead.
func (*StateResponse) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{36}
}

func (x *StateResponse) GetData() []byte {
	if x != nil {
		return x.Data
	}
	return nil
}

// SetStateRequest sets state data for a key.
type SetStateRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Key           string                 `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`   // State key
	Data          []byte                 `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` // State data to store
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *SetStateRequest) Reset() {
	*x = SetStateRequest{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[37]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SetStateRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SetStateRequest) ProtoMessage() {}

func (x *SetStateRequest) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[37]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SetStateRequest.ProtoReflect.Descriptor instead.
func (*SetStateRequest) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{37}
}

func (x *SetStateRequest) GetKey() string {
	if x != nil {
		return x.Key
	}
	return ""
}

func (x *SetStateRequest) GetData() []byte {
	if x != nil {
		return x.Data
	}
	return nil
}

// GetBlockIsMinedRequest checks if a block is marked as mined.
type GetBlockIsMinedRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	BlockHash     []byte                 `protobuf:"bytes,1,opt,name=blockHash,proto3" json:"blockHash,omitempty"` // Hash of the block
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetBlockIsMinedRequest) Reset() {
	*x = GetBlockIsMinedRequest{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[38]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetBlockIsMinedRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetBlockIsMinedRequest) ProtoMessage() {}

func (x *GetBlockIsMinedRequest) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[38]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetBlockIsMinedRequest.ProtoReflect.Descriptor instead.
func (*GetBlockIsMinedRequest) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{38}
}

func (x *GetBlockIsMinedRequest) GetBlockHash() []byte {
	if x != nil {
		return x.BlockHash
	}
	return nil
}

// GetBlockIsMinedResponse indicates if a block is marked as mined.
type GetBlockIsMinedResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	IsMined       bool                   `protobuf:"varint,1,opt,name=isMined,proto3" json:"isMined,omitempty"` // True if the block is marked as mined
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetBlockIsMinedResponse) Reset() {
	*x = GetBlockIsMinedResponse{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[39]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetBlockIsMinedResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetBlockIsMinedResponse) ProtoMessage() {}

func (x *GetBlockIsMinedResponse) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[39]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetBlockIsMinedResponse.ProtoReflect.Descriptor instead.
func (*GetBlockIsMinedResponse) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{39}
}

func (x *GetBlockIsMinedResponse) GetIsMined() bool {
	if x != nil {
		return x.IsMined
	}
	return false
}

// GetLastNBlocksRequest requests the most recent blocks.
type GetLastNBlocksRequest struct {
	state          protoimpl.MessageState `protogen:"open.v1"`
	NumberOfBlocks int64                  `protobuf:"varint,1,opt,name=numberOfBlocks,proto3" json:"numberOfBlocks,omitempty"` // Number of blocks to retrieve
	IncludeOrphans bool                   `protobuf:"varint,2,opt,name=includeOrphans,proto3" json:"includeOrphans,omitempty"` // Whether to include orphaned blocks
	FromHeight     uint32                 `protobuf:"varint,3,opt,name=fromHeight,proto3" json:"fromHeight,omitempty"`         // Starting height
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

func (x *GetLastNBlocksRequest) Reset() {
	*x = GetLastNBlocksRequest{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[40]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetLastNBlocksRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetLastNBlocksRequest) ProtoMessage() {}

func (x *GetLastNBlocksRequest) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[40]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetLastNBlocksRequest.ProtoReflect.Descriptor instead.
func (*GetLastNBlocksRequest) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{40}
}

func (x *GetLastNBlocksRequest) GetNumberOfBlocks() int64 {
	if x != nil {
		return x.NumberOfBlocks
	}
	return 0
}

func (x *GetLastNBlocksRequest) GetIncludeOrphans() bool {
	if x != nil {
		return x.IncludeOrphans
	}
	return false
}

func (x *GetLastNBlocksRequest) GetFromHeight() uint32 {
	if x != nil {
		return x.FromHeight
	}
	return 0
}

// GetLastNBlocksResponse contains recent block information.
type GetLastNBlocksResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Blocks        []*model.BlockInfo     `protobuf:"bytes,1,rep,name=blocks,proto3" json:"blocks,omitempty"` // List of block information
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetLastNBlocksResponse) Reset() {
	*x = GetLastNBlocksResponse{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[41]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetLastNBlocksResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetLastNBlocksResponse) ProtoMessage() {}

func (x *GetLastNBlocksResponse) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[41]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetLastNBlocksResponse.ProtoReflect.Descriptor instead.
func (*GetLastNBlocksResponse) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{41}
}

func (x *GetLastNBlocksResponse) GetBlocks() []*model.BlockInfo {
	if x != nil {
		return x.Blocks
	}
	return nil
}

// GetLastNInvalidBlocksRequest requests the most recent invalid blocks.
type GetLastNInvalidBlocksRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	N             int64                  `protobuf:"varint,1,opt,name=n,proto3" json:"n,omitempty"` // Number of blocks to retrieve
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetLastNInvalidBlocksRequest) Reset() {
	*x = GetLastNInvalidBlocksRequest{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[42]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetLastNInvalidBlocksRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetLastNInvalidBlocksRequest) ProtoMessage() {}

func (x *GetLastNInvalidBlocksRequest) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[42]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetLastNInvalidBlocksRequest.ProtoReflect.Descriptor instead.
func (*GetLastNInvalidBlocksRequest) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{42}
}

func (x *GetLastNInvalidBlocksRequest) GetN() int64 {
	if x != nil {
		return x.N
	}
	return 0
}

// GetLastNInvalidBlocksResponse contains recent invalid block information.
type GetLastNInvalidBlocksResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Blocks        []*model.BlockInfo     `protobuf:"bytes,1,rep,name=blocks,proto3" json:"blocks,omitempty"` // List of block information
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetLastNInvalidBlocksResponse) Reset() {
	*x = GetLastNInvalidBlocksResponse{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[43]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetLastNInvalidBlocksResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetLastNInvalidBlocksResponse) ProtoMessage() {}

func (x *GetLastNInvalidBlocksResponse) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[43]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetLastNInvalidBlocksResponse.ProtoReflect.Descriptor instead.
func (*GetLastNInvalidBlocksResponse) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{43}
}

func (x *GetLastNInvalidBlocksResponse) GetBlocks() []*model.BlockInfo {
	if x != nil {
		return x.Blocks
	}
	return nil
}

// GetSuitableBlockRequest requests a suitable block for mining.
type GetSuitableBlockRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Hash          []byte                 `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"` // Reference block hash
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetSuitableBlockRequest) Reset() {
	*x = GetSuitableBlockRequest{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[44]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetSuitableBlockRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetSuitableBlockRequest) ProtoMessage() {}

func (x *GetSuitableBlockRequest) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[44]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetSuitableBlockRequest.ProtoReflect.Descriptor instead.
func (*GetSuitableBlockRequest) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{44}
}

func (x *GetSuitableBlockRequest) GetHash() []byte {
	if x != nil {
		return x.Hash
	}
	return nil
}

// GetSuitableBlockResponse contains a suitable block for mining.
type GetSuitableBlockResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Block         *model.SuitableBlock   `protobuf:"bytes,1,opt,name=block,proto3" json:"block,omitempty"` // Suitable block information
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetSuitableBlockResponse) Reset() {
	*x = GetSuitableBlockResponse{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[45]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetSuitableBlockResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetSuitableBlockResponse) ProtoMessage() {}

func (x *GetSuitableBlockResponse) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[45]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetSuitableBlockResponse.ProtoReflect.Descriptor instead.
func (*GetSuitableBlockResponse) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{45}
}

func (x *GetSuitableBlockResponse) GetBlock() *model.SuitableBlock {
	if x != nil {
		return x.Block
	}
	return nil
}

// GetHashOfAncestorBlockRequest requests an ancestor block hash.
type GetHashOfAncestorBlockRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Hash          []byte                 `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"`    // Starting block hash
	Depth         uint32                 `protobuf:"varint,2,opt,name=depth,proto3" json:"depth,omitempty"` // Number of generations to go back
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetHashOfAncestorBlockRequest) Reset() {
	*x = GetHashOfAncestorBlockRequest{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[46]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetHashOfAncestorBlockRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetHashOfAncestorBlockRequest) ProtoMessage() {}

func (x *GetHashOfAncestorBlockRequest) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[46]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetHashOfAncestorBlockRequest.ProtoReflect.Descriptor instead.
func (*GetHashOfAncestorBlockRequest) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{46}
}

func (x *GetHashOfAncestorBlockRequest) GetHash() []byte {
	if x != nil {
		return x.Hash
	}
	return nil
}

func (x *GetHashOfAncestorBlockRequest) GetDepth() uint32 {
	if x != nil {
		return x.Depth
	}
	return 0
}

// GetLatestBlockHeaderFromBlockLocatorRequest
type GetLatestBlockHeaderFromBlockLocatorRequest struct {
	state              protoimpl.MessageState `protogen:"open.v1"`
	BestBlockHash      []byte                 `protobuf:"bytes,1,opt,name=bestBlockHash,proto3" json:"bestBlockHash,omitempty"`           // Best block hash
	BlockLocatorHashes [][]byte               `protobuf:"bytes,2,rep,name=blockLocatorHashes,proto3" json:"blockLocatorHashes,omitempty"` // Block locator hashes
	unknownFields      protoimpl.UnknownFields
	sizeCache          protoimpl.SizeCache
}

func (x *GetLatestBlockHeaderFromBlockLocatorRequest) Reset() {
	*x = GetLatestBlockHeaderFromBlockLocatorRequest{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[47]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetLatestBlockHeaderFromBlockLocatorRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetLatestBlockHeaderFromBlockLocatorRequest) ProtoMessage() {}

func (x *GetLatestBlockHeaderFromBlockLocatorRequest) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[47]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetLatestBlockHeaderFromBlockLocatorRequest.ProtoReflect.Descriptor instead.
func (*GetLatestBlockHeaderFromBlockLocatorRequest) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{47}
}

func (x *GetLatestBlockHeaderFromBlockLocatorRequest) GetBestBlockHash() []byte {
	if x != nil {
		return x.BestBlockHash
	}
	return nil
}

func (x *GetLatestBlockHeaderFromBlockLocatorRequest) GetBlockLocatorHashes() [][]byte {
	if x != nil {
		return x.BlockLocatorHashes
	}
	return nil
}

// GetBlockHeadersFromOldestRequest retrieves block headers starting from the oldest block.
type GetBlockHeadersFromOldestRequest struct {
	state           protoimpl.MessageState `protogen:"open.v1"`
	ChainTipHash    []byte                 `protobuf:"bytes,1,opt,name=chainTipHash,proto3" json:"chainTipHash,omitempty"`        // Chain tip hash
	TargetHash      []byte                 `protobuf:"bytes,2,opt,name=targetHash,proto3" json:"targetHash,omitempty"`            // Target block hash
	NumberOfHeaders uint64                 `protobuf:"varint,3,opt,name=numberOfHeaders,proto3" json:"numberOfHeaders,omitempty"` // Maximum number of hashes to return
	unknownFields   protoimpl.UnknownFields
	sizeCache       protoimpl.SizeCache
}

func (x *GetBlockHeadersFromOldestRequest) Reset() {
	*x = GetBlockHeadersFromOldestRequest{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[48]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetBlockHeadersFromOldestRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetBlockHeadersFromOldestRequest) ProtoMessage() {}

func (x *GetBlockHeadersFromOldestRequest) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[48]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetBlockHeadersFromOldestRequest.ProtoReflect.Descriptor instead.
func (*GetBlockHeadersFromOldestRequest) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{48}
}

func (x *GetBlockHeadersFromOldestRequest) GetChainTipHash() []byte {
	if x != nil {
		return x.ChainTipHash
	}
	return nil
}

func (x *GetBlockHeadersFromOldestRequest) GetTargetHash() []byte {
	if x != nil {
		return x.TargetHash
	}
	return nil
}

func (x *GetBlockHeadersFromOldestRequest) GetNumberOfHeaders() uint64 {
	if x != nil {
		return x.NumberOfHeaders
	}
	return 0
}

// GetHashOfAncestorBlockResponse contains an ancestor block hash.
type GetHashOfAncestorBlockResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Hash          []byte                 `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"` // Ancestor block hash
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetHashOfAncestorBlockResponse) Reset() {
	*x = GetHashOfAncestorBlockResponse{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[49]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetHashOfAncestorBlockResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetHashOfAncestorBlockResponse) ProtoMessage() {}

func (x *GetHashOfAncestorBlockResponse) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[49]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetHashOfAncestorBlockResponse.ProtoReflect.Descriptor instead.
func (*GetHashOfAncestorBlockResponse) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{49}
}

func (x *GetHashOfAncestorBlockResponse) GetHash() []byte {
	if x != nil {
		return x.Hash
	}
	return nil
}

// GetNextWorkRequiredRequest requests difficulty calculation.
type GetNextWorkRequiredRequest struct {
	state             protoimpl.MessageState `protogen:"open.v1"`
	PreviousBlockHash []byte                 `protobuf:"bytes,1,opt,name=previousBlockHash,proto3" json:"previousBlockHash,omitempty"` // Reference block hash
	CurrentBlockTime  int64                  `protobuf:"varint,2,opt,name=currentBlockTime,proto3" json:"currentBlockTime,omitempty"`  // Current block time is only used for emaergency difficulty adjustment on testnet-type networks
	unknownFields     protoimpl.UnknownFields
	sizeCache         protoimpl.SizeCache
}

func (x *GetNextWorkRequiredRequest) Reset() {
	*x = GetNextWorkRequiredRequest{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[50]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetNextWorkRequiredRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetNextWorkRequiredRequest) ProtoMessage() {}

func (x *GetNextWorkRequiredRequest) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[50]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetNextWorkRequiredRequest.ProtoReflect.Descriptor instead.
func (*GetNextWorkRequiredRequest) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{50}
}

func (x *GetNextWorkRequiredRequest) GetPreviousBlockHash() []byte {
	if x != nil {
		return x.PreviousBlockHash
	}
	return nil
}

func (x *GetNextWorkRequiredRequest) GetCurrentBlockTime() int64 {
	if x != nil {
		return x.CurrentBlockTime
	}
	return 0
}

// GetNextWorkRequiredResponse contains difficulty target.
type GetNextWorkRequiredResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Bits          []byte                 `protobuf:"bytes,1,opt,name=bits,proto3" json:"bits,omitempty"` // Difficulty bits
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetNextWorkRequiredResponse) Reset() {
	*x = GetNextWorkRequiredResponse{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[51]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetNextWorkRequiredResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetNextWorkRequiredResponse) ProtoMessage() {}

func (x *GetNextWorkRequiredResponse) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[51]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetNextWorkRequiredResponse.ProtoReflect.Descriptor instead.
func (*GetNextWorkRequiredResponse) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{51}
}

func (x *GetNextWorkRequiredResponse) GetBits() []byte {
	if x != nil {
		return x.Bits
	}
	return nil
}

// SetBlockMinedSetRequest marks a block as mined.
type SetBlockMinedSetRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	BlockHash     []byte                 `protobuf:"bytes,1,opt,name=blockHash,proto3" json:"blockHash,omitempty"` // Hash of the mined block
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *SetBlockMinedSetRequest) Reset() {
	*x = SetBlockMinedSetRequest{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[52]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SetBlockMinedSetRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SetBlockMinedSetRequest) ProtoMessage() {}

func (x *SetBlockMinedSetRequest) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[52]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SetBlockMinedSetRequest.ProtoReflect.Descriptor instead.
func (*SetBlockMinedSetRequest) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{52}
}

func (x *SetBlockMinedSetRequest) GetBlockHash() []byte {
	if x != nil {
		return x.BlockHash
	}
	return nil
}

// GetBlocksMinedNotSetResponse contains blocks not marked as mined.
type GetBlocksMinedNotSetResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	BlockBytes    [][]byte               `protobuf:"bytes,1,rep,name=blockBytes,proto3" json:"blockBytes,omitempty"` // List of serialized blocks
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetBlocksMinedNotSetResponse) Reset() {
	*x = GetBlocksMinedNotSetResponse{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[53]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetBlocksMinedNotSetResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetBlocksMinedNotSetResponse) ProtoMessage() {}

func (x *GetBlocksMinedNotSetResponse) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[53]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetBlocksMinedNotSetResponse.ProtoReflect.Descriptor instead.
func (*GetBlocksMinedNotSetResponse) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{53}
}

func (x *GetBlocksMinedNotSetResponse) GetBlockBytes() [][]byte {
	if x != nil {
		return x.BlockBytes
	}
	return nil
}

// SetBlockSubtreesSetRequest marks block subtrees as set.
type SetBlockSubtreesSetRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	BlockHash     []byte                 `protobuf:"bytes,1,opt,name=blockHash,proto3" json:"blockHash,omitempty"` // Block hash
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *SetBlockSubtreesSetRequest) Reset() {
	*x = SetBlockSubtreesSetRequest{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[54]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SetBlockSubtreesSetRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SetBlockSubtreesSetRequest) ProtoMessage() {}

func (x *SetBlockSubtreesSetRequest) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[54]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SetBlockSubtreesSetRequest.ProtoReflect.Descriptor instead.
func (*SetBlockSubtreesSetRequest) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{54}
}

func (x *SetBlockSubtreesSetRequest) GetBlockHash() []byte {
	if x != nil {
		return x.BlockHash
	}
	return nil
}

// GetBlocksSubtreesNotSetResponse contains blocks with unset subtrees.
type GetBlocksSubtreesNotSetResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	BlockBytes    [][]byte               `protobuf:"bytes,1,rep,name=blockBytes,proto3" json:"blockBytes,omitempty"` // List of serialized blocks
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetBlocksSubtreesNotSetResponse) Reset() {
	*x = GetBlocksSubtreesNotSetResponse{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[55]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetBlocksSubtreesNotSetResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetBlocksSubtreesNotSetResponse) ProtoMessage() {}

func (x *GetBlocksSubtreesNotSetResponse) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[55]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetBlocksSubtreesNotSetResponse.ProtoReflect.Descriptor instead.
func (*GetBlocksSubtreesNotSetResponse) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{55}
}

func (x *GetBlocksSubtreesNotSetResponse) GetBlockBytes() [][]byte {
	if x != nil {
		return x.BlockBytes
	}
	return nil
}

// SetBlockProcessedAtRequest defines parameters for setting or clearing a block's processed_at timestamp.
type SetBlockProcessedAtRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Block hash to set or clear the processed_at timestamp for
	BlockHash []byte `protobuf:"bytes,1,opt,name=block_hash,json=blockHash,proto3" json:"block_hash,omitempty"`
	// If true, the processed_at timestamp will be cleared (set to NULL)
	// If false, the processed_at timestamp will be set to the current time
	Clear         bool `protobuf:"varint,2,opt,name=clear,proto3" json:"clear,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *SetBlockProcessedAtRequest) Reset() {
	*x = SetBlockProcessedAtRequest{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[56]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SetBlockProcessedAtRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SetBlockProcessedAtRequest) ProtoMessage() {}

func (x *SetBlockProcessedAtRequest) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[56]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SetBlockProcessedAtRequest.ProtoReflect.Descriptor instead.
func (*SetBlockProcessedAtRequest) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{56}
}

func (x *SetBlockProcessedAtRequest) GetBlockHash() []byte {
	if x != nil {
		return x.BlockHash
	}
	return nil
}

func (x *SetBlockProcessedAtRequest) GetClear() bool {
	if x != nil {
		return x.Clear
	}
	return false
}

// GetFSMStateResponse contains current FSM state.
type GetFSMStateResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	State         FSMStateType           `protobuf:"varint,1,opt,name=state,proto3,enum=blockchain_api.FSMStateType" json:"state,omitempty"` // Current FSM state
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetFSMStateResponse) Reset() {
	*x = GetFSMStateResponse{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[57]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetFSMStateResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetFSMStateResponse) ProtoMessage() {}

func (x *GetFSMStateResponse) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[57]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetFSMStateResponse.ProtoReflect.Descriptor instead.
func (*GetFSMStateResponse) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{57}
}

func (x *GetFSMStateResponse) GetState() FSMStateType {
	if x != nil {
		return x.State
	}
	return FSMStateType_IDLE
}

// WaitFSMToTransitionRequest specifies target FSM state.
type WaitFSMToTransitionRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	State         FSMStateType           `protobuf:"varint,1,opt,name=state,proto3,enum=blockchain_api.FSMStateType" json:"state,omitempty"` // Target FSM state
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *WaitFSMToTransitionRequest) Reset() {
	*x = WaitFSMToTransitionRequest{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[58]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *WaitFSMToTransitionRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*WaitFSMToTransitionRequest) ProtoMessage() {}

func (x *WaitFSMToTransitionRequest) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[58]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use WaitFSMToTransitionRequest.ProtoReflect.Descriptor instead.
func (*WaitFSMToTransitionRequest) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{58}
}

func (x *WaitFSMToTransitionRequest) GetState() FSMStateType {
	if x != nil {
		return x.State
	}
	return FSMStateType_IDLE
}

// SendFSMEventRequest triggers an FSM event.
type SendFSMEventRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Event         FSMEventType           `protobuf:"varint,1,opt,name=event,proto3,enum=blockchain_api.FSMEventType" json:"event,omitempty"` // FSM event to trigger
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *SendFSMEventRequest) Reset() {
	*x = SendFSMEventRequest{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[59]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SendFSMEventRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SendFSMEventRequest) ProtoMessage() {}

func (x *SendFSMEventRequest) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[59]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SendFSMEventRequest.ProtoReflect.Descriptor instead.
func (*SendFSMEventRequest) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{59}
}

func (x *SendFSMEventRequest) GetEvent() FSMEventType {
	if x != nil {
		return x.Event
	}
	return FSMEventType_STOP
}

// GetBlockLocatorRequest requests a block locator.
type GetBlockLocatorRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Hash          []byte                 `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"`      // Reference block hash
	Height        uint32                 `protobuf:"varint,2,opt,name=height,proto3" json:"height,omitempty"` // Reference block height
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetBlockLocatorRequest) Reset() {
	*x = GetBlockLocatorRequest{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[60]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetBlockLocatorRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetBlockLocatorRequest) ProtoMessage() {}

func (x *GetBlockLocatorRequest) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[60]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetBlockLocatorRequest.ProtoReflect.Descriptor instead.
func (*GetBlockLocatorRequest) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{60}
}

func (x *GetBlockLocatorRequest) GetHash() []byte {
	if x != nil {
		return x.Hash
	}
	return nil
}

func (x *GetBlockLocatorRequest) GetHeight() uint32 {
	if x != nil {
		return x.Height
	}
	return 0
}

// GetBlockLocatorResponse contains block locator data.
type GetBlockLocatorResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Locator       [][]byte               `protobuf:"bytes,1,rep,name=locator,proto3" json:"locator,omitempty"` // Block locator hashes
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetBlockLocatorResponse) Reset() {
	*x = GetBlockLocatorResponse{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[61]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetBlockLocatorResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetBlockLocatorResponse) ProtoMessage() {}

func (x *GetBlockLocatorResponse) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[61]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetBlockLocatorResponse.ProtoReflect.Descriptor instead.
func (*GetBlockLocatorResponse) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{61}
}

func (x *GetBlockLocatorResponse) GetLocator() [][]byte {
	if x != nil {
		return x.Locator
	}
	return nil
}

// LocateBlockHeadersRequest requests headers using a locator.
type LocateBlockHeadersRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Locator       [][]byte               `protobuf:"bytes,1,rep,name=locator,proto3" json:"locator,omitempty"`                       // Block locator
	HashStop      []byte                 `protobuf:"bytes,2,opt,name=hash_stop,json=hashStop,proto3" json:"hash_stop,omitempty"`     // Stop hash
	MaxHashes     uint32                 `protobuf:"varint,3,opt,name=max_hashes,json=maxHashes,proto3" json:"max_hashes,omitempty"` // Maximum number of hashes
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *LocateBlockHeadersRequest) Reset() {
	*x = LocateBlockHeadersRequest{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[62]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *LocateBlockHeadersRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*LocateBlockHeadersRequest) ProtoMessage() {}

func (x *LocateBlockHeadersRequest) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[62]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use LocateBlockHeadersRequest.ProtoReflect.Descriptor instead.
func (*LocateBlockHeadersRequest) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{62}
}

func (x *LocateBlockHeadersRequest) GetLocator() [][]byte {
	if x != nil {
		return x.Locator
	}
	return nil
}

func (x *LocateBlockHeadersRequest) GetHashStop() []byte {
	if x != nil {
		return x.HashStop
	}
	return nil
}

func (x *LocateBlockHeadersRequest) GetMaxHashes() uint32 {
	if x != nil {
		return x.MaxHashes
	}
	return 0
}

// LocateBlockHeadersResponse contains located block headers.
type LocateBlockHeadersResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	BlockHeaders  [][]byte               `protobuf:"bytes,1,rep,name=block_headers,json=blockHeaders,proto3" json:"block_headers,omitempty"` // List of block headers
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *LocateBlockHeadersResponse) Reset() {
	*x = LocateBlockHeadersResponse{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[63]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *LocateBlockHeadersResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*LocateBlockHeadersResponse) ProtoMessage() {}

func (x *LocateBlockHeadersResponse) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[63]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use LocateBlockHeadersResponse.ProtoReflect.Descriptor instead.
func (*LocateBlockHeadersResponse) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{63}
}

func (x *LocateBlockHeadersResponse) GetBlockHeaders() [][]byte {
	if x != nil {
		return x.BlockHeaders
	}
	return nil
}

// GetBestHeightAndTimeResponse contains chain tip information.
type GetBestHeightAndTimeResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Height        uint32                 `protobuf:"varint,1,opt,name=height,proto3" json:"height,omitempty"` // Best block height
	Time          uint32                 `protobuf:"varint,2,opt,name=time,proto3" json:"time,omitempty"`     // Median time
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetBestHeightAndTimeResponse) Reset() {
	*x = GetBestHeightAndTimeResponse{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[64]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetBestHeightAndTimeResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetBestHeightAndTimeResponse) ProtoMessage() {}

func (x *GetBestHeightAndTimeResponse) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[64]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetBestHeightAndTimeResponse.ProtoReflect.Descriptor instead.
func (*GetBestHeightAndTimeResponse) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{64}
}

func (x *GetBestHeightAndTimeResponse) GetHeight() uint32 {
	if x != nil {
		return x.Height
	}
	return 0
}

func (x *GetBestHeightAndTimeResponse) GetTime() uint32 {
	if x != nil {
		return x.Time
	}
	return 0
}

// GetChainTipsResponse contains information about all known tips in the block tree.
type GetChainTipsResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Tips          []*model.ChainTip      `protobuf:"bytes,1,rep,name=tips,proto3" json:"tips,omitempty"` // List of chain tips
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetChainTipsResponse) Reset() {
	*x = GetChainTipsResponse{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[65]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetChainTipsResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetChainTipsResponse) ProtoMessage() {}

func (x *GetChainTipsResponse) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[65]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetChainTipsResponse.ProtoReflect.Descriptor instead.
func (*GetChainTipsResponse) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{65}
}

func (x *GetChainTipsResponse) GetTips() []*model.ChainTip {
	if x != nil {
		return x.Tips
	}
	return nil
}

// ReportPeerFailureRequest reports a peer download failure to the blockchain service.
type ReportPeerFailureRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Hash          []byte                 `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"`                                  // Hash of the block/subtree being processed
	PeerId        string                 `protobuf:"bytes,2,opt,name=peer_id,json=peerId,proto3" json:"peer_id,omitempty"`                // Identifier of the failing peer
	FailureType   string                 `protobuf:"bytes,3,opt,name=failure_type,json=failureType,proto3" json:"failure_type,omitempty"` // Type of failure (e.g., "catchup", "subtree", "block")
	Reason        string                 `protobuf:"bytes,4,opt,name=reason,proto3" json:"reason,omitempty"`                              // Description of the failure
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ReportPeerFailureRequest) Reset() {
	*x = ReportPeerFailureRequest{}
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[66]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ReportPeerFailureRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ReportPeerFailureRequest) ProtoMessage() {}

func (x *ReportPeerFailureRequest) ProtoReflect() protoreflect.Message {
	mi := &file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes[66]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ReportPeerFailureRequest.ProtoReflect.Descriptor instead.
func (*ReportPeerFailureRequest) Descriptor() ([]byte, []int) {
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP(), []int{66}
}

func (x *ReportPeerFailureRequest) GetHash() []byte {
	if x != nil {
		return x.Hash
	}
	return nil
}

func (x *ReportPeerFailureRequest) GetPeerId() string {
	if x != nil {
		return x.PeerId
	}
	return ""
}

func (x *ReportPeerFailureRequest) GetFailureType() string {
	if x != nil {
		return x.FailureType
	}
	return ""
}

func (x *ReportPeerFailureRequest) GetReason() string {
	if x != nil {
		return x.Reason
	}
	return ""
}

var File_services_blockchain_blockchain_api_blockchain_api_proto protoreflect.FileDescriptor

const file_services_blockchain_blockchain_api_blockchain_api_proto_rawDesc = "" +
	"\n" +
	"7services/blockchain/blockchain_api/blockchain_api.proto\x12\x0eblockchain_api\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x11model/model.proto\"t\n" +
	"\x0eHealthResponse\x12\x0e\n" +
	"\x02ok\x18\x01 \x01(\bR\x02ok\x12\x18\n" +
	"\adetails\x18\x02 \x01(\tR\adetails\x128\n" +
	"\ttimestamp\x18\x03 \x01(\v2\x1a.google.protobuf.TimestampR\ttimestamp\"\x8f\x03\n" +
	"\x0fAddBlockRequest\x12\x16\n" +
	"\x06header\x18\x01 \x01(\fR\x06header\x12%\n" +
	"\x0esubtree_hashes\x18\x02 \x03(\fR\rsubtreeHashes\x12\x1f\n" +
	"\vcoinbase_tx\x18\x03 \x01(\fR\n" +
	"coinbaseTx\x12+\n" +
	"\x11transaction_count\x18\x04 \x01(\x04R\x10transactionCount\x12\"\n" +
	"\rsize_in_bytes\x18\x05 \x01(\x04R\vsizeInBytes\x12\x1a\n" +
	"\bexternal\x18\x06 \x01(\bR\bexternal\x12\x17\n" +
	"\apeer_id\x18\a \x01(\tR\x06peerId\x12&\n" +
	"\x0eoptionMinedSet\x18\b \x01(\bR\x0eoptionMinedSet\x12,\n" +
	"\x11optionSubtreesSet\x18\t \x01(\bR\x11optionSubtreesSet\x12$\n" +
	"\roptionInvalid\x18\n" +
	" \x01(\bR\roptionInvalid\x12\x1a\n" +
	"\boptionID\x18\v \x01(\x04R\boptionID\"%\n" +
	"\x0fGetBlockRequest\x12\x12\n" +
	"\x04hash\x18\x01 \x01(\fR\x04hash\"<\n" +
	"\x10GetBlocksRequest\x12\x12\n" +
	"\x04hash\x18\x01 \x01(\fR\x04hash\x12\x14\n" +
	"\x05count\x18\x02 \x01(\rR\x05count\"+\n" +
	"\x11GetBlocksResponse\x12\x16\n" +
	"\x06blocks\x18\x01 \x03(\fR\x06blocks\"1\n" +
	"\x17GetBlockByHeightRequest\x12\x16\n" +
	"\x06height\x18\x01 \x01(\rR\x06height\"%\n" +
	"\x13GetBlockByIDRequest\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\x04R\x02id\"<\n" +
	"\x16GetNextBlockIDResponse\x12\"\n" +
	"\rnext_block_id\x18\x01 \x01(\x04R\vnextBlockId\"[\n" +
	"\"GetBlockInChainByHeightHashRequest\x12\x16\n" +
	"\x06height\x18\x01 \x01(\rR\x06height\x12\x1d\n" +
	"\n" +
	"start_hash\x18\x02 \x01(\fR\tstartHash\"\xeb\x01\n" +
	"\x10GetBlockResponse\x12\x16\n" +
	"\x06header\x18\x01 \x01(\fR\x06header\x12\x16\n" +
	"\x06height\x18\x02 \x01(\rR\x06height\x12\x1f\n" +
	"\vcoinbase_tx\x18\x03 \x01(\fR\n" +
	"coinbaseTx\x12+\n" +
	"\x11transaction_count\x18\x04 \x01(\x04R\x10transactionCount\x12%\n" +
	"\x0esubtree_hashes\x18\x05 \x03(\fR\rsubtreeHashes\x12\"\n" +
	"\rsize_in_bytes\x18\x06 \x01(\x04R\vsizeInBytes\x12\x0e\n" +
	"\x02id\x18\a \x01(\rR\x02id\"@\n" +
	"\x14GetFullBlockResponse\x12(\n" +
	"\x10full_block_bytes\x18\x01 \x01(\fR\x0efullBlockBytes\"?\n" +
	"\x18GetBlockGraphDataRequest\x12#\n" +
	"\rperiod_millis\x18\x01 \x01(\x04R\fperiodMillis\"0\n" +
	"\x16GetBlockExistsResponse\x12\x16\n" +
	"\x06exists\x18\x01 \x01(\bR\x06exists\"4\n" +
	"\x14GetMedianTimeRequest\x12\x1c\n" +
	"\tblockHash\x18\x01 \x01(\fR\tblockHash\"`\n" +
	"\x16GetBlockHeadersRequest\x12\x1c\n" +
	"\tstartHash\x18\x01 \x01(\fR\tstartHash\x12(\n" +
	"\x0fnumberOfHeaders\x18\x02 \x01(\x04R\x0fnumberOfHeaders\"\x98\x01\n" +
	"&GetBlockHeadersToCommonAncestorRequest\x12\x1e\n" +
	"\n" +
	"targetHash\x18\x01 \x01(\fR\n" +
	"targetHash\x12.\n" +
	"\x12blockLocatorHashes\x18\x02 \x03(\fR\x12blockLocatorHashes\x12\x1e\n" +
	"\n" +
	"maxHeaders\x18\x03 \x01(\rR\n" +
	"maxHeaders\"\x9a\x01\n" +
	"(GetBlockHeadersFromCommonAncestorRequest\x12\x1e\n" +
	"\n" +
	"targetHash\x18\x01 \x01(\fR\n" +
	"targetHash\x12.\n" +
	"\x12blockLocatorHashes\x18\x02 \x03(\fR\x12blockLocatorHashes\x12\x1e\n" +
	"\n" +
	"maxHeaders\x18\x03 \x01(\rR\n" +
	"maxHeaders\"S\n" +
	"\x17GetBlockHeadersResponse\x12\"\n" +
	"\fblockHeaders\x18\x01 \x03(\fR\fblockHeaders\x12\x14\n" +
	"\x05metas\x18\x02 \x03(\fR\x05metas\"X\n" +
	"\x1eGetBlockHeadersFromTillRequest\x12\x1c\n" +
	"\tstartHash\x18\x01 \x01(\fR\tstartHash\x12\x18\n" +
	"\aendHash\x18\x02 \x01(\fR\aendHash\"Z\n" +
	" GetBlockHeadersFromHeightRequest\x12 \n" +
	"\vstartHeight\x18\x01 \x01(\rR\vstartHeight\x12\x14\n" +
	"\x05limit\x18\x02 \x01(\rR\x05limit\"]\n" +
	"!GetBlockHeadersFromHeightResponse\x12\"\n" +
	"\fblockHeaders\x18\x01 \x03(\fR\fblockHeaders\x12\x14\n" +
	"\x05metas\x18\x02 \x03(\fR\x05metas\"`\n" +
	"\x1eGetBlockHeadersByHeightRequest\x12 \n" +
	"\vstartHeight\x18\x01 \x01(\rR\vstartHeight\x12\x1c\n" +
	"\tendHeight\x18\x02 \x01(\rR\tendHeight\"[\n" +
	"\x1fGetBlockHeadersByHeightResponse\x12\"\n" +
	"\fblockHeaders\x18\x01 \x03(\fR\fblockHeaders\x12\x14\n" +
	"\x05metas\x18\x02 \x03(\fR\x05metas\"-\n" +
	"\x19GetBlockHeaderIDsResponse\x12\x10\n" +
	"\x03ids\x18\x01 \x03(\rR\x03ids\"C\n" +
	"\x15GetMedianTimeResponse\x12*\n" +
	"\x11block_header_time\x18\x01 \x03(\rR\x0fblockHeaderTime\"5\n" +
	"\x15GetBlockHeaderRequest\x12\x1c\n" +
	"\tblockHash\x18\x01 \x01(\fR\tblockHash\"=\n" +
	"\x1fCheckBlockIsCurrentChainRequest\x12\x1a\n" +
	"\bblockIDs\x18\x01 \x03(\rR\bblockIDs\"6\n" +
	"\x16InvalidateBlockRequest\x12\x1c\n" +
	"\tblockHash\x18\x01 \x01(\fR\tblockHash\"G\n" +
	"\x17InvalidateBlockResponse\x12,\n" +
	"\x11invalidatedBlocks\x18\x01 \x03(\fR\x11invalidatedBlocks\"6\n" +
	"\x16RevalidateBlockRequest\x12\x1c\n" +
	"\tblockHash\x18\x01 \x01(\fR\tblockHash\"\x86\x03\n" +
	"\x16GetBlockHeaderResponse\x12 \n" +
	"\vblockHeader\x18\x01 \x01(\fR\vblockHeader\x12\x0e\n" +
	"\x02id\x18\x02 \x01(\rR\x02id\x12\x16\n" +
	"\x06height\x18\x03 \x01(\rR\x06height\x12\x19\n" +
	"\btx_count\x18\x04 \x01(\x04R\atxCount\x12\"\n" +
	"\rsize_in_bytes\x18\x05 \x01(\x04R\vsizeInBytes\x12\x14\n" +
	"\x05miner\x18\x06 \x01(\tR\x05miner\x12\x17\n" +
	"\apeer_id\x18\a \x01(\tR\x06peerId\x12\x1d\n" +
	"\n" +
	"block_time\x18\b \x01(\rR\tblockTime\x12\x1c\n" +
	"\ttimestamp\x18\t \x01(\rR\ttimestamp\x12\x1d\n" +
	"\n" +
	"chain_work\x18\n" +
	" \x01(\fR\tchainWork\x12\x1b\n" +
	"\tmined_set\x18\v \x01(\bR\bminedSet\x12!\n" +
	"\fsubtrees_set\x18\f \x01(\bR\vsubtreesSet\x12\x18\n" +
	"\ainvalid\x18\r \x01(\bR\ainvalid\"V\n" +
	" CheckBlockIsCurrentChainResponse\x122\n" +
	"\x14isPartOfCurrentChain\x18\x01 \x01(\bR\x14isPartOfCurrentChain\"*\n" +
	"\x10SubscribeRequest\x12\x16\n" +
	"\x06source\x18\x01 \x01(\tR\x06source\"\xac\x01\n" +
	"\fNotification\x12+\n" +
	"\x04type\x18\x01 \x01(\x0e2\x17.model.NotificationTypeR\x04type\x12\x12\n" +
	"\x04hash\x18\x02 \x01(\fR\x04hash\x12\x19\n" +
	"\bbase_URL\x18\x03 \x01(\tR\abaseURL\x12@\n" +
	"\bmetadata\x18\x04 \x01(\v2$.blockchain_api.NotificationMetadataR\bmetadata\"\xa3\x01\n" +
	"\x14NotificationMetadata\x12N\n" +
	"\bmetadata\x18\x01 \x03(\v22.blockchain_api.NotificationMetadata.MetadataEntryR\bmetadata\x1a;\n" +
	"\rMetadataEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"#\n" +
	"\x0fGetStateRequest\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\"#\n" +
	"\rStateResponse\x12\x12\n" +
	"\x04data\x18\x01 \x01(\fR\x04data\"7\n" +
	"\x0fSetStateRequest\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x12\n" +
	"\x04data\x18\x02 \x01(\fR\x04data\"6\n" +
	"\x16GetBlockIsMinedRequest\x12\x1c\n" +
	"\tblockHash\x18\x01 \x01(\fR\tblockHash\"3\n" +
	"\x17GetBlockIsMinedResponse\x12\x18\n" +
	"\aisMined\x18\x01 \x01(\bR\aisMined\"\x87\x01\n" +
	"\x15GetLastNBlocksRequest\x12&\n" +
	"\x0enumberOfBlocks\x18\x01 \x01(\x03R\x0enumberOfBlocks\x12&\n" +
	"\x0eincludeOrphans\x18\x02 \x01(\bR\x0eincludeOrphans\x12\x1e\n" +
	"\n" +
	"fromHeight\x18\x03 \x01(\rR\n" +
	"fromHeight\"B\n" +
	"\x16GetLastNBlocksResponse\x12(\n" +
	"\x06blocks\x18\x01 \x03(\v2\x10.model.BlockInfoR\x06blocks\",\n" +
	"\x1cGetLastNInvalidBlocksRequest\x12\f\n" +
	"\x01n\x18\x01 \x01(\x03R\x01n\"I\n" +
	"\x1dGetLastNInvalidBlocksResponse\x12(\n" +
	"\x06blocks\x18\x01 \x03(\v2\x10.model.BlockInfoR\x06blocks\"-\n" +
	"\x17GetSuitableBlockRequest\x12\x12\n" +
	"\x04hash\x18\x01 \x01(\fR\x04hash\"F\n" +
	"\x18GetSuitableBlockResponse\x12*\n" +
	"\x05block\x18\x01 \x01(\v2\x14.model.SuitableBlockR\x05block\"I\n" +
	"\x1dGetHashOfAncestorBlockRequest\x12\x12\n" +
	"\x04hash\x18\x01 \x01(\fR\x04hash\x12\x14\n" +
	"\x05depth\x18\x02 \x01(\rR\x05depth\"\x83\x01\n" +
	"+GetLatestBlockHeaderFromBlockLocatorRequest\x12$\n" +
	"\rbestBlockHash\x18\x01 \x01(\fR\rbestBlockHash\x12.\n" +
	"\x12blockLocatorHashes\x18\x02 \x03(\fR\x12blockLocatorHashes\"\x90\x01\n" +
	" GetBlockHeadersFromOldestRequest\x12\"\n" +
	"\fchainTipHash\x18\x01 \x01(\fR\fchainTipHash\x12\x1e\n" +
	"\n" +
	"targetHash\x18\x02 \x01(\fR\n" +
	"targetHash\x12(\n" +
	"\x0fnumberOfHeaders\x18\x03 \x01(\x04R\x0fnumberOfHeaders\"4\n" +
	"\x1eGetHashOfAncestorBlockResponse\x12\x12\n" +
	"\x04hash\x18\x01 \x01(\fR\x04hash\"v\n" +
	"\x1aGetNextWorkRequiredRequest\x12,\n" +
	"\x11previousBlockHash\x18\x01 \x01(\fR\x11previousBlockHash\x12*\n" +
	"\x10currentBlockTime\x18\x02 \x01(\x03R\x10currentBlockTime\"1\n" +
	"\x1bGetNextWorkRequiredResponse\x12\x12\n" +
	"\x04bits\x18\x01 \x01(\fR\x04bits\"7\n" +
	"\x17SetBlockMinedSetRequest\x12\x1c\n" +
	"\tblockHash\x18\x01 \x01(\fR\tblockHash\">\n" +
	"\x1cGetBlocksMinedNotSetResponse\x12\x1e\n" +
	"\n" +
	"blockBytes\x18\x01 \x03(\fR\n" +
	"blockBytes\":\n" +
	"\x1aSetBlockSubtreesSetRequest\x12\x1c\n" +
	"\tblockHash\x18\x01 \x01(\fR\tblockHash\"A\n" +
	"\x1fGetBlocksSubtreesNotSetResponse\x12\x1e\n" +
	"\n" +
	"blockBytes\x18\x01 \x03(\fR\n" +
	"blockBytes\"Q\n" +
	"\x1aSetBlockProcessedAtRequest\x12\x1d\n" +
	"\n" +
	"block_hash\x18\x01 \x01(\fR\tblockHash\x12\x14\n" +
	"\x05clear\x18\x02 \x01(\bR\x05clear\"I\n" +
	"\x13GetFSMStateResponse\x122\n" +
	"\x05state\x18\x01 \x01(\x0e2\x1c.blockchain_api.FSMStateTypeR\x05state\"P\n" +
	"\x1aWaitFSMToTransitionRequest\x122\n" +
	"\x05state\x18\x01 \x01(\x0e2\x1c.blockchain_api.FSMStateTypeR\x05state\"I\n" +
	"\x13SendFSMEventRequest\x122\n" +
	"\x05event\x18\x01 \x01(\x0e2\x1c.blockchain_api.FSMEventTypeR\x05event\"D\n" +
	"\x16GetBlockLocatorRequest\x12\x12\n" +
	"\x04hash\x18\x01 \x01(\fR\x04hash\x12\x16\n" +
	"\x06height\x18\x02 \x01(\rR\x06height\"3\n" +
	"\x17GetBlockLocatorResponse\x12\x18\n" +
	"\alocator\x18\x01 \x03(\fR\alocator\"q\n" +
	"\x19LocateBlockHeadersRequest\x12\x18\n" +
	"\alocator\x18\x01 \x03(\fR\alocator\x12\x1b\n" +
	"\thash_stop\x18\x02 \x01(\fR\bhashStop\x12\x1d\n" +
	"\n" +
	"max_hashes\x18\x03 \x01(\rR\tmaxHashes\"A\n" +
	"\x1aLocateBlockHeadersResponse\x12#\n" +
	"\rblock_headers\x18\x01 \x03(\fR\fblockHeaders\"J\n" +
	"\x1cGetBestHeightAndTimeResponse\x12\x16\n" +
	"\x06height\x18\x01 \x01(\rR\x06height\x12\x12\n" +
	"\x04time\x18\x02 \x01(\rR\x04time\";\n" +
	"\x14GetChainTipsResponse\x12#\n" +
	"\x04tips\x18\x01 \x03(\v2\x0f.model.ChainTipR\x04tips\"\x82\x01\n" +
	"\x18ReportPeerFailureRequest\x12\x12\n" +
	"\x04hash\x18\x01 \x01(\fR\x04hash\x12\x17\n" +
	"\apeer_id\x18\x02 \x01(\tR\x06peerId\x12!\n" +
	"\ffailure_type\x18\x03 \x01(\tR\vfailureType\x12\x16\n" +
	"\x06reason\x18\x04 \x01(\tR\x06reason*D\n" +
	"\fFSMEventType\x12\b\n" +
	"\x04STOP\x10\x00\x12\a\n" +
	"\x03RUN\x10\x01\x12\x11\n" +
	"\rCATCHUPBLOCKS\x10\x02\x12\x0e\n" +
	"\n" +
	"LEGACYSYNC\x10\x03*L\n" +
	"\fFSMStateType\x12\b\n" +
	"\x04IDLE\x10\x00\x12\v\n" +
	"\aRUNNING\x10\x01\x12\x12\n" +
	"\x0eCATCHINGBLOCKS\x10\x02\x12\x11\n" +
	"\rLEGACYSYNCING\x10\x032\x8b'\n" +
	"\rBlockchainAPI\x12F\n" +
	"\n" +
	"HealthGRPC\x12\x16.google.protobuf.Empty\x1a\x1e.blockchain_api.HealthResponse\"\x00\x12E\n" +
	"\bAddBlock\x12\x1f.blockchain_api.AddBlockRequest\x1a\x16.google.protobuf.Empty\"\x00\x12O\n" +
	"\bGetBlock\x12\x1f.blockchain_api.GetBlockRequest\x1a .blockchain_api.GetBlockResponse\"\x00\x12R\n" +
	"\tGetBlocks\x12 .blockchain_api.GetBlocksRequest\x1a!.blockchain_api.GetBlocksResponse\"\x00\x12_\n" +
	"\x10GetBlockByHeight\x12'.blockchain_api.GetBlockByHeightRequest\x1a .blockchain_api.GetBlockResponse\"\x00\x12W\n" +
	"\fGetBlockByID\x12#.blockchain_api.GetBlockByIDRequest\x1a .blockchain_api.GetBlockResponse\"\x00\x12R\n" +
	"\x0eGetNextBlockID\x12\x16.google.protobuf.Empty\x1a&.blockchain_api.GetNextBlockIDResponse\"\x00\x12<\n" +
	"\rGetBlockStats\x12\x16.google.protobuf.Empty\x1a\x11.model.BlockStats\"\x00\x12W\n" +
	"\x11GetBlockGraphData\x12(.blockchain_api.GetBlockGraphDataRequest\x1a\x16.model.BlockDataPoints\"\x00\x12a\n" +
	"\x0eGetLastNBlocks\x12%.blockchain_api.GetLastNBlocksRequest\x1a&.blockchain_api.GetLastNBlocksResponse\"\x00\x12v\n" +
	"\x15GetLastNInvalidBlocks\x12,.blockchain_api.GetLastNInvalidBlocksRequest\x1a-.blockchain_api.GetLastNInvalidBlocksResponse\"\x00\x12g\n" +
	"\x10GetSuitableBlock\x12'.blockchain_api.GetSuitableBlockRequest\x1a(.blockchain_api.GetSuitableBlockResponse\"\x00\x12y\n" +
	"\x16GetHashOfAncestorBlock\x12-.blockchain_api.GetHashOfAncestorBlockRequest\x1a..blockchain_api.GetHashOfAncestorBlockResponse\"\x00\x12\x8d\x01\n" +
	"$GetLatestBlockHeaderFromBlockLocator\x12;.blockchain_api.GetLatestBlockHeaderFromBlockLocatorRequest\x1a&.blockchain_api.GetBlockHeaderResponse\"\x00\x12x\n" +
	"\x19GetBlockHeadersFromOldest\x120.blockchain_api.GetBlockHeadersFromOldestRequest\x1a'.blockchain_api.GetBlockHeadersResponse\"\x00\x12p\n" +
	"\x13GetNextWorkRequired\x12*.blockchain_api.GetNextWorkRequiredRequest\x1a+.blockchain_api.GetNextWorkRequiredResponse\"\x00\x12[\n" +
	"\x0eGetBlockExists\x12\x1f.blockchain_api.GetBlockRequest\x1a&.blockchain_api.GetBlockExistsResponse\"\x00\x12d\n" +
	"\x0fGetBlockHeaders\x12&.blockchain_api.GetBlockHeadersRequest\x1a'.blockchain_api.GetBlockHeadersResponse\"\x00\x12\x84\x01\n" +
	"\x1fGetBlockHeadersToCommonAncestor\x126.blockchain_api.GetBlockHeadersToCommonAncestorRequest\x1a'.blockchain_api.GetBlockHeadersResponse\"\x00\x12\x88\x01\n" +
	"!GetBlockHeadersFromCommonAncestor\x128.blockchain_api.GetBlockHeadersFromCommonAncestorRequest\x1a'.blockchain_api.GetBlockHeadersResponse\"\x00\x12t\n" +
	"\x17GetBlockHeadersFromTill\x12..blockchain_api.GetBlockHeadersFromTillRequest\x1a'.blockchain_api.GetBlockHeadersResponse\"\x00\x12\x82\x01\n" +
	"\x19GetBlockHeadersFromHeight\x120.blockchain_api.GetBlockHeadersFromHeightRequest\x1a1.blockchain_api.GetBlockHeadersFromHeightResponse\"\x00\x12|\n" +
	"\x17GetBlockHeadersByHeight\x12..blockchain_api.GetBlockHeadersByHeightRequest\x1a/.blockchain_api.GetBlockHeadersByHeightResponse\"\x00\x12h\n" +
	"\x11GetBlockHeaderIDs\x12&.blockchain_api.GetBlockHeadersRequest\x1a).blockchain_api.GetBlockHeaderIDsResponse\"\x00\x12V\n" +
	"\x12GetBestBlockHeader\x12\x16.google.protobuf.Empty\x1a&.blockchain_api.GetBlockHeaderResponse\"\x00\x12\x81\x01\n" +
	"\x1aCheckBlockIsInCurrentChain\x12/.blockchain_api.CheckBlockIsCurrentChainRequest\x1a0.blockchain_api.CheckBlockIsCurrentChainResponse\"\x00\x12N\n" +
	"\fGetChainTips\x12\x16.google.protobuf.Empty\x1a$.blockchain_api.GetChainTipsResponse\"\x00\x12a\n" +
	"\x0eGetBlockHeader\x12%.blockchain_api.GetBlockHeaderRequest\x1a&.blockchain_api.GetBlockHeaderResponse\"\x00\x12d\n" +
	"\x0fInvalidateBlock\x12&.blockchain_api.InvalidateBlockRequest\x1a'.blockchain_api.InvalidateBlockResponse\"\x00\x12S\n" +
	"\x0fRevalidateBlock\x12&.blockchain_api.RevalidateBlockRequest\x1a\x16.google.protobuf.Empty\"\x00\x12O\n" +
	"\tSubscribe\x12 .blockchain_api.SubscribeRequest\x1a\x1c.blockchain_api.Notification\"\x000\x01\x12J\n" +
	"\x10SendNotification\x12\x1c.blockchain_api.Notification\x1a\x16.google.protobuf.Empty\"\x00\x12L\n" +
	"\bGetState\x12\x1f.blockchain_api.GetStateRequest\x1a\x1d.blockchain_api.StateResponse\"\x00\x12E\n" +
	"\bSetState\x12\x1f.blockchain_api.SetStateRequest\x1a\x16.google.protobuf.Empty\"\x00\x12d\n" +
	"\x0fGetBlockIsMined\x12&.blockchain_api.GetBlockIsMinedRequest\x1a'.blockchain_api.GetBlockIsMinedResponse\"\x00\x12U\n" +
	"\x10SetBlockMinedSet\x12'.blockchain_api.SetBlockMinedSetRequest\x1a\x16.google.protobuf.Empty\"\x00\x12^\n" +
	"\x14GetBlocksMinedNotSet\x12\x16.google.protobuf.Empty\x1a,.blockchain_api.GetBlocksMinedNotSetResponse\"\x00\x12[\n" +
	"\x13SetBlockSubtreesSet\x12*.blockchain_api.SetBlockSubtreesSetRequest\x1a\x16.google.protobuf.Empty\"\x00\x12d\n" +
	"\x17GetBlocksSubtreesNotSet\x12\x16.google.protobuf.Empty\x1a/.blockchain_api.GetBlocksSubtreesNotSetResponse\"\x00\x12[\n" +
	"\x13SetBlockProcessedAt\x12*.blockchain_api.SetBlockProcessedAtRequest\x1a\x16.google.protobuf.Empty\"\x00\x12Z\n" +
	"\fSendFSMEvent\x12#.blockchain_api.SendFSMEventRequest\x1a#.blockchain_api.GetFSMStateResponse\"\x00\x12S\n" +
	"\x12GetFSMCurrentState\x12\x16.google.protobuf.Empty\x1a#.blockchain_api.GetFSMStateResponse\"\x00\x12g\n" +
	"\x1fWaitFSMToTransitionToGivenState\x12*.blockchain_api.WaitFSMToTransitionRequest\x1a\x16.google.protobuf.Empty\"\x00\x12W\n" +
	"#WaitUntilFSMTransitionFromIdleState\x12\x16.google.protobuf.Empty\x1a\x16.google.protobuf.Empty\"\x00\x127\n" +
	"\x03Run\x12\x16.google.protobuf.Empty\x1a\x16.google.protobuf.Empty\"\x00\x12A\n" +
	"\rCatchUpBlocks\x12\x16.google.protobuf.Empty\x1a\x16.google.protobuf.Empty\"\x00\x12>\n" +
	"\n" +
	"LegacySync\x12\x16.google.protobuf.Empty\x1a\x16.google.protobuf.Empty\"\x00\x128\n" +
	"\x04Idle\x12\x16.google.protobuf.Empty\x1a\x16.google.protobuf.Empty\"\x00\x12W\n" +
	"\x11ReportPeerFailure\x12(.blockchain_api.ReportPeerFailureRequest\x1a\x16.google.protobuf.Empty\"\x00\x12d\n" +
	"\x0fGetBlockLocator\x12&.blockchain_api.GetBlockLocatorRequest\x1a'.blockchain_api.GetBlockLocatorResponse\"\x00\x12m\n" +
	"\x12LocateBlockHeaders\x12).blockchain_api.LocateBlockHeadersRequest\x1a*.blockchain_api.LocateBlockHeadersResponse\"\x00\x12^\n" +
	"\x14GetBestHeightAndTime\x12\x16.google.protobuf.Empty\x1a,.blockchain_api.GetBestHeightAndTimeResponse\"\x00B\x13Z\x11./;blockchain_apib\x06proto3"

var (
	file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescOnce sync.Once
	file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescData []byte
)

func file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescGZIP() []byte {
	file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescOnce.Do(func() {
		file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_services_blockchain_blockchain_api_blockchain_api_proto_rawDesc), len(file_services_blockchain_blockchain_api_blockchain_api_proto_rawDesc)))
	})
	return file_services_blockchain_blockchain_api_blockchain_api_proto_rawDescData
}

var file_services_blockchain_blockchain_api_blockchain_api_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
var file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes = make([]protoimpl.MessageInfo, 68)
var file_services_blockchain_blockchain_api_blockchain_api_proto_goTypes = []any{
	(FSMEventType)(0),                                   // 0: blockchain_api.FSMEventType
	(FSMStateType)(0),                                   // 1: blockchain_api.FSMStateType
	(*HealthResponse)(nil),                              // 2: blockchain_api.HealthResponse
	(*AddBlockRequest)(nil),                             // 3: blockchain_api.AddBlockRequest
	(*GetBlockRequest)(nil),                             // 4: blockchain_api.GetBlockRequest
	(*GetBlocksRequest)(nil),                            // 5: blockchain_api.GetBlocksRequest
	(*GetBlocksResponse)(nil),                           // 6: blockchain_api.GetBlocksResponse
	(*GetBlockByHeightRequest)(nil),                     // 7: blockchain_api.GetBlockByHeightRequest
	(*GetBlockByIDRequest)(nil),                         // 8: blockchain_api.GetBlockByIDRequest
	(*GetNextBlockIDResponse)(nil),                      // 9: blockchain_api.GetNextBlockIDResponse
	(*GetBlockInChainByHeightHashRequest)(nil),          // 10: blockchain_api.GetBlockInChainByHeightHashRequest
	(*GetBlockResponse)(nil),                            // 11: blockchain_api.GetBlockResponse
	(*GetFullBlockResponse)(nil),                        // 12: blockchain_api.GetFullBlockResponse
	(*GetBlockGraphDataRequest)(nil),                    // 13: blockchain_api.GetBlockGraphDataRequest
	(*GetBlockExistsResponse)(nil),                      // 14: blockchain_api.GetBlockExistsResponse
	(*GetMedianTimeRequest)(nil),                        // 15: blockchain_api.GetMedianTimeRequest
	(*GetBlockHeadersRequest)(nil),                      // 16: blockchain_api.GetBlockHeadersRequest
	(*GetBlockHeadersToCommonAncestorRequest)(nil),      // 17: blockchain_api.GetBlockHeadersToCommonAncestorRequest
	(*GetBlockHeadersFromCommonAncestorRequest)(nil),    // 18: blockchain_api.GetBlockHeadersFromCommonAncestorRequest
	(*GetBlockHeadersResponse)(nil),                     // 19: blockchain_api.GetBlockHeadersResponse
	(*GetBlockHeadersFromTillRequest)(nil),              // 20: blockchain_api.GetBlockHeadersFromTillRequest
	(*GetBlockHeadersFromHeightRequest)(nil),            // 21: blockchain_api.GetBlockHeadersFromHeightRequest
	(*GetBlockHeadersFromHeightResponse)(nil),           // 22: blockchain_api.GetBlockHeadersFromHeightResponse
	(*GetBlockHeadersByHeightRequest)(nil),              // 23: blockchain_api.GetBlockHeadersByHeightRequest
	(*GetBlockHeadersByHeightResponse)(nil),             // 24: blockchain_api.GetBlockHeadersByHeightResponse
	(*GetBlockHeaderIDsResponse)(nil),                   // 25: blockchain_api.GetBlockHeaderIDsResponse
	(*GetMedianTimeResponse)(nil),                       // 26: blockchain_api.GetMedianTimeResponse
	(*GetBlockHeaderRequest)(nil),                       // 27: blockchain_api.GetBlockHeaderRequest
	(*CheckBlockIsCurrentChainRequest)(nil),             // 28: blockchain_api.CheckBlockIsCurrentChainRequest
	(*InvalidateBlockRequest)(nil),                      // 29: blockchain_api.InvalidateBlockRequest
	(*InvalidateBlockResponse)(nil),                     // 30: blockchain_api.InvalidateBlockResponse
	(*RevalidateBlockRequest)(nil),                      // 31: blockchain_api.RevalidateBlockRequest
	(*GetBlockHeaderResponse)(nil),                      // 32: blockchain_api.GetBlockHeaderResponse
	(*CheckBlockIsCurrentChainResponse)(nil),            // 33: blockchain_api.CheckBlockIsCurrentChainResponse
	(*SubscribeRequest)(nil),                            // 34: blockchain_api.SubscribeRequest
	(*Notification)(nil),                                // 35: blockchain_api.Notification
	(*NotificationMetadata)(nil),                        // 36: blockchain_api.NotificationMetadata
	(*GetStateRequest)(nil),                             // 37: blockchain_api.GetStateRequest
	(*StateResponse)(nil),                               // 38: blockchain_api.StateResponse
	(*SetStateRequest)(nil),                             // 39: blockchain_api.SetStateRequest
	(*GetBlockIsMinedRequest)(nil),                      // 40: blockchain_api.GetBlockIsMinedRequest
	(*GetBlockIsMinedResponse)(nil),                     // 41: blockchain_api.GetBlockIsMinedResponse
	(*GetLastNBlocksRequest)(nil),                       // 42: blockchain_api.GetLastNBlocksRequest
	(*GetLastNBlocksResponse)(nil),                      // 43: blockchain_api.GetLastNBlocksResponse
	(*GetLastNInvalidBlocksRequest)(nil),                // 44: blockchain_api.GetLastNInvalidBlocksRequest
	(*GetLastNInvalidBlocksResponse)(nil),               // 45: blockchain_api.GetLastNInvalidBlocksResponse
	(*GetSuitableBlockRequest)(nil),                     // 46: blockchain_api.GetSuitableBlockRequest
	(*GetSuitableBlockResponse)(nil),                    // 47: blockchain_api.GetSuitableBlockResponse
	(*GetHashOfAncestorBlockRequest)(nil),               // 48: blockchain_api.GetHashOfAncestorBlockRequest
	(*GetLatestBlockHeaderFromBlockLocatorRequest)(nil), // 49: blockchain_api.GetLatestBlockHeaderFromBlockLocatorRequest
	(*GetBlockHeadersFromOldestRequest)(nil),            // 50: blockchain_api.GetBlockHeadersFromOldestRequest
	(*GetHashOfAncestorBlockResponse)(nil),              // 51: blockchain_api.GetHashOfAncestorBlockResponse
	(*GetNextWorkRequiredRequest)(nil),                  // 52: blockchain_api.GetNextWorkRequiredRequest
	(*GetNextWorkRequiredResponse)(nil),                 // 53: blockchain_api.GetNextWorkRequiredResponse
	(*SetBlockMinedSetRequest)(nil),                     // 54: blockchain_api.SetBlockMinedSetRequest
	(*GetBlocksMinedNotSetResponse)(nil),                // 55: blockchain_api.GetBlocksMinedNotSetResponse
	(*SetBlockSubtreesSetRequest)(nil),                  // 56: blockchain_api.SetBlockSubtreesSetRequest
	(*GetBlocksSubtreesNotSetResponse)(nil),             // 57: blockchain_api.GetBlocksSubtreesNotSetResponse
	(*SetBlockProcessedAtRequest)(nil),                  // 58: blockchain_api.SetBlockProcessedAtRequest
	(*GetFSMStateResponse)(nil),                         // 59: blockchain_api.GetFSMStateResponse
	(*WaitFSMToTransitionRequest)(nil),                  // 60: blockchain_api.WaitFSMToTransitionRequest
	(*SendFSMEventRequest)(nil),                         // 61: blockchain_api.SendFSMEventRequest
	(*GetBlockLocatorRequest)(nil),                      // 62: blockchain_api.GetBlockLocatorRequest
	(*GetBlockLocatorResponse)(nil),                     // 63: blockchain_api.GetBlockLocatorResponse
	(*LocateBlockHeadersRequest)(nil),                   // 64: blockchain_api.LocateBlockHeadersRequest
	(*LocateBlockHeadersResponse)(nil),                  // 65: blockchain_api.LocateBlockHeadersResponse
	(*GetBestHeightAndTimeResponse)(nil),                // 66: blockchain_api.GetBestHeightAndTimeResponse
	(*GetChainTipsResponse)(nil),                        // 67: blockchain_api.GetChainTipsResponse
	(*ReportPeerFailureRequest)(nil),                    // 68: blockchain_api.ReportPeerFailureRequest
	nil,                                                 // 69: blockchain_api.NotificationMetadata.MetadataEntry
	(*timestamppb.Timestamp)(nil),                       // 70: google.protobuf.Timestamp
	(model.NotificationType)(0),                         // 71: model.NotificationType
	(*model.BlockInfo)(nil),                             // 72: model.BlockInfo
	(*model.SuitableBlock)(nil),                         // 73: model.SuitableBlock
	(*model.ChainTip)(nil),                              // 74: model.ChainTip
	(*emptypb.Empty)(nil),                               // 75: google.protobuf.Empty
	(*model.BlockStats)(nil),                            // 76: model.BlockStats
	(*model.BlockDataPoints)(nil),                       // 77: model.BlockDataPoints
}
var file_services_blockchain_blockchain_api_blockchain_api_proto_depIdxs = []int32{
	70, // 0: blockchain_api.HealthResponse.timestamp:type_name -> google.protobuf.Timestamp
	71, // 1: blockchain_api.Notification.type:type_name -> model.NotificationType
	36, // 2: blockchain_api.Notification.metadata:type_name -> blockchain_api.NotificationMetadata
	69, // 3: blockchain_api.NotificationMetadata.metadata:type_name -> blockchain_api.NotificationMetadata.MetadataEntry
	72, // 4: blockchain_api.GetLastNBlocksResponse.blocks:type_name -> model.BlockInfo
	72, // 5: blockchain_api.GetLastNInvalidBlocksResponse.blocks:type_name -> model.BlockInfo
	73, // 6: blockchain_api.GetSuitableBlockResponse.block:type_name -> model.SuitableBlock
	1,  // 7: blockchain_api.GetFSMStateResponse.state:type_name -> blockchain_api.FSMStateType
	1,  // 8: blockchain_api.WaitFSMToTransitionRequest.state:type_name -> blockchain_api.FSMStateType
	0,  // 9: blockchain_api.SendFSMEventRequest.event:type_name -> blockchain_api.FSMEventType
	74, // 10: blockchain_api.GetChainTipsResponse.tips:type_name -> model.ChainTip
	75, // 11: blockchain_api.BlockchainAPI.HealthGRPC:input_type -> google.protobuf.Empty
	3,  // 12: blockchain_api.BlockchainAPI.AddBlock:input_type -> blockchain_api.AddBlockRequest
	4,  // 13: blockchain_api.BlockchainAPI.GetBlock:input_type -> blockchain_api.GetBlockRequest
	5,  // 14: blockchain_api.BlockchainAPI.GetBlocks:input_type -> blockchain_api.GetBlocksRequest
	7,  // 15: blockchain_api.BlockchainAPI.GetBlockByHeight:input_type -> blockchain_api.GetBlockByHeightRequest
	8,  // 16: blockchain_api.BlockchainAPI.GetBlockByID:input_type -> blockchain_api.GetBlockByIDRequest
	75, // 17: blockchain_api.BlockchainAPI.GetNextBlockID:input_type -> google.protobuf.Empty
	75, // 18: blockchain_api.BlockchainAPI.GetBlockStats:input_type -> google.protobuf.Empty
	13, // 19: blockchain_api.BlockchainAPI.GetBlockGraphData:input_type -> blockchain_api.GetBlockGraphDataRequest
	42, // 20: blockchain_api.BlockchainAPI.GetLastNBlocks:input_type -> blockchain_api.GetLastNBlocksRequest
	44, // 21: blockchain_api.BlockchainAPI.GetLastNInvalidBlocks:input_type -> blockchain_api.GetLastNInvalidBlocksRequest
	46, // 22: blockchain_api.BlockchainAPI.GetSuitableBlock:input_type -> blockchain_api.GetSuitableBlockRequest
	48, // 23: blockchain_api.BlockchainAPI.GetHashOfAncestorBlock:input_type -> blockchain_api.GetHashOfAncestorBlockRequest
	49, // 24: blockchain_api.BlockchainAPI.GetLatestBlockHeaderFromBlockLocator:input_type -> blockchain_api.GetLatestBlockHeaderFromBlockLocatorRequest
	50, // 25: blockchain_api.BlockchainAPI.GetBlockHeadersFromOldest:input_type -> blockchain_api.GetBlockHeadersFromOldestRequest
	52, // 26: blockchain_api.BlockchainAPI.GetNextWorkRequired:input_type -> blockchain_api.GetNextWorkRequiredRequest
	4,  // 27: blockchain_api.BlockchainAPI.GetBlockExists:input_type -> blockchain_api.GetBlockRequest
	16, // 28: blockchain_api.BlockchainAPI.GetBlockHeaders:input_type -> blockchain_api.GetBlockHeadersRequest
	17, // 29: blockchain_api.BlockchainAPI.GetBlockHeadersToCommonAncestor:input_type -> blockchain_api.GetBlockHeadersToCommonAncestorRequest
	18, // 30: blockchain_api.BlockchainAPI.GetBlockHeadersFromCommonAncestor:input_type -> blockchain_api.GetBlockHeadersFromCommonAncestorRequest
	20, // 31: blockchain_api.BlockchainAPI.GetBlockHeadersFromTill:input_type -> blockchain_api.GetBlockHeadersFromTillRequest
	21, // 32: blockchain_api.BlockchainAPI.GetBlockHeadersFromHeight:input_type -> blockchain_api.GetBlockHeadersFromHeightRequest
	23, // 33: blockchain_api.BlockchainAPI.GetBlockHeadersByHeight:input_type -> blockchain_api.GetBlockHeadersByHeightRequest
	16, // 34: blockchain_api.BlockchainAPI.GetBlockHeaderIDs:input_type -> blockchain_api.GetBlockHeadersRequest
	75, // 35: blockchain_api.BlockchainAPI.GetBestBlockHeader:input_type -> google.protobuf.Empty
	28, // 36: blockchain_api.BlockchainAPI.CheckBlockIsInCurrentChain:input_type -> blockchain_api.CheckBlockIsCurrentChainRequest
	75, // 37: blockchain_api.BlockchainAPI.GetChainTips:input_type -> google.protobuf.Empty
	27, // 38: blockchain_api.BlockchainAPI.GetBlockHeader:input_type -> blockchain_api.GetBlockHeaderRequest
	29, // 39: blockchain_api.BlockchainAPI.InvalidateBlock:input_type -> blockchain_api.InvalidateBlockRequest
	31, // 40: blockchain_api.BlockchainAPI.RevalidateBlock:input_type -> blockchain_api.RevalidateBlockRequest
	34, // 41: blockchain_api.BlockchainAPI.Subscribe:input_type -> blockchain_api.SubscribeRequest
	35, // 42: blockchain_api.BlockchainAPI.SendNotification:input_type -> blockchain_api.Notification
	37, // 43: blockchain_api.BlockchainAPI.GetState:input_type -> blockchain_api.GetStateRequest
	39, // 44: blockchain_api.BlockchainAPI.SetState:input_type -> blockchain_api.SetStateRequest
	40, // 45: blockchain_api.BlockchainAPI.GetBlockIsMined:input_type -> blockchain_api.GetBlockIsMinedRequest
	54, // 46: blockchain_api.BlockchainAPI.SetBlockMinedSet:input_type -> blockchain_api.SetBlockMinedSetRequest
	75, // 47: blockchain_api.BlockchainAPI.GetBlocksMinedNotSet:input_type -> google.protobuf.Empty
	56, // 48: blockchain_api.BlockchainAPI.SetBlockSubtreesSet:input_type -> blockchain_api.SetBlockSubtreesSetRequest
	75, // 49: blockchain_api.BlockchainAPI.GetBlocksSubtreesNotSet:input_type -> google.protobuf.Empty
	58, // 50: blockchain_api.BlockchainAPI.SetBlockProcessedAt:input_type -> blockchain_api.SetBlockProcessedAtRequest
	61, // 51: blockchain_api.BlockchainAPI.SendFSMEvent:input_type -> blockchain_api.SendFSMEventRequest
	75, // 52: blockchain_api.BlockchainAPI.GetFSMCurrentState:input_type -> google.protobuf.Empty
	60, // 53: blockchain_api.BlockchainAPI.WaitFSMToTransitionToGivenState:input_type -> blockchain_api.WaitFSMToTransitionRequest
	75, // 54: blockchain_api.BlockchainAPI.WaitUntilFSMTransitionFromIdleState:input_type -> google.protobuf.Empty
	75, // 55: blockchain_api.BlockchainAPI.Run:input_type -> google.protobuf.Empty
	75, // 56: blockchain_api.BlockchainAPI.CatchUpBlocks:input_type -> google.protobuf.Empty
	75, // 57: blockchain_api.BlockchainAPI.LegacySync:input_type -> google.protobuf.Empty
	75, // 58: blockchain_api.BlockchainAPI.Idle:input_type -> google.protobuf.Empty
	68, // 59: blockchain_api.BlockchainAPI.ReportPeerFailure:input_type -> blockchain_api.ReportPeerFailureRequest
	62, // 60: blockchain_api.BlockchainAPI.GetBlockLocator:input_type -> blockchain_api.GetBlockLocatorRequest
	64, // 61: blockchain_api.BlockchainAPI.LocateBlockHeaders:input_type -> blockchain_api.LocateBlockHeadersRequest
	75, // 62: blockchain_api.BlockchainAPI.GetBestHeightAndTime:input_type -> google.protobuf.Empty
	2,  // 63: blockchain_api.BlockchainAPI.HealthGRPC:output_type -> blockchain_api.HealthResponse
	75, // 64: blockchain_api.BlockchainAPI.AddBlock:output_type -> google.protobuf.Empty
	11, // 65: blockchain_api.BlockchainAPI.GetBlock:output_type -> blockchain_api.GetBlockResponse
	6,  // 66: blockchain_api.BlockchainAPI.GetBlocks:output_type -> blockchain_api.GetBlocksResponse
	11, // 67: blockchain_api.BlockchainAPI.GetBlockByHeight:output_type -> blockchain_api.GetBlockResponse
	11, // 68: blockchain_api.BlockchainAPI.GetBlockByID:output_type -> blockchain_api.GetBlockResponse
	9,  // 69: blockchain_api.BlockchainAPI.GetNextBlockID:output_type -> blockchain_api.GetNextBlockIDResponse
	76, // 70: blockchain_api.BlockchainAPI.GetBlockStats:output_type -> model.BlockStats
	77, // 71: blockchain_api.BlockchainAPI.GetBlockGraphData:output_type -> model.BlockDataPoints
	43, // 72: blockchain_api.BlockchainAPI.GetLastNBlocks:output_type -> blockchain_api.GetLastNBlocksResponse
	45, // 73: blockchain_api.BlockchainAPI.GetLastNInvalidBlocks:output_type -> blockchain_api.GetLastNInvalidBlocksResponse
	47, // 74: blockchain_api.BlockchainAPI.GetSuitableBlock:output_type -> blockchain_api.GetSuitableBlockResponse
	51, // 75: blockchain_api.BlockchainAPI.GetHashOfAncestorBlock:output_type -> blockchain_api.GetHashOfAncestorBlockResponse
	32, // 76: blockchain_api.BlockchainAPI.GetLatestBlockHeaderFromBlockLocator:output_type -> blockchain_api.GetBlockHeaderResponse
	19, // 77: blockchain_api.BlockchainAPI.GetBlockHeadersFromOldest:output_type -> blockchain_api.GetBlockHeadersResponse
	53, // 78: blockchain_api.BlockchainAPI.GetNextWorkRequired:output_type -> blockchain_api.GetNextWorkRequiredResponse
	14, // 79: blockchain_api.BlockchainAPI.GetBlockExists:output_type -> blockchain_api.GetBlockExistsResponse
	19, // 80: blockchain_api.BlockchainAPI.GetBlockHeaders:output_type -> blockchain_api.GetBlockHeadersResponse
	19, // 81: blockchain_api.BlockchainAPI.GetBlockHeadersToCommonAncestor:output_type -> blockchain_api.GetBlockHeadersResponse
	19, // 82: blockchain_api.BlockchainAPI.GetBlockHeadersFromCommonAncestor:output_type -> blockchain_api.GetBlockHeadersResponse
	19, // 83: blockchain_api.BlockchainAPI.GetBlockHeadersFromTill:output_type -> blockchain_api.GetBlockHeadersResponse
	22, // 84: blockchain_api.BlockchainAPI.GetBlockHeadersFromHeight:output_type -> blockchain_api.GetBlockHeadersFromHeightResponse
	24, // 85: blockchain_api.BlockchainAPI.GetBlockHeadersByHeight:output_type -> blockchain_api.GetBlockHeadersByHeightResponse
	25, // 86: blockchain_api.BlockchainAPI.GetBlockHeaderIDs:output_type -> blockchain_api.GetBlockHeaderIDsResponse
	32, // 87: blockchain_api.BlockchainAPI.GetBestBlockHeader:output_type -> blockchain_api.GetBlockHeaderResponse
	33, // 88: blockchain_api.BlockchainAPI.CheckBlockIsInCurrentChain:output_type -> blockchain_api.CheckBlockIsCurrentChainResponse
	67, // 89: blockchain_api.BlockchainAPI.GetChainTips:output_type -> blockchain_api.GetChainTipsResponse
	32, // 90: blockchain_api.BlockchainAPI.GetBlockHeader:output_type -> blockchain_api.GetBlockHeaderResponse
	30, // 91: blockchain_api.BlockchainAPI.InvalidateBlock:output_type -> blockchain_api.InvalidateBlockResponse
	75, // 92: blockchain_api.BlockchainAPI.RevalidateBlock:output_type -> google.protobuf.Empty
	35, // 93: blockchain_api.BlockchainAPI.Subscribe:output_type -> blockchain_api.Notification
	75, // 94: blockchain_api.BlockchainAPI.SendNotification:output_type -> google.protobuf.Empty
	38, // 95: blockchain_api.BlockchainAPI.GetState:output_type -> blockchain_api.StateResponse
	75, // 96: blockchain_api.BlockchainAPI.SetState:output_type -> google.protobuf.Empty
	41, // 97: blockchain_api.BlockchainAPI.GetBlockIsMined:output_type -> blockchain_api.GetBlockIsMinedResponse
	75, // 98: blockchain_api.BlockchainAPI.SetBlockMinedSet:output_type -> google.protobuf.Empty
	55, // 99: blockchain_api.BlockchainAPI.GetBlocksMinedNotSet:output_type -> blockchain_api.GetBlocksMinedNotSetResponse
	75, // 100: blockchain_api.BlockchainAPI.SetBlockSubtreesSet:output_type -> google.protobuf.Empty
	57, // 101: blockchain_api.BlockchainAPI.GetBlocksSubtreesNotSet:output_type -> blockchain_api.GetBlocksSubtreesNotSetResponse
	75, // 102: blockchain_api.BlockchainAPI.SetBlockProcessedAt:output_type -> google.protobuf.Empty
	59, // 103: blockchain_api.BlockchainAPI.SendFSMEvent:output_type -> blockchain_api.GetFSMStateResponse
	59, // 104: blockchain_api.BlockchainAPI.GetFSMCurrentState:output_type -> blockchain_api.GetFSMStateResponse
	75, // 105: blockchain_api.BlockchainAPI.WaitFSMToTransitionToGivenState:output_type -> google.protobuf.Empty
	75, // 106: blockchain_api.BlockchainAPI.WaitUntilFSMTransitionFromIdleState:output_type -> google.protobuf.Empty
	75, // 107: blockchain_api.BlockchainAPI.Run:output_type -> google.protobuf.Empty
	75, // 108: blockchain_api.BlockchainAPI.CatchUpBlocks:output_type -> google.protobuf.Empty
	75, // 109: blockchain_api.BlockchainAPI.LegacySync:output_type -> google.protobuf.Empty
	75, // 110: blockchain_api.BlockchainAPI.Idle:output_type -> google.protobuf.Empty
	75, // 111: blockchain_api.BlockchainAPI.ReportPeerFailure:output_type -> google.protobuf.Empty
	63, // 112: blockchain_api.BlockchainAPI.GetBlockLocator:output_type -> blockchain_api.GetBlockLocatorResponse
	65, // 113: blockchain_api.BlockchainAPI.LocateBlockHeaders:output_type -> blockchain_api.LocateBlockHeadersResponse
	66, // 114: blockchain_api.BlockchainAPI.GetBestHeightAndTime:output_type -> blockchain_api.GetBestHeightAndTimeResponse
	63, // [63:115] is the sub-list for method output_type
	11, // [11:63] is the sub-list for method input_type
	11, // [11:11] is the sub-list for extension type_name
	11, // [11:11] is the sub-list for extension extendee
	0,  // [0:11] is the sub-list for field type_name
}

func init() { file_services_blockchain_blockchain_api_blockchain_api_proto_init() }
func file_services_blockchain_blockchain_api_blockchain_api_proto_init() {
	if File_services_blockchain_blockchain_api_blockchain_api_proto != nil {
		return
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: unsafe.Slice(unsafe.StringData(file_services_blockchain_blockchain_api_blockchain_api_proto_rawDesc), len(file_services_blockchain_blockchain_api_blockchain_api_proto_rawDesc)),
			NumEnums:      2,
			NumMessages:   68,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_services_blockchain_blockchain_api_blockchain_api_proto_goTypes,
		DependencyIndexes: file_services_blockchain_blockchain_api_blockchain_api_proto_depIdxs,
		EnumInfos:         file_services_blockchain_blockchain_api_blockchain_api_proto_enumTypes,
		MessageInfos:      file_services_blockchain_blockchain_api_blockchain_api_proto_msgTypes,
	}.Build()
	File_services_blockchain_blockchain_api_blockchain_api_proto = out.File
	file_services_blockchain_blockchain_api_blockchain_api_proto_goTypes = nil
	file_services_blockchain_blockchain_api_blockchain_api_proto_depIdxs = nil
}
