From ed9f50de73222b8a2154366ce9a72c95aa2f97d8 Mon Sep 17 00:00:00 2001 From: ilija42 <57732589+ilija42@users.noreply.github.com> Date: Tue, 10 Sep 2024 17:40:10 +0200 Subject: [PATCH] Rename Chain Reader to Contract Reader (#759) Co-authored-by: Jordan Krage --- pkg/loop/adapters/relay/relay_test.go | 4 +- pkg/loop/internal/README.md | 4 +- pkg/loop/internal/pb/chain_reader_grpc.pb.go | 258 ------ ...ain_reader.pb.go => contract_reader.pb.go} | 845 +++++++++--------- ...ain_reader.proto => contract_reader.proto} | 30 +- .../internal/pb/contract_reader_grpc.pb.go | 258 ++++++ pkg/loop/internal/pb/generate.go | 2 +- .../chainwriter/chain_writer.go | 16 +- .../{chainreader => contractreader}/codec.go | 2 +- .../codec_fuzz_test.go | 4 +- .../codec_test.go | 4 +- .../contract_reader.go} | 12 +- .../contract_reader_test.go} | 206 ++--- .../helper_test.go | 2 +- .../test/codec.go | 0 .../test/codec_loop_tester.go | 6 +- .../test/contract_reader.go} | 34 +- .../test/contract_reader_loop_tester.go} | 30 +- .../test/loop_server_tester.go | 0 .../ext/ccip/test/commit_provider.go | 4 +- .../ext/ccip/test/exec_provider.go | 4 +- .../pluginprovider/ext/median/median.go | 14 +- .../pluginprovider/ext/median/test/median.go | 12 +- .../pluginprovider/ext/median/test/test.go | 4 +- .../pluginprovider/ext/mercury/mercury.go | 4 +- .../ext/mercury/test/provider.go | 4 +- .../relayer/pluginprovider/ocr2/config.go | 8 +- .../pluginprovider/ocr2/plugin_provider.go | 12 +- .../ocr2/test/plugin_provider.go | 16 +- .../relayer/pluginprovider/ocr2/test/test.go | 4 +- pkg/loop/internal/relayer/relayer.go | 8 +- pkg/loop/internal/relayer/test/relayer.go | 6 +- .../grpc_provider_server_test.go | 4 +- .../standalone_provider_test.go | 4 +- pkg/loop/internal/relayerset/relayer.go | 4 +- pkg/loop/internal/relayerset/server.go | 8 +- pkg/loop/internal/test/types/interfaces.go | 4 +- pkg/loop/testutils/utils.go | 2 +- .../{chain_reader.go => contract_reader.go} | 15 +- .../chain_components_interface_tests.go | 42 +- pkg/types/provider.go | 2 +- pkg/types/query/query.go | 2 +- 42 files changed, 951 insertions(+), 953 deletions(-) delete mode 100644 pkg/loop/internal/pb/chain_reader_grpc.pb.go rename pkg/loop/internal/pb/{chain_reader.pb.go => contract_reader.pb.go} (63%) rename pkg/loop/internal/pb/{chain_reader.proto => contract_reader.proto} (84%) create mode 100644 pkg/loop/internal/pb/contract_reader_grpc.pb.go rename pkg/loop/internal/relayer/pluginprovider/{chainreader => contractreader}/codec.go (99%) rename pkg/loop/internal/relayer/pluginprovider/{chainreader => contractreader}/codec_fuzz_test.go (79%) rename pkg/loop/internal/relayer/pluginprovider/{chainreader => contractreader}/codec_test.go (98%) rename pkg/loop/internal/relayer/pluginprovider/{chainreader/chain_reader.go => contractreader/contract_reader.go} (99%) rename pkg/loop/internal/relayer/pluginprovider/{chainreader/chain_reader_test.go => contractreader/contract_reader_test.go} (63%) rename pkg/loop/internal/relayer/pluginprovider/{chainreader => contractreader}/helper_test.go (99%) rename pkg/loop/internal/relayer/pluginprovider/{chainreader => contractreader}/test/codec.go (100%) rename pkg/loop/internal/relayer/pluginprovider/{chainreader => contractreader}/test/codec_loop_tester.go (89%) rename pkg/loop/internal/relayer/pluginprovider/{chainreader/test/chain_reader.go => contractreader/test/contract_reader.go} (62%) rename pkg/loop/internal/relayer/pluginprovider/{chainreader/test/chain_reader_loop_tester.go => contractreader/test/contract_reader_loop_tester.go} (60%) rename pkg/loop/internal/relayer/pluginprovider/{chainreader => contractreader}/test/loop_server_tester.go (100%) rename pkg/types/{chain_reader.go => contract_reader.go} (87%) diff --git a/pkg/loop/adapters/relay/relay_test.go b/pkg/loop/adapters/relay/relay_test.go index 23e84e488..8b8420066 100644 --- a/pkg/loop/adapters/relay/relay_test.go +++ b/pkg/loop/adapters/relay/relay_test.go @@ -49,8 +49,8 @@ func (s staticMedianProvider) ReportCodec() median.ReportCodec { return nil } -// ChainReader implements types.MedianProvider. -func (s staticMedianProvider) ChainReader() types.ContractReader { +// ContractReader implements types.MedianProvider. +func (s staticMedianProvider) ContractReader() types.ContractReader { return nil } diff --git a/pkg/loop/internal/README.md b/pkg/loop/internal/README.md index 3cfac5d72..15d618955 100644 --- a/pkg/loop/internal/README.md +++ b/pkg/loop/internal/README.md @@ -49,11 +49,11 @@ for details ensuring backward compatibility of protobufs. ### Relayer abstraction Development -There are three kinds of abstractions with the relayer: common components, such as the `chainreader`, ocr-specific shared components, such as `offchain digester` and the ocr-specific, product-specific components, known as `Providers`. Note that the line between the latter two categories is blurry, ocr-specific shared component should be thought as component that have a well defined and reasonable default value; custom `Providers` clearly fall outside this domain, yet custom `Providers` may also implement OCR components that have a default implementation. +There are three kinds of abstractions with the relayer: common components, such as the `contractreader`, ocr-specific shared components, such as `offchain digester` and the ocr-specific, product-specific components, known as `Providers`. Note that the line between the latter two categories is blurry, ocr-specific shared component should be thought as component that have a well defined and reasonable default value; custom `Providers` clearly fall outside this domain, yet custom `Providers` may also implement OCR components that have a default implementation. Go to [Production abstraction Development] for more information about custom `Provider` development. -Developing common relayer components such as `chainreader` follows the same pattern as [Core node abstraction Development]. The primary difference is the package location. Instead of adding code to `chainlink-common/pkg/loop/internal/core/services` you will work in `chainlink-common/pkg/loop/internal/relayer` or `chainlink-common/pkg/loop/internal/relayer/pluginprovider` depending on the scope of your changes. +Developing common relayer components such as `contractreader` follows the same pattern as [Core node abstraction Development]. The primary difference is the package location. Instead of adding code to `chainlink-common/pkg/loop/internal/core/services` you will work in `chainlink-common/pkg/loop/internal/relayer` or `chainlink-common/pkg/loop/internal/relayer/pluginprovider` depending on the scope of your changes. ### Product abstraction Development diff --git a/pkg/loop/internal/pb/chain_reader_grpc.pb.go b/pkg/loop/internal/pb/chain_reader_grpc.pb.go deleted file mode 100644 index d9b12267e..000000000 --- a/pkg/loop/internal/pb/chain_reader_grpc.pb.go +++ /dev/null @@ -1,258 +0,0 @@ -// Code generated by protoc-gen-go-grpc. DO NOT EDIT. -// versions: -// - protoc-gen-go-grpc v1.3.0 -// - protoc v4.25.1 -// source: chain_reader.proto - -package pb - -import ( - context "context" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" - emptypb "google.golang.org/protobuf/types/known/emptypb" -) - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 - -const ( - ChainReader_GetLatestValue_FullMethodName = "/loop.ChainReader/GetLatestValue" - ChainReader_BatchGetLatestValues_FullMethodName = "/loop.ChainReader/BatchGetLatestValues" - ChainReader_QueryKey_FullMethodName = "/loop.ChainReader/QueryKey" - ChainReader_Bind_FullMethodName = "/loop.ChainReader/Bind" - ChainReader_Unbind_FullMethodName = "/loop.ChainReader/Unbind" -) - -// ChainReaderClient is the client API for ChainReader service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. -type ChainReaderClient interface { - GetLatestValue(ctx context.Context, in *GetLatestValueRequest, opts ...grpc.CallOption) (*GetLatestValueReply, error) - BatchGetLatestValues(ctx context.Context, in *BatchGetLatestValuesRequest, opts ...grpc.CallOption) (*BatchGetLatestValuesReply, error) - QueryKey(ctx context.Context, in *QueryKeyRequest, opts ...grpc.CallOption) (*QueryKeyReply, error) - Bind(ctx context.Context, in *BindRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) - Unbind(ctx context.Context, in *UnbindRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) -} - -type chainReaderClient struct { - cc grpc.ClientConnInterface -} - -func NewChainReaderClient(cc grpc.ClientConnInterface) ChainReaderClient { - return &chainReaderClient{cc} -} - -func (c *chainReaderClient) GetLatestValue(ctx context.Context, in *GetLatestValueRequest, opts ...grpc.CallOption) (*GetLatestValueReply, error) { - out := new(GetLatestValueReply) - err := c.cc.Invoke(ctx, ChainReader_GetLatestValue_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *chainReaderClient) BatchGetLatestValues(ctx context.Context, in *BatchGetLatestValuesRequest, opts ...grpc.CallOption) (*BatchGetLatestValuesReply, error) { - out := new(BatchGetLatestValuesReply) - err := c.cc.Invoke(ctx, ChainReader_BatchGetLatestValues_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *chainReaderClient) QueryKey(ctx context.Context, in *QueryKeyRequest, opts ...grpc.CallOption) (*QueryKeyReply, error) { - out := new(QueryKeyReply) - err := c.cc.Invoke(ctx, ChainReader_QueryKey_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *chainReaderClient) Bind(ctx context.Context, in *BindRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { - out := new(emptypb.Empty) - err := c.cc.Invoke(ctx, ChainReader_Bind_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *chainReaderClient) Unbind(ctx context.Context, in *UnbindRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { - out := new(emptypb.Empty) - err := c.cc.Invoke(ctx, ChainReader_Unbind_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// ChainReaderServer is the server API for ChainReader service. -// All implementations must embed UnimplementedChainReaderServer -// for forward compatibility -type ChainReaderServer interface { - GetLatestValue(context.Context, *GetLatestValueRequest) (*GetLatestValueReply, error) - BatchGetLatestValues(context.Context, *BatchGetLatestValuesRequest) (*BatchGetLatestValuesReply, error) - QueryKey(context.Context, *QueryKeyRequest) (*QueryKeyReply, error) - Bind(context.Context, *BindRequest) (*emptypb.Empty, error) - Unbind(context.Context, *UnbindRequest) (*emptypb.Empty, error) - mustEmbedUnimplementedChainReaderServer() -} - -// UnimplementedChainReaderServer must be embedded to have forward compatible implementations. -type UnimplementedChainReaderServer struct { -} - -func (UnimplementedChainReaderServer) GetLatestValue(context.Context, *GetLatestValueRequest) (*GetLatestValueReply, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetLatestValue not implemented") -} -func (UnimplementedChainReaderServer) BatchGetLatestValues(context.Context, *BatchGetLatestValuesRequest) (*BatchGetLatestValuesReply, error) { - return nil, status.Errorf(codes.Unimplemented, "method BatchGetLatestValues not implemented") -} -func (UnimplementedChainReaderServer) QueryKey(context.Context, *QueryKeyRequest) (*QueryKeyReply, error) { - return nil, status.Errorf(codes.Unimplemented, "method QueryKey not implemented") -} -func (UnimplementedChainReaderServer) Bind(context.Context, *BindRequest) (*emptypb.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method Bind not implemented") -} -func (UnimplementedChainReaderServer) Unbind(context.Context, *UnbindRequest) (*emptypb.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method Unbind not implemented") -} -func (UnimplementedChainReaderServer) mustEmbedUnimplementedChainReaderServer() {} - -// UnsafeChainReaderServer may be embedded to opt out of forward compatibility for this service. -// Use of this interface is not recommended, as added methods to ChainReaderServer will -// result in compilation errors. -type UnsafeChainReaderServer interface { - mustEmbedUnimplementedChainReaderServer() -} - -func RegisterChainReaderServer(s grpc.ServiceRegistrar, srv ChainReaderServer) { - s.RegisterService(&ChainReader_ServiceDesc, srv) -} - -func _ChainReader_GetLatestValue_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetLatestValueRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ChainReaderServer).GetLatestValue(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: ChainReader_GetLatestValue_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ChainReaderServer).GetLatestValue(ctx, req.(*GetLatestValueRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ChainReader_BatchGetLatestValues_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(BatchGetLatestValuesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ChainReaderServer).BatchGetLatestValues(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: ChainReader_BatchGetLatestValues_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ChainReaderServer).BatchGetLatestValues(ctx, req.(*BatchGetLatestValuesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ChainReader_QueryKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryKeyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ChainReaderServer).QueryKey(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: ChainReader_QueryKey_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ChainReaderServer).QueryKey(ctx, req.(*QueryKeyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ChainReader_Bind_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(BindRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ChainReaderServer).Bind(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: ChainReader_Bind_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ChainReaderServer).Bind(ctx, req.(*BindRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ChainReader_Unbind_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UnbindRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ChainReaderServer).Unbind(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: ChainReader_Unbind_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ChainReaderServer).Unbind(ctx, req.(*UnbindRequest)) - } - return interceptor(ctx, in, info, handler) -} - -// ChainReader_ServiceDesc is the grpc.ServiceDesc for ChainReader service. -// It's only intended for direct use with grpc.RegisterService, -// and not to be introspected or modified (even as a copy) -var ChainReader_ServiceDesc = grpc.ServiceDesc{ - ServiceName: "loop.ChainReader", - HandlerType: (*ChainReaderServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "GetLatestValue", - Handler: _ChainReader_GetLatestValue_Handler, - }, - { - MethodName: "BatchGetLatestValues", - Handler: _ChainReader_BatchGetLatestValues_Handler, - }, - { - MethodName: "QueryKey", - Handler: _ChainReader_QueryKey_Handler, - }, - { - MethodName: "Bind", - Handler: _ChainReader_Bind_Handler, - }, - { - MethodName: "Unbind", - Handler: _ChainReader_Unbind_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "chain_reader.proto", -} diff --git a/pkg/loop/internal/pb/chain_reader.pb.go b/pkg/loop/internal/pb/contract_reader.pb.go similarity index 63% rename from pkg/loop/internal/pb/chain_reader.pb.go rename to pkg/loop/internal/pb/contract_reader.pb.go index c84bb9fd3..83b97a7d5 100644 --- a/pkg/loop/internal/pb/chain_reader.pb.go +++ b/pkg/loop/internal/pb/contract_reader.pb.go @@ -2,7 +2,7 @@ // versions: // protoc-gen-go v1.31.0 // protoc v4.25.1 -// source: chain_reader.proto +// source: contract_reader.proto package pb @@ -63,11 +63,11 @@ func (x ComparisonOperator) String() string { } func (ComparisonOperator) Descriptor() protoreflect.EnumDescriptor { - return file_chain_reader_proto_enumTypes[0].Descriptor() + return file_contract_reader_proto_enumTypes[0].Descriptor() } func (ComparisonOperator) Type() protoreflect.EnumType { - return &file_chain_reader_proto_enumTypes[0] + return &file_contract_reader_proto_enumTypes[0] } func (x ComparisonOperator) Number() protoreflect.EnumNumber { @@ -76,7 +76,7 @@ func (x ComparisonOperator) Number() protoreflect.EnumNumber { // Deprecated: Use ComparisonOperator.Descriptor instead. func (ComparisonOperator) EnumDescriptor() ([]byte, []int) { - return file_chain_reader_proto_rawDescGZIP(), []int{0} + return file_contract_reader_proto_rawDescGZIP(), []int{0} } type BooleanOperator int32 @@ -109,11 +109,11 @@ func (x BooleanOperator) String() string { } func (BooleanOperator) Descriptor() protoreflect.EnumDescriptor { - return file_chain_reader_proto_enumTypes[1].Descriptor() + return file_contract_reader_proto_enumTypes[1].Descriptor() } func (BooleanOperator) Type() protoreflect.EnumType { - return &file_chain_reader_proto_enumTypes[1] + return &file_contract_reader_proto_enumTypes[1] } func (x BooleanOperator) Number() protoreflect.EnumNumber { @@ -122,7 +122,7 @@ func (x BooleanOperator) Number() protoreflect.EnumNumber { // Deprecated: Use BooleanOperator.Descriptor instead. func (BooleanOperator) EnumDescriptor() ([]byte, []int) { - return file_chain_reader_proto_rawDescGZIP(), []int{1} + return file_contract_reader_proto_rawDescGZIP(), []int{1} } type Confidence int32 @@ -155,11 +155,11 @@ func (x Confidence) String() string { } func (Confidence) Descriptor() protoreflect.EnumDescriptor { - return file_chain_reader_proto_enumTypes[2].Descriptor() + return file_contract_reader_proto_enumTypes[2].Descriptor() } func (Confidence) Type() protoreflect.EnumType { - return &file_chain_reader_proto_enumTypes[2] + return &file_contract_reader_proto_enumTypes[2] } func (x Confidence) Number() protoreflect.EnumNumber { @@ -168,7 +168,7 @@ func (x Confidence) Number() protoreflect.EnumNumber { // Deprecated: Use Confidence.Descriptor instead. func (Confidence) EnumDescriptor() ([]byte, []int) { - return file_chain_reader_proto_rawDescGZIP(), []int{2} + return file_contract_reader_proto_rawDescGZIP(), []int{2} } // CursorDirection defines the direction for cursor-based data fetching. @@ -202,11 +202,11 @@ func (x CursorDirection) String() string { } func (CursorDirection) Descriptor() protoreflect.EnumDescriptor { - return file_chain_reader_proto_enumTypes[3].Descriptor() + return file_contract_reader_proto_enumTypes[3].Descriptor() } func (CursorDirection) Type() protoreflect.EnumType { - return &file_chain_reader_proto_enumTypes[3] + return &file_contract_reader_proto_enumTypes[3] } func (x CursorDirection) Number() protoreflect.EnumNumber { @@ -215,7 +215,7 @@ func (x CursorDirection) Number() protoreflect.EnumNumber { // Deprecated: Use CursorDirection.Descriptor instead. func (CursorDirection) EnumDescriptor() ([]byte, []int) { - return file_chain_reader_proto_rawDescGZIP(), []int{3} + return file_contract_reader_proto_rawDescGZIP(), []int{3} } type SortDirection int32 @@ -248,11 +248,11 @@ func (x SortDirection) String() string { } func (SortDirection) Descriptor() protoreflect.EnumDescriptor { - return file_chain_reader_proto_enumTypes[4].Descriptor() + return file_contract_reader_proto_enumTypes[4].Descriptor() } func (SortDirection) Type() protoreflect.EnumType { - return &file_chain_reader_proto_enumTypes[4] + return &file_contract_reader_proto_enumTypes[4] } func (x SortDirection) Number() protoreflect.EnumNumber { @@ -261,7 +261,7 @@ func (x SortDirection) Number() protoreflect.EnumNumber { // Deprecated: Use SortDirection.Descriptor instead. func (SortDirection) EnumDescriptor() ([]byte, []int) { - return file_chain_reader_proto_rawDescGZIP(), []int{4} + return file_contract_reader_proto_rawDescGZIP(), []int{4} } type SortType int32 @@ -297,11 +297,11 @@ func (x SortType) String() string { } func (SortType) Descriptor() protoreflect.EnumDescriptor { - return file_chain_reader_proto_enumTypes[5].Descriptor() + return file_contract_reader_proto_enumTypes[5].Descriptor() } func (SortType) Type() protoreflect.EnumType { - return &file_chain_reader_proto_enumTypes[5] + return &file_contract_reader_proto_enumTypes[5] } func (x SortType) Number() protoreflect.EnumNumber { @@ -310,10 +310,10 @@ func (x SortType) Number() protoreflect.EnumNumber { // Deprecated: Use SortType.Descriptor instead. func (SortType) EnumDescriptor() ([]byte, []int) { - return file_chain_reader_proto_rawDescGZIP(), []int{5} + return file_contract_reader_proto_rawDescGZIP(), []int{5} } -// GetLatestValueRequest has arguments for [github.com/smartcontractkit/chainlink-common/pkg/types.ChainReader.GetLatestValue]. +// GetLatestValueRequest has arguments for [github.com/smartcontractkit/chainlink-common/pkg/types.ContractReader.GetLatestValue]. type GetLatestValueRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -327,7 +327,7 @@ type GetLatestValueRequest struct { func (x *GetLatestValueRequest) Reset() { *x = GetLatestValueRequest{} if protoimpl.UnsafeEnabled { - mi := &file_chain_reader_proto_msgTypes[0] + mi := &file_contract_reader_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -340,7 +340,7 @@ func (x *GetLatestValueRequest) String() string { func (*GetLatestValueRequest) ProtoMessage() {} func (x *GetLatestValueRequest) ProtoReflect() protoreflect.Message { - mi := &file_chain_reader_proto_msgTypes[0] + mi := &file_contract_reader_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -353,7 +353,7 @@ func (x *GetLatestValueRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetLatestValueRequest.ProtoReflect.Descriptor instead. func (*GetLatestValueRequest) Descriptor() ([]byte, []int) { - return file_chain_reader_proto_rawDescGZIP(), []int{0} + return file_contract_reader_proto_rawDescGZIP(), []int{0} } func (x *GetLatestValueRequest) GetReadIdentifier() string { @@ -377,7 +377,7 @@ func (x *GetLatestValueRequest) GetParams() *VersionedBytes { return nil } -// BatchGetLatestValuesRequest has arguments for [github.com/smartcontractkit/chainlink-common/pkg/types.ChainReader.BatchGetLatestValues]. +// BatchGetLatestValuesRequest has arguments for [github.com/smartcontractkit/chainlink-common/pkg/types.ContractReader.BatchGetLatestValues]. type BatchGetLatestValuesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -389,7 +389,7 @@ type BatchGetLatestValuesRequest struct { func (x *BatchGetLatestValuesRequest) Reset() { *x = BatchGetLatestValuesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_chain_reader_proto_msgTypes[1] + mi := &file_contract_reader_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -402,7 +402,7 @@ func (x *BatchGetLatestValuesRequest) String() string { func (*BatchGetLatestValuesRequest) ProtoMessage() {} func (x *BatchGetLatestValuesRequest) ProtoReflect() protoreflect.Message { - mi := &file_chain_reader_proto_msgTypes[1] + mi := &file_contract_reader_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -415,7 +415,7 @@ func (x *BatchGetLatestValuesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use BatchGetLatestValuesRequest.ProtoReflect.Descriptor instead. func (*BatchGetLatestValuesRequest) Descriptor() ([]byte, []int) { - return file_chain_reader_proto_rawDescGZIP(), []int{1} + return file_contract_reader_proto_rawDescGZIP(), []int{1} } func (x *BatchGetLatestValuesRequest) GetRequests() []*ContractBatch { @@ -425,7 +425,7 @@ func (x *BatchGetLatestValuesRequest) GetRequests() []*ContractBatch { return nil } -// QueryKeyRequest has arguments for [github.com/smartcontractkit/chainlink-common/pkg/types.ChainReader.QueryKey]. +// QueryKeyRequest has arguments for [github.com/smartcontractkit/chainlink-common/pkg/types.ContractReader.QueryKey]. type QueryKeyRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -439,7 +439,7 @@ type QueryKeyRequest struct { func (x *QueryKeyRequest) Reset() { *x = QueryKeyRequest{} if protoimpl.UnsafeEnabled { - mi := &file_chain_reader_proto_msgTypes[2] + mi := &file_contract_reader_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -452,7 +452,7 @@ func (x *QueryKeyRequest) String() string { func (*QueryKeyRequest) ProtoMessage() {} func (x *QueryKeyRequest) ProtoReflect() protoreflect.Message { - mi := &file_chain_reader_proto_msgTypes[2] + mi := &file_contract_reader_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -465,7 +465,7 @@ func (x *QueryKeyRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use QueryKeyRequest.ProtoReflect.Descriptor instead. func (*QueryKeyRequest) Descriptor() ([]byte, []int) { - return file_chain_reader_proto_rawDescGZIP(), []int{2} + return file_contract_reader_proto_rawDescGZIP(), []int{2} } func (x *QueryKeyRequest) GetContract() *BoundContract { @@ -489,7 +489,7 @@ func (x *QueryKeyRequest) GetLimitAndSort() *LimitAndSort { return nil } -// BindRequest has arguments for [github.com/smartcontractkit/chainlink-common/pkg/types.ChainReader.Bind]. +// BindRequest has arguments for [github.com/smartcontractkit/chainlink-common/pkg/types.ContractReader.Bind]. type BindRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -501,7 +501,7 @@ type BindRequest struct { func (x *BindRequest) Reset() { *x = BindRequest{} if protoimpl.UnsafeEnabled { - mi := &file_chain_reader_proto_msgTypes[3] + mi := &file_contract_reader_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -514,7 +514,7 @@ func (x *BindRequest) String() string { func (*BindRequest) ProtoMessage() {} func (x *BindRequest) ProtoReflect() protoreflect.Message { - mi := &file_chain_reader_proto_msgTypes[3] + mi := &file_contract_reader_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -527,7 +527,7 @@ func (x *BindRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use BindRequest.ProtoReflect.Descriptor instead. func (*BindRequest) Descriptor() ([]byte, []int) { - return file_chain_reader_proto_rawDescGZIP(), []int{3} + return file_contract_reader_proto_rawDescGZIP(), []int{3} } func (x *BindRequest) GetBindings() []*BoundContract { @@ -537,7 +537,7 @@ func (x *BindRequest) GetBindings() []*BoundContract { return nil } -// UnbindRequest has arguments for [github.com/smartcontractkit/chainlink-common/pkg/types.ChainReader.Unbind]. +// UnbindRequest has arguments for [github.com/smartcontractkit/chainlink-common/pkg/types.ContractReader.Unbind]. type UnbindRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -549,7 +549,7 @@ type UnbindRequest struct { func (x *UnbindRequest) Reset() { *x = UnbindRequest{} if protoimpl.UnsafeEnabled { - mi := &file_chain_reader_proto_msgTypes[4] + mi := &file_contract_reader_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -562,7 +562,7 @@ func (x *UnbindRequest) String() string { func (*UnbindRequest) ProtoMessage() {} func (x *UnbindRequest) ProtoReflect() protoreflect.Message { - mi := &file_chain_reader_proto_msgTypes[4] + mi := &file_contract_reader_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -575,7 +575,7 @@ func (x *UnbindRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UnbindRequest.ProtoReflect.Descriptor instead. func (*UnbindRequest) Descriptor() ([]byte, []int) { - return file_chain_reader_proto_rawDescGZIP(), []int{4} + return file_contract_reader_proto_rawDescGZIP(), []int{4} } func (x *UnbindRequest) GetBindings() []*BoundContract { @@ -585,7 +585,7 @@ func (x *UnbindRequest) GetBindings() []*BoundContract { return nil } -// GetLatestValueReply has return arguments for [github.com/smartcontractkit/chainlink-common/pkg/types.ChainReader.GetLatestValue]. +// GetLatestValueReply has return arguments for [github.com/smartcontractkit/chainlink-common/pkg/types.ContractReader.GetLatestValue]. type GetLatestValueReply struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -597,7 +597,7 @@ type GetLatestValueReply struct { func (x *GetLatestValueReply) Reset() { *x = GetLatestValueReply{} if protoimpl.UnsafeEnabled { - mi := &file_chain_reader_proto_msgTypes[5] + mi := &file_contract_reader_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -610,7 +610,7 @@ func (x *GetLatestValueReply) String() string { func (*GetLatestValueReply) ProtoMessage() {} func (x *GetLatestValueReply) ProtoReflect() protoreflect.Message { - mi := &file_chain_reader_proto_msgTypes[5] + mi := &file_contract_reader_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -623,7 +623,7 @@ func (x *GetLatestValueReply) ProtoReflect() protoreflect.Message { // Deprecated: Use GetLatestValueReply.ProtoReflect.Descriptor instead. func (*GetLatestValueReply) Descriptor() ([]byte, []int) { - return file_chain_reader_proto_rawDescGZIP(), []int{5} + return file_contract_reader_proto_rawDescGZIP(), []int{5} } func (x *GetLatestValueReply) GetRetVal() *VersionedBytes { @@ -633,7 +633,7 @@ func (x *GetLatestValueReply) GetRetVal() *VersionedBytes { return nil } -// BatchGetLatestValuesReply has return arguments for [github.com/smartcontractkit/chainlink-common/pkg/types.ChainReader.BatchGetLatestValues]. +// BatchGetLatestValuesReply has return arguments for [github.com/smartcontractkit/chainlink-common/pkg/types.ContractReader.BatchGetLatestValues]. type BatchGetLatestValuesReply struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -645,7 +645,7 @@ type BatchGetLatestValuesReply struct { func (x *BatchGetLatestValuesReply) Reset() { *x = BatchGetLatestValuesReply{} if protoimpl.UnsafeEnabled { - mi := &file_chain_reader_proto_msgTypes[6] + mi := &file_contract_reader_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -658,7 +658,7 @@ func (x *BatchGetLatestValuesReply) String() string { func (*BatchGetLatestValuesReply) ProtoMessage() {} func (x *BatchGetLatestValuesReply) ProtoReflect() protoreflect.Message { - mi := &file_chain_reader_proto_msgTypes[6] + mi := &file_contract_reader_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -671,7 +671,7 @@ func (x *BatchGetLatestValuesReply) ProtoReflect() protoreflect.Message { // Deprecated: Use BatchGetLatestValuesReply.ProtoReflect.Descriptor instead. func (*BatchGetLatestValuesReply) Descriptor() ([]byte, []int) { - return file_chain_reader_proto_rawDescGZIP(), []int{6} + return file_contract_reader_proto_rawDescGZIP(), []int{6} } func (x *BatchGetLatestValuesReply) GetResults() []*ContractBatchResult { @@ -681,7 +681,7 @@ func (x *BatchGetLatestValuesReply) GetResults() []*ContractBatchResult { return nil } -// QueryKeyReply has return arguments for [github.com/smartcontractkit/chainlink-common/pkg/types.ChainReader.QueryKey]. +// QueryKeyReply has return arguments for [github.com/smartcontractkit/chainlink-common/pkg/types.ContractReader.QueryKey]. type QueryKeyReply struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -693,7 +693,7 @@ type QueryKeyReply struct { func (x *QueryKeyReply) Reset() { *x = QueryKeyReply{} if protoimpl.UnsafeEnabled { - mi := &file_chain_reader_proto_msgTypes[7] + mi := &file_contract_reader_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -706,7 +706,7 @@ func (x *QueryKeyReply) String() string { func (*QueryKeyReply) ProtoMessage() {} func (x *QueryKeyReply) ProtoReflect() protoreflect.Message { - mi := &file_chain_reader_proto_msgTypes[7] + mi := &file_contract_reader_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -719,7 +719,7 @@ func (x *QueryKeyReply) ProtoReflect() protoreflect.Message { // Deprecated: Use QueryKeyReply.ProtoReflect.Descriptor instead. func (*QueryKeyReply) Descriptor() ([]byte, []int) { - return file_chain_reader_proto_rawDescGZIP(), []int{7} + return file_contract_reader_proto_rawDescGZIP(), []int{7} } func (x *QueryKeyReply) GetSequences() []*Sequence { @@ -729,7 +729,7 @@ func (x *QueryKeyReply) GetSequences() []*Sequence { return nil } -// ContractBatch is gRPC adapter for the BatchGetLatestValuesRequest struct map value [github.com/smartcontractkit/chainlink-common/pkg/types.ChainReader.BatchGetLatestValuesRequest]. +// ContractBatch is gRPC adapter for the BatchGetLatestValuesRequest struct map value [github.com/smartcontractkit/chainlink-common/pkg/types.ContractReader.BatchGetLatestValuesRequest]. type ContractBatch struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -742,7 +742,7 @@ type ContractBatch struct { func (x *ContractBatch) Reset() { *x = ContractBatch{} if protoimpl.UnsafeEnabled { - mi := &file_chain_reader_proto_msgTypes[8] + mi := &file_contract_reader_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -755,7 +755,7 @@ func (x *ContractBatch) String() string { func (*ContractBatch) ProtoMessage() {} func (x *ContractBatch) ProtoReflect() protoreflect.Message { - mi := &file_chain_reader_proto_msgTypes[8] + mi := &file_contract_reader_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -768,7 +768,7 @@ func (x *ContractBatch) ProtoReflect() protoreflect.Message { // Deprecated: Use ContractBatch.ProtoReflect.Descriptor instead. func (*ContractBatch) Descriptor() ([]byte, []int) { - return file_chain_reader_proto_rawDescGZIP(), []int{8} + return file_contract_reader_proto_rawDescGZIP(), []int{8} } func (x *ContractBatch) GetContract() *BoundContract { @@ -785,7 +785,7 @@ func (x *ContractBatch) GetReads() []*BatchRead { return nil } -// BatchCall is gRPC adapter for the GetLatestValueRequest struct [github.com/smartcontractkit/chainlink-common/pkg/types.ChainReader.BatchCall]. +// BatchCall is gRPC adapter for the GetLatestValueRequest struct [github.com/smartcontractkit/chainlink-common/pkg/types.ContractReader.BatchCall]. type BatchRead struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -799,7 +799,7 @@ type BatchRead struct { func (x *BatchRead) Reset() { *x = BatchRead{} if protoimpl.UnsafeEnabled { - mi := &file_chain_reader_proto_msgTypes[9] + mi := &file_contract_reader_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -812,7 +812,7 @@ func (x *BatchRead) String() string { func (*BatchRead) ProtoMessage() {} func (x *BatchRead) ProtoReflect() protoreflect.Message { - mi := &file_chain_reader_proto_msgTypes[9] + mi := &file_contract_reader_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -825,7 +825,7 @@ func (x *BatchRead) ProtoReflect() protoreflect.Message { // Deprecated: Use BatchRead.ProtoReflect.Descriptor instead. func (*BatchRead) Descriptor() ([]byte, []int) { - return file_chain_reader_proto_rawDescGZIP(), []int{9} + return file_contract_reader_proto_rawDescGZIP(), []int{9} } func (x *BatchRead) GetReadName() string { @@ -849,7 +849,7 @@ func (x *BatchRead) GetReturnVal() *VersionedBytes { return nil } -// ContractBatchResult is part of return arguments for [github.com/smartcontractkit/chainlink-common/pkg/types.ChainReader.BatchGetLatestValues]. +// ContractBatchResult is part of return arguments for [github.com/smartcontractkit/chainlink-common/pkg/types.ContractReader.BatchGetLatestValues]. type ContractBatchResult struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -862,7 +862,7 @@ type ContractBatchResult struct { func (x *ContractBatchResult) Reset() { *x = ContractBatchResult{} if protoimpl.UnsafeEnabled { - mi := &file_chain_reader_proto_msgTypes[10] + mi := &file_contract_reader_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -875,7 +875,7 @@ func (x *ContractBatchResult) String() string { func (*ContractBatchResult) ProtoMessage() {} func (x *ContractBatchResult) ProtoReflect() protoreflect.Message { - mi := &file_chain_reader_proto_msgTypes[10] + mi := &file_contract_reader_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -888,7 +888,7 @@ func (x *ContractBatchResult) ProtoReflect() protoreflect.Message { // Deprecated: Use ContractBatchResult.ProtoReflect.Descriptor instead. func (*ContractBatchResult) Descriptor() ([]byte, []int) { - return file_chain_reader_proto_rawDescGZIP(), []int{10} + return file_contract_reader_proto_rawDescGZIP(), []int{10} } func (x *ContractBatchResult) GetContract() *BoundContract { @@ -905,7 +905,7 @@ func (x *ContractBatchResult) GetResults() []*BatchReadResult { return nil } -// BatchCallResult is part of return arguments for [github.com/smartcontractkit/chainlink-common/pkg/types.ChainReader.BatchGetLatestValues]. +// BatchCallResult is part of return arguments for [github.com/smartcontractkit/chainlink-common/pkg/types.ContractReader.BatchGetLatestValues]. type BatchReadResult struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -919,7 +919,7 @@ type BatchReadResult struct { func (x *BatchReadResult) Reset() { *x = BatchReadResult{} if protoimpl.UnsafeEnabled { - mi := &file_chain_reader_proto_msgTypes[11] + mi := &file_contract_reader_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -932,7 +932,7 @@ func (x *BatchReadResult) String() string { func (*BatchReadResult) ProtoMessage() {} func (x *BatchReadResult) ProtoReflect() protoreflect.Message { - mi := &file_chain_reader_proto_msgTypes[11] + mi := &file_contract_reader_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -945,7 +945,7 @@ func (x *BatchReadResult) ProtoReflect() protoreflect.Message { // Deprecated: Use BatchReadResult.ProtoReflect.Descriptor instead. func (*BatchReadResult) Descriptor() ([]byte, []int) { - return file_chain_reader_proto_rawDescGZIP(), []int{11} + return file_contract_reader_proto_rawDescGZIP(), []int{11} } func (x *BatchReadResult) GetReadName() string { @@ -969,7 +969,7 @@ func (x *BatchReadResult) GetError() string { return "" } -// Head is gRPC adapter for the Head struct [github.com/smartcontractkit/chainlink-common/pkg/types.ChainReader.Head]. +// Head is gRPC adapter for the Head struct [github.com/smartcontractkit/chainlink-common/pkg/types.ContractReader.Head]. type Head struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -983,7 +983,7 @@ type Head struct { func (x *Head) Reset() { *x = Head{} if protoimpl.UnsafeEnabled { - mi := &file_chain_reader_proto_msgTypes[12] + mi := &file_contract_reader_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -996,7 +996,7 @@ func (x *Head) String() string { func (*Head) ProtoMessage() {} func (x *Head) ProtoReflect() protoreflect.Message { - mi := &file_chain_reader_proto_msgTypes[12] + mi := &file_contract_reader_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1009,7 +1009,7 @@ func (x *Head) ProtoReflect() protoreflect.Message { // Deprecated: Use Head.ProtoReflect.Descriptor instead. func (*Head) Descriptor() ([]byte, []int) { - return file_chain_reader_proto_rawDescGZIP(), []int{12} + return file_contract_reader_proto_rawDescGZIP(), []int{12} } func (x *Head) GetIdentifier() string { @@ -1033,7 +1033,7 @@ func (x *Head) GetTimestamp() uint64 { return 0 } -// Head is gRPC adapter for the Head struct [github.com/smartcontractkit/chainlink-common/pkg/types.ChainReader.Sequence]. +// Head is gRPC adapter for the Head struct [github.com/smartcontractkit/chainlink-common/pkg/types.ContractReader.Sequence]. type Sequence struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1047,7 +1047,7 @@ type Sequence struct { func (x *Sequence) Reset() { *x = Sequence{} if protoimpl.UnsafeEnabled { - mi := &file_chain_reader_proto_msgTypes[13] + mi := &file_contract_reader_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1060,7 +1060,7 @@ func (x *Sequence) String() string { func (*Sequence) ProtoMessage() {} func (x *Sequence) ProtoReflect() protoreflect.Message { - mi := &file_chain_reader_proto_msgTypes[13] + mi := &file_contract_reader_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1073,7 +1073,7 @@ func (x *Sequence) ProtoReflect() protoreflect.Message { // Deprecated: Use Sequence.ProtoReflect.Descriptor instead. func (*Sequence) Descriptor() ([]byte, []int) { - return file_chain_reader_proto_rawDescGZIP(), []int{13} + return file_contract_reader_proto_rawDescGZIP(), []int{13} } func (x *Sequence) GetSequenceCursor() string { @@ -1110,7 +1110,7 @@ type BoundContract struct { func (x *BoundContract) Reset() { *x = BoundContract{} if protoimpl.UnsafeEnabled { - mi := &file_chain_reader_proto_msgTypes[14] + mi := &file_contract_reader_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1123,7 +1123,7 @@ func (x *BoundContract) String() string { func (*BoundContract) ProtoMessage() {} func (x *BoundContract) ProtoReflect() protoreflect.Message { - mi := &file_chain_reader_proto_msgTypes[14] + mi := &file_contract_reader_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1136,7 +1136,7 @@ func (x *BoundContract) ProtoReflect() protoreflect.Message { // Deprecated: Use BoundContract.ProtoReflect.Descriptor instead. func (*BoundContract) Descriptor() ([]byte, []int) { - return file_chain_reader_proto_rawDescGZIP(), []int{14} + return file_contract_reader_proto_rawDescGZIP(), []int{14} } func (x *BoundContract) GetAddress() string { @@ -1166,7 +1166,7 @@ type QueryKeyFilter struct { func (x *QueryKeyFilter) Reset() { *x = QueryKeyFilter{} if protoimpl.UnsafeEnabled { - mi := &file_chain_reader_proto_msgTypes[15] + mi := &file_contract_reader_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1179,7 +1179,7 @@ func (x *QueryKeyFilter) String() string { func (*QueryKeyFilter) ProtoMessage() {} func (x *QueryKeyFilter) ProtoReflect() protoreflect.Message { - mi := &file_chain_reader_proto_msgTypes[15] + mi := &file_contract_reader_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1192,7 +1192,7 @@ func (x *QueryKeyFilter) ProtoReflect() protoreflect.Message { // Deprecated: Use QueryKeyFilter.ProtoReflect.Descriptor instead. func (*QueryKeyFilter) Descriptor() ([]byte, []int) { - return file_chain_reader_proto_rawDescGZIP(), []int{15} + return file_contract_reader_proto_rawDescGZIP(), []int{15} } func (x *QueryKeyFilter) GetKey() string { @@ -1226,7 +1226,7 @@ type Expression struct { func (x *Expression) Reset() { *x = Expression{} if protoimpl.UnsafeEnabled { - mi := &file_chain_reader_proto_msgTypes[16] + mi := &file_contract_reader_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1239,7 +1239,7 @@ func (x *Expression) String() string { func (*Expression) ProtoMessage() {} func (x *Expression) ProtoReflect() protoreflect.Message { - mi := &file_chain_reader_proto_msgTypes[16] + mi := &file_contract_reader_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1252,7 +1252,7 @@ func (x *Expression) ProtoReflect() protoreflect.Message { // Deprecated: Use Expression.ProtoReflect.Descriptor instead. func (*Expression) Descriptor() ([]byte, []int) { - return file_chain_reader_proto_rawDescGZIP(), []int{16} + return file_contract_reader_proto_rawDescGZIP(), []int{16} } func (m *Expression) GetEvaluator() isExpression_Evaluator { @@ -1304,7 +1304,7 @@ type BooleanExpression struct { func (x *BooleanExpression) Reset() { *x = BooleanExpression{} if protoimpl.UnsafeEnabled { - mi := &file_chain_reader_proto_msgTypes[17] + mi := &file_contract_reader_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1317,7 +1317,7 @@ func (x *BooleanExpression) String() string { func (*BooleanExpression) ProtoMessage() {} func (x *BooleanExpression) ProtoReflect() protoreflect.Message { - mi := &file_chain_reader_proto_msgTypes[17] + mi := &file_contract_reader_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1330,7 +1330,7 @@ func (x *BooleanExpression) ProtoReflect() protoreflect.Message { // Deprecated: Use BooleanExpression.ProtoReflect.Descriptor instead. func (*BooleanExpression) Descriptor() ([]byte, []int) { - return file_chain_reader_proto_rawDescGZIP(), []int{17} + return file_contract_reader_proto_rawDescGZIP(), []int{17} } func (x *BooleanExpression) GetBooleanOperator() BooleanOperator { @@ -1358,7 +1358,7 @@ type And struct { func (x *And) Reset() { *x = And{} if protoimpl.UnsafeEnabled { - mi := &file_chain_reader_proto_msgTypes[18] + mi := &file_contract_reader_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1371,7 +1371,7 @@ func (x *And) String() string { func (*And) ProtoMessage() {} func (x *And) ProtoReflect() protoreflect.Message { - mi := &file_chain_reader_proto_msgTypes[18] + mi := &file_contract_reader_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1384,7 +1384,7 @@ func (x *And) ProtoReflect() protoreflect.Message { // Deprecated: Use And.ProtoReflect.Descriptor instead. func (*And) Descriptor() ([]byte, []int) { - return file_chain_reader_proto_rawDescGZIP(), []int{18} + return file_contract_reader_proto_rawDescGZIP(), []int{18} } func (x *And) GetExpr() []*Expression { @@ -1405,7 +1405,7 @@ type Or struct { func (x *Or) Reset() { *x = Or{} if protoimpl.UnsafeEnabled { - mi := &file_chain_reader_proto_msgTypes[19] + mi := &file_contract_reader_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1418,7 +1418,7 @@ func (x *Or) String() string { func (*Or) ProtoMessage() {} func (x *Or) ProtoReflect() protoreflect.Message { - mi := &file_chain_reader_proto_msgTypes[19] + mi := &file_contract_reader_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1431,7 +1431,7 @@ func (x *Or) ProtoReflect() protoreflect.Message { // Deprecated: Use Or.ProtoReflect.Descriptor instead. func (*Or) Descriptor() ([]byte, []int) { - return file_chain_reader_proto_rawDescGZIP(), []int{19} + return file_contract_reader_proto_rawDescGZIP(), []int{19} } func (x *Or) GetExpr() []*Expression { @@ -1453,7 +1453,7 @@ type ValueComparator struct { func (x *ValueComparator) Reset() { *x = ValueComparator{} if protoimpl.UnsafeEnabled { - mi := &file_chain_reader_proto_msgTypes[20] + mi := &file_contract_reader_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1466,7 +1466,7 @@ func (x *ValueComparator) String() string { func (*ValueComparator) ProtoMessage() {} func (x *ValueComparator) ProtoReflect() protoreflect.Message { - mi := &file_chain_reader_proto_msgTypes[20] + mi := &file_contract_reader_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1479,7 +1479,7 @@ func (x *ValueComparator) ProtoReflect() protoreflect.Message { // Deprecated: Use ValueComparator.ProtoReflect.Descriptor instead. func (*ValueComparator) Descriptor() ([]byte, []int) { - return file_chain_reader_proto_rawDescGZIP(), []int{20} + return file_contract_reader_proto_rawDescGZIP(), []int{20} } func (x *ValueComparator) GetValue() string { @@ -1508,7 +1508,7 @@ type Comparator struct { func (x *Comparator) Reset() { *x = Comparator{} if protoimpl.UnsafeEnabled { - mi := &file_chain_reader_proto_msgTypes[21] + mi := &file_contract_reader_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1521,7 +1521,7 @@ func (x *Comparator) String() string { func (*Comparator) ProtoMessage() {} func (x *Comparator) ProtoReflect() protoreflect.Message { - mi := &file_chain_reader_proto_msgTypes[21] + mi := &file_contract_reader_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1534,7 +1534,7 @@ func (x *Comparator) ProtoReflect() protoreflect.Message { // Deprecated: Use Comparator.ProtoReflect.Descriptor instead. func (*Comparator) Descriptor() ([]byte, []int) { - return file_chain_reader_proto_rawDescGZIP(), []int{21} + return file_contract_reader_proto_rawDescGZIP(), []int{21} } func (x *Comparator) GetName() string { @@ -1563,7 +1563,7 @@ type Block struct { func (x *Block) Reset() { *x = Block{} if protoimpl.UnsafeEnabled { - mi := &file_chain_reader_proto_msgTypes[22] + mi := &file_contract_reader_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1576,7 +1576,7 @@ func (x *Block) String() string { func (*Block) ProtoMessage() {} func (x *Block) ProtoReflect() protoreflect.Message { - mi := &file_chain_reader_proto_msgTypes[22] + mi := &file_contract_reader_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1589,7 +1589,7 @@ func (x *Block) ProtoReflect() protoreflect.Message { // Deprecated: Use Block.ProtoReflect.Descriptor instead. func (*Block) Descriptor() ([]byte, []int) { - return file_chain_reader_proto_rawDescGZIP(), []int{22} + return file_contract_reader_proto_rawDescGZIP(), []int{22} } func (x *Block) GetBlockNumber() string { @@ -1618,7 +1618,7 @@ type Timestamp struct { func (x *Timestamp) Reset() { *x = Timestamp{} if protoimpl.UnsafeEnabled { - mi := &file_chain_reader_proto_msgTypes[23] + mi := &file_contract_reader_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1631,7 +1631,7 @@ func (x *Timestamp) String() string { func (*Timestamp) ProtoMessage() {} func (x *Timestamp) ProtoReflect() protoreflect.Message { - mi := &file_chain_reader_proto_msgTypes[23] + mi := &file_contract_reader_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1644,7 +1644,7 @@ func (x *Timestamp) ProtoReflect() protoreflect.Message { // Deprecated: Use Timestamp.ProtoReflect.Descriptor instead. func (*Timestamp) Descriptor() ([]byte, []int) { - return file_chain_reader_proto_rawDescGZIP(), []int{23} + return file_contract_reader_proto_rawDescGZIP(), []int{23} } func (x *Timestamp) GetTimestamp() uint64 { @@ -1672,7 +1672,7 @@ type TxHash struct { func (x *TxHash) Reset() { *x = TxHash{} if protoimpl.UnsafeEnabled { - mi := &file_chain_reader_proto_msgTypes[24] + mi := &file_contract_reader_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1685,7 +1685,7 @@ func (x *TxHash) String() string { func (*TxHash) ProtoMessage() {} func (x *TxHash) ProtoReflect() protoreflect.Message { - mi := &file_chain_reader_proto_msgTypes[24] + mi := &file_contract_reader_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1698,7 +1698,7 @@ func (x *TxHash) ProtoReflect() protoreflect.Message { // Deprecated: Use TxHash.ProtoReflect.Descriptor instead. func (*TxHash) Descriptor() ([]byte, []int) { - return file_chain_reader_proto_rawDescGZIP(), []int{24} + return file_contract_reader_proto_rawDescGZIP(), []int{24} } func (x *TxHash) GetTxHash() string { @@ -1727,7 +1727,7 @@ type Primitive struct { func (x *Primitive) Reset() { *x = Primitive{} if protoimpl.UnsafeEnabled { - mi := &file_chain_reader_proto_msgTypes[25] + mi := &file_contract_reader_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1740,7 +1740,7 @@ func (x *Primitive) String() string { func (*Primitive) ProtoMessage() {} func (x *Primitive) ProtoReflect() protoreflect.Message { - mi := &file_chain_reader_proto_msgTypes[25] + mi := &file_contract_reader_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1753,7 +1753,7 @@ func (x *Primitive) ProtoReflect() protoreflect.Message { // Deprecated: Use Primitive.ProtoReflect.Descriptor instead. func (*Primitive) Descriptor() ([]byte, []int) { - return file_chain_reader_proto_rawDescGZIP(), []int{25} + return file_contract_reader_proto_rawDescGZIP(), []int{25} } func (m *Primitive) GetPrimitive() isPrimitive_Primitive { @@ -1846,7 +1846,7 @@ type Limit struct { func (x *Limit) Reset() { *x = Limit{} if protoimpl.UnsafeEnabled { - mi := &file_chain_reader_proto_msgTypes[26] + mi := &file_contract_reader_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1859,7 +1859,7 @@ func (x *Limit) String() string { func (*Limit) ProtoMessage() {} func (x *Limit) ProtoReflect() protoreflect.Message { - mi := &file_chain_reader_proto_msgTypes[26] + mi := &file_contract_reader_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1872,7 +1872,7 @@ func (x *Limit) ProtoReflect() protoreflect.Message { // Deprecated: Use Limit.ProtoReflect.Descriptor instead. func (*Limit) Descriptor() ([]byte, []int) { - return file_chain_reader_proto_rawDescGZIP(), []int{26} + return file_contract_reader_proto_rawDescGZIP(), []int{26} } func (x *Limit) GetCursor() string { @@ -1908,7 +1908,7 @@ type SortBy struct { func (x *SortBy) Reset() { *x = SortBy{} if protoimpl.UnsafeEnabled { - mi := &file_chain_reader_proto_msgTypes[27] + mi := &file_contract_reader_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1921,7 +1921,7 @@ func (x *SortBy) String() string { func (*SortBy) ProtoMessage() {} func (x *SortBy) ProtoReflect() protoreflect.Message { - mi := &file_chain_reader_proto_msgTypes[27] + mi := &file_contract_reader_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1934,7 +1934,7 @@ func (x *SortBy) ProtoReflect() protoreflect.Message { // Deprecated: Use SortBy.ProtoReflect.Descriptor instead. func (*SortBy) Descriptor() ([]byte, []int) { - return file_chain_reader_proto_rawDescGZIP(), []int{27} + return file_contract_reader_proto_rawDescGZIP(), []int{27} } func (x *SortBy) GetSortType() SortType { @@ -1964,7 +1964,7 @@ type LimitAndSort struct { func (x *LimitAndSort) Reset() { *x = LimitAndSort{} if protoimpl.UnsafeEnabled { - mi := &file_chain_reader_proto_msgTypes[28] + mi := &file_contract_reader_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1977,7 +1977,7 @@ func (x *LimitAndSort) String() string { func (*LimitAndSort) ProtoMessage() {} func (x *LimitAndSort) ProtoReflect() protoreflect.Message { - mi := &file_chain_reader_proto_msgTypes[28] + mi := &file_contract_reader_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1990,7 +1990,7 @@ func (x *LimitAndSort) ProtoReflect() protoreflect.Message { // Deprecated: Use LimitAndSort.ProtoReflect.Descriptor instead. func (*LimitAndSort) Descriptor() ([]byte, []int) { - return file_chain_reader_proto_rawDescGZIP(), []int{28} + return file_contract_reader_proto_rawDescGZIP(), []int{28} } func (x *LimitAndSort) GetSortBy() []*SortBy { @@ -2007,265 +2007,266 @@ func (x *LimitAndSort) GetLimit() *Limit { return nil } -var File_chain_reader_proto protoreflect.FileDescriptor - -var file_chain_reader_proto_rawDesc = []byte{ - 0x0a, 0x12, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x04, 0x6c, 0x6f, 0x6f, 0x70, 0x1a, 0x0b, 0x63, 0x6f, 0x64, 0x65, - 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa0, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, - 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, - 0x0a, 0x0f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, - 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x61, 0x64, 0x49, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x30, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x64, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x6c, 0x6f, - 0x6f, 0x70, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0a, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x2c, 0x0a, 0x06, 0x70, 0x61, 0x72, - 0x61, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, - 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x52, - 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x4e, 0x0a, 0x1b, 0x42, 0x61, 0x74, 0x63, 0x68, - 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2f, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, - 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x08, 0x72, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x22, 0xaa, 0x01, 0x0a, 0x0f, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2f, 0x0a, 0x08, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, - 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, - 0x63, 0x74, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, 0x2c, 0x0a, 0x06, - 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6c, - 0x6f, 0x6f, 0x70, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4b, 0x65, 0x79, 0x46, 0x69, 0x6c, 0x74, - 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x38, 0x0a, 0x0e, 0x6c, 0x69, - 0x6d, 0x69, 0x74, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x73, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x41, - 0x6e, 0x64, 0x53, 0x6f, 0x72, 0x74, 0x52, 0x0c, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x41, 0x6e, 0x64, - 0x53, 0x6f, 0x72, 0x74, 0x22, 0x3e, 0x0a, 0x0b, 0x42, 0x69, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x2f, 0x0a, 0x08, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x42, 0x6f, 0x75, - 0x6e, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x52, 0x08, 0x62, 0x69, 0x6e, 0x64, - 0x69, 0x6e, 0x67, 0x73, 0x22, 0x40, 0x0a, 0x0d, 0x55, 0x6e, 0x62, 0x69, 0x6e, 0x64, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2f, 0x0a, 0x08, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x42, - 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x52, 0x08, 0x62, 0x69, - 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x44, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, - 0x65, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x2d, 0x0a, - 0x07, 0x72, 0x65, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, - 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x64, 0x42, - 0x79, 0x74, 0x65, 0x73, 0x52, 0x06, 0x72, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x22, 0x50, 0x0a, 0x19, - 0x42, 0x61, 0x74, 0x63, 0x68, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x33, 0x0a, 0x07, 0x72, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6c, 0x6f, 0x6f, - 0x70, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0x3d, - 0x0a, 0x0d, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, - 0x2c, 0x0a, 0x09, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, - 0x63, 0x65, 0x52, 0x09, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x22, 0x67, 0x0a, - 0x0d, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x12, 0x2f, +var File_contract_reader_proto protoreflect.FileDescriptor + +var file_contract_reader_proto_rawDesc = []byte{ + 0x0a, 0x15, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x04, 0x6c, 0x6f, 0x6f, 0x70, 0x1a, 0x0b, 0x63, + 0x6f, 0x64, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, + 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa0, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x4c, + 0x61, 0x74, 0x65, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x61, 0x64, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x30, 0x0a, 0x0a, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, + 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, + 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x2c, 0x0a, 0x06, + 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6c, + 0x6f, 0x6f, 0x70, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x64, 0x42, 0x79, 0x74, + 0x65, 0x73, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x4e, 0x0a, 0x1b, 0x42, 0x61, + 0x74, 0x63, 0x68, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2f, 0x0a, 0x08, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6c, 0x6f, + 0x6f, 0x70, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, + 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x22, 0xaa, 0x01, 0x0a, 0x0f, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2f, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, - 0x25, 0x0a, 0x05, 0x72, 0x65, 0x61, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, - 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x61, 0x64, 0x52, - 0x05, 0x72, 0x65, 0x61, 0x64, 0x73, 0x22, 0x8b, 0x01, 0x0a, 0x09, 0x42, 0x61, 0x74, 0x63, 0x68, - 0x52, 0x65, 0x61, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x61, 0x64, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x2c, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x2c, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x14, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4b, 0x65, 0x79, 0x46, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x38, 0x0a, + 0x0e, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x73, 0x6f, 0x72, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x4c, 0x69, 0x6d, + 0x69, 0x74, 0x41, 0x6e, 0x64, 0x53, 0x6f, 0x72, 0x74, 0x52, 0x0c, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x41, 0x6e, 0x64, 0x53, 0x6f, 0x72, 0x74, 0x22, 0x3e, 0x0a, 0x0b, 0x42, 0x69, 0x6e, 0x64, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2f, 0x0a, 0x08, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, + 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, + 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x52, 0x08, 0x62, + 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x40, 0x0a, 0x0d, 0x55, 0x6e, 0x62, 0x69, 0x6e, + 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2f, 0x0a, 0x08, 0x62, 0x69, 0x6e, 0x64, + 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6c, 0x6f, 0x6f, + 0x70, 0x2e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x52, + 0x08, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x44, 0x0a, 0x13, 0x47, 0x65, 0x74, + 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x79, + 0x12, 0x2d, 0x0a, 0x07, 0x72, 0x65, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x65, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, - 0x33, 0x0a, 0x0a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x65, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x52, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, - 0x6e, 0x56, 0x61, 0x6c, 0x22, 0x77, 0x0a, 0x13, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, - 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x2f, 0x0a, 0x08, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, - 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, - 0x63, 0x74, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, 0x2f, 0x0a, 0x07, - 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, - 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0x79, 0x0a, - 0x0f, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x61, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x33, 0x0a, - 0x0a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x14, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x65, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x52, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x56, - 0x61, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x58, 0x0a, 0x04, 0x48, 0x65, 0x61, 0x64, - 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, - 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, - 0x68, 0x61, 0x73, 0x68, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x22, 0x7d, 0x0a, 0x08, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x27, - 0x0a, 0x0f, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x63, 0x75, 0x72, 0x73, 0x6f, - 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, - 0x65, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x12, 0x1e, 0x0a, 0x04, 0x68, 0x65, 0x61, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x48, 0x65, 0x61, - 0x64, 0x52, 0x04, 0x68, 0x65, 0x61, 0x64, 0x12, 0x28, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x52, 0x04, 0x64, 0x61, 0x74, - 0x61, 0x22, 0x3d, 0x0a, 0x0d, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, - 0x63, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x22, 0x54, 0x0a, 0x0e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4b, 0x65, 0x79, 0x46, 0x69, 0x6c, 0x74, - 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x30, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, - 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x72, - 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x94, 0x01, 0x0a, 0x0a, 0x45, 0x78, 0x70, 0x72, 0x65, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x0a, 0x09, 0x70, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, - 0x76, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, - 0x50, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x48, 0x00, 0x52, 0x09, 0x70, 0x72, 0x69, - 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x12, 0x48, 0x0a, 0x12, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, - 0x6e, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x65, 0x61, - 0x6e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x11, 0x62, - 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x42, 0x0b, 0x0a, 0x09, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x6f, 0x72, 0x22, 0x87, 0x01, - 0x0a, 0x11, 0x42, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x0a, 0x10, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x5f, 0x6f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, - 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x4f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x6f, 0x72, 0x52, 0x0f, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x4f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x30, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, - 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x65, 0x78, 0x70, - 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x2b, 0x0a, 0x03, 0x41, 0x6e, 0x64, 0x12, 0x24, - 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6c, - 0x6f, 0x6f, 0x70, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x04, - 0x65, 0x78, 0x70, 0x72, 0x22, 0x2a, 0x0a, 0x02, 0x4f, 0x72, 0x12, 0x24, 0x0a, 0x04, 0x65, 0x78, - 0x70, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, - 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x65, 0x78, 0x70, 0x72, - 0x22, 0x5d, 0x0a, 0x0f, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x61, - 0x74, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x34, 0x0a, 0x08, 0x6f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x6c, 0x6f, - 0x6f, 0x70, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x4f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x22, - 0x64, 0x0a, 0x0a, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x42, 0x0a, 0x11, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x61, - 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6c, - 0x6f, 0x6f, 0x70, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x61, - 0x74, 0x6f, 0x72, 0x52, 0x10, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, - 0x61, 0x74, 0x6f, 0x72, 0x73, 0x22, 0x60, 0x0a, 0x05, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x21, - 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, - 0x72, 0x12, 0x34, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, - 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x08, 0x6f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x22, 0x5f, 0x0a, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x12, 0x34, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x43, 0x6f, 0x6d, 0x70, - 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x08, - 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x22, 0x21, 0x0a, 0x06, 0x54, 0x78, 0x48, 0x61, - 0x73, 0x68, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x78, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x22, 0xff, 0x01, 0x0a, 0x09, - 0x50, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x12, 0x32, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, - 0x70, 0x61, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, - 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x48, - 0x00, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x23, 0x0a, - 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x6c, - 0x6f, 0x6f, 0x70, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x00, 0x52, 0x05, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x12, 0x32, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x00, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x2f, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, - 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x00, 0x52, 0x09, 0x74, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x27, 0x0a, 0x07, 0x74, 0x78, 0x5f, 0x68, 0x61, - 0x73, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, - 0x54, 0x78, 0x48, 0x61, 0x73, 0x68, 0x48, 0x00, 0x52, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, - 0x42, 0x0b, 0x0a, 0x09, 0x70, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x22, 0x8d, 0x01, - 0x0a, 0x05, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1b, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, - 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, - 0x72, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x43, - 0x75, 0x72, 0x73, 0x6f, 0x72, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x01, - 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x14, - 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x42, - 0x0c, 0x0a, 0x0a, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x68, 0x0a, - 0x06, 0x53, 0x6f, 0x72, 0x74, 0x42, 0x79, 0x12, 0x2b, 0x0a, 0x09, 0x73, 0x6f, 0x72, 0x74, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0e, 0x2e, 0x6c, 0x6f, 0x6f, - 0x70, 0x2e, 0x53, 0x6f, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x73, 0x6f, 0x72, 0x74, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x31, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x53, - 0x6f, 0x72, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x64, 0x69, - 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x58, 0x0a, 0x0c, 0x4c, 0x69, 0x6d, 0x69, 0x74, - 0x41, 0x6e, 0x64, 0x53, 0x6f, 0x72, 0x74, 0x12, 0x25, 0x0a, 0x07, 0x73, 0x6f, 0x72, 0x74, 0x5f, - 0x62, 0x79, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, - 0x53, 0x6f, 0x72, 0x74, 0x42, 0x79, 0x52, 0x06, 0x73, 0x6f, 0x72, 0x74, 0x42, 0x79, 0x12, 0x21, - 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, - 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, - 0x74, 0x2a, 0x47, 0x0a, 0x12, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x4f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x06, 0x0a, 0x02, 0x45, 0x71, 0x10, 0x00, 0x12, - 0x07, 0x0a, 0x03, 0x4e, 0x65, 0x71, 0x10, 0x01, 0x12, 0x06, 0x0a, 0x02, 0x47, 0x74, 0x10, 0x02, - 0x12, 0x06, 0x0a, 0x02, 0x4c, 0x74, 0x10, 0x03, 0x12, 0x07, 0x0a, 0x03, 0x47, 0x74, 0x65, 0x10, - 0x04, 0x12, 0x07, 0x0a, 0x03, 0x4c, 0x74, 0x65, 0x10, 0x05, 0x2a, 0x22, 0x0a, 0x0f, 0x42, 0x6f, - 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x07, 0x0a, - 0x03, 0x41, 0x4e, 0x44, 0x10, 0x00, 0x12, 0x06, 0x0a, 0x02, 0x4f, 0x52, 0x10, 0x01, 0x2a, 0x2c, - 0x0a, 0x0a, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x0f, 0x0a, 0x0b, - 0x55, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0d, 0x0a, - 0x09, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x10, 0x01, 0x2a, 0x2f, 0x0a, 0x0f, - 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x0d, 0x0a, 0x09, 0x50, 0x72, 0x65, 0x63, 0x65, 0x64, 0x69, 0x6e, 0x67, 0x10, 0x00, 0x12, 0x0d, - 0x0a, 0x09, 0x46, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x10, 0x01, 0x2a, 0x22, 0x0a, - 0x0d, 0x53, 0x6f, 0x72, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x07, - 0x0a, 0x03, 0x41, 0x73, 0x63, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x65, 0x73, 0x63, 0x10, - 0x01, 0x2a, 0x3e, 0x0a, 0x08, 0x53, 0x6f, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x11, 0x0a, - 0x0d, 0x53, 0x6f, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x10, 0x00, - 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x6f, 0x72, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x10, 0x01, 0x12, - 0x10, 0x0a, 0x0c, 0x53, 0x6f, 0x72, 0x74, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x10, - 0x02, 0x32, 0xdf, 0x02, 0x0a, 0x0b, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x12, 0x4a, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x12, 0x1b, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, - 0x74, 0x65, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x19, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, - 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x5c, 0x0a, - 0x14, 0x42, 0x61, 0x74, 0x63, 0x68, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x21, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x42, 0x61, 0x74, - 0x63, 0x68, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, - 0x42, 0x61, 0x74, 0x63, 0x68, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x38, 0x0a, 0x08, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x4b, 0x65, 0x79, 0x12, 0x15, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, - 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4b, 0x65, 0x79, 0x52, 0x65, - 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x33, 0x0a, 0x04, 0x42, 0x69, 0x6e, 0x64, 0x12, 0x11, 0x2e, - 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x37, 0x0a, 0x06, 0x55, 0x6e, - 0x62, 0x69, 0x6e, 0x64, 0x12, 0x13, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x55, 0x6e, 0x62, 0x69, - 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, - 0x79, 0x22, 0x00, 0x42, 0x43, 0x5a, 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x73, 0x6d, 0x61, 0x72, 0x74, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x6b, - 0x69, 0x74, 0x2f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x2d, 0x63, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x6c, 0x6f, 0x6f, 0x70, 0x2f, 0x69, 0x6e, 0x74, - 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x65, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x52, 0x06, 0x72, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x22, + 0x50, 0x0a, 0x19, 0x42, 0x61, 0x74, 0x63, 0x68, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, + 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x33, 0x0a, 0x07, + 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x42, 0x61, 0x74, + 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x73, 0x22, 0x3d, 0x0a, 0x0d, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x70, + 0x6c, 0x79, 0x12, 0x2c, 0x0a, 0x09, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x53, 0x65, 0x71, + 0x75, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x09, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x73, + 0x22, 0x67, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x42, 0x61, 0x74, 0x63, + 0x68, 0x12, 0x2f, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x42, 0x6f, 0x75, 0x6e, 0x64, + 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, + 0x63, 0x74, 0x12, 0x25, 0x0a, 0x05, 0x72, 0x65, 0x61, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x0f, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, + 0x61, 0x64, 0x52, 0x05, 0x72, 0x65, 0x61, 0x64, 0x73, 0x22, 0x8b, 0x01, 0x0a, 0x09, 0x42, 0x61, + 0x74, 0x63, 0x68, 0x52, 0x65, 0x61, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x64, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x61, 0x64, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x65, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x12, 0x33, 0x0a, 0x0a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x5f, 0x76, 0x61, 0x6c, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x56, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x52, 0x09, 0x72, 0x65, + 0x74, 0x75, 0x72, 0x6e, 0x56, 0x61, 0x6c, 0x22, 0x77, 0x0a, 0x13, 0x43, 0x6f, 0x6e, 0x74, 0x72, + 0x61, 0x63, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x2f, + 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x13, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x6e, + 0x74, 0x72, 0x61, 0x63, 0x74, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, + 0x2f, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x15, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x61, + 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, + 0x22, 0x79, 0x0a, 0x0f, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x61, 0x64, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x33, 0x0a, 0x0a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x65, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x52, 0x09, 0x72, 0x65, 0x74, 0x75, + 0x72, 0x6e, 0x56, 0x61, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x58, 0x0a, 0x04, 0x48, + 0x65, 0x61, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x7d, 0x0a, 0x08, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, + 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x63, 0x75, + 0x72, 0x73, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x65, 0x71, 0x75, + 0x65, 0x6e, 0x63, 0x65, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x12, 0x1e, 0x0a, 0x04, 0x68, 0x65, + 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, + 0x48, 0x65, 0x61, 0x64, 0x52, 0x04, 0x68, 0x65, 0x61, 0x64, 0x12, 0x28, 0x0a, 0x04, 0x64, 0x61, + 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, + 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x52, 0x04, + 0x64, 0x61, 0x74, 0x61, 0x22, 0x3d, 0x0a, 0x0d, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x6e, + 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x22, 0x54, 0x0a, 0x0e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4b, 0x65, 0x79, 0x46, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x30, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6c, 0x6f, + 0x6f, 0x70, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x65, + 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x94, 0x01, 0x0a, 0x0a, 0x45, 0x78, + 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x0a, 0x09, 0x70, 0x72, 0x69, 0x6d, + 0x69, 0x74, 0x69, 0x76, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6c, 0x6f, + 0x6f, 0x70, 0x2e, 0x50, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x48, 0x00, 0x52, 0x09, + 0x70, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x12, 0x48, 0x0a, 0x12, 0x62, 0x6f, 0x6f, + 0x6c, 0x65, 0x61, 0x6e, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x42, 0x6f, 0x6f, + 0x6c, 0x65, 0x61, 0x6e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x00, + 0x52, 0x11, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x42, 0x0b, 0x0a, 0x09, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x6f, 0x72, + 0x22, 0x87, 0x01, 0x0a, 0x11, 0x42, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x45, 0x78, 0x70, 0x72, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x0a, 0x10, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, + 0x6e, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x15, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x4f, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x0f, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, + 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x30, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x72, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6c, + 0x6f, 0x6f, 0x70, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0a, + 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x2b, 0x0a, 0x03, 0x41, 0x6e, + 0x64, 0x12, 0x24, 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x10, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x52, 0x04, 0x65, 0x78, 0x70, 0x72, 0x22, 0x2a, 0x0a, 0x02, 0x4f, 0x72, 0x12, 0x24, 0x0a, + 0x04, 0x65, 0x78, 0x70, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6c, 0x6f, + 0x6f, 0x70, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x65, + 0x78, 0x70, 0x72, 0x22, 0x5d, 0x0a, 0x0f, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x43, 0x6f, 0x6d, 0x70, + 0x61, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x34, 0x0a, 0x08, + 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, + 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, + 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x22, 0x64, 0x0a, 0x0a, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x61, 0x74, 0x6f, 0x72, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x42, 0x0a, 0x11, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x63, 0x6f, + 0x6d, 0x70, 0x61, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x15, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x43, 0x6f, 0x6d, 0x70, + 0x61, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x10, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x43, 0x6f, 0x6d, + 0x70, 0x61, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x22, 0x60, 0x0a, 0x05, 0x42, 0x6c, 0x6f, 0x63, + 0x6b, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, + 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, + 0x6d, 0x62, 0x65, 0x72, 0x12, 0x34, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x43, 0x6f, + 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, + 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x22, 0x5f, 0x0a, 0x09, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x34, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x43, + 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x22, 0x21, 0x0a, 0x06, 0x54, + 0x78, 0x48, 0x61, 0x73, 0x68, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x78, 0x5f, 0x68, 0x61, 0x73, 0x68, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x22, 0xff, + 0x01, 0x0a, 0x09, 0x50, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x12, 0x32, 0x0a, 0x0a, + 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x10, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x61, 0x74, 0x6f, 0x72, + 0x12, 0x23, 0x0a, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0b, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x00, 0x52, 0x05, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x32, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, + 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, + 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x00, 0x52, 0x0a, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x2f, 0x0a, 0x09, 0x74, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6c, + 0x6f, 0x6f, 0x70, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x00, 0x52, + 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x27, 0x0a, 0x07, 0x74, 0x78, + 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x6c, 0x6f, + 0x6f, 0x70, 0x2e, 0x54, 0x78, 0x48, 0x61, 0x73, 0x68, 0x48, 0x00, 0x52, 0x06, 0x74, 0x78, 0x48, + 0x61, 0x73, 0x68, 0x42, 0x0b, 0x0a, 0x09, 0x70, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, + 0x22, 0x8d, 0x01, 0x0a, 0x05, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1b, 0x0a, 0x06, 0x63, 0x75, + 0x72, 0x73, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x63, 0x75, + 0x72, 0x73, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x6c, 0x6f, 0x6f, + 0x70, 0x2e, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x48, 0x01, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, + 0x01, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x75, 0x72, 0x73, + 0x6f, 0x72, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x22, 0x68, 0x0a, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x42, 0x79, 0x12, 0x2b, 0x0a, 0x09, 0x73, 0x6f, + 0x72, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0e, 0x2e, + 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x53, 0x6f, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x73, + 0x6f, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x31, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x6c, 0x6f, 0x6f, + 0x70, 0x2e, 0x53, 0x6f, 0x72, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x58, 0x0a, 0x0c, 0x4c, 0x69, + 0x6d, 0x69, 0x74, 0x41, 0x6e, 0x64, 0x53, 0x6f, 0x72, 0x74, 0x12, 0x25, 0x0a, 0x07, 0x73, 0x6f, + 0x72, 0x74, 0x5f, 0x62, 0x79, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x6c, 0x6f, + 0x6f, 0x70, 0x2e, 0x53, 0x6f, 0x72, 0x74, 0x42, 0x79, 0x52, 0x06, 0x73, 0x6f, 0x72, 0x74, 0x42, + 0x79, 0x12, 0x21, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0b, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x05, 0x6c, + 0x69, 0x6d, 0x69, 0x74, 0x2a, 0x47, 0x0a, 0x12, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, + 0x6f, 0x6e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x06, 0x0a, 0x02, 0x45, 0x71, + 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x4e, 0x65, 0x71, 0x10, 0x01, 0x12, 0x06, 0x0a, 0x02, 0x47, + 0x74, 0x10, 0x02, 0x12, 0x06, 0x0a, 0x02, 0x4c, 0x74, 0x10, 0x03, 0x12, 0x07, 0x0a, 0x03, 0x47, + 0x74, 0x65, 0x10, 0x04, 0x12, 0x07, 0x0a, 0x03, 0x4c, 0x74, 0x65, 0x10, 0x05, 0x2a, 0x22, 0x0a, + 0x0f, 0x42, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, + 0x12, 0x07, 0x0a, 0x03, 0x41, 0x4e, 0x44, 0x10, 0x00, 0x12, 0x06, 0x0a, 0x02, 0x4f, 0x52, 0x10, + 0x01, 0x2a, 0x2c, 0x0a, 0x0a, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x12, + 0x0f, 0x0a, 0x0b, 0x55, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x10, 0x00, + 0x12, 0x0d, 0x0a, 0x09, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x10, 0x01, 0x2a, + 0x2f, 0x0a, 0x0f, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x0d, 0x0a, 0x09, 0x50, 0x72, 0x65, 0x63, 0x65, 0x64, 0x69, 0x6e, 0x67, 0x10, + 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x46, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x10, 0x01, + 0x2a, 0x22, 0x0a, 0x0d, 0x53, 0x6f, 0x72, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x73, 0x63, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x65, + 0x73, 0x63, 0x10, 0x01, 0x2a, 0x3e, 0x0a, 0x08, 0x53, 0x6f, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x6f, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x6f, 0x72, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, + 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x6f, 0x72, 0x74, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, + 0x63, 0x65, 0x10, 0x02, 0x32, 0xe2, 0x02, 0x0a, 0x0e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, + 0x74, 0x52, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x4a, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x4c, 0x61, + 0x74, 0x65, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1b, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, + 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x47, 0x65, + 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x70, 0x6c, + 0x79, 0x22, 0x00, 0x12, 0x5c, 0x0a, 0x14, 0x42, 0x61, 0x74, 0x63, 0x68, 0x47, 0x65, 0x74, 0x4c, + 0x61, 0x74, 0x65, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x21, 0x2e, 0x6c, 0x6f, + 0x6f, 0x70, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, + 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, + 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x47, 0x65, 0x74, 0x4c, 0x61, + 0x74, 0x65, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, + 0x00, 0x12, 0x38, 0x0a, 0x08, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4b, 0x65, 0x79, 0x12, 0x15, 0x2e, + 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x33, 0x0a, 0x04, 0x42, + 0x69, 0x6e, 0x64, 0x12, 0x11, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, + 0x12, 0x37, 0x0a, 0x06, 0x55, 0x6e, 0x62, 0x69, 0x6e, 0x64, 0x12, 0x13, 0x2e, 0x6c, 0x6f, 0x6f, + 0x70, 0x2e, 0x55, 0x6e, 0x62, 0x69, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x42, 0x43, 0x5a, 0x41, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6d, 0x61, 0x72, 0x74, 0x63, 0x6f, 0x6e, + 0x74, 0x72, 0x61, 0x63, 0x74, 0x6b, 0x69, 0x74, 0x2f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x6c, 0x69, + 0x6e, 0x6b, 0x2d, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x6c, 0x6f, + 0x6f, 0x70, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x70, 0x62, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( - file_chain_reader_proto_rawDescOnce sync.Once - file_chain_reader_proto_rawDescData = file_chain_reader_proto_rawDesc + file_contract_reader_proto_rawDescOnce sync.Once + file_contract_reader_proto_rawDescData = file_contract_reader_proto_rawDesc ) -func file_chain_reader_proto_rawDescGZIP() []byte { - file_chain_reader_proto_rawDescOnce.Do(func() { - file_chain_reader_proto_rawDescData = protoimpl.X.CompressGZIP(file_chain_reader_proto_rawDescData) +func file_contract_reader_proto_rawDescGZIP() []byte { + file_contract_reader_proto_rawDescOnce.Do(func() { + file_contract_reader_proto_rawDescData = protoimpl.X.CompressGZIP(file_contract_reader_proto_rawDescData) }) - return file_chain_reader_proto_rawDescData + return file_contract_reader_proto_rawDescData } -var file_chain_reader_proto_enumTypes = make([]protoimpl.EnumInfo, 6) -var file_chain_reader_proto_msgTypes = make([]protoimpl.MessageInfo, 29) -var file_chain_reader_proto_goTypes = []interface{}{ +var file_contract_reader_proto_enumTypes = make([]protoimpl.EnumInfo, 6) +var file_contract_reader_proto_msgTypes = make([]protoimpl.MessageInfo, 29) +var file_contract_reader_proto_goTypes = []interface{}{ (ComparisonOperator)(0), // 0: loop.ComparisonOperator (BooleanOperator)(0), // 1: loop.BooleanOperator (Confidence)(0), // 2: loop.Confidence @@ -2304,7 +2305,7 @@ var file_chain_reader_proto_goTypes = []interface{}{ (*VersionedBytes)(nil), // 35: loop.VersionedBytes (*emptypb.Empty)(nil), // 36: google.protobuf.Empty } -var file_chain_reader_proto_depIdxs = []int32{ +var file_contract_reader_proto_depIdxs = []int32{ 2, // 0: loop.GetLatestValueRequest.confidence:type_name -> loop.Confidence 35, // 1: loop.GetLatestValueRequest.params:type_name -> loop.VersionedBytes 14, // 2: loop.BatchGetLatestValuesRequest.requests:type_name -> loop.ContractBatch @@ -2346,16 +2347,16 @@ var file_chain_reader_proto_depIdxs = []int32{ 4, // 38: loop.SortBy.direction:type_name -> loop.SortDirection 33, // 39: loop.LimitAndSort.sort_by:type_name -> loop.SortBy 32, // 40: loop.LimitAndSort.limit:type_name -> loop.Limit - 6, // 41: loop.ChainReader.GetLatestValue:input_type -> loop.GetLatestValueRequest - 7, // 42: loop.ChainReader.BatchGetLatestValues:input_type -> loop.BatchGetLatestValuesRequest - 8, // 43: loop.ChainReader.QueryKey:input_type -> loop.QueryKeyRequest - 9, // 44: loop.ChainReader.Bind:input_type -> loop.BindRequest - 10, // 45: loop.ChainReader.Unbind:input_type -> loop.UnbindRequest - 11, // 46: loop.ChainReader.GetLatestValue:output_type -> loop.GetLatestValueReply - 12, // 47: loop.ChainReader.BatchGetLatestValues:output_type -> loop.BatchGetLatestValuesReply - 13, // 48: loop.ChainReader.QueryKey:output_type -> loop.QueryKeyReply - 36, // 49: loop.ChainReader.Bind:output_type -> google.protobuf.Empty - 36, // 50: loop.ChainReader.Unbind:output_type -> google.protobuf.Empty + 6, // 41: loop.ContractReader.GetLatestValue:input_type -> loop.GetLatestValueRequest + 7, // 42: loop.ContractReader.BatchGetLatestValues:input_type -> loop.BatchGetLatestValuesRequest + 8, // 43: loop.ContractReader.QueryKey:input_type -> loop.QueryKeyRequest + 9, // 44: loop.ContractReader.Bind:input_type -> loop.BindRequest + 10, // 45: loop.ContractReader.Unbind:input_type -> loop.UnbindRequest + 11, // 46: loop.ContractReader.GetLatestValue:output_type -> loop.GetLatestValueReply + 12, // 47: loop.ContractReader.BatchGetLatestValues:output_type -> loop.BatchGetLatestValuesReply + 13, // 48: loop.ContractReader.QueryKey:output_type -> loop.QueryKeyReply + 36, // 49: loop.ContractReader.Bind:output_type -> google.protobuf.Empty + 36, // 50: loop.ContractReader.Unbind:output_type -> google.protobuf.Empty 46, // [46:51] is the sub-list for method output_type 41, // [41:46] is the sub-list for method input_type 41, // [41:41] is the sub-list for extension type_name @@ -2363,14 +2364,14 @@ var file_chain_reader_proto_depIdxs = []int32{ 0, // [0:41] is the sub-list for field type_name } -func init() { file_chain_reader_proto_init() } -func file_chain_reader_proto_init() { - if File_chain_reader_proto != nil { +func init() { file_contract_reader_proto_init() } +func file_contract_reader_proto_init() { + if File_contract_reader_proto != nil { return } file_codec_proto_init() if !protoimpl.UnsafeEnabled { - file_chain_reader_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_contract_reader_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetLatestValueRequest); i { case 0: return &v.state @@ -2382,7 +2383,7 @@ func file_chain_reader_proto_init() { return nil } } - file_chain_reader_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_contract_reader_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BatchGetLatestValuesRequest); i { case 0: return &v.state @@ -2394,7 +2395,7 @@ func file_chain_reader_proto_init() { return nil } } - file_chain_reader_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + file_contract_reader_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*QueryKeyRequest); i { case 0: return &v.state @@ -2406,7 +2407,7 @@ func file_chain_reader_proto_init() { return nil } } - file_chain_reader_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + file_contract_reader_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BindRequest); i { case 0: return &v.state @@ -2418,7 +2419,7 @@ func file_chain_reader_proto_init() { return nil } } - file_chain_reader_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + file_contract_reader_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UnbindRequest); i { case 0: return &v.state @@ -2430,7 +2431,7 @@ func file_chain_reader_proto_init() { return nil } } - file_chain_reader_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + file_contract_reader_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetLatestValueReply); i { case 0: return &v.state @@ -2442,7 +2443,7 @@ func file_chain_reader_proto_init() { return nil } } - file_chain_reader_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + file_contract_reader_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BatchGetLatestValuesReply); i { case 0: return &v.state @@ -2454,7 +2455,7 @@ func file_chain_reader_proto_init() { return nil } } - file_chain_reader_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + file_contract_reader_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*QueryKeyReply); i { case 0: return &v.state @@ -2466,7 +2467,7 @@ func file_chain_reader_proto_init() { return nil } } - file_chain_reader_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + file_contract_reader_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ContractBatch); i { case 0: return &v.state @@ -2478,7 +2479,7 @@ func file_chain_reader_proto_init() { return nil } } - file_chain_reader_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + file_contract_reader_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BatchRead); i { case 0: return &v.state @@ -2490,7 +2491,7 @@ func file_chain_reader_proto_init() { return nil } } - file_chain_reader_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + file_contract_reader_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ContractBatchResult); i { case 0: return &v.state @@ -2502,7 +2503,7 @@ func file_chain_reader_proto_init() { return nil } } - file_chain_reader_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + file_contract_reader_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BatchReadResult); i { case 0: return &v.state @@ -2514,7 +2515,7 @@ func file_chain_reader_proto_init() { return nil } } - file_chain_reader_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + file_contract_reader_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Head); i { case 0: return &v.state @@ -2526,7 +2527,7 @@ func file_chain_reader_proto_init() { return nil } } - file_chain_reader_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + file_contract_reader_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Sequence); i { case 0: return &v.state @@ -2538,7 +2539,7 @@ func file_chain_reader_proto_init() { return nil } } - file_chain_reader_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + file_contract_reader_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BoundContract); i { case 0: return &v.state @@ -2550,7 +2551,7 @@ func file_chain_reader_proto_init() { return nil } } - file_chain_reader_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + file_contract_reader_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*QueryKeyFilter); i { case 0: return &v.state @@ -2562,7 +2563,7 @@ func file_chain_reader_proto_init() { return nil } } - file_chain_reader_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + file_contract_reader_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Expression); i { case 0: return &v.state @@ -2574,7 +2575,7 @@ func file_chain_reader_proto_init() { return nil } } - file_chain_reader_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + file_contract_reader_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BooleanExpression); i { case 0: return &v.state @@ -2586,7 +2587,7 @@ func file_chain_reader_proto_init() { return nil } } - file_chain_reader_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + file_contract_reader_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*And); i { case 0: return &v.state @@ -2598,7 +2599,7 @@ func file_chain_reader_proto_init() { return nil } } - file_chain_reader_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + file_contract_reader_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Or); i { case 0: return &v.state @@ -2610,7 +2611,7 @@ func file_chain_reader_proto_init() { return nil } } - file_chain_reader_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + file_contract_reader_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ValueComparator); i { case 0: return &v.state @@ -2622,7 +2623,7 @@ func file_chain_reader_proto_init() { return nil } } - file_chain_reader_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + file_contract_reader_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Comparator); i { case 0: return &v.state @@ -2634,7 +2635,7 @@ func file_chain_reader_proto_init() { return nil } } - file_chain_reader_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + file_contract_reader_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Block); i { case 0: return &v.state @@ -2646,7 +2647,7 @@ func file_chain_reader_proto_init() { return nil } } - file_chain_reader_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + file_contract_reader_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Timestamp); i { case 0: return &v.state @@ -2658,7 +2659,7 @@ func file_chain_reader_proto_init() { return nil } } - file_chain_reader_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + file_contract_reader_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TxHash); i { case 0: return &v.state @@ -2670,7 +2671,7 @@ func file_chain_reader_proto_init() { return nil } } - file_chain_reader_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + file_contract_reader_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Primitive); i { case 0: return &v.state @@ -2682,7 +2683,7 @@ func file_chain_reader_proto_init() { return nil } } - file_chain_reader_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + file_contract_reader_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Limit); i { case 0: return &v.state @@ -2694,7 +2695,7 @@ func file_chain_reader_proto_init() { return nil } } - file_chain_reader_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + file_contract_reader_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SortBy); i { case 0: return &v.state @@ -2706,7 +2707,7 @@ func file_chain_reader_proto_init() { return nil } } - file_chain_reader_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + file_contract_reader_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LimitAndSort); i { case 0: return &v.state @@ -2719,35 +2720,35 @@ func file_chain_reader_proto_init() { } } } - file_chain_reader_proto_msgTypes[16].OneofWrappers = []interface{}{ + file_contract_reader_proto_msgTypes[16].OneofWrappers = []interface{}{ (*Expression_Primitive)(nil), (*Expression_BooleanExpression)(nil), } - file_chain_reader_proto_msgTypes[25].OneofWrappers = []interface{}{ + file_contract_reader_proto_msgTypes[25].OneofWrappers = []interface{}{ (*Primitive_Comparator)(nil), (*Primitive_Block)(nil), (*Primitive_Confidence)(nil), (*Primitive_Timestamp)(nil), (*Primitive_TxHash)(nil), } - file_chain_reader_proto_msgTypes[26].OneofWrappers = []interface{}{} + file_contract_reader_proto_msgTypes[26].OneofWrappers = []interface{}{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_chain_reader_proto_rawDesc, + RawDescriptor: file_contract_reader_proto_rawDesc, NumEnums: 6, NumMessages: 29, NumExtensions: 0, NumServices: 1, }, - GoTypes: file_chain_reader_proto_goTypes, - DependencyIndexes: file_chain_reader_proto_depIdxs, - EnumInfos: file_chain_reader_proto_enumTypes, - MessageInfos: file_chain_reader_proto_msgTypes, + GoTypes: file_contract_reader_proto_goTypes, + DependencyIndexes: file_contract_reader_proto_depIdxs, + EnumInfos: file_contract_reader_proto_enumTypes, + MessageInfos: file_contract_reader_proto_msgTypes, }.Build() - File_chain_reader_proto = out.File - file_chain_reader_proto_rawDesc = nil - file_chain_reader_proto_goTypes = nil - file_chain_reader_proto_depIdxs = nil + File_contract_reader_proto = out.File + file_contract_reader_proto_rawDesc = nil + file_contract_reader_proto_goTypes = nil + file_contract_reader_proto_depIdxs = nil } diff --git a/pkg/loop/internal/pb/chain_reader.proto b/pkg/loop/internal/pb/contract_reader.proto similarity index 84% rename from pkg/loop/internal/pb/chain_reader.proto rename to pkg/loop/internal/pb/contract_reader.proto index 6a30c9185..e97349096 100644 --- a/pkg/loop/internal/pb/chain_reader.proto +++ b/pkg/loop/internal/pb/contract_reader.proto @@ -7,7 +7,7 @@ package loop; import "codec.proto"; import "google/protobuf/empty.proto"; -service ChainReader { +service ContractReader { rpc GetLatestValue (GetLatestValueRequest) returns (GetLatestValueReply) {} rpc BatchGetLatestValues (BatchGetLatestValuesRequest) returns (BatchGetLatestValuesReply) {} rpc QueryKey(QueryKeyRequest) returns (QueryKeyReply) {} @@ -15,84 +15,84 @@ service ChainReader { rpc Unbind(UnbindRequest) returns (google.protobuf.Empty) {} } -// GetLatestValueRequest has arguments for [github.com/smartcontractkit/chainlink-common/pkg/types.ChainReader.GetLatestValue]. +// GetLatestValueRequest has arguments for [github.com/smartcontractkit/chainlink-common/pkg/types.ContractReader.GetLatestValue]. message GetLatestValueRequest { string read_identifier = 1; Confidence confidence = 2; VersionedBytes params = 3; } -// BatchGetLatestValuesRequest has arguments for [github.com/smartcontractkit/chainlink-common/pkg/types.ChainReader.BatchGetLatestValues]. +// BatchGetLatestValuesRequest has arguments for [github.com/smartcontractkit/chainlink-common/pkg/types.ContractReader.BatchGetLatestValues]. message BatchGetLatestValuesRequest { repeated ContractBatch requests = 1; } -// QueryKeyRequest has arguments for [github.com/smartcontractkit/chainlink-common/pkg/types.ChainReader.QueryKey]. +// QueryKeyRequest has arguments for [github.com/smartcontractkit/chainlink-common/pkg/types.ContractReader.QueryKey]. message QueryKeyRequest { BoundContract contract = 1; QueryKeyFilter filter = 2; LimitAndSort limit_and_sort = 3; } -// BindRequest has arguments for [github.com/smartcontractkit/chainlink-common/pkg/types.ChainReader.Bind]. +// BindRequest has arguments for [github.com/smartcontractkit/chainlink-common/pkg/types.ContractReader.Bind]. message BindRequest { repeated BoundContract bindings = 1; } -// UnbindRequest has arguments for [github.com/smartcontractkit/chainlink-common/pkg/types.ChainReader.Unbind]. +// UnbindRequest has arguments for [github.com/smartcontractkit/chainlink-common/pkg/types.ContractReader.Unbind]. message UnbindRequest { repeated BoundContract bindings = 1; } -// GetLatestValueReply has return arguments for [github.com/smartcontractkit/chainlink-common/pkg/types.ChainReader.GetLatestValue]. +// GetLatestValueReply has return arguments for [github.com/smartcontractkit/chainlink-common/pkg/types.ContractReader.GetLatestValue]. message GetLatestValueReply { VersionedBytes ret_val = 1; } -// BatchGetLatestValuesReply has return arguments for [github.com/smartcontractkit/chainlink-common/pkg/types.ChainReader.BatchGetLatestValues]. +// BatchGetLatestValuesReply has return arguments for [github.com/smartcontractkit/chainlink-common/pkg/types.ContractReader.BatchGetLatestValues]. message BatchGetLatestValuesReply { repeated ContractBatchResult results = 1; } -// QueryKeyReply has return arguments for [github.com/smartcontractkit/chainlink-common/pkg/types.ChainReader.QueryKey]. +// QueryKeyReply has return arguments for [github.com/smartcontractkit/chainlink-common/pkg/types.ContractReader.QueryKey]. message QueryKeyReply { repeated Sequence sequences = 1; } -// ContractBatch is gRPC adapter for the BatchGetLatestValuesRequest struct map value [github.com/smartcontractkit/chainlink-common/pkg/types.ChainReader.BatchGetLatestValuesRequest]. +// ContractBatch is gRPC adapter for the BatchGetLatestValuesRequest struct map value [github.com/smartcontractkit/chainlink-common/pkg/types.ContractReader.BatchGetLatestValuesRequest]. message ContractBatch { BoundContract contract = 1; repeated BatchRead reads = 2; } -// BatchCall is gRPC adapter for the GetLatestValueRequest struct [github.com/smartcontractkit/chainlink-common/pkg/types.ChainReader.BatchCall]. +// BatchCall is gRPC adapter for the GetLatestValueRequest struct [github.com/smartcontractkit/chainlink-common/pkg/types.ContractReader.BatchCall]. message BatchRead { string read_name = 1; VersionedBytes params = 2; VersionedBytes return_val = 3; } -// ContractBatchResult is part of return arguments for [github.com/smartcontractkit/chainlink-common/pkg/types.ChainReader.BatchGetLatestValues]. +// ContractBatchResult is part of return arguments for [github.com/smartcontractkit/chainlink-common/pkg/types.ContractReader.BatchGetLatestValues]. message ContractBatchResult { BoundContract contract = 1; repeated BatchReadResult results = 2; } -// BatchCallResult is part of return arguments for [github.com/smartcontractkit/chainlink-common/pkg/types.ChainReader.BatchGetLatestValues]. +// BatchCallResult is part of return arguments for [github.com/smartcontractkit/chainlink-common/pkg/types.ContractReader.BatchGetLatestValues]. message BatchReadResult { string read_name = 1; VersionedBytes return_val = 2; string error = 3; } -// Head is gRPC adapter for the Head struct [github.com/smartcontractkit/chainlink-common/pkg/types.ChainReader.Head]. +// Head is gRPC adapter for the Head struct [github.com/smartcontractkit/chainlink-common/pkg/types.ContractReader.Head]. message Head { string identifier = 1; bytes hash = 2; uint64 timestamp = 3; } -// Head is gRPC adapter for the Head struct [github.com/smartcontractkit/chainlink-common/pkg/types.ChainReader.Sequence]. +// Head is gRPC adapter for the Head struct [github.com/smartcontractkit/chainlink-common/pkg/types.ContractReader.Sequence]. message Sequence { string sequence_cursor = 1; Head head = 2; diff --git a/pkg/loop/internal/pb/contract_reader_grpc.pb.go b/pkg/loop/internal/pb/contract_reader_grpc.pb.go new file mode 100644 index 000000000..67e2f967b --- /dev/null +++ b/pkg/loop/internal/pb/contract_reader_grpc.pb.go @@ -0,0 +1,258 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.3.0 +// - protoc v4.25.1 +// source: contract_reader.proto + +package pb + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + emptypb "google.golang.org/protobuf/types/known/emptypb" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +const ( + ContractReader_GetLatestValue_FullMethodName = "/loop.ContractReader/GetLatestValue" + ContractReader_BatchGetLatestValues_FullMethodName = "/loop.ContractReader/BatchGetLatestValues" + ContractReader_QueryKey_FullMethodName = "/loop.ContractReader/QueryKey" + ContractReader_Bind_FullMethodName = "/loop.ContractReader/Bind" + ContractReader_Unbind_FullMethodName = "/loop.ContractReader/Unbind" +) + +// ContractReaderClient is the client API for ContractReader service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type ContractReaderClient interface { + GetLatestValue(ctx context.Context, in *GetLatestValueRequest, opts ...grpc.CallOption) (*GetLatestValueReply, error) + BatchGetLatestValues(ctx context.Context, in *BatchGetLatestValuesRequest, opts ...grpc.CallOption) (*BatchGetLatestValuesReply, error) + QueryKey(ctx context.Context, in *QueryKeyRequest, opts ...grpc.CallOption) (*QueryKeyReply, error) + Bind(ctx context.Context, in *BindRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) + Unbind(ctx context.Context, in *UnbindRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) +} + +type contractReaderClient struct { + cc grpc.ClientConnInterface +} + +func NewContractReaderClient(cc grpc.ClientConnInterface) ContractReaderClient { + return &contractReaderClient{cc} +} + +func (c *contractReaderClient) GetLatestValue(ctx context.Context, in *GetLatestValueRequest, opts ...grpc.CallOption) (*GetLatestValueReply, error) { + out := new(GetLatestValueReply) + err := c.cc.Invoke(ctx, ContractReader_GetLatestValue_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *contractReaderClient) BatchGetLatestValues(ctx context.Context, in *BatchGetLatestValuesRequest, opts ...grpc.CallOption) (*BatchGetLatestValuesReply, error) { + out := new(BatchGetLatestValuesReply) + err := c.cc.Invoke(ctx, ContractReader_BatchGetLatestValues_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *contractReaderClient) QueryKey(ctx context.Context, in *QueryKeyRequest, opts ...grpc.CallOption) (*QueryKeyReply, error) { + out := new(QueryKeyReply) + err := c.cc.Invoke(ctx, ContractReader_QueryKey_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *contractReaderClient) Bind(ctx context.Context, in *BindRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, ContractReader_Bind_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *contractReaderClient) Unbind(ctx context.Context, in *UnbindRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, ContractReader_Unbind_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// ContractReaderServer is the server API for ContractReader service. +// All implementations must embed UnimplementedContractReaderServer +// for forward compatibility +type ContractReaderServer interface { + GetLatestValue(context.Context, *GetLatestValueRequest) (*GetLatestValueReply, error) + BatchGetLatestValues(context.Context, *BatchGetLatestValuesRequest) (*BatchGetLatestValuesReply, error) + QueryKey(context.Context, *QueryKeyRequest) (*QueryKeyReply, error) + Bind(context.Context, *BindRequest) (*emptypb.Empty, error) + Unbind(context.Context, *UnbindRequest) (*emptypb.Empty, error) + mustEmbedUnimplementedContractReaderServer() +} + +// UnimplementedContractReaderServer must be embedded to have forward compatible implementations. +type UnimplementedContractReaderServer struct { +} + +func (UnimplementedContractReaderServer) GetLatestValue(context.Context, *GetLatestValueRequest) (*GetLatestValueReply, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetLatestValue not implemented") +} +func (UnimplementedContractReaderServer) BatchGetLatestValues(context.Context, *BatchGetLatestValuesRequest) (*BatchGetLatestValuesReply, error) { + return nil, status.Errorf(codes.Unimplemented, "method BatchGetLatestValues not implemented") +} +func (UnimplementedContractReaderServer) QueryKey(context.Context, *QueryKeyRequest) (*QueryKeyReply, error) { + return nil, status.Errorf(codes.Unimplemented, "method QueryKey not implemented") +} +func (UnimplementedContractReaderServer) Bind(context.Context, *BindRequest) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method Bind not implemented") +} +func (UnimplementedContractReaderServer) Unbind(context.Context, *UnbindRequest) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method Unbind not implemented") +} +func (UnimplementedContractReaderServer) mustEmbedUnimplementedContractReaderServer() {} + +// UnsafeContractReaderServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to ContractReaderServer will +// result in compilation errors. +type UnsafeContractReaderServer interface { + mustEmbedUnimplementedContractReaderServer() +} + +func RegisterContractReaderServer(s grpc.ServiceRegistrar, srv ContractReaderServer) { + s.RegisterService(&ContractReader_ServiceDesc, srv) +} + +func _ContractReader_GetLatestValue_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetLatestValueRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ContractReaderServer).GetLatestValue(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: ContractReader_GetLatestValue_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ContractReaderServer).GetLatestValue(ctx, req.(*GetLatestValueRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ContractReader_BatchGetLatestValues_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(BatchGetLatestValuesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ContractReaderServer).BatchGetLatestValues(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: ContractReader_BatchGetLatestValues_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ContractReaderServer).BatchGetLatestValues(ctx, req.(*BatchGetLatestValuesRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ContractReader_QueryKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryKeyRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ContractReaderServer).QueryKey(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: ContractReader_QueryKey_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ContractReaderServer).QueryKey(ctx, req.(*QueryKeyRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ContractReader_Bind_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(BindRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ContractReaderServer).Bind(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: ContractReader_Bind_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ContractReaderServer).Bind(ctx, req.(*BindRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ContractReader_Unbind_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UnbindRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ContractReaderServer).Unbind(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: ContractReader_Unbind_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ContractReaderServer).Unbind(ctx, req.(*UnbindRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// ContractReader_ServiceDesc is the grpc.ServiceDesc for ContractReader service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var ContractReader_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "loop.ContractReader", + HandlerType: (*ContractReaderServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "GetLatestValue", + Handler: _ContractReader_GetLatestValue_Handler, + }, + { + MethodName: "BatchGetLatestValues", + Handler: _ContractReader_BatchGetLatestValues_Handler, + }, + { + MethodName: "QueryKey", + Handler: _ContractReader_QueryKey_Handler, + }, + { + MethodName: "Bind", + Handler: _ContractReader_Bind_Handler, + }, + { + MethodName: "Unbind", + Handler: _ContractReader_Unbind_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "contract_reader.proto", +} diff --git a/pkg/loop/internal/pb/generate.go b/pkg/loop/internal/pb/generate.go index b2badd23e..05dbfbde4 100644 --- a/pkg/loop/internal/pb/generate.go +++ b/pkg/loop/internal/pb/generate.go @@ -4,7 +4,7 @@ //go:generate protoc --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative reporting_plugin_service.proto //go:generate protoc --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative telemetry.proto //go:generate protoc --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative pipeline_runner.proto -//go:generate protoc --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative chain_reader.proto +//go:generate protoc --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative contract_reader.proto //go:generate protoc --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative chain_writer.proto //go:generate protoc --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative median_datasource.proto //go:generate protoc --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative codec.proto diff --git a/pkg/loop/internal/relayer/pluginprovider/chainwriter/chain_writer.go b/pkg/loop/internal/relayer/pluginprovider/chainwriter/chain_writer.go index 15ced47ea..f1f39b78d 100644 --- a/pkg/loop/internal/relayer/pluginprovider/chainwriter/chain_writer.go +++ b/pkg/loop/internal/relayer/pluginprovider/chainwriter/chain_writer.go @@ -10,7 +10,7 @@ import ( "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/goplugin" "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/net" "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/pb" - "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/relayer/pluginprovider/chainreader" + "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/relayer/pluginprovider/contractreader" "github.com/smartcontractkit/chainlink-common/pkg/types" ) @@ -21,14 +21,14 @@ type ClientOpt func(*Client) type Client struct { *goplugin.ServiceClient grpc pb.ChainWriterClient - encodeWith chainreader.EncodingVersion + encodeWith contractreader.EncodingVersion } func NewClient(b *net.BrokerExt, cc grpc.ClientConnInterface, opts ...ClientOpt) *Client { client := &Client{ ServiceClient: goplugin.NewServiceClient(b, cc), grpc: pb.NewChainWriterClient(cc), - encodeWith: chainreader.DefaultEncodingVersion, + encodeWith: contractreader.DefaultEncodingVersion, } for _, opt := range opts { @@ -38,14 +38,14 @@ func NewClient(b *net.BrokerExt, cc grpc.ClientConnInterface, opts ...ClientOpt) return client } -func WithClientEncoding(version chainreader.EncodingVersion) ClientOpt { +func WithClientEncoding(version contractreader.EncodingVersion) ClientOpt { return func(client *Client) { client.encodeWith = version } } func (c *Client) SubmitTransaction(ctx context.Context, contractName, method string, params any, transactionID, toAddress string, meta *types.TxMeta, value *big.Int) error { - versionedParams, err := chainreader.EncodeVersionedBytes(params, c.encodeWith) + versionedParams, err := contractreader.EncodeVersionedBytes(params, c.encodeWith) if err != nil { return err } @@ -98,13 +98,13 @@ type ServerOpt func(*Server) type Server struct { pb.UnimplementedChainWriterServer impl types.ChainWriter - encodeWith chainreader.EncodingVersion + encodeWith contractreader.EncodingVersion } func NewServer(impl types.ChainWriter, opts ...ServerOpt) pb.ChainWriterServer { server := &Server{ impl: impl, - encodeWith: chainreader.DefaultEncodingVersion, + encodeWith: contractreader.DefaultEncodingVersion, } for _, opt := range opts { @@ -114,7 +114,7 @@ func NewServer(impl types.ChainWriter, opts ...ServerOpt) pb.ChainWriterServer { return server } -func WithServerEncoding(version chainreader.EncodingVersion) ServerOpt { +func WithServerEncoding(version contractreader.EncodingVersion) ServerOpt { return func(server *Server) { server.encodeWith = version } diff --git a/pkg/loop/internal/relayer/pluginprovider/chainreader/codec.go b/pkg/loop/internal/relayer/pluginprovider/contractreader/codec.go similarity index 99% rename from pkg/loop/internal/relayer/pluginprovider/chainreader/codec.go rename to pkg/loop/internal/relayer/pluginprovider/contractreader/codec.go index 32de5631d..070750fd4 100644 --- a/pkg/loop/internal/relayer/pluginprovider/chainreader/codec.go +++ b/pkg/loop/internal/relayer/pluginprovider/contractreader/codec.go @@ -1,4 +1,4 @@ -package chainreader +package contractreader import ( "context" diff --git a/pkg/loop/internal/relayer/pluginprovider/chainreader/codec_fuzz_test.go b/pkg/loop/internal/relayer/pluginprovider/contractreader/codec_fuzz_test.go similarity index 79% rename from pkg/loop/internal/relayer/pluginprovider/chainreader/codec_fuzz_test.go rename to pkg/loop/internal/relayer/pluginprovider/contractreader/codec_fuzz_test.go index 0c4d45e45..d64d417b4 100644 --- a/pkg/loop/internal/relayer/pluginprovider/chainreader/codec_fuzz_test.go +++ b/pkg/loop/internal/relayer/pluginprovider/contractreader/codec_fuzz_test.go @@ -1,9 +1,9 @@ -package chainreader_test +package contractreader_test import ( "testing" - chaincomponentstest "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/relayer/pluginprovider/chainreader/test" + chaincomponentstest "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/relayer/pluginprovider/contractreader/test" "github.com/smartcontractkit/chainlink-common/pkg/types/interfacetests" ) diff --git a/pkg/loop/internal/relayer/pluginprovider/chainreader/codec_test.go b/pkg/loop/internal/relayer/pluginprovider/contractreader/codec_test.go similarity index 98% rename from pkg/loop/internal/relayer/pluginprovider/chainreader/codec_test.go rename to pkg/loop/internal/relayer/pluginprovider/contractreader/codec_test.go index eda39a218..c22ed15f4 100644 --- a/pkg/loop/internal/relayer/pluginprovider/chainreader/codec_test.go +++ b/pkg/loop/internal/relayer/pluginprovider/contractreader/codec_test.go @@ -1,4 +1,4 @@ -package chainreader_test +package contractreader_test import ( "context" @@ -13,7 +13,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - chaincomponentstest "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/relayer/pluginprovider/chainreader/test" + chaincomponentstest "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/relayer/pluginprovider/contractreader/test" "github.com/smartcontractkit/chainlink-common/pkg/types" "github.com/smartcontractkit/chainlink-common/pkg/types/interfacetests" "github.com/smartcontractkit/chainlink-common/pkg/utils/tests" diff --git a/pkg/loop/internal/relayer/pluginprovider/chainreader/chain_reader.go b/pkg/loop/internal/relayer/pluginprovider/contractreader/contract_reader.go similarity index 99% rename from pkg/loop/internal/relayer/pluginprovider/chainreader/chain_reader.go rename to pkg/loop/internal/relayer/pluginprovider/contractreader/contract_reader.go index d9ddf67c9..912d998da 100644 --- a/pkg/loop/internal/relayer/pluginprovider/chainreader/chain_reader.go +++ b/pkg/loop/internal/relayer/pluginprovider/contractreader/contract_reader.go @@ -1,4 +1,4 @@ -package chainreader +package contractreader import ( "bytes" @@ -44,14 +44,14 @@ type ClientOpt func(*Client) type Client struct { *goplugin.ServiceClient - grpc pb.ChainReaderClient + grpc pb.ContractReaderClient encodeWith EncodingVersion } func NewClient(b *net.BrokerExt, cc grpc.ClientConnInterface, opts ...ClientOpt) *Client { client := &Client{ ServiceClient: goplugin.NewServiceClient(b, cc), - grpc: pb.NewChainReaderClient(cc), + grpc: pb.NewContractReaderClient(cc), encodeWith: DefaultEncodingVersion, } @@ -227,17 +227,17 @@ func (c *Client) Unbind(ctx context.Context, bindings []types.BoundContract) err return net.WrapRPCErr(err) } -var _ pb.ChainReaderServer = (*Server)(nil) +var _ pb.ContractReaderServer = (*Server)(nil) type ServerOpt func(*Server) type Server struct { - pb.UnimplementedChainReaderServer + pb.UnimplementedContractReaderServer impl types.ContractReader encodeWith EncodingVersion } -func NewServer(impl types.ContractReader, opts ...ServerOpt) pb.ChainReaderServer { +func NewServer(impl types.ContractReader, opts ...ServerOpt) pb.ContractReaderServer { server := &Server{ impl: impl, encodeWith: DefaultEncodingVersion, diff --git a/pkg/loop/internal/relayer/pluginprovider/chainreader/chain_reader_test.go b/pkg/loop/internal/relayer/pluginprovider/contractreader/contract_reader_test.go similarity index 63% rename from pkg/loop/internal/relayer/pluginprovider/chainreader/chain_reader_test.go rename to pkg/loop/internal/relayer/pluginprovider/contractreader/contract_reader_test.go index e167ca256..43bf3baf8 100644 --- a/pkg/loop/internal/relayer/pluginprovider/chainreader/chain_reader_test.go +++ b/pkg/loop/internal/relayer/pluginprovider/contractreader/contract_reader_test.go @@ -1,4 +1,4 @@ -package chainreader_test +package contractreader_test import ( "context" @@ -19,8 +19,8 @@ import ( "google.golang.org/grpc/status" "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/pb" - "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/relayer/pluginprovider/chainreader" - chainreadertest "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/relayer/pluginprovider/chainreader/test" + "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/relayer/pluginprovider/contractreader" + contractreadertest "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/relayer/pluginprovider/contractreader/test" "github.com/smartcontractkit/chainlink-common/pkg/types" "github.com/smartcontractkit/chainlink-common/pkg/types/query" "github.com/smartcontractkit/chainlink-common/pkg/types/query/primitives" @@ -31,27 +31,27 @@ import ( func TestVersionedBytesFunctions(t *testing.T) { const unsupportedVer = 25913 - t.Run("chainreader.EncodeVersionedBytes unsupported type", func(t *testing.T) { + t.Run("contractreader.EncodeVersionedBytes unsupported type", func(t *testing.T) { invalidData := make(chan int) - _, err := chainreader.EncodeVersionedBytes(invalidData, chainreader.JSONEncodingVersion2) + _, err := contractreader.EncodeVersionedBytes(invalidData, contractreader.JSONEncodingVersion2) assert.True(t, errors.Is(err, types.ErrInvalidType)) }) - t.Run("chainreader.EncodeVersionedBytes unsupported encoding version", func(t *testing.T) { + t.Run("contractreader.EncodeVersionedBytes unsupported encoding version", func(t *testing.T) { expected := fmt.Errorf("%w: unsupported encoding version %d for data map[key:value]", types.ErrInvalidEncoding, unsupportedVer) data := map[string]interface{}{ "key": "value", } - _, err := chainreader.EncodeVersionedBytes(data, unsupportedVer) + _, err := contractreader.EncodeVersionedBytes(data, unsupportedVer) if err == nil || err.Error() != expected.Error() { t.Errorf("expected error: %s, but got: %v", expected, err) } }) - t.Run("chainreader.DecodeVersionedBytes", func(t *testing.T) { + t.Run("contractreader.DecodeVersionedBytes", func(t *testing.T) { var decodedData map[string]interface{} expected := fmt.Errorf("unsupported encoding version %d for versionedData [97 98 99 100 102]", unsupportedVer) versionedBytes := &pb.VersionedBytes{ @@ -59,26 +59,26 @@ func TestVersionedBytesFunctions(t *testing.T) { Data: []byte("abcdf"), } - err := chainreader.DecodeVersionedBytes(&decodedData, versionedBytes) + err := contractreader.DecodeVersionedBytes(&decodedData, versionedBytes) if err == nil || err.Error() != expected.Error() { t.Errorf("expected error: %s, but got: %v", expected, err) } }) } -func TestChainReaderInterfaceTests(t *testing.T) { +func TestContractReaderInterfaceTests(t *testing.T) { t.Parallel() - chainreadertest.TestAllEncodings(t, func(version chainreader.EncodingVersion) func(t *testing.T) { + contractreadertest.TestAllEncodings(t, func(version contractreader.EncodingVersion) func(t *testing.T) { return func(t *testing.T) { t.Parallel() - fake := &fakeChainReader{} + fake := &fakeContractReader{} RunContractReaderInterfaceTests( t, - chainreadertest.WrapContractReaderTesterForLoop( - &fakeChainReaderInterfaceTester{impl: fake}, - chainreadertest.WithChainReaderLoopEncoding(version), + contractreadertest.WrapContractReaderTesterForLoop( + &fakeContractReaderInterfaceTester{impl: fake}, + contractreadertest.WithContractReaderLoopEncoding(version), ), true, ) @@ -89,30 +89,30 @@ func TestChainReaderInterfaceTests(t *testing.T) { func TestBind(t *testing.T) { t.Parallel() - chainreadertest.TestAllEncodings(t, func(version chainreader.EncodingVersion) func(t *testing.T) { + contractreadertest.TestAllEncodings(t, func(version contractreader.EncodingVersion) func(t *testing.T) { return func(t *testing.T) { t.Parallel() - es := &errChainReader{} - errTester := chainreadertest.WrapContractReaderTesterForLoop( - &fakeChainReaderInterfaceTester{impl: es}, - chainreadertest.WithChainReaderLoopEncoding(version), + es := &errContractReader{} + errTester := contractreadertest.WrapContractReaderTesterForLoop( + &fakeContractReaderInterfaceTester{impl: es}, + contractreadertest.WithContractReaderLoopEncoding(version), ) errTester.Setup(t) - chainReader := errTester.GetChainReader(t) + contractReader := errTester.GetContractReader(t) for _, errorType := range errorTypes { es.err = errorType t.Run("Bind unwraps errors from server "+errorType.Error(), func(t *testing.T) { ctx := tests.Context(t) - err := chainReader.Bind(ctx, []types.BoundContract{{Name: "Contract", Address: "address"}}) + err := contractReader.Bind(ctx, []types.BoundContract{{Name: "Contract", Address: "address"}}) assert.True(t, errors.Is(err, errorType)) }) t.Run("Unbind unwraps errors from server"+errorType.Error(), func(t *testing.T) { ctx := tests.Context(t) - err := chainReader.Unbind(ctx, []types.BoundContract{{Name: "Contract", Address: "address"}}) + err := contractReader.Unbind(ctx, []types.BoundContract{{Name: "Contract", Address: "address"}}) assert.True(t, errors.Is(err, errorType)) }) } @@ -123,27 +123,27 @@ func TestBind(t *testing.T) { func TestGetLatestValue(t *testing.T) { t.Parallel() - chainreadertest.TestAllEncodings(t, func(version chainreader.EncodingVersion) func(t *testing.T) { + contractreadertest.TestAllEncodings(t, func(version contractreader.EncodingVersion) func(t *testing.T) { return func(t *testing.T) { t.Parallel() - es := &errChainReader{} - errTester := chainreadertest.WrapContractReaderTesterForLoop( - &fakeChainReaderInterfaceTester{impl: es}, - chainreadertest.WithChainReaderLoopEncoding(version), + es := &errContractReader{} + errTester := contractreadertest.WrapContractReaderTesterForLoop( + &fakeContractReaderInterfaceTester{impl: es}, + contractreadertest.WithContractReaderLoopEncoding(version), ) errTester.Setup(t) - chainReader := errTester.GetChainReader(t) + contractReader := errTester.GetContractReader(t) t.Run("nil reader should return unimplemented", func(t *testing.T) { t.Parallel() ctx := tests.Context(t) - nilTester := chainreadertest.WrapContractReaderTesterForLoop(&fakeChainReaderInterfaceTester{impl: nil}) + nilTester := contractreadertest.WrapContractReaderTesterForLoop(&fakeContractReaderInterfaceTester{impl: nil}) nilTester.Setup(t) - nilCr := nilTester.GetChainReader(t) + nilCr := nilTester.GetContractReader(t) err := nilCr.GetLatestValue(ctx, "method", primitives.Unconfirmed, "anything", "anything") assert.Equal(t, codes.Unimplemented, status.Convert(err).Code()) @@ -153,7 +153,7 @@ func TestGetLatestValue(t *testing.T) { es.err = errorType t.Run("GetLatestValue unwraps errors from server "+errorType.Error(), func(t *testing.T) { ctx := tests.Context(t) - err := chainReader.GetLatestValue(ctx, "method", primitives.Unconfirmed, nil, "anything") + err := contractReader.GetLatestValue(ctx, "method", primitives.Unconfirmed, nil, "anything") assert.True(t, errors.Is(err, errorType)) }) } @@ -162,7 +162,7 @@ func TestGetLatestValue(t *testing.T) { es.err = nil t.Run("GetLatestValue returns error if type cannot be encoded in the wire format", func(t *testing.T) { ctx := tests.Context(t) - err := chainReader.GetLatestValue(ctx, "method", primitives.Unconfirmed, &cannotEncode{}, &TestStruct{}) + err := contractReader.GetLatestValue(ctx, "method", primitives.Unconfirmed, &cannotEncode{}, &TestStruct{}) assert.True(t, errors.Is(err, types.ErrInvalidType)) }) } @@ -172,27 +172,27 @@ func TestGetLatestValue(t *testing.T) { func TestBatchGetLatestValues(t *testing.T) { t.Parallel() - chainreadertest.TestAllEncodings(t, func(version chainreader.EncodingVersion) func(t *testing.T) { + contractreadertest.TestAllEncodings(t, func(version contractreader.EncodingVersion) func(t *testing.T) { return func(t *testing.T) { t.Parallel() - es := &errChainReader{} - errTester := chainreadertest.WrapContractReaderTesterForLoop( - &fakeChainReaderInterfaceTester{impl: es}, - chainreadertest.WithChainReaderLoopEncoding(version), + es := &errContractReader{} + errTester := contractreadertest.WrapContractReaderTesterForLoop( + &fakeContractReaderInterfaceTester{impl: es}, + contractreadertest.WithContractReaderLoopEncoding(version), ) errTester.Setup(t) - chainReader := errTester.GetChainReader(t) + contractReader := errTester.GetContractReader(t) t.Run("nil reader should return unimplemented", func(t *testing.T) { t.Parallel() ctx := tests.Context(t) - nilTester := chainreadertest.WrapContractReaderTesterForLoop(&fakeChainReaderInterfaceTester{impl: nil}) + nilTester := contractreadertest.WrapContractReaderTesterForLoop(&fakeContractReaderInterfaceTester{impl: nil}) nilTester.Setup(t) - nilCr := nilTester.GetChainReader(t) + nilCr := nilTester.GetContractReader(t) _, err := nilCr.BatchGetLatestValues(ctx, types.BatchGetLatestValuesRequest{}) assert.Equal(t, codes.Unimplemented, status.Convert(err).Code()) @@ -202,7 +202,7 @@ func TestBatchGetLatestValues(t *testing.T) { es.err = errorType t.Run("BatchGetLatestValues unwraps errors from server "+errorType.Error(), func(t *testing.T) { ctx := tests.Context(t) - _, err := chainReader.BatchGetLatestValues(ctx, types.BatchGetLatestValuesRequest{}) + _, err := contractReader.BatchGetLatestValues(ctx, types.BatchGetLatestValuesRequest{}) assert.True(t, errors.Is(err, errorType)) }) } @@ -211,7 +211,7 @@ func TestBatchGetLatestValues(t *testing.T) { es.err = nil t.Run("BatchGetLatestValues returns error if type cannot be encoded in the wire format", func(t *testing.T) { ctx := tests.Context(t) - _, err := chainReader.BatchGetLatestValues( + _, err := contractReader.BatchGetLatestValues( ctx, types.BatchGetLatestValuesRequest{ types.BoundContract{Name: "contract"}: { @@ -229,26 +229,26 @@ func TestBatchGetLatestValues(t *testing.T) { func TestQueryKey(t *testing.T) { t.Parallel() - chainreadertest.TestAllEncodings(t, func(version chainreader.EncodingVersion) func(t *testing.T) { + contractreadertest.TestAllEncodings(t, func(version contractreader.EncodingVersion) func(t *testing.T) { return func(t *testing.T) { t.Parallel() - impl := &protoConversionTestChainReader{} - crTester := chainreadertest.WrapContractReaderTesterForLoop(&fakeChainReaderInterfaceTester{impl: impl}, chainreadertest.WithChainReaderLoopEncoding(version)) + impl := &protoConversionTestContractReader{} + crTester := contractreadertest.WrapContractReaderTesterForLoop(&fakeContractReaderInterfaceTester{impl: impl}, contractreadertest.WithContractReaderLoopEncoding(version)) crTester.Setup(t) - cr := crTester.GetChainReader(t) + cr := crTester.GetContractReader(t) - es := &errChainReader{} - errTester := chainreadertest.WrapContractReaderTesterForLoop(&fakeChainReaderInterfaceTester{impl: es}) + es := &errContractReader{} + errTester := contractreadertest.WrapContractReaderTesterForLoop(&fakeContractReaderInterfaceTester{impl: es}) errTester.Setup(t) - chainReader := errTester.GetChainReader(t) + contractReader := errTester.GetContractReader(t) t.Run("nil reader should return unimplemented", func(t *testing.T) { ctx := tests.Context(t) - nilTester := chainreadertest.WrapContractReaderTesterForLoop(&fakeChainReaderInterfaceTester{impl: nil}) + nilTester := contractreadertest.WrapContractReaderTesterForLoop(&fakeContractReaderInterfaceTester{impl: nil}) nilTester.Setup(t) - nilCr := nilTester.GetChainReader(t) + nilCr := nilTester.GetContractReader(t) _, err := nilCr.QueryKey(ctx, types.BoundContract{}, query.KeyFilter{}, query.LimitAndSort{}, &[]interface{}{nil}) assert.Equal(t, codes.Unimplemented, status.Convert(err).Code()) @@ -258,7 +258,7 @@ func TestQueryKey(t *testing.T) { es.err = errorType t.Run("QueryKey unwraps errors from server "+errorType.Error(), func(t *testing.T) { ctx := tests.Context(t) - _, err := chainReader.QueryKey(ctx, types.BoundContract{}, query.KeyFilter{}, query.LimitAndSort{}, &[]interface{}{nil}) + _, err := contractReader.QueryKey(ctx, types.BoundContract{}, query.KeyFilter{}, query.LimitAndSort{}, &[]interface{}{nil}) assert.True(t, errors.Is(err, errorType)) }) } @@ -285,14 +285,14 @@ func makeEncoder() cbor.EncMode { return e } -type fakeChainReaderInterfaceTester struct { +type fakeContractReaderInterfaceTester struct { interfaceTesterBase impl types.ContractReader cw fakeChainWriter } -func (it *fakeChainReaderInterfaceTester) Setup(_ *testing.T) { - fake, ok := it.impl.(*fakeChainReader) +func (it *fakeContractReaderInterfaceTester) Setup(_ *testing.T) { + fake, ok := it.impl.(*fakeContractReader) if ok { fake.vals = []valConfidencePair{} fake.triggers = []eventConfidencePair{} @@ -300,31 +300,31 @@ func (it *fakeChainReaderInterfaceTester) Setup(_ *testing.T) { } } -func (it *fakeChainReaderInterfaceTester) GetChainReader(_ *testing.T) types.ContractReader { +func (it *fakeContractReaderInterfaceTester) GetContractReader(_ *testing.T) types.ContractReader { return it.impl } -func (it *fakeChainReaderInterfaceTester) GetChainWriter(_ *testing.T) types.ChainWriter { - it.cw.cr = it.impl.(*fakeChainReader) +func (it *fakeContractReaderInterfaceTester) GetChainWriter(_ *testing.T) types.ChainWriter { + it.cw.cr = it.impl.(*fakeContractReader) return &it.cw } -func (it *fakeChainReaderInterfaceTester) DirtyContracts() {} +func (it *fakeContractReaderInterfaceTester) DirtyContracts() {} -func (it *fakeChainReaderInterfaceTester) GetBindings(_ *testing.T) []types.BoundContract { +func (it *fakeContractReaderInterfaceTester) GetBindings(_ *testing.T) []types.BoundContract { return []types.BoundContract{ {Name: AnyContractName, Address: AnyContractName}, {Name: AnySecondContractName, Address: AnySecondContractName}, } } -func (it *fakeChainReaderInterfaceTester) GenerateBlocksTillConfidenceLevel(t *testing.T, contractName, readIdentifier string, confidenceLevel primitives.ConfidenceLevel) { - fake, ok := it.impl.(*fakeChainReader) +func (it *fakeContractReaderInterfaceTester) GenerateBlocksTillConfidenceLevel(t *testing.T, contractName, readIdentifier string, confidenceLevel primitives.ConfidenceLevel) { + fake, ok := it.impl.(*fakeContractReader) assert.True(t, ok) fake.GenerateBlocksTillConfidenceLevel(t, contractName, readIdentifier, confidenceLevel) } -func (it *fakeChainReaderInterfaceTester) MaxWaitTimeForEvents() time.Duration { +func (it *fakeContractReaderInterfaceTester) MaxWaitTimeForEvents() time.Duration { return time.Millisecond * 100 } @@ -338,7 +338,7 @@ type eventConfidencePair struct { confidenceLevel primitives.ConfidenceLevel } -type fakeChainReader struct { +type fakeContractReader struct { fakeTypeProvider vals []valConfidencePair triggers []eventConfidencePair @@ -349,7 +349,7 @@ type fakeChainReader struct { type fakeChainWriter struct { types.ChainWriter - cr *fakeChainReader + cr *fakeContractReader } func (f *fakeChainWriter) SubmitTransaction(ctx context.Context, contractName, method string, args any, transactionID string, toAddress string, meta *types.TxMeta, value *big.Int) error { @@ -393,37 +393,37 @@ func (f *fakeChainWriter) GetFeeComponents(ctx context.Context) (*types.ChainFee return &types.ChainFeeComponents{}, nil } -func (f *fakeChainReader) Start(_ context.Context) error { return nil } +func (f *fakeContractReader) Start(_ context.Context) error { return nil } -func (f *fakeChainReader) Close() error { return nil } +func (f *fakeContractReader) Close() error { return nil } -func (f *fakeChainReader) Ready() error { panic("unimplemented") } +func (f *fakeContractReader) Ready() error { panic("unimplemented") } -func (f *fakeChainReader) Name() string { panic("unimplemented") } +func (f *fakeContractReader) Name() string { panic("unimplemented") } -func (f *fakeChainReader) HealthReport() map[string]error { panic("unimplemented") } +func (f *fakeContractReader) HealthReport() map[string]error { panic("unimplemented") } -func (f *fakeChainReader) Bind(_ context.Context, _ []types.BoundContract) error { +func (f *fakeContractReader) Bind(_ context.Context, _ []types.BoundContract) error { return nil } -func (f *fakeChainReader) Unbind(_ context.Context, _ []types.BoundContract) error { +func (f *fakeContractReader) Unbind(_ context.Context, _ []types.BoundContract) error { return nil } -func (f *fakeChainReader) SetTestStructLatestValue(ts *TestStruct) { +func (f *fakeContractReader) SetTestStructLatestValue(ts *TestStruct) { f.lock.Lock() defer f.lock.Unlock() f.stored = append(f.stored, *ts) } -func (f *fakeChainReader) SetUintLatestValue(val uint64, _ ExpectedGetLatestValueArgs) { +func (f *fakeContractReader) SetUintLatestValue(val uint64, _ ExpectedGetLatestValueArgs) { f.lock.Lock() defer f.lock.Unlock() f.vals = append(f.vals, valConfidencePair{val: val, confidenceLevel: primitives.Unconfirmed}) } -func (f *fakeChainReader) SetBatchLatestValues(batchCallEntry BatchCallEntry) { +func (f *fakeContractReader) SetBatchLatestValues(batchCallEntry BatchCallEntry) { f.lock.Lock() defer f.lock.Unlock() f.batchStored = make(BatchCallEntry) @@ -432,7 +432,7 @@ func (f *fakeChainReader) SetBatchLatestValues(batchCallEntry BatchCallEntry) { } } -func (f *fakeChainReader) GetLatestValue(_ context.Context, readIdentifier string, confidenceLevel primitives.ConfidenceLevel, params, returnVal any) error { +func (f *fakeContractReader) GetLatestValue(_ context.Context, readIdentifier string, confidenceLevel primitives.ConfidenceLevel, params, returnVal any) error { if strings.HasSuffix(readIdentifier, MethodReturningAlterableUint64) { r := returnVal.(*uint64) for i := len(f.vals) - 1; i >= 0; i-- { @@ -506,7 +506,7 @@ func (f *fakeChainReader) GetLatestValue(_ context.Context, readIdentifier strin return nil } -func (f *fakeChainReader) BatchGetLatestValues(_ context.Context, request types.BatchGetLatestValuesRequest) (types.BatchGetLatestValuesResult, error) { +func (f *fakeContractReader) BatchGetLatestValues(_ context.Context, request types.BatchGetLatestValuesRequest) (types.BatchGetLatestValuesResult, error) { result := make(types.BatchGetLatestValuesResult) for requestContract, requestContractBatch := range request { storedContractBatch := f.batchStored[requestContract] @@ -559,7 +559,7 @@ func (f *fakeChainReader) BatchGetLatestValues(_ context.Context, request types. return result, nil } -func (f *fakeChainReader) QueryKey(_ context.Context, _ types.BoundContract, filter query.KeyFilter, limitAndSort query.LimitAndSort, _ any) ([]types.Sequence, error) { +func (f *fakeContractReader) QueryKey(_ context.Context, _ types.BoundContract, filter query.KeyFilter, limitAndSort query.LimitAndSort, _ any) ([]types.Sequence, error) { if filter.Key == EventName { f.lock.Lock() defer f.lock.Unlock() @@ -586,13 +586,13 @@ func (f *fakeChainReader) QueryKey(_ context.Context, _ types.BoundContract, fil return nil, nil } -func (f *fakeChainReader) SetTrigger(testStruct *TestStruct) { +func (f *fakeContractReader) SetTrigger(testStruct *TestStruct) { f.lock.Lock() defer f.lock.Unlock() f.triggers = append(f.triggers, eventConfidencePair{testStruct: *testStruct, confidenceLevel: primitives.Unconfirmed}) } -func (f *fakeChainReader) GenerateBlocksTillConfidenceLevel(_ *testing.T, _, _ string, confidenceLevel primitives.ConfidenceLevel) { +func (f *fakeContractReader) GenerateBlocksTillConfidenceLevel(_ *testing.T, _, _ string, confidenceLevel primitives.ConfidenceLevel) { f.lock.Lock() defer f.lock.Unlock() for i, val := range f.vals { @@ -604,72 +604,72 @@ func (f *fakeChainReader) GenerateBlocksTillConfidenceLevel(_ *testing.T, _, _ s } } -type errChainReader struct { +type errContractReader struct { err error } -func (e *errChainReader) Start(_ context.Context) error { return nil } +func (e *errContractReader) Start(_ context.Context) error { return nil } -func (e *errChainReader) Close() error { return nil } +func (e *errContractReader) Close() error { return nil } -func (e *errChainReader) Ready() error { panic("unimplemented") } +func (e *errContractReader) Ready() error { panic("unimplemented") } -func (e *errChainReader) Name() string { panic("unimplemented") } +func (e *errContractReader) Name() string { panic("unimplemented") } -func (e *errChainReader) HealthReport() map[string]error { panic("unimplemented") } +func (e *errContractReader) HealthReport() map[string]error { panic("unimplemented") } -func (e *errChainReader) GetLatestValue(_ context.Context, _ string, _ primitives.ConfidenceLevel, _, _ any) error { +func (e *errContractReader) GetLatestValue(_ context.Context, _ string, _ primitives.ConfidenceLevel, _, _ any) error { return e.err } -func (e *errChainReader) BatchGetLatestValues(_ context.Context, _ types.BatchGetLatestValuesRequest) (types.BatchGetLatestValuesResult, error) { +func (e *errContractReader) BatchGetLatestValues(_ context.Context, _ types.BatchGetLatestValuesRequest) (types.BatchGetLatestValuesResult, error) { return nil, e.err } -func (e *errChainReader) Bind(_ context.Context, _ []types.BoundContract) error { +func (e *errContractReader) Bind(_ context.Context, _ []types.BoundContract) error { return e.err } -func (e *errChainReader) Unbind(_ context.Context, _ []types.BoundContract) error { +func (e *errContractReader) Unbind(_ context.Context, _ []types.BoundContract) error { return e.err } -func (e *errChainReader) QueryKey(_ context.Context, _ types.BoundContract, _ query.KeyFilter, _ query.LimitAndSort, _ any) ([]types.Sequence, error) { +func (e *errContractReader) QueryKey(_ context.Context, _ types.BoundContract, _ query.KeyFilter, _ query.LimitAndSort, _ any) ([]types.Sequence, error) { return nil, e.err } -type protoConversionTestChainReader struct { +type protoConversionTestContractReader struct { expectedBindings types.BoundContract expectedQueryFilter query.KeyFilter expectedLimitAndSort query.LimitAndSort } -func (pc *protoConversionTestChainReader) Start(_ context.Context) error { return nil } +func (pc *protoConversionTestContractReader) Start(_ context.Context) error { return nil } -func (pc *protoConversionTestChainReader) Close() error { return nil } +func (pc *protoConversionTestContractReader) Close() error { return nil } -func (pc *protoConversionTestChainReader) Ready() error { panic("unimplemented") } +func (pc *protoConversionTestContractReader) Ready() error { panic("unimplemented") } -func (pc *protoConversionTestChainReader) Name() string { panic("unimplemented") } +func (pc *protoConversionTestContractReader) Name() string { panic("unimplemented") } -func (pc *protoConversionTestChainReader) HealthReport() map[string]error { panic("unimplemented") } +func (pc *protoConversionTestContractReader) HealthReport() map[string]error { panic("unimplemented") } -func (pc *protoConversionTestChainReader) GetLatestValue(_ context.Context, _ string, _ primitives.ConfidenceLevel, _, _ any) error { +func (pc *protoConversionTestContractReader) GetLatestValue(_ context.Context, _ string, _ primitives.ConfidenceLevel, _, _ any) error { return nil } -func (pc *protoConversionTestChainReader) BatchGetLatestValues(_ context.Context, _ types.BatchGetLatestValuesRequest) (types.BatchGetLatestValuesResult, error) { +func (pc *protoConversionTestContractReader) BatchGetLatestValues(_ context.Context, _ types.BatchGetLatestValuesRequest) (types.BatchGetLatestValuesResult, error) { return nil, nil } -func (pc *protoConversionTestChainReader) Bind(_ context.Context, bc []types.BoundContract) error { +func (pc *protoConversionTestContractReader) Bind(_ context.Context, bc []types.BoundContract) error { if !reflect.DeepEqual(pc.expectedBindings, bc) { return fmt.Errorf("bound contract wasn't parsed properly") } return nil } -func (pc *protoConversionTestChainReader) Unbind(_ context.Context, bc []types.BoundContract) error { +func (pc *protoConversionTestContractReader) Unbind(_ context.Context, bc []types.BoundContract) error { if !reflect.DeepEqual(pc.expectedBindings, bc) { return fmt.Errorf("bound contract wasn't parsed properly") } @@ -677,7 +677,7 @@ func (pc *protoConversionTestChainReader) Unbind(_ context.Context, bc []types.B return nil } -func (pc *protoConversionTestChainReader) QueryKey(_ context.Context, _ types.BoundContract, filter query.KeyFilter, limitAndSort query.LimitAndSort, _ any) ([]types.Sequence, error) { +func (pc *protoConversionTestContractReader) QueryKey(_ context.Context, _ types.BoundContract, filter query.KeyFilter, limitAndSort query.LimitAndSort, _ any) ([]types.Sequence, error) { if !reflect.DeepEqual(pc.expectedQueryFilter, filter) { return nil, fmt.Errorf("filter wasn't parsed properly") } diff --git a/pkg/loop/internal/relayer/pluginprovider/chainreader/helper_test.go b/pkg/loop/internal/relayer/pluginprovider/contractreader/helper_test.go similarity index 99% rename from pkg/loop/internal/relayer/pluginprovider/chainreader/helper_test.go rename to pkg/loop/internal/relayer/pluginprovider/contractreader/helper_test.go index 244c6367f..3040fe02b 100644 --- a/pkg/loop/internal/relayer/pluginprovider/chainreader/helper_test.go +++ b/pkg/loop/internal/relayer/pluginprovider/contractreader/helper_test.go @@ -1,4 +1,4 @@ -package chainreader_test +package contractreader_test import ( "errors" diff --git a/pkg/loop/internal/relayer/pluginprovider/chainreader/test/codec.go b/pkg/loop/internal/relayer/pluginprovider/contractreader/test/codec.go similarity index 100% rename from pkg/loop/internal/relayer/pluginprovider/chainreader/test/codec.go rename to pkg/loop/internal/relayer/pluginprovider/contractreader/test/codec.go diff --git a/pkg/loop/internal/relayer/pluginprovider/chainreader/test/codec_loop_tester.go b/pkg/loop/internal/relayer/pluginprovider/contractreader/test/codec_loop_tester.go similarity index 89% rename from pkg/loop/internal/relayer/pluginprovider/chainreader/test/codec_loop_tester.go rename to pkg/loop/internal/relayer/pluginprovider/contractreader/test/codec_loop_tester.go index 1aa8f1b8e..4be008bd4 100644 --- a/pkg/loop/internal/relayer/pluginprovider/chainreader/test/codec_loop_tester.go +++ b/pkg/loop/internal/relayer/pluginprovider/contractreader/test/codec_loop_tester.go @@ -6,7 +6,7 @@ import ( "google.golang.org/grpc" "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/pb" - "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/relayer/pluginprovider/chainreader" + "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/relayer/pluginprovider/contractreader" "github.com/smartcontractkit/chainlink-common/pkg/types" "github.com/smartcontractkit/chainlink-common/pkg/types/interfacetests" ) @@ -26,7 +26,7 @@ func (c *codecReaderLoopTester) Setup(t *testing.T) { codec := c.CodecInterfaceTester.GetCodec(t) c.lst.registerHook = func(server *grpc.Server) { if codec != nil { - impl := chainreader.NewCodecServer(codec) + impl := contractreader.NewCodecServer(codec) pb.RegisterCodecServer(server, impl) } } @@ -38,7 +38,7 @@ func (c *codecReaderLoopTester) Name() string { } func (c *codecReaderLoopTester) GetCodec(t *testing.T) types.Codec { - return chainreader.NewCodecClient(nil, c.lst.GetConn(t)) + return contractreader.NewCodecClient(nil, c.lst.GetConn(t)) } func (c *codecReaderLoopTester) IncludeArrayEncodingSizeEnforcement() bool { diff --git a/pkg/loop/internal/relayer/pluginprovider/chainreader/test/chain_reader.go b/pkg/loop/internal/relayer/pluginprovider/contractreader/test/contract_reader.go similarity index 62% rename from pkg/loop/internal/relayer/pluginprovider/chainreader/test/chain_reader.go rename to pkg/loop/internal/relayer/pluginprovider/contractreader/test/contract_reader.go index 1c636050e..7c469e662 100644 --- a/pkg/loop/internal/relayer/pluginprovider/chainreader/test/chain_reader.go +++ b/pkg/loop/internal/relayer/pluginprovider/contractreader/test/contract_reader.go @@ -13,9 +13,9 @@ import ( ) var ( - // ChainReader is a static implementation of [types.ContractReader], [testtypes.Evaluator] and [types.PluginProvider + // ContractReader is a static implementation of [types.ContractReader], [testtypes.Evaluator] and [types.PluginProvider // it is used for testing the [types.PluginProvider] interface - ChainReader = staticChainReader{ + ContractReader = staticContractReader{ address: "0x24", contractName: "anyContract", contractMethod: "anyMethod", @@ -24,8 +24,8 @@ var ( } ) -// staticChainReader is a static implementation of ChainComponentsTester -type staticChainReader struct { +// staticContractReader is a static implementation of ContractReaderTester +type staticContractReader struct { address string contractName string contractMethod string @@ -33,28 +33,28 @@ type staticChainReader struct { params map[string]any } -var _ testtypes.Evaluator[types.ContractReader] = staticChainReader{} -var _ types.ContractReader = staticChainReader{} +var _ testtypes.Evaluator[types.ContractReader] = staticContractReader{} +var _ types.ContractReader = staticContractReader{} -func (c staticChainReader) Start(_ context.Context) error { return nil } +func (c staticContractReader) Start(_ context.Context) error { return nil } -func (c staticChainReader) Close() error { return nil } +func (c staticContractReader) Close() error { return nil } -func (c staticChainReader) Ready() error { panic("unimplemented") } +func (c staticContractReader) Ready() error { panic("unimplemented") } -func (c staticChainReader) Name() string { panic("unimplemented") } +func (c staticContractReader) Name() string { panic("unimplemented") } -func (c staticChainReader) HealthReport() map[string]error { panic("unimplemented") } +func (c staticContractReader) HealthReport() map[string]error { panic("unimplemented") } -func (c staticChainReader) Bind(_ context.Context, _ []types.BoundContract) error { +func (c staticContractReader) Bind(_ context.Context, _ []types.BoundContract) error { return nil } -func (c staticChainReader) Unbind(_ context.Context, _ []types.BoundContract) error { +func (c staticContractReader) Unbind(_ context.Context, _ []types.BoundContract) error { return nil } -func (c staticChainReader) GetLatestValue(_ context.Context, readName string, _ primitives.ConfidenceLevel, params, returnVal any) error { +func (c staticContractReader) GetLatestValue(_ context.Context, readName string, _ primitives.ConfidenceLevel, params, returnVal any) error { comp := types.BoundContract{ Address: c.address, Name: c.contractName, @@ -84,15 +84,15 @@ func (c staticChainReader) GetLatestValue(_ context.Context, readName string, _ return nil } -func (c staticChainReader) BatchGetLatestValues(_ context.Context, _ types.BatchGetLatestValuesRequest) (types.BatchGetLatestValuesResult, error) { +func (c staticContractReader) BatchGetLatestValues(_ context.Context, _ types.BatchGetLatestValuesRequest) (types.BatchGetLatestValuesResult, error) { return nil, nil } -func (c staticChainReader) QueryKey(_ context.Context, _ types.BoundContract, _ query.KeyFilter, _ query.LimitAndSort, _ any) ([]types.Sequence, error) { +func (c staticContractReader) QueryKey(_ context.Context, _ types.BoundContract, _ query.KeyFilter, _ query.LimitAndSort, _ any) ([]types.Sequence, error) { return nil, nil } -func (c staticChainReader) Evaluate(ctx context.Context, cr types.ContractReader) error { +func (c staticContractReader) Evaluate(ctx context.Context, cr types.ContractReader) error { gotLatestValue := make(map[string]any) if err := cr.GetLatestValue( diff --git a/pkg/loop/internal/relayer/pluginprovider/chainreader/test/chain_reader_loop_tester.go b/pkg/loop/internal/relayer/pluginprovider/contractreader/test/contract_reader_loop_tester.go similarity index 60% rename from pkg/loop/internal/relayer/pluginprovider/chainreader/test/chain_reader_loop_tester.go rename to pkg/loop/internal/relayer/pluginprovider/contractreader/test/contract_reader_loop_tester.go index b098a03c0..427552d80 100644 --- a/pkg/loop/internal/relayer/pluginprovider/chainreader/test/chain_reader_loop_tester.go +++ b/pkg/loop/internal/relayer/pluginprovider/contractreader/test/contract_reader_loop_tester.go @@ -6,22 +6,22 @@ import ( "google.golang.org/grpc" "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/pb" - "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/relayer/pluginprovider/chainreader" + "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/relayer/pluginprovider/contractreader" "github.com/smartcontractkit/chainlink-common/pkg/types" . "github.com/smartcontractkit/chainlink-common/pkg/types/interfacetests" //nolint common practice to import test mods with . ) -func TestAllEncodings(t *testing.T, test func(chainreader.EncodingVersion) func(t *testing.T)) { +func TestAllEncodings(t *testing.T, test func(contractreader.EncodingVersion) func(t *testing.T)) { t.Helper() encodings := []struct { Name string - Version chainreader.EncodingVersion + Version contractreader.EncodingVersion }{ - {Name: "JSONv1", Version: chainreader.JSONEncodingVersion1}, - {Name: "JSONv2", Version: chainreader.JSONEncodingVersion2}, - {Name: "CBOR", Version: chainreader.CBOREncodingVersion}, + {Name: "JSONv1", Version: contractreader.JSONEncodingVersion1}, + {Name: "JSONv2", Version: contractreader.JSONEncodingVersion2}, + {Name: "CBOR", Version: contractreader.CBOREncodingVersion}, } for idx := range encodings { @@ -37,7 +37,7 @@ type LoopTesterOpt func(*contractReaderLoopTester) func WrapContractReaderTesterForLoop(wrapped ChainComponentsInterfaceTester[*testing.T], opts ...LoopTesterOpt) ChainComponentsInterfaceTester[*testing.T] { tester := &contractReaderLoopTester{ ChainComponentsInterfaceTester: wrapped, - encodeWith: chainreader.DefaultEncodingVersion, + encodeWith: contractreader.DefaultEncodingVersion, } for _, opt := range opts { @@ -47,7 +47,7 @@ func WrapContractReaderTesterForLoop(wrapped ChainComponentsInterfaceTester[*tes return tester } -func WithChainReaderLoopEncoding(version chainreader.EncodingVersion) LoopTesterOpt { +func WithContractReaderLoopEncoding(version contractreader.EncodingVersion) LoopTesterOpt { return func(tester *contractReaderLoopTester) { tester.encodeWith = version } @@ -56,25 +56,25 @@ func WithChainReaderLoopEncoding(version chainreader.EncodingVersion) LoopTester type contractReaderLoopTester struct { ChainComponentsInterfaceTester[*testing.T] lst loopServerTester - encodeWith chainreader.EncodingVersion + encodeWith contractreader.EncodingVersion } func (c *contractReaderLoopTester) Setup(t *testing.T) { c.ChainComponentsInterfaceTester.Setup(t) - chainReader := c.ChainComponentsInterfaceTester.GetChainReader(t) + contractReader := c.ChainComponentsInterfaceTester.GetContractReader(t) c.lst.registerHook = func(server *grpc.Server) { - if chainReader != nil { - impl := chainreader.NewServer(chainReader, chainreader.WithServerEncoding(c.encodeWith)) - pb.RegisterChainReaderServer(server, impl) + if contractReader != nil { + impl := contractreader.NewServer(contractReader, contractreader.WithServerEncoding(c.encodeWith)) + pb.RegisterContractReaderServer(server, impl) } } c.lst.Setup(t) } -func (c *contractReaderLoopTester) GetChainReader(t *testing.T) types.ContractReader { - return chainreader.NewClient(nil, c.lst.GetConn(t), chainreader.WithClientEncoding(c.encodeWith)) +func (c *contractReaderLoopTester) GetContractReader(t *testing.T) types.ContractReader { + return contractreader.NewClient(nil, c.lst.GetConn(t), contractreader.WithClientEncoding(c.encodeWith)) } func (c *contractReaderLoopTester) Name() string { diff --git a/pkg/loop/internal/relayer/pluginprovider/chainreader/test/loop_server_tester.go b/pkg/loop/internal/relayer/pluginprovider/contractreader/test/loop_server_tester.go similarity index 100% rename from pkg/loop/internal/relayer/pluginprovider/chainreader/test/loop_server_tester.go rename to pkg/loop/internal/relayer/pluginprovider/contractreader/test/loop_server_tester.go diff --git a/pkg/loop/internal/relayer/pluginprovider/ext/ccip/test/commit_provider.go b/pkg/loop/internal/relayer/pluginprovider/ext/ccip/test/commit_provider.go index b4b1d6711..83d0057f5 100644 --- a/pkg/loop/internal/relayer/pluginprovider/ext/ccip/test/commit_provider.go +++ b/pkg/loop/internal/relayer/pluginprovider/ext/ccip/test/commit_provider.go @@ -63,8 +63,8 @@ type staticCommitProvider struct { staticCommitProviderConfig } -// ChainReader implements CommitProviderEvaluator. -func (s staticCommitProvider) ChainReader() types.ContractReader { +// ContractReader implements CommitProviderEvaluator. +func (s staticCommitProvider) ContractReader() types.ContractReader { return nil } diff --git a/pkg/loop/internal/relayer/pluginprovider/ext/ccip/test/exec_provider.go b/pkg/loop/internal/relayer/pluginprovider/ext/ccip/test/exec_provider.go index bea2e8ab9..2dec5de1e 100644 --- a/pkg/loop/internal/relayer/pluginprovider/ext/ccip/test/exec_provider.go +++ b/pkg/loop/internal/relayer/pluginprovider/ext/ccip/test/exec_provider.go @@ -67,8 +67,8 @@ type staticExecProvider struct { staticExecProviderConfig } -// ChainReader implements ExecProviderEvaluator. -func (s staticExecProvider) ChainReader() types.ContractReader { +// ContractReader implements ExecProviderEvaluator. +func (s staticExecProvider) ContractReader() types.ContractReader { return nil } diff --git a/pkg/loop/internal/relayer/pluginprovider/ext/median/median.go b/pkg/loop/internal/relayer/pluginprovider/ext/median/median.go index 4b45234c2..35f6c68d3 100644 --- a/pkg/loop/internal/relayer/pluginprovider/ext/median/median.go +++ b/pkg/loop/internal/relayer/pluginprovider/ext/median/median.go @@ -18,7 +18,7 @@ import ( "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/goplugin" "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/net" "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/pb" - "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/relayer/pluginprovider/chainreader" + "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/relayer/pluginprovider/contractreader" "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/relayer/pluginprovider/ocr2" "github.com/smartcontractkit/chainlink-common/pkg/types" "github.com/smartcontractkit/chainlink-common/pkg/types/query/primitives" @@ -34,7 +34,7 @@ type ProviderClient struct { reportCodec median.ReportCodec medianContract median.MedianContract onchainConfigCodec median.OnchainConfigCodec - chainReader types.ContractReader + contractReader types.ContractReader codec types.Codec } @@ -44,16 +44,16 @@ func NewProviderClient(b *net.BrokerExt, cc grpc.ClientConnInterface) *ProviderC m.medianContract = &medianContractClient{pb.NewMedianContractClient(cc)} m.onchainConfigCodec = &onchainConfigCodecClient{b, pb.NewOnchainConfigCodecClient(cc)} - maybeCr := chainreader.NewClient(b, cc) + maybeCr := contractreader.NewClient(b, cc) var anyRetVal int err := maybeCr.GetLatestValue(context.Background(), "", primitives.Unconfirmed, nil, &anyRetVal) if status.Convert(err).Code() != codes.Unimplemented { - m.chainReader = maybeCr + m.contractReader = maybeCr } - maybeCodec := chainreader.NewCodecClient(b, cc) + maybeCodec := contractreader.NewCodecClient(b, cc) err = maybeCodec.Decode(context.Background(), []byte{}, &anyRetVal, "") if status.Convert(err).Code() != codes.Unimplemented { m.codec = maybeCodec @@ -74,8 +74,8 @@ func (m *ProviderClient) OnchainConfigCodec() median.OnchainConfigCodec { return m.onchainConfigCodec } -func (m *ProviderClient) ChainReader() types.ContractReader { - return m.chainReader +func (m *ProviderClient) ContractReader() types.ContractReader { + return m.contractReader } func (m *ProviderClient) Codec() types.Codec { diff --git a/pkg/loop/internal/relayer/pluginprovider/ext/median/test/median.go b/pkg/loop/internal/relayer/pluginprovider/ext/median/test/median.go index d12098084..dd7623d2a 100644 --- a/pkg/loop/internal/relayer/pluginprovider/ext/median/test/median.go +++ b/pkg/loop/internal/relayer/pluginprovider/ext/median/test/median.go @@ -193,7 +193,7 @@ type staticMedianProviderConfig struct { reportCodec staticReportCodec medianContract staticMedianContract onchainConfigCodec staticOnchainConfigCodec - chainReader testtypes.ChainComponentsTester + contractReader testtypes.ContractReaderTester codec testtypes.CodecEvaluator } @@ -236,8 +236,8 @@ func (s staticMedianProvider) OnchainConfigCodec() median.OnchainConfigCodec { return s.onchainConfigCodec } -func (s staticMedianProvider) ChainReader() types.ContractReader { - return s.chainReader +func (s staticMedianProvider) ContractReader() types.ContractReader { + return s.contractReader } func (s staticMedianProvider) Codec() types.Codec { @@ -313,10 +313,10 @@ func (s staticMedianProvider) Evaluate(ctx context.Context, provider types.Media return fmt.Errorf("failed to evaluate onchain config codec: %w", err) } - cr := provider.ChainReader() - err = s.chainReader.Evaluate(ctx, cr) + cr := provider.ContractReader() + err = s.contractReader.Evaluate(ctx, cr) if err != nil { - return fmt.Errorf("providers chain reader does not equal static chain reader: %w", err) + return fmt.Errorf("providers contract reader does not equal static contract reader: %w", err) } return nil diff --git a/pkg/loop/internal/relayer/pluginprovider/ext/median/test/test.go b/pkg/loop/internal/relayer/pluginprovider/ext/median/test/test.go index 66938ecad..ef704643d 100644 --- a/pkg/loop/internal/relayer/pluginprovider/ext/median/test/test.go +++ b/pkg/loop/internal/relayer/pluginprovider/ext/median/test/test.go @@ -9,7 +9,7 @@ import ( libocr "github.com/smartcontractkit/libocr/offchainreporting2plus/types" errorlogtest "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/core/services/errorlog/test" - chaincomponentstest "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/relayer/pluginprovider/chainreader/test" + chaincomponentstest "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/relayer/pluginprovider/contractreader/test" ocr2test "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/relayer/pluginprovider/ocr2/test" ) @@ -52,7 +52,7 @@ var ( }, }, onchainConfigCodec: staticOnchainConfigCodec{}, - chainReader: chaincomponentstest.ChainReader, + contractReader: chaincomponentstest.ContractReader, }, } diff --git a/pkg/loop/internal/relayer/pluginprovider/ext/mercury/mercury.go b/pkg/loop/internal/relayer/pluginprovider/ext/mercury/mercury.go index 047745f75..775848985 100644 --- a/pkg/loop/internal/relayer/pluginprovider/ext/mercury/mercury.go +++ b/pkg/loop/internal/relayer/pluginprovider/ext/mercury/mercury.go @@ -6,7 +6,7 @@ import ( "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/goplugin" "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/net" mercury_pb "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/pb/mercury" - "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/relayer/pluginprovider/chainreader" + "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/relayer/pluginprovider/contractreader" "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/relayer/pluginprovider/ocr2" mercury_v1_internal "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/relayer/pluginprovider/ext/mercury/v1" @@ -51,7 +51,7 @@ func NewProviderClient(b *net.BrokerExt, cc grpc.ClientConnInterface) *ProviderC m.serverFetcher = newServerFetcherClient(cc) m.mercuryChainReader = newChainReaderClient(cc) - m.chainReader = chainreader.NewClient(b, cc) + m.chainReader = contractreader.NewClient(b, cc) return m } diff --git a/pkg/loop/internal/relayer/pluginprovider/ext/mercury/test/provider.go b/pkg/loop/internal/relayer/pluginprovider/ext/mercury/test/provider.go index 03ff88e46..e3d1e1b77 100644 --- a/pkg/loop/internal/relayer/pluginprovider/ext/mercury/test/provider.go +++ b/pkg/loop/internal/relayer/pluginprovider/ext/mercury/test/provider.go @@ -111,8 +111,8 @@ func (s staticMercuryProvider) MercuryChainReader() mercurytypes.ChainReader { return s.mercuryChainReader } -func (s staticMercuryProvider) ChainReader() types.ContractReader { - // panic("mercury does not use the general ChainReader interface yet") +func (s staticMercuryProvider) ContractReader() types.ContractReader { + // panic("mercury does not use the general ContractReader interface yet") return nil } diff --git a/pkg/loop/internal/relayer/pluginprovider/ocr2/config.go b/pkg/loop/internal/relayer/pluginprovider/ocr2/config.go index 96c86d58a..9ed3d7d5b 100644 --- a/pkg/loop/internal/relayer/pluginprovider/ocr2/config.go +++ b/pkg/loop/internal/relayer/pluginprovider/ocr2/config.go @@ -10,7 +10,7 @@ import ( "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/goplugin" "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/net" "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/pb" - "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/relayer/pluginprovider/chainreader" + "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/relayer/pluginprovider/contractreader" "github.com/smartcontractkit/chainlink-common/pkg/types" ) @@ -235,12 +235,12 @@ func RegisterPluginProviderServices(s *grpc.Server, provider types.PluginProvide pb.RegisterContractTransmitterServer(s, &contractTransmitterServer{impl: provider.ContractTransmitter()}) // although these are part of the plugin provider interface, they are not actually implemented by all plugin providers (ie median) // once we transition all plugins to the core node api, we can remove these checks - if provider.ChainReader() != nil { - pb.RegisterChainReaderServer(s, chainreader.NewServer(provider.ChainReader())) + if provider.ContractReader() != nil { + pb.RegisterContractReaderServer(s, contractreader.NewServer(provider.ContractReader())) } if provider.Codec() != nil { - pb.RegisterCodecServer(s, chainreader.NewCodecServer(provider.Codec())) + pb.RegisterCodecServer(s, contractreader.NewCodecServer(provider.Codec())) } } diff --git a/pkg/loop/internal/relayer/pluginprovider/ocr2/plugin_provider.go b/pkg/loop/internal/relayer/pluginprovider/ocr2/plugin_provider.go index ebb4493f9..6ac66dddd 100644 --- a/pkg/loop/internal/relayer/pluginprovider/ocr2/plugin_provider.go +++ b/pkg/loop/internal/relayer/pluginprovider/ocr2/plugin_provider.go @@ -7,14 +7,14 @@ import ( "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/goplugin" "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/net" "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/pb" - "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/relayer/pluginprovider/chainreader" + "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/relayer/pluginprovider/contractreader" "github.com/smartcontractkit/chainlink-common/pkg/types" ) type PluginProviderClient struct { *ConfigProviderClient contractTransmitter libocr.ContractTransmitter - chainReader types.ContractReader + contractReader types.ContractReader codec types.Codec } @@ -26,8 +26,8 @@ var _ goplugin.GRPCClientConn = (*PluginProviderClient)(nil) func NewPluginProviderClient(b *net.BrokerExt, cc grpc.ClientConnInterface) *PluginProviderClient { p := &PluginProviderClient{ConfigProviderClient: NewConfigProviderClient(b.WithName("PluginProviderClient"), cc)} p.contractTransmitter = &contractTransmitterClient{b, pb.NewContractTransmitterClient(cc)} - p.chainReader = chainreader.NewClient(b, cc) - p.codec = chainreader.NewCodecClient(b, cc) + p.contractReader = contractreader.NewClient(b, cc) + p.codec = contractreader.NewCodecClient(b, cc) return p } @@ -35,8 +35,8 @@ func (p *PluginProviderClient) ContractTransmitter() libocr.ContractTransmitter return p.contractTransmitter } -func (p *PluginProviderClient) ChainReader() types.ContractReader { - return p.chainReader +func (p *PluginProviderClient) ContractReader() types.ContractReader { + return p.contractReader } func (p *PluginProviderClient) Codec() types.Codec { diff --git a/pkg/loop/internal/relayer/pluginprovider/ocr2/test/plugin_provider.go b/pkg/loop/internal/relayer/pluginprovider/ocr2/test/plugin_provider.go index 8e3825ab7..a73ef1e49 100644 --- a/pkg/loop/internal/relayer/pluginprovider/ocr2/test/plugin_provider.go +++ b/pkg/loop/internal/relayer/pluginprovider/ocr2/test/plugin_provider.go @@ -7,7 +7,7 @@ import ( libocr "github.com/smartcontractkit/libocr/offchainreporting2plus/types" "github.com/stretchr/testify/assert" - chaincomponentstest "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/relayer/pluginprovider/chainreader/test" + chaincomponentstest "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/relayer/pluginprovider/contractreader/test" testtypes "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/test/types" "github.com/smartcontractkit/chainlink-common/pkg/types" ) @@ -18,7 +18,7 @@ var AgnosticProvider = staticPluginProvider{ offchainConfigDigester: OffchainConfigDigester, contractConfigTracker: ContractConfigTracker, contractTransmitter: ContractTransmitter, - chainReader: chaincomponentstest.ChainReader, + contractReader: chaincomponentstest.ContractReader, codec: chaincomponentstest.Codec, } @@ -27,7 +27,7 @@ type staticPluginProvider struct { offchainConfigDigester staticOffchainConfigDigester contractConfigTracker staticContractConfigTracker contractTransmitter testtypes.ContractTransmitterEvaluator - chainReader testtypes.ChainComponentsTester + contractReader testtypes.ContractReaderTester codec testtypes.CodecEvaluator } @@ -55,8 +55,8 @@ func (s staticPluginProvider) ContractTransmitter() libocr.ContractTransmitter { return s.contractTransmitter } -func (s staticPluginProvider) ChainReader() types.ContractReader { - return s.chainReader +func (s staticPluginProvider) ContractReader() types.ContractReader { + return s.contractReader } func (s staticPluginProvider) Codec() types.Codec { @@ -79,9 +79,9 @@ func (s staticPluginProvider) AssertEqual(ctx context.Context, t *testing.T, pro assert.NoError(t, s.contractTransmitter.Evaluate(ctx, provider.ContractTransmitter())) }) - t.Run("ChainReader", func(t *testing.T) { + t.Run("ContractReader", func(t *testing.T) { t.Parallel() - assert.NoError(t, s.chainReader.Evaluate(ctx, provider.ChainReader())) + assert.NoError(t, s.contractReader.Evaluate(ctx, provider.ContractReader())) }) } @@ -101,7 +101,7 @@ func (s staticPluginProvider) Evaluate(ctx context.Context, provider types.Plugi return err } - err = s.chainReader.Evaluate(ctx, provider.ChainReader()) + err = s.contractReader.Evaluate(ctx, provider.ContractReader()) if err != nil { return err } diff --git a/pkg/loop/internal/relayer/pluginprovider/ocr2/test/test.go b/pkg/loop/internal/relayer/pluginprovider/ocr2/test/test.go index 33c441cac..3af3c08f2 100644 --- a/pkg/loop/internal/relayer/pluginprovider/ocr2/test/test.go +++ b/pkg/loop/internal/relayer/pluginprovider/ocr2/test/test.go @@ -4,7 +4,7 @@ import ( "github.com/smartcontractkit/libocr/commontypes" libocr "github.com/smartcontractkit/libocr/offchainreporting2plus/types" - chaincomponentstest "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/relayer/pluginprovider/chainreader/test" + chaincomponentstest "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/relayer/pluginprovider/contractreader/test" ) const ( @@ -59,7 +59,7 @@ var ( offchainConfigDigester: OffchainConfigDigester, contractConfigTracker: ContractConfigTracker, contractTransmitter: ContractTransmitter, - chainReader: chaincomponentstest.ChainReader, + contractReader: chaincomponentstest.ContractReader, } configDigest = libocr.ConfigDigest([32]byte{1: 7, 13: 11, 31: 23}) diff --git a/pkg/loop/internal/relayer/relayer.go b/pkg/loop/internal/relayer/relayer.go index 90eec314d..b7d638108 100644 --- a/pkg/loop/internal/relayer/relayer.go +++ b/pkg/loop/internal/relayer/relayer.go @@ -17,8 +17,8 @@ import ( "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/goplugin" "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/net" "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/pb" - "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/relayer/pluginprovider/chainreader" "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/relayer/pluginprovider/chainwriter" + "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/relayer/pluginprovider/contractreader" "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/relayer/pluginprovider/ext/ccip" "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/relayer/pluginprovider/ext/median" "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/relayer/pluginprovider/ext/mercury" @@ -207,7 +207,7 @@ func (r *relayerClient) NewChainWriter(_ context.Context, chainWriterConfig []by } func (r *relayerClient) NewContractReader(_ context.Context, contractReaderConfig []byte) (types.ContractReader, error) { - cc := r.NewClientConn("ChainReader", func(ctx context.Context) (uint32, net.Resources, error) { + cc := r.NewClientConn("ContractReader", func(ctx context.Context) (uint32, net.Resources, error) { reply, err := r.relayer.NewContractReader(ctx, &pb.NewContractReaderRequest{ContractReaderConfig: contractReaderConfig}) if err != nil { return 0, nil, err @@ -215,7 +215,7 @@ func (r *relayerClient) NewContractReader(_ context.Context, contractReaderConfi return reply.ContractReaderID, nil, nil }) - return chainreader.NewClient(r.WithName("ChainReaderClient"), cc), nil + return contractreader.NewClient(r.WithName("ContractReaderClient"), cc), nil } func (r *relayerClient) NewConfigProvider(ctx context.Context, rargs types.RelayArgs) (types.ConfigProvider, error) { @@ -395,7 +395,7 @@ func (r *relayerServer) NewContractReader(ctx context.Context, request *pb.NewCo const name = "ContractReader" id, _, err := r.ServeNew(name, func(s *grpc.Server) { - chainreader.RegisterContractReaderService(s, cr) + contractreader.RegisterContractReaderService(s, cr) }, net.Resource{Closer: cr, Name: name}) if err != nil { return nil, err diff --git a/pkg/loop/internal/relayer/test/relayer.go b/pkg/loop/internal/relayer/test/relayer.go index 655c4662e..07b63b546 100644 --- a/pkg/loop/internal/relayer/test/relayer.go +++ b/pkg/loop/internal/relayer/test/relayer.go @@ -16,7 +16,7 @@ import ( "google.golang.org/grpc/status" keystoretest "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/core/services/keystore/test" - chaincomponentstest "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/relayer/pluginprovider/chainreader/test" + chaincomponentstest "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/relayer/pluginprovider/contractreader/test" cciptest "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/relayer/pluginprovider/ext/ccip/test" mediantest "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/relayer/pluginprovider/ext/median/test" mercurytest "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/relayer/pluginprovider/ext/mercury/test" @@ -63,7 +63,7 @@ type staticPluginRelayerConfig struct { commitProvider cciptest.CommitProviderTester configProvider ocr2test.ConfigProviderTester ocr3CapabilityProvider testtypes.OCR3CapabilityProviderTester - contractReaderProvider testtypes.ChainComponentsTester + contractReaderProvider testtypes.ContractReaderTester // Note: add other Provider testers here when we implement them // eg Functions, Automation, etc nodeRequest nodeRequest @@ -85,7 +85,7 @@ func NewRelayerTester(staticChecks bool) testtypes.RelayerTester { agnosticProvider: ocr2test.AgnosticProvider, configProvider: ocr2test.ConfigProvider, ocr3CapabilityProvider: ocr3capabilitytest.OCR3CapabilityProvider, - contractReaderProvider: chaincomponentstest.ChainReader, + contractReaderProvider: chaincomponentstest.ContractReader, nodeRequest: nodeRequest{ pageSize: 137, pageToken: "", diff --git a/pkg/loop/internal/relayerset/inprocessprovider/grpc_provider_server_test.go b/pkg/loop/internal/relayerset/inprocessprovider/grpc_provider_server_test.go index 98d025103..52005444a 100644 --- a/pkg/loop/internal/relayerset/inprocessprovider/grpc_provider_server_test.go +++ b/pkg/loop/internal/relayerset/inprocessprovider/grpc_provider_server_test.go @@ -94,8 +94,8 @@ func (s staticMedianProvider) ReportCodec() median.ReportCodec { return nil } -// ChainReader implements types.MedianProvider. -func (s staticMedianProvider) ChainReader() types.ContractReader { +// ContractReader implements types.MedianProvider. +func (s staticMedianProvider) ContractReader() types.ContractReader { return nil } diff --git a/pkg/loop/internal/relayerset/inprocessprovider/standalone_provider_test.go b/pkg/loop/internal/relayerset/inprocessprovider/standalone_provider_test.go index 83153f750..97b302548 100644 --- a/pkg/loop/internal/relayerset/inprocessprovider/standalone_provider_test.go +++ b/pkg/loop/internal/relayerset/inprocessprovider/standalone_provider_test.go @@ -72,7 +72,7 @@ func (t testMedianProvider) ContractTransmitter() libocr.ContractTransmitter { return nil } -func (t testMedianProvider) ChainReader() types.ContractReader { +func (t testMedianProvider) ContractReader() types.ContractReader { return nil } @@ -127,7 +127,7 @@ func (t testPluginProvider) ContractTransmitter() ocrtypes.ContractTransmitter { return nil } -func (t testPluginProvider) ChainReader() types.ContractReader { +func (t testPluginProvider) ContractReader() types.ContractReader { return nil } diff --git a/pkg/loop/internal/relayerset/relayer.go b/pkg/loop/internal/relayerset/relayer.go index 196f5c139..caa842c5e 100644 --- a/pkg/loop/internal/relayerset/relayer.go +++ b/pkg/loop/internal/relayerset/relayer.go @@ -7,8 +7,8 @@ import ( "github.com/smartcontractkit/chainlink-common/pkg/logger" "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/net" "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/relayer" - "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/relayer/pluginprovider/chainreader" "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/relayer/pluginprovider/chainwriter" + "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/relayer/pluginprovider/contractreader" "github.com/smartcontractkit/chainlink-common/pkg/types" "github.com/smartcontractkit/chainlink-common/pkg/types/core" ) @@ -46,7 +46,7 @@ func (r *relayerClient) NewContractReader(_ context.Context, contractReaderConfi return contractReaderID, nil, nil }) - return chainreader.NewClient(r.relayerSetClient.BrokerExt.WithName("ChainReaderClientInRelayerSet"), cc), nil + return contractreader.NewClient(r.relayerSetClient.BrokerExt.WithName("ContractReaderClientInRelayerSet"), cc), nil } func (r *relayerClient) NewChainWriter(_ context.Context, chainWriterConfig []byte) (types.ChainWriter, error) { diff --git a/pkg/loop/internal/relayerset/server.go b/pkg/loop/internal/relayerset/server.go index 4d610f934..0ec1c93fe 100644 --- a/pkg/loop/internal/relayerset/server.go +++ b/pkg/loop/internal/relayerset/server.go @@ -13,8 +13,8 @@ import ( "github.com/smartcontractkit/chainlink-common/pkg/logger" "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/net" "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/pb/relayerset" - "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/relayer/pluginprovider/chainreader" "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/relayer/pluginprovider/chainwriter" + "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/relayer/pluginprovider/contractreader" "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/relayerset/inprocessprovider" "github.com/smartcontractkit/chainlink-common/pkg/types" "github.com/smartcontractkit/chainlink-common/pkg/types/core" @@ -147,7 +147,7 @@ func (s *Server) NewPluginProvider(ctx context.Context, req *relayerset.NewPlugi // // We could translate this to the GRPC world by having each call to RelayerSet.Get wrap the returned relayer in a server // and register that to the GRPC server. However this is actually pretty inefficient since a relayer object on its own -// is not useful. Users will always want to use the relayer to instantiate a chainreader or chainwriter. So we can avoid +// is not useful. Users will always want to use the relayer to instantiate a contractreader or chainwriter. So we can avoid // the intermediate server for the relayer by just storing a reference to the relayerSet client and the relayer we want // to fetch. I.e. the calls described above instead would become: // - RelayerSet.Get -> (RelayerSetClient, RelayerID). Effectively this call just acts as check that Relayer exists @@ -173,7 +173,7 @@ func (s *Server) NewContractReader(ctx context.Context, req *relayerset.NewContr // Start gRPC service for the ContractReader service above const name = "ContractReaderInRelayerSet" id, _, err := s.broker.ServeNew(name, func(s *grpc.Server) { - chainreader.RegisterContractReaderService(s, contractReader) + contractreader.RegisterContractReaderService(s, contractReader) }, net.Resource{Closer: contractReader, Name: name}) if err != nil { return nil, err @@ -190,7 +190,7 @@ func (s *Server) NewContractReader(ctx context.Context, req *relayerset.NewContr // // We could translate this to the GRPC world by having each call to RelayerSet.Get wrap the returned relayer in a server // and register that to the GRPC server. However this is actually pretty inefficient since a relayer object on its own -// is not useful. Users will always want to use the relayer to instantiate a chainreader or chainwriter. So we can avoid +// is not useful. Users will always want to use the relayer to instantiate a contractreader or chainwriter. So we can avoid // the intermediate server for the relayer by just storing a reference to the relayerSet client and the relayer we want // to fetch. I.e. the calls described above instead would become: // - RelayerSet.Get -> (RelayerSetClient, RelayerID). Effectively this call just acts as check that Relayer exists diff --git a/pkg/loop/internal/test/types/interfaces.go b/pkg/loop/internal/test/types/interfaces.go index f274ffa81..8da33d419 100644 --- a/pkg/loop/internal/test/types/interfaces.go +++ b/pkg/loop/internal/test/types/interfaces.go @@ -28,8 +28,8 @@ type AssertEqualer[T any] interface { AssertEqual(ctx context.Context, t *testing.T, other T) } -// ChainComponentsTester is a helper interface for testing ChainReaders -type ChainComponentsTester interface { +// ContractReaderTester is a helper interface for testing ContractReaders +type ContractReaderTester interface { types.ContractReader Evaluator[types.ContractReader] } diff --git a/pkg/loop/testutils/utils.go b/pkg/loop/testutils/utils.go index 072e214e5..8df3cce6d 100644 --- a/pkg/loop/testutils/utils.go +++ b/pkg/loop/testutils/utils.go @@ -3,7 +3,7 @@ package testutils import ( "testing" - test "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/relayer/pluginprovider/chainreader/test" + test "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/relayer/pluginprovider/contractreader/test" "github.com/smartcontractkit/chainlink-common/pkg/types/interfacetests" ) diff --git a/pkg/types/chain_reader.go b/pkg/types/contract_reader.go similarity index 87% rename from pkg/types/chain_reader.go rename to pkg/types/contract_reader.go index 0fd39d1e6..7d055a2c6 100644 --- a/pkg/types/chain_reader.go +++ b/pkg/types/contract_reader.go @@ -10,16 +10,13 @@ import ( // Errors exposed to product plugins const ( - ErrInvalidType = InvalidArgumentError("invalid type") - ErrInvalidConfig = InvalidArgumentError("invalid configuration") - ErrChainReaderConfigMissing = UnimplementedError("ChainReader entry missing from RelayConfig") - ErrInternal = InternalError("internal error") - ErrNotFound = NotFoundError("not found") + ErrInvalidType = InvalidArgumentError("invalid type") + ErrInvalidConfig = InvalidArgumentError("invalid configuration") + ErrContractReaderConfigMissing = UnimplementedError("ContractReader entry missing from RelayConfig") + ErrInternal = InternalError("internal error") + ErrNotFound = NotFoundError("not found") ) -// Deprecated: Use ContractReader. New naming should clear up confusion around the usage of this interface which should strictly be contract reading related. -type ChainReader = ContractReader - // ContractReader defines essential read operations a chain should implement for reading contract values and events. type ContractReader interface { services.Service @@ -38,7 +35,7 @@ type ContractReader interface { // Foo string `json:"foo"` // Bar *big.Int `json:"bar"` // } - // func do(ctx context.Context, cr ChainReader) (resp ProductReturn, err error) { + // func do(ctx context.Context, cr ContractReader) (resp ProductReturn, err error) { // err = cr.GetLatestValue(ctx, "FooContract", "GetProduct", primitives.Finalized, ProductParams{ID:1}, &resp) // return // } diff --git a/pkg/types/interfacetests/chain_components_interface_tests.go b/pkg/types/interfacetests/chain_components_interface_tests.go index 14b99f1dc..f6ad34d8a 100644 --- a/pkg/types/interfacetests/chain_components_interface_tests.go +++ b/pkg/types/interfacetests/chain_components_interface_tests.go @@ -17,7 +17,7 @@ import ( type ChainComponentsInterfaceTester[T TestingT[T]] interface { BasicTester[T] - GetChainReader(t T) types.ContractReader + GetContractReader(t T) types.ContractReader GetChainWriter(t T) types.ChainWriter GetBindings(t T) []types.BoundContract // DirtyContracts signals to the underlying tester than the test contracts are dirty, i.e. the state has been changed such that @@ -72,7 +72,7 @@ func runContractReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Ch _ = SubmitTransactionToCW(t, tester, MethodSettingStruct, secondItem, contracts[0], types.Unconfirmed) - cr := tester.GetChainReader(t) + cr := tester.GetContractReader(t) bindings := tester.GetBindings(t) bound := bindingsByName(bindings, AnyContractName)[0] // minimum of one bound contract expected, otherwise panics @@ -93,7 +93,7 @@ func runContractReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Ch name: "Get latest value without arguments and with primitive return", test: func(t T) { ctx := tests.Context(t) - cr := tester.GetChainReader(t) + cr := tester.GetContractReader(t) bindings := tester.GetBindings(t) bound := bindingsByName(bindings, AnyContractName)[0] @@ -109,7 +109,7 @@ func runContractReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Ch name: "Get latest value based on confidence level", test: func(t T) { ctx := tests.Context(t) - cr := tester.GetChainReader(t) + cr := tester.GetContractReader(t) bindings := tester.GetBindings(t) require.NoError(t, cr.Bind(ctx, bindings)) @@ -149,7 +149,7 @@ func runContractReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Ch name: "Get latest value allows multiple contract names to have the same function name", test: func(t T) { ctx := tests.Context(t) - cr := tester.GetChainReader(t) + cr := tester.GetContractReader(t) bindings := tester.GetBindings(t) bound := bindingsByName(bindings, AnySecondContractName)[0] @@ -165,7 +165,7 @@ func runContractReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Ch name: "Get latest value without arguments and with slice return", test: func(t T) { ctx := tests.Context(t) - cr := tester.GetChainReader(t) + cr := tester.GetContractReader(t) bindings := tester.GetBindings(t) bound := bindingsByName(bindings, AnyContractName)[0] @@ -188,7 +188,7 @@ func runContractReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Ch bindings := tester.GetBindings(t) bound := bindingsByName(bindings, AnyContractName)[0] - cr := tester.GetChainReader(t) + cr := tester.GetContractReader(t) require.NoError(t, cr.Bind(ctx, bindings)) actual := &TestStructWithExtraField{} @@ -206,7 +206,7 @@ func runContractReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Ch name: "Get latest value gets latest event", test: func(t T) { ctx := tests.Context(t) - cr := tester.GetChainReader(t) + cr := tester.GetContractReader(t) bindings := tester.GetBindings(t) bound := bindingsByName(bindings, AnyContractName)[0] @@ -230,7 +230,7 @@ func runContractReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Ch name: "Get latest event based on provided confidence level", test: func(t T) { ctx := tests.Context(t) - cr := tester.GetChainReader(t) + cr := tester.GetContractReader(t) bindings := tester.GetBindings(t) bound := bindingsByName(bindings, AnyContractName)[0] @@ -266,7 +266,7 @@ func runContractReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Ch name: "Get latest value returns not found if event was never triggered", test: func(t T) { ctx := tests.Context(t) - cr := tester.GetChainReader(t) + cr := tester.GetContractReader(t) bindings := tester.GetBindings(t) bound := bindingsByName(bindings, AnyContractName)[0] @@ -281,7 +281,7 @@ func runContractReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Ch name: "Get latest value gets latest event with filtering", test: func(t T) { ctx := tests.Context(t) - cr := tester.GetChainReader(t) + cr := tester.GetContractReader(t) bindings := tester.GetBindings(t) bound := bindingsByName(bindings, AnyContractName)[0] @@ -338,7 +338,7 @@ func runContractReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tes } ctx := tests.Context(t) - cr := tester.GetChainReader(t) + cr := tester.GetContractReader(t) require.NoError(t, cr.Bind(ctx, bindings)) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) @@ -369,7 +369,7 @@ func runContractReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tes } ctx := tests.Context(t) - cr := tester.GetChainReader(t) + cr := tester.GetContractReader(t) require.NoError(t, cr.Bind(ctx, bindings)) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValuesRequest) @@ -395,7 +395,7 @@ func runContractReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tes batchGetLatestValuesRequest[bound2] = []types.BatchRead{{ReadName: MethodReturningUint64, Params: nil, ReturnVal: &primitiveReturnValueAnySecondContract}} ctx := tests.Context(t) - cr := tester.GetChainReader(t) + cr := tester.GetContractReader(t) require.NoError(t, cr.Bind(ctx, bindings)) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValuesRequest) @@ -424,7 +424,7 @@ func runContractReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tes batchGetLatestValueRequest[bound] = []types.BatchRead{{ReadName: MethodReturningUint64Slice, Params: nil, ReturnVal: &sliceReturnValue}} ctx := tests.Context(t) - cr := tester.GetChainReader(t) + cr := tester.GetContractReader(t) require.NoError(t, cr.Bind(ctx, bindings)) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) require.NoError(t, err) @@ -451,7 +451,7 @@ func runContractReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tes batchGetLatestValueRequest[bound] = []types.BatchRead{{ReadName: MethodReturningSeenStruct, Params: testStruct, ReturnVal: actual}} ctx := tests.Context(t) - cr := tester.GetChainReader(t) + cr := tester.GetContractReader(t) require.NoError(t, cr.Bind(ctx, bindings)) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) require.NoError(t, err) @@ -489,7 +489,7 @@ func runContractReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tes batchChainWrite(t, tester, batchCallEntry, mockRun) ctx := tests.Context(t) - cr := tester.GetChainReader(t) + cr := tester.GetContractReader(t) require.NoError(t, cr.Bind(ctx, bindings)) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) @@ -525,7 +525,7 @@ func runContractReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tes batchChainWrite(t, tester, batchCallEntry, mockRun) ctx := tests.Context(t) - cr := tester.GetChainReader(t) + cr := tester.GetContractReader(t) require.NoError(t, cr.Bind(ctx, bindings)) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) @@ -567,7 +567,7 @@ func runContractReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tes } ctx := tests.Context(t) - cr := tester.GetChainReader(t) + cr := tester.GetContractReader(t) require.NoError(t, cr.Bind(ctx, bindings)) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) @@ -596,7 +596,7 @@ func runQueryKeyInterfaceTests[T TestingT[T]](t T, tester ChainComponentsInterfa name: "QueryKey returns not found if sequence never happened", test: func(t T) { ctx := tests.Context(t) - cr := tester.GetChainReader(t) + cr := tester.GetContractReader(t) bindings := tester.GetBindings(t) bound := bindingsByName(bindings, AnyContractName)[0] @@ -612,7 +612,7 @@ func runQueryKeyInterfaceTests[T TestingT[T]](t T, tester ChainComponentsInterfa name: "QueryKey returns sequence data properly", test: func(t T) { ctx := tests.Context(t) - cr := tester.GetChainReader(t) + cr := tester.GetContractReader(t) bindings := tester.GetBindings(t) require.NoError(t, cr.Bind(ctx, bindings)) diff --git a/pkg/types/provider.go b/pkg/types/provider.go index 142516ec6..43937105f 100644 --- a/pkg/types/provider.go +++ b/pkg/types/provider.go @@ -27,7 +27,7 @@ type Plugin = PluginProvider type PluginProvider interface { ConfigProvider ContractTransmitter() ocrtypes.ContractTransmitter - ChainReader() ChainReader + ContractReader() ContractReader Codec() Codec } diff --git a/pkg/types/query/query.go b/pkg/types/query/query.go index 129af6760..78a651994 100644 --- a/pkg/types/query/query.go +++ b/pkg/types/query/query.go @@ -9,7 +9,7 @@ import ( // KeyFilter is used to filter down chain specific data related to a key. type KeyFilter struct { // Key points to the underlying chain contract address and some data that belongs to that contract. - // Depending on the underlying Chain Reader blockchain implementation key can map to different onchain concepts, but should be able to map differing onchain data to same offchain data if they belong to the same key. + // Depending on the underlying Contract Reader blockchain implementation key can map to different onchain concepts, but should be able to map differing onchain data to same offchain data if they belong to the same key. Key string // The base Expressions slice indicates AND logical operation over expressions, which can be primitives or nested boolean expressions. // For eg. []Expression{primitive, primitive, BoolExpression{AND, primitive, BoolExpression{OR, primitive, primitive}} is primitive AND primitive AND (primitive AND (primitive OR primitive)).