// Code generated by protoc-gen-go-pulsar. DO NOT EDIT.
package oraclev1

import (
	fmt "fmt"
	v1 "github.com/bandprotocol/chain/v3/api/band/oracle/v1"
	runtime "github.com/cosmos/cosmos-proto/runtime"
	_ "github.com/cosmos/gogoproto/gogoproto"
	_ "google.golang.org/genproto/googleapis/api/annotations"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoiface "google.golang.org/protobuf/runtime/protoiface"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	io "io"
	reflect "reflect"
	sync "sync"
)

var (
	md_ProofRequest            protoreflect.MessageDescriptor
	fd_ProofRequest_request_id protoreflect.FieldDescriptor
	fd_ProofRequest_height     protoreflect.FieldDescriptor
)

func init() {
	file_band_base_oracle_v1_proof_proto_init()
	md_ProofRequest = File_band_base_oracle_v1_proof_proto.Messages().ByName("ProofRequest")
	fd_ProofRequest_request_id = md_ProofRequest.Fields().ByName("request_id")
	fd_ProofRequest_height = md_ProofRequest.Fields().ByName("height")
}

var _ protoreflect.Message = (*fastReflection_ProofRequest)(nil)

type fastReflection_ProofRequest ProofRequest

func (x *ProofRequest) ProtoReflect() protoreflect.Message {
	return (*fastReflection_ProofRequest)(x)
}

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

var _fastReflection_ProofRequest_messageType fastReflection_ProofRequest_messageType
var _ protoreflect.MessageType = fastReflection_ProofRequest_messageType{}

type fastReflection_ProofRequest_messageType struct{}

func (x fastReflection_ProofRequest_messageType) Zero() protoreflect.Message {
	return (*fastReflection_ProofRequest)(nil)
}
func (x fastReflection_ProofRequest_messageType) New() protoreflect.Message {
	return new(fastReflection_ProofRequest)
}
func (x fastReflection_ProofRequest_messageType) Descriptor() protoreflect.MessageDescriptor {
	return md_ProofRequest
}

// Descriptor returns message descriptor, which contains only the protobuf
// type information for the message.
func (x *fastReflection_ProofRequest) Descriptor() protoreflect.MessageDescriptor {
	return md_ProofRequest
}

// Type returns the message type, which encapsulates both Go and protobuf
// type information. If the Go type information is not needed,
// it is recommended that the message descriptor be used instead.
func (x *fastReflection_ProofRequest) Type() protoreflect.MessageType {
	return _fastReflection_ProofRequest_messageType
}

// New returns a newly allocated and mutable empty message.
func (x *fastReflection_ProofRequest) New() protoreflect.Message {
	return new(fastReflection_ProofRequest)
}

// Interface unwraps the message reflection interface and
// returns the underlying ProtoMessage interface.
func (x *fastReflection_ProofRequest) Interface() protoreflect.ProtoMessage {
	return (*ProofRequest)(x)
}

// Range iterates over every populated field in an undefined order,
// calling f for each field descriptor and value encountered.
// Range returns immediately if f returns false.
// While iterating, mutating operations may only be performed
// on the current field descriptor.
func (x *fastReflection_ProofRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {
	if x.RequestId != uint64(0) {
		value := protoreflect.ValueOfUint64(x.RequestId)
		if !f(fd_ProofRequest_request_id, value) {
			return
		}
	}
	if x.Height != int64(0) {
		value := protoreflect.ValueOfInt64(x.Height)
		if !f(fd_ProofRequest_height, value) {
			return
		}
	}
}

// Has reports whether a field is populated.
//
// Some fields have the property of nullability where it is possible to
// distinguish between the default value of a field and whether the field
// was explicitly populated with the default value. Singular message fields,
// member fields of a oneof, and proto2 scalar fields are nullable. Such
// fields are populated only if explicitly set.
//
// In other cases (aside from the nullable cases above),
// a proto3 scalar field is populated if it contains a non-zero value, and
// a repeated field is populated if it is non-empty.
func (x *fastReflection_ProofRequest) Has(fd protoreflect.FieldDescriptor) bool {
	switch fd.FullName() {
	case "band.base.oracle.v1.ProofRequest.request_id":
		return x.RequestId != uint64(0)
	case "band.base.oracle.v1.ProofRequest.height":
		return x.Height != int64(0)
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.ProofRequest"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.ProofRequest does not contain field %s", fd.FullName()))
	}
}

// Clear clears the field such that a subsequent Has call reports false.
//
// Clearing an extension field clears both the extension type and value
// associated with the given field number.
//
// Clear is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_ProofRequest) Clear(fd protoreflect.FieldDescriptor) {
	switch fd.FullName() {
	case "band.base.oracle.v1.ProofRequest.request_id":
		x.RequestId = uint64(0)
	case "band.base.oracle.v1.ProofRequest.height":
		x.Height = int64(0)
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.ProofRequest"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.ProofRequest does not contain field %s", fd.FullName()))
	}
}

// Get retrieves the value for a field.
//
// For unpopulated scalars, it returns the default value, where
// the default value of a bytes scalar is guaranteed to be a copy.
// For unpopulated composite types, it returns an empty, read-only view
// of the value; to obtain a mutable reference, use Mutable.
func (x *fastReflection_ProofRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {
	switch descriptor.FullName() {
	case "band.base.oracle.v1.ProofRequest.request_id":
		value := x.RequestId
		return protoreflect.ValueOfUint64(value)
	case "band.base.oracle.v1.ProofRequest.height":
		value := x.Height
		return protoreflect.ValueOfInt64(value)
	default:
		if descriptor.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.ProofRequest"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.ProofRequest does not contain field %s", descriptor.FullName()))
	}
}

// Set stores the value for a field.
//
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType.
// When setting a composite type, it is unspecified whether the stored value
// aliases the source's memory in any way. If the composite value is an
// empty, read-only value, then it panics.
//
// Set is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_ProofRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {
	switch fd.FullName() {
	case "band.base.oracle.v1.ProofRequest.request_id":
		x.RequestId = value.Uint()
	case "band.base.oracle.v1.ProofRequest.height":
		x.Height = value.Int()
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.ProofRequest"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.ProofRequest does not contain field %s", fd.FullName()))
	}
}

// Mutable returns a mutable reference to a composite type.
//
// If the field is unpopulated, it may allocate a composite value.
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType
// if not already stored.
// It panics if the field does not contain a composite type.
//
// Mutable is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_ProofRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {
	switch fd.FullName() {
	case "band.base.oracle.v1.ProofRequest.request_id":
		panic(fmt.Errorf("field request_id of message band.base.oracle.v1.ProofRequest is not mutable"))
	case "band.base.oracle.v1.ProofRequest.height":
		panic(fmt.Errorf("field height of message band.base.oracle.v1.ProofRequest is not mutable"))
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.ProofRequest"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.ProofRequest does not contain field %s", fd.FullName()))
	}
}

// NewField returns a new value that is assignable to the field
// for the given descriptor. For scalars, this returns the default value.
// For lists, maps, and messages, this returns a new, empty, mutable value.
func (x *fastReflection_ProofRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {
	switch fd.FullName() {
	case "band.base.oracle.v1.ProofRequest.request_id":
		return protoreflect.ValueOfUint64(uint64(0))
	case "band.base.oracle.v1.ProofRequest.height":
		return protoreflect.ValueOfInt64(int64(0))
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.ProofRequest"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.ProofRequest does not contain field %s", fd.FullName()))
	}
}

// WhichOneof reports which field within the oneof is populated,
// returning nil if none are populated.
// It panics if the oneof descriptor does not belong to this message.
func (x *fastReflection_ProofRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {
	switch d.FullName() {
	default:
		panic(fmt.Errorf("%s is not a oneof field in band.base.oracle.v1.ProofRequest", d.FullName()))
	}
	panic("unreachable")
}

// GetUnknown retrieves the entire list of unknown fields.
// The caller may only mutate the contents of the RawFields
// if the mutated bytes are stored back into the message with SetUnknown.
func (x *fastReflection_ProofRequest) GetUnknown() protoreflect.RawFields {
	return x.unknownFields
}

// SetUnknown stores an entire list of unknown fields.
// The raw fields must be syntactically valid according to the wire format.
// An implementation may panic if this is not the case.
// Once stored, the caller must not mutate the content of the RawFields.
// An empty RawFields may be passed to clear the fields.
//
// SetUnknown is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_ProofRequest) SetUnknown(fields protoreflect.RawFields) {
	x.unknownFields = fields
}

// IsValid reports whether the message is valid.
//
// An invalid message is an empty, read-only value.
//
// An invalid message often corresponds to a nil pointer of the concrete
// message type, but the details are implementation dependent.
// Validity is not part of the protobuf data model, and may not
// be preserved in marshaling or other operations.
func (x *fastReflection_ProofRequest) IsValid() bool {
	return x != nil
}

// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.
// This method may return nil.
//
// The returned methods type is identical to
// "google.golang.org/protobuf/runtime/protoiface".Methods.
// Consult the protoiface package documentation for details.
func (x *fastReflection_ProofRequest) ProtoMethods() *protoiface.Methods {
	size := func(input protoiface.SizeInput) protoiface.SizeOutput {
		x := input.Message.Interface().(*ProofRequest)
		if x == nil {
			return protoiface.SizeOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Size:              0,
			}
		}
		options := runtime.SizeInputToOptions(input)
		_ = options
		var n int
		var l int
		_ = l
		if x.RequestId != 0 {
			n += 1 + runtime.Sov(uint64(x.RequestId))
		}
		if x.Height != 0 {
			n += 1 + runtime.Sov(uint64(x.Height))
		}
		if x.unknownFields != nil {
			n += len(x.unknownFields)
		}
		return protoiface.SizeOutput{
			NoUnkeyedLiterals: input.NoUnkeyedLiterals,
			Size:              n,
		}
	}

	marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {
		x := input.Message.Interface().(*ProofRequest)
		if x == nil {
			return protoiface.MarshalOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Buf:               input.Buf,
			}, nil
		}
		options := runtime.MarshalInputToOptions(input)
		_ = options
		size := options.Size(x)
		dAtA := make([]byte, size)
		i := len(dAtA)
		_ = i
		var l int
		_ = l
		if x.unknownFields != nil {
			i -= len(x.unknownFields)
			copy(dAtA[i:], x.unknownFields)
		}
		if x.Height != 0 {
			i = runtime.EncodeVarint(dAtA, i, uint64(x.Height))
			i--
			dAtA[i] = 0x10
		}
		if x.RequestId != 0 {
			i = runtime.EncodeVarint(dAtA, i, uint64(x.RequestId))
			i--
			dAtA[i] = 0x8
		}
		if input.Buf != nil {
			input.Buf = append(input.Buf, dAtA...)
		} else {
			input.Buf = dAtA
		}
		return protoiface.MarshalOutput{
			NoUnkeyedLiterals: input.NoUnkeyedLiterals,
			Buf:               input.Buf,
		}, nil
	}
	unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {
		x := input.Message.Interface().(*ProofRequest)
		if x == nil {
			return protoiface.UnmarshalOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Flags:             input.Flags,
			}, nil
		}
		options := runtime.UnmarshalInputToOptions(input)
		_ = options
		dAtA := input.Buf
		l := len(dAtA)
		iNdEx := 0
		for iNdEx < l {
			preIndex := iNdEx
			var wire uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
				}
				if iNdEx >= l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				wire |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			fieldNum := int32(wire >> 3)
			wireType := int(wire & 0x7)
			if wireType == 4 {
				return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: ProofRequest: wiretype end group for non-group")
			}
			if fieldNum <= 0 {
				return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: ProofRequest: illegal tag %d (wire type %d)", fieldNum, wire)
			}
			switch fieldNum {
			case 1:
				if wireType != 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field RequestId", wireType)
				}
				x.RequestId = 0
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					x.RequestId |= uint64(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
			case 2:
				if wireType != 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Height", wireType)
				}
				x.Height = 0
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					x.Height |= int64(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
			default:
				iNdEx = preIndex
				skippy, err := runtime.Skip(dAtA[iNdEx:])
				if err != nil {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
				}
				if (skippy < 0) || (iNdEx+skippy) < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if (iNdEx + skippy) > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				if !options.DiscardUnknown {
					x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
				}
				iNdEx += skippy
			}
		}

		if iNdEx > l {
			return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
		}
		return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil
	}
	return &protoiface.Methods{
		NoUnkeyedLiterals: struct{}{},
		Flags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,
		Size:              size,
		Marshal:           marshal,
		Unmarshal:         unmarshal,
		Merge:             nil,
		CheckInitialized:  nil,
	}
}

var (
	md_ProofResponse        protoreflect.MessageDescriptor
	fd_ProofResponse_height protoreflect.FieldDescriptor
	fd_ProofResponse_result protoreflect.FieldDescriptor
)

func init() {
	file_band_base_oracle_v1_proof_proto_init()
	md_ProofResponse = File_band_base_oracle_v1_proof_proto.Messages().ByName("ProofResponse")
	fd_ProofResponse_height = md_ProofResponse.Fields().ByName("height")
	fd_ProofResponse_result = md_ProofResponse.Fields().ByName("result")
}

var _ protoreflect.Message = (*fastReflection_ProofResponse)(nil)

type fastReflection_ProofResponse ProofResponse

func (x *ProofResponse) ProtoReflect() protoreflect.Message {
	return (*fastReflection_ProofResponse)(x)
}

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

var _fastReflection_ProofResponse_messageType fastReflection_ProofResponse_messageType
var _ protoreflect.MessageType = fastReflection_ProofResponse_messageType{}

type fastReflection_ProofResponse_messageType struct{}

func (x fastReflection_ProofResponse_messageType) Zero() protoreflect.Message {
	return (*fastReflection_ProofResponse)(nil)
}
func (x fastReflection_ProofResponse_messageType) New() protoreflect.Message {
	return new(fastReflection_ProofResponse)
}
func (x fastReflection_ProofResponse_messageType) Descriptor() protoreflect.MessageDescriptor {
	return md_ProofResponse
}

// Descriptor returns message descriptor, which contains only the protobuf
// type information for the message.
func (x *fastReflection_ProofResponse) Descriptor() protoreflect.MessageDescriptor {
	return md_ProofResponse
}

// Type returns the message type, which encapsulates both Go and protobuf
// type information. If the Go type information is not needed,
// it is recommended that the message descriptor be used instead.
func (x *fastReflection_ProofResponse) Type() protoreflect.MessageType {
	return _fastReflection_ProofResponse_messageType
}

// New returns a newly allocated and mutable empty message.
func (x *fastReflection_ProofResponse) New() protoreflect.Message {
	return new(fastReflection_ProofResponse)
}

// Interface unwraps the message reflection interface and
// returns the underlying ProtoMessage interface.
func (x *fastReflection_ProofResponse) Interface() protoreflect.ProtoMessage {
	return (*ProofResponse)(x)
}

// Range iterates over every populated field in an undefined order,
// calling f for each field descriptor and value encountered.
// Range returns immediately if f returns false.
// While iterating, mutating operations may only be performed
// on the current field descriptor.
func (x *fastReflection_ProofResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {
	if x.Height != int64(0) {
		value := protoreflect.ValueOfInt64(x.Height)
		if !f(fd_ProofResponse_height, value) {
			return
		}
	}
	if x.Result != nil {
		value := protoreflect.ValueOfMessage(x.Result.ProtoReflect())
		if !f(fd_ProofResponse_result, value) {
			return
		}
	}
}

// Has reports whether a field is populated.
//
// Some fields have the property of nullability where it is possible to
// distinguish between the default value of a field and whether the field
// was explicitly populated with the default value. Singular message fields,
// member fields of a oneof, and proto2 scalar fields are nullable. Such
// fields are populated only if explicitly set.
//
// In other cases (aside from the nullable cases above),
// a proto3 scalar field is populated if it contains a non-zero value, and
// a repeated field is populated if it is non-empty.
func (x *fastReflection_ProofResponse) Has(fd protoreflect.FieldDescriptor) bool {
	switch fd.FullName() {
	case "band.base.oracle.v1.ProofResponse.height":
		return x.Height != int64(0)
	case "band.base.oracle.v1.ProofResponse.result":
		return x.Result != nil
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.ProofResponse"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.ProofResponse does not contain field %s", fd.FullName()))
	}
}

// Clear clears the field such that a subsequent Has call reports false.
//
// Clearing an extension field clears both the extension type and value
// associated with the given field number.
//
// Clear is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_ProofResponse) Clear(fd protoreflect.FieldDescriptor) {
	switch fd.FullName() {
	case "band.base.oracle.v1.ProofResponse.height":
		x.Height = int64(0)
	case "band.base.oracle.v1.ProofResponse.result":
		x.Result = nil
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.ProofResponse"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.ProofResponse does not contain field %s", fd.FullName()))
	}
}

// Get retrieves the value for a field.
//
// For unpopulated scalars, it returns the default value, where
// the default value of a bytes scalar is guaranteed to be a copy.
// For unpopulated composite types, it returns an empty, read-only view
// of the value; to obtain a mutable reference, use Mutable.
func (x *fastReflection_ProofResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {
	switch descriptor.FullName() {
	case "band.base.oracle.v1.ProofResponse.height":
		value := x.Height
		return protoreflect.ValueOfInt64(value)
	case "band.base.oracle.v1.ProofResponse.result":
		value := x.Result
		return protoreflect.ValueOfMessage(value.ProtoReflect())
	default:
		if descriptor.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.ProofResponse"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.ProofResponse does not contain field %s", descriptor.FullName()))
	}
}

// Set stores the value for a field.
//
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType.
// When setting a composite type, it is unspecified whether the stored value
// aliases the source's memory in any way. If the composite value is an
// empty, read-only value, then it panics.
//
// Set is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_ProofResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {
	switch fd.FullName() {
	case "band.base.oracle.v1.ProofResponse.height":
		x.Height = value.Int()
	case "band.base.oracle.v1.ProofResponse.result":
		x.Result = value.Message().Interface().(*SingleProofResult)
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.ProofResponse"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.ProofResponse does not contain field %s", fd.FullName()))
	}
}

// Mutable returns a mutable reference to a composite type.
//
// If the field is unpopulated, it may allocate a composite value.
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType
// if not already stored.
// It panics if the field does not contain a composite type.
//
// Mutable is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_ProofResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {
	switch fd.FullName() {
	case "band.base.oracle.v1.ProofResponse.result":
		if x.Result == nil {
			x.Result = new(SingleProofResult)
		}
		return protoreflect.ValueOfMessage(x.Result.ProtoReflect())
	case "band.base.oracle.v1.ProofResponse.height":
		panic(fmt.Errorf("field height of message band.base.oracle.v1.ProofResponse is not mutable"))
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.ProofResponse"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.ProofResponse does not contain field %s", fd.FullName()))
	}
}

// NewField returns a new value that is assignable to the field
// for the given descriptor. For scalars, this returns the default value.
// For lists, maps, and messages, this returns a new, empty, mutable value.
func (x *fastReflection_ProofResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {
	switch fd.FullName() {
	case "band.base.oracle.v1.ProofResponse.height":
		return protoreflect.ValueOfInt64(int64(0))
	case "band.base.oracle.v1.ProofResponse.result":
		m := new(SingleProofResult)
		return protoreflect.ValueOfMessage(m.ProtoReflect())
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.ProofResponse"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.ProofResponse does not contain field %s", fd.FullName()))
	}
}

// WhichOneof reports which field within the oneof is populated,
// returning nil if none are populated.
// It panics if the oneof descriptor does not belong to this message.
func (x *fastReflection_ProofResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {
	switch d.FullName() {
	default:
		panic(fmt.Errorf("%s is not a oneof field in band.base.oracle.v1.ProofResponse", d.FullName()))
	}
	panic("unreachable")
}

// GetUnknown retrieves the entire list of unknown fields.
// The caller may only mutate the contents of the RawFields
// if the mutated bytes are stored back into the message with SetUnknown.
func (x *fastReflection_ProofResponse) GetUnknown() protoreflect.RawFields {
	return x.unknownFields
}

// SetUnknown stores an entire list of unknown fields.
// The raw fields must be syntactically valid according to the wire format.
// An implementation may panic if this is not the case.
// Once stored, the caller must not mutate the content of the RawFields.
// An empty RawFields may be passed to clear the fields.
//
// SetUnknown is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_ProofResponse) SetUnknown(fields protoreflect.RawFields) {
	x.unknownFields = fields
}

// IsValid reports whether the message is valid.
//
// An invalid message is an empty, read-only value.
//
// An invalid message often corresponds to a nil pointer of the concrete
// message type, but the details are implementation dependent.
// Validity is not part of the protobuf data model, and may not
// be preserved in marshaling or other operations.
func (x *fastReflection_ProofResponse) IsValid() bool {
	return x != nil
}

// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.
// This method may return nil.
//
// The returned methods type is identical to
// "google.golang.org/protobuf/runtime/protoiface".Methods.
// Consult the protoiface package documentation for details.
func (x *fastReflection_ProofResponse) ProtoMethods() *protoiface.Methods {
	size := func(input protoiface.SizeInput) protoiface.SizeOutput {
		x := input.Message.Interface().(*ProofResponse)
		if x == nil {
			return protoiface.SizeOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Size:              0,
			}
		}
		options := runtime.SizeInputToOptions(input)
		_ = options
		var n int
		var l int
		_ = l
		if x.Height != 0 {
			n += 1 + runtime.Sov(uint64(x.Height))
		}
		if x.Result != nil {
			l = options.Size(x.Result)
			n += 1 + l + runtime.Sov(uint64(l))
		}
		if x.unknownFields != nil {
			n += len(x.unknownFields)
		}
		return protoiface.SizeOutput{
			NoUnkeyedLiterals: input.NoUnkeyedLiterals,
			Size:              n,
		}
	}

	marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {
		x := input.Message.Interface().(*ProofResponse)
		if x == nil {
			return protoiface.MarshalOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Buf:               input.Buf,
			}, nil
		}
		options := runtime.MarshalInputToOptions(input)
		_ = options
		size := options.Size(x)
		dAtA := make([]byte, size)
		i := len(dAtA)
		_ = i
		var l int
		_ = l
		if x.unknownFields != nil {
			i -= len(x.unknownFields)
			copy(dAtA[i:], x.unknownFields)
		}
		if x.Result != nil {
			encoded, err := options.Marshal(x.Result)
			if err != nil {
				return protoiface.MarshalOutput{
					NoUnkeyedLiterals: input.NoUnkeyedLiterals,
					Buf:               input.Buf,
				}, err
			}
			i -= len(encoded)
			copy(dAtA[i:], encoded)
			i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))
			i--
			dAtA[i] = 0x12
		}
		if x.Height != 0 {
			i = runtime.EncodeVarint(dAtA, i, uint64(x.Height))
			i--
			dAtA[i] = 0x8
		}
		if input.Buf != nil {
			input.Buf = append(input.Buf, dAtA...)
		} else {
			input.Buf = dAtA
		}
		return protoiface.MarshalOutput{
			NoUnkeyedLiterals: input.NoUnkeyedLiterals,
			Buf:               input.Buf,
		}, nil
	}
	unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {
		x := input.Message.Interface().(*ProofResponse)
		if x == nil {
			return protoiface.UnmarshalOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Flags:             input.Flags,
			}, nil
		}
		options := runtime.UnmarshalInputToOptions(input)
		_ = options
		dAtA := input.Buf
		l := len(dAtA)
		iNdEx := 0
		for iNdEx < l {
			preIndex := iNdEx
			var wire uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
				}
				if iNdEx >= l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				wire |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			fieldNum := int32(wire >> 3)
			wireType := int(wire & 0x7)
			if wireType == 4 {
				return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: ProofResponse: wiretype end group for non-group")
			}
			if fieldNum <= 0 {
				return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: ProofResponse: illegal tag %d (wire type %d)", fieldNum, wire)
			}
			switch fieldNum {
			case 1:
				if wireType != 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Height", wireType)
				}
				x.Height = 0
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					x.Height |= int64(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
			case 2:
				if wireType != 2 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Result", wireType)
				}
				var msglen int
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					msglen |= int(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
				if msglen < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				postIndex := iNdEx + msglen
				if postIndex < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if postIndex > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				if x.Result == nil {
					x.Result = &SingleProofResult{}
				}
				if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Result); err != nil {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
				}
				iNdEx = postIndex
			default:
				iNdEx = preIndex
				skippy, err := runtime.Skip(dAtA[iNdEx:])
				if err != nil {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
				}
				if (skippy < 0) || (iNdEx+skippy) < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if (iNdEx + skippy) > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				if !options.DiscardUnknown {
					x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
				}
				iNdEx += skippy
			}
		}

		if iNdEx > l {
			return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
		}
		return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil
	}
	return &protoiface.Methods{
		NoUnkeyedLiterals: struct{}{},
		Flags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,
		Size:              size,
		Marshal:           marshal,
		Unmarshal:         unmarshal,
		Merge:             nil,
		CheckInitialized:  nil,
	}
}

var _ protoreflect.List = (*_MultiProofRequest_1_list)(nil)

type _MultiProofRequest_1_list struct {
	list *[]uint64
}

func (x *_MultiProofRequest_1_list) Len() int {
	if x.list == nil {
		return 0
	}
	return len(*x.list)
}

func (x *_MultiProofRequest_1_list) Get(i int) protoreflect.Value {
	return protoreflect.ValueOfUint64((*x.list)[i])
}

func (x *_MultiProofRequest_1_list) Set(i int, value protoreflect.Value) {
	valueUnwrapped := value.Uint()
	concreteValue := valueUnwrapped
	(*x.list)[i] = concreteValue
}

func (x *_MultiProofRequest_1_list) Append(value protoreflect.Value) {
	valueUnwrapped := value.Uint()
	concreteValue := valueUnwrapped
	*x.list = append(*x.list, concreteValue)
}

func (x *_MultiProofRequest_1_list) AppendMutable() protoreflect.Value {
	panic(fmt.Errorf("AppendMutable can not be called on message MultiProofRequest at list field RequestIds as it is not of Message kind"))
}

func (x *_MultiProofRequest_1_list) Truncate(n int) {
	*x.list = (*x.list)[:n]
}

func (x *_MultiProofRequest_1_list) NewElement() protoreflect.Value {
	v := uint64(0)
	return protoreflect.ValueOfUint64(v)
}

func (x *_MultiProofRequest_1_list) IsValid() bool {
	return x.list != nil
}

var (
	md_MultiProofRequest             protoreflect.MessageDescriptor
	fd_MultiProofRequest_request_ids protoreflect.FieldDescriptor
)

func init() {
	file_band_base_oracle_v1_proof_proto_init()
	md_MultiProofRequest = File_band_base_oracle_v1_proof_proto.Messages().ByName("MultiProofRequest")
	fd_MultiProofRequest_request_ids = md_MultiProofRequest.Fields().ByName("request_ids")
}

var _ protoreflect.Message = (*fastReflection_MultiProofRequest)(nil)

type fastReflection_MultiProofRequest MultiProofRequest

func (x *MultiProofRequest) ProtoReflect() protoreflect.Message {
	return (*fastReflection_MultiProofRequest)(x)
}

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

var _fastReflection_MultiProofRequest_messageType fastReflection_MultiProofRequest_messageType
var _ protoreflect.MessageType = fastReflection_MultiProofRequest_messageType{}

type fastReflection_MultiProofRequest_messageType struct{}

func (x fastReflection_MultiProofRequest_messageType) Zero() protoreflect.Message {
	return (*fastReflection_MultiProofRequest)(nil)
}
func (x fastReflection_MultiProofRequest_messageType) New() protoreflect.Message {
	return new(fastReflection_MultiProofRequest)
}
func (x fastReflection_MultiProofRequest_messageType) Descriptor() protoreflect.MessageDescriptor {
	return md_MultiProofRequest
}

// Descriptor returns message descriptor, which contains only the protobuf
// type information for the message.
func (x *fastReflection_MultiProofRequest) Descriptor() protoreflect.MessageDescriptor {
	return md_MultiProofRequest
}

// Type returns the message type, which encapsulates both Go and protobuf
// type information. If the Go type information is not needed,
// it is recommended that the message descriptor be used instead.
func (x *fastReflection_MultiProofRequest) Type() protoreflect.MessageType {
	return _fastReflection_MultiProofRequest_messageType
}

// New returns a newly allocated and mutable empty message.
func (x *fastReflection_MultiProofRequest) New() protoreflect.Message {
	return new(fastReflection_MultiProofRequest)
}

// Interface unwraps the message reflection interface and
// returns the underlying ProtoMessage interface.
func (x *fastReflection_MultiProofRequest) Interface() protoreflect.ProtoMessage {
	return (*MultiProofRequest)(x)
}

// Range iterates over every populated field in an undefined order,
// calling f for each field descriptor and value encountered.
// Range returns immediately if f returns false.
// While iterating, mutating operations may only be performed
// on the current field descriptor.
func (x *fastReflection_MultiProofRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {
	if len(x.RequestIds) != 0 {
		value := protoreflect.ValueOfList(&_MultiProofRequest_1_list{list: &x.RequestIds})
		if !f(fd_MultiProofRequest_request_ids, value) {
			return
		}
	}
}

// Has reports whether a field is populated.
//
// Some fields have the property of nullability where it is possible to
// distinguish between the default value of a field and whether the field
// was explicitly populated with the default value. Singular message fields,
// member fields of a oneof, and proto2 scalar fields are nullable. Such
// fields are populated only if explicitly set.
//
// In other cases (aside from the nullable cases above),
// a proto3 scalar field is populated if it contains a non-zero value, and
// a repeated field is populated if it is non-empty.
func (x *fastReflection_MultiProofRequest) Has(fd protoreflect.FieldDescriptor) bool {
	switch fd.FullName() {
	case "band.base.oracle.v1.MultiProofRequest.request_ids":
		return len(x.RequestIds) != 0
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.MultiProofRequest"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.MultiProofRequest does not contain field %s", fd.FullName()))
	}
}

// Clear clears the field such that a subsequent Has call reports false.
//
// Clearing an extension field clears both the extension type and value
// associated with the given field number.
//
// Clear is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_MultiProofRequest) Clear(fd protoreflect.FieldDescriptor) {
	switch fd.FullName() {
	case "band.base.oracle.v1.MultiProofRequest.request_ids":
		x.RequestIds = nil
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.MultiProofRequest"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.MultiProofRequest does not contain field %s", fd.FullName()))
	}
}

// Get retrieves the value for a field.
//
// For unpopulated scalars, it returns the default value, where
// the default value of a bytes scalar is guaranteed to be a copy.
// For unpopulated composite types, it returns an empty, read-only view
// of the value; to obtain a mutable reference, use Mutable.
func (x *fastReflection_MultiProofRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {
	switch descriptor.FullName() {
	case "band.base.oracle.v1.MultiProofRequest.request_ids":
		if len(x.RequestIds) == 0 {
			return protoreflect.ValueOfList(&_MultiProofRequest_1_list{})
		}
		listValue := &_MultiProofRequest_1_list{list: &x.RequestIds}
		return protoreflect.ValueOfList(listValue)
	default:
		if descriptor.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.MultiProofRequest"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.MultiProofRequest does not contain field %s", descriptor.FullName()))
	}
}

// Set stores the value for a field.
//
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType.
// When setting a composite type, it is unspecified whether the stored value
// aliases the source's memory in any way. If the composite value is an
// empty, read-only value, then it panics.
//
// Set is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_MultiProofRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {
	switch fd.FullName() {
	case "band.base.oracle.v1.MultiProofRequest.request_ids":
		lv := value.List()
		clv := lv.(*_MultiProofRequest_1_list)
		x.RequestIds = *clv.list
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.MultiProofRequest"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.MultiProofRequest does not contain field %s", fd.FullName()))
	}
}

// Mutable returns a mutable reference to a composite type.
//
// If the field is unpopulated, it may allocate a composite value.
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType
// if not already stored.
// It panics if the field does not contain a composite type.
//
// Mutable is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_MultiProofRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {
	switch fd.FullName() {
	case "band.base.oracle.v1.MultiProofRequest.request_ids":
		if x.RequestIds == nil {
			x.RequestIds = []uint64{}
		}
		value := &_MultiProofRequest_1_list{list: &x.RequestIds}
		return protoreflect.ValueOfList(value)
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.MultiProofRequest"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.MultiProofRequest does not contain field %s", fd.FullName()))
	}
}

// NewField returns a new value that is assignable to the field
// for the given descriptor. For scalars, this returns the default value.
// For lists, maps, and messages, this returns a new, empty, mutable value.
func (x *fastReflection_MultiProofRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {
	switch fd.FullName() {
	case "band.base.oracle.v1.MultiProofRequest.request_ids":
		list := []uint64{}
		return protoreflect.ValueOfList(&_MultiProofRequest_1_list{list: &list})
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.MultiProofRequest"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.MultiProofRequest does not contain field %s", fd.FullName()))
	}
}

// WhichOneof reports which field within the oneof is populated,
// returning nil if none are populated.
// It panics if the oneof descriptor does not belong to this message.
func (x *fastReflection_MultiProofRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {
	switch d.FullName() {
	default:
		panic(fmt.Errorf("%s is not a oneof field in band.base.oracle.v1.MultiProofRequest", d.FullName()))
	}
	panic("unreachable")
}

// GetUnknown retrieves the entire list of unknown fields.
// The caller may only mutate the contents of the RawFields
// if the mutated bytes are stored back into the message with SetUnknown.
func (x *fastReflection_MultiProofRequest) GetUnknown() protoreflect.RawFields {
	return x.unknownFields
}

// SetUnknown stores an entire list of unknown fields.
// The raw fields must be syntactically valid according to the wire format.
// An implementation may panic if this is not the case.
// Once stored, the caller must not mutate the content of the RawFields.
// An empty RawFields may be passed to clear the fields.
//
// SetUnknown is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_MultiProofRequest) SetUnknown(fields protoreflect.RawFields) {
	x.unknownFields = fields
}

// IsValid reports whether the message is valid.
//
// An invalid message is an empty, read-only value.
//
// An invalid message often corresponds to a nil pointer of the concrete
// message type, but the details are implementation dependent.
// Validity is not part of the protobuf data model, and may not
// be preserved in marshaling or other operations.
func (x *fastReflection_MultiProofRequest) IsValid() bool {
	return x != nil
}

// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.
// This method may return nil.
//
// The returned methods type is identical to
// "google.golang.org/protobuf/runtime/protoiface".Methods.
// Consult the protoiface package documentation for details.
func (x *fastReflection_MultiProofRequest) ProtoMethods() *protoiface.Methods {
	size := func(input protoiface.SizeInput) protoiface.SizeOutput {
		x := input.Message.Interface().(*MultiProofRequest)
		if x == nil {
			return protoiface.SizeOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Size:              0,
			}
		}
		options := runtime.SizeInputToOptions(input)
		_ = options
		var n int
		var l int
		_ = l
		if len(x.RequestIds) > 0 {
			l = 0
			for _, e := range x.RequestIds {
				l += runtime.Sov(uint64(e))
			}
			n += 1 + runtime.Sov(uint64(l)) + l
		}
		if x.unknownFields != nil {
			n += len(x.unknownFields)
		}
		return protoiface.SizeOutput{
			NoUnkeyedLiterals: input.NoUnkeyedLiterals,
			Size:              n,
		}
	}

	marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {
		x := input.Message.Interface().(*MultiProofRequest)
		if x == nil {
			return protoiface.MarshalOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Buf:               input.Buf,
			}, nil
		}
		options := runtime.MarshalInputToOptions(input)
		_ = options
		size := options.Size(x)
		dAtA := make([]byte, size)
		i := len(dAtA)
		_ = i
		var l int
		_ = l
		if x.unknownFields != nil {
			i -= len(x.unknownFields)
			copy(dAtA[i:], x.unknownFields)
		}
		if len(x.RequestIds) > 0 {
			var pksize2 int
			for _, num := range x.RequestIds {
				pksize2 += runtime.Sov(uint64(num))
			}
			i -= pksize2
			j1 := i
			for _, num := range x.RequestIds {
				for num >= 1<<7 {
					dAtA[j1] = uint8(uint64(num)&0x7f | 0x80)
					num >>= 7
					j1++
				}
				dAtA[j1] = uint8(num)
				j1++
			}
			i = runtime.EncodeVarint(dAtA, i, uint64(pksize2))
			i--
			dAtA[i] = 0xa
		}
		if input.Buf != nil {
			input.Buf = append(input.Buf, dAtA...)
		} else {
			input.Buf = dAtA
		}
		return protoiface.MarshalOutput{
			NoUnkeyedLiterals: input.NoUnkeyedLiterals,
			Buf:               input.Buf,
		}, nil
	}
	unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {
		x := input.Message.Interface().(*MultiProofRequest)
		if x == nil {
			return protoiface.UnmarshalOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Flags:             input.Flags,
			}, nil
		}
		options := runtime.UnmarshalInputToOptions(input)
		_ = options
		dAtA := input.Buf
		l := len(dAtA)
		iNdEx := 0
		for iNdEx < l {
			preIndex := iNdEx
			var wire uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
				}
				if iNdEx >= l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				wire |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			fieldNum := int32(wire >> 3)
			wireType := int(wire & 0x7)
			if wireType == 4 {
				return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MultiProofRequest: wiretype end group for non-group")
			}
			if fieldNum <= 0 {
				return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MultiProofRequest: illegal tag %d (wire type %d)", fieldNum, wire)
			}
			switch fieldNum {
			case 1:
				if wireType == 0 {
					var v uint64
					for shift := uint(0); ; shift += 7 {
						if shift >= 64 {
							return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
						}
						if iNdEx >= l {
							return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
						}
						b := dAtA[iNdEx]
						iNdEx++
						v |= uint64(b&0x7F) << shift
						if b < 0x80 {
							break
						}
					}
					x.RequestIds = append(x.RequestIds, v)
				} else if wireType == 2 {
					var packedLen int
					for shift := uint(0); ; shift += 7 {
						if shift >= 64 {
							return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
						}
						if iNdEx >= l {
							return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
						}
						b := dAtA[iNdEx]
						iNdEx++
						packedLen |= int(b&0x7F) << shift
						if b < 0x80 {
							break
						}
					}
					if packedLen < 0 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
					}
					postIndex := iNdEx + packedLen
					if postIndex < 0 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
					}
					if postIndex > l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					var elementCount int
					var count int
					for _, integer := range dAtA[iNdEx:postIndex] {
						if integer < 128 {
							count++
						}
					}
					elementCount = count
					if elementCount != 0 && len(x.RequestIds) == 0 {
						x.RequestIds = make([]uint64, 0, elementCount)
					}
					for iNdEx < postIndex {
						var v uint64
						for shift := uint(0); ; shift += 7 {
							if shift >= 64 {
								return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
							}
							if iNdEx >= l {
								return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
							}
							b := dAtA[iNdEx]
							iNdEx++
							v |= uint64(b&0x7F) << shift
							if b < 0x80 {
								break
							}
						}
						x.RequestIds = append(x.RequestIds, v)
					}
				} else {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field RequestIds", wireType)
				}
			default:
				iNdEx = preIndex
				skippy, err := runtime.Skip(dAtA[iNdEx:])
				if err != nil {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
				}
				if (skippy < 0) || (iNdEx+skippy) < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if (iNdEx + skippy) > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				if !options.DiscardUnknown {
					x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
				}
				iNdEx += skippy
			}
		}

		if iNdEx > l {
			return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
		}
		return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil
	}
	return &protoiface.Methods{
		NoUnkeyedLiterals: struct{}{},
		Flags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,
		Size:              size,
		Marshal:           marshal,
		Unmarshal:         unmarshal,
		Merge:             nil,
		CheckInitialized:  nil,
	}
}

var (
	md_MultiProofResponse        protoreflect.MessageDescriptor
	fd_MultiProofResponse_height protoreflect.FieldDescriptor
	fd_MultiProofResponse_result protoreflect.FieldDescriptor
)

func init() {
	file_band_base_oracle_v1_proof_proto_init()
	md_MultiProofResponse = File_band_base_oracle_v1_proof_proto.Messages().ByName("MultiProofResponse")
	fd_MultiProofResponse_height = md_MultiProofResponse.Fields().ByName("height")
	fd_MultiProofResponse_result = md_MultiProofResponse.Fields().ByName("result")
}

var _ protoreflect.Message = (*fastReflection_MultiProofResponse)(nil)

type fastReflection_MultiProofResponse MultiProofResponse

func (x *MultiProofResponse) ProtoReflect() protoreflect.Message {
	return (*fastReflection_MultiProofResponse)(x)
}

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

var _fastReflection_MultiProofResponse_messageType fastReflection_MultiProofResponse_messageType
var _ protoreflect.MessageType = fastReflection_MultiProofResponse_messageType{}

type fastReflection_MultiProofResponse_messageType struct{}

func (x fastReflection_MultiProofResponse_messageType) Zero() protoreflect.Message {
	return (*fastReflection_MultiProofResponse)(nil)
}
func (x fastReflection_MultiProofResponse_messageType) New() protoreflect.Message {
	return new(fastReflection_MultiProofResponse)
}
func (x fastReflection_MultiProofResponse_messageType) Descriptor() protoreflect.MessageDescriptor {
	return md_MultiProofResponse
}

// Descriptor returns message descriptor, which contains only the protobuf
// type information for the message.
func (x *fastReflection_MultiProofResponse) Descriptor() protoreflect.MessageDescriptor {
	return md_MultiProofResponse
}

// Type returns the message type, which encapsulates both Go and protobuf
// type information. If the Go type information is not needed,
// it is recommended that the message descriptor be used instead.
func (x *fastReflection_MultiProofResponse) Type() protoreflect.MessageType {
	return _fastReflection_MultiProofResponse_messageType
}

// New returns a newly allocated and mutable empty message.
func (x *fastReflection_MultiProofResponse) New() protoreflect.Message {
	return new(fastReflection_MultiProofResponse)
}

// Interface unwraps the message reflection interface and
// returns the underlying ProtoMessage interface.
func (x *fastReflection_MultiProofResponse) Interface() protoreflect.ProtoMessage {
	return (*MultiProofResponse)(x)
}

// Range iterates over every populated field in an undefined order,
// calling f for each field descriptor and value encountered.
// Range returns immediately if f returns false.
// While iterating, mutating operations may only be performed
// on the current field descriptor.
func (x *fastReflection_MultiProofResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {
	if x.Height != int64(0) {
		value := protoreflect.ValueOfInt64(x.Height)
		if !f(fd_MultiProofResponse_height, value) {
			return
		}
	}
	if x.Result != nil {
		value := protoreflect.ValueOfMessage(x.Result.ProtoReflect())
		if !f(fd_MultiProofResponse_result, value) {
			return
		}
	}
}

// Has reports whether a field is populated.
//
// Some fields have the property of nullability where it is possible to
// distinguish between the default value of a field and whether the field
// was explicitly populated with the default value. Singular message fields,
// member fields of a oneof, and proto2 scalar fields are nullable. Such
// fields are populated only if explicitly set.
//
// In other cases (aside from the nullable cases above),
// a proto3 scalar field is populated if it contains a non-zero value, and
// a repeated field is populated if it is non-empty.
func (x *fastReflection_MultiProofResponse) Has(fd protoreflect.FieldDescriptor) bool {
	switch fd.FullName() {
	case "band.base.oracle.v1.MultiProofResponse.height":
		return x.Height != int64(0)
	case "band.base.oracle.v1.MultiProofResponse.result":
		return x.Result != nil
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.MultiProofResponse"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.MultiProofResponse does not contain field %s", fd.FullName()))
	}
}

// Clear clears the field such that a subsequent Has call reports false.
//
// Clearing an extension field clears both the extension type and value
// associated with the given field number.
//
// Clear is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_MultiProofResponse) Clear(fd protoreflect.FieldDescriptor) {
	switch fd.FullName() {
	case "band.base.oracle.v1.MultiProofResponse.height":
		x.Height = int64(0)
	case "band.base.oracle.v1.MultiProofResponse.result":
		x.Result = nil
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.MultiProofResponse"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.MultiProofResponse does not contain field %s", fd.FullName()))
	}
}

// Get retrieves the value for a field.
//
// For unpopulated scalars, it returns the default value, where
// the default value of a bytes scalar is guaranteed to be a copy.
// For unpopulated composite types, it returns an empty, read-only view
// of the value; to obtain a mutable reference, use Mutable.
func (x *fastReflection_MultiProofResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {
	switch descriptor.FullName() {
	case "band.base.oracle.v1.MultiProofResponse.height":
		value := x.Height
		return protoreflect.ValueOfInt64(value)
	case "band.base.oracle.v1.MultiProofResponse.result":
		value := x.Result
		return protoreflect.ValueOfMessage(value.ProtoReflect())
	default:
		if descriptor.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.MultiProofResponse"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.MultiProofResponse does not contain field %s", descriptor.FullName()))
	}
}

// Set stores the value for a field.
//
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType.
// When setting a composite type, it is unspecified whether the stored value
// aliases the source's memory in any way. If the composite value is an
// empty, read-only value, then it panics.
//
// Set is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_MultiProofResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {
	switch fd.FullName() {
	case "band.base.oracle.v1.MultiProofResponse.height":
		x.Height = value.Int()
	case "band.base.oracle.v1.MultiProofResponse.result":
		x.Result = value.Message().Interface().(*MultiProofResult)
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.MultiProofResponse"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.MultiProofResponse does not contain field %s", fd.FullName()))
	}
}

// Mutable returns a mutable reference to a composite type.
//
// If the field is unpopulated, it may allocate a composite value.
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType
// if not already stored.
// It panics if the field does not contain a composite type.
//
// Mutable is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_MultiProofResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {
	switch fd.FullName() {
	case "band.base.oracle.v1.MultiProofResponse.result":
		if x.Result == nil {
			x.Result = new(MultiProofResult)
		}
		return protoreflect.ValueOfMessage(x.Result.ProtoReflect())
	case "band.base.oracle.v1.MultiProofResponse.height":
		panic(fmt.Errorf("field height of message band.base.oracle.v1.MultiProofResponse is not mutable"))
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.MultiProofResponse"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.MultiProofResponse does not contain field %s", fd.FullName()))
	}
}

// NewField returns a new value that is assignable to the field
// for the given descriptor. For scalars, this returns the default value.
// For lists, maps, and messages, this returns a new, empty, mutable value.
func (x *fastReflection_MultiProofResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {
	switch fd.FullName() {
	case "band.base.oracle.v1.MultiProofResponse.height":
		return protoreflect.ValueOfInt64(int64(0))
	case "band.base.oracle.v1.MultiProofResponse.result":
		m := new(MultiProofResult)
		return protoreflect.ValueOfMessage(m.ProtoReflect())
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.MultiProofResponse"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.MultiProofResponse does not contain field %s", fd.FullName()))
	}
}

// WhichOneof reports which field within the oneof is populated,
// returning nil if none are populated.
// It panics if the oneof descriptor does not belong to this message.
func (x *fastReflection_MultiProofResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {
	switch d.FullName() {
	default:
		panic(fmt.Errorf("%s is not a oneof field in band.base.oracle.v1.MultiProofResponse", d.FullName()))
	}
	panic("unreachable")
}

// GetUnknown retrieves the entire list of unknown fields.
// The caller may only mutate the contents of the RawFields
// if the mutated bytes are stored back into the message with SetUnknown.
func (x *fastReflection_MultiProofResponse) GetUnknown() protoreflect.RawFields {
	return x.unknownFields
}

// SetUnknown stores an entire list of unknown fields.
// The raw fields must be syntactically valid according to the wire format.
// An implementation may panic if this is not the case.
// Once stored, the caller must not mutate the content of the RawFields.
// An empty RawFields may be passed to clear the fields.
//
// SetUnknown is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_MultiProofResponse) SetUnknown(fields protoreflect.RawFields) {
	x.unknownFields = fields
}

// IsValid reports whether the message is valid.
//
// An invalid message is an empty, read-only value.
//
// An invalid message often corresponds to a nil pointer of the concrete
// message type, but the details are implementation dependent.
// Validity is not part of the protobuf data model, and may not
// be preserved in marshaling or other operations.
func (x *fastReflection_MultiProofResponse) IsValid() bool {
	return x != nil
}

// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.
// This method may return nil.
//
// The returned methods type is identical to
// "google.golang.org/protobuf/runtime/protoiface".Methods.
// Consult the protoiface package documentation for details.
func (x *fastReflection_MultiProofResponse) ProtoMethods() *protoiface.Methods {
	size := func(input protoiface.SizeInput) protoiface.SizeOutput {
		x := input.Message.Interface().(*MultiProofResponse)
		if x == nil {
			return protoiface.SizeOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Size:              0,
			}
		}
		options := runtime.SizeInputToOptions(input)
		_ = options
		var n int
		var l int
		_ = l
		if x.Height != 0 {
			n += 1 + runtime.Sov(uint64(x.Height))
		}
		if x.Result != nil {
			l = options.Size(x.Result)
			n += 1 + l + runtime.Sov(uint64(l))
		}
		if x.unknownFields != nil {
			n += len(x.unknownFields)
		}
		return protoiface.SizeOutput{
			NoUnkeyedLiterals: input.NoUnkeyedLiterals,
			Size:              n,
		}
	}

	marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {
		x := input.Message.Interface().(*MultiProofResponse)
		if x == nil {
			return protoiface.MarshalOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Buf:               input.Buf,
			}, nil
		}
		options := runtime.MarshalInputToOptions(input)
		_ = options
		size := options.Size(x)
		dAtA := make([]byte, size)
		i := len(dAtA)
		_ = i
		var l int
		_ = l
		if x.unknownFields != nil {
			i -= len(x.unknownFields)
			copy(dAtA[i:], x.unknownFields)
		}
		if x.Result != nil {
			encoded, err := options.Marshal(x.Result)
			if err != nil {
				return protoiface.MarshalOutput{
					NoUnkeyedLiterals: input.NoUnkeyedLiterals,
					Buf:               input.Buf,
				}, err
			}
			i -= len(encoded)
			copy(dAtA[i:], encoded)
			i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))
			i--
			dAtA[i] = 0x12
		}
		if x.Height != 0 {
			i = runtime.EncodeVarint(dAtA, i, uint64(x.Height))
			i--
			dAtA[i] = 0x8
		}
		if input.Buf != nil {
			input.Buf = append(input.Buf, dAtA...)
		} else {
			input.Buf = dAtA
		}
		return protoiface.MarshalOutput{
			NoUnkeyedLiterals: input.NoUnkeyedLiterals,
			Buf:               input.Buf,
		}, nil
	}
	unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {
		x := input.Message.Interface().(*MultiProofResponse)
		if x == nil {
			return protoiface.UnmarshalOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Flags:             input.Flags,
			}, nil
		}
		options := runtime.UnmarshalInputToOptions(input)
		_ = options
		dAtA := input.Buf
		l := len(dAtA)
		iNdEx := 0
		for iNdEx < l {
			preIndex := iNdEx
			var wire uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
				}
				if iNdEx >= l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				wire |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			fieldNum := int32(wire >> 3)
			wireType := int(wire & 0x7)
			if wireType == 4 {
				return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MultiProofResponse: wiretype end group for non-group")
			}
			if fieldNum <= 0 {
				return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MultiProofResponse: illegal tag %d (wire type %d)", fieldNum, wire)
			}
			switch fieldNum {
			case 1:
				if wireType != 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Height", wireType)
				}
				x.Height = 0
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					x.Height |= int64(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
			case 2:
				if wireType != 2 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Result", wireType)
				}
				var msglen int
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					msglen |= int(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
				if msglen < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				postIndex := iNdEx + msglen
				if postIndex < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if postIndex > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				if x.Result == nil {
					x.Result = &MultiProofResult{}
				}
				if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Result); err != nil {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
				}
				iNdEx = postIndex
			default:
				iNdEx = preIndex
				skippy, err := runtime.Skip(dAtA[iNdEx:])
				if err != nil {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
				}
				if (skippy < 0) || (iNdEx+skippy) < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if (iNdEx + skippy) > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				if !options.DiscardUnknown {
					x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
				}
				iNdEx += skippy
			}
		}

		if iNdEx > l {
			return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
		}
		return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil
	}
	return &protoiface.Methods{
		NoUnkeyedLiterals: struct{}{},
		Flags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,
		Size:              size,
		Marshal:           marshal,
		Unmarshal:         unmarshal,
		Merge:             nil,
		CheckInitialized:  nil,
	}
}

var (
	md_RequestCountProofRequest protoreflect.MessageDescriptor
)

func init() {
	file_band_base_oracle_v1_proof_proto_init()
	md_RequestCountProofRequest = File_band_base_oracle_v1_proof_proto.Messages().ByName("RequestCountProofRequest")
}

var _ protoreflect.Message = (*fastReflection_RequestCountProofRequest)(nil)

type fastReflection_RequestCountProofRequest RequestCountProofRequest

func (x *RequestCountProofRequest) ProtoReflect() protoreflect.Message {
	return (*fastReflection_RequestCountProofRequest)(x)
}

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

var _fastReflection_RequestCountProofRequest_messageType fastReflection_RequestCountProofRequest_messageType
var _ protoreflect.MessageType = fastReflection_RequestCountProofRequest_messageType{}

type fastReflection_RequestCountProofRequest_messageType struct{}

func (x fastReflection_RequestCountProofRequest_messageType) Zero() protoreflect.Message {
	return (*fastReflection_RequestCountProofRequest)(nil)
}
func (x fastReflection_RequestCountProofRequest_messageType) New() protoreflect.Message {
	return new(fastReflection_RequestCountProofRequest)
}
func (x fastReflection_RequestCountProofRequest_messageType) Descriptor() protoreflect.MessageDescriptor {
	return md_RequestCountProofRequest
}

// Descriptor returns message descriptor, which contains only the protobuf
// type information for the message.
func (x *fastReflection_RequestCountProofRequest) Descriptor() protoreflect.MessageDescriptor {
	return md_RequestCountProofRequest
}

// Type returns the message type, which encapsulates both Go and protobuf
// type information. If the Go type information is not needed,
// it is recommended that the message descriptor be used instead.
func (x *fastReflection_RequestCountProofRequest) Type() protoreflect.MessageType {
	return _fastReflection_RequestCountProofRequest_messageType
}

// New returns a newly allocated and mutable empty message.
func (x *fastReflection_RequestCountProofRequest) New() protoreflect.Message {
	return new(fastReflection_RequestCountProofRequest)
}

// Interface unwraps the message reflection interface and
// returns the underlying ProtoMessage interface.
func (x *fastReflection_RequestCountProofRequest) Interface() protoreflect.ProtoMessage {
	return (*RequestCountProofRequest)(x)
}

// Range iterates over every populated field in an undefined order,
// calling f for each field descriptor and value encountered.
// Range returns immediately if f returns false.
// While iterating, mutating operations may only be performed
// on the current field descriptor.
func (x *fastReflection_RequestCountProofRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {
}

// Has reports whether a field is populated.
//
// Some fields have the property of nullability where it is possible to
// distinguish between the default value of a field and whether the field
// was explicitly populated with the default value. Singular message fields,
// member fields of a oneof, and proto2 scalar fields are nullable. Such
// fields are populated only if explicitly set.
//
// In other cases (aside from the nullable cases above),
// a proto3 scalar field is populated if it contains a non-zero value, and
// a repeated field is populated if it is non-empty.
func (x *fastReflection_RequestCountProofRequest) Has(fd protoreflect.FieldDescriptor) bool {
	switch fd.FullName() {
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.RequestCountProofRequest"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.RequestCountProofRequest does not contain field %s", fd.FullName()))
	}
}

// Clear clears the field such that a subsequent Has call reports false.
//
// Clearing an extension field clears both the extension type and value
// associated with the given field number.
//
// Clear is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_RequestCountProofRequest) Clear(fd protoreflect.FieldDescriptor) {
	switch fd.FullName() {
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.RequestCountProofRequest"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.RequestCountProofRequest does not contain field %s", fd.FullName()))
	}
}

// Get retrieves the value for a field.
//
// For unpopulated scalars, it returns the default value, where
// the default value of a bytes scalar is guaranteed to be a copy.
// For unpopulated composite types, it returns an empty, read-only view
// of the value; to obtain a mutable reference, use Mutable.
func (x *fastReflection_RequestCountProofRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {
	switch descriptor.FullName() {
	default:
		if descriptor.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.RequestCountProofRequest"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.RequestCountProofRequest does not contain field %s", descriptor.FullName()))
	}
}

// Set stores the value for a field.
//
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType.
// When setting a composite type, it is unspecified whether the stored value
// aliases the source's memory in any way. If the composite value is an
// empty, read-only value, then it panics.
//
// Set is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_RequestCountProofRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {
	switch fd.FullName() {
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.RequestCountProofRequest"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.RequestCountProofRequest does not contain field %s", fd.FullName()))
	}
}

// Mutable returns a mutable reference to a composite type.
//
// If the field is unpopulated, it may allocate a composite value.
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType
// if not already stored.
// It panics if the field does not contain a composite type.
//
// Mutable is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_RequestCountProofRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {
	switch fd.FullName() {
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.RequestCountProofRequest"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.RequestCountProofRequest does not contain field %s", fd.FullName()))
	}
}

// NewField returns a new value that is assignable to the field
// for the given descriptor. For scalars, this returns the default value.
// For lists, maps, and messages, this returns a new, empty, mutable value.
func (x *fastReflection_RequestCountProofRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {
	switch fd.FullName() {
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.RequestCountProofRequest"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.RequestCountProofRequest does not contain field %s", fd.FullName()))
	}
}

// WhichOneof reports which field within the oneof is populated,
// returning nil if none are populated.
// It panics if the oneof descriptor does not belong to this message.
func (x *fastReflection_RequestCountProofRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {
	switch d.FullName() {
	default:
		panic(fmt.Errorf("%s is not a oneof field in band.base.oracle.v1.RequestCountProofRequest", d.FullName()))
	}
	panic("unreachable")
}

// GetUnknown retrieves the entire list of unknown fields.
// The caller may only mutate the contents of the RawFields
// if the mutated bytes are stored back into the message with SetUnknown.
func (x *fastReflection_RequestCountProofRequest) GetUnknown() protoreflect.RawFields {
	return x.unknownFields
}

// SetUnknown stores an entire list of unknown fields.
// The raw fields must be syntactically valid according to the wire format.
// An implementation may panic if this is not the case.
// Once stored, the caller must not mutate the content of the RawFields.
// An empty RawFields may be passed to clear the fields.
//
// SetUnknown is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_RequestCountProofRequest) SetUnknown(fields protoreflect.RawFields) {
	x.unknownFields = fields
}

// IsValid reports whether the message is valid.
//
// An invalid message is an empty, read-only value.
//
// An invalid message often corresponds to a nil pointer of the concrete
// message type, but the details are implementation dependent.
// Validity is not part of the protobuf data model, and may not
// be preserved in marshaling or other operations.
func (x *fastReflection_RequestCountProofRequest) IsValid() bool {
	return x != nil
}

// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.
// This method may return nil.
//
// The returned methods type is identical to
// "google.golang.org/protobuf/runtime/protoiface".Methods.
// Consult the protoiface package documentation for details.
func (x *fastReflection_RequestCountProofRequest) ProtoMethods() *protoiface.Methods {
	size := func(input protoiface.SizeInput) protoiface.SizeOutput {
		x := input.Message.Interface().(*RequestCountProofRequest)
		if x == nil {
			return protoiface.SizeOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Size:              0,
			}
		}
		options := runtime.SizeInputToOptions(input)
		_ = options
		var n int
		var l int
		_ = l
		if x.unknownFields != nil {
			n += len(x.unknownFields)
		}
		return protoiface.SizeOutput{
			NoUnkeyedLiterals: input.NoUnkeyedLiterals,
			Size:              n,
		}
	}

	marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {
		x := input.Message.Interface().(*RequestCountProofRequest)
		if x == nil {
			return protoiface.MarshalOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Buf:               input.Buf,
			}, nil
		}
		options := runtime.MarshalInputToOptions(input)
		_ = options
		size := options.Size(x)
		dAtA := make([]byte, size)
		i := len(dAtA)
		_ = i
		var l int
		_ = l
		if x.unknownFields != nil {
			i -= len(x.unknownFields)
			copy(dAtA[i:], x.unknownFields)
		}
		if input.Buf != nil {
			input.Buf = append(input.Buf, dAtA...)
		} else {
			input.Buf = dAtA
		}
		return protoiface.MarshalOutput{
			NoUnkeyedLiterals: input.NoUnkeyedLiterals,
			Buf:               input.Buf,
		}, nil
	}
	unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {
		x := input.Message.Interface().(*RequestCountProofRequest)
		if x == nil {
			return protoiface.UnmarshalOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Flags:             input.Flags,
			}, nil
		}
		options := runtime.UnmarshalInputToOptions(input)
		_ = options
		dAtA := input.Buf
		l := len(dAtA)
		iNdEx := 0
		for iNdEx < l {
			preIndex := iNdEx
			var wire uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
				}
				if iNdEx >= l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				wire |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			fieldNum := int32(wire >> 3)
			wireType := int(wire & 0x7)
			if wireType == 4 {
				return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: RequestCountProofRequest: wiretype end group for non-group")
			}
			if fieldNum <= 0 {
				return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: RequestCountProofRequest: illegal tag %d (wire type %d)", fieldNum, wire)
			}
			switch fieldNum {
			default:
				iNdEx = preIndex
				skippy, err := runtime.Skip(dAtA[iNdEx:])
				if err != nil {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
				}
				if (skippy < 0) || (iNdEx+skippy) < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if (iNdEx + skippy) > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				if !options.DiscardUnknown {
					x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
				}
				iNdEx += skippy
			}
		}

		if iNdEx > l {
			return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
		}
		return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil
	}
	return &protoiface.Methods{
		NoUnkeyedLiterals: struct{}{},
		Flags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,
		Size:              size,
		Marshal:           marshal,
		Unmarshal:         unmarshal,
		Merge:             nil,
		CheckInitialized:  nil,
	}
}

var (
	md_RequestCountProofResponse        protoreflect.MessageDescriptor
	fd_RequestCountProofResponse_height protoreflect.FieldDescriptor
	fd_RequestCountProofResponse_result protoreflect.FieldDescriptor
)

func init() {
	file_band_base_oracle_v1_proof_proto_init()
	md_RequestCountProofResponse = File_band_base_oracle_v1_proof_proto.Messages().ByName("RequestCountProofResponse")
	fd_RequestCountProofResponse_height = md_RequestCountProofResponse.Fields().ByName("height")
	fd_RequestCountProofResponse_result = md_RequestCountProofResponse.Fields().ByName("result")
}

var _ protoreflect.Message = (*fastReflection_RequestCountProofResponse)(nil)

type fastReflection_RequestCountProofResponse RequestCountProofResponse

func (x *RequestCountProofResponse) ProtoReflect() protoreflect.Message {
	return (*fastReflection_RequestCountProofResponse)(x)
}

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

var _fastReflection_RequestCountProofResponse_messageType fastReflection_RequestCountProofResponse_messageType
var _ protoreflect.MessageType = fastReflection_RequestCountProofResponse_messageType{}

type fastReflection_RequestCountProofResponse_messageType struct{}

func (x fastReflection_RequestCountProofResponse_messageType) Zero() protoreflect.Message {
	return (*fastReflection_RequestCountProofResponse)(nil)
}
func (x fastReflection_RequestCountProofResponse_messageType) New() protoreflect.Message {
	return new(fastReflection_RequestCountProofResponse)
}
func (x fastReflection_RequestCountProofResponse_messageType) Descriptor() protoreflect.MessageDescriptor {
	return md_RequestCountProofResponse
}

// Descriptor returns message descriptor, which contains only the protobuf
// type information for the message.
func (x *fastReflection_RequestCountProofResponse) Descriptor() protoreflect.MessageDescriptor {
	return md_RequestCountProofResponse
}

// Type returns the message type, which encapsulates both Go and protobuf
// type information. If the Go type information is not needed,
// it is recommended that the message descriptor be used instead.
func (x *fastReflection_RequestCountProofResponse) Type() protoreflect.MessageType {
	return _fastReflection_RequestCountProofResponse_messageType
}

// New returns a newly allocated and mutable empty message.
func (x *fastReflection_RequestCountProofResponse) New() protoreflect.Message {
	return new(fastReflection_RequestCountProofResponse)
}

// Interface unwraps the message reflection interface and
// returns the underlying ProtoMessage interface.
func (x *fastReflection_RequestCountProofResponse) Interface() protoreflect.ProtoMessage {
	return (*RequestCountProofResponse)(x)
}

// Range iterates over every populated field in an undefined order,
// calling f for each field descriptor and value encountered.
// Range returns immediately if f returns false.
// While iterating, mutating operations may only be performed
// on the current field descriptor.
func (x *fastReflection_RequestCountProofResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {
	if x.Height != int64(0) {
		value := protoreflect.ValueOfInt64(x.Height)
		if !f(fd_RequestCountProofResponse_height, value) {
			return
		}
	}
	if x.Result != nil {
		value := protoreflect.ValueOfMessage(x.Result.ProtoReflect())
		if !f(fd_RequestCountProofResponse_result, value) {
			return
		}
	}
}

// Has reports whether a field is populated.
//
// Some fields have the property of nullability where it is possible to
// distinguish between the default value of a field and whether the field
// was explicitly populated with the default value. Singular message fields,
// member fields of a oneof, and proto2 scalar fields are nullable. Such
// fields are populated only if explicitly set.
//
// In other cases (aside from the nullable cases above),
// a proto3 scalar field is populated if it contains a non-zero value, and
// a repeated field is populated if it is non-empty.
func (x *fastReflection_RequestCountProofResponse) Has(fd protoreflect.FieldDescriptor) bool {
	switch fd.FullName() {
	case "band.base.oracle.v1.RequestCountProofResponse.height":
		return x.Height != int64(0)
	case "band.base.oracle.v1.RequestCountProofResponse.result":
		return x.Result != nil
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.RequestCountProofResponse"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.RequestCountProofResponse does not contain field %s", fd.FullName()))
	}
}

// Clear clears the field such that a subsequent Has call reports false.
//
// Clearing an extension field clears both the extension type and value
// associated with the given field number.
//
// Clear is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_RequestCountProofResponse) Clear(fd protoreflect.FieldDescriptor) {
	switch fd.FullName() {
	case "band.base.oracle.v1.RequestCountProofResponse.height":
		x.Height = int64(0)
	case "band.base.oracle.v1.RequestCountProofResponse.result":
		x.Result = nil
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.RequestCountProofResponse"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.RequestCountProofResponse does not contain field %s", fd.FullName()))
	}
}

// Get retrieves the value for a field.
//
// For unpopulated scalars, it returns the default value, where
// the default value of a bytes scalar is guaranteed to be a copy.
// For unpopulated composite types, it returns an empty, read-only view
// of the value; to obtain a mutable reference, use Mutable.
func (x *fastReflection_RequestCountProofResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {
	switch descriptor.FullName() {
	case "band.base.oracle.v1.RequestCountProofResponse.height":
		value := x.Height
		return protoreflect.ValueOfInt64(value)
	case "band.base.oracle.v1.RequestCountProofResponse.result":
		value := x.Result
		return protoreflect.ValueOfMessage(value.ProtoReflect())
	default:
		if descriptor.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.RequestCountProofResponse"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.RequestCountProofResponse does not contain field %s", descriptor.FullName()))
	}
}

// Set stores the value for a field.
//
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType.
// When setting a composite type, it is unspecified whether the stored value
// aliases the source's memory in any way. If the composite value is an
// empty, read-only value, then it panics.
//
// Set is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_RequestCountProofResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {
	switch fd.FullName() {
	case "band.base.oracle.v1.RequestCountProofResponse.height":
		x.Height = value.Int()
	case "band.base.oracle.v1.RequestCountProofResponse.result":
		x.Result = value.Message().Interface().(*CountProofResult)
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.RequestCountProofResponse"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.RequestCountProofResponse does not contain field %s", fd.FullName()))
	}
}

// Mutable returns a mutable reference to a composite type.
//
// If the field is unpopulated, it may allocate a composite value.
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType
// if not already stored.
// It panics if the field does not contain a composite type.
//
// Mutable is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_RequestCountProofResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {
	switch fd.FullName() {
	case "band.base.oracle.v1.RequestCountProofResponse.result":
		if x.Result == nil {
			x.Result = new(CountProofResult)
		}
		return protoreflect.ValueOfMessage(x.Result.ProtoReflect())
	case "band.base.oracle.v1.RequestCountProofResponse.height":
		panic(fmt.Errorf("field height of message band.base.oracle.v1.RequestCountProofResponse is not mutable"))
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.RequestCountProofResponse"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.RequestCountProofResponse does not contain field %s", fd.FullName()))
	}
}

// NewField returns a new value that is assignable to the field
// for the given descriptor. For scalars, this returns the default value.
// For lists, maps, and messages, this returns a new, empty, mutable value.
func (x *fastReflection_RequestCountProofResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {
	switch fd.FullName() {
	case "band.base.oracle.v1.RequestCountProofResponse.height":
		return protoreflect.ValueOfInt64(int64(0))
	case "band.base.oracle.v1.RequestCountProofResponse.result":
		m := new(CountProofResult)
		return protoreflect.ValueOfMessage(m.ProtoReflect())
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.RequestCountProofResponse"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.RequestCountProofResponse does not contain field %s", fd.FullName()))
	}
}

// WhichOneof reports which field within the oneof is populated,
// returning nil if none are populated.
// It panics if the oneof descriptor does not belong to this message.
func (x *fastReflection_RequestCountProofResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {
	switch d.FullName() {
	default:
		panic(fmt.Errorf("%s is not a oneof field in band.base.oracle.v1.RequestCountProofResponse", d.FullName()))
	}
	panic("unreachable")
}

// GetUnknown retrieves the entire list of unknown fields.
// The caller may only mutate the contents of the RawFields
// if the mutated bytes are stored back into the message with SetUnknown.
func (x *fastReflection_RequestCountProofResponse) GetUnknown() protoreflect.RawFields {
	return x.unknownFields
}

// SetUnknown stores an entire list of unknown fields.
// The raw fields must be syntactically valid according to the wire format.
// An implementation may panic if this is not the case.
// Once stored, the caller must not mutate the content of the RawFields.
// An empty RawFields may be passed to clear the fields.
//
// SetUnknown is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_RequestCountProofResponse) SetUnknown(fields protoreflect.RawFields) {
	x.unknownFields = fields
}

// IsValid reports whether the message is valid.
//
// An invalid message is an empty, read-only value.
//
// An invalid message often corresponds to a nil pointer of the concrete
// message type, but the details are implementation dependent.
// Validity is not part of the protobuf data model, and may not
// be preserved in marshaling or other operations.
func (x *fastReflection_RequestCountProofResponse) IsValid() bool {
	return x != nil
}

// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.
// This method may return nil.
//
// The returned methods type is identical to
// "google.golang.org/protobuf/runtime/protoiface".Methods.
// Consult the protoiface package documentation for details.
func (x *fastReflection_RequestCountProofResponse) ProtoMethods() *protoiface.Methods {
	size := func(input protoiface.SizeInput) protoiface.SizeOutput {
		x := input.Message.Interface().(*RequestCountProofResponse)
		if x == nil {
			return protoiface.SizeOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Size:              0,
			}
		}
		options := runtime.SizeInputToOptions(input)
		_ = options
		var n int
		var l int
		_ = l
		if x.Height != 0 {
			n += 1 + runtime.Sov(uint64(x.Height))
		}
		if x.Result != nil {
			l = options.Size(x.Result)
			n += 1 + l + runtime.Sov(uint64(l))
		}
		if x.unknownFields != nil {
			n += len(x.unknownFields)
		}
		return protoiface.SizeOutput{
			NoUnkeyedLiterals: input.NoUnkeyedLiterals,
			Size:              n,
		}
	}

	marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {
		x := input.Message.Interface().(*RequestCountProofResponse)
		if x == nil {
			return protoiface.MarshalOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Buf:               input.Buf,
			}, nil
		}
		options := runtime.MarshalInputToOptions(input)
		_ = options
		size := options.Size(x)
		dAtA := make([]byte, size)
		i := len(dAtA)
		_ = i
		var l int
		_ = l
		if x.unknownFields != nil {
			i -= len(x.unknownFields)
			copy(dAtA[i:], x.unknownFields)
		}
		if x.Result != nil {
			encoded, err := options.Marshal(x.Result)
			if err != nil {
				return protoiface.MarshalOutput{
					NoUnkeyedLiterals: input.NoUnkeyedLiterals,
					Buf:               input.Buf,
				}, err
			}
			i -= len(encoded)
			copy(dAtA[i:], encoded)
			i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))
			i--
			dAtA[i] = 0x12
		}
		if x.Height != 0 {
			i = runtime.EncodeVarint(dAtA, i, uint64(x.Height))
			i--
			dAtA[i] = 0x8
		}
		if input.Buf != nil {
			input.Buf = append(input.Buf, dAtA...)
		} else {
			input.Buf = dAtA
		}
		return protoiface.MarshalOutput{
			NoUnkeyedLiterals: input.NoUnkeyedLiterals,
			Buf:               input.Buf,
		}, nil
	}
	unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {
		x := input.Message.Interface().(*RequestCountProofResponse)
		if x == nil {
			return protoiface.UnmarshalOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Flags:             input.Flags,
			}, nil
		}
		options := runtime.UnmarshalInputToOptions(input)
		_ = options
		dAtA := input.Buf
		l := len(dAtA)
		iNdEx := 0
		for iNdEx < l {
			preIndex := iNdEx
			var wire uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
				}
				if iNdEx >= l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				wire |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			fieldNum := int32(wire >> 3)
			wireType := int(wire & 0x7)
			if wireType == 4 {
				return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: RequestCountProofResponse: wiretype end group for non-group")
			}
			if fieldNum <= 0 {
				return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: RequestCountProofResponse: illegal tag %d (wire type %d)", fieldNum, wire)
			}
			switch fieldNum {
			case 1:
				if wireType != 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Height", wireType)
				}
				x.Height = 0
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					x.Height |= int64(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
			case 2:
				if wireType != 2 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Result", wireType)
				}
				var msglen int
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					msglen |= int(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
				if msglen < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				postIndex := iNdEx + msglen
				if postIndex < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if postIndex > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				if x.Result == nil {
					x.Result = &CountProofResult{}
				}
				if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Result); err != nil {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
				}
				iNdEx = postIndex
			default:
				iNdEx = preIndex
				skippy, err := runtime.Skip(dAtA[iNdEx:])
				if err != nil {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
				}
				if (skippy < 0) || (iNdEx+skippy) < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if (iNdEx + skippy) > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				if !options.DiscardUnknown {
					x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
				}
				iNdEx += skippy
			}
		}

		if iNdEx > l {
			return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
		}
		return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil
	}
	return &protoiface.Methods{
		NoUnkeyedLiterals: struct{}{},
		Flags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,
		Size:              size,
		Marshal:           marshal,
		Unmarshal:         unmarshal,
		Merge:             nil,
		CheckInitialized:  nil,
	}
}

var (
	md_SingleProofResult                 protoreflect.MessageDescriptor
	fd_SingleProofResult_proof           protoreflect.FieldDescriptor
	fd_SingleProofResult_evm_proof_bytes protoreflect.FieldDescriptor
)

func init() {
	file_band_base_oracle_v1_proof_proto_init()
	md_SingleProofResult = File_band_base_oracle_v1_proof_proto.Messages().ByName("SingleProofResult")
	fd_SingleProofResult_proof = md_SingleProofResult.Fields().ByName("proof")
	fd_SingleProofResult_evm_proof_bytes = md_SingleProofResult.Fields().ByName("evm_proof_bytes")
}

var _ protoreflect.Message = (*fastReflection_SingleProofResult)(nil)

type fastReflection_SingleProofResult SingleProofResult

func (x *SingleProofResult) ProtoReflect() protoreflect.Message {
	return (*fastReflection_SingleProofResult)(x)
}

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

var _fastReflection_SingleProofResult_messageType fastReflection_SingleProofResult_messageType
var _ protoreflect.MessageType = fastReflection_SingleProofResult_messageType{}

type fastReflection_SingleProofResult_messageType struct{}

func (x fastReflection_SingleProofResult_messageType) Zero() protoreflect.Message {
	return (*fastReflection_SingleProofResult)(nil)
}
func (x fastReflection_SingleProofResult_messageType) New() protoreflect.Message {
	return new(fastReflection_SingleProofResult)
}
func (x fastReflection_SingleProofResult_messageType) Descriptor() protoreflect.MessageDescriptor {
	return md_SingleProofResult
}

// Descriptor returns message descriptor, which contains only the protobuf
// type information for the message.
func (x *fastReflection_SingleProofResult) Descriptor() protoreflect.MessageDescriptor {
	return md_SingleProofResult
}

// Type returns the message type, which encapsulates both Go and protobuf
// type information. If the Go type information is not needed,
// it is recommended that the message descriptor be used instead.
func (x *fastReflection_SingleProofResult) Type() protoreflect.MessageType {
	return _fastReflection_SingleProofResult_messageType
}

// New returns a newly allocated and mutable empty message.
func (x *fastReflection_SingleProofResult) New() protoreflect.Message {
	return new(fastReflection_SingleProofResult)
}

// Interface unwraps the message reflection interface and
// returns the underlying ProtoMessage interface.
func (x *fastReflection_SingleProofResult) Interface() protoreflect.ProtoMessage {
	return (*SingleProofResult)(x)
}

// Range iterates over every populated field in an undefined order,
// calling f for each field descriptor and value encountered.
// Range returns immediately if f returns false.
// While iterating, mutating operations may only be performed
// on the current field descriptor.
func (x *fastReflection_SingleProofResult) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {
	if x.Proof != nil {
		value := protoreflect.ValueOfMessage(x.Proof.ProtoReflect())
		if !f(fd_SingleProofResult_proof, value) {
			return
		}
	}
	if len(x.EvmProofBytes) != 0 {
		value := protoreflect.ValueOfBytes(x.EvmProofBytes)
		if !f(fd_SingleProofResult_evm_proof_bytes, value) {
			return
		}
	}
}

// Has reports whether a field is populated.
//
// Some fields have the property of nullability where it is possible to
// distinguish between the default value of a field and whether the field
// was explicitly populated with the default value. Singular message fields,
// member fields of a oneof, and proto2 scalar fields are nullable. Such
// fields are populated only if explicitly set.
//
// In other cases (aside from the nullable cases above),
// a proto3 scalar field is populated if it contains a non-zero value, and
// a repeated field is populated if it is non-empty.
func (x *fastReflection_SingleProofResult) Has(fd protoreflect.FieldDescriptor) bool {
	switch fd.FullName() {
	case "band.base.oracle.v1.SingleProofResult.proof":
		return x.Proof != nil
	case "band.base.oracle.v1.SingleProofResult.evm_proof_bytes":
		return len(x.EvmProofBytes) != 0
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.SingleProofResult"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.SingleProofResult does not contain field %s", fd.FullName()))
	}
}

// Clear clears the field such that a subsequent Has call reports false.
//
// Clearing an extension field clears both the extension type and value
// associated with the given field number.
//
// Clear is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_SingleProofResult) Clear(fd protoreflect.FieldDescriptor) {
	switch fd.FullName() {
	case "band.base.oracle.v1.SingleProofResult.proof":
		x.Proof = nil
	case "band.base.oracle.v1.SingleProofResult.evm_proof_bytes":
		x.EvmProofBytes = nil
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.SingleProofResult"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.SingleProofResult does not contain field %s", fd.FullName()))
	}
}

// Get retrieves the value for a field.
//
// For unpopulated scalars, it returns the default value, where
// the default value of a bytes scalar is guaranteed to be a copy.
// For unpopulated composite types, it returns an empty, read-only view
// of the value; to obtain a mutable reference, use Mutable.
func (x *fastReflection_SingleProofResult) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {
	switch descriptor.FullName() {
	case "band.base.oracle.v1.SingleProofResult.proof":
		value := x.Proof
		return protoreflect.ValueOfMessage(value.ProtoReflect())
	case "band.base.oracle.v1.SingleProofResult.evm_proof_bytes":
		value := x.EvmProofBytes
		return protoreflect.ValueOfBytes(value)
	default:
		if descriptor.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.SingleProofResult"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.SingleProofResult does not contain field %s", descriptor.FullName()))
	}
}

// Set stores the value for a field.
//
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType.
// When setting a composite type, it is unspecified whether the stored value
// aliases the source's memory in any way. If the composite value is an
// empty, read-only value, then it panics.
//
// Set is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_SingleProofResult) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {
	switch fd.FullName() {
	case "band.base.oracle.v1.SingleProofResult.proof":
		x.Proof = value.Message().Interface().(*SingleProof)
	case "band.base.oracle.v1.SingleProofResult.evm_proof_bytes":
		x.EvmProofBytes = value.Bytes()
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.SingleProofResult"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.SingleProofResult does not contain field %s", fd.FullName()))
	}
}

// Mutable returns a mutable reference to a composite type.
//
// If the field is unpopulated, it may allocate a composite value.
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType
// if not already stored.
// It panics if the field does not contain a composite type.
//
// Mutable is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_SingleProofResult) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {
	switch fd.FullName() {
	case "band.base.oracle.v1.SingleProofResult.proof":
		if x.Proof == nil {
			x.Proof = new(SingleProof)
		}
		return protoreflect.ValueOfMessage(x.Proof.ProtoReflect())
	case "band.base.oracle.v1.SingleProofResult.evm_proof_bytes":
		panic(fmt.Errorf("field evm_proof_bytes of message band.base.oracle.v1.SingleProofResult is not mutable"))
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.SingleProofResult"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.SingleProofResult does not contain field %s", fd.FullName()))
	}
}

// NewField returns a new value that is assignable to the field
// for the given descriptor. For scalars, this returns the default value.
// For lists, maps, and messages, this returns a new, empty, mutable value.
func (x *fastReflection_SingleProofResult) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {
	switch fd.FullName() {
	case "band.base.oracle.v1.SingleProofResult.proof":
		m := new(SingleProof)
		return protoreflect.ValueOfMessage(m.ProtoReflect())
	case "band.base.oracle.v1.SingleProofResult.evm_proof_bytes":
		return protoreflect.ValueOfBytes(nil)
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.SingleProofResult"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.SingleProofResult does not contain field %s", fd.FullName()))
	}
}

// WhichOneof reports which field within the oneof is populated,
// returning nil if none are populated.
// It panics if the oneof descriptor does not belong to this message.
func (x *fastReflection_SingleProofResult) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {
	switch d.FullName() {
	default:
		panic(fmt.Errorf("%s is not a oneof field in band.base.oracle.v1.SingleProofResult", d.FullName()))
	}
	panic("unreachable")
}

// GetUnknown retrieves the entire list of unknown fields.
// The caller may only mutate the contents of the RawFields
// if the mutated bytes are stored back into the message with SetUnknown.
func (x *fastReflection_SingleProofResult) GetUnknown() protoreflect.RawFields {
	return x.unknownFields
}

// SetUnknown stores an entire list of unknown fields.
// The raw fields must be syntactically valid according to the wire format.
// An implementation may panic if this is not the case.
// Once stored, the caller must not mutate the content of the RawFields.
// An empty RawFields may be passed to clear the fields.
//
// SetUnknown is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_SingleProofResult) SetUnknown(fields protoreflect.RawFields) {
	x.unknownFields = fields
}

// IsValid reports whether the message is valid.
//
// An invalid message is an empty, read-only value.
//
// An invalid message often corresponds to a nil pointer of the concrete
// message type, but the details are implementation dependent.
// Validity is not part of the protobuf data model, and may not
// be preserved in marshaling or other operations.
func (x *fastReflection_SingleProofResult) IsValid() bool {
	return x != nil
}

// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.
// This method may return nil.
//
// The returned methods type is identical to
// "google.golang.org/protobuf/runtime/protoiface".Methods.
// Consult the protoiface package documentation for details.
func (x *fastReflection_SingleProofResult) ProtoMethods() *protoiface.Methods {
	size := func(input protoiface.SizeInput) protoiface.SizeOutput {
		x := input.Message.Interface().(*SingleProofResult)
		if x == nil {
			return protoiface.SizeOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Size:              0,
			}
		}
		options := runtime.SizeInputToOptions(input)
		_ = options
		var n int
		var l int
		_ = l
		if x.Proof != nil {
			l = options.Size(x.Proof)
			n += 1 + l + runtime.Sov(uint64(l))
		}
		l = len(x.EvmProofBytes)
		if l > 0 {
			n += 1 + l + runtime.Sov(uint64(l))
		}
		if x.unknownFields != nil {
			n += len(x.unknownFields)
		}
		return protoiface.SizeOutput{
			NoUnkeyedLiterals: input.NoUnkeyedLiterals,
			Size:              n,
		}
	}

	marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {
		x := input.Message.Interface().(*SingleProofResult)
		if x == nil {
			return protoiface.MarshalOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Buf:               input.Buf,
			}, nil
		}
		options := runtime.MarshalInputToOptions(input)
		_ = options
		size := options.Size(x)
		dAtA := make([]byte, size)
		i := len(dAtA)
		_ = i
		var l int
		_ = l
		if x.unknownFields != nil {
			i -= len(x.unknownFields)
			copy(dAtA[i:], x.unknownFields)
		}
		if len(x.EvmProofBytes) > 0 {
			i -= len(x.EvmProofBytes)
			copy(dAtA[i:], x.EvmProofBytes)
			i = runtime.EncodeVarint(dAtA, i, uint64(len(x.EvmProofBytes)))
			i--
			dAtA[i] = 0x12
		}
		if x.Proof != nil {
			encoded, err := options.Marshal(x.Proof)
			if err != nil {
				return protoiface.MarshalOutput{
					NoUnkeyedLiterals: input.NoUnkeyedLiterals,
					Buf:               input.Buf,
				}, err
			}
			i -= len(encoded)
			copy(dAtA[i:], encoded)
			i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))
			i--
			dAtA[i] = 0xa
		}
		if input.Buf != nil {
			input.Buf = append(input.Buf, dAtA...)
		} else {
			input.Buf = dAtA
		}
		return protoiface.MarshalOutput{
			NoUnkeyedLiterals: input.NoUnkeyedLiterals,
			Buf:               input.Buf,
		}, nil
	}
	unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {
		x := input.Message.Interface().(*SingleProofResult)
		if x == nil {
			return protoiface.UnmarshalOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Flags:             input.Flags,
			}, nil
		}
		options := runtime.UnmarshalInputToOptions(input)
		_ = options
		dAtA := input.Buf
		l := len(dAtA)
		iNdEx := 0
		for iNdEx < l {
			preIndex := iNdEx
			var wire uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
				}
				if iNdEx >= l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				wire |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			fieldNum := int32(wire >> 3)
			wireType := int(wire & 0x7)
			if wireType == 4 {
				return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: SingleProofResult: wiretype end group for non-group")
			}
			if fieldNum <= 0 {
				return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: SingleProofResult: illegal tag %d (wire type %d)", fieldNum, wire)
			}
			switch fieldNum {
			case 1:
				if wireType != 2 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Proof", wireType)
				}
				var msglen int
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					msglen |= int(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
				if msglen < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				postIndex := iNdEx + msglen
				if postIndex < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if postIndex > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				if x.Proof == nil {
					x.Proof = &SingleProof{}
				}
				if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Proof); err != nil {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
				}
				iNdEx = postIndex
			case 2:
				if wireType != 2 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field EvmProofBytes", wireType)
				}
				var byteLen int
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					byteLen |= int(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
				if byteLen < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				postIndex := iNdEx + byteLen
				if postIndex < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if postIndex > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				x.EvmProofBytes = append(x.EvmProofBytes[:0], dAtA[iNdEx:postIndex]...)
				if x.EvmProofBytes == nil {
					x.EvmProofBytes = []byte{}
				}
				iNdEx = postIndex
			default:
				iNdEx = preIndex
				skippy, err := runtime.Skip(dAtA[iNdEx:])
				if err != nil {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
				}
				if (skippy < 0) || (iNdEx+skippy) < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if (iNdEx + skippy) > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				if !options.DiscardUnknown {
					x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
				}
				iNdEx += skippy
			}
		}

		if iNdEx > l {
			return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
		}
		return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil
	}
	return &protoiface.Methods{
		NoUnkeyedLiterals: struct{}{},
		Flags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,
		Size:              size,
		Marshal:           marshal,
		Unmarshal:         unmarshal,
		Merge:             nil,
		CheckInitialized:  nil,
	}
}

var (
	md_MultiProofResult                 protoreflect.MessageDescriptor
	fd_MultiProofResult_proof           protoreflect.FieldDescriptor
	fd_MultiProofResult_evm_proof_bytes protoreflect.FieldDescriptor
)

func init() {
	file_band_base_oracle_v1_proof_proto_init()
	md_MultiProofResult = File_band_base_oracle_v1_proof_proto.Messages().ByName("MultiProofResult")
	fd_MultiProofResult_proof = md_MultiProofResult.Fields().ByName("proof")
	fd_MultiProofResult_evm_proof_bytes = md_MultiProofResult.Fields().ByName("evm_proof_bytes")
}

var _ protoreflect.Message = (*fastReflection_MultiProofResult)(nil)

type fastReflection_MultiProofResult MultiProofResult

func (x *MultiProofResult) ProtoReflect() protoreflect.Message {
	return (*fastReflection_MultiProofResult)(x)
}

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

var _fastReflection_MultiProofResult_messageType fastReflection_MultiProofResult_messageType
var _ protoreflect.MessageType = fastReflection_MultiProofResult_messageType{}

type fastReflection_MultiProofResult_messageType struct{}

func (x fastReflection_MultiProofResult_messageType) Zero() protoreflect.Message {
	return (*fastReflection_MultiProofResult)(nil)
}
func (x fastReflection_MultiProofResult_messageType) New() protoreflect.Message {
	return new(fastReflection_MultiProofResult)
}
func (x fastReflection_MultiProofResult_messageType) Descriptor() protoreflect.MessageDescriptor {
	return md_MultiProofResult
}

// Descriptor returns message descriptor, which contains only the protobuf
// type information for the message.
func (x *fastReflection_MultiProofResult) Descriptor() protoreflect.MessageDescriptor {
	return md_MultiProofResult
}

// Type returns the message type, which encapsulates both Go and protobuf
// type information. If the Go type information is not needed,
// it is recommended that the message descriptor be used instead.
func (x *fastReflection_MultiProofResult) Type() protoreflect.MessageType {
	return _fastReflection_MultiProofResult_messageType
}

// New returns a newly allocated and mutable empty message.
func (x *fastReflection_MultiProofResult) New() protoreflect.Message {
	return new(fastReflection_MultiProofResult)
}

// Interface unwraps the message reflection interface and
// returns the underlying ProtoMessage interface.
func (x *fastReflection_MultiProofResult) Interface() protoreflect.ProtoMessage {
	return (*MultiProofResult)(x)
}

// Range iterates over every populated field in an undefined order,
// calling f for each field descriptor and value encountered.
// Range returns immediately if f returns false.
// While iterating, mutating operations may only be performed
// on the current field descriptor.
func (x *fastReflection_MultiProofResult) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {
	if x.Proof != nil {
		value := protoreflect.ValueOfMessage(x.Proof.ProtoReflect())
		if !f(fd_MultiProofResult_proof, value) {
			return
		}
	}
	if len(x.EvmProofBytes) != 0 {
		value := protoreflect.ValueOfBytes(x.EvmProofBytes)
		if !f(fd_MultiProofResult_evm_proof_bytes, value) {
			return
		}
	}
}

// Has reports whether a field is populated.
//
// Some fields have the property of nullability where it is possible to
// distinguish between the default value of a field and whether the field
// was explicitly populated with the default value. Singular message fields,
// member fields of a oneof, and proto2 scalar fields are nullable. Such
// fields are populated only if explicitly set.
//
// In other cases (aside from the nullable cases above),
// a proto3 scalar field is populated if it contains a non-zero value, and
// a repeated field is populated if it is non-empty.
func (x *fastReflection_MultiProofResult) Has(fd protoreflect.FieldDescriptor) bool {
	switch fd.FullName() {
	case "band.base.oracle.v1.MultiProofResult.proof":
		return x.Proof != nil
	case "band.base.oracle.v1.MultiProofResult.evm_proof_bytes":
		return len(x.EvmProofBytes) != 0
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.MultiProofResult"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.MultiProofResult does not contain field %s", fd.FullName()))
	}
}

// Clear clears the field such that a subsequent Has call reports false.
//
// Clearing an extension field clears both the extension type and value
// associated with the given field number.
//
// Clear is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_MultiProofResult) Clear(fd protoreflect.FieldDescriptor) {
	switch fd.FullName() {
	case "band.base.oracle.v1.MultiProofResult.proof":
		x.Proof = nil
	case "band.base.oracle.v1.MultiProofResult.evm_proof_bytes":
		x.EvmProofBytes = nil
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.MultiProofResult"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.MultiProofResult does not contain field %s", fd.FullName()))
	}
}

// Get retrieves the value for a field.
//
// For unpopulated scalars, it returns the default value, where
// the default value of a bytes scalar is guaranteed to be a copy.
// For unpopulated composite types, it returns an empty, read-only view
// of the value; to obtain a mutable reference, use Mutable.
func (x *fastReflection_MultiProofResult) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {
	switch descriptor.FullName() {
	case "band.base.oracle.v1.MultiProofResult.proof":
		value := x.Proof
		return protoreflect.ValueOfMessage(value.ProtoReflect())
	case "band.base.oracle.v1.MultiProofResult.evm_proof_bytes":
		value := x.EvmProofBytes
		return protoreflect.ValueOfBytes(value)
	default:
		if descriptor.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.MultiProofResult"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.MultiProofResult does not contain field %s", descriptor.FullName()))
	}
}

// Set stores the value for a field.
//
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType.
// When setting a composite type, it is unspecified whether the stored value
// aliases the source's memory in any way. If the composite value is an
// empty, read-only value, then it panics.
//
// Set is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_MultiProofResult) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {
	switch fd.FullName() {
	case "band.base.oracle.v1.MultiProofResult.proof":
		x.Proof = value.Message().Interface().(*MultiProof)
	case "band.base.oracle.v1.MultiProofResult.evm_proof_bytes":
		x.EvmProofBytes = value.Bytes()
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.MultiProofResult"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.MultiProofResult does not contain field %s", fd.FullName()))
	}
}

// Mutable returns a mutable reference to a composite type.
//
// If the field is unpopulated, it may allocate a composite value.
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType
// if not already stored.
// It panics if the field does not contain a composite type.
//
// Mutable is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_MultiProofResult) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {
	switch fd.FullName() {
	case "band.base.oracle.v1.MultiProofResult.proof":
		if x.Proof == nil {
			x.Proof = new(MultiProof)
		}
		return protoreflect.ValueOfMessage(x.Proof.ProtoReflect())
	case "band.base.oracle.v1.MultiProofResult.evm_proof_bytes":
		panic(fmt.Errorf("field evm_proof_bytes of message band.base.oracle.v1.MultiProofResult is not mutable"))
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.MultiProofResult"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.MultiProofResult does not contain field %s", fd.FullName()))
	}
}

// NewField returns a new value that is assignable to the field
// for the given descriptor. For scalars, this returns the default value.
// For lists, maps, and messages, this returns a new, empty, mutable value.
func (x *fastReflection_MultiProofResult) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {
	switch fd.FullName() {
	case "band.base.oracle.v1.MultiProofResult.proof":
		m := new(MultiProof)
		return protoreflect.ValueOfMessage(m.ProtoReflect())
	case "band.base.oracle.v1.MultiProofResult.evm_proof_bytes":
		return protoreflect.ValueOfBytes(nil)
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.MultiProofResult"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.MultiProofResult does not contain field %s", fd.FullName()))
	}
}

// WhichOneof reports which field within the oneof is populated,
// returning nil if none are populated.
// It panics if the oneof descriptor does not belong to this message.
func (x *fastReflection_MultiProofResult) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {
	switch d.FullName() {
	default:
		panic(fmt.Errorf("%s is not a oneof field in band.base.oracle.v1.MultiProofResult", d.FullName()))
	}
	panic("unreachable")
}

// GetUnknown retrieves the entire list of unknown fields.
// The caller may only mutate the contents of the RawFields
// if the mutated bytes are stored back into the message with SetUnknown.
func (x *fastReflection_MultiProofResult) GetUnknown() protoreflect.RawFields {
	return x.unknownFields
}

// SetUnknown stores an entire list of unknown fields.
// The raw fields must be syntactically valid according to the wire format.
// An implementation may panic if this is not the case.
// Once stored, the caller must not mutate the content of the RawFields.
// An empty RawFields may be passed to clear the fields.
//
// SetUnknown is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_MultiProofResult) SetUnknown(fields protoreflect.RawFields) {
	x.unknownFields = fields
}

// IsValid reports whether the message is valid.
//
// An invalid message is an empty, read-only value.
//
// An invalid message often corresponds to a nil pointer of the concrete
// message type, but the details are implementation dependent.
// Validity is not part of the protobuf data model, and may not
// be preserved in marshaling or other operations.
func (x *fastReflection_MultiProofResult) IsValid() bool {
	return x != nil
}

// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.
// This method may return nil.
//
// The returned methods type is identical to
// "google.golang.org/protobuf/runtime/protoiface".Methods.
// Consult the protoiface package documentation for details.
func (x *fastReflection_MultiProofResult) ProtoMethods() *protoiface.Methods {
	size := func(input protoiface.SizeInput) protoiface.SizeOutput {
		x := input.Message.Interface().(*MultiProofResult)
		if x == nil {
			return protoiface.SizeOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Size:              0,
			}
		}
		options := runtime.SizeInputToOptions(input)
		_ = options
		var n int
		var l int
		_ = l
		if x.Proof != nil {
			l = options.Size(x.Proof)
			n += 1 + l + runtime.Sov(uint64(l))
		}
		l = len(x.EvmProofBytes)
		if l > 0 {
			n += 1 + l + runtime.Sov(uint64(l))
		}
		if x.unknownFields != nil {
			n += len(x.unknownFields)
		}
		return protoiface.SizeOutput{
			NoUnkeyedLiterals: input.NoUnkeyedLiterals,
			Size:              n,
		}
	}

	marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {
		x := input.Message.Interface().(*MultiProofResult)
		if x == nil {
			return protoiface.MarshalOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Buf:               input.Buf,
			}, nil
		}
		options := runtime.MarshalInputToOptions(input)
		_ = options
		size := options.Size(x)
		dAtA := make([]byte, size)
		i := len(dAtA)
		_ = i
		var l int
		_ = l
		if x.unknownFields != nil {
			i -= len(x.unknownFields)
			copy(dAtA[i:], x.unknownFields)
		}
		if len(x.EvmProofBytes) > 0 {
			i -= len(x.EvmProofBytes)
			copy(dAtA[i:], x.EvmProofBytes)
			i = runtime.EncodeVarint(dAtA, i, uint64(len(x.EvmProofBytes)))
			i--
			dAtA[i] = 0x12
		}
		if x.Proof != nil {
			encoded, err := options.Marshal(x.Proof)
			if err != nil {
				return protoiface.MarshalOutput{
					NoUnkeyedLiterals: input.NoUnkeyedLiterals,
					Buf:               input.Buf,
				}, err
			}
			i -= len(encoded)
			copy(dAtA[i:], encoded)
			i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))
			i--
			dAtA[i] = 0xa
		}
		if input.Buf != nil {
			input.Buf = append(input.Buf, dAtA...)
		} else {
			input.Buf = dAtA
		}
		return protoiface.MarshalOutput{
			NoUnkeyedLiterals: input.NoUnkeyedLiterals,
			Buf:               input.Buf,
		}, nil
	}
	unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {
		x := input.Message.Interface().(*MultiProofResult)
		if x == nil {
			return protoiface.UnmarshalOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Flags:             input.Flags,
			}, nil
		}
		options := runtime.UnmarshalInputToOptions(input)
		_ = options
		dAtA := input.Buf
		l := len(dAtA)
		iNdEx := 0
		for iNdEx < l {
			preIndex := iNdEx
			var wire uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
				}
				if iNdEx >= l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				wire |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			fieldNum := int32(wire >> 3)
			wireType := int(wire & 0x7)
			if wireType == 4 {
				return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MultiProofResult: wiretype end group for non-group")
			}
			if fieldNum <= 0 {
				return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MultiProofResult: illegal tag %d (wire type %d)", fieldNum, wire)
			}
			switch fieldNum {
			case 1:
				if wireType != 2 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Proof", wireType)
				}
				var msglen int
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					msglen |= int(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
				if msglen < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				postIndex := iNdEx + msglen
				if postIndex < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if postIndex > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				if x.Proof == nil {
					x.Proof = &MultiProof{}
				}
				if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Proof); err != nil {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
				}
				iNdEx = postIndex
			case 2:
				if wireType != 2 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field EvmProofBytes", wireType)
				}
				var byteLen int
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					byteLen |= int(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
				if byteLen < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				postIndex := iNdEx + byteLen
				if postIndex < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if postIndex > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				x.EvmProofBytes = append(x.EvmProofBytes[:0], dAtA[iNdEx:postIndex]...)
				if x.EvmProofBytes == nil {
					x.EvmProofBytes = []byte{}
				}
				iNdEx = postIndex
			default:
				iNdEx = preIndex
				skippy, err := runtime.Skip(dAtA[iNdEx:])
				if err != nil {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
				}
				if (skippy < 0) || (iNdEx+skippy) < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if (iNdEx + skippy) > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				if !options.DiscardUnknown {
					x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
				}
				iNdEx += skippy
			}
		}

		if iNdEx > l {
			return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
		}
		return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil
	}
	return &protoiface.Methods{
		NoUnkeyedLiterals: struct{}{},
		Flags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,
		Size:              size,
		Marshal:           marshal,
		Unmarshal:         unmarshal,
		Merge:             nil,
		CheckInitialized:  nil,
	}
}

var (
	md_CountProofResult                 protoreflect.MessageDescriptor
	fd_CountProofResult_proof           protoreflect.FieldDescriptor
	fd_CountProofResult_evm_proof_bytes protoreflect.FieldDescriptor
)

func init() {
	file_band_base_oracle_v1_proof_proto_init()
	md_CountProofResult = File_band_base_oracle_v1_proof_proto.Messages().ByName("CountProofResult")
	fd_CountProofResult_proof = md_CountProofResult.Fields().ByName("proof")
	fd_CountProofResult_evm_proof_bytes = md_CountProofResult.Fields().ByName("evm_proof_bytes")
}

var _ protoreflect.Message = (*fastReflection_CountProofResult)(nil)

type fastReflection_CountProofResult CountProofResult

func (x *CountProofResult) ProtoReflect() protoreflect.Message {
	return (*fastReflection_CountProofResult)(x)
}

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

var _fastReflection_CountProofResult_messageType fastReflection_CountProofResult_messageType
var _ protoreflect.MessageType = fastReflection_CountProofResult_messageType{}

type fastReflection_CountProofResult_messageType struct{}

func (x fastReflection_CountProofResult_messageType) Zero() protoreflect.Message {
	return (*fastReflection_CountProofResult)(nil)
}
func (x fastReflection_CountProofResult_messageType) New() protoreflect.Message {
	return new(fastReflection_CountProofResult)
}
func (x fastReflection_CountProofResult_messageType) Descriptor() protoreflect.MessageDescriptor {
	return md_CountProofResult
}

// Descriptor returns message descriptor, which contains only the protobuf
// type information for the message.
func (x *fastReflection_CountProofResult) Descriptor() protoreflect.MessageDescriptor {
	return md_CountProofResult
}

// Type returns the message type, which encapsulates both Go and protobuf
// type information. If the Go type information is not needed,
// it is recommended that the message descriptor be used instead.
func (x *fastReflection_CountProofResult) Type() protoreflect.MessageType {
	return _fastReflection_CountProofResult_messageType
}

// New returns a newly allocated and mutable empty message.
func (x *fastReflection_CountProofResult) New() protoreflect.Message {
	return new(fastReflection_CountProofResult)
}

// Interface unwraps the message reflection interface and
// returns the underlying ProtoMessage interface.
func (x *fastReflection_CountProofResult) Interface() protoreflect.ProtoMessage {
	return (*CountProofResult)(x)
}

// Range iterates over every populated field in an undefined order,
// calling f for each field descriptor and value encountered.
// Range returns immediately if f returns false.
// While iterating, mutating operations may only be performed
// on the current field descriptor.
func (x *fastReflection_CountProofResult) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {
	if x.Proof != nil {
		value := protoreflect.ValueOfMessage(x.Proof.ProtoReflect())
		if !f(fd_CountProofResult_proof, value) {
			return
		}
	}
	if len(x.EvmProofBytes) != 0 {
		value := protoreflect.ValueOfBytes(x.EvmProofBytes)
		if !f(fd_CountProofResult_evm_proof_bytes, value) {
			return
		}
	}
}

// Has reports whether a field is populated.
//
// Some fields have the property of nullability where it is possible to
// distinguish between the default value of a field and whether the field
// was explicitly populated with the default value. Singular message fields,
// member fields of a oneof, and proto2 scalar fields are nullable. Such
// fields are populated only if explicitly set.
//
// In other cases (aside from the nullable cases above),
// a proto3 scalar field is populated if it contains a non-zero value, and
// a repeated field is populated if it is non-empty.
func (x *fastReflection_CountProofResult) Has(fd protoreflect.FieldDescriptor) bool {
	switch fd.FullName() {
	case "band.base.oracle.v1.CountProofResult.proof":
		return x.Proof != nil
	case "band.base.oracle.v1.CountProofResult.evm_proof_bytes":
		return len(x.EvmProofBytes) != 0
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.CountProofResult"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.CountProofResult does not contain field %s", fd.FullName()))
	}
}

// Clear clears the field such that a subsequent Has call reports false.
//
// Clearing an extension field clears both the extension type and value
// associated with the given field number.
//
// Clear is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_CountProofResult) Clear(fd protoreflect.FieldDescriptor) {
	switch fd.FullName() {
	case "band.base.oracle.v1.CountProofResult.proof":
		x.Proof = nil
	case "band.base.oracle.v1.CountProofResult.evm_proof_bytes":
		x.EvmProofBytes = nil
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.CountProofResult"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.CountProofResult does not contain field %s", fd.FullName()))
	}
}

// Get retrieves the value for a field.
//
// For unpopulated scalars, it returns the default value, where
// the default value of a bytes scalar is guaranteed to be a copy.
// For unpopulated composite types, it returns an empty, read-only view
// of the value; to obtain a mutable reference, use Mutable.
func (x *fastReflection_CountProofResult) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {
	switch descriptor.FullName() {
	case "band.base.oracle.v1.CountProofResult.proof":
		value := x.Proof
		return protoreflect.ValueOfMessage(value.ProtoReflect())
	case "band.base.oracle.v1.CountProofResult.evm_proof_bytes":
		value := x.EvmProofBytes
		return protoreflect.ValueOfBytes(value)
	default:
		if descriptor.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.CountProofResult"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.CountProofResult does not contain field %s", descriptor.FullName()))
	}
}

// Set stores the value for a field.
//
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType.
// When setting a composite type, it is unspecified whether the stored value
// aliases the source's memory in any way. If the composite value is an
// empty, read-only value, then it panics.
//
// Set is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_CountProofResult) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {
	switch fd.FullName() {
	case "band.base.oracle.v1.CountProofResult.proof":
		x.Proof = value.Message().Interface().(*CountProof)
	case "band.base.oracle.v1.CountProofResult.evm_proof_bytes":
		x.EvmProofBytes = value.Bytes()
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.CountProofResult"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.CountProofResult does not contain field %s", fd.FullName()))
	}
}

// Mutable returns a mutable reference to a composite type.
//
// If the field is unpopulated, it may allocate a composite value.
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType
// if not already stored.
// It panics if the field does not contain a composite type.
//
// Mutable is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_CountProofResult) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {
	switch fd.FullName() {
	case "band.base.oracle.v1.CountProofResult.proof":
		if x.Proof == nil {
			x.Proof = new(CountProof)
		}
		return protoreflect.ValueOfMessage(x.Proof.ProtoReflect())
	case "band.base.oracle.v1.CountProofResult.evm_proof_bytes":
		panic(fmt.Errorf("field evm_proof_bytes of message band.base.oracle.v1.CountProofResult is not mutable"))
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.CountProofResult"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.CountProofResult does not contain field %s", fd.FullName()))
	}
}

// NewField returns a new value that is assignable to the field
// for the given descriptor. For scalars, this returns the default value.
// For lists, maps, and messages, this returns a new, empty, mutable value.
func (x *fastReflection_CountProofResult) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {
	switch fd.FullName() {
	case "band.base.oracle.v1.CountProofResult.proof":
		m := new(CountProof)
		return protoreflect.ValueOfMessage(m.ProtoReflect())
	case "band.base.oracle.v1.CountProofResult.evm_proof_bytes":
		return protoreflect.ValueOfBytes(nil)
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.CountProofResult"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.CountProofResult does not contain field %s", fd.FullName()))
	}
}

// WhichOneof reports which field within the oneof is populated,
// returning nil if none are populated.
// It panics if the oneof descriptor does not belong to this message.
func (x *fastReflection_CountProofResult) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {
	switch d.FullName() {
	default:
		panic(fmt.Errorf("%s is not a oneof field in band.base.oracle.v1.CountProofResult", d.FullName()))
	}
	panic("unreachable")
}

// GetUnknown retrieves the entire list of unknown fields.
// The caller may only mutate the contents of the RawFields
// if the mutated bytes are stored back into the message with SetUnknown.
func (x *fastReflection_CountProofResult) GetUnknown() protoreflect.RawFields {
	return x.unknownFields
}

// SetUnknown stores an entire list of unknown fields.
// The raw fields must be syntactically valid according to the wire format.
// An implementation may panic if this is not the case.
// Once stored, the caller must not mutate the content of the RawFields.
// An empty RawFields may be passed to clear the fields.
//
// SetUnknown is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_CountProofResult) SetUnknown(fields protoreflect.RawFields) {
	x.unknownFields = fields
}

// IsValid reports whether the message is valid.
//
// An invalid message is an empty, read-only value.
//
// An invalid message often corresponds to a nil pointer of the concrete
// message type, but the details are implementation dependent.
// Validity is not part of the protobuf data model, and may not
// be preserved in marshaling or other operations.
func (x *fastReflection_CountProofResult) IsValid() bool {
	return x != nil
}

// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.
// This method may return nil.
//
// The returned methods type is identical to
// "google.golang.org/protobuf/runtime/protoiface".Methods.
// Consult the protoiface package documentation for details.
func (x *fastReflection_CountProofResult) ProtoMethods() *protoiface.Methods {
	size := func(input protoiface.SizeInput) protoiface.SizeOutput {
		x := input.Message.Interface().(*CountProofResult)
		if x == nil {
			return protoiface.SizeOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Size:              0,
			}
		}
		options := runtime.SizeInputToOptions(input)
		_ = options
		var n int
		var l int
		_ = l
		if x.Proof != nil {
			l = options.Size(x.Proof)
			n += 1 + l + runtime.Sov(uint64(l))
		}
		l = len(x.EvmProofBytes)
		if l > 0 {
			n += 1 + l + runtime.Sov(uint64(l))
		}
		if x.unknownFields != nil {
			n += len(x.unknownFields)
		}
		return protoiface.SizeOutput{
			NoUnkeyedLiterals: input.NoUnkeyedLiterals,
			Size:              n,
		}
	}

	marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {
		x := input.Message.Interface().(*CountProofResult)
		if x == nil {
			return protoiface.MarshalOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Buf:               input.Buf,
			}, nil
		}
		options := runtime.MarshalInputToOptions(input)
		_ = options
		size := options.Size(x)
		dAtA := make([]byte, size)
		i := len(dAtA)
		_ = i
		var l int
		_ = l
		if x.unknownFields != nil {
			i -= len(x.unknownFields)
			copy(dAtA[i:], x.unknownFields)
		}
		if len(x.EvmProofBytes) > 0 {
			i -= len(x.EvmProofBytes)
			copy(dAtA[i:], x.EvmProofBytes)
			i = runtime.EncodeVarint(dAtA, i, uint64(len(x.EvmProofBytes)))
			i--
			dAtA[i] = 0x12
		}
		if x.Proof != nil {
			encoded, err := options.Marshal(x.Proof)
			if err != nil {
				return protoiface.MarshalOutput{
					NoUnkeyedLiterals: input.NoUnkeyedLiterals,
					Buf:               input.Buf,
				}, err
			}
			i -= len(encoded)
			copy(dAtA[i:], encoded)
			i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))
			i--
			dAtA[i] = 0xa
		}
		if input.Buf != nil {
			input.Buf = append(input.Buf, dAtA...)
		} else {
			input.Buf = dAtA
		}
		return protoiface.MarshalOutput{
			NoUnkeyedLiterals: input.NoUnkeyedLiterals,
			Buf:               input.Buf,
		}, nil
	}
	unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {
		x := input.Message.Interface().(*CountProofResult)
		if x == nil {
			return protoiface.UnmarshalOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Flags:             input.Flags,
			}, nil
		}
		options := runtime.UnmarshalInputToOptions(input)
		_ = options
		dAtA := input.Buf
		l := len(dAtA)
		iNdEx := 0
		for iNdEx < l {
			preIndex := iNdEx
			var wire uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
				}
				if iNdEx >= l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				wire |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			fieldNum := int32(wire >> 3)
			wireType := int(wire & 0x7)
			if wireType == 4 {
				return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: CountProofResult: wiretype end group for non-group")
			}
			if fieldNum <= 0 {
				return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: CountProofResult: illegal tag %d (wire type %d)", fieldNum, wire)
			}
			switch fieldNum {
			case 1:
				if wireType != 2 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Proof", wireType)
				}
				var msglen int
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					msglen |= int(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
				if msglen < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				postIndex := iNdEx + msglen
				if postIndex < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if postIndex > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				if x.Proof == nil {
					x.Proof = &CountProof{}
				}
				if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Proof); err != nil {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
				}
				iNdEx = postIndex
			case 2:
				if wireType != 2 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field EvmProofBytes", wireType)
				}
				var byteLen int
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					byteLen |= int(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
				if byteLen < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				postIndex := iNdEx + byteLen
				if postIndex < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if postIndex > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				x.EvmProofBytes = append(x.EvmProofBytes[:0], dAtA[iNdEx:postIndex]...)
				if x.EvmProofBytes == nil {
					x.EvmProofBytes = []byte{}
				}
				iNdEx = postIndex
			default:
				iNdEx = preIndex
				skippy, err := runtime.Skip(dAtA[iNdEx:])
				if err != nil {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
				}
				if (skippy < 0) || (iNdEx+skippy) < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if (iNdEx + skippy) > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				if !options.DiscardUnknown {
					x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
				}
				iNdEx += skippy
			}
		}

		if iNdEx > l {
			return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
		}
		return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil
	}
	return &protoiface.Methods{
		NoUnkeyedLiterals: struct{}{},
		Flags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,
		Size:              size,
		Marshal:           marshal,
		Unmarshal:         unmarshal,
		Merge:             nil,
		CheckInitialized:  nil,
	}
}

var (
	md_SingleProof                   protoreflect.MessageDescriptor
	fd_SingleProof_block_height      protoreflect.FieldDescriptor
	fd_SingleProof_oracle_data_proof protoreflect.FieldDescriptor
	fd_SingleProof_block_relay_proof protoreflect.FieldDescriptor
)

func init() {
	file_band_base_oracle_v1_proof_proto_init()
	md_SingleProof = File_band_base_oracle_v1_proof_proto.Messages().ByName("SingleProof")
	fd_SingleProof_block_height = md_SingleProof.Fields().ByName("block_height")
	fd_SingleProof_oracle_data_proof = md_SingleProof.Fields().ByName("oracle_data_proof")
	fd_SingleProof_block_relay_proof = md_SingleProof.Fields().ByName("block_relay_proof")
}

var _ protoreflect.Message = (*fastReflection_SingleProof)(nil)

type fastReflection_SingleProof SingleProof

func (x *SingleProof) ProtoReflect() protoreflect.Message {
	return (*fastReflection_SingleProof)(x)
}

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

var _fastReflection_SingleProof_messageType fastReflection_SingleProof_messageType
var _ protoreflect.MessageType = fastReflection_SingleProof_messageType{}

type fastReflection_SingleProof_messageType struct{}

func (x fastReflection_SingleProof_messageType) Zero() protoreflect.Message {
	return (*fastReflection_SingleProof)(nil)
}
func (x fastReflection_SingleProof_messageType) New() protoreflect.Message {
	return new(fastReflection_SingleProof)
}
func (x fastReflection_SingleProof_messageType) Descriptor() protoreflect.MessageDescriptor {
	return md_SingleProof
}

// Descriptor returns message descriptor, which contains only the protobuf
// type information for the message.
func (x *fastReflection_SingleProof) Descriptor() protoreflect.MessageDescriptor {
	return md_SingleProof
}

// Type returns the message type, which encapsulates both Go and protobuf
// type information. If the Go type information is not needed,
// it is recommended that the message descriptor be used instead.
func (x *fastReflection_SingleProof) Type() protoreflect.MessageType {
	return _fastReflection_SingleProof_messageType
}

// New returns a newly allocated and mutable empty message.
func (x *fastReflection_SingleProof) New() protoreflect.Message {
	return new(fastReflection_SingleProof)
}

// Interface unwraps the message reflection interface and
// returns the underlying ProtoMessage interface.
func (x *fastReflection_SingleProof) Interface() protoreflect.ProtoMessage {
	return (*SingleProof)(x)
}

// Range iterates over every populated field in an undefined order,
// calling f for each field descriptor and value encountered.
// Range returns immediately if f returns false.
// While iterating, mutating operations may only be performed
// on the current field descriptor.
func (x *fastReflection_SingleProof) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {
	if x.BlockHeight != uint64(0) {
		value := protoreflect.ValueOfUint64(x.BlockHeight)
		if !f(fd_SingleProof_block_height, value) {
			return
		}
	}
	if x.OracleDataProof != nil {
		value := protoreflect.ValueOfMessage(x.OracleDataProof.ProtoReflect())
		if !f(fd_SingleProof_oracle_data_proof, value) {
			return
		}
	}
	if x.BlockRelayProof != nil {
		value := protoreflect.ValueOfMessage(x.BlockRelayProof.ProtoReflect())
		if !f(fd_SingleProof_block_relay_proof, value) {
			return
		}
	}
}

// Has reports whether a field is populated.
//
// Some fields have the property of nullability where it is possible to
// distinguish between the default value of a field and whether the field
// was explicitly populated with the default value. Singular message fields,
// member fields of a oneof, and proto2 scalar fields are nullable. Such
// fields are populated only if explicitly set.
//
// In other cases (aside from the nullable cases above),
// a proto3 scalar field is populated if it contains a non-zero value, and
// a repeated field is populated if it is non-empty.
func (x *fastReflection_SingleProof) Has(fd protoreflect.FieldDescriptor) bool {
	switch fd.FullName() {
	case "band.base.oracle.v1.SingleProof.block_height":
		return x.BlockHeight != uint64(0)
	case "band.base.oracle.v1.SingleProof.oracle_data_proof":
		return x.OracleDataProof != nil
	case "band.base.oracle.v1.SingleProof.block_relay_proof":
		return x.BlockRelayProof != nil
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.SingleProof"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.SingleProof does not contain field %s", fd.FullName()))
	}
}

// Clear clears the field such that a subsequent Has call reports false.
//
// Clearing an extension field clears both the extension type and value
// associated with the given field number.
//
// Clear is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_SingleProof) Clear(fd protoreflect.FieldDescriptor) {
	switch fd.FullName() {
	case "band.base.oracle.v1.SingleProof.block_height":
		x.BlockHeight = uint64(0)
	case "band.base.oracle.v1.SingleProof.oracle_data_proof":
		x.OracleDataProof = nil
	case "band.base.oracle.v1.SingleProof.block_relay_proof":
		x.BlockRelayProof = nil
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.SingleProof"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.SingleProof does not contain field %s", fd.FullName()))
	}
}

// Get retrieves the value for a field.
//
// For unpopulated scalars, it returns the default value, where
// the default value of a bytes scalar is guaranteed to be a copy.
// For unpopulated composite types, it returns an empty, read-only view
// of the value; to obtain a mutable reference, use Mutable.
func (x *fastReflection_SingleProof) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {
	switch descriptor.FullName() {
	case "band.base.oracle.v1.SingleProof.block_height":
		value := x.BlockHeight
		return protoreflect.ValueOfUint64(value)
	case "band.base.oracle.v1.SingleProof.oracle_data_proof":
		value := x.OracleDataProof
		return protoreflect.ValueOfMessage(value.ProtoReflect())
	case "band.base.oracle.v1.SingleProof.block_relay_proof":
		value := x.BlockRelayProof
		return protoreflect.ValueOfMessage(value.ProtoReflect())
	default:
		if descriptor.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.SingleProof"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.SingleProof does not contain field %s", descriptor.FullName()))
	}
}

// Set stores the value for a field.
//
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType.
// When setting a composite type, it is unspecified whether the stored value
// aliases the source's memory in any way. If the composite value is an
// empty, read-only value, then it panics.
//
// Set is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_SingleProof) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {
	switch fd.FullName() {
	case "band.base.oracle.v1.SingleProof.block_height":
		x.BlockHeight = value.Uint()
	case "band.base.oracle.v1.SingleProof.oracle_data_proof":
		x.OracleDataProof = value.Message().Interface().(*OracleDataProof)
	case "band.base.oracle.v1.SingleProof.block_relay_proof":
		x.BlockRelayProof = value.Message().Interface().(*BlockRelayProof)
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.SingleProof"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.SingleProof does not contain field %s", fd.FullName()))
	}
}

// Mutable returns a mutable reference to a composite type.
//
// If the field is unpopulated, it may allocate a composite value.
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType
// if not already stored.
// It panics if the field does not contain a composite type.
//
// Mutable is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_SingleProof) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {
	switch fd.FullName() {
	case "band.base.oracle.v1.SingleProof.oracle_data_proof":
		if x.OracleDataProof == nil {
			x.OracleDataProof = new(OracleDataProof)
		}
		return protoreflect.ValueOfMessage(x.OracleDataProof.ProtoReflect())
	case "band.base.oracle.v1.SingleProof.block_relay_proof":
		if x.BlockRelayProof == nil {
			x.BlockRelayProof = new(BlockRelayProof)
		}
		return protoreflect.ValueOfMessage(x.BlockRelayProof.ProtoReflect())
	case "band.base.oracle.v1.SingleProof.block_height":
		panic(fmt.Errorf("field block_height of message band.base.oracle.v1.SingleProof is not mutable"))
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.SingleProof"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.SingleProof does not contain field %s", fd.FullName()))
	}
}

// NewField returns a new value that is assignable to the field
// for the given descriptor. For scalars, this returns the default value.
// For lists, maps, and messages, this returns a new, empty, mutable value.
func (x *fastReflection_SingleProof) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {
	switch fd.FullName() {
	case "band.base.oracle.v1.SingleProof.block_height":
		return protoreflect.ValueOfUint64(uint64(0))
	case "band.base.oracle.v1.SingleProof.oracle_data_proof":
		m := new(OracleDataProof)
		return protoreflect.ValueOfMessage(m.ProtoReflect())
	case "band.base.oracle.v1.SingleProof.block_relay_proof":
		m := new(BlockRelayProof)
		return protoreflect.ValueOfMessage(m.ProtoReflect())
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.SingleProof"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.SingleProof does not contain field %s", fd.FullName()))
	}
}

// WhichOneof reports which field within the oneof is populated,
// returning nil if none are populated.
// It panics if the oneof descriptor does not belong to this message.
func (x *fastReflection_SingleProof) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {
	switch d.FullName() {
	default:
		panic(fmt.Errorf("%s is not a oneof field in band.base.oracle.v1.SingleProof", d.FullName()))
	}
	panic("unreachable")
}

// GetUnknown retrieves the entire list of unknown fields.
// The caller may only mutate the contents of the RawFields
// if the mutated bytes are stored back into the message with SetUnknown.
func (x *fastReflection_SingleProof) GetUnknown() protoreflect.RawFields {
	return x.unknownFields
}

// SetUnknown stores an entire list of unknown fields.
// The raw fields must be syntactically valid according to the wire format.
// An implementation may panic if this is not the case.
// Once stored, the caller must not mutate the content of the RawFields.
// An empty RawFields may be passed to clear the fields.
//
// SetUnknown is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_SingleProof) SetUnknown(fields protoreflect.RawFields) {
	x.unknownFields = fields
}

// IsValid reports whether the message is valid.
//
// An invalid message is an empty, read-only value.
//
// An invalid message often corresponds to a nil pointer of the concrete
// message type, but the details are implementation dependent.
// Validity is not part of the protobuf data model, and may not
// be preserved in marshaling or other operations.
func (x *fastReflection_SingleProof) IsValid() bool {
	return x != nil
}

// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.
// This method may return nil.
//
// The returned methods type is identical to
// "google.golang.org/protobuf/runtime/protoiface".Methods.
// Consult the protoiface package documentation for details.
func (x *fastReflection_SingleProof) ProtoMethods() *protoiface.Methods {
	size := func(input protoiface.SizeInput) protoiface.SizeOutput {
		x := input.Message.Interface().(*SingleProof)
		if x == nil {
			return protoiface.SizeOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Size:              0,
			}
		}
		options := runtime.SizeInputToOptions(input)
		_ = options
		var n int
		var l int
		_ = l
		if x.BlockHeight != 0 {
			n += 1 + runtime.Sov(uint64(x.BlockHeight))
		}
		if x.OracleDataProof != nil {
			l = options.Size(x.OracleDataProof)
			n += 1 + l + runtime.Sov(uint64(l))
		}
		if x.BlockRelayProof != nil {
			l = options.Size(x.BlockRelayProof)
			n += 1 + l + runtime.Sov(uint64(l))
		}
		if x.unknownFields != nil {
			n += len(x.unknownFields)
		}
		return protoiface.SizeOutput{
			NoUnkeyedLiterals: input.NoUnkeyedLiterals,
			Size:              n,
		}
	}

	marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {
		x := input.Message.Interface().(*SingleProof)
		if x == nil {
			return protoiface.MarshalOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Buf:               input.Buf,
			}, nil
		}
		options := runtime.MarshalInputToOptions(input)
		_ = options
		size := options.Size(x)
		dAtA := make([]byte, size)
		i := len(dAtA)
		_ = i
		var l int
		_ = l
		if x.unknownFields != nil {
			i -= len(x.unknownFields)
			copy(dAtA[i:], x.unknownFields)
		}
		if x.BlockRelayProof != nil {
			encoded, err := options.Marshal(x.BlockRelayProof)
			if err != nil {
				return protoiface.MarshalOutput{
					NoUnkeyedLiterals: input.NoUnkeyedLiterals,
					Buf:               input.Buf,
				}, err
			}
			i -= len(encoded)
			copy(dAtA[i:], encoded)
			i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))
			i--
			dAtA[i] = 0x1a
		}
		if x.OracleDataProof != nil {
			encoded, err := options.Marshal(x.OracleDataProof)
			if err != nil {
				return protoiface.MarshalOutput{
					NoUnkeyedLiterals: input.NoUnkeyedLiterals,
					Buf:               input.Buf,
				}, err
			}
			i -= len(encoded)
			copy(dAtA[i:], encoded)
			i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))
			i--
			dAtA[i] = 0x12
		}
		if x.BlockHeight != 0 {
			i = runtime.EncodeVarint(dAtA, i, uint64(x.BlockHeight))
			i--
			dAtA[i] = 0x8
		}
		if input.Buf != nil {
			input.Buf = append(input.Buf, dAtA...)
		} else {
			input.Buf = dAtA
		}
		return protoiface.MarshalOutput{
			NoUnkeyedLiterals: input.NoUnkeyedLiterals,
			Buf:               input.Buf,
		}, nil
	}
	unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {
		x := input.Message.Interface().(*SingleProof)
		if x == nil {
			return protoiface.UnmarshalOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Flags:             input.Flags,
			}, nil
		}
		options := runtime.UnmarshalInputToOptions(input)
		_ = options
		dAtA := input.Buf
		l := len(dAtA)
		iNdEx := 0
		for iNdEx < l {
			preIndex := iNdEx
			var wire uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
				}
				if iNdEx >= l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				wire |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			fieldNum := int32(wire >> 3)
			wireType := int(wire & 0x7)
			if wireType == 4 {
				return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: SingleProof: wiretype end group for non-group")
			}
			if fieldNum <= 0 {
				return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: SingleProof: illegal tag %d (wire type %d)", fieldNum, wire)
			}
			switch fieldNum {
			case 1:
				if wireType != 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field BlockHeight", wireType)
				}
				x.BlockHeight = 0
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					x.BlockHeight |= uint64(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
			case 2:
				if wireType != 2 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field OracleDataProof", wireType)
				}
				var msglen int
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					msglen |= int(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
				if msglen < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				postIndex := iNdEx + msglen
				if postIndex < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if postIndex > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				if x.OracleDataProof == nil {
					x.OracleDataProof = &OracleDataProof{}
				}
				if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.OracleDataProof); err != nil {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
				}
				iNdEx = postIndex
			case 3:
				if wireType != 2 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field BlockRelayProof", wireType)
				}
				var msglen int
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					msglen |= int(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
				if msglen < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				postIndex := iNdEx + msglen
				if postIndex < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if postIndex > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				if x.BlockRelayProof == nil {
					x.BlockRelayProof = &BlockRelayProof{}
				}
				if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.BlockRelayProof); err != nil {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
				}
				iNdEx = postIndex
			default:
				iNdEx = preIndex
				skippy, err := runtime.Skip(dAtA[iNdEx:])
				if err != nil {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
				}
				if (skippy < 0) || (iNdEx+skippy) < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if (iNdEx + skippy) > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				if !options.DiscardUnknown {
					x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
				}
				iNdEx += skippy
			}
		}

		if iNdEx > l {
			return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
		}
		return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil
	}
	return &protoiface.Methods{
		NoUnkeyedLiterals: struct{}{},
		Flags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,
		Size:              size,
		Marshal:           marshal,
		Unmarshal:         unmarshal,
		Merge:             nil,
		CheckInitialized:  nil,
	}
}

var _ protoreflect.List = (*_MultiProof_2_list)(nil)

type _MultiProof_2_list struct {
	list *[]*OracleDataProof
}

func (x *_MultiProof_2_list) Len() int {
	if x.list == nil {
		return 0
	}
	return len(*x.list)
}

func (x *_MultiProof_2_list) Get(i int) protoreflect.Value {
	return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect())
}

func (x *_MultiProof_2_list) Set(i int, value protoreflect.Value) {
	valueUnwrapped := value.Message()
	concreteValue := valueUnwrapped.Interface().(*OracleDataProof)
	(*x.list)[i] = concreteValue
}

func (x *_MultiProof_2_list) Append(value protoreflect.Value) {
	valueUnwrapped := value.Message()
	concreteValue := valueUnwrapped.Interface().(*OracleDataProof)
	*x.list = append(*x.list, concreteValue)
}

func (x *_MultiProof_2_list) AppendMutable() protoreflect.Value {
	v := new(OracleDataProof)
	*x.list = append(*x.list, v)
	return protoreflect.ValueOfMessage(v.ProtoReflect())
}

func (x *_MultiProof_2_list) Truncate(n int) {
	for i := n; i < len(*x.list); i++ {
		(*x.list)[i] = nil
	}
	*x.list = (*x.list)[:n]
}

func (x *_MultiProof_2_list) NewElement() protoreflect.Value {
	v := new(OracleDataProof)
	return protoreflect.ValueOfMessage(v.ProtoReflect())
}

func (x *_MultiProof_2_list) IsValid() bool {
	return x.list != nil
}

var (
	md_MultiProof                         protoreflect.MessageDescriptor
	fd_MultiProof_block_height            protoreflect.FieldDescriptor
	fd_MultiProof_oracle_data_multi_proof protoreflect.FieldDescriptor
	fd_MultiProof_block_relay_proof       protoreflect.FieldDescriptor
)

func init() {
	file_band_base_oracle_v1_proof_proto_init()
	md_MultiProof = File_band_base_oracle_v1_proof_proto.Messages().ByName("MultiProof")
	fd_MultiProof_block_height = md_MultiProof.Fields().ByName("block_height")
	fd_MultiProof_oracle_data_multi_proof = md_MultiProof.Fields().ByName("oracle_data_multi_proof")
	fd_MultiProof_block_relay_proof = md_MultiProof.Fields().ByName("block_relay_proof")
}

var _ protoreflect.Message = (*fastReflection_MultiProof)(nil)

type fastReflection_MultiProof MultiProof

func (x *MultiProof) ProtoReflect() protoreflect.Message {
	return (*fastReflection_MultiProof)(x)
}

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

var _fastReflection_MultiProof_messageType fastReflection_MultiProof_messageType
var _ protoreflect.MessageType = fastReflection_MultiProof_messageType{}

type fastReflection_MultiProof_messageType struct{}

func (x fastReflection_MultiProof_messageType) Zero() protoreflect.Message {
	return (*fastReflection_MultiProof)(nil)
}
func (x fastReflection_MultiProof_messageType) New() protoreflect.Message {
	return new(fastReflection_MultiProof)
}
func (x fastReflection_MultiProof_messageType) Descriptor() protoreflect.MessageDescriptor {
	return md_MultiProof
}

// Descriptor returns message descriptor, which contains only the protobuf
// type information for the message.
func (x *fastReflection_MultiProof) Descriptor() protoreflect.MessageDescriptor {
	return md_MultiProof
}

// Type returns the message type, which encapsulates both Go and protobuf
// type information. If the Go type information is not needed,
// it is recommended that the message descriptor be used instead.
func (x *fastReflection_MultiProof) Type() protoreflect.MessageType {
	return _fastReflection_MultiProof_messageType
}

// New returns a newly allocated and mutable empty message.
func (x *fastReflection_MultiProof) New() protoreflect.Message {
	return new(fastReflection_MultiProof)
}

// Interface unwraps the message reflection interface and
// returns the underlying ProtoMessage interface.
func (x *fastReflection_MultiProof) Interface() protoreflect.ProtoMessage {
	return (*MultiProof)(x)
}

// Range iterates over every populated field in an undefined order,
// calling f for each field descriptor and value encountered.
// Range returns immediately if f returns false.
// While iterating, mutating operations may only be performed
// on the current field descriptor.
func (x *fastReflection_MultiProof) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {
	if x.BlockHeight != uint64(0) {
		value := protoreflect.ValueOfUint64(x.BlockHeight)
		if !f(fd_MultiProof_block_height, value) {
			return
		}
	}
	if len(x.OracleDataMultiProof) != 0 {
		value := protoreflect.ValueOfList(&_MultiProof_2_list{list: &x.OracleDataMultiProof})
		if !f(fd_MultiProof_oracle_data_multi_proof, value) {
			return
		}
	}
	if x.BlockRelayProof != nil {
		value := protoreflect.ValueOfMessage(x.BlockRelayProof.ProtoReflect())
		if !f(fd_MultiProof_block_relay_proof, value) {
			return
		}
	}
}

// Has reports whether a field is populated.
//
// Some fields have the property of nullability where it is possible to
// distinguish between the default value of a field and whether the field
// was explicitly populated with the default value. Singular message fields,
// member fields of a oneof, and proto2 scalar fields are nullable. Such
// fields are populated only if explicitly set.
//
// In other cases (aside from the nullable cases above),
// a proto3 scalar field is populated if it contains a non-zero value, and
// a repeated field is populated if it is non-empty.
func (x *fastReflection_MultiProof) Has(fd protoreflect.FieldDescriptor) bool {
	switch fd.FullName() {
	case "band.base.oracle.v1.MultiProof.block_height":
		return x.BlockHeight != uint64(0)
	case "band.base.oracle.v1.MultiProof.oracle_data_multi_proof":
		return len(x.OracleDataMultiProof) != 0
	case "band.base.oracle.v1.MultiProof.block_relay_proof":
		return x.BlockRelayProof != nil
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.MultiProof"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.MultiProof does not contain field %s", fd.FullName()))
	}
}

// Clear clears the field such that a subsequent Has call reports false.
//
// Clearing an extension field clears both the extension type and value
// associated with the given field number.
//
// Clear is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_MultiProof) Clear(fd protoreflect.FieldDescriptor) {
	switch fd.FullName() {
	case "band.base.oracle.v1.MultiProof.block_height":
		x.BlockHeight = uint64(0)
	case "band.base.oracle.v1.MultiProof.oracle_data_multi_proof":
		x.OracleDataMultiProof = nil
	case "band.base.oracle.v1.MultiProof.block_relay_proof":
		x.BlockRelayProof = nil
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.MultiProof"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.MultiProof does not contain field %s", fd.FullName()))
	}
}

// Get retrieves the value for a field.
//
// For unpopulated scalars, it returns the default value, where
// the default value of a bytes scalar is guaranteed to be a copy.
// For unpopulated composite types, it returns an empty, read-only view
// of the value; to obtain a mutable reference, use Mutable.
func (x *fastReflection_MultiProof) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {
	switch descriptor.FullName() {
	case "band.base.oracle.v1.MultiProof.block_height":
		value := x.BlockHeight
		return protoreflect.ValueOfUint64(value)
	case "band.base.oracle.v1.MultiProof.oracle_data_multi_proof":
		if len(x.OracleDataMultiProof) == 0 {
			return protoreflect.ValueOfList(&_MultiProof_2_list{})
		}
		listValue := &_MultiProof_2_list{list: &x.OracleDataMultiProof}
		return protoreflect.ValueOfList(listValue)
	case "band.base.oracle.v1.MultiProof.block_relay_proof":
		value := x.BlockRelayProof
		return protoreflect.ValueOfMessage(value.ProtoReflect())
	default:
		if descriptor.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.MultiProof"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.MultiProof does not contain field %s", descriptor.FullName()))
	}
}

// Set stores the value for a field.
//
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType.
// When setting a composite type, it is unspecified whether the stored value
// aliases the source's memory in any way. If the composite value is an
// empty, read-only value, then it panics.
//
// Set is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_MultiProof) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {
	switch fd.FullName() {
	case "band.base.oracle.v1.MultiProof.block_height":
		x.BlockHeight = value.Uint()
	case "band.base.oracle.v1.MultiProof.oracle_data_multi_proof":
		lv := value.List()
		clv := lv.(*_MultiProof_2_list)
		x.OracleDataMultiProof = *clv.list
	case "band.base.oracle.v1.MultiProof.block_relay_proof":
		x.BlockRelayProof = value.Message().Interface().(*BlockRelayProof)
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.MultiProof"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.MultiProof does not contain field %s", fd.FullName()))
	}
}

// Mutable returns a mutable reference to a composite type.
//
// If the field is unpopulated, it may allocate a composite value.
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType
// if not already stored.
// It panics if the field does not contain a composite type.
//
// Mutable is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_MultiProof) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {
	switch fd.FullName() {
	case "band.base.oracle.v1.MultiProof.oracle_data_multi_proof":
		if x.OracleDataMultiProof == nil {
			x.OracleDataMultiProof = []*OracleDataProof{}
		}
		value := &_MultiProof_2_list{list: &x.OracleDataMultiProof}
		return protoreflect.ValueOfList(value)
	case "band.base.oracle.v1.MultiProof.block_relay_proof":
		if x.BlockRelayProof == nil {
			x.BlockRelayProof = new(BlockRelayProof)
		}
		return protoreflect.ValueOfMessage(x.BlockRelayProof.ProtoReflect())
	case "band.base.oracle.v1.MultiProof.block_height":
		panic(fmt.Errorf("field block_height of message band.base.oracle.v1.MultiProof is not mutable"))
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.MultiProof"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.MultiProof does not contain field %s", fd.FullName()))
	}
}

// NewField returns a new value that is assignable to the field
// for the given descriptor. For scalars, this returns the default value.
// For lists, maps, and messages, this returns a new, empty, mutable value.
func (x *fastReflection_MultiProof) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {
	switch fd.FullName() {
	case "band.base.oracle.v1.MultiProof.block_height":
		return protoreflect.ValueOfUint64(uint64(0))
	case "band.base.oracle.v1.MultiProof.oracle_data_multi_proof":
		list := []*OracleDataProof{}
		return protoreflect.ValueOfList(&_MultiProof_2_list{list: &list})
	case "band.base.oracle.v1.MultiProof.block_relay_proof":
		m := new(BlockRelayProof)
		return protoreflect.ValueOfMessage(m.ProtoReflect())
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.MultiProof"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.MultiProof does not contain field %s", fd.FullName()))
	}
}

// WhichOneof reports which field within the oneof is populated,
// returning nil if none are populated.
// It panics if the oneof descriptor does not belong to this message.
func (x *fastReflection_MultiProof) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {
	switch d.FullName() {
	default:
		panic(fmt.Errorf("%s is not a oneof field in band.base.oracle.v1.MultiProof", d.FullName()))
	}
	panic("unreachable")
}

// GetUnknown retrieves the entire list of unknown fields.
// The caller may only mutate the contents of the RawFields
// if the mutated bytes are stored back into the message with SetUnknown.
func (x *fastReflection_MultiProof) GetUnknown() protoreflect.RawFields {
	return x.unknownFields
}

// SetUnknown stores an entire list of unknown fields.
// The raw fields must be syntactically valid according to the wire format.
// An implementation may panic if this is not the case.
// Once stored, the caller must not mutate the content of the RawFields.
// An empty RawFields may be passed to clear the fields.
//
// SetUnknown is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_MultiProof) SetUnknown(fields protoreflect.RawFields) {
	x.unknownFields = fields
}

// IsValid reports whether the message is valid.
//
// An invalid message is an empty, read-only value.
//
// An invalid message often corresponds to a nil pointer of the concrete
// message type, but the details are implementation dependent.
// Validity is not part of the protobuf data model, and may not
// be preserved in marshaling or other operations.
func (x *fastReflection_MultiProof) IsValid() bool {
	return x != nil
}

// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.
// This method may return nil.
//
// The returned methods type is identical to
// "google.golang.org/protobuf/runtime/protoiface".Methods.
// Consult the protoiface package documentation for details.
func (x *fastReflection_MultiProof) ProtoMethods() *protoiface.Methods {
	size := func(input protoiface.SizeInput) protoiface.SizeOutput {
		x := input.Message.Interface().(*MultiProof)
		if x == nil {
			return protoiface.SizeOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Size:              0,
			}
		}
		options := runtime.SizeInputToOptions(input)
		_ = options
		var n int
		var l int
		_ = l
		if x.BlockHeight != 0 {
			n += 1 + runtime.Sov(uint64(x.BlockHeight))
		}
		if len(x.OracleDataMultiProof) > 0 {
			for _, e := range x.OracleDataMultiProof {
				l = options.Size(e)
				n += 1 + l + runtime.Sov(uint64(l))
			}
		}
		if x.BlockRelayProof != nil {
			l = options.Size(x.BlockRelayProof)
			n += 1 + l + runtime.Sov(uint64(l))
		}
		if x.unknownFields != nil {
			n += len(x.unknownFields)
		}
		return protoiface.SizeOutput{
			NoUnkeyedLiterals: input.NoUnkeyedLiterals,
			Size:              n,
		}
	}

	marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {
		x := input.Message.Interface().(*MultiProof)
		if x == nil {
			return protoiface.MarshalOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Buf:               input.Buf,
			}, nil
		}
		options := runtime.MarshalInputToOptions(input)
		_ = options
		size := options.Size(x)
		dAtA := make([]byte, size)
		i := len(dAtA)
		_ = i
		var l int
		_ = l
		if x.unknownFields != nil {
			i -= len(x.unknownFields)
			copy(dAtA[i:], x.unknownFields)
		}
		if x.BlockRelayProof != nil {
			encoded, err := options.Marshal(x.BlockRelayProof)
			if err != nil {
				return protoiface.MarshalOutput{
					NoUnkeyedLiterals: input.NoUnkeyedLiterals,
					Buf:               input.Buf,
				}, err
			}
			i -= len(encoded)
			copy(dAtA[i:], encoded)
			i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))
			i--
			dAtA[i] = 0x1a
		}
		if len(x.OracleDataMultiProof) > 0 {
			for iNdEx := len(x.OracleDataMultiProof) - 1; iNdEx >= 0; iNdEx-- {
				encoded, err := options.Marshal(x.OracleDataMultiProof[iNdEx])
				if err != nil {
					return protoiface.MarshalOutput{
						NoUnkeyedLiterals: input.NoUnkeyedLiterals,
						Buf:               input.Buf,
					}, err
				}
				i -= len(encoded)
				copy(dAtA[i:], encoded)
				i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))
				i--
				dAtA[i] = 0x12
			}
		}
		if x.BlockHeight != 0 {
			i = runtime.EncodeVarint(dAtA, i, uint64(x.BlockHeight))
			i--
			dAtA[i] = 0x8
		}
		if input.Buf != nil {
			input.Buf = append(input.Buf, dAtA...)
		} else {
			input.Buf = dAtA
		}
		return protoiface.MarshalOutput{
			NoUnkeyedLiterals: input.NoUnkeyedLiterals,
			Buf:               input.Buf,
		}, nil
	}
	unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {
		x := input.Message.Interface().(*MultiProof)
		if x == nil {
			return protoiface.UnmarshalOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Flags:             input.Flags,
			}, nil
		}
		options := runtime.UnmarshalInputToOptions(input)
		_ = options
		dAtA := input.Buf
		l := len(dAtA)
		iNdEx := 0
		for iNdEx < l {
			preIndex := iNdEx
			var wire uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
				}
				if iNdEx >= l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				wire |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			fieldNum := int32(wire >> 3)
			wireType := int(wire & 0x7)
			if wireType == 4 {
				return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MultiProof: wiretype end group for non-group")
			}
			if fieldNum <= 0 {
				return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MultiProof: illegal tag %d (wire type %d)", fieldNum, wire)
			}
			switch fieldNum {
			case 1:
				if wireType != 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field BlockHeight", wireType)
				}
				x.BlockHeight = 0
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					x.BlockHeight |= uint64(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
			case 2:
				if wireType != 2 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field OracleDataMultiProof", wireType)
				}
				var msglen int
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					msglen |= int(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
				if msglen < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				postIndex := iNdEx + msglen
				if postIndex < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if postIndex > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				x.OracleDataMultiProof = append(x.OracleDataMultiProof, &OracleDataProof{})
				if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.OracleDataMultiProof[len(x.OracleDataMultiProof)-1]); err != nil {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
				}
				iNdEx = postIndex
			case 3:
				if wireType != 2 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field BlockRelayProof", wireType)
				}
				var msglen int
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					msglen |= int(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
				if msglen < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				postIndex := iNdEx + msglen
				if postIndex < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if postIndex > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				if x.BlockRelayProof == nil {
					x.BlockRelayProof = &BlockRelayProof{}
				}
				if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.BlockRelayProof); err != nil {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
				}
				iNdEx = postIndex
			default:
				iNdEx = preIndex
				skippy, err := runtime.Skip(dAtA[iNdEx:])
				if err != nil {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
				}
				if (skippy < 0) || (iNdEx+skippy) < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if (iNdEx + skippy) > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				if !options.DiscardUnknown {
					x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
				}
				iNdEx += skippy
			}
		}

		if iNdEx > l {
			return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
		}
		return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil
	}
	return &protoiface.Methods{
		NoUnkeyedLiterals: struct{}{},
		Flags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,
		Size:              size,
		Marshal:           marshal,
		Unmarshal:         unmarshal,
		Merge:             nil,
		CheckInitialized:  nil,
	}
}

var (
	md_CountProof                   protoreflect.MessageDescriptor
	fd_CountProof_block_height      protoreflect.FieldDescriptor
	fd_CountProof_count_proof       protoreflect.FieldDescriptor
	fd_CountProof_block_relay_proof protoreflect.FieldDescriptor
)

func init() {
	file_band_base_oracle_v1_proof_proto_init()
	md_CountProof = File_band_base_oracle_v1_proof_proto.Messages().ByName("CountProof")
	fd_CountProof_block_height = md_CountProof.Fields().ByName("block_height")
	fd_CountProof_count_proof = md_CountProof.Fields().ByName("count_proof")
	fd_CountProof_block_relay_proof = md_CountProof.Fields().ByName("block_relay_proof")
}

var _ protoreflect.Message = (*fastReflection_CountProof)(nil)

type fastReflection_CountProof CountProof

func (x *CountProof) ProtoReflect() protoreflect.Message {
	return (*fastReflection_CountProof)(x)
}

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

var _fastReflection_CountProof_messageType fastReflection_CountProof_messageType
var _ protoreflect.MessageType = fastReflection_CountProof_messageType{}

type fastReflection_CountProof_messageType struct{}

func (x fastReflection_CountProof_messageType) Zero() protoreflect.Message {
	return (*fastReflection_CountProof)(nil)
}
func (x fastReflection_CountProof_messageType) New() protoreflect.Message {
	return new(fastReflection_CountProof)
}
func (x fastReflection_CountProof_messageType) Descriptor() protoreflect.MessageDescriptor {
	return md_CountProof
}

// Descriptor returns message descriptor, which contains only the protobuf
// type information for the message.
func (x *fastReflection_CountProof) Descriptor() protoreflect.MessageDescriptor {
	return md_CountProof
}

// Type returns the message type, which encapsulates both Go and protobuf
// type information. If the Go type information is not needed,
// it is recommended that the message descriptor be used instead.
func (x *fastReflection_CountProof) Type() protoreflect.MessageType {
	return _fastReflection_CountProof_messageType
}

// New returns a newly allocated and mutable empty message.
func (x *fastReflection_CountProof) New() protoreflect.Message {
	return new(fastReflection_CountProof)
}

// Interface unwraps the message reflection interface and
// returns the underlying ProtoMessage interface.
func (x *fastReflection_CountProof) Interface() protoreflect.ProtoMessage {
	return (*CountProof)(x)
}

// Range iterates over every populated field in an undefined order,
// calling f for each field descriptor and value encountered.
// Range returns immediately if f returns false.
// While iterating, mutating operations may only be performed
// on the current field descriptor.
func (x *fastReflection_CountProof) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {
	if x.BlockHeight != uint64(0) {
		value := protoreflect.ValueOfUint64(x.BlockHeight)
		if !f(fd_CountProof_block_height, value) {
			return
		}
	}
	if x.CountProof != nil {
		value := protoreflect.ValueOfMessage(x.CountProof.ProtoReflect())
		if !f(fd_CountProof_count_proof, value) {
			return
		}
	}
	if x.BlockRelayProof != nil {
		value := protoreflect.ValueOfMessage(x.BlockRelayProof.ProtoReflect())
		if !f(fd_CountProof_block_relay_proof, value) {
			return
		}
	}
}

// Has reports whether a field is populated.
//
// Some fields have the property of nullability where it is possible to
// distinguish between the default value of a field and whether the field
// was explicitly populated with the default value. Singular message fields,
// member fields of a oneof, and proto2 scalar fields are nullable. Such
// fields are populated only if explicitly set.
//
// In other cases (aside from the nullable cases above),
// a proto3 scalar field is populated if it contains a non-zero value, and
// a repeated field is populated if it is non-empty.
func (x *fastReflection_CountProof) Has(fd protoreflect.FieldDescriptor) bool {
	switch fd.FullName() {
	case "band.base.oracle.v1.CountProof.block_height":
		return x.BlockHeight != uint64(0)
	case "band.base.oracle.v1.CountProof.count_proof":
		return x.CountProof != nil
	case "band.base.oracle.v1.CountProof.block_relay_proof":
		return x.BlockRelayProof != nil
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.CountProof"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.CountProof does not contain field %s", fd.FullName()))
	}
}

// Clear clears the field such that a subsequent Has call reports false.
//
// Clearing an extension field clears both the extension type and value
// associated with the given field number.
//
// Clear is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_CountProof) Clear(fd protoreflect.FieldDescriptor) {
	switch fd.FullName() {
	case "band.base.oracle.v1.CountProof.block_height":
		x.BlockHeight = uint64(0)
	case "band.base.oracle.v1.CountProof.count_proof":
		x.CountProof = nil
	case "band.base.oracle.v1.CountProof.block_relay_proof":
		x.BlockRelayProof = nil
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.CountProof"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.CountProof does not contain field %s", fd.FullName()))
	}
}

// Get retrieves the value for a field.
//
// For unpopulated scalars, it returns the default value, where
// the default value of a bytes scalar is guaranteed to be a copy.
// For unpopulated composite types, it returns an empty, read-only view
// of the value; to obtain a mutable reference, use Mutable.
func (x *fastReflection_CountProof) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {
	switch descriptor.FullName() {
	case "band.base.oracle.v1.CountProof.block_height":
		value := x.BlockHeight
		return protoreflect.ValueOfUint64(value)
	case "band.base.oracle.v1.CountProof.count_proof":
		value := x.CountProof
		return protoreflect.ValueOfMessage(value.ProtoReflect())
	case "band.base.oracle.v1.CountProof.block_relay_proof":
		value := x.BlockRelayProof
		return protoreflect.ValueOfMessage(value.ProtoReflect())
	default:
		if descriptor.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.CountProof"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.CountProof does not contain field %s", descriptor.FullName()))
	}
}

// Set stores the value for a field.
//
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType.
// When setting a composite type, it is unspecified whether the stored value
// aliases the source's memory in any way. If the composite value is an
// empty, read-only value, then it panics.
//
// Set is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_CountProof) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {
	switch fd.FullName() {
	case "band.base.oracle.v1.CountProof.block_height":
		x.BlockHeight = value.Uint()
	case "band.base.oracle.v1.CountProof.count_proof":
		x.CountProof = value.Message().Interface().(*RequestsCountProof)
	case "band.base.oracle.v1.CountProof.block_relay_proof":
		x.BlockRelayProof = value.Message().Interface().(*BlockRelayProof)
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.CountProof"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.CountProof does not contain field %s", fd.FullName()))
	}
}

// Mutable returns a mutable reference to a composite type.
//
// If the field is unpopulated, it may allocate a composite value.
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType
// if not already stored.
// It panics if the field does not contain a composite type.
//
// Mutable is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_CountProof) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {
	switch fd.FullName() {
	case "band.base.oracle.v1.CountProof.count_proof":
		if x.CountProof == nil {
			x.CountProof = new(RequestsCountProof)
		}
		return protoreflect.ValueOfMessage(x.CountProof.ProtoReflect())
	case "band.base.oracle.v1.CountProof.block_relay_proof":
		if x.BlockRelayProof == nil {
			x.BlockRelayProof = new(BlockRelayProof)
		}
		return protoreflect.ValueOfMessage(x.BlockRelayProof.ProtoReflect())
	case "band.base.oracle.v1.CountProof.block_height":
		panic(fmt.Errorf("field block_height of message band.base.oracle.v1.CountProof is not mutable"))
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.CountProof"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.CountProof does not contain field %s", fd.FullName()))
	}
}

// NewField returns a new value that is assignable to the field
// for the given descriptor. For scalars, this returns the default value.
// For lists, maps, and messages, this returns a new, empty, mutable value.
func (x *fastReflection_CountProof) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {
	switch fd.FullName() {
	case "band.base.oracle.v1.CountProof.block_height":
		return protoreflect.ValueOfUint64(uint64(0))
	case "band.base.oracle.v1.CountProof.count_proof":
		m := new(RequestsCountProof)
		return protoreflect.ValueOfMessage(m.ProtoReflect())
	case "band.base.oracle.v1.CountProof.block_relay_proof":
		m := new(BlockRelayProof)
		return protoreflect.ValueOfMessage(m.ProtoReflect())
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.CountProof"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.CountProof does not contain field %s", fd.FullName()))
	}
}

// WhichOneof reports which field within the oneof is populated,
// returning nil if none are populated.
// It panics if the oneof descriptor does not belong to this message.
func (x *fastReflection_CountProof) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {
	switch d.FullName() {
	default:
		panic(fmt.Errorf("%s is not a oneof field in band.base.oracle.v1.CountProof", d.FullName()))
	}
	panic("unreachable")
}

// GetUnknown retrieves the entire list of unknown fields.
// The caller may only mutate the contents of the RawFields
// if the mutated bytes are stored back into the message with SetUnknown.
func (x *fastReflection_CountProof) GetUnknown() protoreflect.RawFields {
	return x.unknownFields
}

// SetUnknown stores an entire list of unknown fields.
// The raw fields must be syntactically valid according to the wire format.
// An implementation may panic if this is not the case.
// Once stored, the caller must not mutate the content of the RawFields.
// An empty RawFields may be passed to clear the fields.
//
// SetUnknown is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_CountProof) SetUnknown(fields protoreflect.RawFields) {
	x.unknownFields = fields
}

// IsValid reports whether the message is valid.
//
// An invalid message is an empty, read-only value.
//
// An invalid message often corresponds to a nil pointer of the concrete
// message type, but the details are implementation dependent.
// Validity is not part of the protobuf data model, and may not
// be preserved in marshaling or other operations.
func (x *fastReflection_CountProof) IsValid() bool {
	return x != nil
}

// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.
// This method may return nil.
//
// The returned methods type is identical to
// "google.golang.org/protobuf/runtime/protoiface".Methods.
// Consult the protoiface package documentation for details.
func (x *fastReflection_CountProof) ProtoMethods() *protoiface.Methods {
	size := func(input protoiface.SizeInput) protoiface.SizeOutput {
		x := input.Message.Interface().(*CountProof)
		if x == nil {
			return protoiface.SizeOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Size:              0,
			}
		}
		options := runtime.SizeInputToOptions(input)
		_ = options
		var n int
		var l int
		_ = l
		if x.BlockHeight != 0 {
			n += 1 + runtime.Sov(uint64(x.BlockHeight))
		}
		if x.CountProof != nil {
			l = options.Size(x.CountProof)
			n += 1 + l + runtime.Sov(uint64(l))
		}
		if x.BlockRelayProof != nil {
			l = options.Size(x.BlockRelayProof)
			n += 1 + l + runtime.Sov(uint64(l))
		}
		if x.unknownFields != nil {
			n += len(x.unknownFields)
		}
		return protoiface.SizeOutput{
			NoUnkeyedLiterals: input.NoUnkeyedLiterals,
			Size:              n,
		}
	}

	marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {
		x := input.Message.Interface().(*CountProof)
		if x == nil {
			return protoiface.MarshalOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Buf:               input.Buf,
			}, nil
		}
		options := runtime.MarshalInputToOptions(input)
		_ = options
		size := options.Size(x)
		dAtA := make([]byte, size)
		i := len(dAtA)
		_ = i
		var l int
		_ = l
		if x.unknownFields != nil {
			i -= len(x.unknownFields)
			copy(dAtA[i:], x.unknownFields)
		}
		if x.BlockRelayProof != nil {
			encoded, err := options.Marshal(x.BlockRelayProof)
			if err != nil {
				return protoiface.MarshalOutput{
					NoUnkeyedLiterals: input.NoUnkeyedLiterals,
					Buf:               input.Buf,
				}, err
			}
			i -= len(encoded)
			copy(dAtA[i:], encoded)
			i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))
			i--
			dAtA[i] = 0x1a
		}
		if x.CountProof != nil {
			encoded, err := options.Marshal(x.CountProof)
			if err != nil {
				return protoiface.MarshalOutput{
					NoUnkeyedLiterals: input.NoUnkeyedLiterals,
					Buf:               input.Buf,
				}, err
			}
			i -= len(encoded)
			copy(dAtA[i:], encoded)
			i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))
			i--
			dAtA[i] = 0x12
		}
		if x.BlockHeight != 0 {
			i = runtime.EncodeVarint(dAtA, i, uint64(x.BlockHeight))
			i--
			dAtA[i] = 0x8
		}
		if input.Buf != nil {
			input.Buf = append(input.Buf, dAtA...)
		} else {
			input.Buf = dAtA
		}
		return protoiface.MarshalOutput{
			NoUnkeyedLiterals: input.NoUnkeyedLiterals,
			Buf:               input.Buf,
		}, nil
	}
	unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {
		x := input.Message.Interface().(*CountProof)
		if x == nil {
			return protoiface.UnmarshalOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Flags:             input.Flags,
			}, nil
		}
		options := runtime.UnmarshalInputToOptions(input)
		_ = options
		dAtA := input.Buf
		l := len(dAtA)
		iNdEx := 0
		for iNdEx < l {
			preIndex := iNdEx
			var wire uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
				}
				if iNdEx >= l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				wire |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			fieldNum := int32(wire >> 3)
			wireType := int(wire & 0x7)
			if wireType == 4 {
				return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: CountProof: wiretype end group for non-group")
			}
			if fieldNum <= 0 {
				return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: CountProof: illegal tag %d (wire type %d)", fieldNum, wire)
			}
			switch fieldNum {
			case 1:
				if wireType != 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field BlockHeight", wireType)
				}
				x.BlockHeight = 0
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					x.BlockHeight |= uint64(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
			case 2:
				if wireType != 2 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field CountProof", wireType)
				}
				var msglen int
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					msglen |= int(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
				if msglen < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				postIndex := iNdEx + msglen
				if postIndex < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if postIndex > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				if x.CountProof == nil {
					x.CountProof = &RequestsCountProof{}
				}
				if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.CountProof); err != nil {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
				}
				iNdEx = postIndex
			case 3:
				if wireType != 2 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field BlockRelayProof", wireType)
				}
				var msglen int
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					msglen |= int(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
				if msglen < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				postIndex := iNdEx + msglen
				if postIndex < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if postIndex > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				if x.BlockRelayProof == nil {
					x.BlockRelayProof = &BlockRelayProof{}
				}
				if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.BlockRelayProof); err != nil {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
				}
				iNdEx = postIndex
			default:
				iNdEx = preIndex
				skippy, err := runtime.Skip(dAtA[iNdEx:])
				if err != nil {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
				}
				if (skippy < 0) || (iNdEx+skippy) < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if (iNdEx + skippy) > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				if !options.DiscardUnknown {
					x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
				}
				iNdEx += skippy
			}
		}

		if iNdEx > l {
			return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
		}
		return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil
	}
	return &protoiface.Methods{
		NoUnkeyedLiterals: struct{}{},
		Flags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,
		Size:              size,
		Marshal:           marshal,
		Unmarshal:         unmarshal,
		Merge:             nil,
		CheckInitialized:  nil,
	}
}

var _ protoreflect.List = (*_OracleDataProof_3_list)(nil)

type _OracleDataProof_3_list struct {
	list *[]*IAVLMerklePath
}

func (x *_OracleDataProof_3_list) Len() int {
	if x.list == nil {
		return 0
	}
	return len(*x.list)
}

func (x *_OracleDataProof_3_list) Get(i int) protoreflect.Value {
	return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect())
}

func (x *_OracleDataProof_3_list) Set(i int, value protoreflect.Value) {
	valueUnwrapped := value.Message()
	concreteValue := valueUnwrapped.Interface().(*IAVLMerklePath)
	(*x.list)[i] = concreteValue
}

func (x *_OracleDataProof_3_list) Append(value protoreflect.Value) {
	valueUnwrapped := value.Message()
	concreteValue := valueUnwrapped.Interface().(*IAVLMerklePath)
	*x.list = append(*x.list, concreteValue)
}

func (x *_OracleDataProof_3_list) AppendMutable() protoreflect.Value {
	v := new(IAVLMerklePath)
	*x.list = append(*x.list, v)
	return protoreflect.ValueOfMessage(v.ProtoReflect())
}

func (x *_OracleDataProof_3_list) Truncate(n int) {
	for i := n; i < len(*x.list); i++ {
		(*x.list)[i] = nil
	}
	*x.list = (*x.list)[:n]
}

func (x *_OracleDataProof_3_list) NewElement() protoreflect.Value {
	v := new(IAVLMerklePath)
	return protoreflect.ValueOfMessage(v.ProtoReflect())
}

func (x *_OracleDataProof_3_list) IsValid() bool {
	return x.list != nil
}

var (
	md_OracleDataProof              protoreflect.MessageDescriptor
	fd_OracleDataProof_result       protoreflect.FieldDescriptor
	fd_OracleDataProof_version      protoreflect.FieldDescriptor
	fd_OracleDataProof_merkle_paths protoreflect.FieldDescriptor
)

func init() {
	file_band_base_oracle_v1_proof_proto_init()
	md_OracleDataProof = File_band_base_oracle_v1_proof_proto.Messages().ByName("OracleDataProof")
	fd_OracleDataProof_result = md_OracleDataProof.Fields().ByName("result")
	fd_OracleDataProof_version = md_OracleDataProof.Fields().ByName("version")
	fd_OracleDataProof_merkle_paths = md_OracleDataProof.Fields().ByName("merkle_paths")
}

var _ protoreflect.Message = (*fastReflection_OracleDataProof)(nil)

type fastReflection_OracleDataProof OracleDataProof

func (x *OracleDataProof) ProtoReflect() protoreflect.Message {
	return (*fastReflection_OracleDataProof)(x)
}

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

var _fastReflection_OracleDataProof_messageType fastReflection_OracleDataProof_messageType
var _ protoreflect.MessageType = fastReflection_OracleDataProof_messageType{}

type fastReflection_OracleDataProof_messageType struct{}

func (x fastReflection_OracleDataProof_messageType) Zero() protoreflect.Message {
	return (*fastReflection_OracleDataProof)(nil)
}
func (x fastReflection_OracleDataProof_messageType) New() protoreflect.Message {
	return new(fastReflection_OracleDataProof)
}
func (x fastReflection_OracleDataProof_messageType) Descriptor() protoreflect.MessageDescriptor {
	return md_OracleDataProof
}

// Descriptor returns message descriptor, which contains only the protobuf
// type information for the message.
func (x *fastReflection_OracleDataProof) Descriptor() protoreflect.MessageDescriptor {
	return md_OracleDataProof
}

// Type returns the message type, which encapsulates both Go and protobuf
// type information. If the Go type information is not needed,
// it is recommended that the message descriptor be used instead.
func (x *fastReflection_OracleDataProof) Type() protoreflect.MessageType {
	return _fastReflection_OracleDataProof_messageType
}

// New returns a newly allocated and mutable empty message.
func (x *fastReflection_OracleDataProof) New() protoreflect.Message {
	return new(fastReflection_OracleDataProof)
}

// Interface unwraps the message reflection interface and
// returns the underlying ProtoMessage interface.
func (x *fastReflection_OracleDataProof) Interface() protoreflect.ProtoMessage {
	return (*OracleDataProof)(x)
}

// Range iterates over every populated field in an undefined order,
// calling f for each field descriptor and value encountered.
// Range returns immediately if f returns false.
// While iterating, mutating operations may only be performed
// on the current field descriptor.
func (x *fastReflection_OracleDataProof) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {
	if x.Result != nil {
		value := protoreflect.ValueOfMessage(x.Result.ProtoReflect())
		if !f(fd_OracleDataProof_result, value) {
			return
		}
	}
	if x.Version != uint64(0) {
		value := protoreflect.ValueOfUint64(x.Version)
		if !f(fd_OracleDataProof_version, value) {
			return
		}
	}
	if len(x.MerklePaths) != 0 {
		value := protoreflect.ValueOfList(&_OracleDataProof_3_list{list: &x.MerklePaths})
		if !f(fd_OracleDataProof_merkle_paths, value) {
			return
		}
	}
}

// Has reports whether a field is populated.
//
// Some fields have the property of nullability where it is possible to
// distinguish between the default value of a field and whether the field
// was explicitly populated with the default value. Singular message fields,
// member fields of a oneof, and proto2 scalar fields are nullable. Such
// fields are populated only if explicitly set.
//
// In other cases (aside from the nullable cases above),
// a proto3 scalar field is populated if it contains a non-zero value, and
// a repeated field is populated if it is non-empty.
func (x *fastReflection_OracleDataProof) Has(fd protoreflect.FieldDescriptor) bool {
	switch fd.FullName() {
	case "band.base.oracle.v1.OracleDataProof.result":
		return x.Result != nil
	case "band.base.oracle.v1.OracleDataProof.version":
		return x.Version != uint64(0)
	case "band.base.oracle.v1.OracleDataProof.merkle_paths":
		return len(x.MerklePaths) != 0
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.OracleDataProof"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.OracleDataProof does not contain field %s", fd.FullName()))
	}
}

// Clear clears the field such that a subsequent Has call reports false.
//
// Clearing an extension field clears both the extension type and value
// associated with the given field number.
//
// Clear is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_OracleDataProof) Clear(fd protoreflect.FieldDescriptor) {
	switch fd.FullName() {
	case "band.base.oracle.v1.OracleDataProof.result":
		x.Result = nil
	case "band.base.oracle.v1.OracleDataProof.version":
		x.Version = uint64(0)
	case "band.base.oracle.v1.OracleDataProof.merkle_paths":
		x.MerklePaths = nil
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.OracleDataProof"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.OracleDataProof does not contain field %s", fd.FullName()))
	}
}

// Get retrieves the value for a field.
//
// For unpopulated scalars, it returns the default value, where
// the default value of a bytes scalar is guaranteed to be a copy.
// For unpopulated composite types, it returns an empty, read-only view
// of the value; to obtain a mutable reference, use Mutable.
func (x *fastReflection_OracleDataProof) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {
	switch descriptor.FullName() {
	case "band.base.oracle.v1.OracleDataProof.result":
		value := x.Result
		return protoreflect.ValueOfMessage(value.ProtoReflect())
	case "band.base.oracle.v1.OracleDataProof.version":
		value := x.Version
		return protoreflect.ValueOfUint64(value)
	case "band.base.oracle.v1.OracleDataProof.merkle_paths":
		if len(x.MerklePaths) == 0 {
			return protoreflect.ValueOfList(&_OracleDataProof_3_list{})
		}
		listValue := &_OracleDataProof_3_list{list: &x.MerklePaths}
		return protoreflect.ValueOfList(listValue)
	default:
		if descriptor.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.OracleDataProof"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.OracleDataProof does not contain field %s", descriptor.FullName()))
	}
}

// Set stores the value for a field.
//
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType.
// When setting a composite type, it is unspecified whether the stored value
// aliases the source's memory in any way. If the composite value is an
// empty, read-only value, then it panics.
//
// Set is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_OracleDataProof) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {
	switch fd.FullName() {
	case "band.base.oracle.v1.OracleDataProof.result":
		x.Result = value.Message().Interface().(*v1.Result)
	case "band.base.oracle.v1.OracleDataProof.version":
		x.Version = value.Uint()
	case "band.base.oracle.v1.OracleDataProof.merkle_paths":
		lv := value.List()
		clv := lv.(*_OracleDataProof_3_list)
		x.MerklePaths = *clv.list
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.OracleDataProof"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.OracleDataProof does not contain field %s", fd.FullName()))
	}
}

// Mutable returns a mutable reference to a composite type.
//
// If the field is unpopulated, it may allocate a composite value.
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType
// if not already stored.
// It panics if the field does not contain a composite type.
//
// Mutable is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_OracleDataProof) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {
	switch fd.FullName() {
	case "band.base.oracle.v1.OracleDataProof.result":
		if x.Result == nil {
			x.Result = new(v1.Result)
		}
		return protoreflect.ValueOfMessage(x.Result.ProtoReflect())
	case "band.base.oracle.v1.OracleDataProof.merkle_paths":
		if x.MerklePaths == nil {
			x.MerklePaths = []*IAVLMerklePath{}
		}
		value := &_OracleDataProof_3_list{list: &x.MerklePaths}
		return protoreflect.ValueOfList(value)
	case "band.base.oracle.v1.OracleDataProof.version":
		panic(fmt.Errorf("field version of message band.base.oracle.v1.OracleDataProof is not mutable"))
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.OracleDataProof"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.OracleDataProof does not contain field %s", fd.FullName()))
	}
}

// NewField returns a new value that is assignable to the field
// for the given descriptor. For scalars, this returns the default value.
// For lists, maps, and messages, this returns a new, empty, mutable value.
func (x *fastReflection_OracleDataProof) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {
	switch fd.FullName() {
	case "band.base.oracle.v1.OracleDataProof.result":
		m := new(v1.Result)
		return protoreflect.ValueOfMessage(m.ProtoReflect())
	case "band.base.oracle.v1.OracleDataProof.version":
		return protoreflect.ValueOfUint64(uint64(0))
	case "band.base.oracle.v1.OracleDataProof.merkle_paths":
		list := []*IAVLMerklePath{}
		return protoreflect.ValueOfList(&_OracleDataProof_3_list{list: &list})
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.OracleDataProof"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.OracleDataProof does not contain field %s", fd.FullName()))
	}
}

// WhichOneof reports which field within the oneof is populated,
// returning nil if none are populated.
// It panics if the oneof descriptor does not belong to this message.
func (x *fastReflection_OracleDataProof) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {
	switch d.FullName() {
	default:
		panic(fmt.Errorf("%s is not a oneof field in band.base.oracle.v1.OracleDataProof", d.FullName()))
	}
	panic("unreachable")
}

// GetUnknown retrieves the entire list of unknown fields.
// The caller may only mutate the contents of the RawFields
// if the mutated bytes are stored back into the message with SetUnknown.
func (x *fastReflection_OracleDataProof) GetUnknown() protoreflect.RawFields {
	return x.unknownFields
}

// SetUnknown stores an entire list of unknown fields.
// The raw fields must be syntactically valid according to the wire format.
// An implementation may panic if this is not the case.
// Once stored, the caller must not mutate the content of the RawFields.
// An empty RawFields may be passed to clear the fields.
//
// SetUnknown is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_OracleDataProof) SetUnknown(fields protoreflect.RawFields) {
	x.unknownFields = fields
}

// IsValid reports whether the message is valid.
//
// An invalid message is an empty, read-only value.
//
// An invalid message often corresponds to a nil pointer of the concrete
// message type, but the details are implementation dependent.
// Validity is not part of the protobuf data model, and may not
// be preserved in marshaling or other operations.
func (x *fastReflection_OracleDataProof) IsValid() bool {
	return x != nil
}

// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.
// This method may return nil.
//
// The returned methods type is identical to
// "google.golang.org/protobuf/runtime/protoiface".Methods.
// Consult the protoiface package documentation for details.
func (x *fastReflection_OracleDataProof) ProtoMethods() *protoiface.Methods {
	size := func(input protoiface.SizeInput) protoiface.SizeOutput {
		x := input.Message.Interface().(*OracleDataProof)
		if x == nil {
			return protoiface.SizeOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Size:              0,
			}
		}
		options := runtime.SizeInputToOptions(input)
		_ = options
		var n int
		var l int
		_ = l
		if x.Result != nil {
			l = options.Size(x.Result)
			n += 1 + l + runtime.Sov(uint64(l))
		}
		if x.Version != 0 {
			n += 1 + runtime.Sov(uint64(x.Version))
		}
		if len(x.MerklePaths) > 0 {
			for _, e := range x.MerklePaths {
				l = options.Size(e)
				n += 1 + l + runtime.Sov(uint64(l))
			}
		}
		if x.unknownFields != nil {
			n += len(x.unknownFields)
		}
		return protoiface.SizeOutput{
			NoUnkeyedLiterals: input.NoUnkeyedLiterals,
			Size:              n,
		}
	}

	marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {
		x := input.Message.Interface().(*OracleDataProof)
		if x == nil {
			return protoiface.MarshalOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Buf:               input.Buf,
			}, nil
		}
		options := runtime.MarshalInputToOptions(input)
		_ = options
		size := options.Size(x)
		dAtA := make([]byte, size)
		i := len(dAtA)
		_ = i
		var l int
		_ = l
		if x.unknownFields != nil {
			i -= len(x.unknownFields)
			copy(dAtA[i:], x.unknownFields)
		}
		if len(x.MerklePaths) > 0 {
			for iNdEx := len(x.MerklePaths) - 1; iNdEx >= 0; iNdEx-- {
				encoded, err := options.Marshal(x.MerklePaths[iNdEx])
				if err != nil {
					return protoiface.MarshalOutput{
						NoUnkeyedLiterals: input.NoUnkeyedLiterals,
						Buf:               input.Buf,
					}, err
				}
				i -= len(encoded)
				copy(dAtA[i:], encoded)
				i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))
				i--
				dAtA[i] = 0x1a
			}
		}
		if x.Version != 0 {
			i = runtime.EncodeVarint(dAtA, i, uint64(x.Version))
			i--
			dAtA[i] = 0x10
		}
		if x.Result != nil {
			encoded, err := options.Marshal(x.Result)
			if err != nil {
				return protoiface.MarshalOutput{
					NoUnkeyedLiterals: input.NoUnkeyedLiterals,
					Buf:               input.Buf,
				}, err
			}
			i -= len(encoded)
			copy(dAtA[i:], encoded)
			i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))
			i--
			dAtA[i] = 0xa
		}
		if input.Buf != nil {
			input.Buf = append(input.Buf, dAtA...)
		} else {
			input.Buf = dAtA
		}
		return protoiface.MarshalOutput{
			NoUnkeyedLiterals: input.NoUnkeyedLiterals,
			Buf:               input.Buf,
		}, nil
	}
	unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {
		x := input.Message.Interface().(*OracleDataProof)
		if x == nil {
			return protoiface.UnmarshalOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Flags:             input.Flags,
			}, nil
		}
		options := runtime.UnmarshalInputToOptions(input)
		_ = options
		dAtA := input.Buf
		l := len(dAtA)
		iNdEx := 0
		for iNdEx < l {
			preIndex := iNdEx
			var wire uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
				}
				if iNdEx >= l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				wire |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			fieldNum := int32(wire >> 3)
			wireType := int(wire & 0x7)
			if wireType == 4 {
				return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: OracleDataProof: wiretype end group for non-group")
			}
			if fieldNum <= 0 {
				return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: OracleDataProof: illegal tag %d (wire type %d)", fieldNum, wire)
			}
			switch fieldNum {
			case 1:
				if wireType != 2 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Result", wireType)
				}
				var msglen int
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					msglen |= int(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
				if msglen < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				postIndex := iNdEx + msglen
				if postIndex < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if postIndex > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				if x.Result == nil {
					x.Result = &v1.Result{}
				}
				if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Result); err != nil {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
				}
				iNdEx = postIndex
			case 2:
				if wireType != 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Version", wireType)
				}
				x.Version = 0
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					x.Version |= uint64(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
			case 3:
				if wireType != 2 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field MerklePaths", wireType)
				}
				var msglen int
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					msglen |= int(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
				if msglen < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				postIndex := iNdEx + msglen
				if postIndex < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if postIndex > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				x.MerklePaths = append(x.MerklePaths, &IAVLMerklePath{})
				if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.MerklePaths[len(x.MerklePaths)-1]); err != nil {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
				}
				iNdEx = postIndex
			default:
				iNdEx = preIndex
				skippy, err := runtime.Skip(dAtA[iNdEx:])
				if err != nil {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
				}
				if (skippy < 0) || (iNdEx+skippy) < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if (iNdEx + skippy) > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				if !options.DiscardUnknown {
					x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
				}
				iNdEx += skippy
			}
		}

		if iNdEx > l {
			return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
		}
		return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil
	}
	return &protoiface.Methods{
		NoUnkeyedLiterals: struct{}{},
		Flags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,
		Size:              size,
		Marshal:           marshal,
		Unmarshal:         unmarshal,
		Merge:             nil,
		CheckInitialized:  nil,
	}
}

var (
	md_IAVLMerklePath                  protoreflect.MessageDescriptor
	fd_IAVLMerklePath_is_data_on_right protoreflect.FieldDescriptor
	fd_IAVLMerklePath_subtree_height   protoreflect.FieldDescriptor
	fd_IAVLMerklePath_subtree_size     protoreflect.FieldDescriptor
	fd_IAVLMerklePath_subtree_version  protoreflect.FieldDescriptor
	fd_IAVLMerklePath_sibling_hash     protoreflect.FieldDescriptor
)

func init() {
	file_band_base_oracle_v1_proof_proto_init()
	md_IAVLMerklePath = File_band_base_oracle_v1_proof_proto.Messages().ByName("IAVLMerklePath")
	fd_IAVLMerklePath_is_data_on_right = md_IAVLMerklePath.Fields().ByName("is_data_on_right")
	fd_IAVLMerklePath_subtree_height = md_IAVLMerklePath.Fields().ByName("subtree_height")
	fd_IAVLMerklePath_subtree_size = md_IAVLMerklePath.Fields().ByName("subtree_size")
	fd_IAVLMerklePath_subtree_version = md_IAVLMerklePath.Fields().ByName("subtree_version")
	fd_IAVLMerklePath_sibling_hash = md_IAVLMerklePath.Fields().ByName("sibling_hash")
}

var _ protoreflect.Message = (*fastReflection_IAVLMerklePath)(nil)

type fastReflection_IAVLMerklePath IAVLMerklePath

func (x *IAVLMerklePath) ProtoReflect() protoreflect.Message {
	return (*fastReflection_IAVLMerklePath)(x)
}

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

var _fastReflection_IAVLMerklePath_messageType fastReflection_IAVLMerklePath_messageType
var _ protoreflect.MessageType = fastReflection_IAVLMerklePath_messageType{}

type fastReflection_IAVLMerklePath_messageType struct{}

func (x fastReflection_IAVLMerklePath_messageType) Zero() protoreflect.Message {
	return (*fastReflection_IAVLMerklePath)(nil)
}
func (x fastReflection_IAVLMerklePath_messageType) New() protoreflect.Message {
	return new(fastReflection_IAVLMerklePath)
}
func (x fastReflection_IAVLMerklePath_messageType) Descriptor() protoreflect.MessageDescriptor {
	return md_IAVLMerklePath
}

// Descriptor returns message descriptor, which contains only the protobuf
// type information for the message.
func (x *fastReflection_IAVLMerklePath) Descriptor() protoreflect.MessageDescriptor {
	return md_IAVLMerklePath
}

// Type returns the message type, which encapsulates both Go and protobuf
// type information. If the Go type information is not needed,
// it is recommended that the message descriptor be used instead.
func (x *fastReflection_IAVLMerklePath) Type() protoreflect.MessageType {
	return _fastReflection_IAVLMerklePath_messageType
}

// New returns a newly allocated and mutable empty message.
func (x *fastReflection_IAVLMerklePath) New() protoreflect.Message {
	return new(fastReflection_IAVLMerklePath)
}

// Interface unwraps the message reflection interface and
// returns the underlying ProtoMessage interface.
func (x *fastReflection_IAVLMerklePath) Interface() protoreflect.ProtoMessage {
	return (*IAVLMerklePath)(x)
}

// Range iterates over every populated field in an undefined order,
// calling f for each field descriptor and value encountered.
// Range returns immediately if f returns false.
// While iterating, mutating operations may only be performed
// on the current field descriptor.
func (x *fastReflection_IAVLMerklePath) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {
	if x.IsDataOnRight != false {
		value := protoreflect.ValueOfBool(x.IsDataOnRight)
		if !f(fd_IAVLMerklePath_is_data_on_right, value) {
			return
		}
	}
	if x.SubtreeHeight != uint32(0) {
		value := protoreflect.ValueOfUint32(x.SubtreeHeight)
		if !f(fd_IAVLMerklePath_subtree_height, value) {
			return
		}
	}
	if x.SubtreeSize != uint64(0) {
		value := protoreflect.ValueOfUint64(x.SubtreeSize)
		if !f(fd_IAVLMerklePath_subtree_size, value) {
			return
		}
	}
	if x.SubtreeVersion != uint64(0) {
		value := protoreflect.ValueOfUint64(x.SubtreeVersion)
		if !f(fd_IAVLMerklePath_subtree_version, value) {
			return
		}
	}
	if len(x.SiblingHash) != 0 {
		value := protoreflect.ValueOfBytes(x.SiblingHash)
		if !f(fd_IAVLMerklePath_sibling_hash, value) {
			return
		}
	}
}

// Has reports whether a field is populated.
//
// Some fields have the property of nullability where it is possible to
// distinguish between the default value of a field and whether the field
// was explicitly populated with the default value. Singular message fields,
// member fields of a oneof, and proto2 scalar fields are nullable. Such
// fields are populated only if explicitly set.
//
// In other cases (aside from the nullable cases above),
// a proto3 scalar field is populated if it contains a non-zero value, and
// a repeated field is populated if it is non-empty.
func (x *fastReflection_IAVLMerklePath) Has(fd protoreflect.FieldDescriptor) bool {
	switch fd.FullName() {
	case "band.base.oracle.v1.IAVLMerklePath.is_data_on_right":
		return x.IsDataOnRight != false
	case "band.base.oracle.v1.IAVLMerklePath.subtree_height":
		return x.SubtreeHeight != uint32(0)
	case "band.base.oracle.v1.IAVLMerklePath.subtree_size":
		return x.SubtreeSize != uint64(0)
	case "band.base.oracle.v1.IAVLMerklePath.subtree_version":
		return x.SubtreeVersion != uint64(0)
	case "band.base.oracle.v1.IAVLMerklePath.sibling_hash":
		return len(x.SiblingHash) != 0
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.IAVLMerklePath"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.IAVLMerklePath does not contain field %s", fd.FullName()))
	}
}

// Clear clears the field such that a subsequent Has call reports false.
//
// Clearing an extension field clears both the extension type and value
// associated with the given field number.
//
// Clear is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_IAVLMerklePath) Clear(fd protoreflect.FieldDescriptor) {
	switch fd.FullName() {
	case "band.base.oracle.v1.IAVLMerklePath.is_data_on_right":
		x.IsDataOnRight = false
	case "band.base.oracle.v1.IAVLMerklePath.subtree_height":
		x.SubtreeHeight = uint32(0)
	case "band.base.oracle.v1.IAVLMerklePath.subtree_size":
		x.SubtreeSize = uint64(0)
	case "band.base.oracle.v1.IAVLMerklePath.subtree_version":
		x.SubtreeVersion = uint64(0)
	case "band.base.oracle.v1.IAVLMerklePath.sibling_hash":
		x.SiblingHash = nil
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.IAVLMerklePath"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.IAVLMerklePath does not contain field %s", fd.FullName()))
	}
}

// Get retrieves the value for a field.
//
// For unpopulated scalars, it returns the default value, where
// the default value of a bytes scalar is guaranteed to be a copy.
// For unpopulated composite types, it returns an empty, read-only view
// of the value; to obtain a mutable reference, use Mutable.
func (x *fastReflection_IAVLMerklePath) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {
	switch descriptor.FullName() {
	case "band.base.oracle.v1.IAVLMerklePath.is_data_on_right":
		value := x.IsDataOnRight
		return protoreflect.ValueOfBool(value)
	case "band.base.oracle.v1.IAVLMerklePath.subtree_height":
		value := x.SubtreeHeight
		return protoreflect.ValueOfUint32(value)
	case "band.base.oracle.v1.IAVLMerklePath.subtree_size":
		value := x.SubtreeSize
		return protoreflect.ValueOfUint64(value)
	case "band.base.oracle.v1.IAVLMerklePath.subtree_version":
		value := x.SubtreeVersion
		return protoreflect.ValueOfUint64(value)
	case "band.base.oracle.v1.IAVLMerklePath.sibling_hash":
		value := x.SiblingHash
		return protoreflect.ValueOfBytes(value)
	default:
		if descriptor.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.IAVLMerklePath"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.IAVLMerklePath does not contain field %s", descriptor.FullName()))
	}
}

// Set stores the value for a field.
//
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType.
// When setting a composite type, it is unspecified whether the stored value
// aliases the source's memory in any way. If the composite value is an
// empty, read-only value, then it panics.
//
// Set is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_IAVLMerklePath) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {
	switch fd.FullName() {
	case "band.base.oracle.v1.IAVLMerklePath.is_data_on_right":
		x.IsDataOnRight = value.Bool()
	case "band.base.oracle.v1.IAVLMerklePath.subtree_height":
		x.SubtreeHeight = uint32(value.Uint())
	case "band.base.oracle.v1.IAVLMerklePath.subtree_size":
		x.SubtreeSize = value.Uint()
	case "band.base.oracle.v1.IAVLMerklePath.subtree_version":
		x.SubtreeVersion = value.Uint()
	case "band.base.oracle.v1.IAVLMerklePath.sibling_hash":
		x.SiblingHash = value.Bytes()
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.IAVLMerklePath"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.IAVLMerklePath does not contain field %s", fd.FullName()))
	}
}

// Mutable returns a mutable reference to a composite type.
//
// If the field is unpopulated, it may allocate a composite value.
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType
// if not already stored.
// It panics if the field does not contain a composite type.
//
// Mutable is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_IAVLMerklePath) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {
	switch fd.FullName() {
	case "band.base.oracle.v1.IAVLMerklePath.is_data_on_right":
		panic(fmt.Errorf("field is_data_on_right of message band.base.oracle.v1.IAVLMerklePath is not mutable"))
	case "band.base.oracle.v1.IAVLMerklePath.subtree_height":
		panic(fmt.Errorf("field subtree_height of message band.base.oracle.v1.IAVLMerklePath is not mutable"))
	case "band.base.oracle.v1.IAVLMerklePath.subtree_size":
		panic(fmt.Errorf("field subtree_size of message band.base.oracle.v1.IAVLMerklePath is not mutable"))
	case "band.base.oracle.v1.IAVLMerklePath.subtree_version":
		panic(fmt.Errorf("field subtree_version of message band.base.oracle.v1.IAVLMerklePath is not mutable"))
	case "band.base.oracle.v1.IAVLMerklePath.sibling_hash":
		panic(fmt.Errorf("field sibling_hash of message band.base.oracle.v1.IAVLMerklePath is not mutable"))
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.IAVLMerklePath"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.IAVLMerklePath does not contain field %s", fd.FullName()))
	}
}

// NewField returns a new value that is assignable to the field
// for the given descriptor. For scalars, this returns the default value.
// For lists, maps, and messages, this returns a new, empty, mutable value.
func (x *fastReflection_IAVLMerklePath) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {
	switch fd.FullName() {
	case "band.base.oracle.v1.IAVLMerklePath.is_data_on_right":
		return protoreflect.ValueOfBool(false)
	case "band.base.oracle.v1.IAVLMerklePath.subtree_height":
		return protoreflect.ValueOfUint32(uint32(0))
	case "band.base.oracle.v1.IAVLMerklePath.subtree_size":
		return protoreflect.ValueOfUint64(uint64(0))
	case "band.base.oracle.v1.IAVLMerklePath.subtree_version":
		return protoreflect.ValueOfUint64(uint64(0))
	case "band.base.oracle.v1.IAVLMerklePath.sibling_hash":
		return protoreflect.ValueOfBytes(nil)
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.IAVLMerklePath"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.IAVLMerklePath does not contain field %s", fd.FullName()))
	}
}

// WhichOneof reports which field within the oneof is populated,
// returning nil if none are populated.
// It panics if the oneof descriptor does not belong to this message.
func (x *fastReflection_IAVLMerklePath) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {
	switch d.FullName() {
	default:
		panic(fmt.Errorf("%s is not a oneof field in band.base.oracle.v1.IAVLMerklePath", d.FullName()))
	}
	panic("unreachable")
}

// GetUnknown retrieves the entire list of unknown fields.
// The caller may only mutate the contents of the RawFields
// if the mutated bytes are stored back into the message with SetUnknown.
func (x *fastReflection_IAVLMerklePath) GetUnknown() protoreflect.RawFields {
	return x.unknownFields
}

// SetUnknown stores an entire list of unknown fields.
// The raw fields must be syntactically valid according to the wire format.
// An implementation may panic if this is not the case.
// Once stored, the caller must not mutate the content of the RawFields.
// An empty RawFields may be passed to clear the fields.
//
// SetUnknown is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_IAVLMerklePath) SetUnknown(fields protoreflect.RawFields) {
	x.unknownFields = fields
}

// IsValid reports whether the message is valid.
//
// An invalid message is an empty, read-only value.
//
// An invalid message often corresponds to a nil pointer of the concrete
// message type, but the details are implementation dependent.
// Validity is not part of the protobuf data model, and may not
// be preserved in marshaling or other operations.
func (x *fastReflection_IAVLMerklePath) IsValid() bool {
	return x != nil
}

// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.
// This method may return nil.
//
// The returned methods type is identical to
// "google.golang.org/protobuf/runtime/protoiface".Methods.
// Consult the protoiface package documentation for details.
func (x *fastReflection_IAVLMerklePath) ProtoMethods() *protoiface.Methods {
	size := func(input protoiface.SizeInput) protoiface.SizeOutput {
		x := input.Message.Interface().(*IAVLMerklePath)
		if x == nil {
			return protoiface.SizeOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Size:              0,
			}
		}
		options := runtime.SizeInputToOptions(input)
		_ = options
		var n int
		var l int
		_ = l
		if x.IsDataOnRight {
			n += 2
		}
		if x.SubtreeHeight != 0 {
			n += 1 + runtime.Sov(uint64(x.SubtreeHeight))
		}
		if x.SubtreeSize != 0 {
			n += 1 + runtime.Sov(uint64(x.SubtreeSize))
		}
		if x.SubtreeVersion != 0 {
			n += 1 + runtime.Sov(uint64(x.SubtreeVersion))
		}
		l = len(x.SiblingHash)
		if l > 0 {
			n += 1 + l + runtime.Sov(uint64(l))
		}
		if x.unknownFields != nil {
			n += len(x.unknownFields)
		}
		return protoiface.SizeOutput{
			NoUnkeyedLiterals: input.NoUnkeyedLiterals,
			Size:              n,
		}
	}

	marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {
		x := input.Message.Interface().(*IAVLMerklePath)
		if x == nil {
			return protoiface.MarshalOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Buf:               input.Buf,
			}, nil
		}
		options := runtime.MarshalInputToOptions(input)
		_ = options
		size := options.Size(x)
		dAtA := make([]byte, size)
		i := len(dAtA)
		_ = i
		var l int
		_ = l
		if x.unknownFields != nil {
			i -= len(x.unknownFields)
			copy(dAtA[i:], x.unknownFields)
		}
		if len(x.SiblingHash) > 0 {
			i -= len(x.SiblingHash)
			copy(dAtA[i:], x.SiblingHash)
			i = runtime.EncodeVarint(dAtA, i, uint64(len(x.SiblingHash)))
			i--
			dAtA[i] = 0x2a
		}
		if x.SubtreeVersion != 0 {
			i = runtime.EncodeVarint(dAtA, i, uint64(x.SubtreeVersion))
			i--
			dAtA[i] = 0x20
		}
		if x.SubtreeSize != 0 {
			i = runtime.EncodeVarint(dAtA, i, uint64(x.SubtreeSize))
			i--
			dAtA[i] = 0x18
		}
		if x.SubtreeHeight != 0 {
			i = runtime.EncodeVarint(dAtA, i, uint64(x.SubtreeHeight))
			i--
			dAtA[i] = 0x10
		}
		if x.IsDataOnRight {
			i--
			if x.IsDataOnRight {
				dAtA[i] = 1
			} else {
				dAtA[i] = 0
			}
			i--
			dAtA[i] = 0x8
		}
		if input.Buf != nil {
			input.Buf = append(input.Buf, dAtA...)
		} else {
			input.Buf = dAtA
		}
		return protoiface.MarshalOutput{
			NoUnkeyedLiterals: input.NoUnkeyedLiterals,
			Buf:               input.Buf,
		}, nil
	}
	unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {
		x := input.Message.Interface().(*IAVLMerklePath)
		if x == nil {
			return protoiface.UnmarshalOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Flags:             input.Flags,
			}, nil
		}
		options := runtime.UnmarshalInputToOptions(input)
		_ = options
		dAtA := input.Buf
		l := len(dAtA)
		iNdEx := 0
		for iNdEx < l {
			preIndex := iNdEx
			var wire uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
				}
				if iNdEx >= l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				wire |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			fieldNum := int32(wire >> 3)
			wireType := int(wire & 0x7)
			if wireType == 4 {
				return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: IAVLMerklePath: wiretype end group for non-group")
			}
			if fieldNum <= 0 {
				return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: IAVLMerklePath: illegal tag %d (wire type %d)", fieldNum, wire)
			}
			switch fieldNum {
			case 1:
				if wireType != 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field IsDataOnRight", wireType)
				}
				var v int
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					v |= int(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
				x.IsDataOnRight = bool(v != 0)
			case 2:
				if wireType != 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field SubtreeHeight", wireType)
				}
				x.SubtreeHeight = 0
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					x.SubtreeHeight |= uint32(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
			case 3:
				if wireType != 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field SubtreeSize", wireType)
				}
				x.SubtreeSize = 0
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					x.SubtreeSize |= uint64(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
			case 4:
				if wireType != 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field SubtreeVersion", wireType)
				}
				x.SubtreeVersion = 0
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					x.SubtreeVersion |= uint64(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
			case 5:
				if wireType != 2 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field SiblingHash", wireType)
				}
				var byteLen int
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					byteLen |= int(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
				if byteLen < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				postIndex := iNdEx + byteLen
				if postIndex < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if postIndex > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				x.SiblingHash = append(x.SiblingHash[:0], dAtA[iNdEx:postIndex]...)
				if x.SiblingHash == nil {
					x.SiblingHash = []byte{}
				}
				iNdEx = postIndex
			default:
				iNdEx = preIndex
				skippy, err := runtime.Skip(dAtA[iNdEx:])
				if err != nil {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
				}
				if (skippy < 0) || (iNdEx+skippy) < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if (iNdEx + skippy) > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				if !options.DiscardUnknown {
					x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
				}
				iNdEx += skippy
			}
		}

		if iNdEx > l {
			return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
		}
		return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil
	}
	return &protoiface.Methods{
		NoUnkeyedLiterals: struct{}{},
		Flags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,
		Size:              size,
		Marshal:           marshal,
		Unmarshal:         unmarshal,
		Merge:             nil,
		CheckInitialized:  nil,
	}
}

var _ protoreflect.List = (*_BlockRelayProof_4_list)(nil)

type _BlockRelayProof_4_list struct {
	list *[]*TMSignature
}

func (x *_BlockRelayProof_4_list) Len() int {
	if x.list == nil {
		return 0
	}
	return len(*x.list)
}

func (x *_BlockRelayProof_4_list) Get(i int) protoreflect.Value {
	return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect())
}

func (x *_BlockRelayProof_4_list) Set(i int, value protoreflect.Value) {
	valueUnwrapped := value.Message()
	concreteValue := valueUnwrapped.Interface().(*TMSignature)
	(*x.list)[i] = concreteValue
}

func (x *_BlockRelayProof_4_list) Append(value protoreflect.Value) {
	valueUnwrapped := value.Message()
	concreteValue := valueUnwrapped.Interface().(*TMSignature)
	*x.list = append(*x.list, concreteValue)
}

func (x *_BlockRelayProof_4_list) AppendMutable() protoreflect.Value {
	v := new(TMSignature)
	*x.list = append(*x.list, v)
	return protoreflect.ValueOfMessage(v.ProtoReflect())
}

func (x *_BlockRelayProof_4_list) Truncate(n int) {
	for i := n; i < len(*x.list); i++ {
		(*x.list)[i] = nil
	}
	*x.list = (*x.list)[:n]
}

func (x *_BlockRelayProof_4_list) NewElement() protoreflect.Value {
	v := new(TMSignature)
	return protoreflect.ValueOfMessage(v.ProtoReflect())
}

func (x *_BlockRelayProof_4_list) IsValid() bool {
	return x.list != nil
}

var (
	md_BlockRelayProof                           protoreflect.MessageDescriptor
	fd_BlockRelayProof_multi_store_proof         protoreflect.FieldDescriptor
	fd_BlockRelayProof_block_header_merkle_parts protoreflect.FieldDescriptor
	fd_BlockRelayProof_common_encoded_vote_part  protoreflect.FieldDescriptor
	fd_BlockRelayProof_signatures                protoreflect.FieldDescriptor
)

func init() {
	file_band_base_oracle_v1_proof_proto_init()
	md_BlockRelayProof = File_band_base_oracle_v1_proof_proto.Messages().ByName("BlockRelayProof")
	fd_BlockRelayProof_multi_store_proof = md_BlockRelayProof.Fields().ByName("multi_store_proof")
	fd_BlockRelayProof_block_header_merkle_parts = md_BlockRelayProof.Fields().ByName("block_header_merkle_parts")
	fd_BlockRelayProof_common_encoded_vote_part = md_BlockRelayProof.Fields().ByName("common_encoded_vote_part")
	fd_BlockRelayProof_signatures = md_BlockRelayProof.Fields().ByName("signatures")
}

var _ protoreflect.Message = (*fastReflection_BlockRelayProof)(nil)

type fastReflection_BlockRelayProof BlockRelayProof

func (x *BlockRelayProof) ProtoReflect() protoreflect.Message {
	return (*fastReflection_BlockRelayProof)(x)
}

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

var _fastReflection_BlockRelayProof_messageType fastReflection_BlockRelayProof_messageType
var _ protoreflect.MessageType = fastReflection_BlockRelayProof_messageType{}

type fastReflection_BlockRelayProof_messageType struct{}

func (x fastReflection_BlockRelayProof_messageType) Zero() protoreflect.Message {
	return (*fastReflection_BlockRelayProof)(nil)
}
func (x fastReflection_BlockRelayProof_messageType) New() protoreflect.Message {
	return new(fastReflection_BlockRelayProof)
}
func (x fastReflection_BlockRelayProof_messageType) Descriptor() protoreflect.MessageDescriptor {
	return md_BlockRelayProof
}

// Descriptor returns message descriptor, which contains only the protobuf
// type information for the message.
func (x *fastReflection_BlockRelayProof) Descriptor() protoreflect.MessageDescriptor {
	return md_BlockRelayProof
}

// Type returns the message type, which encapsulates both Go and protobuf
// type information. If the Go type information is not needed,
// it is recommended that the message descriptor be used instead.
func (x *fastReflection_BlockRelayProof) Type() protoreflect.MessageType {
	return _fastReflection_BlockRelayProof_messageType
}

// New returns a newly allocated and mutable empty message.
func (x *fastReflection_BlockRelayProof) New() protoreflect.Message {
	return new(fastReflection_BlockRelayProof)
}

// Interface unwraps the message reflection interface and
// returns the underlying ProtoMessage interface.
func (x *fastReflection_BlockRelayProof) Interface() protoreflect.ProtoMessage {
	return (*BlockRelayProof)(x)
}

// Range iterates over every populated field in an undefined order,
// calling f for each field descriptor and value encountered.
// Range returns immediately if f returns false.
// While iterating, mutating operations may only be performed
// on the current field descriptor.
func (x *fastReflection_BlockRelayProof) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {
	if x.MultiStoreProof != nil {
		value := protoreflect.ValueOfMessage(x.MultiStoreProof.ProtoReflect())
		if !f(fd_BlockRelayProof_multi_store_proof, value) {
			return
		}
	}
	if x.BlockHeaderMerkleParts != nil {
		value := protoreflect.ValueOfMessage(x.BlockHeaderMerkleParts.ProtoReflect())
		if !f(fd_BlockRelayProof_block_header_merkle_parts, value) {
			return
		}
	}
	if x.CommonEncodedVotePart != nil {
		value := protoreflect.ValueOfMessage(x.CommonEncodedVotePart.ProtoReflect())
		if !f(fd_BlockRelayProof_common_encoded_vote_part, value) {
			return
		}
	}
	if len(x.Signatures) != 0 {
		value := protoreflect.ValueOfList(&_BlockRelayProof_4_list{list: &x.Signatures})
		if !f(fd_BlockRelayProof_signatures, value) {
			return
		}
	}
}

// Has reports whether a field is populated.
//
// Some fields have the property of nullability where it is possible to
// distinguish between the default value of a field and whether the field
// was explicitly populated with the default value. Singular message fields,
// member fields of a oneof, and proto2 scalar fields are nullable. Such
// fields are populated only if explicitly set.
//
// In other cases (aside from the nullable cases above),
// a proto3 scalar field is populated if it contains a non-zero value, and
// a repeated field is populated if it is non-empty.
func (x *fastReflection_BlockRelayProof) Has(fd protoreflect.FieldDescriptor) bool {
	switch fd.FullName() {
	case "band.base.oracle.v1.BlockRelayProof.multi_store_proof":
		return x.MultiStoreProof != nil
	case "band.base.oracle.v1.BlockRelayProof.block_header_merkle_parts":
		return x.BlockHeaderMerkleParts != nil
	case "band.base.oracle.v1.BlockRelayProof.common_encoded_vote_part":
		return x.CommonEncodedVotePart != nil
	case "band.base.oracle.v1.BlockRelayProof.signatures":
		return len(x.Signatures) != 0
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.BlockRelayProof"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.BlockRelayProof does not contain field %s", fd.FullName()))
	}
}

// Clear clears the field such that a subsequent Has call reports false.
//
// Clearing an extension field clears both the extension type and value
// associated with the given field number.
//
// Clear is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_BlockRelayProof) Clear(fd protoreflect.FieldDescriptor) {
	switch fd.FullName() {
	case "band.base.oracle.v1.BlockRelayProof.multi_store_proof":
		x.MultiStoreProof = nil
	case "band.base.oracle.v1.BlockRelayProof.block_header_merkle_parts":
		x.BlockHeaderMerkleParts = nil
	case "band.base.oracle.v1.BlockRelayProof.common_encoded_vote_part":
		x.CommonEncodedVotePart = nil
	case "band.base.oracle.v1.BlockRelayProof.signatures":
		x.Signatures = nil
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.BlockRelayProof"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.BlockRelayProof does not contain field %s", fd.FullName()))
	}
}

// Get retrieves the value for a field.
//
// For unpopulated scalars, it returns the default value, where
// the default value of a bytes scalar is guaranteed to be a copy.
// For unpopulated composite types, it returns an empty, read-only view
// of the value; to obtain a mutable reference, use Mutable.
func (x *fastReflection_BlockRelayProof) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {
	switch descriptor.FullName() {
	case "band.base.oracle.v1.BlockRelayProof.multi_store_proof":
		value := x.MultiStoreProof
		return protoreflect.ValueOfMessage(value.ProtoReflect())
	case "band.base.oracle.v1.BlockRelayProof.block_header_merkle_parts":
		value := x.BlockHeaderMerkleParts
		return protoreflect.ValueOfMessage(value.ProtoReflect())
	case "band.base.oracle.v1.BlockRelayProof.common_encoded_vote_part":
		value := x.CommonEncodedVotePart
		return protoreflect.ValueOfMessage(value.ProtoReflect())
	case "band.base.oracle.v1.BlockRelayProof.signatures":
		if len(x.Signatures) == 0 {
			return protoreflect.ValueOfList(&_BlockRelayProof_4_list{})
		}
		listValue := &_BlockRelayProof_4_list{list: &x.Signatures}
		return protoreflect.ValueOfList(listValue)
	default:
		if descriptor.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.BlockRelayProof"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.BlockRelayProof does not contain field %s", descriptor.FullName()))
	}
}

// Set stores the value for a field.
//
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType.
// When setting a composite type, it is unspecified whether the stored value
// aliases the source's memory in any way. If the composite value is an
// empty, read-only value, then it panics.
//
// Set is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_BlockRelayProof) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {
	switch fd.FullName() {
	case "band.base.oracle.v1.BlockRelayProof.multi_store_proof":
		x.MultiStoreProof = value.Message().Interface().(*MultiStoreProof)
	case "band.base.oracle.v1.BlockRelayProof.block_header_merkle_parts":
		x.BlockHeaderMerkleParts = value.Message().Interface().(*BlockHeaderMerkleParts)
	case "band.base.oracle.v1.BlockRelayProof.common_encoded_vote_part":
		x.CommonEncodedVotePart = value.Message().Interface().(*CommonEncodedVotePart)
	case "band.base.oracle.v1.BlockRelayProof.signatures":
		lv := value.List()
		clv := lv.(*_BlockRelayProof_4_list)
		x.Signatures = *clv.list
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.BlockRelayProof"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.BlockRelayProof does not contain field %s", fd.FullName()))
	}
}

// Mutable returns a mutable reference to a composite type.
//
// If the field is unpopulated, it may allocate a composite value.
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType
// if not already stored.
// It panics if the field does not contain a composite type.
//
// Mutable is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_BlockRelayProof) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {
	switch fd.FullName() {
	case "band.base.oracle.v1.BlockRelayProof.multi_store_proof":
		if x.MultiStoreProof == nil {
			x.MultiStoreProof = new(MultiStoreProof)
		}
		return protoreflect.ValueOfMessage(x.MultiStoreProof.ProtoReflect())
	case "band.base.oracle.v1.BlockRelayProof.block_header_merkle_parts":
		if x.BlockHeaderMerkleParts == nil {
			x.BlockHeaderMerkleParts = new(BlockHeaderMerkleParts)
		}
		return protoreflect.ValueOfMessage(x.BlockHeaderMerkleParts.ProtoReflect())
	case "band.base.oracle.v1.BlockRelayProof.common_encoded_vote_part":
		if x.CommonEncodedVotePart == nil {
			x.CommonEncodedVotePart = new(CommonEncodedVotePart)
		}
		return protoreflect.ValueOfMessage(x.CommonEncodedVotePart.ProtoReflect())
	case "band.base.oracle.v1.BlockRelayProof.signatures":
		if x.Signatures == nil {
			x.Signatures = []*TMSignature{}
		}
		value := &_BlockRelayProof_4_list{list: &x.Signatures}
		return protoreflect.ValueOfList(value)
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.BlockRelayProof"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.BlockRelayProof does not contain field %s", fd.FullName()))
	}
}

// NewField returns a new value that is assignable to the field
// for the given descriptor. For scalars, this returns the default value.
// For lists, maps, and messages, this returns a new, empty, mutable value.
func (x *fastReflection_BlockRelayProof) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {
	switch fd.FullName() {
	case "band.base.oracle.v1.BlockRelayProof.multi_store_proof":
		m := new(MultiStoreProof)
		return protoreflect.ValueOfMessage(m.ProtoReflect())
	case "band.base.oracle.v1.BlockRelayProof.block_header_merkle_parts":
		m := new(BlockHeaderMerkleParts)
		return protoreflect.ValueOfMessage(m.ProtoReflect())
	case "band.base.oracle.v1.BlockRelayProof.common_encoded_vote_part":
		m := new(CommonEncodedVotePart)
		return protoreflect.ValueOfMessage(m.ProtoReflect())
	case "band.base.oracle.v1.BlockRelayProof.signatures":
		list := []*TMSignature{}
		return protoreflect.ValueOfList(&_BlockRelayProof_4_list{list: &list})
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.BlockRelayProof"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.BlockRelayProof does not contain field %s", fd.FullName()))
	}
}

// WhichOneof reports which field within the oneof is populated,
// returning nil if none are populated.
// It panics if the oneof descriptor does not belong to this message.
func (x *fastReflection_BlockRelayProof) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {
	switch d.FullName() {
	default:
		panic(fmt.Errorf("%s is not a oneof field in band.base.oracle.v1.BlockRelayProof", d.FullName()))
	}
	panic("unreachable")
}

// GetUnknown retrieves the entire list of unknown fields.
// The caller may only mutate the contents of the RawFields
// if the mutated bytes are stored back into the message with SetUnknown.
func (x *fastReflection_BlockRelayProof) GetUnknown() protoreflect.RawFields {
	return x.unknownFields
}

// SetUnknown stores an entire list of unknown fields.
// The raw fields must be syntactically valid according to the wire format.
// An implementation may panic if this is not the case.
// Once stored, the caller must not mutate the content of the RawFields.
// An empty RawFields may be passed to clear the fields.
//
// SetUnknown is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_BlockRelayProof) SetUnknown(fields protoreflect.RawFields) {
	x.unknownFields = fields
}

// IsValid reports whether the message is valid.
//
// An invalid message is an empty, read-only value.
//
// An invalid message often corresponds to a nil pointer of the concrete
// message type, but the details are implementation dependent.
// Validity is not part of the protobuf data model, and may not
// be preserved in marshaling or other operations.
func (x *fastReflection_BlockRelayProof) IsValid() bool {
	return x != nil
}

// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.
// This method may return nil.
//
// The returned methods type is identical to
// "google.golang.org/protobuf/runtime/protoiface".Methods.
// Consult the protoiface package documentation for details.
func (x *fastReflection_BlockRelayProof) ProtoMethods() *protoiface.Methods {
	size := func(input protoiface.SizeInput) protoiface.SizeOutput {
		x := input.Message.Interface().(*BlockRelayProof)
		if x == nil {
			return protoiface.SizeOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Size:              0,
			}
		}
		options := runtime.SizeInputToOptions(input)
		_ = options
		var n int
		var l int
		_ = l
		if x.MultiStoreProof != nil {
			l = options.Size(x.MultiStoreProof)
			n += 1 + l + runtime.Sov(uint64(l))
		}
		if x.BlockHeaderMerkleParts != nil {
			l = options.Size(x.BlockHeaderMerkleParts)
			n += 1 + l + runtime.Sov(uint64(l))
		}
		if x.CommonEncodedVotePart != nil {
			l = options.Size(x.CommonEncodedVotePart)
			n += 1 + l + runtime.Sov(uint64(l))
		}
		if len(x.Signatures) > 0 {
			for _, e := range x.Signatures {
				l = options.Size(e)
				n += 1 + l + runtime.Sov(uint64(l))
			}
		}
		if x.unknownFields != nil {
			n += len(x.unknownFields)
		}
		return protoiface.SizeOutput{
			NoUnkeyedLiterals: input.NoUnkeyedLiterals,
			Size:              n,
		}
	}

	marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {
		x := input.Message.Interface().(*BlockRelayProof)
		if x == nil {
			return protoiface.MarshalOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Buf:               input.Buf,
			}, nil
		}
		options := runtime.MarshalInputToOptions(input)
		_ = options
		size := options.Size(x)
		dAtA := make([]byte, size)
		i := len(dAtA)
		_ = i
		var l int
		_ = l
		if x.unknownFields != nil {
			i -= len(x.unknownFields)
			copy(dAtA[i:], x.unknownFields)
		}
		if len(x.Signatures) > 0 {
			for iNdEx := len(x.Signatures) - 1; iNdEx >= 0; iNdEx-- {
				encoded, err := options.Marshal(x.Signatures[iNdEx])
				if err != nil {
					return protoiface.MarshalOutput{
						NoUnkeyedLiterals: input.NoUnkeyedLiterals,
						Buf:               input.Buf,
					}, err
				}
				i -= len(encoded)
				copy(dAtA[i:], encoded)
				i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))
				i--
				dAtA[i] = 0x22
			}
		}
		if x.CommonEncodedVotePart != nil {
			encoded, err := options.Marshal(x.CommonEncodedVotePart)
			if err != nil {
				return protoiface.MarshalOutput{
					NoUnkeyedLiterals: input.NoUnkeyedLiterals,
					Buf:               input.Buf,
				}, err
			}
			i -= len(encoded)
			copy(dAtA[i:], encoded)
			i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))
			i--
			dAtA[i] = 0x1a
		}
		if x.BlockHeaderMerkleParts != nil {
			encoded, err := options.Marshal(x.BlockHeaderMerkleParts)
			if err != nil {
				return protoiface.MarshalOutput{
					NoUnkeyedLiterals: input.NoUnkeyedLiterals,
					Buf:               input.Buf,
				}, err
			}
			i -= len(encoded)
			copy(dAtA[i:], encoded)
			i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))
			i--
			dAtA[i] = 0x12
		}
		if x.MultiStoreProof != nil {
			encoded, err := options.Marshal(x.MultiStoreProof)
			if err != nil {
				return protoiface.MarshalOutput{
					NoUnkeyedLiterals: input.NoUnkeyedLiterals,
					Buf:               input.Buf,
				}, err
			}
			i -= len(encoded)
			copy(dAtA[i:], encoded)
			i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))
			i--
			dAtA[i] = 0xa
		}
		if input.Buf != nil {
			input.Buf = append(input.Buf, dAtA...)
		} else {
			input.Buf = dAtA
		}
		return protoiface.MarshalOutput{
			NoUnkeyedLiterals: input.NoUnkeyedLiterals,
			Buf:               input.Buf,
		}, nil
	}
	unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {
		x := input.Message.Interface().(*BlockRelayProof)
		if x == nil {
			return protoiface.UnmarshalOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Flags:             input.Flags,
			}, nil
		}
		options := runtime.UnmarshalInputToOptions(input)
		_ = options
		dAtA := input.Buf
		l := len(dAtA)
		iNdEx := 0
		for iNdEx < l {
			preIndex := iNdEx
			var wire uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
				}
				if iNdEx >= l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				wire |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			fieldNum := int32(wire >> 3)
			wireType := int(wire & 0x7)
			if wireType == 4 {
				return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: BlockRelayProof: wiretype end group for non-group")
			}
			if fieldNum <= 0 {
				return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: BlockRelayProof: illegal tag %d (wire type %d)", fieldNum, wire)
			}
			switch fieldNum {
			case 1:
				if wireType != 2 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field MultiStoreProof", wireType)
				}
				var msglen int
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					msglen |= int(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
				if msglen < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				postIndex := iNdEx + msglen
				if postIndex < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if postIndex > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				if x.MultiStoreProof == nil {
					x.MultiStoreProof = &MultiStoreProof{}
				}
				if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.MultiStoreProof); err != nil {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
				}
				iNdEx = postIndex
			case 2:
				if wireType != 2 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field BlockHeaderMerkleParts", wireType)
				}
				var msglen int
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					msglen |= int(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
				if msglen < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				postIndex := iNdEx + msglen
				if postIndex < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if postIndex > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				if x.BlockHeaderMerkleParts == nil {
					x.BlockHeaderMerkleParts = &BlockHeaderMerkleParts{}
				}
				if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.BlockHeaderMerkleParts); err != nil {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
				}
				iNdEx = postIndex
			case 3:
				if wireType != 2 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field CommonEncodedVotePart", wireType)
				}
				var msglen int
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					msglen |= int(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
				if msglen < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				postIndex := iNdEx + msglen
				if postIndex < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if postIndex > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				if x.CommonEncodedVotePart == nil {
					x.CommonEncodedVotePart = &CommonEncodedVotePart{}
				}
				if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.CommonEncodedVotePart); err != nil {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
				}
				iNdEx = postIndex
			case 4:
				if wireType != 2 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Signatures", wireType)
				}
				var msglen int
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					msglen |= int(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
				if msglen < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				postIndex := iNdEx + msglen
				if postIndex < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if postIndex > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				x.Signatures = append(x.Signatures, &TMSignature{})
				if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Signatures[len(x.Signatures)-1]); err != nil {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
				}
				iNdEx = postIndex
			default:
				iNdEx = preIndex
				skippy, err := runtime.Skip(dAtA[iNdEx:])
				if err != nil {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
				}
				if (skippy < 0) || (iNdEx+skippy) < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if (iNdEx + skippy) > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				if !options.DiscardUnknown {
					x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
				}
				iNdEx += skippy
			}
		}

		if iNdEx > l {
			return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
		}
		return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil
	}
	return &protoiface.Methods{
		NoUnkeyedLiterals: struct{}{},
		Flags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,
		Size:              size,
		Marshal:           marshal,
		Unmarshal:         unmarshal,
		Merge:             nil,
		CheckInitialized:  nil,
	}
}

var (
	md_MultiStoreProof                                            protoreflect.MessageDescriptor
	fd_MultiStoreProof_oracle_iavl_state_hash                     protoreflect.FieldDescriptor
	fd_MultiStoreProof_mint_store_merkle_hash                     protoreflect.FieldDescriptor
	fd_MultiStoreProof_params_to_restake_stores_merkle_hash       protoreflect.FieldDescriptor
	fd_MultiStoreProof_rollingseed_to_transfer_stores_merkle_hash protoreflect.FieldDescriptor
	fd_MultiStoreProof_tss_to_upgrade_stores_merkle_hash          protoreflect.FieldDescriptor
	fd_MultiStoreProof_auth_to_icahost_stores_merkle_hash         protoreflect.FieldDescriptor
)

func init() {
	file_band_base_oracle_v1_proof_proto_init()
	md_MultiStoreProof = File_band_base_oracle_v1_proof_proto.Messages().ByName("MultiStoreProof")
	fd_MultiStoreProof_oracle_iavl_state_hash = md_MultiStoreProof.Fields().ByName("oracle_iavl_state_hash")
	fd_MultiStoreProof_mint_store_merkle_hash = md_MultiStoreProof.Fields().ByName("mint_store_merkle_hash")
	fd_MultiStoreProof_params_to_restake_stores_merkle_hash = md_MultiStoreProof.Fields().ByName("params_to_restake_stores_merkle_hash")
	fd_MultiStoreProof_rollingseed_to_transfer_stores_merkle_hash = md_MultiStoreProof.Fields().ByName("rollingseed_to_transfer_stores_merkle_hash")
	fd_MultiStoreProof_tss_to_upgrade_stores_merkle_hash = md_MultiStoreProof.Fields().ByName("tss_to_upgrade_stores_merkle_hash")
	fd_MultiStoreProof_auth_to_icahost_stores_merkle_hash = md_MultiStoreProof.Fields().ByName("auth_to_icahost_stores_merkle_hash")
}

var _ protoreflect.Message = (*fastReflection_MultiStoreProof)(nil)

type fastReflection_MultiStoreProof MultiStoreProof

func (x *MultiStoreProof) ProtoReflect() protoreflect.Message {
	return (*fastReflection_MultiStoreProof)(x)
}

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

var _fastReflection_MultiStoreProof_messageType fastReflection_MultiStoreProof_messageType
var _ protoreflect.MessageType = fastReflection_MultiStoreProof_messageType{}

type fastReflection_MultiStoreProof_messageType struct{}

func (x fastReflection_MultiStoreProof_messageType) Zero() protoreflect.Message {
	return (*fastReflection_MultiStoreProof)(nil)
}
func (x fastReflection_MultiStoreProof_messageType) New() protoreflect.Message {
	return new(fastReflection_MultiStoreProof)
}
func (x fastReflection_MultiStoreProof_messageType) Descriptor() protoreflect.MessageDescriptor {
	return md_MultiStoreProof
}

// Descriptor returns message descriptor, which contains only the protobuf
// type information for the message.
func (x *fastReflection_MultiStoreProof) Descriptor() protoreflect.MessageDescriptor {
	return md_MultiStoreProof
}

// Type returns the message type, which encapsulates both Go and protobuf
// type information. If the Go type information is not needed,
// it is recommended that the message descriptor be used instead.
func (x *fastReflection_MultiStoreProof) Type() protoreflect.MessageType {
	return _fastReflection_MultiStoreProof_messageType
}

// New returns a newly allocated and mutable empty message.
func (x *fastReflection_MultiStoreProof) New() protoreflect.Message {
	return new(fastReflection_MultiStoreProof)
}

// Interface unwraps the message reflection interface and
// returns the underlying ProtoMessage interface.
func (x *fastReflection_MultiStoreProof) Interface() protoreflect.ProtoMessage {
	return (*MultiStoreProof)(x)
}

// Range iterates over every populated field in an undefined order,
// calling f for each field descriptor and value encountered.
// Range returns immediately if f returns false.
// While iterating, mutating operations may only be performed
// on the current field descriptor.
func (x *fastReflection_MultiStoreProof) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {
	if len(x.OracleIavlStateHash) != 0 {
		value := protoreflect.ValueOfBytes(x.OracleIavlStateHash)
		if !f(fd_MultiStoreProof_oracle_iavl_state_hash, value) {
			return
		}
	}
	if len(x.MintStoreMerkleHash) != 0 {
		value := protoreflect.ValueOfBytes(x.MintStoreMerkleHash)
		if !f(fd_MultiStoreProof_mint_store_merkle_hash, value) {
			return
		}
	}
	if len(x.ParamsToRestakeStoresMerkleHash) != 0 {
		value := protoreflect.ValueOfBytes(x.ParamsToRestakeStoresMerkleHash)
		if !f(fd_MultiStoreProof_params_to_restake_stores_merkle_hash, value) {
			return
		}
	}
	if len(x.RollingseedToTransferStoresMerkleHash) != 0 {
		value := protoreflect.ValueOfBytes(x.RollingseedToTransferStoresMerkleHash)
		if !f(fd_MultiStoreProof_rollingseed_to_transfer_stores_merkle_hash, value) {
			return
		}
	}
	if len(x.TssToUpgradeStoresMerkleHash) != 0 {
		value := protoreflect.ValueOfBytes(x.TssToUpgradeStoresMerkleHash)
		if !f(fd_MultiStoreProof_tss_to_upgrade_stores_merkle_hash, value) {
			return
		}
	}
	if len(x.AuthToIcahostStoresMerkleHash) != 0 {
		value := protoreflect.ValueOfBytes(x.AuthToIcahostStoresMerkleHash)
		if !f(fd_MultiStoreProof_auth_to_icahost_stores_merkle_hash, value) {
			return
		}
	}
}

// Has reports whether a field is populated.
//
// Some fields have the property of nullability where it is possible to
// distinguish between the default value of a field and whether the field
// was explicitly populated with the default value. Singular message fields,
// member fields of a oneof, and proto2 scalar fields are nullable. Such
// fields are populated only if explicitly set.
//
// In other cases (aside from the nullable cases above),
// a proto3 scalar field is populated if it contains a non-zero value, and
// a repeated field is populated if it is non-empty.
func (x *fastReflection_MultiStoreProof) Has(fd protoreflect.FieldDescriptor) bool {
	switch fd.FullName() {
	case "band.base.oracle.v1.MultiStoreProof.oracle_iavl_state_hash":
		return len(x.OracleIavlStateHash) != 0
	case "band.base.oracle.v1.MultiStoreProof.mint_store_merkle_hash":
		return len(x.MintStoreMerkleHash) != 0
	case "band.base.oracle.v1.MultiStoreProof.params_to_restake_stores_merkle_hash":
		return len(x.ParamsToRestakeStoresMerkleHash) != 0
	case "band.base.oracle.v1.MultiStoreProof.rollingseed_to_transfer_stores_merkle_hash":
		return len(x.RollingseedToTransferStoresMerkleHash) != 0
	case "band.base.oracle.v1.MultiStoreProof.tss_to_upgrade_stores_merkle_hash":
		return len(x.TssToUpgradeStoresMerkleHash) != 0
	case "band.base.oracle.v1.MultiStoreProof.auth_to_icahost_stores_merkle_hash":
		return len(x.AuthToIcahostStoresMerkleHash) != 0
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.MultiStoreProof"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.MultiStoreProof does not contain field %s", fd.FullName()))
	}
}

// Clear clears the field such that a subsequent Has call reports false.
//
// Clearing an extension field clears both the extension type and value
// associated with the given field number.
//
// Clear is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_MultiStoreProof) Clear(fd protoreflect.FieldDescriptor) {
	switch fd.FullName() {
	case "band.base.oracle.v1.MultiStoreProof.oracle_iavl_state_hash":
		x.OracleIavlStateHash = nil
	case "band.base.oracle.v1.MultiStoreProof.mint_store_merkle_hash":
		x.MintStoreMerkleHash = nil
	case "band.base.oracle.v1.MultiStoreProof.params_to_restake_stores_merkle_hash":
		x.ParamsToRestakeStoresMerkleHash = nil
	case "band.base.oracle.v1.MultiStoreProof.rollingseed_to_transfer_stores_merkle_hash":
		x.RollingseedToTransferStoresMerkleHash = nil
	case "band.base.oracle.v1.MultiStoreProof.tss_to_upgrade_stores_merkle_hash":
		x.TssToUpgradeStoresMerkleHash = nil
	case "band.base.oracle.v1.MultiStoreProof.auth_to_icahost_stores_merkle_hash":
		x.AuthToIcahostStoresMerkleHash = nil
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.MultiStoreProof"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.MultiStoreProof does not contain field %s", fd.FullName()))
	}
}

// Get retrieves the value for a field.
//
// For unpopulated scalars, it returns the default value, where
// the default value of a bytes scalar is guaranteed to be a copy.
// For unpopulated composite types, it returns an empty, read-only view
// of the value; to obtain a mutable reference, use Mutable.
func (x *fastReflection_MultiStoreProof) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {
	switch descriptor.FullName() {
	case "band.base.oracle.v1.MultiStoreProof.oracle_iavl_state_hash":
		value := x.OracleIavlStateHash
		return protoreflect.ValueOfBytes(value)
	case "band.base.oracle.v1.MultiStoreProof.mint_store_merkle_hash":
		value := x.MintStoreMerkleHash
		return protoreflect.ValueOfBytes(value)
	case "band.base.oracle.v1.MultiStoreProof.params_to_restake_stores_merkle_hash":
		value := x.ParamsToRestakeStoresMerkleHash
		return protoreflect.ValueOfBytes(value)
	case "band.base.oracle.v1.MultiStoreProof.rollingseed_to_transfer_stores_merkle_hash":
		value := x.RollingseedToTransferStoresMerkleHash
		return protoreflect.ValueOfBytes(value)
	case "band.base.oracle.v1.MultiStoreProof.tss_to_upgrade_stores_merkle_hash":
		value := x.TssToUpgradeStoresMerkleHash
		return protoreflect.ValueOfBytes(value)
	case "band.base.oracle.v1.MultiStoreProof.auth_to_icahost_stores_merkle_hash":
		value := x.AuthToIcahostStoresMerkleHash
		return protoreflect.ValueOfBytes(value)
	default:
		if descriptor.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.MultiStoreProof"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.MultiStoreProof does not contain field %s", descriptor.FullName()))
	}
}

// Set stores the value for a field.
//
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType.
// When setting a composite type, it is unspecified whether the stored value
// aliases the source's memory in any way. If the composite value is an
// empty, read-only value, then it panics.
//
// Set is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_MultiStoreProof) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {
	switch fd.FullName() {
	case "band.base.oracle.v1.MultiStoreProof.oracle_iavl_state_hash":
		x.OracleIavlStateHash = value.Bytes()
	case "band.base.oracle.v1.MultiStoreProof.mint_store_merkle_hash":
		x.MintStoreMerkleHash = value.Bytes()
	case "band.base.oracle.v1.MultiStoreProof.params_to_restake_stores_merkle_hash":
		x.ParamsToRestakeStoresMerkleHash = value.Bytes()
	case "band.base.oracle.v1.MultiStoreProof.rollingseed_to_transfer_stores_merkle_hash":
		x.RollingseedToTransferStoresMerkleHash = value.Bytes()
	case "band.base.oracle.v1.MultiStoreProof.tss_to_upgrade_stores_merkle_hash":
		x.TssToUpgradeStoresMerkleHash = value.Bytes()
	case "band.base.oracle.v1.MultiStoreProof.auth_to_icahost_stores_merkle_hash":
		x.AuthToIcahostStoresMerkleHash = value.Bytes()
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.MultiStoreProof"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.MultiStoreProof does not contain field %s", fd.FullName()))
	}
}

// Mutable returns a mutable reference to a composite type.
//
// If the field is unpopulated, it may allocate a composite value.
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType
// if not already stored.
// It panics if the field does not contain a composite type.
//
// Mutable is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_MultiStoreProof) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {
	switch fd.FullName() {
	case "band.base.oracle.v1.MultiStoreProof.oracle_iavl_state_hash":
		panic(fmt.Errorf("field oracle_iavl_state_hash of message band.base.oracle.v1.MultiStoreProof is not mutable"))
	case "band.base.oracle.v1.MultiStoreProof.mint_store_merkle_hash":
		panic(fmt.Errorf("field mint_store_merkle_hash of message band.base.oracle.v1.MultiStoreProof is not mutable"))
	case "band.base.oracle.v1.MultiStoreProof.params_to_restake_stores_merkle_hash":
		panic(fmt.Errorf("field params_to_restake_stores_merkle_hash of message band.base.oracle.v1.MultiStoreProof is not mutable"))
	case "band.base.oracle.v1.MultiStoreProof.rollingseed_to_transfer_stores_merkle_hash":
		panic(fmt.Errorf("field rollingseed_to_transfer_stores_merkle_hash of message band.base.oracle.v1.MultiStoreProof is not mutable"))
	case "band.base.oracle.v1.MultiStoreProof.tss_to_upgrade_stores_merkle_hash":
		panic(fmt.Errorf("field tss_to_upgrade_stores_merkle_hash of message band.base.oracle.v1.MultiStoreProof is not mutable"))
	case "band.base.oracle.v1.MultiStoreProof.auth_to_icahost_stores_merkle_hash":
		panic(fmt.Errorf("field auth_to_icahost_stores_merkle_hash of message band.base.oracle.v1.MultiStoreProof is not mutable"))
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.MultiStoreProof"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.MultiStoreProof does not contain field %s", fd.FullName()))
	}
}

// NewField returns a new value that is assignable to the field
// for the given descriptor. For scalars, this returns the default value.
// For lists, maps, and messages, this returns a new, empty, mutable value.
func (x *fastReflection_MultiStoreProof) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {
	switch fd.FullName() {
	case "band.base.oracle.v1.MultiStoreProof.oracle_iavl_state_hash":
		return protoreflect.ValueOfBytes(nil)
	case "band.base.oracle.v1.MultiStoreProof.mint_store_merkle_hash":
		return protoreflect.ValueOfBytes(nil)
	case "band.base.oracle.v1.MultiStoreProof.params_to_restake_stores_merkle_hash":
		return protoreflect.ValueOfBytes(nil)
	case "band.base.oracle.v1.MultiStoreProof.rollingseed_to_transfer_stores_merkle_hash":
		return protoreflect.ValueOfBytes(nil)
	case "band.base.oracle.v1.MultiStoreProof.tss_to_upgrade_stores_merkle_hash":
		return protoreflect.ValueOfBytes(nil)
	case "band.base.oracle.v1.MultiStoreProof.auth_to_icahost_stores_merkle_hash":
		return protoreflect.ValueOfBytes(nil)
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.MultiStoreProof"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.MultiStoreProof does not contain field %s", fd.FullName()))
	}
}

// WhichOneof reports which field within the oneof is populated,
// returning nil if none are populated.
// It panics if the oneof descriptor does not belong to this message.
func (x *fastReflection_MultiStoreProof) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {
	switch d.FullName() {
	default:
		panic(fmt.Errorf("%s is not a oneof field in band.base.oracle.v1.MultiStoreProof", d.FullName()))
	}
	panic("unreachable")
}

// GetUnknown retrieves the entire list of unknown fields.
// The caller may only mutate the contents of the RawFields
// if the mutated bytes are stored back into the message with SetUnknown.
func (x *fastReflection_MultiStoreProof) GetUnknown() protoreflect.RawFields {
	return x.unknownFields
}

// SetUnknown stores an entire list of unknown fields.
// The raw fields must be syntactically valid according to the wire format.
// An implementation may panic if this is not the case.
// Once stored, the caller must not mutate the content of the RawFields.
// An empty RawFields may be passed to clear the fields.
//
// SetUnknown is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_MultiStoreProof) SetUnknown(fields protoreflect.RawFields) {
	x.unknownFields = fields
}

// IsValid reports whether the message is valid.
//
// An invalid message is an empty, read-only value.
//
// An invalid message often corresponds to a nil pointer of the concrete
// message type, but the details are implementation dependent.
// Validity is not part of the protobuf data model, and may not
// be preserved in marshaling or other operations.
func (x *fastReflection_MultiStoreProof) IsValid() bool {
	return x != nil
}

// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.
// This method may return nil.
//
// The returned methods type is identical to
// "google.golang.org/protobuf/runtime/protoiface".Methods.
// Consult the protoiface package documentation for details.
func (x *fastReflection_MultiStoreProof) ProtoMethods() *protoiface.Methods {
	size := func(input protoiface.SizeInput) protoiface.SizeOutput {
		x := input.Message.Interface().(*MultiStoreProof)
		if x == nil {
			return protoiface.SizeOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Size:              0,
			}
		}
		options := runtime.SizeInputToOptions(input)
		_ = options
		var n int
		var l int
		_ = l
		l = len(x.OracleIavlStateHash)
		if l > 0 {
			n += 1 + l + runtime.Sov(uint64(l))
		}
		l = len(x.MintStoreMerkleHash)
		if l > 0 {
			n += 1 + l + runtime.Sov(uint64(l))
		}
		l = len(x.ParamsToRestakeStoresMerkleHash)
		if l > 0 {
			n += 1 + l + runtime.Sov(uint64(l))
		}
		l = len(x.RollingseedToTransferStoresMerkleHash)
		if l > 0 {
			n += 1 + l + runtime.Sov(uint64(l))
		}
		l = len(x.TssToUpgradeStoresMerkleHash)
		if l > 0 {
			n += 1 + l + runtime.Sov(uint64(l))
		}
		l = len(x.AuthToIcahostStoresMerkleHash)
		if l > 0 {
			n += 1 + l + runtime.Sov(uint64(l))
		}
		if x.unknownFields != nil {
			n += len(x.unknownFields)
		}
		return protoiface.SizeOutput{
			NoUnkeyedLiterals: input.NoUnkeyedLiterals,
			Size:              n,
		}
	}

	marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {
		x := input.Message.Interface().(*MultiStoreProof)
		if x == nil {
			return protoiface.MarshalOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Buf:               input.Buf,
			}, nil
		}
		options := runtime.MarshalInputToOptions(input)
		_ = options
		size := options.Size(x)
		dAtA := make([]byte, size)
		i := len(dAtA)
		_ = i
		var l int
		_ = l
		if x.unknownFields != nil {
			i -= len(x.unknownFields)
			copy(dAtA[i:], x.unknownFields)
		}
		if len(x.AuthToIcahostStoresMerkleHash) > 0 {
			i -= len(x.AuthToIcahostStoresMerkleHash)
			copy(dAtA[i:], x.AuthToIcahostStoresMerkleHash)
			i = runtime.EncodeVarint(dAtA, i, uint64(len(x.AuthToIcahostStoresMerkleHash)))
			i--
			dAtA[i] = 0x32
		}
		if len(x.TssToUpgradeStoresMerkleHash) > 0 {
			i -= len(x.TssToUpgradeStoresMerkleHash)
			copy(dAtA[i:], x.TssToUpgradeStoresMerkleHash)
			i = runtime.EncodeVarint(dAtA, i, uint64(len(x.TssToUpgradeStoresMerkleHash)))
			i--
			dAtA[i] = 0x2a
		}
		if len(x.RollingseedToTransferStoresMerkleHash) > 0 {
			i -= len(x.RollingseedToTransferStoresMerkleHash)
			copy(dAtA[i:], x.RollingseedToTransferStoresMerkleHash)
			i = runtime.EncodeVarint(dAtA, i, uint64(len(x.RollingseedToTransferStoresMerkleHash)))
			i--
			dAtA[i] = 0x22
		}
		if len(x.ParamsToRestakeStoresMerkleHash) > 0 {
			i -= len(x.ParamsToRestakeStoresMerkleHash)
			copy(dAtA[i:], x.ParamsToRestakeStoresMerkleHash)
			i = runtime.EncodeVarint(dAtA, i, uint64(len(x.ParamsToRestakeStoresMerkleHash)))
			i--
			dAtA[i] = 0x1a
		}
		if len(x.MintStoreMerkleHash) > 0 {
			i -= len(x.MintStoreMerkleHash)
			copy(dAtA[i:], x.MintStoreMerkleHash)
			i = runtime.EncodeVarint(dAtA, i, uint64(len(x.MintStoreMerkleHash)))
			i--
			dAtA[i] = 0x12
		}
		if len(x.OracleIavlStateHash) > 0 {
			i -= len(x.OracleIavlStateHash)
			copy(dAtA[i:], x.OracleIavlStateHash)
			i = runtime.EncodeVarint(dAtA, i, uint64(len(x.OracleIavlStateHash)))
			i--
			dAtA[i] = 0xa
		}
		if input.Buf != nil {
			input.Buf = append(input.Buf, dAtA...)
		} else {
			input.Buf = dAtA
		}
		return protoiface.MarshalOutput{
			NoUnkeyedLiterals: input.NoUnkeyedLiterals,
			Buf:               input.Buf,
		}, nil
	}
	unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {
		x := input.Message.Interface().(*MultiStoreProof)
		if x == nil {
			return protoiface.UnmarshalOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Flags:             input.Flags,
			}, nil
		}
		options := runtime.UnmarshalInputToOptions(input)
		_ = options
		dAtA := input.Buf
		l := len(dAtA)
		iNdEx := 0
		for iNdEx < l {
			preIndex := iNdEx
			var wire uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
				}
				if iNdEx >= l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				wire |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			fieldNum := int32(wire >> 3)
			wireType := int(wire & 0x7)
			if wireType == 4 {
				return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MultiStoreProof: wiretype end group for non-group")
			}
			if fieldNum <= 0 {
				return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MultiStoreProof: illegal tag %d (wire type %d)", fieldNum, wire)
			}
			switch fieldNum {
			case 1:
				if wireType != 2 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field OracleIavlStateHash", wireType)
				}
				var byteLen int
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					byteLen |= int(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
				if byteLen < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				postIndex := iNdEx + byteLen
				if postIndex < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if postIndex > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				x.OracleIavlStateHash = append(x.OracleIavlStateHash[:0], dAtA[iNdEx:postIndex]...)
				if x.OracleIavlStateHash == nil {
					x.OracleIavlStateHash = []byte{}
				}
				iNdEx = postIndex
			case 2:
				if wireType != 2 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field MintStoreMerkleHash", wireType)
				}
				var byteLen int
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					byteLen |= int(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
				if byteLen < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				postIndex := iNdEx + byteLen
				if postIndex < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if postIndex > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				x.MintStoreMerkleHash = append(x.MintStoreMerkleHash[:0], dAtA[iNdEx:postIndex]...)
				if x.MintStoreMerkleHash == nil {
					x.MintStoreMerkleHash = []byte{}
				}
				iNdEx = postIndex
			case 3:
				if wireType != 2 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field ParamsToRestakeStoresMerkleHash", wireType)
				}
				var byteLen int
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					byteLen |= int(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
				if byteLen < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				postIndex := iNdEx + byteLen
				if postIndex < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if postIndex > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				x.ParamsToRestakeStoresMerkleHash = append(x.ParamsToRestakeStoresMerkleHash[:0], dAtA[iNdEx:postIndex]...)
				if x.ParamsToRestakeStoresMerkleHash == nil {
					x.ParamsToRestakeStoresMerkleHash = []byte{}
				}
				iNdEx = postIndex
			case 4:
				if wireType != 2 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field RollingseedToTransferStoresMerkleHash", wireType)
				}
				var byteLen int
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					byteLen |= int(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
				if byteLen < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				postIndex := iNdEx + byteLen
				if postIndex < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if postIndex > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				x.RollingseedToTransferStoresMerkleHash = append(x.RollingseedToTransferStoresMerkleHash[:0], dAtA[iNdEx:postIndex]...)
				if x.RollingseedToTransferStoresMerkleHash == nil {
					x.RollingseedToTransferStoresMerkleHash = []byte{}
				}
				iNdEx = postIndex
			case 5:
				if wireType != 2 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field TssToUpgradeStoresMerkleHash", wireType)
				}
				var byteLen int
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					byteLen |= int(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
				if byteLen < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				postIndex := iNdEx + byteLen
				if postIndex < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if postIndex > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				x.TssToUpgradeStoresMerkleHash = append(x.TssToUpgradeStoresMerkleHash[:0], dAtA[iNdEx:postIndex]...)
				if x.TssToUpgradeStoresMerkleHash == nil {
					x.TssToUpgradeStoresMerkleHash = []byte{}
				}
				iNdEx = postIndex
			case 6:
				if wireType != 2 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field AuthToIcahostStoresMerkleHash", wireType)
				}
				var byteLen int
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					byteLen |= int(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
				if byteLen < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				postIndex := iNdEx + byteLen
				if postIndex < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if postIndex > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				x.AuthToIcahostStoresMerkleHash = append(x.AuthToIcahostStoresMerkleHash[:0], dAtA[iNdEx:postIndex]...)
				if x.AuthToIcahostStoresMerkleHash == nil {
					x.AuthToIcahostStoresMerkleHash = []byte{}
				}
				iNdEx = postIndex
			default:
				iNdEx = preIndex
				skippy, err := runtime.Skip(dAtA[iNdEx:])
				if err != nil {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
				}
				if (skippy < 0) || (iNdEx+skippy) < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if (iNdEx + skippy) > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				if !options.DiscardUnknown {
					x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
				}
				iNdEx += skippy
			}
		}

		if iNdEx > l {
			return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
		}
		return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil
	}
	return &protoiface.Methods{
		NoUnkeyedLiterals: struct{}{},
		Flags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,
		Size:              size,
		Marshal:           marshal,
		Unmarshal:         unmarshal,
		Merge:             nil,
		CheckInitialized:  nil,
	}
}

var (
	md_BlockHeaderMerkleParts                                        protoreflect.MessageDescriptor
	fd_BlockHeaderMerkleParts_version_and_chain_id_hash              protoreflect.FieldDescriptor
	fd_BlockHeaderMerkleParts_height                                 protoreflect.FieldDescriptor
	fd_BlockHeaderMerkleParts_time_second                            protoreflect.FieldDescriptor
	fd_BlockHeaderMerkleParts_time_nano_second                       protoreflect.FieldDescriptor
	fd_BlockHeaderMerkleParts_last_block_id_and_other                protoreflect.FieldDescriptor
	fd_BlockHeaderMerkleParts_next_validator_hash_and_consensus_hash protoreflect.FieldDescriptor
	fd_BlockHeaderMerkleParts_last_results_hash                      protoreflect.FieldDescriptor
	fd_BlockHeaderMerkleParts_evidence_and_proposer_hash             protoreflect.FieldDescriptor
)

func init() {
	file_band_base_oracle_v1_proof_proto_init()
	md_BlockHeaderMerkleParts = File_band_base_oracle_v1_proof_proto.Messages().ByName("BlockHeaderMerkleParts")
	fd_BlockHeaderMerkleParts_version_and_chain_id_hash = md_BlockHeaderMerkleParts.Fields().ByName("version_and_chain_id_hash")
	fd_BlockHeaderMerkleParts_height = md_BlockHeaderMerkleParts.Fields().ByName("height")
	fd_BlockHeaderMerkleParts_time_second = md_BlockHeaderMerkleParts.Fields().ByName("time_second")
	fd_BlockHeaderMerkleParts_time_nano_second = md_BlockHeaderMerkleParts.Fields().ByName("time_nano_second")
	fd_BlockHeaderMerkleParts_last_block_id_and_other = md_BlockHeaderMerkleParts.Fields().ByName("last_block_id_and_other")
	fd_BlockHeaderMerkleParts_next_validator_hash_and_consensus_hash = md_BlockHeaderMerkleParts.Fields().ByName("next_validator_hash_and_consensus_hash")
	fd_BlockHeaderMerkleParts_last_results_hash = md_BlockHeaderMerkleParts.Fields().ByName("last_results_hash")
	fd_BlockHeaderMerkleParts_evidence_and_proposer_hash = md_BlockHeaderMerkleParts.Fields().ByName("evidence_and_proposer_hash")
}

var _ protoreflect.Message = (*fastReflection_BlockHeaderMerkleParts)(nil)

type fastReflection_BlockHeaderMerkleParts BlockHeaderMerkleParts

func (x *BlockHeaderMerkleParts) ProtoReflect() protoreflect.Message {
	return (*fastReflection_BlockHeaderMerkleParts)(x)
}

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

var _fastReflection_BlockHeaderMerkleParts_messageType fastReflection_BlockHeaderMerkleParts_messageType
var _ protoreflect.MessageType = fastReflection_BlockHeaderMerkleParts_messageType{}

type fastReflection_BlockHeaderMerkleParts_messageType struct{}

func (x fastReflection_BlockHeaderMerkleParts_messageType) Zero() protoreflect.Message {
	return (*fastReflection_BlockHeaderMerkleParts)(nil)
}
func (x fastReflection_BlockHeaderMerkleParts_messageType) New() protoreflect.Message {
	return new(fastReflection_BlockHeaderMerkleParts)
}
func (x fastReflection_BlockHeaderMerkleParts_messageType) Descriptor() protoreflect.MessageDescriptor {
	return md_BlockHeaderMerkleParts
}

// Descriptor returns message descriptor, which contains only the protobuf
// type information for the message.
func (x *fastReflection_BlockHeaderMerkleParts) Descriptor() protoreflect.MessageDescriptor {
	return md_BlockHeaderMerkleParts
}

// Type returns the message type, which encapsulates both Go and protobuf
// type information. If the Go type information is not needed,
// it is recommended that the message descriptor be used instead.
func (x *fastReflection_BlockHeaderMerkleParts) Type() protoreflect.MessageType {
	return _fastReflection_BlockHeaderMerkleParts_messageType
}

// New returns a newly allocated and mutable empty message.
func (x *fastReflection_BlockHeaderMerkleParts) New() protoreflect.Message {
	return new(fastReflection_BlockHeaderMerkleParts)
}

// Interface unwraps the message reflection interface and
// returns the underlying ProtoMessage interface.
func (x *fastReflection_BlockHeaderMerkleParts) Interface() protoreflect.ProtoMessage {
	return (*BlockHeaderMerkleParts)(x)
}

// Range iterates over every populated field in an undefined order,
// calling f for each field descriptor and value encountered.
// Range returns immediately if f returns false.
// While iterating, mutating operations may only be performed
// on the current field descriptor.
func (x *fastReflection_BlockHeaderMerkleParts) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {
	if len(x.VersionAndChainIdHash) != 0 {
		value := protoreflect.ValueOfBytes(x.VersionAndChainIdHash)
		if !f(fd_BlockHeaderMerkleParts_version_and_chain_id_hash, value) {
			return
		}
	}
	if x.Height != uint64(0) {
		value := protoreflect.ValueOfUint64(x.Height)
		if !f(fd_BlockHeaderMerkleParts_height, value) {
			return
		}
	}
	if x.TimeSecond != uint64(0) {
		value := protoreflect.ValueOfUint64(x.TimeSecond)
		if !f(fd_BlockHeaderMerkleParts_time_second, value) {
			return
		}
	}
	if x.TimeNanoSecond != uint32(0) {
		value := protoreflect.ValueOfUint32(x.TimeNanoSecond)
		if !f(fd_BlockHeaderMerkleParts_time_nano_second, value) {
			return
		}
	}
	if len(x.LastBlockIdAndOther) != 0 {
		value := protoreflect.ValueOfBytes(x.LastBlockIdAndOther)
		if !f(fd_BlockHeaderMerkleParts_last_block_id_and_other, value) {
			return
		}
	}
	if len(x.NextValidatorHashAndConsensusHash) != 0 {
		value := protoreflect.ValueOfBytes(x.NextValidatorHashAndConsensusHash)
		if !f(fd_BlockHeaderMerkleParts_next_validator_hash_and_consensus_hash, value) {
			return
		}
	}
	if len(x.LastResultsHash) != 0 {
		value := protoreflect.ValueOfBytes(x.LastResultsHash)
		if !f(fd_BlockHeaderMerkleParts_last_results_hash, value) {
			return
		}
	}
	if len(x.EvidenceAndProposerHash) != 0 {
		value := protoreflect.ValueOfBytes(x.EvidenceAndProposerHash)
		if !f(fd_BlockHeaderMerkleParts_evidence_and_proposer_hash, value) {
			return
		}
	}
}

// Has reports whether a field is populated.
//
// Some fields have the property of nullability where it is possible to
// distinguish between the default value of a field and whether the field
// was explicitly populated with the default value. Singular message fields,
// member fields of a oneof, and proto2 scalar fields are nullable. Such
// fields are populated only if explicitly set.
//
// In other cases (aside from the nullable cases above),
// a proto3 scalar field is populated if it contains a non-zero value, and
// a repeated field is populated if it is non-empty.
func (x *fastReflection_BlockHeaderMerkleParts) Has(fd protoreflect.FieldDescriptor) bool {
	switch fd.FullName() {
	case "band.base.oracle.v1.BlockHeaderMerkleParts.version_and_chain_id_hash":
		return len(x.VersionAndChainIdHash) != 0
	case "band.base.oracle.v1.BlockHeaderMerkleParts.height":
		return x.Height != uint64(0)
	case "band.base.oracle.v1.BlockHeaderMerkleParts.time_second":
		return x.TimeSecond != uint64(0)
	case "band.base.oracle.v1.BlockHeaderMerkleParts.time_nano_second":
		return x.TimeNanoSecond != uint32(0)
	case "band.base.oracle.v1.BlockHeaderMerkleParts.last_block_id_and_other":
		return len(x.LastBlockIdAndOther) != 0
	case "band.base.oracle.v1.BlockHeaderMerkleParts.next_validator_hash_and_consensus_hash":
		return len(x.NextValidatorHashAndConsensusHash) != 0
	case "band.base.oracle.v1.BlockHeaderMerkleParts.last_results_hash":
		return len(x.LastResultsHash) != 0
	case "band.base.oracle.v1.BlockHeaderMerkleParts.evidence_and_proposer_hash":
		return len(x.EvidenceAndProposerHash) != 0
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.BlockHeaderMerkleParts"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.BlockHeaderMerkleParts does not contain field %s", fd.FullName()))
	}
}

// Clear clears the field such that a subsequent Has call reports false.
//
// Clearing an extension field clears both the extension type and value
// associated with the given field number.
//
// Clear is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_BlockHeaderMerkleParts) Clear(fd protoreflect.FieldDescriptor) {
	switch fd.FullName() {
	case "band.base.oracle.v1.BlockHeaderMerkleParts.version_and_chain_id_hash":
		x.VersionAndChainIdHash = nil
	case "band.base.oracle.v1.BlockHeaderMerkleParts.height":
		x.Height = uint64(0)
	case "band.base.oracle.v1.BlockHeaderMerkleParts.time_second":
		x.TimeSecond = uint64(0)
	case "band.base.oracle.v1.BlockHeaderMerkleParts.time_nano_second":
		x.TimeNanoSecond = uint32(0)
	case "band.base.oracle.v1.BlockHeaderMerkleParts.last_block_id_and_other":
		x.LastBlockIdAndOther = nil
	case "band.base.oracle.v1.BlockHeaderMerkleParts.next_validator_hash_and_consensus_hash":
		x.NextValidatorHashAndConsensusHash = nil
	case "band.base.oracle.v1.BlockHeaderMerkleParts.last_results_hash":
		x.LastResultsHash = nil
	case "band.base.oracle.v1.BlockHeaderMerkleParts.evidence_and_proposer_hash":
		x.EvidenceAndProposerHash = nil
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.BlockHeaderMerkleParts"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.BlockHeaderMerkleParts does not contain field %s", fd.FullName()))
	}
}

// Get retrieves the value for a field.
//
// For unpopulated scalars, it returns the default value, where
// the default value of a bytes scalar is guaranteed to be a copy.
// For unpopulated composite types, it returns an empty, read-only view
// of the value; to obtain a mutable reference, use Mutable.
func (x *fastReflection_BlockHeaderMerkleParts) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {
	switch descriptor.FullName() {
	case "band.base.oracle.v1.BlockHeaderMerkleParts.version_and_chain_id_hash":
		value := x.VersionAndChainIdHash
		return protoreflect.ValueOfBytes(value)
	case "band.base.oracle.v1.BlockHeaderMerkleParts.height":
		value := x.Height
		return protoreflect.ValueOfUint64(value)
	case "band.base.oracle.v1.BlockHeaderMerkleParts.time_second":
		value := x.TimeSecond
		return protoreflect.ValueOfUint64(value)
	case "band.base.oracle.v1.BlockHeaderMerkleParts.time_nano_second":
		value := x.TimeNanoSecond
		return protoreflect.ValueOfUint32(value)
	case "band.base.oracle.v1.BlockHeaderMerkleParts.last_block_id_and_other":
		value := x.LastBlockIdAndOther
		return protoreflect.ValueOfBytes(value)
	case "band.base.oracle.v1.BlockHeaderMerkleParts.next_validator_hash_and_consensus_hash":
		value := x.NextValidatorHashAndConsensusHash
		return protoreflect.ValueOfBytes(value)
	case "band.base.oracle.v1.BlockHeaderMerkleParts.last_results_hash":
		value := x.LastResultsHash
		return protoreflect.ValueOfBytes(value)
	case "band.base.oracle.v1.BlockHeaderMerkleParts.evidence_and_proposer_hash":
		value := x.EvidenceAndProposerHash
		return protoreflect.ValueOfBytes(value)
	default:
		if descriptor.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.BlockHeaderMerkleParts"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.BlockHeaderMerkleParts does not contain field %s", descriptor.FullName()))
	}
}

// Set stores the value for a field.
//
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType.
// When setting a composite type, it is unspecified whether the stored value
// aliases the source's memory in any way. If the composite value is an
// empty, read-only value, then it panics.
//
// Set is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_BlockHeaderMerkleParts) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {
	switch fd.FullName() {
	case "band.base.oracle.v1.BlockHeaderMerkleParts.version_and_chain_id_hash":
		x.VersionAndChainIdHash = value.Bytes()
	case "band.base.oracle.v1.BlockHeaderMerkleParts.height":
		x.Height = value.Uint()
	case "band.base.oracle.v1.BlockHeaderMerkleParts.time_second":
		x.TimeSecond = value.Uint()
	case "band.base.oracle.v1.BlockHeaderMerkleParts.time_nano_second":
		x.TimeNanoSecond = uint32(value.Uint())
	case "band.base.oracle.v1.BlockHeaderMerkleParts.last_block_id_and_other":
		x.LastBlockIdAndOther = value.Bytes()
	case "band.base.oracle.v1.BlockHeaderMerkleParts.next_validator_hash_and_consensus_hash":
		x.NextValidatorHashAndConsensusHash = value.Bytes()
	case "band.base.oracle.v1.BlockHeaderMerkleParts.last_results_hash":
		x.LastResultsHash = value.Bytes()
	case "band.base.oracle.v1.BlockHeaderMerkleParts.evidence_and_proposer_hash":
		x.EvidenceAndProposerHash = value.Bytes()
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.BlockHeaderMerkleParts"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.BlockHeaderMerkleParts does not contain field %s", fd.FullName()))
	}
}

// Mutable returns a mutable reference to a composite type.
//
// If the field is unpopulated, it may allocate a composite value.
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType
// if not already stored.
// It panics if the field does not contain a composite type.
//
// Mutable is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_BlockHeaderMerkleParts) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {
	switch fd.FullName() {
	case "band.base.oracle.v1.BlockHeaderMerkleParts.version_and_chain_id_hash":
		panic(fmt.Errorf("field version_and_chain_id_hash of message band.base.oracle.v1.BlockHeaderMerkleParts is not mutable"))
	case "band.base.oracle.v1.BlockHeaderMerkleParts.height":
		panic(fmt.Errorf("field height of message band.base.oracle.v1.BlockHeaderMerkleParts is not mutable"))
	case "band.base.oracle.v1.BlockHeaderMerkleParts.time_second":
		panic(fmt.Errorf("field time_second of message band.base.oracle.v1.BlockHeaderMerkleParts is not mutable"))
	case "band.base.oracle.v1.BlockHeaderMerkleParts.time_nano_second":
		panic(fmt.Errorf("field time_nano_second of message band.base.oracle.v1.BlockHeaderMerkleParts is not mutable"))
	case "band.base.oracle.v1.BlockHeaderMerkleParts.last_block_id_and_other":
		panic(fmt.Errorf("field last_block_id_and_other of message band.base.oracle.v1.BlockHeaderMerkleParts is not mutable"))
	case "band.base.oracle.v1.BlockHeaderMerkleParts.next_validator_hash_and_consensus_hash":
		panic(fmt.Errorf("field next_validator_hash_and_consensus_hash of message band.base.oracle.v1.BlockHeaderMerkleParts is not mutable"))
	case "band.base.oracle.v1.BlockHeaderMerkleParts.last_results_hash":
		panic(fmt.Errorf("field last_results_hash of message band.base.oracle.v1.BlockHeaderMerkleParts is not mutable"))
	case "band.base.oracle.v1.BlockHeaderMerkleParts.evidence_and_proposer_hash":
		panic(fmt.Errorf("field evidence_and_proposer_hash of message band.base.oracle.v1.BlockHeaderMerkleParts is not mutable"))
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.BlockHeaderMerkleParts"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.BlockHeaderMerkleParts does not contain field %s", fd.FullName()))
	}
}

// NewField returns a new value that is assignable to the field
// for the given descriptor. For scalars, this returns the default value.
// For lists, maps, and messages, this returns a new, empty, mutable value.
func (x *fastReflection_BlockHeaderMerkleParts) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {
	switch fd.FullName() {
	case "band.base.oracle.v1.BlockHeaderMerkleParts.version_and_chain_id_hash":
		return protoreflect.ValueOfBytes(nil)
	case "band.base.oracle.v1.BlockHeaderMerkleParts.height":
		return protoreflect.ValueOfUint64(uint64(0))
	case "band.base.oracle.v1.BlockHeaderMerkleParts.time_second":
		return protoreflect.ValueOfUint64(uint64(0))
	case "band.base.oracle.v1.BlockHeaderMerkleParts.time_nano_second":
		return protoreflect.ValueOfUint32(uint32(0))
	case "band.base.oracle.v1.BlockHeaderMerkleParts.last_block_id_and_other":
		return protoreflect.ValueOfBytes(nil)
	case "band.base.oracle.v1.BlockHeaderMerkleParts.next_validator_hash_and_consensus_hash":
		return protoreflect.ValueOfBytes(nil)
	case "band.base.oracle.v1.BlockHeaderMerkleParts.last_results_hash":
		return protoreflect.ValueOfBytes(nil)
	case "band.base.oracle.v1.BlockHeaderMerkleParts.evidence_and_proposer_hash":
		return protoreflect.ValueOfBytes(nil)
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.BlockHeaderMerkleParts"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.BlockHeaderMerkleParts does not contain field %s", fd.FullName()))
	}
}

// WhichOneof reports which field within the oneof is populated,
// returning nil if none are populated.
// It panics if the oneof descriptor does not belong to this message.
func (x *fastReflection_BlockHeaderMerkleParts) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {
	switch d.FullName() {
	default:
		panic(fmt.Errorf("%s is not a oneof field in band.base.oracle.v1.BlockHeaderMerkleParts", d.FullName()))
	}
	panic("unreachable")
}

// GetUnknown retrieves the entire list of unknown fields.
// The caller may only mutate the contents of the RawFields
// if the mutated bytes are stored back into the message with SetUnknown.
func (x *fastReflection_BlockHeaderMerkleParts) GetUnknown() protoreflect.RawFields {
	return x.unknownFields
}

// SetUnknown stores an entire list of unknown fields.
// The raw fields must be syntactically valid according to the wire format.
// An implementation may panic if this is not the case.
// Once stored, the caller must not mutate the content of the RawFields.
// An empty RawFields may be passed to clear the fields.
//
// SetUnknown is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_BlockHeaderMerkleParts) SetUnknown(fields protoreflect.RawFields) {
	x.unknownFields = fields
}

// IsValid reports whether the message is valid.
//
// An invalid message is an empty, read-only value.
//
// An invalid message often corresponds to a nil pointer of the concrete
// message type, but the details are implementation dependent.
// Validity is not part of the protobuf data model, and may not
// be preserved in marshaling or other operations.
func (x *fastReflection_BlockHeaderMerkleParts) IsValid() bool {
	return x != nil
}

// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.
// This method may return nil.
//
// The returned methods type is identical to
// "google.golang.org/protobuf/runtime/protoiface".Methods.
// Consult the protoiface package documentation for details.
func (x *fastReflection_BlockHeaderMerkleParts) ProtoMethods() *protoiface.Methods {
	size := func(input protoiface.SizeInput) protoiface.SizeOutput {
		x := input.Message.Interface().(*BlockHeaderMerkleParts)
		if x == nil {
			return protoiface.SizeOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Size:              0,
			}
		}
		options := runtime.SizeInputToOptions(input)
		_ = options
		var n int
		var l int
		_ = l
		l = len(x.VersionAndChainIdHash)
		if l > 0 {
			n += 1 + l + runtime.Sov(uint64(l))
		}
		if x.Height != 0 {
			n += 1 + runtime.Sov(uint64(x.Height))
		}
		if x.TimeSecond != 0 {
			n += 1 + runtime.Sov(uint64(x.TimeSecond))
		}
		if x.TimeNanoSecond != 0 {
			n += 1 + runtime.Sov(uint64(x.TimeNanoSecond))
		}
		l = len(x.LastBlockIdAndOther)
		if l > 0 {
			n += 1 + l + runtime.Sov(uint64(l))
		}
		l = len(x.NextValidatorHashAndConsensusHash)
		if l > 0 {
			n += 1 + l + runtime.Sov(uint64(l))
		}
		l = len(x.LastResultsHash)
		if l > 0 {
			n += 1 + l + runtime.Sov(uint64(l))
		}
		l = len(x.EvidenceAndProposerHash)
		if l > 0 {
			n += 1 + l + runtime.Sov(uint64(l))
		}
		if x.unknownFields != nil {
			n += len(x.unknownFields)
		}
		return protoiface.SizeOutput{
			NoUnkeyedLiterals: input.NoUnkeyedLiterals,
			Size:              n,
		}
	}

	marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {
		x := input.Message.Interface().(*BlockHeaderMerkleParts)
		if x == nil {
			return protoiface.MarshalOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Buf:               input.Buf,
			}, nil
		}
		options := runtime.MarshalInputToOptions(input)
		_ = options
		size := options.Size(x)
		dAtA := make([]byte, size)
		i := len(dAtA)
		_ = i
		var l int
		_ = l
		if x.unknownFields != nil {
			i -= len(x.unknownFields)
			copy(dAtA[i:], x.unknownFields)
		}
		if len(x.EvidenceAndProposerHash) > 0 {
			i -= len(x.EvidenceAndProposerHash)
			copy(dAtA[i:], x.EvidenceAndProposerHash)
			i = runtime.EncodeVarint(dAtA, i, uint64(len(x.EvidenceAndProposerHash)))
			i--
			dAtA[i] = 0x42
		}
		if len(x.LastResultsHash) > 0 {
			i -= len(x.LastResultsHash)
			copy(dAtA[i:], x.LastResultsHash)
			i = runtime.EncodeVarint(dAtA, i, uint64(len(x.LastResultsHash)))
			i--
			dAtA[i] = 0x3a
		}
		if len(x.NextValidatorHashAndConsensusHash) > 0 {
			i -= len(x.NextValidatorHashAndConsensusHash)
			copy(dAtA[i:], x.NextValidatorHashAndConsensusHash)
			i = runtime.EncodeVarint(dAtA, i, uint64(len(x.NextValidatorHashAndConsensusHash)))
			i--
			dAtA[i] = 0x32
		}
		if len(x.LastBlockIdAndOther) > 0 {
			i -= len(x.LastBlockIdAndOther)
			copy(dAtA[i:], x.LastBlockIdAndOther)
			i = runtime.EncodeVarint(dAtA, i, uint64(len(x.LastBlockIdAndOther)))
			i--
			dAtA[i] = 0x2a
		}
		if x.TimeNanoSecond != 0 {
			i = runtime.EncodeVarint(dAtA, i, uint64(x.TimeNanoSecond))
			i--
			dAtA[i] = 0x20
		}
		if x.TimeSecond != 0 {
			i = runtime.EncodeVarint(dAtA, i, uint64(x.TimeSecond))
			i--
			dAtA[i] = 0x18
		}
		if x.Height != 0 {
			i = runtime.EncodeVarint(dAtA, i, uint64(x.Height))
			i--
			dAtA[i] = 0x10
		}
		if len(x.VersionAndChainIdHash) > 0 {
			i -= len(x.VersionAndChainIdHash)
			copy(dAtA[i:], x.VersionAndChainIdHash)
			i = runtime.EncodeVarint(dAtA, i, uint64(len(x.VersionAndChainIdHash)))
			i--
			dAtA[i] = 0xa
		}
		if input.Buf != nil {
			input.Buf = append(input.Buf, dAtA...)
		} else {
			input.Buf = dAtA
		}
		return protoiface.MarshalOutput{
			NoUnkeyedLiterals: input.NoUnkeyedLiterals,
			Buf:               input.Buf,
		}, nil
	}
	unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {
		x := input.Message.Interface().(*BlockHeaderMerkleParts)
		if x == nil {
			return protoiface.UnmarshalOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Flags:             input.Flags,
			}, nil
		}
		options := runtime.UnmarshalInputToOptions(input)
		_ = options
		dAtA := input.Buf
		l := len(dAtA)
		iNdEx := 0
		for iNdEx < l {
			preIndex := iNdEx
			var wire uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
				}
				if iNdEx >= l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				wire |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			fieldNum := int32(wire >> 3)
			wireType := int(wire & 0x7)
			if wireType == 4 {
				return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: BlockHeaderMerkleParts: wiretype end group for non-group")
			}
			if fieldNum <= 0 {
				return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: BlockHeaderMerkleParts: illegal tag %d (wire type %d)", fieldNum, wire)
			}
			switch fieldNum {
			case 1:
				if wireType != 2 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field VersionAndChainIdHash", wireType)
				}
				var byteLen int
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					byteLen |= int(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
				if byteLen < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				postIndex := iNdEx + byteLen
				if postIndex < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if postIndex > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				x.VersionAndChainIdHash = append(x.VersionAndChainIdHash[:0], dAtA[iNdEx:postIndex]...)
				if x.VersionAndChainIdHash == nil {
					x.VersionAndChainIdHash = []byte{}
				}
				iNdEx = postIndex
			case 2:
				if wireType != 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Height", wireType)
				}
				x.Height = 0
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					x.Height |= uint64(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
			case 3:
				if wireType != 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field TimeSecond", wireType)
				}
				x.TimeSecond = 0
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					x.TimeSecond |= uint64(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
			case 4:
				if wireType != 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field TimeNanoSecond", wireType)
				}
				x.TimeNanoSecond = 0
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					x.TimeNanoSecond |= uint32(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
			case 5:
				if wireType != 2 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field LastBlockIdAndOther", wireType)
				}
				var byteLen int
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					byteLen |= int(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
				if byteLen < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				postIndex := iNdEx + byteLen
				if postIndex < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if postIndex > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				x.LastBlockIdAndOther = append(x.LastBlockIdAndOther[:0], dAtA[iNdEx:postIndex]...)
				if x.LastBlockIdAndOther == nil {
					x.LastBlockIdAndOther = []byte{}
				}
				iNdEx = postIndex
			case 6:
				if wireType != 2 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field NextValidatorHashAndConsensusHash", wireType)
				}
				var byteLen int
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					byteLen |= int(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
				if byteLen < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				postIndex := iNdEx + byteLen
				if postIndex < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if postIndex > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				x.NextValidatorHashAndConsensusHash = append(x.NextValidatorHashAndConsensusHash[:0], dAtA[iNdEx:postIndex]...)
				if x.NextValidatorHashAndConsensusHash == nil {
					x.NextValidatorHashAndConsensusHash = []byte{}
				}
				iNdEx = postIndex
			case 7:
				if wireType != 2 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field LastResultsHash", wireType)
				}
				var byteLen int
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					byteLen |= int(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
				if byteLen < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				postIndex := iNdEx + byteLen
				if postIndex < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if postIndex > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				x.LastResultsHash = append(x.LastResultsHash[:0], dAtA[iNdEx:postIndex]...)
				if x.LastResultsHash == nil {
					x.LastResultsHash = []byte{}
				}
				iNdEx = postIndex
			case 8:
				if wireType != 2 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field EvidenceAndProposerHash", wireType)
				}
				var byteLen int
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					byteLen |= int(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
				if byteLen < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				postIndex := iNdEx + byteLen
				if postIndex < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if postIndex > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				x.EvidenceAndProposerHash = append(x.EvidenceAndProposerHash[:0], dAtA[iNdEx:postIndex]...)
				if x.EvidenceAndProposerHash == nil {
					x.EvidenceAndProposerHash = []byte{}
				}
				iNdEx = postIndex
			default:
				iNdEx = preIndex
				skippy, err := runtime.Skip(dAtA[iNdEx:])
				if err != nil {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
				}
				if (skippy < 0) || (iNdEx+skippy) < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if (iNdEx + skippy) > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				if !options.DiscardUnknown {
					x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
				}
				iNdEx += skippy
			}
		}

		if iNdEx > l {
			return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
		}
		return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil
	}
	return &protoiface.Methods{
		NoUnkeyedLiterals: struct{}{},
		Flags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,
		Size:              size,
		Marshal:           marshal,
		Unmarshal:         unmarshal,
		Merge:             nil,
		CheckInitialized:  nil,
	}
}

var (
	md_CommonEncodedVotePart                    protoreflect.MessageDescriptor
	fd_CommonEncodedVotePart_signed_data_prefix protoreflect.FieldDescriptor
	fd_CommonEncodedVotePart_signed_data_suffix protoreflect.FieldDescriptor
)

func init() {
	file_band_base_oracle_v1_proof_proto_init()
	md_CommonEncodedVotePart = File_band_base_oracle_v1_proof_proto.Messages().ByName("CommonEncodedVotePart")
	fd_CommonEncodedVotePart_signed_data_prefix = md_CommonEncodedVotePart.Fields().ByName("signed_data_prefix")
	fd_CommonEncodedVotePart_signed_data_suffix = md_CommonEncodedVotePart.Fields().ByName("signed_data_suffix")
}

var _ protoreflect.Message = (*fastReflection_CommonEncodedVotePart)(nil)

type fastReflection_CommonEncodedVotePart CommonEncodedVotePart

func (x *CommonEncodedVotePart) ProtoReflect() protoreflect.Message {
	return (*fastReflection_CommonEncodedVotePart)(x)
}

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

var _fastReflection_CommonEncodedVotePart_messageType fastReflection_CommonEncodedVotePart_messageType
var _ protoreflect.MessageType = fastReflection_CommonEncodedVotePart_messageType{}

type fastReflection_CommonEncodedVotePart_messageType struct{}

func (x fastReflection_CommonEncodedVotePart_messageType) Zero() protoreflect.Message {
	return (*fastReflection_CommonEncodedVotePart)(nil)
}
func (x fastReflection_CommonEncodedVotePart_messageType) New() protoreflect.Message {
	return new(fastReflection_CommonEncodedVotePart)
}
func (x fastReflection_CommonEncodedVotePart_messageType) Descriptor() protoreflect.MessageDescriptor {
	return md_CommonEncodedVotePart
}

// Descriptor returns message descriptor, which contains only the protobuf
// type information for the message.
func (x *fastReflection_CommonEncodedVotePart) Descriptor() protoreflect.MessageDescriptor {
	return md_CommonEncodedVotePart
}

// Type returns the message type, which encapsulates both Go and protobuf
// type information. If the Go type information is not needed,
// it is recommended that the message descriptor be used instead.
func (x *fastReflection_CommonEncodedVotePart) Type() protoreflect.MessageType {
	return _fastReflection_CommonEncodedVotePart_messageType
}

// New returns a newly allocated and mutable empty message.
func (x *fastReflection_CommonEncodedVotePart) New() protoreflect.Message {
	return new(fastReflection_CommonEncodedVotePart)
}

// Interface unwraps the message reflection interface and
// returns the underlying ProtoMessage interface.
func (x *fastReflection_CommonEncodedVotePart) Interface() protoreflect.ProtoMessage {
	return (*CommonEncodedVotePart)(x)
}

// Range iterates over every populated field in an undefined order,
// calling f for each field descriptor and value encountered.
// Range returns immediately if f returns false.
// While iterating, mutating operations may only be performed
// on the current field descriptor.
func (x *fastReflection_CommonEncodedVotePart) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {
	if len(x.SignedDataPrefix) != 0 {
		value := protoreflect.ValueOfBytes(x.SignedDataPrefix)
		if !f(fd_CommonEncodedVotePart_signed_data_prefix, value) {
			return
		}
	}
	if len(x.SignedDataSuffix) != 0 {
		value := protoreflect.ValueOfBytes(x.SignedDataSuffix)
		if !f(fd_CommonEncodedVotePart_signed_data_suffix, value) {
			return
		}
	}
}

// Has reports whether a field is populated.
//
// Some fields have the property of nullability where it is possible to
// distinguish between the default value of a field and whether the field
// was explicitly populated with the default value. Singular message fields,
// member fields of a oneof, and proto2 scalar fields are nullable. Such
// fields are populated only if explicitly set.
//
// In other cases (aside from the nullable cases above),
// a proto3 scalar field is populated if it contains a non-zero value, and
// a repeated field is populated if it is non-empty.
func (x *fastReflection_CommonEncodedVotePart) Has(fd protoreflect.FieldDescriptor) bool {
	switch fd.FullName() {
	case "band.base.oracle.v1.CommonEncodedVotePart.signed_data_prefix":
		return len(x.SignedDataPrefix) != 0
	case "band.base.oracle.v1.CommonEncodedVotePart.signed_data_suffix":
		return len(x.SignedDataSuffix) != 0
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.CommonEncodedVotePart"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.CommonEncodedVotePart does not contain field %s", fd.FullName()))
	}
}

// Clear clears the field such that a subsequent Has call reports false.
//
// Clearing an extension field clears both the extension type and value
// associated with the given field number.
//
// Clear is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_CommonEncodedVotePart) Clear(fd protoreflect.FieldDescriptor) {
	switch fd.FullName() {
	case "band.base.oracle.v1.CommonEncodedVotePart.signed_data_prefix":
		x.SignedDataPrefix = nil
	case "band.base.oracle.v1.CommonEncodedVotePart.signed_data_suffix":
		x.SignedDataSuffix = nil
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.CommonEncodedVotePart"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.CommonEncodedVotePart does not contain field %s", fd.FullName()))
	}
}

// Get retrieves the value for a field.
//
// For unpopulated scalars, it returns the default value, where
// the default value of a bytes scalar is guaranteed to be a copy.
// For unpopulated composite types, it returns an empty, read-only view
// of the value; to obtain a mutable reference, use Mutable.
func (x *fastReflection_CommonEncodedVotePart) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {
	switch descriptor.FullName() {
	case "band.base.oracle.v1.CommonEncodedVotePart.signed_data_prefix":
		value := x.SignedDataPrefix
		return protoreflect.ValueOfBytes(value)
	case "band.base.oracle.v1.CommonEncodedVotePart.signed_data_suffix":
		value := x.SignedDataSuffix
		return protoreflect.ValueOfBytes(value)
	default:
		if descriptor.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.CommonEncodedVotePart"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.CommonEncodedVotePart does not contain field %s", descriptor.FullName()))
	}
}

// Set stores the value for a field.
//
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType.
// When setting a composite type, it is unspecified whether the stored value
// aliases the source's memory in any way. If the composite value is an
// empty, read-only value, then it panics.
//
// Set is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_CommonEncodedVotePart) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {
	switch fd.FullName() {
	case "band.base.oracle.v1.CommonEncodedVotePart.signed_data_prefix":
		x.SignedDataPrefix = value.Bytes()
	case "band.base.oracle.v1.CommonEncodedVotePart.signed_data_suffix":
		x.SignedDataSuffix = value.Bytes()
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.CommonEncodedVotePart"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.CommonEncodedVotePart does not contain field %s", fd.FullName()))
	}
}

// Mutable returns a mutable reference to a composite type.
//
// If the field is unpopulated, it may allocate a composite value.
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType
// if not already stored.
// It panics if the field does not contain a composite type.
//
// Mutable is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_CommonEncodedVotePart) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {
	switch fd.FullName() {
	case "band.base.oracle.v1.CommonEncodedVotePart.signed_data_prefix":
		panic(fmt.Errorf("field signed_data_prefix of message band.base.oracle.v1.CommonEncodedVotePart is not mutable"))
	case "band.base.oracle.v1.CommonEncodedVotePart.signed_data_suffix":
		panic(fmt.Errorf("field signed_data_suffix of message band.base.oracle.v1.CommonEncodedVotePart is not mutable"))
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.CommonEncodedVotePart"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.CommonEncodedVotePart does not contain field %s", fd.FullName()))
	}
}

// NewField returns a new value that is assignable to the field
// for the given descriptor. For scalars, this returns the default value.
// For lists, maps, and messages, this returns a new, empty, mutable value.
func (x *fastReflection_CommonEncodedVotePart) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {
	switch fd.FullName() {
	case "band.base.oracle.v1.CommonEncodedVotePart.signed_data_prefix":
		return protoreflect.ValueOfBytes(nil)
	case "band.base.oracle.v1.CommonEncodedVotePart.signed_data_suffix":
		return protoreflect.ValueOfBytes(nil)
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.CommonEncodedVotePart"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.CommonEncodedVotePart does not contain field %s", fd.FullName()))
	}
}

// WhichOneof reports which field within the oneof is populated,
// returning nil if none are populated.
// It panics if the oneof descriptor does not belong to this message.
func (x *fastReflection_CommonEncodedVotePart) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {
	switch d.FullName() {
	default:
		panic(fmt.Errorf("%s is not a oneof field in band.base.oracle.v1.CommonEncodedVotePart", d.FullName()))
	}
	panic("unreachable")
}

// GetUnknown retrieves the entire list of unknown fields.
// The caller may only mutate the contents of the RawFields
// if the mutated bytes are stored back into the message with SetUnknown.
func (x *fastReflection_CommonEncodedVotePart) GetUnknown() protoreflect.RawFields {
	return x.unknownFields
}

// SetUnknown stores an entire list of unknown fields.
// The raw fields must be syntactically valid according to the wire format.
// An implementation may panic if this is not the case.
// Once stored, the caller must not mutate the content of the RawFields.
// An empty RawFields may be passed to clear the fields.
//
// SetUnknown is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_CommonEncodedVotePart) SetUnknown(fields protoreflect.RawFields) {
	x.unknownFields = fields
}

// IsValid reports whether the message is valid.
//
// An invalid message is an empty, read-only value.
//
// An invalid message often corresponds to a nil pointer of the concrete
// message type, but the details are implementation dependent.
// Validity is not part of the protobuf data model, and may not
// be preserved in marshaling or other operations.
func (x *fastReflection_CommonEncodedVotePart) IsValid() bool {
	return x != nil
}

// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.
// This method may return nil.
//
// The returned methods type is identical to
// "google.golang.org/protobuf/runtime/protoiface".Methods.
// Consult the protoiface package documentation for details.
func (x *fastReflection_CommonEncodedVotePart) ProtoMethods() *protoiface.Methods {
	size := func(input protoiface.SizeInput) protoiface.SizeOutput {
		x := input.Message.Interface().(*CommonEncodedVotePart)
		if x == nil {
			return protoiface.SizeOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Size:              0,
			}
		}
		options := runtime.SizeInputToOptions(input)
		_ = options
		var n int
		var l int
		_ = l
		l = len(x.SignedDataPrefix)
		if l > 0 {
			n += 1 + l + runtime.Sov(uint64(l))
		}
		l = len(x.SignedDataSuffix)
		if l > 0 {
			n += 1 + l + runtime.Sov(uint64(l))
		}
		if x.unknownFields != nil {
			n += len(x.unknownFields)
		}
		return protoiface.SizeOutput{
			NoUnkeyedLiterals: input.NoUnkeyedLiterals,
			Size:              n,
		}
	}

	marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {
		x := input.Message.Interface().(*CommonEncodedVotePart)
		if x == nil {
			return protoiface.MarshalOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Buf:               input.Buf,
			}, nil
		}
		options := runtime.MarshalInputToOptions(input)
		_ = options
		size := options.Size(x)
		dAtA := make([]byte, size)
		i := len(dAtA)
		_ = i
		var l int
		_ = l
		if x.unknownFields != nil {
			i -= len(x.unknownFields)
			copy(dAtA[i:], x.unknownFields)
		}
		if len(x.SignedDataSuffix) > 0 {
			i -= len(x.SignedDataSuffix)
			copy(dAtA[i:], x.SignedDataSuffix)
			i = runtime.EncodeVarint(dAtA, i, uint64(len(x.SignedDataSuffix)))
			i--
			dAtA[i] = 0x12
		}
		if len(x.SignedDataPrefix) > 0 {
			i -= len(x.SignedDataPrefix)
			copy(dAtA[i:], x.SignedDataPrefix)
			i = runtime.EncodeVarint(dAtA, i, uint64(len(x.SignedDataPrefix)))
			i--
			dAtA[i] = 0xa
		}
		if input.Buf != nil {
			input.Buf = append(input.Buf, dAtA...)
		} else {
			input.Buf = dAtA
		}
		return protoiface.MarshalOutput{
			NoUnkeyedLiterals: input.NoUnkeyedLiterals,
			Buf:               input.Buf,
		}, nil
	}
	unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {
		x := input.Message.Interface().(*CommonEncodedVotePart)
		if x == nil {
			return protoiface.UnmarshalOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Flags:             input.Flags,
			}, nil
		}
		options := runtime.UnmarshalInputToOptions(input)
		_ = options
		dAtA := input.Buf
		l := len(dAtA)
		iNdEx := 0
		for iNdEx < l {
			preIndex := iNdEx
			var wire uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
				}
				if iNdEx >= l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				wire |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			fieldNum := int32(wire >> 3)
			wireType := int(wire & 0x7)
			if wireType == 4 {
				return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: CommonEncodedVotePart: wiretype end group for non-group")
			}
			if fieldNum <= 0 {
				return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: CommonEncodedVotePart: illegal tag %d (wire type %d)", fieldNum, wire)
			}
			switch fieldNum {
			case 1:
				if wireType != 2 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field SignedDataPrefix", wireType)
				}
				var byteLen int
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					byteLen |= int(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
				if byteLen < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				postIndex := iNdEx + byteLen
				if postIndex < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if postIndex > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				x.SignedDataPrefix = append(x.SignedDataPrefix[:0], dAtA[iNdEx:postIndex]...)
				if x.SignedDataPrefix == nil {
					x.SignedDataPrefix = []byte{}
				}
				iNdEx = postIndex
			case 2:
				if wireType != 2 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field SignedDataSuffix", wireType)
				}
				var byteLen int
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					byteLen |= int(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
				if byteLen < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				postIndex := iNdEx + byteLen
				if postIndex < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if postIndex > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				x.SignedDataSuffix = append(x.SignedDataSuffix[:0], dAtA[iNdEx:postIndex]...)
				if x.SignedDataSuffix == nil {
					x.SignedDataSuffix = []byte{}
				}
				iNdEx = postIndex
			default:
				iNdEx = preIndex
				skippy, err := runtime.Skip(dAtA[iNdEx:])
				if err != nil {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
				}
				if (skippy < 0) || (iNdEx+skippy) < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if (iNdEx + skippy) > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				if !options.DiscardUnknown {
					x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
				}
				iNdEx += skippy
			}
		}

		if iNdEx > l {
			return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
		}
		return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil
	}
	return &protoiface.Methods{
		NoUnkeyedLiterals: struct{}{},
		Flags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,
		Size:              size,
		Marshal:           marshal,
		Unmarshal:         unmarshal,
		Merge:             nil,
		CheckInitialized:  nil,
	}
}

var (
	md_TMSignature                   protoreflect.MessageDescriptor
	fd_TMSignature_r                 protoreflect.FieldDescriptor
	fd_TMSignature_s                 protoreflect.FieldDescriptor
	fd_TMSignature_v                 protoreflect.FieldDescriptor
	fd_TMSignature_encoded_timestamp protoreflect.FieldDescriptor
)

func init() {
	file_band_base_oracle_v1_proof_proto_init()
	md_TMSignature = File_band_base_oracle_v1_proof_proto.Messages().ByName("TMSignature")
	fd_TMSignature_r = md_TMSignature.Fields().ByName("r")
	fd_TMSignature_s = md_TMSignature.Fields().ByName("s")
	fd_TMSignature_v = md_TMSignature.Fields().ByName("v")
	fd_TMSignature_encoded_timestamp = md_TMSignature.Fields().ByName("encoded_timestamp")
}

var _ protoreflect.Message = (*fastReflection_TMSignature)(nil)

type fastReflection_TMSignature TMSignature

func (x *TMSignature) ProtoReflect() protoreflect.Message {
	return (*fastReflection_TMSignature)(x)
}

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

var _fastReflection_TMSignature_messageType fastReflection_TMSignature_messageType
var _ protoreflect.MessageType = fastReflection_TMSignature_messageType{}

type fastReflection_TMSignature_messageType struct{}

func (x fastReflection_TMSignature_messageType) Zero() protoreflect.Message {
	return (*fastReflection_TMSignature)(nil)
}
func (x fastReflection_TMSignature_messageType) New() protoreflect.Message {
	return new(fastReflection_TMSignature)
}
func (x fastReflection_TMSignature_messageType) Descriptor() protoreflect.MessageDescriptor {
	return md_TMSignature
}

// Descriptor returns message descriptor, which contains only the protobuf
// type information for the message.
func (x *fastReflection_TMSignature) Descriptor() protoreflect.MessageDescriptor {
	return md_TMSignature
}

// Type returns the message type, which encapsulates both Go and protobuf
// type information. If the Go type information is not needed,
// it is recommended that the message descriptor be used instead.
func (x *fastReflection_TMSignature) Type() protoreflect.MessageType {
	return _fastReflection_TMSignature_messageType
}

// New returns a newly allocated and mutable empty message.
func (x *fastReflection_TMSignature) New() protoreflect.Message {
	return new(fastReflection_TMSignature)
}

// Interface unwraps the message reflection interface and
// returns the underlying ProtoMessage interface.
func (x *fastReflection_TMSignature) Interface() protoreflect.ProtoMessage {
	return (*TMSignature)(x)
}

// Range iterates over every populated field in an undefined order,
// calling f for each field descriptor and value encountered.
// Range returns immediately if f returns false.
// While iterating, mutating operations may only be performed
// on the current field descriptor.
func (x *fastReflection_TMSignature) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {
	if len(x.R) != 0 {
		value := protoreflect.ValueOfBytes(x.R)
		if !f(fd_TMSignature_r, value) {
			return
		}
	}
	if len(x.S) != 0 {
		value := protoreflect.ValueOfBytes(x.S)
		if !f(fd_TMSignature_s, value) {
			return
		}
	}
	if x.V != uint32(0) {
		value := protoreflect.ValueOfUint32(x.V)
		if !f(fd_TMSignature_v, value) {
			return
		}
	}
	if len(x.EncodedTimestamp) != 0 {
		value := protoreflect.ValueOfBytes(x.EncodedTimestamp)
		if !f(fd_TMSignature_encoded_timestamp, value) {
			return
		}
	}
}

// Has reports whether a field is populated.
//
// Some fields have the property of nullability where it is possible to
// distinguish between the default value of a field and whether the field
// was explicitly populated with the default value. Singular message fields,
// member fields of a oneof, and proto2 scalar fields are nullable. Such
// fields are populated only if explicitly set.
//
// In other cases (aside from the nullable cases above),
// a proto3 scalar field is populated if it contains a non-zero value, and
// a repeated field is populated if it is non-empty.
func (x *fastReflection_TMSignature) Has(fd protoreflect.FieldDescriptor) bool {
	switch fd.FullName() {
	case "band.base.oracle.v1.TMSignature.r":
		return len(x.R) != 0
	case "band.base.oracle.v1.TMSignature.s":
		return len(x.S) != 0
	case "band.base.oracle.v1.TMSignature.v":
		return x.V != uint32(0)
	case "band.base.oracle.v1.TMSignature.encoded_timestamp":
		return len(x.EncodedTimestamp) != 0
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.TMSignature"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.TMSignature does not contain field %s", fd.FullName()))
	}
}

// Clear clears the field such that a subsequent Has call reports false.
//
// Clearing an extension field clears both the extension type and value
// associated with the given field number.
//
// Clear is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_TMSignature) Clear(fd protoreflect.FieldDescriptor) {
	switch fd.FullName() {
	case "band.base.oracle.v1.TMSignature.r":
		x.R = nil
	case "band.base.oracle.v1.TMSignature.s":
		x.S = nil
	case "band.base.oracle.v1.TMSignature.v":
		x.V = uint32(0)
	case "band.base.oracle.v1.TMSignature.encoded_timestamp":
		x.EncodedTimestamp = nil
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.TMSignature"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.TMSignature does not contain field %s", fd.FullName()))
	}
}

// Get retrieves the value for a field.
//
// For unpopulated scalars, it returns the default value, where
// the default value of a bytes scalar is guaranteed to be a copy.
// For unpopulated composite types, it returns an empty, read-only view
// of the value; to obtain a mutable reference, use Mutable.
func (x *fastReflection_TMSignature) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {
	switch descriptor.FullName() {
	case "band.base.oracle.v1.TMSignature.r":
		value := x.R
		return protoreflect.ValueOfBytes(value)
	case "band.base.oracle.v1.TMSignature.s":
		value := x.S
		return protoreflect.ValueOfBytes(value)
	case "band.base.oracle.v1.TMSignature.v":
		value := x.V
		return protoreflect.ValueOfUint32(value)
	case "band.base.oracle.v1.TMSignature.encoded_timestamp":
		value := x.EncodedTimestamp
		return protoreflect.ValueOfBytes(value)
	default:
		if descriptor.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.TMSignature"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.TMSignature does not contain field %s", descriptor.FullName()))
	}
}

// Set stores the value for a field.
//
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType.
// When setting a composite type, it is unspecified whether the stored value
// aliases the source's memory in any way. If the composite value is an
// empty, read-only value, then it panics.
//
// Set is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_TMSignature) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {
	switch fd.FullName() {
	case "band.base.oracle.v1.TMSignature.r":
		x.R = value.Bytes()
	case "band.base.oracle.v1.TMSignature.s":
		x.S = value.Bytes()
	case "band.base.oracle.v1.TMSignature.v":
		x.V = uint32(value.Uint())
	case "band.base.oracle.v1.TMSignature.encoded_timestamp":
		x.EncodedTimestamp = value.Bytes()
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.TMSignature"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.TMSignature does not contain field %s", fd.FullName()))
	}
}

// Mutable returns a mutable reference to a composite type.
//
// If the field is unpopulated, it may allocate a composite value.
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType
// if not already stored.
// It panics if the field does not contain a composite type.
//
// Mutable is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_TMSignature) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {
	switch fd.FullName() {
	case "band.base.oracle.v1.TMSignature.r":
		panic(fmt.Errorf("field r of message band.base.oracle.v1.TMSignature is not mutable"))
	case "band.base.oracle.v1.TMSignature.s":
		panic(fmt.Errorf("field s of message band.base.oracle.v1.TMSignature is not mutable"))
	case "band.base.oracle.v1.TMSignature.v":
		panic(fmt.Errorf("field v of message band.base.oracle.v1.TMSignature is not mutable"))
	case "band.base.oracle.v1.TMSignature.encoded_timestamp":
		panic(fmt.Errorf("field encoded_timestamp of message band.base.oracle.v1.TMSignature is not mutable"))
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.TMSignature"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.TMSignature does not contain field %s", fd.FullName()))
	}
}

// NewField returns a new value that is assignable to the field
// for the given descriptor. For scalars, this returns the default value.
// For lists, maps, and messages, this returns a new, empty, mutable value.
func (x *fastReflection_TMSignature) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {
	switch fd.FullName() {
	case "band.base.oracle.v1.TMSignature.r":
		return protoreflect.ValueOfBytes(nil)
	case "band.base.oracle.v1.TMSignature.s":
		return protoreflect.ValueOfBytes(nil)
	case "band.base.oracle.v1.TMSignature.v":
		return protoreflect.ValueOfUint32(uint32(0))
	case "band.base.oracle.v1.TMSignature.encoded_timestamp":
		return protoreflect.ValueOfBytes(nil)
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.TMSignature"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.TMSignature does not contain field %s", fd.FullName()))
	}
}

// WhichOneof reports which field within the oneof is populated,
// returning nil if none are populated.
// It panics if the oneof descriptor does not belong to this message.
func (x *fastReflection_TMSignature) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {
	switch d.FullName() {
	default:
		panic(fmt.Errorf("%s is not a oneof field in band.base.oracle.v1.TMSignature", d.FullName()))
	}
	panic("unreachable")
}

// GetUnknown retrieves the entire list of unknown fields.
// The caller may only mutate the contents of the RawFields
// if the mutated bytes are stored back into the message with SetUnknown.
func (x *fastReflection_TMSignature) GetUnknown() protoreflect.RawFields {
	return x.unknownFields
}

// SetUnknown stores an entire list of unknown fields.
// The raw fields must be syntactically valid according to the wire format.
// An implementation may panic if this is not the case.
// Once stored, the caller must not mutate the content of the RawFields.
// An empty RawFields may be passed to clear the fields.
//
// SetUnknown is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_TMSignature) SetUnknown(fields protoreflect.RawFields) {
	x.unknownFields = fields
}

// IsValid reports whether the message is valid.
//
// An invalid message is an empty, read-only value.
//
// An invalid message often corresponds to a nil pointer of the concrete
// message type, but the details are implementation dependent.
// Validity is not part of the protobuf data model, and may not
// be preserved in marshaling or other operations.
func (x *fastReflection_TMSignature) IsValid() bool {
	return x != nil
}

// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.
// This method may return nil.
//
// The returned methods type is identical to
// "google.golang.org/protobuf/runtime/protoiface".Methods.
// Consult the protoiface package documentation for details.
func (x *fastReflection_TMSignature) ProtoMethods() *protoiface.Methods {
	size := func(input protoiface.SizeInput) protoiface.SizeOutput {
		x := input.Message.Interface().(*TMSignature)
		if x == nil {
			return protoiface.SizeOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Size:              0,
			}
		}
		options := runtime.SizeInputToOptions(input)
		_ = options
		var n int
		var l int
		_ = l
		l = len(x.R)
		if l > 0 {
			n += 1 + l + runtime.Sov(uint64(l))
		}
		l = len(x.S)
		if l > 0 {
			n += 1 + l + runtime.Sov(uint64(l))
		}
		if x.V != 0 {
			n += 1 + runtime.Sov(uint64(x.V))
		}
		l = len(x.EncodedTimestamp)
		if l > 0 {
			n += 1 + l + runtime.Sov(uint64(l))
		}
		if x.unknownFields != nil {
			n += len(x.unknownFields)
		}
		return protoiface.SizeOutput{
			NoUnkeyedLiterals: input.NoUnkeyedLiterals,
			Size:              n,
		}
	}

	marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {
		x := input.Message.Interface().(*TMSignature)
		if x == nil {
			return protoiface.MarshalOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Buf:               input.Buf,
			}, nil
		}
		options := runtime.MarshalInputToOptions(input)
		_ = options
		size := options.Size(x)
		dAtA := make([]byte, size)
		i := len(dAtA)
		_ = i
		var l int
		_ = l
		if x.unknownFields != nil {
			i -= len(x.unknownFields)
			copy(dAtA[i:], x.unknownFields)
		}
		if len(x.EncodedTimestamp) > 0 {
			i -= len(x.EncodedTimestamp)
			copy(dAtA[i:], x.EncodedTimestamp)
			i = runtime.EncodeVarint(dAtA, i, uint64(len(x.EncodedTimestamp)))
			i--
			dAtA[i] = 0x22
		}
		if x.V != 0 {
			i = runtime.EncodeVarint(dAtA, i, uint64(x.V))
			i--
			dAtA[i] = 0x18
		}
		if len(x.S) > 0 {
			i -= len(x.S)
			copy(dAtA[i:], x.S)
			i = runtime.EncodeVarint(dAtA, i, uint64(len(x.S)))
			i--
			dAtA[i] = 0x12
		}
		if len(x.R) > 0 {
			i -= len(x.R)
			copy(dAtA[i:], x.R)
			i = runtime.EncodeVarint(dAtA, i, uint64(len(x.R)))
			i--
			dAtA[i] = 0xa
		}
		if input.Buf != nil {
			input.Buf = append(input.Buf, dAtA...)
		} else {
			input.Buf = dAtA
		}
		return protoiface.MarshalOutput{
			NoUnkeyedLiterals: input.NoUnkeyedLiterals,
			Buf:               input.Buf,
		}, nil
	}
	unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {
		x := input.Message.Interface().(*TMSignature)
		if x == nil {
			return protoiface.UnmarshalOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Flags:             input.Flags,
			}, nil
		}
		options := runtime.UnmarshalInputToOptions(input)
		_ = options
		dAtA := input.Buf
		l := len(dAtA)
		iNdEx := 0
		for iNdEx < l {
			preIndex := iNdEx
			var wire uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
				}
				if iNdEx >= l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				wire |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			fieldNum := int32(wire >> 3)
			wireType := int(wire & 0x7)
			if wireType == 4 {
				return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: TMSignature: wiretype end group for non-group")
			}
			if fieldNum <= 0 {
				return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: TMSignature: illegal tag %d (wire type %d)", fieldNum, wire)
			}
			switch fieldNum {
			case 1:
				if wireType != 2 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field R", wireType)
				}
				var byteLen int
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					byteLen |= int(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
				if byteLen < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				postIndex := iNdEx + byteLen
				if postIndex < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if postIndex > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				x.R = append(x.R[:0], dAtA[iNdEx:postIndex]...)
				if x.R == nil {
					x.R = []byte{}
				}
				iNdEx = postIndex
			case 2:
				if wireType != 2 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field S", wireType)
				}
				var byteLen int
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					byteLen |= int(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
				if byteLen < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				postIndex := iNdEx + byteLen
				if postIndex < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if postIndex > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				x.S = append(x.S[:0], dAtA[iNdEx:postIndex]...)
				if x.S == nil {
					x.S = []byte{}
				}
				iNdEx = postIndex
			case 3:
				if wireType != 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field V", wireType)
				}
				x.V = 0
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					x.V |= uint32(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
			case 4:
				if wireType != 2 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field EncodedTimestamp", wireType)
				}
				var byteLen int
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					byteLen |= int(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
				if byteLen < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				postIndex := iNdEx + byteLen
				if postIndex < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if postIndex > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				x.EncodedTimestamp = append(x.EncodedTimestamp[:0], dAtA[iNdEx:postIndex]...)
				if x.EncodedTimestamp == nil {
					x.EncodedTimestamp = []byte{}
				}
				iNdEx = postIndex
			default:
				iNdEx = preIndex
				skippy, err := runtime.Skip(dAtA[iNdEx:])
				if err != nil {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
				}
				if (skippy < 0) || (iNdEx+skippy) < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if (iNdEx + skippy) > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				if !options.DiscardUnknown {
					x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
				}
				iNdEx += skippy
			}
		}

		if iNdEx > l {
			return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
		}
		return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil
	}
	return &protoiface.Methods{
		NoUnkeyedLiterals: struct{}{},
		Flags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,
		Size:              size,
		Marshal:           marshal,
		Unmarshal:         unmarshal,
		Merge:             nil,
		CheckInitialized:  nil,
	}
}

var _ protoreflect.List = (*_RequestsCountProof_3_list)(nil)

type _RequestsCountProof_3_list struct {
	list *[]*IAVLMerklePath
}

func (x *_RequestsCountProof_3_list) Len() int {
	if x.list == nil {
		return 0
	}
	return len(*x.list)
}

func (x *_RequestsCountProof_3_list) Get(i int) protoreflect.Value {
	return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect())
}

func (x *_RequestsCountProof_3_list) Set(i int, value protoreflect.Value) {
	valueUnwrapped := value.Message()
	concreteValue := valueUnwrapped.Interface().(*IAVLMerklePath)
	(*x.list)[i] = concreteValue
}

func (x *_RequestsCountProof_3_list) Append(value protoreflect.Value) {
	valueUnwrapped := value.Message()
	concreteValue := valueUnwrapped.Interface().(*IAVLMerklePath)
	*x.list = append(*x.list, concreteValue)
}

func (x *_RequestsCountProof_3_list) AppendMutable() protoreflect.Value {
	v := new(IAVLMerklePath)
	*x.list = append(*x.list, v)
	return protoreflect.ValueOfMessage(v.ProtoReflect())
}

func (x *_RequestsCountProof_3_list) Truncate(n int) {
	for i := n; i < len(*x.list); i++ {
		(*x.list)[i] = nil
	}
	*x.list = (*x.list)[:n]
}

func (x *_RequestsCountProof_3_list) NewElement() protoreflect.Value {
	v := new(IAVLMerklePath)
	return protoreflect.ValueOfMessage(v.ProtoReflect())
}

func (x *_RequestsCountProof_3_list) IsValid() bool {
	return x.list != nil
}

var (
	md_RequestsCountProof              protoreflect.MessageDescriptor
	fd_RequestsCountProof_count        protoreflect.FieldDescriptor
	fd_RequestsCountProof_version      protoreflect.FieldDescriptor
	fd_RequestsCountProof_merkle_paths protoreflect.FieldDescriptor
)

func init() {
	file_band_base_oracle_v1_proof_proto_init()
	md_RequestsCountProof = File_band_base_oracle_v1_proof_proto.Messages().ByName("RequestsCountProof")
	fd_RequestsCountProof_count = md_RequestsCountProof.Fields().ByName("count")
	fd_RequestsCountProof_version = md_RequestsCountProof.Fields().ByName("version")
	fd_RequestsCountProof_merkle_paths = md_RequestsCountProof.Fields().ByName("merkle_paths")
}

var _ protoreflect.Message = (*fastReflection_RequestsCountProof)(nil)

type fastReflection_RequestsCountProof RequestsCountProof

func (x *RequestsCountProof) ProtoReflect() protoreflect.Message {
	return (*fastReflection_RequestsCountProof)(x)
}

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

var _fastReflection_RequestsCountProof_messageType fastReflection_RequestsCountProof_messageType
var _ protoreflect.MessageType = fastReflection_RequestsCountProof_messageType{}

type fastReflection_RequestsCountProof_messageType struct{}

func (x fastReflection_RequestsCountProof_messageType) Zero() protoreflect.Message {
	return (*fastReflection_RequestsCountProof)(nil)
}
func (x fastReflection_RequestsCountProof_messageType) New() protoreflect.Message {
	return new(fastReflection_RequestsCountProof)
}
func (x fastReflection_RequestsCountProof_messageType) Descriptor() protoreflect.MessageDescriptor {
	return md_RequestsCountProof
}

// Descriptor returns message descriptor, which contains only the protobuf
// type information for the message.
func (x *fastReflection_RequestsCountProof) Descriptor() protoreflect.MessageDescriptor {
	return md_RequestsCountProof
}

// Type returns the message type, which encapsulates both Go and protobuf
// type information. If the Go type information is not needed,
// it is recommended that the message descriptor be used instead.
func (x *fastReflection_RequestsCountProof) Type() protoreflect.MessageType {
	return _fastReflection_RequestsCountProof_messageType
}

// New returns a newly allocated and mutable empty message.
func (x *fastReflection_RequestsCountProof) New() protoreflect.Message {
	return new(fastReflection_RequestsCountProof)
}

// Interface unwraps the message reflection interface and
// returns the underlying ProtoMessage interface.
func (x *fastReflection_RequestsCountProof) Interface() protoreflect.ProtoMessage {
	return (*RequestsCountProof)(x)
}

// Range iterates over every populated field in an undefined order,
// calling f for each field descriptor and value encountered.
// Range returns immediately if f returns false.
// While iterating, mutating operations may only be performed
// on the current field descriptor.
func (x *fastReflection_RequestsCountProof) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {
	if x.Count != uint64(0) {
		value := protoreflect.ValueOfUint64(x.Count)
		if !f(fd_RequestsCountProof_count, value) {
			return
		}
	}
	if x.Version != uint64(0) {
		value := protoreflect.ValueOfUint64(x.Version)
		if !f(fd_RequestsCountProof_version, value) {
			return
		}
	}
	if len(x.MerklePaths) != 0 {
		value := protoreflect.ValueOfList(&_RequestsCountProof_3_list{list: &x.MerklePaths})
		if !f(fd_RequestsCountProof_merkle_paths, value) {
			return
		}
	}
}

// Has reports whether a field is populated.
//
// Some fields have the property of nullability where it is possible to
// distinguish between the default value of a field and whether the field
// was explicitly populated with the default value. Singular message fields,
// member fields of a oneof, and proto2 scalar fields are nullable. Such
// fields are populated only if explicitly set.
//
// In other cases (aside from the nullable cases above),
// a proto3 scalar field is populated if it contains a non-zero value, and
// a repeated field is populated if it is non-empty.
func (x *fastReflection_RequestsCountProof) Has(fd protoreflect.FieldDescriptor) bool {
	switch fd.FullName() {
	case "band.base.oracle.v1.RequestsCountProof.count":
		return x.Count != uint64(0)
	case "band.base.oracle.v1.RequestsCountProof.version":
		return x.Version != uint64(0)
	case "band.base.oracle.v1.RequestsCountProof.merkle_paths":
		return len(x.MerklePaths) != 0
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.RequestsCountProof"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.RequestsCountProof does not contain field %s", fd.FullName()))
	}
}

// Clear clears the field such that a subsequent Has call reports false.
//
// Clearing an extension field clears both the extension type and value
// associated with the given field number.
//
// Clear is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_RequestsCountProof) Clear(fd protoreflect.FieldDescriptor) {
	switch fd.FullName() {
	case "band.base.oracle.v1.RequestsCountProof.count":
		x.Count = uint64(0)
	case "band.base.oracle.v1.RequestsCountProof.version":
		x.Version = uint64(0)
	case "band.base.oracle.v1.RequestsCountProof.merkle_paths":
		x.MerklePaths = nil
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.RequestsCountProof"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.RequestsCountProof does not contain field %s", fd.FullName()))
	}
}

// Get retrieves the value for a field.
//
// For unpopulated scalars, it returns the default value, where
// the default value of a bytes scalar is guaranteed to be a copy.
// For unpopulated composite types, it returns an empty, read-only view
// of the value; to obtain a mutable reference, use Mutable.
func (x *fastReflection_RequestsCountProof) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {
	switch descriptor.FullName() {
	case "band.base.oracle.v1.RequestsCountProof.count":
		value := x.Count
		return protoreflect.ValueOfUint64(value)
	case "band.base.oracle.v1.RequestsCountProof.version":
		value := x.Version
		return protoreflect.ValueOfUint64(value)
	case "band.base.oracle.v1.RequestsCountProof.merkle_paths":
		if len(x.MerklePaths) == 0 {
			return protoreflect.ValueOfList(&_RequestsCountProof_3_list{})
		}
		listValue := &_RequestsCountProof_3_list{list: &x.MerklePaths}
		return protoreflect.ValueOfList(listValue)
	default:
		if descriptor.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.RequestsCountProof"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.RequestsCountProof does not contain field %s", descriptor.FullName()))
	}
}

// Set stores the value for a field.
//
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType.
// When setting a composite type, it is unspecified whether the stored value
// aliases the source's memory in any way. If the composite value is an
// empty, read-only value, then it panics.
//
// Set is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_RequestsCountProof) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {
	switch fd.FullName() {
	case "band.base.oracle.v1.RequestsCountProof.count":
		x.Count = value.Uint()
	case "band.base.oracle.v1.RequestsCountProof.version":
		x.Version = value.Uint()
	case "band.base.oracle.v1.RequestsCountProof.merkle_paths":
		lv := value.List()
		clv := lv.(*_RequestsCountProof_3_list)
		x.MerklePaths = *clv.list
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.RequestsCountProof"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.RequestsCountProof does not contain field %s", fd.FullName()))
	}
}

// Mutable returns a mutable reference to a composite type.
//
// If the field is unpopulated, it may allocate a composite value.
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType
// if not already stored.
// It panics if the field does not contain a composite type.
//
// Mutable is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_RequestsCountProof) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {
	switch fd.FullName() {
	case "band.base.oracle.v1.RequestsCountProof.merkle_paths":
		if x.MerklePaths == nil {
			x.MerklePaths = []*IAVLMerklePath{}
		}
		value := &_RequestsCountProof_3_list{list: &x.MerklePaths}
		return protoreflect.ValueOfList(value)
	case "band.base.oracle.v1.RequestsCountProof.count":
		panic(fmt.Errorf("field count of message band.base.oracle.v1.RequestsCountProof is not mutable"))
	case "band.base.oracle.v1.RequestsCountProof.version":
		panic(fmt.Errorf("field version of message band.base.oracle.v1.RequestsCountProof is not mutable"))
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.RequestsCountProof"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.RequestsCountProof does not contain field %s", fd.FullName()))
	}
}

// NewField returns a new value that is assignable to the field
// for the given descriptor. For scalars, this returns the default value.
// For lists, maps, and messages, this returns a new, empty, mutable value.
func (x *fastReflection_RequestsCountProof) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {
	switch fd.FullName() {
	case "band.base.oracle.v1.RequestsCountProof.count":
		return protoreflect.ValueOfUint64(uint64(0))
	case "band.base.oracle.v1.RequestsCountProof.version":
		return protoreflect.ValueOfUint64(uint64(0))
	case "band.base.oracle.v1.RequestsCountProof.merkle_paths":
		list := []*IAVLMerklePath{}
		return protoreflect.ValueOfList(&_RequestsCountProof_3_list{list: &list})
	default:
		if fd.IsExtension() {
			panic(fmt.Errorf("proto3 declared messages do not support extensions: band.base.oracle.v1.RequestsCountProof"))
		}
		panic(fmt.Errorf("message band.base.oracle.v1.RequestsCountProof does not contain field %s", fd.FullName()))
	}
}

// WhichOneof reports which field within the oneof is populated,
// returning nil if none are populated.
// It panics if the oneof descriptor does not belong to this message.
func (x *fastReflection_RequestsCountProof) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {
	switch d.FullName() {
	default:
		panic(fmt.Errorf("%s is not a oneof field in band.base.oracle.v1.RequestsCountProof", d.FullName()))
	}
	panic("unreachable")
}

// GetUnknown retrieves the entire list of unknown fields.
// The caller may only mutate the contents of the RawFields
// if the mutated bytes are stored back into the message with SetUnknown.
func (x *fastReflection_RequestsCountProof) GetUnknown() protoreflect.RawFields {
	return x.unknownFields
}

// SetUnknown stores an entire list of unknown fields.
// The raw fields must be syntactically valid according to the wire format.
// An implementation may panic if this is not the case.
// Once stored, the caller must not mutate the content of the RawFields.
// An empty RawFields may be passed to clear the fields.
//
// SetUnknown is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_RequestsCountProof) SetUnknown(fields protoreflect.RawFields) {
	x.unknownFields = fields
}

// IsValid reports whether the message is valid.
//
// An invalid message is an empty, read-only value.
//
// An invalid message often corresponds to a nil pointer of the concrete
// message type, but the details are implementation dependent.
// Validity is not part of the protobuf data model, and may not
// be preserved in marshaling or other operations.
func (x *fastReflection_RequestsCountProof) IsValid() bool {
	return x != nil
}

// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.
// This method may return nil.
//
// The returned methods type is identical to
// "google.golang.org/protobuf/runtime/protoiface".Methods.
// Consult the protoiface package documentation for details.
func (x *fastReflection_RequestsCountProof) ProtoMethods() *protoiface.Methods {
	size := func(input protoiface.SizeInput) protoiface.SizeOutput {
		x := input.Message.Interface().(*RequestsCountProof)
		if x == nil {
			return protoiface.SizeOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Size:              0,
			}
		}
		options := runtime.SizeInputToOptions(input)
		_ = options
		var n int
		var l int
		_ = l
		if x.Count != 0 {
			n += 1 + runtime.Sov(uint64(x.Count))
		}
		if x.Version != 0 {
			n += 1 + runtime.Sov(uint64(x.Version))
		}
		if len(x.MerklePaths) > 0 {
			for _, e := range x.MerklePaths {
				l = options.Size(e)
				n += 1 + l + runtime.Sov(uint64(l))
			}
		}
		if x.unknownFields != nil {
			n += len(x.unknownFields)
		}
		return protoiface.SizeOutput{
			NoUnkeyedLiterals: input.NoUnkeyedLiterals,
			Size:              n,
		}
	}

	marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {
		x := input.Message.Interface().(*RequestsCountProof)
		if x == nil {
			return protoiface.MarshalOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Buf:               input.Buf,
			}, nil
		}
		options := runtime.MarshalInputToOptions(input)
		_ = options
		size := options.Size(x)
		dAtA := make([]byte, size)
		i := len(dAtA)
		_ = i
		var l int
		_ = l
		if x.unknownFields != nil {
			i -= len(x.unknownFields)
			copy(dAtA[i:], x.unknownFields)
		}
		if len(x.MerklePaths) > 0 {
			for iNdEx := len(x.MerklePaths) - 1; iNdEx >= 0; iNdEx-- {
				encoded, err := options.Marshal(x.MerklePaths[iNdEx])
				if err != nil {
					return protoiface.MarshalOutput{
						NoUnkeyedLiterals: input.NoUnkeyedLiterals,
						Buf:               input.Buf,
					}, err
				}
				i -= len(encoded)
				copy(dAtA[i:], encoded)
				i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))
				i--
				dAtA[i] = 0x1a
			}
		}
		if x.Version != 0 {
			i = runtime.EncodeVarint(dAtA, i, uint64(x.Version))
			i--
			dAtA[i] = 0x10
		}
		if x.Count != 0 {
			i = runtime.EncodeVarint(dAtA, i, uint64(x.Count))
			i--
			dAtA[i] = 0x8
		}
		if input.Buf != nil {
			input.Buf = append(input.Buf, dAtA...)
		} else {
			input.Buf = dAtA
		}
		return protoiface.MarshalOutput{
			NoUnkeyedLiterals: input.NoUnkeyedLiterals,
			Buf:               input.Buf,
		}, nil
	}
	unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {
		x := input.Message.Interface().(*RequestsCountProof)
		if x == nil {
			return protoiface.UnmarshalOutput{
				NoUnkeyedLiterals: input.NoUnkeyedLiterals,
				Flags:             input.Flags,
			}, nil
		}
		options := runtime.UnmarshalInputToOptions(input)
		_ = options
		dAtA := input.Buf
		l := len(dAtA)
		iNdEx := 0
		for iNdEx < l {
			preIndex := iNdEx
			var wire uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
				}
				if iNdEx >= l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				wire |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			fieldNum := int32(wire >> 3)
			wireType := int(wire & 0x7)
			if wireType == 4 {
				return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: RequestsCountProof: wiretype end group for non-group")
			}
			if fieldNum <= 0 {
				return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: RequestsCountProof: illegal tag %d (wire type %d)", fieldNum, wire)
			}
			switch fieldNum {
			case 1:
				if wireType != 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Count", wireType)
				}
				x.Count = 0
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					x.Count |= uint64(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
			case 2:
				if wireType != 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Version", wireType)
				}
				x.Version = 0
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					x.Version |= uint64(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
			case 3:
				if wireType != 2 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field MerklePaths", wireType)
				}
				var msglen int
				for shift := uint(0); ; shift += 7 {
					if shift >= 64 {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					msglen |= int(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
				if msglen < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				postIndex := iNdEx + msglen
				if postIndex < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if postIndex > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				x.MerklePaths = append(x.MerklePaths, &IAVLMerklePath{})
				if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.MerklePaths[len(x.MerklePaths)-1]); err != nil {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
				}
				iNdEx = postIndex
			default:
				iNdEx = preIndex
				skippy, err := runtime.Skip(dAtA[iNdEx:])
				if err != nil {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
				}
				if (skippy < 0) || (iNdEx+skippy) < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if (iNdEx + skippy) > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				if !options.DiscardUnknown {
					x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
				}
				iNdEx += skippy
			}
		}

		if iNdEx > l {
			return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
		}
		return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil
	}
	return &protoiface.Methods{
		NoUnkeyedLiterals: struct{}{},
		Flags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,
		Size:              size,
		Marshal:           marshal,
		Unmarshal:         unmarshal,
		Merge:             nil,
		CheckInitialized:  nil,
	}
}

// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.27.0
// 	protoc        (unknown)
// source: band/base/oracle/v1/proof.proto

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)
)

// ProofRequest is request type for the Service/Proof RPC method.
type ProofRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// RequestID is ID of an oracle request
	RequestId uint64 `protobuf:"varint,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
	// height is block height
	Height int64 `protobuf:"varint,2,opt,name=height,proto3" json:"height,omitempty"`
}

func (x *ProofRequest) Reset() {
	*x = ProofRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_band_base_oracle_v1_proof_proto_msgTypes[0]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*ProofRequest) ProtoMessage() {}

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

func (x *ProofRequest) GetRequestId() uint64 {
	if x != nil {
		return x.RequestId
	}
	return 0
}

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

// ProofResponse is response type for the Service/Proof RPC method.
type ProofResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// height is block height
	Height int64 `protobuf:"varint,1,opt,name=height,proto3" json:"height,omitempty"`
	// result is the proof
	Result *SingleProofResult `protobuf:"bytes,2,opt,name=result,proto3" json:"result,omitempty"`
}

func (x *ProofResponse) Reset() {
	*x = ProofResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_band_base_oracle_v1_proof_proto_msgTypes[1]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*ProofResponse) ProtoMessage() {}

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

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

func (x *ProofResponse) GetResult() *SingleProofResult {
	if x != nil {
		return x.Result
	}
	return nil
}

// MultiProofRequest is request type for the Service/MultiProof RPC method.
type MultiProofRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// request_ids is the list of request IDs
	RequestIds []uint64 `protobuf:"varint,1,rep,packed,name=request_ids,json=requestIds,proto3" json:"request_ids,omitempty"`
}

func (x *MultiProofRequest) Reset() {
	*x = MultiProofRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_band_base_oracle_v1_proof_proto_msgTypes[2]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*MultiProofRequest) ProtoMessage() {}

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

func (x *MultiProofRequest) GetRequestIds() []uint64 {
	if x != nil {
		return x.RequestIds
	}
	return nil
}

// MultiProofResponse is response type for the Service/MultiProof RPC method.
type MultiProofResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Height int64             `protobuf:"varint,1,opt,name=height,proto3" json:"height,omitempty"`
	Result *MultiProofResult `protobuf:"bytes,2,opt,name=result,proto3" json:"result,omitempty"`
}

func (x *MultiProofResponse) Reset() {
	*x = MultiProofResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_band_base_oracle_v1_proof_proto_msgTypes[3]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*MultiProofResponse) ProtoMessage() {}

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

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

func (x *MultiProofResponse) GetResult() *MultiProofResult {
	if x != nil {
		return x.Result
	}
	return nil
}

// RequestCountProofRequest is request type for the Service/RequestCountProof RPC method.
type RequestCountProofRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *RequestCountProofRequest) Reset() {
	*x = RequestCountProofRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_band_base_oracle_v1_proof_proto_msgTypes[4]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*RequestCountProofRequest) ProtoMessage() {}

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

// RequestCountProofResponse is response type for the Service/RequestCountProof RPC method.
type RequestCountProofResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Height int64             `protobuf:"varint,1,opt,name=height,proto3" json:"height,omitempty"`
	Result *CountProofResult `protobuf:"bytes,2,opt,name=result,proto3" json:"result,omitempty"`
}

func (x *RequestCountProofResponse) Reset() {
	*x = RequestCountProofResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_band_base_oracle_v1_proof_proto_msgTypes[5]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*RequestCountProofResponse) ProtoMessage() {}

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

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

func (x *RequestCountProofResponse) GetResult() *CountProofResult {
	if x != nil {
		return x.Result
	}
	return nil
}

// SingleProofResponse is the data structure for response of single proof
type SingleProofResult struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Proof         *SingleProof `protobuf:"bytes,1,opt,name=proof,proto3" json:"proof,omitempty"`
	EvmProofBytes []byte       `protobuf:"bytes,2,opt,name=evm_proof_bytes,json=evmProofBytes,proto3" json:"evm_proof_bytes,omitempty"`
}

func (x *SingleProofResult) Reset() {
	*x = SingleProofResult{}
	if protoimpl.UnsafeEnabled {
		mi := &file_band_base_oracle_v1_proof_proto_msgTypes[6]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*SingleProofResult) ProtoMessage() {}

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

func (x *SingleProofResult) GetProof() *SingleProof {
	if x != nil {
		return x.Proof
	}
	return nil
}

func (x *SingleProofResult) GetEvmProofBytes() []byte {
	if x != nil {
		return x.EvmProofBytes
	}
	return nil
}

// MultiProofResult is the data structure for response of multi proof
type MultiProofResult struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Proof         *MultiProof `protobuf:"bytes,1,opt,name=proof,proto3" json:"proof,omitempty"`
	EvmProofBytes []byte      `protobuf:"bytes,2,opt,name=evm_proof_bytes,json=evmProofBytes,proto3" json:"evm_proof_bytes,omitempty"`
}

func (x *MultiProofResult) Reset() {
	*x = MultiProofResult{}
	if protoimpl.UnsafeEnabled {
		mi := &file_band_base_oracle_v1_proof_proto_msgTypes[7]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*MultiProofResult) ProtoMessage() {}

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

func (x *MultiProofResult) GetProof() *MultiProof {
	if x != nil {
		return x.Proof
	}
	return nil
}

func (x *MultiProofResult) GetEvmProofBytes() []byte {
	if x != nil {
		return x.EvmProofBytes
	}
	return nil
}

// CountProofResult is the data structure for response of count proof
type CountProofResult struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Proof         *CountProof `protobuf:"bytes,1,opt,name=proof,proto3" json:"proof,omitempty"`
	EvmProofBytes []byte      `protobuf:"bytes,2,opt,name=evm_proof_bytes,json=evmProofBytes,proto3" json:"evm_proof_bytes,omitempty"`
}

func (x *CountProofResult) Reset() {
	*x = CountProofResult{}
	if protoimpl.UnsafeEnabled {
		mi := &file_band_base_oracle_v1_proof_proto_msgTypes[8]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*CountProofResult) ProtoMessage() {}

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

func (x *CountProofResult) GetProof() *CountProof {
	if x != nil {
		return x.Proof
	}
	return nil
}

func (x *CountProofResult) GetEvmProofBytes() []byte {
	if x != nil {
		return x.EvmProofBytes
	}
	return nil
}

// SingleProof contains block height, oracle data proof and block relay proof
type SingleProof struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	BlockHeight     uint64           `protobuf:"varint,1,opt,name=block_height,json=blockHeight,proto3" json:"block_height,omitempty"`
	OracleDataProof *OracleDataProof `protobuf:"bytes,2,opt,name=oracle_data_proof,json=oracleDataProof,proto3" json:"oracle_data_proof,omitempty"`
	BlockRelayProof *BlockRelayProof `protobuf:"bytes,3,opt,name=block_relay_proof,json=blockRelayProof,proto3" json:"block_relay_proof,omitempty"`
}

func (x *SingleProof) Reset() {
	*x = SingleProof{}
	if protoimpl.UnsafeEnabled {
		mi := &file_band_base_oracle_v1_proof_proto_msgTypes[9]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*SingleProof) ProtoMessage() {}

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

func (x *SingleProof) GetBlockHeight() uint64 {
	if x != nil {
		return x.BlockHeight
	}
	return 0
}

func (x *SingleProof) GetOracleDataProof() *OracleDataProof {
	if x != nil {
		return x.OracleDataProof
	}
	return nil
}

func (x *SingleProof) GetBlockRelayProof() *BlockRelayProof {
	if x != nil {
		return x.BlockRelayProof
	}
	return nil
}

// MultiProof contains block height, list of oracle data proof and block relay proof
type MultiProof struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	BlockHeight          uint64             `protobuf:"varint,1,opt,name=block_height,json=blockHeight,proto3" json:"block_height,omitempty"`
	OracleDataMultiProof []*OracleDataProof `protobuf:"bytes,2,rep,name=oracle_data_multi_proof,json=oracleDataMultiProof,proto3" json:"oracle_data_multi_proof,omitempty"`
	BlockRelayProof      *BlockRelayProof   `protobuf:"bytes,3,opt,name=block_relay_proof,json=blockRelayProof,proto3" json:"block_relay_proof,omitempty"`
}

func (x *MultiProof) Reset() {
	*x = MultiProof{}
	if protoimpl.UnsafeEnabled {
		mi := &file_band_base_oracle_v1_proof_proto_msgTypes[10]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*MultiProof) ProtoMessage() {}

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

func (x *MultiProof) GetBlockHeight() uint64 {
	if x != nil {
		return x.BlockHeight
	}
	return 0
}

func (x *MultiProof) GetOracleDataMultiProof() []*OracleDataProof {
	if x != nil {
		return x.OracleDataMultiProof
	}
	return nil
}

func (x *MultiProof) GetBlockRelayProof() *BlockRelayProof {
	if x != nil {
		return x.BlockRelayProof
	}
	return nil
}

// CountProof contains block height, count proof and block relay proof
type CountProof struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	BlockHeight     uint64              `protobuf:"varint,1,opt,name=block_height,json=blockHeight,proto3" json:"block_height,omitempty"`
	CountProof      *RequestsCountProof `protobuf:"bytes,2,opt,name=count_proof,json=countProof,proto3" json:"count_proof,omitempty"`
	BlockRelayProof *BlockRelayProof    `protobuf:"bytes,3,opt,name=block_relay_proof,json=blockRelayProof,proto3" json:"block_relay_proof,omitempty"`
}

func (x *CountProof) Reset() {
	*x = CountProof{}
	if protoimpl.UnsafeEnabled {
		mi := &file_band_base_oracle_v1_proof_proto_msgTypes[11]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*CountProof) ProtoMessage() {}

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

func (x *CountProof) GetBlockHeight() uint64 {
	if x != nil {
		return x.BlockHeight
	}
	return 0
}

func (x *CountProof) GetCountProof() *RequestsCountProof {
	if x != nil {
		return x.CountProof
	}
	return nil
}

func (x *CountProof) GetBlockRelayProof() *BlockRelayProof {
	if x != nil {
		return x.BlockRelayProof
	}
	return nil
}

// OracleDataProof contains result, version and merkle paths
type OracleDataProof struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Result      *v1.Result        `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"`
	Version     uint64            `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty"`
	MerklePaths []*IAVLMerklePath `protobuf:"bytes,3,rep,name=merkle_paths,json=merklePaths,proto3" json:"merkle_paths,omitempty"`
}

func (x *OracleDataProof) Reset() {
	*x = OracleDataProof{}
	if protoimpl.UnsafeEnabled {
		mi := &file_band_base_oracle_v1_proof_proto_msgTypes[12]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*OracleDataProof) ProtoMessage() {}

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

func (x *OracleDataProof) GetResult() *v1.Result {
	if x != nil {
		return x.Result
	}
	return nil
}

func (x *OracleDataProof) GetVersion() uint64 {
	if x != nil {
		return x.Version
	}
	return 0
}

func (x *OracleDataProof) GetMerklePaths() []*IAVLMerklePath {
	if x != nil {
		return x.MerklePaths
	}
	return nil
}

// IAVLMerklePath represents a Merkle step to a leaf data node in an iAVL tree.
type IAVLMerklePath struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	IsDataOnRight  bool   `protobuf:"varint,1,opt,name=is_data_on_right,json=isDataOnRight,proto3" json:"is_data_on_right,omitempty"`
	SubtreeHeight  uint32 `protobuf:"varint,2,opt,name=subtree_height,json=subtreeHeight,proto3" json:"subtree_height,omitempty"`
	SubtreeSize    uint64 `protobuf:"varint,3,opt,name=subtree_size,json=subtreeSize,proto3" json:"subtree_size,omitempty"`
	SubtreeVersion uint64 `protobuf:"varint,4,opt,name=subtree_version,json=subtreeVersion,proto3" json:"subtree_version,omitempty"`
	SiblingHash    []byte `protobuf:"bytes,5,opt,name=sibling_hash,json=siblingHash,proto3" json:"sibling_hash,omitempty"`
}

func (x *IAVLMerklePath) Reset() {
	*x = IAVLMerklePath{}
	if protoimpl.UnsafeEnabled {
		mi := &file_band_base_oracle_v1_proof_proto_msgTypes[13]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*IAVLMerklePath) ProtoMessage() {}

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

func (x *IAVLMerklePath) GetIsDataOnRight() bool {
	if x != nil {
		return x.IsDataOnRight
	}
	return false
}

func (x *IAVLMerklePath) GetSubtreeHeight() uint32 {
	if x != nil {
		return x.SubtreeHeight
	}
	return 0
}

func (x *IAVLMerklePath) GetSubtreeSize() uint64 {
	if x != nil {
		return x.SubtreeSize
	}
	return 0
}

func (x *IAVLMerklePath) GetSubtreeVersion() uint64 {
	if x != nil {
		return x.SubtreeVersion
	}
	return 0
}

func (x *IAVLMerklePath) GetSiblingHash() []byte {
	if x != nil {
		return x.SiblingHash
	}
	return nil
}

// BlockRelayProof contains multi store proof, block header merkle parts, common encoded part and signatures
type BlockRelayProof struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	MultiStoreProof        *MultiStoreProof        `protobuf:"bytes,1,opt,name=multi_store_proof,json=multiStoreProof,proto3" json:"multi_store_proof,omitempty"`
	BlockHeaderMerkleParts *BlockHeaderMerkleParts `protobuf:"bytes,2,opt,name=block_header_merkle_parts,json=blockHeaderMerkleParts,proto3" json:"block_header_merkle_parts,omitempty"`
	CommonEncodedVotePart  *CommonEncodedVotePart  `protobuf:"bytes,3,opt,name=common_encoded_vote_part,json=commonEncodedVotePart,proto3" json:"common_encoded_vote_part,omitempty"`
	Signatures             []*TMSignature          `protobuf:"bytes,4,rep,name=signatures,proto3" json:"signatures,omitempty"`
}

func (x *BlockRelayProof) Reset() {
	*x = BlockRelayProof{}
	if protoimpl.UnsafeEnabled {
		mi := &file_band_base_oracle_v1_proof_proto_msgTypes[14]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*BlockRelayProof) ProtoMessage() {}

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

func (x *BlockRelayProof) GetMultiStoreProof() *MultiStoreProof {
	if x != nil {
		return x.MultiStoreProof
	}
	return nil
}

func (x *BlockRelayProof) GetBlockHeaderMerkleParts() *BlockHeaderMerkleParts {
	if x != nil {
		return x.BlockHeaderMerkleParts
	}
	return nil
}

func (x *BlockRelayProof) GetCommonEncodedVotePart() *CommonEncodedVotePart {
	if x != nil {
		return x.CommonEncodedVotePart
	}
	return nil
}

func (x *BlockRelayProof) GetSignatures() []*TMSignature {
	if x != nil {
		return x.Signatures
	}
	return nil
}

// MultiStoreProof stores a compact of other Cosmos-SDK modules' storage hash in multistore to
// compute (in combination with oracle store hash) Tendermint's application state hash at a given block.
//
//	                                 __________________________[AppHash]__________________________
//	                                /                                                             \
//	                  ___________[N24]____________                                    ___________[N25]________
//	                 /                            \                                  /                        \
//	          _____[N20]_____                 ____[N21]______                   ____[N22]______              _[N23]_
//	         /               \               /               \                 /               \            /       \
//	     _[N12]_          _[N13]_          _[N14]_          _[N15]_          _[N16]_          _[N17]_     [N18]     [Q]
//	    /       \        /       \        /       \        /       \        /       \        /       \    /   \
//	  [N0]     [N1]    [N2]     [N3]    [N4]     [N5]    [N6]     [N7]    [N8]     [N9]   [N10]    [N11] [O] [P]
//	 /   \    /   \    /  \    /   \   /   \    /   \   /   \    /   \   /   \    /   \   /   \    /   \
//	[0] [1]  [2] [3] [4] [5]  [6] [7] [8] [9]  [A] [B] [C] [D]  [E] [F] [G] [H]  [I] [J] [K] [L]  [M] [N]
//
// [0] - acc (auth) [1] - authz         [2] - bandtss       [3] - bank        [4] - capability [5] - consensus
// [6] - crisis     [7] - distribution  [8] - evidence      [9] - feeds       [A] - feegrant   [B] - feeibc
// [C] - globalfee  [D] - gov           [E] - ibc           [F] - icahost     [G] - mint       [H] - oracle
// [I] - params     [J] - restake       [K] - rollingseed   [L] - slashing    [M] - staking    [N] - transfer
// [O] - tss        [P] - tunnel        [Q] - upgrade
//
// Notice that NOT all leaves of the Merkle tree are needed in order to compute the Merkle
// root hash, since we only want to validate the correctness of [H] In fact, only
// [G], [N9], [N17], [N23], and [N24] are needed in order to compute [AppHash].
type MultiStoreProof struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	OracleIavlStateHash                   []byte `protobuf:"bytes,1,opt,name=oracle_iavl_state_hash,json=oracleIavlStateHash,proto3" json:"oracle_iavl_state_hash,omitempty"`
	MintStoreMerkleHash                   []byte `protobuf:"bytes,2,opt,name=mint_store_merkle_hash,json=mintStoreMerkleHash,proto3" json:"mint_store_merkle_hash,omitempty"`
	ParamsToRestakeStoresMerkleHash       []byte `protobuf:"bytes,3,opt,name=params_to_restake_stores_merkle_hash,json=paramsToRestakeStoresMerkleHash,proto3" json:"params_to_restake_stores_merkle_hash,omitempty"`
	RollingseedToTransferStoresMerkleHash []byte `protobuf:"bytes,4,opt,name=rollingseed_to_transfer_stores_merkle_hash,json=rollingseedToTransferStoresMerkleHash,proto3" json:"rollingseed_to_transfer_stores_merkle_hash,omitempty"`
	TssToUpgradeStoresMerkleHash          []byte `protobuf:"bytes,5,opt,name=tss_to_upgrade_stores_merkle_hash,json=tssToUpgradeStoresMerkleHash,proto3" json:"tss_to_upgrade_stores_merkle_hash,omitempty"`
	AuthToIcahostStoresMerkleHash         []byte `protobuf:"bytes,6,opt,name=auth_to_icahost_stores_merkle_hash,json=authToIcahostStoresMerkleHash,proto3" json:"auth_to_icahost_stores_merkle_hash,omitempty"`
}

func (x *MultiStoreProof) Reset() {
	*x = MultiStoreProof{}
	if protoimpl.UnsafeEnabled {
		mi := &file_band_base_oracle_v1_proof_proto_msgTypes[15]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*MultiStoreProof) ProtoMessage() {}

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

func (x *MultiStoreProof) GetOracleIavlStateHash() []byte {
	if x != nil {
		return x.OracleIavlStateHash
	}
	return nil
}

func (x *MultiStoreProof) GetMintStoreMerkleHash() []byte {
	if x != nil {
		return x.MintStoreMerkleHash
	}
	return nil
}

func (x *MultiStoreProof) GetParamsToRestakeStoresMerkleHash() []byte {
	if x != nil {
		return x.ParamsToRestakeStoresMerkleHash
	}
	return nil
}

func (x *MultiStoreProof) GetRollingseedToTransferStoresMerkleHash() []byte {
	if x != nil {
		return x.RollingseedToTransferStoresMerkleHash
	}
	return nil
}

func (x *MultiStoreProof) GetTssToUpgradeStoresMerkleHash() []byte {
	if x != nil {
		return x.TssToUpgradeStoresMerkleHash
	}
	return nil
}

func (x *MultiStoreProof) GetAuthToIcahostStoresMerkleHash() []byte {
	if x != nil {
		return x.AuthToIcahostStoresMerkleHash
	}
	return nil
}

// BlockHeaderMerkleParts stores a group of hashes using for computing Tendermint's block
// header hash from app hash, and height.
//
// In Tendermint, a block header hash is the Merkle hash of a binary tree with 14 leaf nodes.
// Each node encodes a data piece of the blockchain. The notable data leaves are: [A] app_hash,
// [2] height. All data pieces are combined into one 32-byte hash to be signed
// by block validators. The structure of the Merkle tree is shown below.
//
//	                                 [BlockHeader]
//	                              /                \
//	                 [3A]                                    [3B]
//	               /      \                                /      \
//	       [2A]                [2B]                [2C]                [2D]
//	      /    \              /    \              /    \              /    \
//	  [1A]      [1B]      [1C]      [1D]      [1E]      [1F]        [C]    [D]
//	  /  \      /  \      /  \      /  \      /  \      /  \
//	[0]  [1]  [2]  [3]  [4]  [5]  [6]  [7]  [8]  [9]  [A]  [B]
//
//	[0] - version               [1] - chain_id            [2] - height        [3] - time
//	[4] - last_block_id         [5] - last_commit_hash    [6] - data_hash     [7] - validators_hash
//	[8] - next_validators_hash  [9] - consensus_hash      [A] - app_hash      [B] - last_results_hash
//	[C] - evidence_hash         [D] - proposer_address
//
// Notice that NOT all leaves of the Merkle tree are needed in order to compute the Merkle
// root hash, since we only want to validate the correctness of [2], [3], and [A]. In fact, only
// [1A], [2B], [1E], [B], and [2D] are needed in order to compute [BlockHeader].
type BlockHeaderMerkleParts struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	VersionAndChainIdHash             []byte `protobuf:"bytes,1,opt,name=version_and_chain_id_hash,json=versionAndChainIdHash,proto3" json:"version_and_chain_id_hash,omitempty"`
	Height                            uint64 `protobuf:"varint,2,opt,name=height,proto3" json:"height,omitempty"`
	TimeSecond                        uint64 `protobuf:"varint,3,opt,name=time_second,json=timeSecond,proto3" json:"time_second,omitempty"`
	TimeNanoSecond                    uint32 `protobuf:"varint,4,opt,name=time_nano_second,json=timeNanoSecond,proto3" json:"time_nano_second,omitempty"`
	LastBlockIdAndOther               []byte `protobuf:"bytes,5,opt,name=last_block_id_and_other,json=lastBlockIdAndOther,proto3" json:"last_block_id_and_other,omitempty"`
	NextValidatorHashAndConsensusHash []byte `protobuf:"bytes,6,opt,name=next_validator_hash_and_consensus_hash,json=nextValidatorHashAndConsensusHash,proto3" json:"next_validator_hash_and_consensus_hash,omitempty"`
	LastResultsHash                   []byte `protobuf:"bytes,7,opt,name=last_results_hash,json=lastResultsHash,proto3" json:"last_results_hash,omitempty"`
	EvidenceAndProposerHash           []byte `protobuf:"bytes,8,opt,name=evidence_and_proposer_hash,json=evidenceAndProposerHash,proto3" json:"evidence_and_proposer_hash,omitempty"`
}

func (x *BlockHeaderMerkleParts) Reset() {
	*x = BlockHeaderMerkleParts{}
	if protoimpl.UnsafeEnabled {
		mi := &file_band_base_oracle_v1_proof_proto_msgTypes[16]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*BlockHeaderMerkleParts) ProtoMessage() {}

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

func (x *BlockHeaderMerkleParts) GetVersionAndChainIdHash() []byte {
	if x != nil {
		return x.VersionAndChainIdHash
	}
	return nil
}

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

func (x *BlockHeaderMerkleParts) GetTimeSecond() uint64 {
	if x != nil {
		return x.TimeSecond
	}
	return 0
}

func (x *BlockHeaderMerkleParts) GetTimeNanoSecond() uint32 {
	if x != nil {
		return x.TimeNanoSecond
	}
	return 0
}

func (x *BlockHeaderMerkleParts) GetLastBlockIdAndOther() []byte {
	if x != nil {
		return x.LastBlockIdAndOther
	}
	return nil
}

func (x *BlockHeaderMerkleParts) GetNextValidatorHashAndConsensusHash() []byte {
	if x != nil {
		return x.NextValidatorHashAndConsensusHash
	}
	return nil
}

func (x *BlockHeaderMerkleParts) GetLastResultsHash() []byte {
	if x != nil {
		return x.LastResultsHash
	}
	return nil
}

func (x *BlockHeaderMerkleParts) GetEvidenceAndProposerHash() []byte {
	if x != nil {
		return x.EvidenceAndProposerHash
	}
	return nil
}

// CommonEncodedVotePart represents the common part of encoded vote
type CommonEncodedVotePart struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	SignedDataPrefix []byte `protobuf:"bytes,1,opt,name=signed_data_prefix,json=signedDataPrefix,proto3" json:"signed_data_prefix,omitempty"`
	SignedDataSuffix []byte `protobuf:"bytes,2,opt,name=signed_data_suffix,json=signedDataSuffix,proto3" json:"signed_data_suffix,omitempty"`
}

func (x *CommonEncodedVotePart) Reset() {
	*x = CommonEncodedVotePart{}
	if protoimpl.UnsafeEnabled {
		mi := &file_band_base_oracle_v1_proof_proto_msgTypes[17]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*CommonEncodedVotePart) ProtoMessage() {}

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

func (x *CommonEncodedVotePart) GetSignedDataPrefix() []byte {
	if x != nil {
		return x.SignedDataPrefix
	}
	return nil
}

func (x *CommonEncodedVotePart) GetSignedDataSuffix() []byte {
	if x != nil {
		return x.SignedDataSuffix
	}
	return nil
}

// TMSignature contains all details of validator signature for performing signer recovery for ECDSA
// secp256k1 signature. Note that this struct is written specifically for signature signed on
// Tendermint's precommit data, which includes the block hash and some additional information prepended
// and appended to the block hash. The prepended part (prefix) and the appended part (suffix) are
// different for each signer (including signature size, machine clock, validator index, etc).
type TMSignature struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	R                []byte `protobuf:"bytes,1,opt,name=r,proto3" json:"r,omitempty"`
	S                []byte `protobuf:"bytes,2,opt,name=s,proto3" json:"s,omitempty"`
	V                uint32 `protobuf:"varint,3,opt,name=v,proto3" json:"v,omitempty"`
	EncodedTimestamp []byte `protobuf:"bytes,4,opt,name=encoded_timestamp,json=encodedTimestamp,proto3" json:"encoded_timestamp,omitempty"`
}

func (x *TMSignature) Reset() {
	*x = TMSignature{}
	if protoimpl.UnsafeEnabled {
		mi := &file_band_base_oracle_v1_proof_proto_msgTypes[18]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*TMSignature) ProtoMessage() {}

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

func (x *TMSignature) GetR() []byte {
	if x != nil {
		return x.R
	}
	return nil
}

func (x *TMSignature) GetS() []byte {
	if x != nil {
		return x.S
	}
	return nil
}

func (x *TMSignature) GetV() uint32 {
	if x != nil {
		return x.V
	}
	return 0
}

func (x *TMSignature) GetEncodedTimestamp() []byte {
	if x != nil {
		return x.EncodedTimestamp
	}
	return nil
}

// RequestsCountProof contains count, version and merkle paths
type RequestsCountProof struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Count       uint64            `protobuf:"varint,1,opt,name=count,proto3" json:"count,omitempty"`
	Version     uint64            `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty"`
	MerklePaths []*IAVLMerklePath `protobuf:"bytes,3,rep,name=merkle_paths,json=merklePaths,proto3" json:"merkle_paths,omitempty"`
}

func (x *RequestsCountProof) Reset() {
	*x = RequestsCountProof{}
	if protoimpl.UnsafeEnabled {
		mi := &file_band_base_oracle_v1_proof_proto_msgTypes[19]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*RequestsCountProof) ProtoMessage() {}

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

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

func (x *RequestsCountProof) GetVersion() uint64 {
	if x != nil {
		return x.Version
	}
	return 0
}

func (x *RequestsCountProof) GetMerklePaths() []*IAVLMerklePath {
	if x != nil {
		return x.MerklePaths
	}
	return nil
}

var File_band_base_oracle_v1_proof_proto protoreflect.FileDescriptor

var file_band_base_oracle_v1_proof_proto_rawDesc = []byte{
	0x0a, 0x1f, 0x62, 0x61, 0x6e, 0x64, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x6f, 0x72, 0x61, 0x63,
	0x6c, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x2e, 0x70, 0x72, 0x6f, 0x74,
	0x6f, 0x12, 0x13, 0x62, 0x61, 0x6e, 0x64, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x6f, 0x72, 0x61,
	0x63, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61,
	0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70,
	0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f,
	0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x62, 0x61, 0x6e, 0x64,
	0x2f, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x61, 0x63, 0x6c,
	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x45, 0x0a, 0x0c, 0x50, 0x72, 0x6f, 0x6f, 0x66,
	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x72, 0x65, 0x71,
	0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0x6d,
	0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
	0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52,
	0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x44, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c,
	0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x62, 0x61, 0x6e, 0x64, 0x2e, 0x62,
	0x61, 0x73, 0x65, 0x2e, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x69,
	0x6e, 0x67, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x42,
	0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x34, 0x0a,
	0x11, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64,
	0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x49, 0x64, 0x73, 0x22, 0x71, 0x0a, 0x12, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x50, 0x72, 0x6f, 0x6f,
	0x66, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69,
	0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68,
	0x74, 0x12, 0x43, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x25, 0x2e, 0x62, 0x61, 0x6e, 0x64, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x6f, 0x72,
	0x61, 0x63, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x50, 0x72, 0x6f,
	0x6f, 0x66, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x06,
	0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x1a, 0x0a, 0x18, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x22, 0x78, 0x0a, 0x19, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x75,
	0x6e, 0x74, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
	0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52,
	0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x43, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c,
	0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x62, 0x61, 0x6e, 0x64, 0x2e, 0x62,
	0x61, 0x73, 0x65, 0x2e, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f,
	0x75, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x42, 0x04,
	0xc8, 0xde, 0x1f, 0x00, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0xaf, 0x01, 0x0a,
	0x11, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x52, 0x65, 0x73, 0x75,
	0x6c, 0x74, 0x12, 0x3c, 0x0a, 0x05, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x20, 0x2e, 0x62, 0x61, 0x6e, 0x64, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x6f, 0x72,
	0x61, 0x63, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x50, 0x72,
	0x6f, 0x6f, 0x66, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x05, 0x70, 0x72, 0x6f, 0x6f, 0x66,
	0x12, 0x5c, 0x0a, 0x0f, 0x65, 0x76, 0x6d, 0x5f, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x5f, 0x62, 0x79,
	0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x34, 0xfa, 0xde, 0x1f, 0x30, 0x67,
	0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x6d, 0x65, 0x74, 0x62,
	0x66, 0x74, 0x2f, 0x63, 0x6f, 0x6d, 0x65, 0x74, 0x62, 0x66, 0x74, 0x2f, 0x6c, 0x69, 0x62, 0x73,
	0x2f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x2e, 0x48, 0x65, 0x78, 0x42, 0x79, 0x74, 0x65, 0x73, 0x52,
	0x0d, 0x65, 0x76, 0x6d, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, 0xad,
	0x01, 0x0a, 0x10, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x52, 0x65, 0x73,
	0x75, 0x6c, 0x74, 0x12, 0x3b, 0x0a, 0x05, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x62, 0x61, 0x6e, 0x64, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x6f,
	0x72, 0x61, 0x63, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x50, 0x72,
	0x6f, 0x6f, 0x66, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x05, 0x70, 0x72, 0x6f, 0x6f, 0x66,
	0x12, 0x5c, 0x0a, 0x0f, 0x65, 0x76, 0x6d, 0x5f, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x5f, 0x62, 0x79,
	0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x34, 0xfa, 0xde, 0x1f, 0x30, 0x67,
	0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x6d, 0x65, 0x74, 0x62,
	0x66, 0x74, 0x2f, 0x63, 0x6f, 0x6d, 0x65, 0x74, 0x62, 0x66, 0x74, 0x2f, 0x6c, 0x69, 0x62, 0x73,
	0x2f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x2e, 0x48, 0x65, 0x78, 0x42, 0x79, 0x74, 0x65, 0x73, 0x52,
	0x0d, 0x65, 0x76, 0x6d, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, 0xad,
	0x01, 0x0a, 0x10, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x52, 0x65, 0x73,
	0x75, 0x6c, 0x74, 0x12, 0x3b, 0x0a, 0x05, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x62, 0x61, 0x6e, 0x64, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x6f,
	0x72, 0x61, 0x63, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x72,
	0x6f, 0x6f, 0x66, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x05, 0x70, 0x72, 0x6f, 0x6f, 0x66,
	0x12, 0x5c, 0x0a, 0x0f, 0x65, 0x76, 0x6d, 0x5f, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x5f, 0x62, 0x79,
	0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x34, 0xfa, 0xde, 0x1f, 0x30, 0x67,
	0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x6d, 0x65, 0x74, 0x62,
	0x66, 0x74, 0x2f, 0x63, 0x6f, 0x6d, 0x65, 0x74, 0x62, 0x66, 0x74, 0x2f, 0x6c, 0x69, 0x62, 0x73,
	0x2f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x2e, 0x48, 0x65, 0x78, 0x42, 0x79, 0x74, 0x65, 0x73, 0x52,
	0x0d, 0x65, 0x76, 0x6d, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, 0xe0,
	0x01, 0x0a, 0x0b, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x12, 0x21,
	0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68,
	0x74, 0x12, 0x56, 0x0a, 0x11, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61,
	0x5f, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x62,
	0x61, 0x6e, 0x64, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x2e,
	0x76, 0x31, 0x2e, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f,
	0x6f, 0x66, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x0f, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65,
	0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x12, 0x56, 0x0a, 0x11, 0x62, 0x6c, 0x6f,
	0x63, 0x6b, 0x5f, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x62, 0x61, 0x6e, 0x64, 0x2e, 0x62, 0x61, 0x73, 0x65,
	0x2e, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b,
	0x52, 0x65, 0x6c, 0x61, 0x79, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00,
	0x52, 0x0f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x50, 0x72, 0x6f, 0x6f,
	0x66, 0x22, 0xea, 0x01, 0x0a, 0x0a, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x50, 0x72, 0x6f, 0x6f, 0x66,
	0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69,
	0x67, 0x68, 0x74, 0x12, 0x61, 0x0a, 0x17, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x5f, 0x64, 0x61,
	0x74, 0x61, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x5f, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x18, 0x02,
	0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x62, 0x61, 0x6e, 0x64, 0x2e, 0x62, 0x61, 0x73, 0x65,
	0x2e, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x61, 0x63, 0x6c,
	0x65, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00,
	0x52, 0x14, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x4d, 0x75, 0x6c, 0x74,
	0x69, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x12, 0x56, 0x0a, 0x11, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f,
	0x72, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x24, 0x2e, 0x62, 0x61, 0x6e, 0x64, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x6f, 0x72,
	0x61, 0x63, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x6c,
	0x61, 0x79, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x0f, 0x62,
	0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x22, 0xd7,
	0x01, 0x0a, 0x0a, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x12, 0x21, 0x0a,
	0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x04, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74,
	0x12, 0x4e, 0x0a, 0x0b, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x61, 0x6e, 0x64, 0x2e, 0x62, 0x61, 0x73,
	0x65, 0x2e, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x71, 0x75,
	0x65, 0x73, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x42, 0x04,
	0xc8, 0xde, 0x1f, 0x00, 0x52, 0x0a, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x6f, 0x66,
	0x12, 0x56, 0x0a, 0x11, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x5f,
	0x70, 0x72, 0x6f, 0x6f, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x62, 0x61,
	0x6e, 0x64, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x2e, 0x76,
	0x31, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x50, 0x72, 0x6f, 0x6f,
	0x66, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x0f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65,
	0x6c, 0x61, 0x79, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x22, 0xaf, 0x01, 0x0a, 0x0f, 0x4f, 0x72, 0x61,
	0x63, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x12, 0x34, 0x0a, 0x06,
	0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x62,
	0x61, 0x6e, 0x64, 0x2e, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65,
	0x73, 0x75, 0x6c, 0x74, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75,
	0x6c, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x04, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x4c, 0x0a, 0x0c,
	0x6d, 0x65, 0x72, 0x6b, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x73, 0x18, 0x03, 0x20, 0x03,
	0x28, 0x0b, 0x32, 0x23, 0x2e, 0x62, 0x61, 0x6e, 0x64, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x6f,
	0x72, 0x61, 0x63, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x41, 0x56, 0x4c, 0x4d, 0x65, 0x72,
	0x6b, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x0b, 0x6d,
	0x65, 0x72, 0x6b, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x73, 0x22, 0x85, 0x02, 0x0a, 0x0e, 0x49,
	0x41, 0x56, 0x4c, 0x4d, 0x65, 0x72, 0x6b, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x27, 0x0a,
	0x10, 0x69, 0x73, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6f, 0x6e, 0x5f, 0x72, 0x69, 0x67, 0x68,
	0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x73, 0x44, 0x61, 0x74, 0x61, 0x4f,
	0x6e, 0x52, 0x69, 0x67, 0x68, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x75, 0x62, 0x74, 0x72, 0x65,
	0x65, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d,
	0x73, 0x75, 0x62, 0x74, 0x72, 0x65, 0x65, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x21, 0x0a,
	0x0c, 0x73, 0x75, 0x62, 0x74, 0x72, 0x65, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x04, 0x52, 0x0b, 0x73, 0x75, 0x62, 0x74, 0x72, 0x65, 0x65, 0x53, 0x69, 0x7a, 0x65,
	0x12, 0x27, 0x0a, 0x0f, 0x73, 0x75, 0x62, 0x74, 0x72, 0x65, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73,
	0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x73, 0x75, 0x62, 0x74, 0x72,
	0x65, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x57, 0x0a, 0x0c, 0x73, 0x69, 0x62,
	0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x42,
	0x34, 0xfa, 0xde, 0x1f, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
	0x63, 0x6f, 0x6d, 0x65, 0x74, 0x62, 0x66, 0x74, 0x2f, 0x63, 0x6f, 0x6d, 0x65, 0x74, 0x62, 0x66,
	0x74, 0x2f, 0x6c, 0x69, 0x62, 0x73, 0x2f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x2e, 0x48, 0x65, 0x78,
	0x42, 0x79, 0x74, 0x65, 0x73, 0x52, 0x0b, 0x73, 0x69, 0x62, 0x6c, 0x69, 0x6e, 0x67, 0x48, 0x61,
	0x73, 0x68, 0x22, 0x8a, 0x03, 0x0a, 0x0f, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x6c, 0x61,
	0x79, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x12, 0x56, 0x0a, 0x11, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x5f,
	0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x24, 0x2e, 0x62, 0x61, 0x6e, 0x64, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x6f, 0x72,
	0x61, 0x63, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x74, 0x6f,
	0x72, 0x65, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x0f, 0x6d,
	0x75, 0x6c, 0x74, 0x69, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x12, 0x6c,
	0x0a, 0x19, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x6d,
	0x65, 0x72, 0x6b, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x2b, 0x2e, 0x62, 0x61, 0x6e, 0x64, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x6f, 0x72,
	0x61, 0x63, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x61,
	0x64, 0x65, 0x72, 0x4d, 0x65, 0x72, 0x6b, 0x6c, 0x65, 0x50, 0x61, 0x72, 0x74, 0x73, 0x42, 0x04,
	0xc8, 0xde, 0x1f, 0x00, 0x52, 0x16, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x61, 0x64, 0x65,
	0x72, 0x4d, 0x65, 0x72, 0x6b, 0x6c, 0x65, 0x50, 0x61, 0x72, 0x74, 0x73, 0x12, 0x69, 0x0a, 0x18,
	0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x5f, 0x76,
	0x6f, 0x74, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a,
	0x2e, 0x62, 0x61, 0x6e, 0x64, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x6f, 0x72, 0x61, 0x63, 0x6c,
	0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x45, 0x6e, 0x63, 0x6f, 0x64,
	0x65, 0x64, 0x56, 0x6f, 0x74, 0x65, 0x50, 0x61, 0x72, 0x74, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00,
	0x52, 0x15, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x56,
	0x6f, 0x74, 0x65, 0x50, 0x61, 0x72, 0x74, 0x12, 0x46, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x61,
	0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x62, 0x61,
	0x6e, 0x64, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x2e, 0x76,
	0x31, 0x2e, 0x54, 0x4d, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x42, 0x04, 0xc8,
	0xde, 0x1f, 0x00, 0x52, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x22,
	0xb8, 0x06, 0x0a, 0x0f, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x50, 0x72,
	0x6f, 0x6f, 0x66, 0x12, 0x80, 0x01, 0x0a, 0x16, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x5f, 0x69,
	0x61, 0x76, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x0c, 0x42, 0x4b, 0xe2, 0xde, 0x1f, 0x13, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65,
	0x49, 0x41, 0x56, 0x4c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x48, 0x61, 0x73, 0x68, 0xfa, 0xde, 0x1f,
	0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x6d, 0x65,
	0x74, 0x62, 0x66, 0x74, 0x2f, 0x63, 0x6f, 0x6d, 0x65, 0x74, 0x62, 0x66, 0x74, 0x2f, 0x6c, 0x69,
	0x62, 0x73, 0x2f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x2e, 0x48, 0x65, 0x78, 0x42, 0x79, 0x74, 0x65,
	0x73, 0x52, 0x13, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x49, 0x61, 0x76, 0x6c, 0x53, 0x74, 0x61,
	0x74, 0x65, 0x48, 0x61, 0x73, 0x68, 0x12, 0x69, 0x0a, 0x16, 0x6d, 0x69, 0x6e, 0x74, 0x5f, 0x73,
	0x74, 0x6f, 0x72, 0x65, 0x5f, 0x6d, 0x65, 0x72, 0x6b, 0x6c, 0x65, 0x5f, 0x68, 0x61, 0x73, 0x68,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x34, 0xfa, 0xde, 0x1f, 0x30, 0x67, 0x69, 0x74, 0x68,
	0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x6d, 0x65, 0x74, 0x62, 0x66, 0x74, 0x2f,
	0x63, 0x6f, 0x6d, 0x65, 0x74, 0x62, 0x66, 0x74, 0x2f, 0x6c, 0x69, 0x62, 0x73, 0x2f, 0x62, 0x79,
	0x74, 0x65, 0x73, 0x2e, 0x48, 0x65, 0x78, 0x42, 0x79, 0x74, 0x65, 0x73, 0x52, 0x13, 0x6d, 0x69,
	0x6e, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x4d, 0x65, 0x72, 0x6b, 0x6c, 0x65, 0x48, 0x61, 0x73,
	0x68, 0x12, 0x83, 0x01, 0x0a, 0x24, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x5f, 0x74, 0x6f, 0x5f,
	0x72, 0x65, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x5f, 0x6d,
	0x65, 0x72, 0x6b, 0x6c, 0x65, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c,
	0x42, 0x34, 0xfa, 0xde, 0x1f, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d,
	0x2f, 0x63, 0x6f, 0x6d, 0x65, 0x74, 0x62, 0x66, 0x74, 0x2f, 0x63, 0x6f, 0x6d, 0x65, 0x74, 0x62,
	0x66, 0x74, 0x2f, 0x6c, 0x69, 0x62, 0x73, 0x2f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x2e, 0x48, 0x65,
	0x78, 0x42, 0x79, 0x74, 0x65, 0x73, 0x52, 0x1f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x54, 0x6f,
	0x52, 0x65, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x4d, 0x65, 0x72,
	0x6b, 0x6c, 0x65, 0x48, 0x61, 0x73, 0x68, 0x12, 0x8f, 0x01, 0x0a, 0x2a, 0x72, 0x6f, 0x6c, 0x6c,
	0x69, 0x6e, 0x67, 0x73, 0x65, 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73,
	0x66, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x5f, 0x6d, 0x65, 0x72, 0x6b, 0x6c,
	0x65, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x34, 0xfa, 0xde,
	0x1f, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x6d,
	0x65, 0x74, 0x62, 0x66, 0x74, 0x2f, 0x63, 0x6f, 0x6d, 0x65, 0x74, 0x62, 0x66, 0x74, 0x2f, 0x6c,
	0x69, 0x62, 0x73, 0x2f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x2e, 0x48, 0x65, 0x78, 0x42, 0x79, 0x74,
	0x65, 0x73, 0x52, 0x25, 0x72, 0x6f, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x73, 0x65, 0x65, 0x64, 0x54,
	0x6f, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x4d,
	0x65, 0x72, 0x6b, 0x6c, 0x65, 0x48, 0x61, 0x73, 0x68, 0x12, 0x9d, 0x01, 0x0a, 0x21, 0x74, 0x73,
	0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x73, 0x74, 0x6f,
	0x72, 0x65, 0x73, 0x5f, 0x6d, 0x65, 0x72, 0x6b, 0x6c, 0x65, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18,
	0x05, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x54, 0xe2, 0xde, 0x1f, 0x1c, 0x54, 0x53, 0x53, 0x54, 0x6f,
	0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x4d, 0x65, 0x72,
	0x6b, 0x6c, 0x65, 0x48, 0x61, 0x73, 0x68, 0xfa, 0xde, 0x1f, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75,
	0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x6d, 0x65, 0x74, 0x62, 0x66, 0x74, 0x2f, 0x63,
	0x6f, 0x6d, 0x65, 0x74, 0x62, 0x66, 0x74, 0x2f, 0x6c, 0x69, 0x62, 0x73, 0x2f, 0x62, 0x79, 0x74,
	0x65, 0x73, 0x2e, 0x48, 0x65, 0x78, 0x42, 0x79, 0x74, 0x65, 0x73, 0x52, 0x1c, 0x74, 0x73, 0x73,
	0x54, 0x6f, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x4d,
	0x65, 0x72, 0x6b, 0x6c, 0x65, 0x48, 0x61, 0x73, 0x68, 0x12, 0x7f, 0x0a, 0x22, 0x61, 0x75, 0x74,
	0x68, 0x5f, 0x74, 0x6f, 0x5f, 0x69, 0x63, 0x61, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x6f,
	0x72, 0x65, 0x73, 0x5f, 0x6d, 0x65, 0x72, 0x6b, 0x6c, 0x65, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18,
	0x06, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x34, 0xfa, 0xde, 0x1f, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75,
	0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x6d, 0x65, 0x74, 0x62, 0x66, 0x74, 0x2f, 0x63,
	0x6f, 0x6d, 0x65, 0x74, 0x62, 0x66, 0x74, 0x2f, 0x6c, 0x69, 0x62, 0x73, 0x2f, 0x62, 0x79, 0x74,
	0x65, 0x73, 0x2e, 0x48, 0x65, 0x78, 0x42, 0x79, 0x74, 0x65, 0x73, 0x52, 0x1d, 0x61, 0x75, 0x74,
	0x68, 0x54, 0x6f, 0x49, 0x63, 0x61, 0x68, 0x6f, 0x73, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x73,
	0x4d, 0x65, 0x72, 0x6b, 0x6c, 0x65, 0x48, 0x61, 0x73, 0x68, 0x22, 0xb6, 0x05, 0x0a, 0x16, 0x42,
	0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x65, 0x72, 0x6b, 0x6c, 0x65,
	0x50, 0x61, 0x72, 0x74, 0x73, 0x12, 0x6e, 0x0a, 0x19, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
	0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x5f, 0x68, 0x61,
	0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x34, 0xfa, 0xde, 0x1f, 0x30, 0x67, 0x69,
	0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x6d, 0x65, 0x74, 0x62, 0x66,
	0x74, 0x2f, 0x63, 0x6f, 0x6d, 0x65, 0x74, 0x62, 0x66, 0x74, 0x2f, 0x6c, 0x69, 0x62, 0x73, 0x2f,
	0x62, 0x79, 0x74, 0x65, 0x73, 0x2e, 0x48, 0x65, 0x78, 0x42, 0x79, 0x74, 0x65, 0x73, 0x52, 0x15,
	0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x64, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x49,
	0x64, 0x48, 0x61, 0x73, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1f, 0x0a,
	0x0b, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x04, 0x52, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x12, 0x28,
	0x0a, 0x10, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6e, 0x61, 0x6e, 0x6f, 0x5f, 0x73, 0x65, 0x63, 0x6f,
	0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x74, 0x69, 0x6d, 0x65, 0x4e, 0x61,
	0x6e, 0x6f, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x12, 0x6a, 0x0a, 0x17, 0x6c, 0x61, 0x73, 0x74,
	0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x69, 0x64, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x6f, 0x74,
	0x68, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x34, 0xfa, 0xde, 0x1f, 0x30, 0x67,
	0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x6d, 0x65, 0x74, 0x62,
	0x66, 0x74, 0x2f, 0x63, 0x6f, 0x6d, 0x65, 0x74, 0x62, 0x66, 0x74, 0x2f, 0x6c, 0x69, 0x62, 0x73,
	0x2f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x2e, 0x48, 0x65, 0x78, 0x42, 0x79, 0x74, 0x65, 0x73, 0x52,
	0x13, 0x6c, 0x61, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x64, 0x41, 0x6e, 0x64, 0x4f,
	0x74, 0x68, 0x65, 0x72, 0x12, 0x87, 0x01, 0x0a, 0x26, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x76, 0x61,
	0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x61, 0x6e, 0x64,
	0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18,
	0x06, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x34, 0xfa, 0xde, 0x1f, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75,
	0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x6d, 0x65, 0x74, 0x62, 0x66, 0x74, 0x2f, 0x63,
	0x6f, 0x6d, 0x65, 0x74, 0x62, 0x66, 0x74, 0x2f, 0x6c, 0x69, 0x62, 0x73, 0x2f, 0x62, 0x79, 0x74,
	0x65, 0x73, 0x2e, 0x48, 0x65, 0x78, 0x42, 0x79, 0x74, 0x65, 0x73, 0x52, 0x21, 0x6e, 0x65, 0x78,
	0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x48, 0x61, 0x73, 0x68, 0x41, 0x6e,
	0x64, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x48, 0x61, 0x73, 0x68, 0x12, 0x60,
	0x0a, 0x11, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x5f, 0x68,
	0x61, 0x73, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x34, 0xfa, 0xde, 0x1f, 0x30, 0x67,
	0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x6d, 0x65, 0x74, 0x62,
	0x66, 0x74, 0x2f, 0x63, 0x6f, 0x6d, 0x65, 0x74, 0x62, 0x66, 0x74, 0x2f, 0x6c, 0x69, 0x62, 0x73,
	0x2f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x2e, 0x48, 0x65, 0x78, 0x42, 0x79, 0x74, 0x65, 0x73, 0x52,
	0x0f, 0x6c, 0x61, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x48, 0x61, 0x73, 0x68,
	0x12, 0x71, 0x0a, 0x1a, 0x65, 0x76, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x61, 0x6e, 0x64,
	0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x08,
	0x20, 0x01, 0x28, 0x0c, 0x42, 0x34, 0xfa, 0xde, 0x1f, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62,
	0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x6d, 0x65, 0x74, 0x62, 0x66, 0x74, 0x2f, 0x63, 0x6f,
	0x6d, 0x65, 0x74, 0x62, 0x66, 0x74, 0x2f, 0x6c, 0x69, 0x62, 0x73, 0x2f, 0x62, 0x79, 0x74, 0x65,
	0x73, 0x2e, 0x48, 0x65, 0x78, 0x42, 0x79, 0x74, 0x65, 0x73, 0x52, 0x17, 0x65, 0x76, 0x69, 0x64,
	0x65, 0x6e, 0x63, 0x65, 0x41, 0x6e, 0x64, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x48,
	0x61, 0x73, 0x68, 0x22, 0xdf, 0x01, 0x0a, 0x15, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x45, 0x6e,
	0x63, 0x6f, 0x64, 0x65, 0x64, 0x56, 0x6f, 0x74, 0x65, 0x50, 0x61, 0x72, 0x74, 0x12, 0x62, 0x0a,
	0x12, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x72, 0x65,
	0x66, 0x69, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x34, 0xfa, 0xde, 0x1f, 0x30, 0x67,
	0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x6d, 0x65, 0x74, 0x62,
	0x66, 0x74, 0x2f, 0x63, 0x6f, 0x6d, 0x65, 0x74, 0x62, 0x66, 0x74, 0x2f, 0x6c, 0x69, 0x62, 0x73,
	0x2f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x2e, 0x48, 0x65, 0x78, 0x42, 0x79, 0x74, 0x65, 0x73, 0x52,
	0x10, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x65, 0x66, 0x69,
	0x78, 0x12, 0x62, 0x0a, 0x12, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x61,
	0x5f, 0x73, 0x75, 0x66, 0x66, 0x69, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x34, 0xfa,
	0xde, 0x1f, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f,
	0x6d, 0x65, 0x74, 0x62, 0x66, 0x74, 0x2f, 0x63, 0x6f, 0x6d, 0x65, 0x74, 0x62, 0x66, 0x74, 0x2f,
	0x6c, 0x69, 0x62, 0x73, 0x2f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x2e, 0x48, 0x65, 0x78, 0x42, 0x79,
	0x74, 0x65, 0x73, 0x52, 0x10, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x53,
	0x75, 0x66, 0x66, 0x69, 0x78, 0x22, 0x86, 0x02, 0x0a, 0x0b, 0x54, 0x4d, 0x53, 0x69, 0x67, 0x6e,
	0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x42, 0x0a, 0x01, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c,
	0x42, 0x34, 0xfa, 0xde, 0x1f, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d,
	0x2f, 0x63, 0x6f, 0x6d, 0x65, 0x74, 0x62, 0x66, 0x74, 0x2f, 0x63, 0x6f, 0x6d, 0x65, 0x74, 0x62,
	0x66, 0x74, 0x2f, 0x6c, 0x69, 0x62, 0x73, 0x2f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x2e, 0x48, 0x65,
	0x78, 0x42, 0x79, 0x74, 0x65, 0x73, 0x52, 0x01, 0x72, 0x12, 0x42, 0x0a, 0x01, 0x73, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x0c, 0x42, 0x34, 0xfa, 0xde, 0x1f, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62,
	0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x6d, 0x65, 0x74, 0x62, 0x66, 0x74, 0x2f, 0x63, 0x6f,
	0x6d, 0x65, 0x74, 0x62, 0x66, 0x74, 0x2f, 0x6c, 0x69, 0x62, 0x73, 0x2f, 0x62, 0x79, 0x74, 0x65,
	0x73, 0x2e, 0x48, 0x65, 0x78, 0x42, 0x79, 0x74, 0x65, 0x73, 0x52, 0x01, 0x73, 0x12, 0x0c, 0x0a,
	0x01, 0x76, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x01, 0x76, 0x12, 0x61, 0x0a, 0x11, 0x65,
	0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
	0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x34, 0xfa, 0xde, 0x1f, 0x30, 0x67, 0x69, 0x74, 0x68,
	0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x6d, 0x65, 0x74, 0x62, 0x66, 0x74, 0x2f,
	0x63, 0x6f, 0x6d, 0x65, 0x74, 0x62, 0x66, 0x74, 0x2f, 0x6c, 0x69, 0x62, 0x73, 0x2f, 0x62, 0x79,
	0x74, 0x65, 0x73, 0x2e, 0x48, 0x65, 0x78, 0x42, 0x79, 0x74, 0x65, 0x73, 0x52, 0x10, 0x65, 0x6e,
	0x63, 0x6f, 0x64, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x92,
	0x01, 0x0a, 0x12, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74,
	0x50, 0x72, 0x6f, 0x6f, 0x66, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x76,
	0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x76, 0x65,
	0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x4c, 0x0a, 0x0c, 0x6d, 0x65, 0x72, 0x6b, 0x6c, 0x65, 0x5f,
	0x70, 0x61, 0x74, 0x68, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x62, 0x61,
	0x6e, 0x64, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x2e, 0x76,
	0x31, 0x2e, 0x49, 0x41, 0x56, 0x4c, 0x4d, 0x65, 0x72, 0x6b, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68,
	0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x0b, 0x6d, 0x65, 0x72, 0x6b, 0x6c, 0x65, 0x50, 0x61,
	0x74, 0x68, 0x73, 0x32, 0xbc, 0x03, 0x0a, 0x07, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12,
	0x7f, 0x0a, 0x05, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x12, 0x21, 0x2e, 0x62, 0x61, 0x6e, 0x64, 0x2e,
	0x62, 0x61, 0x73, 0x65, 0x2e, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50,
	0x72, 0x6f, 0x6f, 0x66, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x62, 0x61,
	0x6e, 0x64, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x2e, 0x76,
	0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
	0x2f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x12, 0x27, 0x2f, 0x62, 0x61, 0x6e, 0x64, 0x63, 0x68,
	0x61, 0x69, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x2f, 0x70, 0x72,
	0x6f, 0x6f, 0x66, 0x2f, 0x7b, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x7d,
	0x12, 0x87, 0x01, 0x0a, 0x0a, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x12,
	0x26, 0x2e, 0x62, 0x61, 0x6e, 0x64, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x6f, 0x72, 0x61, 0x63,
	0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x50, 0x72, 0x6f, 0x6f, 0x66,
	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x62, 0x61, 0x6e, 0x64, 0x2e, 0x62,
	0x61, 0x73, 0x65, 0x2e, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x75,
	0x6c, 0x74, 0x69, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
	0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x12, 0x20, 0x2f, 0x62, 0x61, 0x6e, 0x64, 0x63,
	0x68, 0x61, 0x69, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x2f, 0x6d,
	0x75, 0x6c, 0x74, 0x69, 0x5f, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x12, 0xa5, 0x01, 0x0a, 0x11, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x6f, 0x66,
	0x12, 0x2d, 0x2e, 0x62, 0x61, 0x6e, 0x64, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x6f, 0x72, 0x61,
	0x63, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 0x6f,
	0x75, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
	0x2e, 0x2e, 0x62, 0x61, 0x6e, 0x64, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x6f, 0x72, 0x61, 0x63,
	0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x75,
	0x6e, 0x74, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
	0x31, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2b, 0x12, 0x29, 0x2f, 0x62, 0x61, 0x6e, 0x64, 0x63, 0x68,
	0x61, 0x69, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x2f, 0x72, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f,
	0x6f, 0x66, 0x42, 0xd7, 0x01, 0x0a, 0x17, 0x63, 0x6f, 0x6d, 0x2e, 0x62, 0x61, 0x6e, 0x64, 0x2e,
	0x62, 0x61, 0x73, 0x65, 0x2e, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x0a,
	0x50, 0x72, 0x6f, 0x6f, 0x66, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x41, 0x67, 0x69,
	0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x62, 0x61, 0x6e, 0x64, 0x70, 0x72, 0x6f,
	0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x2f, 0x76, 0x33, 0x2f, 0x61,
	0x70, 0x69, 0x2f, 0x62, 0x61, 0x6e, 0x64, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x6f, 0x72, 0x61,
	0x63, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x76, 0x31, 0xa2,
	0x02, 0x03, 0x42, 0x42, 0x4f, 0xaa, 0x02, 0x13, 0x42, 0x61, 0x6e, 0x64, 0x2e, 0x42, 0x61, 0x73,
	0x65, 0x2e, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x13, 0x42, 0x61,
	0x6e, 0x64, 0x5c, 0x42, 0x61, 0x73, 0x65, 0x5c, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x5c, 0x56,
	0x31, 0xe2, 0x02, 0x1f, 0x42, 0x61, 0x6e, 0x64, 0x5c, 0x42, 0x61, 0x73, 0x65, 0x5c, 0x4f, 0x72,
	0x61, 0x63, 0x6c, 0x65, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64,
	0x61, 0x74, 0x61, 0xea, 0x02, 0x16, 0x42, 0x61, 0x6e, 0x64, 0x3a, 0x3a, 0x42, 0x61, 0x73, 0x65,
	0x3a, 0x3a, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72,
	0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_band_base_oracle_v1_proof_proto_rawDescOnce sync.Once
	file_band_base_oracle_v1_proof_proto_rawDescData = file_band_base_oracle_v1_proof_proto_rawDesc
)

func file_band_base_oracle_v1_proof_proto_rawDescGZIP() []byte {
	file_band_base_oracle_v1_proof_proto_rawDescOnce.Do(func() {
		file_band_base_oracle_v1_proof_proto_rawDescData = protoimpl.X.CompressGZIP(file_band_base_oracle_v1_proof_proto_rawDescData)
	})
	return file_band_base_oracle_v1_proof_proto_rawDescData
}

var file_band_base_oracle_v1_proof_proto_msgTypes = make([]protoimpl.MessageInfo, 20)
var file_band_base_oracle_v1_proof_proto_goTypes = []interface{}{
	(*ProofRequest)(nil),              // 0: band.base.oracle.v1.ProofRequest
	(*ProofResponse)(nil),             // 1: band.base.oracle.v1.ProofResponse
	(*MultiProofRequest)(nil),         // 2: band.base.oracle.v1.MultiProofRequest
	(*MultiProofResponse)(nil),        // 3: band.base.oracle.v1.MultiProofResponse
	(*RequestCountProofRequest)(nil),  // 4: band.base.oracle.v1.RequestCountProofRequest
	(*RequestCountProofResponse)(nil), // 5: band.base.oracle.v1.RequestCountProofResponse
	(*SingleProofResult)(nil),         // 6: band.base.oracle.v1.SingleProofResult
	(*MultiProofResult)(nil),          // 7: band.base.oracle.v1.MultiProofResult
	(*CountProofResult)(nil),          // 8: band.base.oracle.v1.CountProofResult
	(*SingleProof)(nil),               // 9: band.base.oracle.v1.SingleProof
	(*MultiProof)(nil),                // 10: band.base.oracle.v1.MultiProof
	(*CountProof)(nil),                // 11: band.base.oracle.v1.CountProof
	(*OracleDataProof)(nil),           // 12: band.base.oracle.v1.OracleDataProof
	(*IAVLMerklePath)(nil),            // 13: band.base.oracle.v1.IAVLMerklePath
	(*BlockRelayProof)(nil),           // 14: band.base.oracle.v1.BlockRelayProof
	(*MultiStoreProof)(nil),           // 15: band.base.oracle.v1.MultiStoreProof
	(*BlockHeaderMerkleParts)(nil),    // 16: band.base.oracle.v1.BlockHeaderMerkleParts
	(*CommonEncodedVotePart)(nil),     // 17: band.base.oracle.v1.CommonEncodedVotePart
	(*TMSignature)(nil),               // 18: band.base.oracle.v1.TMSignature
	(*RequestsCountProof)(nil),        // 19: band.base.oracle.v1.RequestsCountProof
	(*v1.Result)(nil),                 // 20: band.oracle.v1.Result
}
var file_band_base_oracle_v1_proof_proto_depIdxs = []int32{
	6,  // 0: band.base.oracle.v1.ProofResponse.result:type_name -> band.base.oracle.v1.SingleProofResult
	7,  // 1: band.base.oracle.v1.MultiProofResponse.result:type_name -> band.base.oracle.v1.MultiProofResult
	8,  // 2: band.base.oracle.v1.RequestCountProofResponse.result:type_name -> band.base.oracle.v1.CountProofResult
	9,  // 3: band.base.oracle.v1.SingleProofResult.proof:type_name -> band.base.oracle.v1.SingleProof
	10, // 4: band.base.oracle.v1.MultiProofResult.proof:type_name -> band.base.oracle.v1.MultiProof
	11, // 5: band.base.oracle.v1.CountProofResult.proof:type_name -> band.base.oracle.v1.CountProof
	12, // 6: band.base.oracle.v1.SingleProof.oracle_data_proof:type_name -> band.base.oracle.v1.OracleDataProof
	14, // 7: band.base.oracle.v1.SingleProof.block_relay_proof:type_name -> band.base.oracle.v1.BlockRelayProof
	12, // 8: band.base.oracle.v1.MultiProof.oracle_data_multi_proof:type_name -> band.base.oracle.v1.OracleDataProof
	14, // 9: band.base.oracle.v1.MultiProof.block_relay_proof:type_name -> band.base.oracle.v1.BlockRelayProof
	19, // 10: band.base.oracle.v1.CountProof.count_proof:type_name -> band.base.oracle.v1.RequestsCountProof
	14, // 11: band.base.oracle.v1.CountProof.block_relay_proof:type_name -> band.base.oracle.v1.BlockRelayProof
	20, // 12: band.base.oracle.v1.OracleDataProof.result:type_name -> band.oracle.v1.Result
	13, // 13: band.base.oracle.v1.OracleDataProof.merkle_paths:type_name -> band.base.oracle.v1.IAVLMerklePath
	15, // 14: band.base.oracle.v1.BlockRelayProof.multi_store_proof:type_name -> band.base.oracle.v1.MultiStoreProof
	16, // 15: band.base.oracle.v1.BlockRelayProof.block_header_merkle_parts:type_name -> band.base.oracle.v1.BlockHeaderMerkleParts
	17, // 16: band.base.oracle.v1.BlockRelayProof.common_encoded_vote_part:type_name -> band.base.oracle.v1.CommonEncodedVotePart
	18, // 17: band.base.oracle.v1.BlockRelayProof.signatures:type_name -> band.base.oracle.v1.TMSignature
	13, // 18: band.base.oracle.v1.RequestsCountProof.merkle_paths:type_name -> band.base.oracle.v1.IAVLMerklePath
	0,  // 19: band.base.oracle.v1.Service.Proof:input_type -> band.base.oracle.v1.ProofRequest
	2,  // 20: band.base.oracle.v1.Service.MultiProof:input_type -> band.base.oracle.v1.MultiProofRequest
	4,  // 21: band.base.oracle.v1.Service.RequestCountProof:input_type -> band.base.oracle.v1.RequestCountProofRequest
	1,  // 22: band.base.oracle.v1.Service.Proof:output_type -> band.base.oracle.v1.ProofResponse
	3,  // 23: band.base.oracle.v1.Service.MultiProof:output_type -> band.base.oracle.v1.MultiProofResponse
	5,  // 24: band.base.oracle.v1.Service.RequestCountProof:output_type -> band.base.oracle.v1.RequestCountProofResponse
	22, // [22:25] is the sub-list for method output_type
	19, // [19:22] is the sub-list for method input_type
	19, // [19:19] is the sub-list for extension type_name
	19, // [19:19] is the sub-list for extension extendee
	0,  // [0:19] is the sub-list for field type_name
}

func init() { file_band_base_oracle_v1_proof_proto_init() }
func file_band_base_oracle_v1_proof_proto_init() {
	if File_band_base_oracle_v1_proof_proto != nil {
		return
	}
	if !protoimpl.UnsafeEnabled {
		file_band_base_oracle_v1_proof_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ProofRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_band_base_oracle_v1_proof_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ProofResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_band_base_oracle_v1_proof_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MultiProofRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_band_base_oracle_v1_proof_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MultiProofResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_band_base_oracle_v1_proof_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*RequestCountProofRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_band_base_oracle_v1_proof_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*RequestCountProofResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_band_base_oracle_v1_proof_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SingleProofResult); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_band_base_oracle_v1_proof_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MultiProofResult); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_band_base_oracle_v1_proof_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CountProofResult); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_band_base_oracle_v1_proof_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SingleProof); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_band_base_oracle_v1_proof_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MultiProof); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_band_base_oracle_v1_proof_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CountProof); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_band_base_oracle_v1_proof_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*OracleDataProof); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_band_base_oracle_v1_proof_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*IAVLMerklePath); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_band_base_oracle_v1_proof_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*BlockRelayProof); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_band_base_oracle_v1_proof_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MultiStoreProof); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_band_base_oracle_v1_proof_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*BlockHeaderMerkleParts); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_band_base_oracle_v1_proof_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CommonEncodedVotePart); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_band_base_oracle_v1_proof_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TMSignature); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_band_base_oracle_v1_proof_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*RequestsCountProof); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_band_base_oracle_v1_proof_proto_rawDesc,
			NumEnums:      0,
			NumMessages:   20,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_band_base_oracle_v1_proof_proto_goTypes,
		DependencyIndexes: file_band_base_oracle_v1_proof_proto_depIdxs,
		MessageInfos:      file_band_base_oracle_v1_proof_proto_msgTypes,
	}.Build()
	File_band_base_oracle_v1_proof_proto = out.File
	file_band_base_oracle_v1_proof_proto_rawDesc = nil
	file_band_base_oracle_v1_proof_proto_goTypes = nil
	file_band_base_oracle_v1_proof_proto_depIdxs = nil
}
