"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
"""

import builtins
import google.protobuf.descriptor
import google.protobuf.message
import typing
import yandex.cloud.billing.usage_records.v1.common_types_pb2

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

@typing.final
class CreditDetails(google.protobuf.message.Message):
    """Detailed breakdown of credits (discounts, incentives, grants, etc.) applied to an entity.
    Credits reduce the effective cost that customers pay for cloud resources.
    The 'credit' field is the total amount of credits (the sum of all credit types below).
    This breakdown allows for detailed analysis of different discount types affecting billing.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    CREDIT_FIELD_NUMBER: builtins.int
    MONETARY_GRANT_CREDIT_FIELD_NUMBER: builtins.int
    VOLUME_INCENTIVE_CREDIT_FIELD_NUMBER: builtins.int
    CUD_CREDIT_FIELD_NUMBER: builtins.int
    FREE_CREDIT_FIELD_NUMBER: builtins.int
    @property
    def credit(self) -> yandex.cloud.billing.usage_records.v1.common_types_pb2.StringDecimal:
        """Total amount of credits (sum of all credit types) applied to the entity.
        This is the overall discount applied, reducing the cost to arrive at the final expense.
        Formula: expense = cost + credit
        """

    @property
    def monetary_grant_credit(self) -> yandex.cloud.billing.usage_records.v1.common_types_pb2.StringDecimal:
        """Credits granted as a one-time monetary grant."""

    @property
    def volume_incentive_credit(self) -> yandex.cloud.billing.usage_records.v1.common_types_pb2.StringDecimal:
        """Credits given as a volume-based incentive."""

    @property
    def cud_credit(self) -> yandex.cloud.billing.usage_records.v1.common_types_pb2.StringDecimal:
        """Committed Use Discount credits."""

    @property
    def free_credit(self) -> yandex.cloud.billing.usage_records.v1.common_types_pb2.StringDecimal:
        """Credits provided as part of a 'free' program."""

    def __init__(
        self,
        *,
        credit: yandex.cloud.billing.usage_records.v1.common_types_pb2.StringDecimal | None = ...,
        monetary_grant_credit: yandex.cloud.billing.usage_records.v1.common_types_pb2.StringDecimal | None = ...,
        volume_incentive_credit: yandex.cloud.billing.usage_records.v1.common_types_pb2.StringDecimal | None = ...,
        cud_credit: yandex.cloud.billing.usage_records.v1.common_types_pb2.StringDecimal | None = ...,
        free_credit: yandex.cloud.billing.usage_records.v1.common_types_pb2.StringDecimal | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["credit", b"credit", "cud_credit", b"cud_credit", "free_credit", b"free_credit", "monetary_grant_credit", b"monetary_grant_credit", "volume_incentive_credit", b"volume_incentive_credit"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["credit", b"credit", "cud_credit", b"cud_credit", "free_credit", b"free_credit", "monetary_grant_credit", b"monetary_grant_credit", "volume_incentive_credit", b"volume_incentive_credit"]) -> None: ...

global___CreditDetails = CreditDetails
