From 95f3deb9c62ac70fa2a48babfecc87129944425f Mon Sep 17 00:00:00 2001 From: guoshijiang Date: Sun, 7 Apr 2024 22:45:37 +0800 Subject: [PATCH] online fix --- api/l3staking/api_v1.py | 32 +++ api/urls.py | 4 +- l3staking/migrations/0005_node_detail.py | 18 ++ l3staking/models.py | 7 + services/appchain_client.py | 32 +++ services/savour_rpc/appchain_grpc.py | 56 +++++ services/savour_rpc/appchain_pb2.py | 283 +++++++++++++++++++++++ services/savour_rpc/appchain_pb2_grpc.py | 99 ++++++++ 8 files changed, 530 insertions(+), 1 deletion(-) create mode 100644 l3staking/migrations/0005_node_detail.py create mode 100644 services/appchain_client.py create mode 100644 services/savour_rpc/appchain_grpc.py create mode 100644 services/savour_rpc/appchain_pb2.py create mode 100644 services/savour_rpc/appchain_pb2_grpc.py diff --git a/api/l3staking/api_v1.py b/api/l3staking/api_v1.py index e46fb21..a3fb6dc 100644 --- a/api/l3staking/api_v1.py +++ b/api/l3staking/api_v1.py @@ -7,6 +7,9 @@ StakingStrategy, Node, ) +from services.appchain_client import ( + AppChainClient +) # @check_api_token @@ -37,3 +40,32 @@ def get_staking_node_list(request): "node_list": staking_node_list }) return ok_json(staking_strategies_node_list) + + +# @check_api_token +def get_node_detail(request): + params = json.loads(request.body.decode()) + node_id = params.get('node_id', 0) + chain_id = params.get('chain_id', "0") + staker_address = params.get('staker_address', "0x") + strategies = params.get('strategies', "0x") + type = params.get('type', "L1") + appChainClient = AppChainClient() + if type in ["L1", "l1"]: + l1_stakers_rewards = appChainClient.l1_staker_reward_amount( + chain_id=chain_id, + staker_address=staker_address, + strategies=strategies, + ) + print(l1_stakers_rewards) + else: + l2_stakers_rewards = appChainClient.l2_staker_reward_amount( + chain_id=chain_id, + staker_address=staker_address, + strategy=strategies, + ) + print(l2_stakers_rewards) + staking_node = Node.objects.filter(id=node_id).first() + if staking_node is None: + return error_json("Do not exist node", 4000) + return ok_json(staking_node.as_dict()) diff --git a/api/urls.py b/api/urls.py index 5ec06b0..18fadfd 100644 --- a/api/urls.py +++ b/api/urls.py @@ -70,7 +70,8 @@ from api.l3staking.api_v1 import ( get_staking_chains, - get_staking_node_list + get_staking_node_list, + get_node_detail ) @@ -139,4 +140,5 @@ # l3staking path(r'get_staking_chains', get_staking_chains, name='get_staking_chains'), path(r'get_staking_node_list', get_staking_node_list, name='get_staking_node_list'), + path(r'get_node_detail', get_node_detail, name='get_node_detail'), ] \ No newline at end of file diff --git a/l3staking/migrations/0005_node_detail.py b/l3staking/migrations/0005_node_detail.py new file mode 100644 index 0000000..f2b2762 --- /dev/null +++ b/l3staking/migrations/0005_node_detail.py @@ -0,0 +1,18 @@ +# Generated by Django 4.1.1 on 2024-04-01 11:59 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('l3staking', '0004_stakingchain_icon'), + ] + + operations = [ + migrations.AddField( + model_name='node', + name='detail', + field=models.CharField(default='unknown', max_length=500, verbose_name='节点详情'), + ), + ] diff --git a/l3staking/models.py b/l3staking/models.py index 6d1ad55..f78d1f5 100644 --- a/l3staking/models.py +++ b/l3staking/models.py @@ -110,6 +110,12 @@ class Node(BaseModel): unique=False, verbose_name='节点名称' ) + detail = models.CharField( + default="unknown", + max_length=500, + unique=False, + verbose_name='节点详情' + ) eth_income = models.CharField( default="0", max_length=500, @@ -179,6 +185,7 @@ def as_dict(self): 'chain': self.chain.name, 'strategy': self.strategy.name, 'name': self.name, + 'detail': self.detail, 'eth_income': self.eth_income, 'eth_income_rate': self.eth_income_rate, 'dp_income': self.dp_income, diff --git a/services/appchain_client.py b/services/appchain_client.py new file mode 100644 index 0000000..67a4e7b --- /dev/null +++ b/services/appchain_client.py @@ -0,0 +1,32 @@ +# encoding=utf-8 + +import grpc +from django.conf import settings +from services.savour_rpc import appchain_pb2_grpc, appchain_pb2 + + +class AppChainClient: + def __init__(self): + options = [ + ('grpc.max_receive_message_length', settings.GRPC_MAX_MESSAGE_LENGTH), + ] + channel = grpc.insecure_channel("acorus-rpc.testnet.dapplink.xyz:443", options=options) + self.stub = appchain_pb2_grpc.AppChainServiceStub(channel) + + def l1_staker_reward_amount(self, chain_id: str, staker_address: str, strategies: str, consumer_token: str = None) -> appchain_pb2.L1StakerRewardsAmountResponse: + return self.stub.L1StakerRewardsAmount( + appchain_pb2.L1StakerRewardsAmountRequest( + chain_id=chain_id, + staker_address=staker_address, + strategies=strategies + ) + ) + + def l2_staker_reward_amount(self, chain_id: str, staker_address: str, strategy: str, consumer_token: str = None) -> appchain_pb2.L2StakerRewardsAmountResponse: + return self.stub.L2StakerRewardsAmount( + appchain_pb2.L2StakerRewardsAmountRequest( + chain_id=chain_id, + staker_address=staker_address, + strategy=strategy + ) + ) diff --git a/services/savour_rpc/appchain_grpc.py b/services/savour_rpc/appchain_grpc.py new file mode 100644 index 0000000..74f131b --- /dev/null +++ b/services/savour_rpc/appchain_grpc.py @@ -0,0 +1,56 @@ +# Generated by the Protocol Buffers compiler. DO NOT EDIT! +# source: savour_rpc/appchain.proto +# plugin: grpclib.plugin.main +import abc +import typing + +import grpclib.const +import grpclib.client +if typing.TYPE_CHECKING: + import grpclib.server + +from services.savour_rpc import appchain_pb2 + + +class AppChainServiceBase(abc.ABC): + + @abc.abstractmethod + async def L1StakerRewardsAmount(self, stream: 'grpclib.server.Stream[appchain_pb2.L1StakerRewardsAmountRequest, savour_rpc.appchain_pb2.L1StakerRewardsAmountResponse]') -> None: + pass + + @abc.abstractmethod + async def L2StakerRewardsAmount(self, stream: 'grpclib.server.Stream[appchain_pb2.L2StakerRewardsAmountRequest, savour_rpc.appchain_pb2.L2StakerRewardsAmountResponse]') -> None: + pass + + def __mapping__(self) -> typing.Dict[str, grpclib.const.Handler]: + return { + '/services.savour_rpc.appchain.AppChainService/L1StakerRewardsAmount': grpclib.const.Handler( + self.L1StakerRewardsAmount, + grpclib.const.Cardinality.UNARY_UNARY, + appchain_pb2.L1StakerRewardsAmountRequest, + appchain_pb2.L1StakerRewardsAmountResponse, + ), + '/services.savour_rpc.appchain.AppChainService/L2StakerRewardsAmount': grpclib.const.Handler( + self.L2StakerRewardsAmount, + grpclib.const.Cardinality.UNARY_UNARY, + appchain_pb2.L2StakerRewardsAmountRequest, + appchain_pb2.L2StakerRewardsAmountResponse, + ), + } + + +class AppChainServiceStub: + + def __init__(self, channel: grpclib.client.Channel) -> None: + self.L1StakerRewardsAmount = grpclib.client.UnaryUnaryMethod( + channel, + '/services.savour_rpc.appchain.AppChainService/L1StakerRewardsAmount', + appchain_pb2.L1StakerRewardsAmountRequest, + appchain_pb2.L1StakerRewardsAmountResponse, + ) + self.L2StakerRewardsAmount = grpclib.client.UnaryUnaryMethod( + channel, + '/services.savour_rpc.appchain.AppChainService/L2StakerRewardsAmount', + appchain_pb2.L2StakerRewardsAmountRequest, + appchain_pb2.L2StakerRewardsAmountResponse, + ) diff --git a/services/savour_rpc/appchain_pb2.py b/services/savour_rpc/appchain_pb2.py new file mode 100644 index 0000000..57d43cc --- /dev/null +++ b/services/savour_rpc/appchain_pb2.py @@ -0,0 +1,283 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: savour_rpc/appchain.proto +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='savour_rpc/appchain.proto', + package='services.savour_rpc.appchain', + syntax='proto3', + serialized_options=b'\n\025group.savour.appchainZ\020./proto/appchain', + create_key=_descriptor._internal_create_key, + serialized_pb=b'\n\x19savour_rpc/appchain.proto\x12\x1cservices.savour_rpc.appchain\"\\\n\x1cL1StakerRewardsAmountRequest\x12\x10\n\x08\x63hain_id\x18\x01 \x01(\t\x12\x16\n\x0estaker_address\x18\x02 \x01(\t\x12\x12\n\nstrategies\x18\x03 \x01(\t\"Q\n\x1dL1StakerRewardsAmountResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\x0f\n\x07message\x18\x02 \x01(\t\x12\x0e\n\x06income\x18\x03 \x01(\t\"Z\n\x1cL2StakerRewardsAmountRequest\x12\x10\n\x08\x63hain_id\x18\x01 \x01(\t\x12\x16\n\x0estaker_address\x18\x02 \x01(\t\x12\x10\n\x08strategy\x18\x03 \x01(\t\"Q\n\x1dL2StakerRewardsAmountResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\x0f\n\x07message\x18\x02 \x01(\t\x12\x0e\n\x06income\x18\x03 \x01(\t2\xb7\x02\n\x0f\x41ppChainService\x12\x90\x01\n\x15L1StakerRewardsAmount\x12:.services.savour_rpc.appchain.L1StakerRewardsAmountRequest\x1a;.services.savour_rpc.appchain.L1StakerRewardsAmountResponse\x12\x90\x01\n\x15L2StakerRewardsAmount\x12:.services.savour_rpc.appchain.L2StakerRewardsAmountRequest\x1a;.services.savour_rpc.appchain.L2StakerRewardsAmountResponseB)\n\x15group.savour.appchainZ\x10./proto/appchainb\x06proto3' +) + + + + +_L1STAKERREWARDSAMOUNTREQUEST = _descriptor.Descriptor( + name='L1StakerRewardsAmountRequest', + full_name='services.savour_rpc.appchain.L1StakerRewardsAmountRequest', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='chain_id', full_name='services.savour_rpc.appchain.L1StakerRewardsAmountRequest.chain_id', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='staker_address', full_name='services.savour_rpc.appchain.L1StakerRewardsAmountRequest.staker_address', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='strategies', full_name='services.savour_rpc.appchain.L1StakerRewardsAmountRequest.strategies', index=2, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=59, + serialized_end=151, +) + + +_L1STAKERREWARDSAMOUNTRESPONSE = _descriptor.Descriptor( + name='L1StakerRewardsAmountResponse', + full_name='services.savour_rpc.appchain.L1StakerRewardsAmountResponse', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='success', full_name='services.savour_rpc.appchain.L1StakerRewardsAmountResponse.success', index=0, + number=1, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='message', full_name='services.savour_rpc.appchain.L1StakerRewardsAmountResponse.message', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='income', full_name='services.savour_rpc.appchain.L1StakerRewardsAmountResponse.income', index=2, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=153, + serialized_end=234, +) + + +_L2STAKERREWARDSAMOUNTREQUEST = _descriptor.Descriptor( + name='L2StakerRewardsAmountRequest', + full_name='services.savour_rpc.appchain.L2StakerRewardsAmountRequest', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='chain_id', full_name='services.savour_rpc.appchain.L2StakerRewardsAmountRequest.chain_id', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='staker_address', full_name='services.savour_rpc.appchain.L2StakerRewardsAmountRequest.staker_address', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='strategy', full_name='services.savour_rpc.appchain.L2StakerRewardsAmountRequest.strategy', index=2, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=236, + serialized_end=326, +) + + +_L2STAKERREWARDSAMOUNTRESPONSE = _descriptor.Descriptor( + name='L2StakerRewardsAmountResponse', + full_name='services.savour_rpc.appchain.L2StakerRewardsAmountResponse', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='success', full_name='services.savour_rpc.appchain.L2StakerRewardsAmountResponse.success', index=0, + number=1, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='message', full_name='services.savour_rpc.appchain.L2StakerRewardsAmountResponse.message', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='income', full_name='services.savour_rpc.appchain.L2StakerRewardsAmountResponse.income', index=2, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=328, + serialized_end=409, +) + +DESCRIPTOR.message_types_by_name['L1StakerRewardsAmountRequest'] = _L1STAKERREWARDSAMOUNTREQUEST +DESCRIPTOR.message_types_by_name['L1StakerRewardsAmountResponse'] = _L1STAKERREWARDSAMOUNTRESPONSE +DESCRIPTOR.message_types_by_name['L2StakerRewardsAmountRequest'] = _L2STAKERREWARDSAMOUNTREQUEST +DESCRIPTOR.message_types_by_name['L2StakerRewardsAmountResponse'] = _L2STAKERREWARDSAMOUNTRESPONSE +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + +L1StakerRewardsAmountRequest = _reflection.GeneratedProtocolMessageType('L1StakerRewardsAmountRequest', (_message.Message,), { + 'DESCRIPTOR' : _L1STAKERREWARDSAMOUNTREQUEST, + '__module__' : 'savour_rpc.appchain_pb2' + # @@protoc_insertion_point(class_scope:services.savour_rpc.appchain.L1StakerRewardsAmountRequest) + }) +_sym_db.RegisterMessage(L1StakerRewardsAmountRequest) + +L1StakerRewardsAmountResponse = _reflection.GeneratedProtocolMessageType('L1StakerRewardsAmountResponse', (_message.Message,), { + 'DESCRIPTOR' : _L1STAKERREWARDSAMOUNTRESPONSE, + '__module__' : 'savour_rpc.appchain_pb2' + # @@protoc_insertion_point(class_scope:services.savour_rpc.appchain.L1StakerRewardsAmountResponse) + }) +_sym_db.RegisterMessage(L1StakerRewardsAmountResponse) + +L2StakerRewardsAmountRequest = _reflection.GeneratedProtocolMessageType('L2StakerRewardsAmountRequest', (_message.Message,), { + 'DESCRIPTOR' : _L2STAKERREWARDSAMOUNTREQUEST, + '__module__' : 'savour_rpc.appchain_pb2' + # @@protoc_insertion_point(class_scope:services.savour_rpc.appchain.L2StakerRewardsAmountRequest) + }) +_sym_db.RegisterMessage(L2StakerRewardsAmountRequest) + +L2StakerRewardsAmountResponse = _reflection.GeneratedProtocolMessageType('L2StakerRewardsAmountResponse', (_message.Message,), { + 'DESCRIPTOR' : _L2STAKERREWARDSAMOUNTRESPONSE, + '__module__' : 'savour_rpc.appchain_pb2' + # @@protoc_insertion_point(class_scope:services.savour_rpc.appchain.L2StakerRewardsAmountResponse) + }) +_sym_db.RegisterMessage(L2StakerRewardsAmountResponse) + + +DESCRIPTOR._options = None + +_APPCHAINSERVICE = _descriptor.ServiceDescriptor( + name='AppChainService', + full_name='services.savour_rpc.appchain.AppChainService', + file=DESCRIPTOR, + index=0, + serialized_options=None, + create_key=_descriptor._internal_create_key, + serialized_start=412, + serialized_end=723, + methods=[ + _descriptor.MethodDescriptor( + name='L1StakerRewardsAmount', + full_name='services.savour_rpc.appchain.AppChainService.L1StakerRewardsAmount', + index=0, + containing_service=None, + input_type=_L1STAKERREWARDSAMOUNTREQUEST, + output_type=_L1STAKERREWARDSAMOUNTRESPONSE, + serialized_options=None, + create_key=_descriptor._internal_create_key, + ), + _descriptor.MethodDescriptor( + name='L2StakerRewardsAmount', + full_name='services.savour_rpc.appchain.AppChainService.L2StakerRewardsAmount', + index=1, + containing_service=None, + input_type=_L2STAKERREWARDSAMOUNTREQUEST, + output_type=_L2STAKERREWARDSAMOUNTRESPONSE, + serialized_options=None, + create_key=_descriptor._internal_create_key, + ), +]) +_sym_db.RegisterServiceDescriptor(_APPCHAINSERVICE) + +DESCRIPTOR.services_by_name['AppChainService'] = _APPCHAINSERVICE + +# @@protoc_insertion_point(module_scope) diff --git a/services/savour_rpc/appchain_pb2_grpc.py b/services/savour_rpc/appchain_pb2_grpc.py new file mode 100644 index 0000000..f6b00a5 --- /dev/null +++ b/services/savour_rpc/appchain_pb2_grpc.py @@ -0,0 +1,99 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import grpc + +from services.savour_rpc import appchain_pb2 as savour__rpc_dot_appchain__pb2 + + +class AppChainServiceStub(object): + """Missing associated documentation comment in .proto file.""" + + def __init__(self, channel): + """Constructor. + + Args: + channel: A grpc.Channel. + """ + self.L1StakerRewardsAmount = channel.unary_unary( + '/services.savour_rpc.appchain.AppChainService/L1StakerRewardsAmount', + request_serializer=savour__rpc_dot_appchain__pb2.L1StakerRewardsAmountRequest.SerializeToString, + response_deserializer=savour__rpc_dot_appchain__pb2.L1StakerRewardsAmountResponse.FromString, + ) + self.L2StakerRewardsAmount = channel.unary_unary( + '/services.savour_rpc.appchain.AppChainService/L2StakerRewardsAmount', + request_serializer=savour__rpc_dot_appchain__pb2.L2StakerRewardsAmountRequest.SerializeToString, + response_deserializer=savour__rpc_dot_appchain__pb2.L2StakerRewardsAmountResponse.FromString, + ) + + +class AppChainServiceServicer(object): + """Missing associated documentation comment in .proto file.""" + + def L1StakerRewardsAmount(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def L2StakerRewardsAmount(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + +def add_AppChainServiceServicer_to_server(servicer, server): + rpc_method_handlers = { + 'L1StakerRewardsAmount': grpc.unary_unary_rpc_method_handler( + servicer.L1StakerRewardsAmount, + request_deserializer=savour__rpc_dot_appchain__pb2.L1StakerRewardsAmountRequest.FromString, + response_serializer=savour__rpc_dot_appchain__pb2.L1StakerRewardsAmountResponse.SerializeToString, + ), + 'L2StakerRewardsAmount': grpc.unary_unary_rpc_method_handler( + servicer.L2StakerRewardsAmount, + request_deserializer=savour__rpc_dot_appchain__pb2.L2StakerRewardsAmountRequest.FromString, + response_serializer=savour__rpc_dot_appchain__pb2.L2StakerRewardsAmountResponse.SerializeToString, + ), + } + generic_handler = grpc.method_handlers_generic_handler( + 'services.savour_rpc.appchain.AppChainService', rpc_method_handlers) + server.add_generic_rpc_handlers((generic_handler,)) + + + # This class is part of an EXPERIMENTAL API. +class AppChainService(object): + """Missing associated documentation comment in .proto file.""" + + @staticmethod + def L1StakerRewardsAmount(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/services.savour_rpc.appchain.AppChainService/L1StakerRewardsAmount', + savour__rpc_dot_appchain__pb2.L1StakerRewardsAmountRequest.SerializeToString, + savour__rpc_dot_appchain__pb2.L1StakerRewardsAmountResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def L2StakerRewardsAmount(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/services.savour_rpc.appchain.AppChainService/L2StakerRewardsAmount', + savour__rpc_dot_appchain__pb2.L2StakerRewardsAmountRequest.SerializeToString, + savour__rpc_dot_appchain__pb2.L2StakerRewardsAmountResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata)