# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
"""Client and server classes corresponding to protobuf-defined services."""
import grpc

from alphausblue.api import account_pb2 as api_dot_account__pb2
from alphausblue.api import operation_pb2 as api_dot_operation__pb2
from alphausblue.cost.v1 import cost_pb2 as cost_dot_v1_dot_cost__pb2
from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2


class CostStub(object):
    """Service for reading aggregated costs for your cloud costs and usages.
    """

    def __init__(self, channel):
        """Constructor.

        Args:
            channel: A grpc.Channel.
        """
        self.ListPayerAccounts = channel.unary_stream(
                '/blueapi.cost.v1.Cost/ListPayerAccounts',
                request_serializer=cost_dot_v1_dot_cost__pb2.ListPayerAccountsRequest.SerializeToString,
                response_deserializer=api_dot_account__pb2.Account.FromString,
                )
        self.GetPayerAccount = channel.unary_unary(
                '/blueapi.cost.v1.Cost/GetPayerAccount',
                request_serializer=cost_dot_v1_dot_cost__pb2.GetPayerAccountRequest.SerializeToString,
                response_deserializer=api_dot_account__pb2.Account.FromString,
                )
        self.GetPayerAccountImportHistory = channel.unary_stream(
                '/blueapi.cost.v1.Cost/GetPayerAccountImportHistory',
                request_serializer=cost_dot_v1_dot_cost__pb2.GetPayerAccountImportHistoryRequest.SerializeToString,
                response_deserializer=cost_dot_v1_dot_cost__pb2.GetPayerAccountImportHistoryResponse.FromString,
                )
        self.CreatePayerAccount = channel.unary_unary(
                '/blueapi.cost.v1.Cost/CreatePayerAccount',
                request_serializer=cost_dot_v1_dot_cost__pb2.CreatePayerAccountRequest.SerializeToString,
                response_deserializer=api_dot_account__pb2.Account.FromString,
                )
        self.DeletePayerAccount = channel.unary_unary(
                '/blueapi.cost.v1.Cost/DeletePayerAccount',
                request_serializer=cost_dot_v1_dot_cost__pb2.DeletePayerAccountRequest.SerializeToString,
                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                )
        self.ListAccounts = channel.unary_stream(
                '/blueapi.cost.v1.Cost/ListAccounts',
                request_serializer=cost_dot_v1_dot_cost__pb2.ListAccountsRequest.SerializeToString,
                response_deserializer=api_dot_account__pb2.Account.FromString,
                )
        self.GetAccount = channel.unary_unary(
                '/blueapi.cost.v1.Cost/GetAccount',
                request_serializer=cost_dot_v1_dot_cost__pb2.GetAccountRequest.SerializeToString,
                response_deserializer=api_dot_account__pb2.Account.FromString,
                )
        self.CreateAccount = channel.unary_unary(
                '/blueapi.cost.v1.Cost/CreateAccount',
                request_serializer=cost_dot_v1_dot_cost__pb2.CreateAccountRequest.SerializeToString,
                response_deserializer=api_dot_account__pb2.Account.FromString,
                )
        self.DeleteAccount = channel.unary_unary(
                '/blueapi.cost.v1.Cost/DeleteAccount',
                request_serializer=cost_dot_v1_dot_cost__pb2.DeleteAccountRequest.SerializeToString,
                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                )
        self.GetCalculatorStatus = channel.unary_unary(
                '/blueapi.cost.v1.Cost/GetCalculatorStatus',
                request_serializer=cost_dot_v1_dot_cost__pb2.GetCalculatorStatusRequest.SerializeToString,
                response_deserializer=cost_dot_v1_dot_cost__pb2.GetCalculatorStatusResponse.FromString,
                )
        self.GetCalculatorConfig = channel.unary_unary(
                '/blueapi.cost.v1.Cost/GetCalculatorConfig',
                request_serializer=cost_dot_v1_dot_cost__pb2.GetCalculatorConfigRequest.SerializeToString,
                response_deserializer=cost_dot_v1_dot_cost__pb2.GetCalculatorConfigResponse.FromString,
                )
        self.ImportCurFiles = channel.unary_unary(
                '/blueapi.cost.v1.Cost/ImportCurFiles',
                request_serializer=cost_dot_v1_dot_cost__pb2.ImportCurFilesRequest.SerializeToString,
                response_deserializer=api_dot_operation__pb2.Operation.FromString,
                )
        self.CalculateCosts = channel.unary_unary(
                '/blueapi.cost.v1.Cost/CalculateCosts',
                request_serializer=cost_dot_v1_dot_cost__pb2.CalculateCostsRequest.SerializeToString,
                response_deserializer=api_dot_operation__pb2.Operation.FromString,
                )
        self.ListCalculationsHistory = channel.unary_unary(
                '/blueapi.cost.v1.Cost/ListCalculationsHistory',
                request_serializer=cost_dot_v1_dot_cost__pb2.ListCalculationsHistoryRequest.SerializeToString,
                response_deserializer=cost_dot_v1_dot_cost__pb2.ListCalculationsHistoryResponse.FromString,
                )
        self.ReadCosts = channel.unary_stream(
                '/blueapi.cost.v1.Cost/ReadCosts',
                request_serializer=cost_dot_v1_dot_cost__pb2.ReadCostsRequest.SerializeToString,
                response_deserializer=cost_dot_v1_dot_cost__pb2.CostItem.FromString,
                )
        self.ReadAdjustments = channel.unary_stream(
                '/blueapi.cost.v1.Cost/ReadAdjustments',
                request_serializer=cost_dot_v1_dot_cost__pb2.ReadAdjustmentsRequest.SerializeToString,
                response_deserializer=cost_dot_v1_dot_cost__pb2.CostItem.FromString,
                )
        self.ReadTagCosts = channel.unary_stream(
                '/blueapi.cost.v1.Cost/ReadTagCosts',
                request_serializer=cost_dot_v1_dot_cost__pb2.ReadTagCostsRequest.SerializeToString,
                response_deserializer=cost_dot_v1_dot_cost__pb2.CostItem.FromString,
                )
        self.ReadNonTagCosts = channel.unary_stream(
                '/blueapi.cost.v1.Cost/ReadNonTagCosts',
                request_serializer=cost_dot_v1_dot_cost__pb2.ReadNonTagCostsRequest.SerializeToString,
                response_deserializer=cost_dot_v1_dot_cost__pb2.CostItem.FromString,
                )
        self.GetForecasts = channel.unary_unary(
                '/blueapi.cost.v1.Cost/GetForecasts',
                request_serializer=cost_dot_v1_dot_cost__pb2.GetForecastsRequest.SerializeToString,
                response_deserializer=cost_dot_v1_dot_cost__pb2.GetForecastsResponse.FromString,
                )
        self.GetMonthlyCostForecast = channel.unary_unary(
                '/blueapi.cost.v1.Cost/GetMonthlyCostForecast',
                request_serializer=cost_dot_v1_dot_cost__pb2.GetMonthlyCostForecastRequest.SerializeToString,
                response_deserializer=cost_dot_v1_dot_cost__pb2.GetMonthlyCostForecastResponse.FromString,
                )
        self.GetMonthOnMonthCostForecast = channel.unary_unary(
                '/blueapi.cost.v1.Cost/GetMonthOnMonthCostForecast',
                request_serializer=cost_dot_v1_dot_cost__pb2.GetMonthOnMonthCostForecastRequest.SerializeToString,
                response_deserializer=cost_dot_v1_dot_cost__pb2.GetMonthOnMonthCostForecastResponse.FromString,
                )
        self.GetMonthToDateCostForecast = channel.unary_unary(
                '/blueapi.cost.v1.Cost/GetMonthToDateCostForecast',
                request_serializer=cost_dot_v1_dot_cost__pb2.GetMonthToDateCostForecastRequest.SerializeToString,
                response_deserializer=cost_dot_v1_dot_cost__pb2.GetMonthToDateCostForecastResponse.FromString,
                )
        self.GetAccountBudget = channel.unary_unary(
                '/blueapi.cost.v1.Cost/GetAccountBudget',
                request_serializer=cost_dot_v1_dot_cost__pb2.GetAccountBudgetRequest.SerializeToString,
                response_deserializer=cost_dot_v1_dot_cost__pb2.GetAccountBudgetResponse.FromString,
                )
        self.CreateAccountBudget = channel.unary_unary(
                '/blueapi.cost.v1.Cost/CreateAccountBudget',
                request_serializer=cost_dot_v1_dot_cost__pb2.CreateAccountBudgetRequest.SerializeToString,
                response_deserializer=cost_dot_v1_dot_cost__pb2.CreateAccountBudgetResponse.FromString,
                )
        self.UpdateAccountBudget = channel.unary_unary(
                '/blueapi.cost.v1.Cost/UpdateAccountBudget',
                request_serializer=cost_dot_v1_dot_cost__pb2.UpdateAccountBudgetRequest.SerializeToString,
                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                )
        self.DeleteAccountBudget = channel.unary_unary(
                '/blueapi.cost.v1.Cost/DeleteAccountBudget',
                request_serializer=cost_dot_v1_dot_cost__pb2.DeleteAccountBudgetRequest.SerializeToString,
                response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
                )
        self.GetRecommendations = channel.unary_unary(
                '/blueapi.cost.v1.Cost/GetRecommendations',
                request_serializer=cost_dot_v1_dot_cost__pb2.GetRecommendationsRequest.SerializeToString,
                response_deserializer=cost_dot_v1_dot_cost__pb2.GetRecommendationsResponse.FromString,
                )
        self.GetCostReduction = channel.unary_unary(
                '/blueapi.cost.v1.Cost/GetCostReduction',
                request_serializer=cost_dot_v1_dot_cost__pb2.GetCostReductionRequest.SerializeToString,
                response_deserializer=cost_dot_v1_dot_cost__pb2.GetCostReductionResponse.FromString,
                )


