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

import builtins
import collections.abc
import google.protobuf.descriptor
import google.protobuf.internal.containers
import google.protobuf.message
import google.protobuf.timestamp_pb2
import typing
import yandex.cloud.billing.usage_records.v1.billing_types_pb2
import yandex.cloud.billing.usage_records.v1.common_types_pb2
import yandex.cloud.billing.usage_records.v1.credit_pb2

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

@typing.final
class BillingAccountUsageReportEntityData(google.protobuf.message.Message):
    """Usage and billing data for the billing account entity in the report.
    This represents the second level in the response structure hierarchy (entity-level totals),
    containing both summary data for the specified billing account across the entire period and a time series breakdown.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    COST_FIELD_NUMBER: builtins.int
    CREDIT_DETAILS_FIELD_NUMBER: builtins.int
    EXPENSE_FIELD_NUMBER: builtins.int
    BILLING_ACCOUNT_FIELD_NUMBER: builtins.int
    PERIODIC_FIELD_NUMBER: builtins.int
    @property
    def cost(self) -> yandex.cloud.billing.usage_records.v1.common_types_pb2.StringDecimal:
        """Total cost associated with this billing account."""

    @property
    def credit_details(self) -> yandex.cloud.billing.usage_records.v1.credit_pb2.CreditDetails:
        """Total credits (discounts, grants, adjustments) applied to this billing account."""

    @property
    def expense(self) -> yandex.cloud.billing.usage_records.v1.common_types_pb2.StringDecimal:
        """Total expense (including cost and credit) for this billing account."""

    @property
    def billing_account(self) -> yandex.cloud.billing.usage_records.v1.billing_types_pb2.BillingAccount:
        """Metadata for the specified billing account entity."""

    @property
    def periodic(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___UsageReportPeriodicData]:
        """Time series with usage and billing details for each TimeGrouping period (e.g., daily)."""

    def __init__(
        self,
        *,
        cost: yandex.cloud.billing.usage_records.v1.common_types_pb2.StringDecimal | None = ...,
        credit_details: yandex.cloud.billing.usage_records.v1.credit_pb2.CreditDetails | None = ...,
        expense: yandex.cloud.billing.usage_records.v1.common_types_pb2.StringDecimal | None = ...,
        billing_account: yandex.cloud.billing.usage_records.v1.billing_types_pb2.BillingAccount | None = ...,
        periodic: collections.abc.Iterable[global___UsageReportPeriodicData] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["billing_account", b"billing_account", "cost", b"cost", "credit_details", b"credit_details", "expense", b"expense"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["billing_account", b"billing_account", "cost", b"cost", "credit_details", b"credit_details", "expense", b"expense", "periodic", b"periodic"]) -> None: ...

global___BillingAccountUsageReportEntityData = BillingAccountUsageReportEntityData

@typing.final
class CloudUsageReportEntityData(google.protobuf.message.Message):
    """Usage and billing data for a cloud entity in the report.
    This represents the second level in the response structure hierarchy (entity-level totals),
    containing both summary data for the entity across the entire period and a time series breakdown.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    COST_FIELD_NUMBER: builtins.int
    CREDIT_DETAILS_FIELD_NUMBER: builtins.int
    EXPENSE_FIELD_NUMBER: builtins.int
    CLOUD_FIELD_NUMBER: builtins.int
    PERIODIC_FIELD_NUMBER: builtins.int
    @property
    def cost(self) -> yandex.cloud.billing.usage_records.v1.common_types_pb2.StringDecimal:
        """Total cost associated with this cloud."""

    @property
    def credit_details(self) -> yandex.cloud.billing.usage_records.v1.credit_pb2.CreditDetails:
        """Total credits (discounts, grants, adjustments) applied to this cloud."""

    @property
    def expense(self) -> yandex.cloud.billing.usage_records.v1.common_types_pb2.StringDecimal:
        """Total expense (including cost and credit) for this cloud."""

    @property
    def cloud(self) -> yandex.cloud.billing.usage_records.v1.billing_types_pb2.Cloud:
        """Metadata for the cloud entity."""

    @property
    def periodic(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___UsageReportPeriodicData]:
        """Time series with usage and billing details for each TimeGrouping period (e.g., daily)."""

    def __init__(
        self,
        *,
        cost: yandex.cloud.billing.usage_records.v1.common_types_pb2.StringDecimal | None = ...,
        credit_details: yandex.cloud.billing.usage_records.v1.credit_pb2.CreditDetails | None = ...,
        expense: yandex.cloud.billing.usage_records.v1.common_types_pb2.StringDecimal | None = ...,
        cloud: yandex.cloud.billing.usage_records.v1.billing_types_pb2.Cloud | None = ...,
        periodic: collections.abc.Iterable[global___UsageReportPeriodicData] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["cloud", b"cloud", "cost", b"cost", "credit_details", b"credit_details", "expense", b"expense"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["cloud", b"cloud", "cost", b"cost", "credit_details", b"credit_details", "expense", b"expense", "periodic", b"periodic"]) -> None: ...

global___CloudUsageReportEntityData = CloudUsageReportEntityData

@typing.final
class FolderUsageReportEntityData(google.protobuf.message.Message):
    """Usage and billing data for a folder entity in the report.
    This represents the second level in the response structure hierarchy (entity-level totals),
    containing both summary data for the entity across the entire period and a time series breakdown.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    COST_FIELD_NUMBER: builtins.int
    CREDIT_DETAILS_FIELD_NUMBER: builtins.int
    EXPENSE_FIELD_NUMBER: builtins.int
    FOLDER_FIELD_NUMBER: builtins.int
    PERIODIC_FIELD_NUMBER: builtins.int
    @property
    def cost(self) -> yandex.cloud.billing.usage_records.v1.common_types_pb2.StringDecimal:
        """Total cost associated with this folder."""

    @property
    def credit_details(self) -> yandex.cloud.billing.usage_records.v1.credit_pb2.CreditDetails:
        """Total credits (discounts, grants, adjustments) applied to this folder."""

    @property
    def expense(self) -> yandex.cloud.billing.usage_records.v1.common_types_pb2.StringDecimal:
        """Total expense (including cost and credit) for this folder."""

    @property
    def folder(self) -> yandex.cloud.billing.usage_records.v1.billing_types_pb2.Folder:
        """Metadata for the folder entity."""

    @property
    def periodic(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___UsageReportPeriodicData]:
        """Time series with usage and billing details for each TimeGrouping period (e.g., daily)."""

    def __init__(
        self,
        *,
        cost: yandex.cloud.billing.usage_records.v1.common_types_pb2.StringDecimal | None = ...,
        credit_details: yandex.cloud.billing.usage_records.v1.credit_pb2.CreditDetails | None = ...,
        expense: yandex.cloud.billing.usage_records.v1.common_types_pb2.StringDecimal | None = ...,
        folder: yandex.cloud.billing.usage_records.v1.billing_types_pb2.Folder | None = ...,
        periodic: collections.abc.Iterable[global___UsageReportPeriodicData] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["cost", b"cost", "credit_details", b"credit_details", "expense", b"expense", "folder", b"folder"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["cost", b"cost", "credit_details", b"credit_details", "expense", b"expense", "folder", b"folder", "periodic", b"periodic"]) -> None: ...

global___FolderUsageReportEntityData = FolderUsageReportEntityData

@typing.final
class ServiceUsageReportEntityData(google.protobuf.message.Message):
    """Usage and billing data for a service entity in the report.
    This represents the second level in the response structure hierarchy (entity-level totals),
    containing both summary data for the entity across the entire period and a time series breakdown.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    COST_FIELD_NUMBER: builtins.int
    CREDIT_DETAILS_FIELD_NUMBER: builtins.int
    EXPENSE_FIELD_NUMBER: builtins.int
    SERVICE_FIELD_NUMBER: builtins.int
    PERIODIC_FIELD_NUMBER: builtins.int
    @property
    def cost(self) -> yandex.cloud.billing.usage_records.v1.common_types_pb2.StringDecimal:
        """Total cost associated with this service."""

    @property
    def credit_details(self) -> yandex.cloud.billing.usage_records.v1.credit_pb2.CreditDetails:
        """Total credits (discounts, grants, adjustments) applied to this service."""

    @property
    def expense(self) -> yandex.cloud.billing.usage_records.v1.common_types_pb2.StringDecimal:
        """Total expense (including cost and credit) for this service."""

    @property
    def service(self) -> yandex.cloud.billing.usage_records.v1.billing_types_pb2.Service:
        """Metadata for the service entity."""

    @property
    def periodic(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___UsageReportPeriodicData]:
        """Time series with usage and billing details for each TimeGrouping period (e.g., daily)."""

    def __init__(
        self,
        *,
        cost: yandex.cloud.billing.usage_records.v1.common_types_pb2.StringDecimal | None = ...,
        credit_details: yandex.cloud.billing.usage_records.v1.credit_pb2.CreditDetails | None = ...,
        expense: yandex.cloud.billing.usage_records.v1.common_types_pb2.StringDecimal | None = ...,
        service: yandex.cloud.billing.usage_records.v1.billing_types_pb2.Service | None = ...,
        periodic: collections.abc.Iterable[global___UsageReportPeriodicData] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["cost", b"cost", "credit_details", b"credit_details", "expense", b"expense", "service", b"service"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["cost", b"cost", "credit_details", b"credit_details", "expense", b"expense", "periodic", b"periodic", "service", b"service"]) -> None: ...

global___ServiceUsageReportEntityData = ServiceUsageReportEntityData

@typing.final
class SKUUsageReportEntityData(google.protobuf.message.Message):
    """Usage and billing data for a SKU entity in the report.
    This represents the second level in the response structure hierarchy (entity-level totals),
    containing both summary data for the entity across the entire period and a time series breakdown.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    COST_FIELD_NUMBER: builtins.int
    CREDIT_DETAILS_FIELD_NUMBER: builtins.int
    EXPENSE_FIELD_NUMBER: builtins.int
    PRICING_QUANTITY_FIELD_NUMBER: builtins.int
    SKU_FIELD_NUMBER: builtins.int
    PERIODIC_FIELD_NUMBER: builtins.int
    @property
    def cost(self) -> yandex.cloud.billing.usage_records.v1.common_types_pb2.StringDecimal:
        """Total cost associated with this entity."""

    @property
    def credit_details(self) -> yandex.cloud.billing.usage_records.v1.credit_pb2.CreditDetails:
        """Total credits (discounts, grants, adjustments) applied to this entity."""

    @property
    def expense(self) -> yandex.cloud.billing.usage_records.v1.common_types_pb2.StringDecimal:
        """Total expense (including cost and credit) for this entity."""

    @property
    def pricing_quantity(self) -> yandex.cloud.billing.usage_records.v1.common_types_pb2.StringDecimal:
        """Total resource usage (pricing quantity) for this entity, measured in pricing units."""

    @property
    def sku(self) -> yandex.cloud.billing.usage_records.v1.billing_types_pb2.SKU:
        """Metadata for a product/SKU entity."""

    @property
    def periodic(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___UsageReportPeriodicData]:
        """Time series with usage and billing details for each TimeGrouping period (e.g., daily)."""

    def __init__(
        self,
        *,
        cost: yandex.cloud.billing.usage_records.v1.common_types_pb2.StringDecimal | None = ...,
        credit_details: yandex.cloud.billing.usage_records.v1.credit_pb2.CreditDetails | None = ...,
        expense: yandex.cloud.billing.usage_records.v1.common_types_pb2.StringDecimal | None = ...,
        pricing_quantity: yandex.cloud.billing.usage_records.v1.common_types_pb2.StringDecimal | None = ...,
        sku: yandex.cloud.billing.usage_records.v1.billing_types_pb2.SKU | None = ...,
        periodic: collections.abc.Iterable[global___UsageReportPeriodicData] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["cost", b"cost", "credit_details", b"credit_details", "expense", b"expense", "pricing_quantity", b"pricing_quantity", "sku", b"sku"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["cost", b"cost", "credit_details", b"credit_details", "expense", b"expense", "periodic", b"periodic", "pricing_quantity", b"pricing_quantity", "sku", b"sku"]) -> None: ...

global___SKUUsageReportEntityData = SKUUsageReportEntityData

@typing.final
class ResourceUsageReportEntityData(google.protobuf.message.Message):
    """Usage and billing data for a resource entity in the report.
    This represents the second level in the response structure hierarchy (entity-level totals),
    containing both summary data for the entity across the entire period and a time series breakdown.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    COST_FIELD_NUMBER: builtins.int
    CREDIT_DETAILS_FIELD_NUMBER: builtins.int
    EXPENSE_FIELD_NUMBER: builtins.int
    RESOURCE_FIELD_NUMBER: builtins.int
    PERIODIC_FIELD_NUMBER: builtins.int
    @property
    def cost(self) -> yandex.cloud.billing.usage_records.v1.common_types_pb2.StringDecimal:
        """Total cost associated with this label group."""

    @property
    def credit_details(self) -> yandex.cloud.billing.usage_records.v1.credit_pb2.CreditDetails:
        """Total credits (discounts, grants, adjustments) applied to this label group."""

    @property
    def expense(self) -> yandex.cloud.billing.usage_records.v1.common_types_pb2.StringDecimal:
        """Total expense (including cost and credit) for this label group."""

    @property
    def resource(self) -> yandex.cloud.billing.usage_records.v1.billing_types_pb2.Resource:
        """Metadata for the label-based grouping."""

    @property
    def periodic(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___UsageReportPeriodicData]:
        """Time series with usage and billing details for each TimeGrouping period (e.g., daily)."""

    def __init__(
        self,
        *,
        cost: yandex.cloud.billing.usage_records.v1.common_types_pb2.StringDecimal | None = ...,
        credit_details: yandex.cloud.billing.usage_records.v1.credit_pb2.CreditDetails | None = ...,
        expense: yandex.cloud.billing.usage_records.v1.common_types_pb2.StringDecimal | None = ...,
        resource: yandex.cloud.billing.usage_records.v1.billing_types_pb2.Resource | None = ...,
        periodic: collections.abc.Iterable[global___UsageReportPeriodicData] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["cost", b"cost", "credit_details", b"credit_details", "expense", b"expense", "resource", b"resource"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["cost", b"cost", "credit_details", b"credit_details", "expense", b"expense", "periodic", b"periodic", "resource", b"resource"]) -> None: ...

global___ResourceUsageReportEntityData = ResourceUsageReportEntityData

@typing.final
class LabelUsageReportEntityData(google.protobuf.message.Message):
    """Usage and billing data for a label-based entity/grouping in the report.
    This represents the second level in the response structure hierarchy (entity-level totals),
    containing both summary data for the entity across the entire period and a time series breakdown.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    COST_FIELD_NUMBER: builtins.int
    CREDIT_DETAILS_FIELD_NUMBER: builtins.int
    EXPENSE_FIELD_NUMBER: builtins.int
    LABEL_FIELD_NUMBER: builtins.int
    PERIODIC_FIELD_NUMBER: builtins.int
    @property
    def cost(self) -> yandex.cloud.billing.usage_records.v1.common_types_pb2.StringDecimal:
        """Total cost associated with this label group."""

    @property
    def credit_details(self) -> yandex.cloud.billing.usage_records.v1.credit_pb2.CreditDetails:
        """Total credits (discounts, grants, adjustments) applied to this label group."""

    @property
    def expense(self) -> yandex.cloud.billing.usage_records.v1.common_types_pb2.StringDecimal:
        """Total expense (including cost and credit) for this label group."""

    @property
    def label(self) -> yandex.cloud.billing.usage_records.v1.billing_types_pb2.Label:
        """Metadata for the label-based grouping."""

    @property
    def periodic(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___UsageReportPeriodicData]:
        """Time series with usage and billing details for each TimeGrouping period (e.g., daily)."""

    def __init__(
        self,
        *,
        cost: yandex.cloud.billing.usage_records.v1.common_types_pb2.StringDecimal | None = ...,
        credit_details: yandex.cloud.billing.usage_records.v1.credit_pb2.CreditDetails | None = ...,
        expense: yandex.cloud.billing.usage_records.v1.common_types_pb2.StringDecimal | None = ...,
        label: yandex.cloud.billing.usage_records.v1.billing_types_pb2.Label | None = ...,
        periodic: collections.abc.Iterable[global___UsageReportPeriodicData] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["cost", b"cost", "credit_details", b"credit_details", "expense", b"expense", "label", b"label"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["cost", b"cost", "credit_details", b"credit_details", "expense", b"expense", "label", b"label", "periodic", b"periodic"]) -> None: ...

global___LabelUsageReportEntityData = LabelUsageReportEntityData

@typing.final
class UsageReportPeriodicData(google.protobuf.message.Message):
    """Represents usage and billing data for a specific aggregation period (e.g., a single day, month).
    This message is part of the third level in the response structure hierarchy, providing the
    time series breakdown for entities. It appears in the 'periodic' field of each entity data object,
    containing financial metrics for each time interval within the requested date range.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    COST_FIELD_NUMBER: builtins.int
    CREDIT_DETAILS_FIELD_NUMBER: builtins.int
    EXPENSE_FIELD_NUMBER: builtins.int
    TIMESTAMP_FIELD_NUMBER: builtins.int
    @property
    def cost(self) -> yandex.cloud.billing.usage_records.v1.common_types_pb2.StringDecimal:
        """Cost incurred during this specific period.
        This is the raw cost before any credits are applied.
        """

    @property
    def credit_details(self) -> yandex.cloud.billing.usage_records.v1.credit_pb2.CreditDetails:
        """Credits applied during this period.
        Contains a detailed breakdown of all credit types (monetary grants, volume incentives, etc.)
        that were applied during this specific time interval.
        """

    @property
    def expense(self) -> yandex.cloud.billing.usage_records.v1.common_types_pb2.StringDecimal:
        """Total expense (including cost and credit) for this period.
        This is the final billable amount after all credits have been applied.
        Formula: expense = cost + credit_details.credit
        """

    @property
    def timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp:
        """Timestamp indicating the beginning of the TimeGrouping period."""

    def __init__(
        self,
        *,
        cost: yandex.cloud.billing.usage_records.v1.common_types_pb2.StringDecimal | None = ...,
        credit_details: yandex.cloud.billing.usage_records.v1.credit_pb2.CreditDetails | None = ...,
        expense: yandex.cloud.billing.usage_records.v1.common_types_pb2.StringDecimal | None = ...,
        timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["cost", b"cost", "credit_details", b"credit_details", "expense", b"expense", "timestamp", b"timestamp"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["cost", b"cost", "credit_details", b"credit_details", "expense", b"expense", "timestamp", b"timestamp"]) -> None: ...

global___UsageReportPeriodicData = UsageReportPeriodicData
