"""
@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.consumption_core_pb2
import yandex.cloud.billing.usage_records.v1.credit_pb2

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

@typing.final
class UsageReportRequest(google.protobuf.message.Message):
    """Request for retrieving usage report data.

    This message defines the parameters for requesting usage reports across
    all ConsumptionCoreService methods. It supports filtering by various
    entity types and specifying the time range and aggregation period.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    @typing.final
    class LabelsEntry(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        KEY_FIELD_NUMBER: builtins.int
        VALUE_FIELD_NUMBER: builtins.int
        key: builtins.str
        @property
        def value(self) -> yandex.cloud.billing.usage_records.v1.billing_types_pb2.LabelList: ...
        def __init__(
            self,
            *,
            key: builtins.str = ...,
            value: yandex.cloud.billing.usage_records.v1.billing_types_pb2.LabelList | None = ...,
        ) -> None: ...
        def HasField(self, field_name: typing.Literal["value", b"value"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ...

    BILLING_ACCOUNT_ID_FIELD_NUMBER: builtins.int
    START_DATE_FIELD_NUMBER: builtins.int
    END_DATE_FIELD_NUMBER: builtins.int
    CLOUD_IDS_FIELD_NUMBER: builtins.int
    FOLDER_IDS_FIELD_NUMBER: builtins.int
    SERVICE_IDS_FIELD_NUMBER: builtins.int
    SKU_IDS_FIELD_NUMBER: builtins.int
    LABELS_FIELD_NUMBER: builtins.int
    RESOURCE_IDS_FIELD_NUMBER: builtins.int
    AGGREGATION_PERIOD_FIELD_NUMBER: builtins.int
    billing_account_id: builtins.str
    """Required. Billing account identifier."""
    aggregation_period: yandex.cloud.billing.usage_records.v1.common_types_pb2.TimeGrouping.ValueType
    """Note on filter combinations: When multiple filter types are specified (cloud_ids, folder_ids,
    service_ids, sku_ids, labels, resource_ids), they are combined with AND logic. For example,
    if both cloud_ids and service_ids are provided, the results will only include data that
    matches both the specified clouds AND the specified services.

    The billing currency for the report is determined automatically based on the billing account.
    All monetary values in the response will be in this currency.

    Optional. Aggregation granularity for the report, controlling how data points are grouped
    in time series results. Available options include:
    - DAY: Group metrics by day, providing daily breakdowns
    - WEEK: Group metrics by week, providing weekly breakdowns
    - MONTH: Group metrics by month, providing monthly breakdowns
    - QUARTER: Group metrics by quarter, providing quarterly breakdowns
    - YEAR: Group metrics by year, providing yearly breakdowns

    This setting affects the time series data returned in the periodic field of each entity.
    If omitted, the service will typically use DAY as the default granularity.
    """
    @property
    def start_date(self) -> google.protobuf.timestamp_pb2.Timestamp:
        """Required. Inclusive start date for metrics selection (UTC).
        This timestamp defines the beginning of the reporting period.
        All usage data starting from this timestamp will be included in the report.
        Note: The time component (hours/minutes/seconds) is ignored since the smallest
        aggregation period is a day. For example, both 2023-04-15T00:00:00 and
        2023-04-15T23:59:59 will include the entire day of April 15, 2023.
        For best results, align with natural time boundaries (start of day, month)
        based on your aggregation_period value.
        """

    @property
    def end_date(self) -> google.protobuf.timestamp_pb2.Timestamp:
        """Required. Inclusive end date for metrics selection (UTC).
        This timestamp defines the end of the reporting period.
        All usage data up to and including this timestamp will be included in the report.
        Note: The time component (hours/minutes/seconds) is ignored since the smallest
        aggregation period is a day. For example, both 2023-04-15T00:00:00 and
        2023-04-15T23:59:59 will include the entire day of April 15, 2023.
        For best results, align with natural time boundaries (end of day, month)
        based on your aggregation_period value.
        """

    @property
    def cloud_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """Optional. List of cloud IDs to filter the data.
        If specified, only usage data from these clouds will be included in the report.
        If omitted, data from all clouds available to the billing account will be included.
        The filter is applied with OR logic (results include data matching any of the specified cloud IDs).
        """

    @property
    def folder_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """Optional. List of folder IDs to filter the data.
        If specified, only usage data from these folders will be included in the report.
        If omitted, data from all folders available to the billing account will be included.
        The filter is applied with OR logic (results include data matching any of the specified folder IDs).
        """

    @property
    def service_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """Optional. List of Service IDs to filter the data.
        If specified, only usage data from these services (e.g., Compute, Storage, AI) will be included.
        If omitted, data from all services used by the billing account will be included.
        The filter is applied with OR logic (results include data matching any of the specified service IDs).
        """

    @property
    def sku_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """Optional. List of SKU (Stock Keeping Unit) IDs to filter the data.
        If specified, only usage data from these specific SKUs will be included.
        If omitted, data from all SKUs used by the billing account will be included.
        The filter is applied with OR logic (results include data matching any of the specified SKU IDs).
        """

    @property
    def labels(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, yandex.cloud.billing.usage_records.v1.billing_types_pb2.LabelList]:
        """Optional. Filter by labels: key is label key (e.g., "env", "team", "region"),
        value is list of label values to match (e.g., ["prod", "stage"] for key "env").
        This allows filtering resources based on their attached labels.

        Example: To filter resources that have either (env=prod OR env=test) AND (team=finance),
        use the following filter:
        {
          "env": { "values": ["prod", "test"] },
          "team": { "values": ["finance"] }
        }

        Note: The filter logic is (value1 OR value2 OR ...) for each key,
        and (key1 AND key2 AND ...) between different keys.
        """

    @property
    def resource_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """Optional. List of resource IDs to filter the data.
        If specified, only usage data from these specific resources (e.g., individual VMs, disks) will be included.
        If omitted, data from all resources used by the billing account will be included.
        Filter is applied with OR logic (results include data matching any of the specified resource IDs).
        """

    def __init__(
        self,
        *,
        billing_account_id: builtins.str = ...,
        start_date: google.protobuf.timestamp_pb2.Timestamp | None = ...,
        end_date: google.protobuf.timestamp_pb2.Timestamp | None = ...,
        cloud_ids: collections.abc.Iterable[builtins.str] | None = ...,
        folder_ids: collections.abc.Iterable[builtins.str] | None = ...,
        service_ids: collections.abc.Iterable[builtins.str] | None = ...,
        sku_ids: collections.abc.Iterable[builtins.str] | None = ...,
        labels: collections.abc.Mapping[builtins.str, yandex.cloud.billing.usage_records.v1.billing_types_pb2.LabelList] | None = ...,
        resource_ids: collections.abc.Iterable[builtins.str] | None = ...,
        aggregation_period: yandex.cloud.billing.usage_records.v1.common_types_pb2.TimeGrouping.ValueType = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["end_date", b"end_date", "start_date", b"start_date"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["aggregation_period", b"aggregation_period", "billing_account_id", b"billing_account_id", "cloud_ids", b"cloud_ids", "end_date", b"end_date", "folder_ids", b"folder_ids", "labels", b"labels", "resource_ids", b"resource_ids", "service_ids", b"service_ids", "sku_ids", b"sku_ids", "start_date", b"start_date"]) -> None: ...

global___UsageReportRequest = UsageReportRequest

@typing.final
class BillingAccountUsageReportResponse(google.protobuf.message.Message):
    """Response for usage report requests by billing account.

    Contains aggregated usage, cost, and credit information for a billing account,
    with both summary totals and detailed breakdowns by billing account entity.
    The response includes:
    1. Overall totals for the entire period (cost, credits, expense)
    2. Entity-level totals for the specified billing account
    3. Time series breakdown for the billing account according to the requested aggregation period
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    CURRENCY_FIELD_NUMBER: builtins.int
    COST_FIELD_NUMBER: builtins.int
    CREDIT_DETAILS_FIELD_NUMBER: builtins.int
    EXPENSE_FIELD_NUMBER: builtins.int
    ENTITIES_DATA_FIELD_NUMBER: builtins.int
    currency: yandex.cloud.billing.usage_records.v1.common_types_pb2.Currency.ValueType
    """Currency code (e.g., "RUB", "USD") for all monetary values in the response.
    Determined by the billing account's settings.
    """
    @property
    def cost(self) -> yandex.cloud.billing.usage_records.v1.common_types_pb2.StringDecimal:
        """Total usage cost for the selected time period.
        This represents the raw cost before any credits or discounts are applied.
        Calculated based on the resource consumption and the corresponding price rates.
        """

    @property
    def credit_details(self) -> yandex.cloud.billing.usage_records.v1.credit_pb2.CreditDetails:
        """Total credits (monetary grants, volume incentives, committed use discounts, and free credits) applied in the selected period.
        Contains a detailed breakdown of all credit types that reduced the final billable amount.
        """

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

    @property
    def entities_data(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[yandex.cloud.billing.usage_records.v1.consumption_core_pb2.BillingAccountUsageReportEntityData]:
        """Detailed usage and billing data for the specified billing account entity.
        This field contains a structured breakdown of costs, credits, and expenses
        for the requested billing account, including:
        1. Entity-level totals for the entire period (cost, credits, expense)
        2. Time series data broken down by the specified aggregation period (day/week/month/quarter/year)
        This represents the second and third levels in the overall three-level response structure.
        """

    def __init__(
        self,
        *,
        currency: yandex.cloud.billing.usage_records.v1.common_types_pb2.Currency.ValueType = ...,
        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 = ...,
        entities_data: collections.abc.Iterable[yandex.cloud.billing.usage_records.v1.consumption_core_pb2.BillingAccountUsageReportEntityData] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["cost", b"cost", "credit_details", b"credit_details", "expense", b"expense"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["cost", b"cost", "credit_details", b"credit_details", "currency", b"currency", "entities_data", b"entities_data", "expense", b"expense"]) -> None: ...

global___BillingAccountUsageReportResponse = BillingAccountUsageReportResponse

@typing.final
class CloudUsageReportResponse(google.protobuf.message.Message):
    """Response for usage report requests by cloud.

    Contains aggregated usage, cost, and credit information organized by cloud entities,
    with both summary totals and detailed breakdowns for each cloud.
    The response includes:
    1. Overall totals for the entire period (cost, credits, expense)
    2. Entity-level totals for each cloud
    3. Time series breakdown for each cloud according to the requested aggregation period
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    CURRENCY_FIELD_NUMBER: builtins.int
    COST_FIELD_NUMBER: builtins.int
    CREDIT_DETAILS_FIELD_NUMBER: builtins.int
    EXPENSE_FIELD_NUMBER: builtins.int
    ENTITIES_DATA_FIELD_NUMBER: builtins.int
    currency: yandex.cloud.billing.usage_records.v1.common_types_pb2.Currency.ValueType
    """Currency code (e.g., "RUB", "USD") for all monetary values in the response.
    Determined by the billing account's settings.
    """
    @property
    def cost(self) -> yandex.cloud.billing.usage_records.v1.common_types_pb2.StringDecimal:
        """Total usage cost for the selected time period.
        This represents the raw cost before any credits or discounts are applied.
        Calculated based on the resource consumption and the corresponding price rates.
        """

    @property
    def credit_details(self) -> yandex.cloud.billing.usage_records.v1.credit_pb2.CreditDetails:
        """Total credits (monetary grants, volume incentives, committed use discounts, and free credits) applied in the selected period.
        Contains a detailed breakdown of all credit types that reduced the final billable amount.
        """

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

    @property
    def entities_data(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[yandex.cloud.billing.usage_records.v1.consumption_core_pb2.CloudUsageReportEntityData]:
        """Detailed usage and billing data for each cloud entity.
        This field contains a structured breakdown of costs, credits, and expenses
        for each individual cloud, including:
        1. Entity-level totals for the entire period (cost, credits, expense)
        2. Time series data broken down by the specified aggregation period (day/week/month/quarter/year)
        This represents the second and third levels in the overall three-level response structure.
        """

    def __init__(
        self,
        *,
        currency: yandex.cloud.billing.usage_records.v1.common_types_pb2.Currency.ValueType = ...,
        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 = ...,
        entities_data: collections.abc.Iterable[yandex.cloud.billing.usage_records.v1.consumption_core_pb2.CloudUsageReportEntityData] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["cost", b"cost", "credit_details", b"credit_details", "expense", b"expense"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["cost", b"cost", "credit_details", b"credit_details", "currency", b"currency", "entities_data", b"entities_data", "expense", b"expense"]) -> None: ...

global___CloudUsageReportResponse = CloudUsageReportResponse

@typing.final
class FolderUsageReportResponse(google.protobuf.message.Message):
    """Response for usage report requests by folder.

    Contains aggregated usage, cost, and credit information organized by folder entities,
    with both summary totals and detailed breakdowns for each folder.
    The response includes:
    1. Overall totals for the entire period (cost, credits, expense)
    2. Entity-level totals for each folder
    3. Time series breakdown for each folder according to the requested aggregation period
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    CURRENCY_FIELD_NUMBER: builtins.int
    COST_FIELD_NUMBER: builtins.int
    CREDIT_DETAILS_FIELD_NUMBER: builtins.int
    EXPENSE_FIELD_NUMBER: builtins.int
    ENTITIES_DATA_FIELD_NUMBER: builtins.int
    currency: yandex.cloud.billing.usage_records.v1.common_types_pb2.Currency.ValueType
    """Currency code (e.g., "RUB", "USD") for all monetary values in the response.
    Determined by the billing account's settings.
    """
    @property
    def cost(self) -> yandex.cloud.billing.usage_records.v1.common_types_pb2.StringDecimal:
        """Total usage cost for the selected time period.
        This represents the raw cost before any credits or discounts are applied.
        Calculated based on the resource consumption and the corresponding price rates.
        """

    @property
    def credit_details(self) -> yandex.cloud.billing.usage_records.v1.credit_pb2.CreditDetails:
        """Total credits (monetary grants, volume incentives, committed use discounts, and free credits) applied in the selected period.
        Contains a detailed breakdown of all credit types that reduced the final billable amount.
        """

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

    @property
    def entities_data(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[yandex.cloud.billing.usage_records.v1.consumption_core_pb2.FolderUsageReportEntityData]:
        """Detailed usage and billing data for each folder entity.
        This field contains a structured breakdown of costs, credits, and expenses
        for each individual folder, including:
        1. Entity-level totals for the entire period (cost, credits, expense)
        2. Time series data broken down by the specified aggregation period (day/week/month/quarter/year)
        This represents the second and third levels in the overall three-level response structure.
        """

    def __init__(
        self,
        *,
        currency: yandex.cloud.billing.usage_records.v1.common_types_pb2.Currency.ValueType = ...,
        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 = ...,
        entities_data: collections.abc.Iterable[yandex.cloud.billing.usage_records.v1.consumption_core_pb2.FolderUsageReportEntityData] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["cost", b"cost", "credit_details", b"credit_details", "expense", b"expense"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["cost", b"cost", "credit_details", b"credit_details", "currency", b"currency", "entities_data", b"entities_data", "expense", b"expense"]) -> None: ...

global___FolderUsageReportResponse = FolderUsageReportResponse

@typing.final
class ServiceUsageReportResponse(google.protobuf.message.Message):
    """Response for usage report requests by service.

    Contains aggregated usage, cost, and credit information organized by service entities,
    with both summary totals and detailed breakdowns for each service. Services represent
    broad product categories (like Compute, Storage, AI) that can contain multiple SKUs.
    The response includes:
    1. Overall totals for the entire period (cost, credits, expense)
    2. Entity-level totals for each service
    3. Time series breakdown for each service according to the requested aggregation period
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    CURRENCY_FIELD_NUMBER: builtins.int
    COST_FIELD_NUMBER: builtins.int
    CREDIT_DETAILS_FIELD_NUMBER: builtins.int
    EXPENSE_FIELD_NUMBER: builtins.int
    ENTITIES_DATA_FIELD_NUMBER: builtins.int
    currency: yandex.cloud.billing.usage_records.v1.common_types_pb2.Currency.ValueType
    """Currency code (e.g., "RUB", "USD") for all monetary values in the response.
    Determined by the billing account's settings.
    """
    @property
    def cost(self) -> yandex.cloud.billing.usage_records.v1.common_types_pb2.StringDecimal:
        """Total usage cost for the selected time period.
        This represents the raw cost before any credits or discounts are applied.
        Calculated based on the resource consumption and the corresponding price rates.
        """

    @property
    def credit_details(self) -> yandex.cloud.billing.usage_records.v1.credit_pb2.CreditDetails:
        """Total credits (monetary grants, volume incentives, committed use discounts, and free credits) applied in the selected period.
        Contains a detailed breakdown of all credit types that reduced the final billable amount.
        """

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

    @property
    def entities_data(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[yandex.cloud.billing.usage_records.v1.consumption_core_pb2.ServiceUsageReportEntityData]:
        """Detailed usage and billing data for each service entity.
        This field contains a structured breakdown of costs, credits, and expenses
        for each individual service, including:
        1. Entity-level totals for the entire period (cost, credits, expense)
        2. Time series data broken down by the specified aggregation period (day/week/month/quarter/year)
        This represents the second and third levels in the overall three-level response structure.
        """

    def __init__(
        self,
        *,
        currency: yandex.cloud.billing.usage_records.v1.common_types_pb2.Currency.ValueType = ...,
        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 = ...,
        entities_data: collections.abc.Iterable[yandex.cloud.billing.usage_records.v1.consumption_core_pb2.ServiceUsageReportEntityData] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["cost", b"cost", "credit_details", b"credit_details", "expense", b"expense"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["cost", b"cost", "credit_details", b"credit_details", "currency", b"currency", "entities_data", b"entities_data", "expense", b"expense"]) -> None: ...

global___ServiceUsageReportResponse = ServiceUsageReportResponse

@typing.final
class SKUUsageReportResponse(google.protobuf.message.Message):
    """Response for usage report requests by SKU.

    Contains aggregated usage, cost, and credit information organized by SKU (Stock Keeping Unit) entities,
    with both summary totals and detailed breakdowns for each SKU. SKUs are specific billable offerings
    (like particular VM types or disk types) that belong to a parent service.
    The response includes:
    1. Overall totals for the entire period (cost, credits, expense)
    2. Entity-level totals for each SKU
    3. Time series breakdown for each SKU according to the requested aggregation period
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    CURRENCY_FIELD_NUMBER: builtins.int
    COST_FIELD_NUMBER: builtins.int
    CREDIT_DETAILS_FIELD_NUMBER: builtins.int
    EXPENSE_FIELD_NUMBER: builtins.int
    ENTITIES_DATA_FIELD_NUMBER: builtins.int
    currency: yandex.cloud.billing.usage_records.v1.common_types_pb2.Currency.ValueType
    """Currency code (e.g., "RUB", "USD") for all monetary values in the response.
    Determined by the billing account's settings.
    """
    @property
    def cost(self) -> yandex.cloud.billing.usage_records.v1.common_types_pb2.StringDecimal:
        """Total usage cost for the selected time period.
        This represents the raw cost before any credits or discounts are applied.
        Calculated based on the resource consumption and the corresponding price rates.
        """

    @property
    def credit_details(self) -> yandex.cloud.billing.usage_records.v1.credit_pb2.CreditDetails:
        """Total credits (monetary grants, volume incentives, committed use discounts, and free credits) applied in the selected period.
        Contains a detailed breakdown of all credit types that reduced the final billable amount.
        """

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

    @property
    def entities_data(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[yandex.cloud.billing.usage_records.v1.consumption_core_pb2.SKUUsageReportEntityData]:
        """Detailed usage and billing data for each SKU entity.
        This field contains a structured breakdown of costs, credits, and expenses
        for each individual SKU, including:
        1. Entity-level totals for the entire period (cost, credits, expense, pricing_quantity)
        2. Time series data broken down by the specified aggregation period (day/week/month/quarter/year)
        This represents the second and third levels in the overall three-level response structure.
        """

    def __init__(
        self,
        *,
        currency: yandex.cloud.billing.usage_records.v1.common_types_pb2.Currency.ValueType = ...,
        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 = ...,
        entities_data: collections.abc.Iterable[yandex.cloud.billing.usage_records.v1.consumption_core_pb2.SKUUsageReportEntityData] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["cost", b"cost", "credit_details", b"credit_details", "expense", b"expense"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["cost", b"cost", "credit_details", b"credit_details", "currency", b"currency", "entities_data", b"entities_data", "expense", b"expense"]) -> None: ...

global___SKUUsageReportResponse = SKUUsageReportResponse

@typing.final
class ResourceUsageReportResponse(google.protobuf.message.Message):
    """Response for usage report requests by resource.

    Contains aggregated usage, cost, and credit information organized by resource entities,
    with both summary totals and detailed breakdowns for each individual resource.
    The response includes:
    1. Overall totals for the entire period (cost, credits, expense)
    2. Entity-level totals for each resource
    3. Time series breakdown for each resource according to the requested aggregation period
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    CURRENCY_FIELD_NUMBER: builtins.int
    COST_FIELD_NUMBER: builtins.int
    CREDIT_DETAILS_FIELD_NUMBER: builtins.int
    EXPENSE_FIELD_NUMBER: builtins.int
    ENTITIES_DATA_FIELD_NUMBER: builtins.int
    currency: yandex.cloud.billing.usage_records.v1.common_types_pb2.Currency.ValueType
    """Currency code (e.g., "RUB", "USD") for all monetary values in the response.
    Determined by the billing account's settings.
    """
    @property
    def cost(self) -> yandex.cloud.billing.usage_records.v1.common_types_pb2.StringDecimal:
        """Total usage cost for the selected time period.
        This represents the raw cost before any credits or discounts are applied.
        Calculated based on the resource consumption and the corresponding price rates.
        """

    @property
    def credit_details(self) -> yandex.cloud.billing.usage_records.v1.credit_pb2.CreditDetails:
        """Total credits (monetary grants, volume incentives, committed use discounts, and free credits) applied in the selected period.
        Contains a detailed breakdown of all credit types that reduced the final billable amount.
        """

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

    @property
    def entities_data(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[yandex.cloud.billing.usage_records.v1.consumption_core_pb2.ResourceUsageReportEntityData]:
        """Detailed usage and billing data for each resource entity.
        This field contains a structured breakdown of costs, credits, and expenses
        for each individual resource, including:
        1. Entity-level totals for the entire period (cost, credits, expense)
        2. Time series data broken down by the specified aggregation period (day/week/month/quarter/year)
        This represents the second and third levels in the overall three-level response structure.
        """

    def __init__(
        self,
        *,
        currency: yandex.cloud.billing.usage_records.v1.common_types_pb2.Currency.ValueType = ...,
        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 = ...,
        entities_data: collections.abc.Iterable[yandex.cloud.billing.usage_records.v1.consumption_core_pb2.ResourceUsageReportEntityData] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["cost", b"cost", "credit_details", b"credit_details", "expense", b"expense"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["cost", b"cost", "credit_details", b"credit_details", "currency", b"currency", "entities_data", b"entities_data", "expense", b"expense"]) -> None: ...

global___ResourceUsageReportResponse = ResourceUsageReportResponse

@typing.final
class LabelKeyUsageReportResponse(google.protobuf.message.Message):
    """Response for usage report requests by label-based grouping.

    Contains aggregated usage, cost, and credit information organized by label key-value pairs
    (e.g., "env:prod", "team:finance"), with both summary totals and detailed breakdowns for each label group.
    This allows analyzing costs across custom business dimensions defined by user-attached labels.
    The response includes:
    1. Overall totals for the entire period (cost, credits, expense)
    2. Entity-level totals for each label key-value pair
    3. Time series breakdown for each label key-value pair according to the requested aggregation period
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    CURRENCY_FIELD_NUMBER: builtins.int
    COST_FIELD_NUMBER: builtins.int
    CREDIT_DETAILS_FIELD_NUMBER: builtins.int
    EXPENSE_FIELD_NUMBER: builtins.int
    ENTITIES_DATA_FIELD_NUMBER: builtins.int
    currency: yandex.cloud.billing.usage_records.v1.common_types_pb2.Currency.ValueType
    """Currency code (e.g., "RUB", "USD") for all monetary values in the response.
    Determined by the billing account's settings.
    """
    @property
    def cost(self) -> yandex.cloud.billing.usage_records.v1.common_types_pb2.StringDecimal:
        """Total usage cost for the selected time period.
        This represents the raw cost before any credits or discounts are applied.
        Calculated based on the resource consumption and the corresponding price rates.
        """

    @property
    def credit_details(self) -> yandex.cloud.billing.usage_records.v1.credit_pb2.CreditDetails:
        """Total credits (monetary grants, volume incentives, committed use discounts, and free credits) applied in the selected period.
        Contains a detailed breakdown of all credit types that reduced the final billable amount.
        """

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

    @property
    def entities_data(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[yandex.cloud.billing.usage_records.v1.consumption_core_pb2.LabelUsageReportEntityData]:
        """Detailed usage and billing data for each label entity.
        This field contains a structured breakdown of costs, credits, and expenses
        for each individual label, including:
        1. Entity-level totals for the entire period (cost, credits, expense)
        2. Time series data broken down by the specified aggregation period (day/week/month/quarter/year)
        This represents the second and third levels in the overall three-level response structure.
        """

    def __init__(
        self,
        *,
        currency: yandex.cloud.billing.usage_records.v1.common_types_pb2.Currency.ValueType = ...,
        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 = ...,
        entities_data: collections.abc.Iterable[yandex.cloud.billing.usage_records.v1.consumption_core_pb2.LabelUsageReportEntityData] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["cost", b"cost", "credit_details", b"credit_details", "expense", b"expense"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["cost", b"cost", "credit_details", b"credit_details", "currency", b"currency", "entities_data", b"entities_data", "expense", b"expense"]) -> None: ...

global___LabelKeyUsageReportResponse = LabelKeyUsageReportResponse