class CostServicer(object):
    """Service for reading aggregated costs for your cloud costs and usages.
    """

    def ListPayerAccounts(self, request, context):
        """Lists vendor payer accounts. For AWS, these are management accounts (formerly known
        as master or payer accounts); for Azure, these are subscriptions, for GCP, these
        are projects.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def GetPayerAccount(self, request, context):
        """Gets a vendor payer account. This API includes all of the account's metadata.
        See https://alphauslabs.github.io/blueapi/ for the list of supported attributes.
        For AWS, this means a management account (formerly known as master or payer account);
        for Azure, this means a subscription, for GCP, this means a project.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def GetPayerAccountImportHistory(self, request, context):
        """Gets a payer account's import history, which is a list of timestamps our system tracks when the account's data are
        imported to our system, which in turn, triggers processing. At the moment, this only supports AWS (CUR files).
        You can also set {id} to `*` to return all payers' information under the organization.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def CreatePayerAccount(self, request, context):
        """Registers a vendor payer account.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def DeletePayerAccount(self, request, context):
        """Deletes a vendor payer account.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def ListAccounts(self, request, context):
        """Lists all vendor accounts.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def GetAccount(self, request, context):
        """Gets a vendor account. This API includes all of the account's metadata. See
        https://alphauslabs.github.io/blueapi/ for the list of supported attributes.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def CreateAccount(self, request, context):
        """Registers a vendor account.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def DeleteAccount(self, request, context):
        """Deletes a vendor account.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def GetCalculatorStatus(self, request, context):
        """WORK-IN-PROGRESS: Gets the vendor cost calculator's current status.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def GetCalculatorConfig(self, request, context):
        """WORK-IN-PROGRESS: Gets the vendor cost calculator's current configuration.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def ImportCurFiles(self, request, context):
        """Initiates an ondemand import of all registered CUR files. See
        [https://help.alphaus.cloud/en/articles/3612555-ripple-aws-things-you-need-to-prepare-before-starting]
        for more information.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def CalculateCosts(self, request, context):
        """Triggers monthly calculations for costs and invoices at either organization or billing group level.
        For the AWS calculator, aggregation is done at daily and monthly level. Also, all occurrences of the
        character `|` (pipe) in the CUR descriptions and tag key/values are replaced with the `/` (forward-slash)
        character. This is due to the `|` character having a special designation in the data processing workflows.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def ListCalculationsHistory(self, request, context):
        """Lists vendor costs calculations history and statuses.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def ReadCosts(self, request, context):
        """Reads the usage-based cost details of an organization (Ripple) or billing group (Wave).
        At the moment, the supported {vendor} is 'aws'. If datetime range parameters are
        not set, month-to-date (current month) will be returned.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def ReadAdjustments(self, request, context):
        """Reads the non-usage-based details of an organization (Ripple) or billing group (Wave).
        This API covers non-usage-based adjustments, such as Fees, Credits, Discounts, Tax,
        Upfront Fees, etc. At the moment, the supported {vendor} is 'aws'. If datetime
        range parameters are not set, month-to-date (current month) will be returned.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def ReadTagCosts(self, request, context):
        """Reads the usage-based tag costs of a billing group. At the moment, the supported {vendor} is 
        'aws'. If datetime range parameters are not set, month-to-date (current month) will be returned.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def ReadNonTagCosts(self, request, context):
        """Reads the usage-based non tag costs of a billing group. At the moment, the supported {vendor} is 
        'aws'. If datetime range parameters are not set, month-to-date (current month) will be returned.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def GetForecasts(self, request, context):
        """Fetches cost forecasts for the specified billing group.
        Includes historical cost (up to previous month) and forecasted cost (up to three months for now).
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def GetMonthlyCostForecast(self, request, context):
        """Fetches monthly accumulated costs vs forecasted cost vs budget for the id.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def GetMonthOnMonthCostForecast(self, request, context):
        """Fetches previous month cost vs current month forecast vs current accumulated cost per category for id.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def GetMonthToDateCostForecast(self, request, context):
        """Fetches current month daily forecast vs current accumulated daily cost for id.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def GetAccountBudget(self, request, context):
        """Fetches monthly budget for the account/acctgroup id.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def CreateAccountBudget(self, request, context):
        """Creates monthly budget for the account/acctgroup id.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def UpdateAccountBudget(self, request, context):
        """Updates monthly budget for the account/acctgroup id.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def DeleteAccountBudget(self, request, context):
        """Removes monthly budget for the account/acctgroup id from database.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def GetRecommendations(self, request, context):
        """WORK-IN-PROGRESS: Get cost opmtimization recommendations for an organization (or MSP).
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def GetCostReduction(self, request, context):
        """WORK-IN-PROGRESS: Get cost reduction details for an organization (or MSP).
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')


def add_CostServicer_to_server(servicer, server):
    rpc_method_handlers = {
            'ListPayerAccounts': grpc.unary_stream_rpc_method_handler(
                    servicer.ListPayerAccounts,
                    request_deserializer=cost_dot_v1_dot_cost__pb2.ListPayerAccountsRequest.FromString,
                    response_serializer=api_dot_account__pb2.Account.SerializeToString,
            ),
            'GetPayerAccount': grpc.unary_unary_rpc_method_handler(
                    servicer.GetPayerAccount,
                    request_deserializer=cost_dot_v1_dot_cost__pb2.GetPayerAccountRequest.FromString,
                    response_serializer=api_dot_account__pb2.Account.SerializeToString,
            ),
            'GetPayerAccountImportHistory': grpc.unary_stream_rpc_method_handler(
                    servicer.GetPayerAccountImportHistory,
                    request_deserializer=cost_dot_v1_dot_cost__pb2.GetPayerAccountImportHistoryRequest.FromString,
                    response_serializer=cost_dot_v1_dot_cost__pb2.GetPayerAccountImportHistoryResponse.SerializeToString,
            ),
            'CreatePayerAccount': grpc.unary_unary_rpc_method_handler(
                    servicer.CreatePayerAccount,
                    request_deserializer=cost_dot_v1_dot_cost__pb2.CreatePayerAccountRequest.FromString,
                    response_serializer=api_dot_account__pb2.Account.SerializeToString,
            ),
            'DeletePayerAccount': grpc.unary_unary_rpc_method_handler(
                    servicer.DeletePayerAccount,
                    request_deserializer=cost_dot_v1_dot_cost__pb2.DeletePayerAccountRequest.FromString,
                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            ),
            'ListAccounts': grpc.unary_stream_rpc_method_handler(
                    servicer.ListAccounts,
                    request_deserializer=cost_dot_v1_dot_cost__pb2.ListAccountsRequest.FromString,
                    response_serializer=api_dot_account__pb2.Account.SerializeToString,
            ),
            'GetAccount': grpc.unary_unary_rpc_method_handler(
                    servicer.GetAccount,
                    request_deserializer=cost_dot_v1_dot_cost__pb2.GetAccountRequest.FromString,
                    response_serializer=api_dot_account__pb2.Account.SerializeToString,
            ),
            'CreateAccount': grpc.unary_unary_rpc_method_handler(
                    servicer.CreateAccount,
                    request_deserializer=cost_dot_v1_dot_cost__pb2.CreateAccountRequest.FromString,
                    response_serializer=api_dot_account__pb2.Account.SerializeToString,
            ),
            'DeleteAccount': grpc.unary_unary_rpc_method_handler(
                    servicer.DeleteAccount,
                    request_deserializer=cost_dot_v1_dot_cost__pb2.DeleteAccountRequest.FromString,
                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            ),
            'GetCalculatorStatus': grpc.unary_unary_rpc_method_handler(
                    servicer.GetCalculatorStatus,
                    request_deserializer=cost_dot_v1_dot_cost__pb2.GetCalculatorStatusRequest.FromString,
                    response_serializer=cost_dot_v1_dot_cost__pb2.GetCalculatorStatusResponse.SerializeToString,
            ),
            'GetCalculatorConfig': grpc.unary_unary_rpc_method_handler(
                    servicer.GetCalculatorConfig,
                    request_deserializer=cost_dot_v1_dot_cost__pb2.GetCalculatorConfigRequest.FromString,
                    response_serializer=cost_dot_v1_dot_cost__pb2.GetCalculatorConfigResponse.SerializeToString,
            ),
            'ImportCurFiles': grpc.unary_unary_rpc_method_handler(
                    servicer.ImportCurFiles,
                    request_deserializer=cost_dot_v1_dot_cost__pb2.ImportCurFilesRequest.FromString,
                    response_serializer=api_dot_operation__pb2.Operation.SerializeToString,
            ),
            'CalculateCosts': grpc.unary_unary_rpc_method_handler(
                    servicer.CalculateCosts,
                    request_deserializer=cost_dot_v1_dot_cost__pb2.CalculateCostsRequest.FromString,
                    response_serializer=api_dot_operation__pb2.Operation.SerializeToString,
            ),
            'ListCalculationsHistory': grpc.unary_unary_rpc_method_handler(
                    servicer.ListCalculationsHistory,
                    request_deserializer=cost_dot_v1_dot_cost__pb2.ListCalculationsHistoryRequest.FromString,
                    response_serializer=cost_dot_v1_dot_cost__pb2.ListCalculationsHistoryResponse.SerializeToString,
            ),
            'ReadCosts': grpc.unary_stream_rpc_method_handler(
                    servicer.ReadCosts,
                    request_deserializer=cost_dot_v1_dot_cost__pb2.ReadCostsRequest.FromString,
                    response_serializer=cost_dot_v1_dot_cost__pb2.CostItem.SerializeToString,
            ),
            'ReadAdjustments': grpc.unary_stream_rpc_method_handler(
                    servicer.ReadAdjustments,
                    request_deserializer=cost_dot_v1_dot_cost__pb2.ReadAdjustmentsRequest.FromString,
                    response_serializer=cost_dot_v1_dot_cost__pb2.CostItem.SerializeToString,
            ),
            'ReadTagCosts': grpc.unary_stream_rpc_method_handler(
                    servicer.ReadTagCosts,
                    request_deserializer=cost_dot_v1_dot_cost__pb2.ReadTagCostsRequest.FromString,
                    response_serializer=cost_dot_v1_dot_cost__pb2.CostItem.SerializeToString,
            ),
            'ReadNonTagCosts': grpc.unary_stream_rpc_method_handler(
                    servicer.ReadNonTagCosts,
                    request_deserializer=cost_dot_v1_dot_cost__pb2.ReadNonTagCostsRequest.FromString,
                    response_serializer=cost_dot_v1_dot_cost__pb2.CostItem.SerializeToString,
            ),
            'GetForecasts': grpc.unary_unary_rpc_method_handler(
                    servicer.GetForecasts,
                    request_deserializer=cost_dot_v1_dot_cost__pb2.GetForecastsRequest.FromString,
                    response_serializer=cost_dot_v1_dot_cost__pb2.GetForecastsResponse.SerializeToString,
            ),
            'GetMonthlyCostForecast': grpc.unary_unary_rpc_method_handler(
                    servicer.GetMonthlyCostForecast,
                    request_deserializer=cost_dot_v1_dot_cost__pb2.GetMonthlyCostForecastRequest.FromString,
                    response_serializer=cost_dot_v1_dot_cost__pb2.GetMonthlyCostForecastResponse.SerializeToString,
            ),
            'GetMonthOnMonthCostForecast': grpc.unary_unary_rpc_method_handler(
                    servicer.GetMonthOnMonthCostForecast,
                    request_deserializer=cost_dot_v1_dot_cost__pb2.GetMonthOnMonthCostForecastRequest.FromString,
                    response_serializer=cost_dot_v1_dot_cost__pb2.GetMonthOnMonthCostForecastResponse.SerializeToString,
            ),
            'GetMonthToDateCostForecast': grpc.unary_unary_rpc_method_handler(
                    servicer.GetMonthToDateCostForecast,
                    request_deserializer=cost_dot_v1_dot_cost__pb2.GetMonthToDateCostForecastRequest.FromString,
                    response_serializer=cost_dot_v1_dot_cost__pb2.GetMonthToDateCostForecastResponse.SerializeToString,
            ),
            'GetAccountBudget': grpc.unary_unary_rpc_method_handler(
                    servicer.GetAccountBudget,
                    request_deserializer=cost_dot_v1_dot_cost__pb2.GetAccountBudgetRequest.FromString,
                    response_serializer=cost_dot_v1_dot_cost__pb2.GetAccountBudgetResponse.SerializeToString,
            ),
            'CreateAccountBudget': grpc.unary_unary_rpc_method_handler(
                    servicer.CreateAccountBudget,
                    request_deserializer=cost_dot_v1_dot_cost__pb2.CreateAccountBudgetRequest.FromString,
                    response_serializer=cost_dot_v1_dot_cost__pb2.CreateAccountBudgetResponse.SerializeToString,
            ),
            'UpdateAccountBudget': grpc.unary_unary_rpc_method_handler(
                    servicer.UpdateAccountBudget,
                    request_deserializer=cost_dot_v1_dot_cost__pb2.UpdateAccountBudgetRequest.FromString,
                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            ),
            'DeleteAccountBudget': grpc.unary_unary_rpc_method_handler(
                    servicer.DeleteAccountBudget,
                    request_deserializer=cost_dot_v1_dot_cost__pb2.DeleteAccountBudgetRequest.FromString,
                    response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
            ),
            'GetRecommendations': grpc.unary_unary_rpc_method_handler(
                    servicer.GetRecommendations,
                    request_deserializer=cost_dot_v1_dot_cost__pb2.GetRecommendationsRequest.FromString,
                    response_serializer=cost_dot_v1_dot_cost__pb2.GetRecommendationsResponse.SerializeToString,
            ),
            'GetCostReduction': grpc.unary_unary_rpc_method_handler(
                    servicer.GetCostReduction,
                    request_deserializer=cost_dot_v1_dot_cost__pb2.GetCostReductionRequest.FromString,
                    response_serializer=cost_dot_v1_dot_cost__pb2.GetCostReductionResponse.SerializeToString,
            ),
    }
    generic_handler = grpc.method_handlers_generic_handler(
            'blueapi.cost.v1.Cost', rpc_method_handlers)
    server.add_generic_rpc_handlers((generic_handler,))


 # This class is part of an EXPERIMENTAL API.
class Cost(object):
    """Service for reading aggregated costs for your cloud costs and usages.
    """

    @staticmethod
    def ListPayerAccounts(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_stream(request, target, '/blueapi.cost.v1.Cost/ListPayerAccounts',
            cost_dot_v1_dot_cost__pb2.ListPayerAccountsRequest.SerializeToString,
            api_dot_account__pb2.Account.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def GetPayerAccount(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, '/blueapi.cost.v1.Cost/GetPayerAccount',
            cost_dot_v1_dot_cost__pb2.GetPayerAccountRequest.SerializeToString,
            api_dot_account__pb2.Account.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def GetPayerAccountImportHistory(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_stream(request, target, '/blueapi.cost.v1.Cost/GetPayerAccountImportHistory',
            cost_dot_v1_dot_cost__pb2.GetPayerAccountImportHistoryRequest.SerializeToString,
            cost_dot_v1_dot_cost__pb2.GetPayerAccountImportHistoryResponse.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def CreatePayerAccount(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, '/blueapi.cost.v1.Cost/CreatePayerAccount',
            cost_dot_v1_dot_cost__pb2.CreatePayerAccountRequest.SerializeToString,
            api_dot_account__pb2.Account.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def DeletePayerAccount(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, '/blueapi.cost.v1.Cost/DeletePayerAccount',
            cost_dot_v1_dot_cost__pb2.DeletePayerAccountRequest.SerializeToString,
            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def ListAccounts(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_stream(request, target, '/blueapi.cost.v1.Cost/ListAccounts',
            cost_dot_v1_dot_cost__pb2.ListAccountsRequest.SerializeToString,
            api_dot_account__pb2.Account.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def GetAccount(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, '/blueapi.cost.v1.Cost/GetAccount',
            cost_dot_v1_dot_cost__pb2.GetAccountRequest.SerializeToString,
            api_dot_account__pb2.Account.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def CreateAccount(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, '/blueapi.cost.v1.Cost/CreateAccount',
            cost_dot_v1_dot_cost__pb2.CreateAccountRequest.SerializeToString,
            api_dot_account__pb2.Account.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def DeleteAccount(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, '/blueapi.cost.v1.Cost/DeleteAccount',
            cost_dot_v1_dot_cost__pb2.DeleteAccountRequest.SerializeToString,
            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def GetCalculatorStatus(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, '/blueapi.cost.v1.Cost/GetCalculatorStatus',
            cost_dot_v1_dot_cost__pb2.GetCalculatorStatusRequest.SerializeToString,
            cost_dot_v1_dot_cost__pb2.GetCalculatorStatusResponse.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def GetCalculatorConfig(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, '/blueapi.cost.v1.Cost/GetCalculatorConfig',
            cost_dot_v1_dot_cost__pb2.GetCalculatorConfigRequest.SerializeToString,
            cost_dot_v1_dot_cost__pb2.GetCalculatorConfigResponse.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def ImportCurFiles(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, '/blueapi.cost.v1.Cost/ImportCurFiles',
            cost_dot_v1_dot_cost__pb2.ImportCurFilesRequest.SerializeToString,
            api_dot_operation__pb2.Operation.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def CalculateCosts(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, '/blueapi.cost.v1.Cost/CalculateCosts',
            cost_dot_v1_dot_cost__pb2.CalculateCostsRequest.SerializeToString,
            api_dot_operation__pb2.Operation.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def ListCalculationsHistory(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, '/blueapi.cost.v1.Cost/ListCalculationsHistory',
            cost_dot_v1_dot_cost__pb2.ListCalculationsHistoryRequest.SerializeToString,
            cost_dot_v1_dot_cost__pb2.ListCalculationsHistoryResponse.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def ReadCosts(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_stream(request, target, '/blueapi.cost.v1.Cost/ReadCosts',
            cost_dot_v1_dot_cost__pb2.ReadCostsRequest.SerializeToString,
            cost_dot_v1_dot_cost__pb2.CostItem.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def ReadAdjustments(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_stream(request, target, '/blueapi.cost.v1.Cost/ReadAdjustments',
            cost_dot_v1_dot_cost__pb2.ReadAdjustmentsRequest.SerializeToString,
            cost_dot_v1_dot_cost__pb2.CostItem.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def ReadTagCosts(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_stream(request, target, '/blueapi.cost.v1.Cost/ReadTagCosts',
            cost_dot_v1_dot_cost__pb2.ReadTagCostsRequest.SerializeToString,
            cost_dot_v1_dot_cost__pb2.CostItem.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def ReadNonTagCosts(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_stream(request, target, '/blueapi.cost.v1.Cost/ReadNonTagCosts',
            cost_dot_v1_dot_cost__pb2.ReadNonTagCostsRequest.SerializeToString,
            cost_dot_v1_dot_cost__pb2.CostItem.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def GetForecasts(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, '/blueapi.cost.v1.Cost/GetForecasts',
            cost_dot_v1_dot_cost__pb2.GetForecastsRequest.SerializeToString,
            cost_dot_v1_dot_cost__pb2.GetForecastsResponse.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def GetMonthlyCostForecast(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, '/blueapi.cost.v1.Cost/GetMonthlyCostForecast',
            cost_dot_v1_dot_cost__pb2.GetMonthlyCostForecastRequest.SerializeToString,
            cost_dot_v1_dot_cost__pb2.GetMonthlyCostForecastResponse.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def GetMonthOnMonthCostForecast(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, '/blueapi.cost.v1.Cost/GetMonthOnMonthCostForecast',
            cost_dot_v1_dot_cost__pb2.GetMonthOnMonthCostForecastRequest.SerializeToString,
            cost_dot_v1_dot_cost__pb2.GetMonthOnMonthCostForecastResponse.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def GetMonthToDateCostForecast(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, '/blueapi.cost.v1.Cost/GetMonthToDateCostForecast',
            cost_dot_v1_dot_cost__pb2.GetMonthToDateCostForecastRequest.SerializeToString,
            cost_dot_v1_dot_cost__pb2.GetMonthToDateCostForecastResponse.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def GetAccountBudget(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, '/blueapi.cost.v1.Cost/GetAccountBudget',
            cost_dot_v1_dot_cost__pb2.GetAccountBudgetRequest.SerializeToString,
            cost_dot_v1_dot_cost__pb2.GetAccountBudgetResponse.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def CreateAccountBudget(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, '/blueapi.cost.v1.Cost/CreateAccountBudget',
            cost_dot_v1_dot_cost__pb2.CreateAccountBudgetRequest.SerializeToString,
            cost_dot_v1_dot_cost__pb2.CreateAccountBudgetResponse.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def UpdateAccountBudget(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, '/blueapi.cost.v1.Cost/UpdateAccountBudget',
            cost_dot_v1_dot_cost__pb2.UpdateAccountBudgetRequest.SerializeToString,
            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def DeleteAccountBudget(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, '/blueapi.cost.v1.Cost/DeleteAccountBudget',
            cost_dot_v1_dot_cost__pb2.DeleteAccountBudgetRequest.SerializeToString,
            google_dot_protobuf_dot_empty__pb2.Empty.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def GetRecommendations(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, '/blueapi.cost.v1.Cost/GetRecommendations',
            cost_dot_v1_dot_cost__pb2.GetRecommendationsRequest.SerializeToString,
            cost_dot_v1_dot_cost__pb2.GetRecommendationsResponse.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def GetCostReduction(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, '/blueapi.cost.v1.Cost/GetCostReduction',
            cost_dot_v1_dot_cost__pb2.GetCostReductionRequest.SerializeToString,
            cost_dot_v1_dot_cost__pb2.GetCostReductionResponse.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
