// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.36.6
// 	protoc        v5.29.3
// source: bulk.proto

package evm

import (
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	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)
)

// Request for getting multiple blocks in a range
type GetBlocksByRangeRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Starting block number (inclusive)
	FromBlock uint64 `protobuf:"varint,1,opt,name=fromBlock,proto3" json:"fromBlock,omitempty"`
	// Ending block number (inclusive)
	ToBlock uint64 `protobuf:"varint,2,opt,name=toBlock,proto3" json:"toBlock,omitempty"`
	// Whether to include full transaction details for each block
	IncludeTransactions bool `protobuf:"varint,3,opt,name=includeTransactions,proto3" json:"includeTransactions,omitempty"`
	// Maximum number of blocks to return (for pagination)
	Limit         *uint32 `protobuf:"varint,4,opt,name=limit,proto3,oneof" json:"limit,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*GetBlocksByRangeRequest) ProtoMessage() {}

func (x *GetBlocksByRangeRequest) ProtoReflect() protoreflect.Message {
	mi := &file_bulk_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 GetBlocksByRangeRequest.ProtoReflect.Descriptor instead.
func (*GetBlocksByRangeRequest) Descriptor() ([]byte, []int) {
	return file_bulk_proto_rawDescGZIP(), []int{0}
}

func (x *GetBlocksByRangeRequest) GetFromBlock() uint64 {
	if x != nil {
		return x.FromBlock
	}
	return 0
}

func (x *GetBlocksByRangeRequest) GetToBlock() uint64 {
	if x != nil {
		return x.ToBlock
	}
	return 0
}

func (x *GetBlocksByRangeRequest) GetIncludeTransactions() bool {
	if x != nil {
		return x.IncludeTransactions
	}
	return false
}

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

// Response containing blocks within the requested range
type GetBlocksByRangeResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Array of blocks within the range
	Blocks []*Block `protobuf:"bytes,1,rep,name=blocks,proto3" json:"blocks,omitempty"`
	// Cursor for the next page of results. If empty, no more results are available.
	// This is typically the block number after the last block in the current response
	NextCursor *string `protobuf:"bytes,2,opt,name=nextCursor,proto3,oneof" json:"nextCursor,omitempty"`
	// Indicates if the response is partial due to size limits, timeouts, or other constraints
	IsPartial bool `protobuf:"varint,3,opt,name=isPartial,proto3" json:"isPartial,omitempty"`
	// Unix timestamp (milliseconds) when this response was generated
	// Useful for cache invalidation and staleness detection
	Timestamp uint64 `protobuf:"varint,4,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
	// Processing time in milliseconds
	// Useful for performance monitoring and optimization
	ProcessingTimeMs uint32 `protobuf:"varint,5,opt,name=processingTimeMs,proto3" json:"processingTimeMs,omitempty"`
	// Optional metadata about the response
	Metadata      map[string]string `protobuf:"bytes,6,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*GetBlocksByRangeResponse) ProtoMessage() {}

func (x *GetBlocksByRangeResponse) ProtoReflect() protoreflect.Message {
	mi := &file_bulk_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 GetBlocksByRangeResponse.ProtoReflect.Descriptor instead.
func (*GetBlocksByRangeResponse) Descriptor() ([]byte, []int) {
	return file_bulk_proto_rawDescGZIP(), []int{1}
}

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

func (x *GetBlocksByRangeResponse) GetNextCursor() string {
	if x != nil && x.NextCursor != nil {
		return *x.NextCursor
	}
	return ""
}

func (x *GetBlocksByRangeResponse) GetIsPartial() bool {
	if x != nil {
		return x.IsPartial
	}
	return false
}

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

func (x *GetBlocksByRangeResponse) GetProcessingTimeMs() uint32 {
	if x != nil {
		return x.ProcessingTimeMs
	}
	return 0
}

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

var File_bulk_proto protoreflect.FileDescriptor

const file_bulk_proto_rawDesc = "" +
	"\n" +
	"\n" +
	"bulk.proto\x12\abds.evm\x1a\fmodels.proto\"\xa8\x01\n" +
	"\x17GetBlocksByRangeRequest\x12\x1c\n" +
	"\tfromBlock\x18\x01 \x01(\x04R\tfromBlock\x12\x18\n" +
	"\atoBlock\x18\x02 \x01(\x04R\atoBlock\x120\n" +
	"\x13includeTransactions\x18\x03 \x01(\bR\x13includeTransactions\x12\x19\n" +
	"\x05limit\x18\x04 \x01(\rH\x00R\x05limit\x88\x01\x01B\b\n" +
	"\x06_limit\"\xe8\x02\n" +
	"\x18GetBlocksByRangeResponse\x12&\n" +
	"\x06blocks\x18\x01 \x03(\v2\x0e.bds.evm.BlockR\x06blocks\x12#\n" +
	"\n" +
	"nextCursor\x18\x02 \x01(\tH\x00R\n" +
	"nextCursor\x88\x01\x01\x12\x1c\n" +
	"\tisPartial\x18\x03 \x01(\bR\tisPartial\x12\x1c\n" +
	"\ttimestamp\x18\x04 \x01(\x04R\ttimestamp\x12*\n" +
	"\x10processingTimeMs\x18\x05 \x01(\rR\x10processingTimeMs\x12K\n" +
	"\bmetadata\x18\x06 \x03(\v2/.bds.evm.GetBlocksByRangeResponse.MetadataEntryR\bmetadata\x1a;\n" +
	"\rMetadataEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01B\r\n" +
	"\v_nextCursor2k\n" +
	"\x10BulkQueryService\x12W\n" +
	"\x10GetBlocksByRange\x12 .bds.evm.GetBlocksByRangeRequest\x1a!.bds.evm.GetBlocksByRangeResponseB4Z2github.com/blockchain-data-standards/manifesto/evmb\x06proto3"

var (
	file_bulk_proto_rawDescOnce sync.Once
	file_bulk_proto_rawDescData []byte
)

func file_bulk_proto_rawDescGZIP() []byte {
	file_bulk_proto_rawDescOnce.Do(func() {
		file_bulk_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_bulk_proto_rawDesc), len(file_bulk_proto_rawDesc)))
	})
	return file_bulk_proto_rawDescData
}

var file_bulk_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
var file_bulk_proto_goTypes = []any{
	(*GetBlocksByRangeRequest)(nil),  // 0: bds.evm.GetBlocksByRangeRequest
	(*GetBlocksByRangeResponse)(nil), // 1: bds.evm.GetBlocksByRangeResponse
	nil,                              // 2: bds.evm.GetBlocksByRangeResponse.MetadataEntry
	(*Block)(nil),                    // 3: bds.evm.Block
}
var file_bulk_proto_depIdxs = []int32{
	3, // 0: bds.evm.GetBlocksByRangeResponse.blocks:type_name -> bds.evm.Block
	2, // 1: bds.evm.GetBlocksByRangeResponse.metadata:type_name -> bds.evm.GetBlocksByRangeResponse.MetadataEntry
	0, // 2: bds.evm.BulkQueryService.GetBlocksByRange:input_type -> bds.evm.GetBlocksByRangeRequest
	1, // 3: bds.evm.BulkQueryService.GetBlocksByRange:output_type -> bds.evm.GetBlocksByRangeResponse
	3, // [3:4] is the sub-list for method output_type
	2, // [2:3] is the sub-list for method input_type
	2, // [2:2] is the sub-list for extension type_name
	2, // [2:2] is the sub-list for extension extendee
	0, // [0:2] is the sub-list for field type_name
}

func init() { file_bulk_proto_init() }
func file_bulk_proto_init() {
	if File_bulk_proto != nil {
		return
	}
	file_models_proto_init()
	file_bulk_proto_msgTypes[0].OneofWrappers = []any{}
	file_bulk_proto_msgTypes[1].OneofWrappers = []any{}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: unsafe.Slice(unsafe.StringData(file_bulk_proto_rawDesc), len(file_bulk_proto_rawDesc)),
			NumEnums:      0,
			NumMessages:   3,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_bulk_proto_goTypes,
		DependencyIndexes: file_bulk_proto_depIdxs,
		MessageInfos:      file_bulk_proto_msgTypes,
	}.Build()
	File_bulk_proto = out.File
	file_bulk_proto_goTypes = nil
	file_bulk_proto_depIdxs = nil
}
