"""
@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

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

@typing.final
class GetUsageRequest(google.protobuf.message.Message):
    """GetUsageRequest request for retrieving usage metadata"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    BILLING_ACCOUNT_ID_FIELD_NUMBER: builtins.int
    START_DATE_FIELD_NUMBER: builtins.int
    END_DATE_FIELD_NUMBER: builtins.int
    billing_account_id: builtins.str
    """Required. Billing account identifier.
    The ID of the billing account to retrieve usage metadata for.
    Must be a valid and accessible billing account ID.
    """
    @property
    def start_date(self) -> google.protobuf.timestamp_pb2.Timestamp:
        """Start date for data retrieval.
        The inclusive start of the date range for which to retrieve usage metadata.
        Must be specified and cannot be empty.
        The time portion is ignored; the date is considered to start at 00:00:00.
        """

    @property
    def end_date(self) -> google.protobuf.timestamp_pb2.Timestamp:
        """End date for data retrieval.
        The inclusive end of the date range for which to retrieve usage metadata.
        Must be specified, cannot be empty, and must be greater than or equal to start_date.
        The time portion is ignored; the date is considered to end at 23:59:59.
        """

    def __init__(
        self,
        *,
        billing_account_id: builtins.str = ...,
        start_date: google.protobuf.timestamp_pb2.Timestamp | None = ...,
        end_date: google.protobuf.timestamp_pb2.Timestamp | None = ...,
    ) -> 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["billing_account_id", b"billing_account_id", "end_date", b"end_date", "start_date", b"start_date"]) -> None: ...

global___GetUsageRequest = GetUsageRequest

@typing.final
class GetUsageResponse(google.protobuf.message.Message):
    """Response for usage metadata request"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    CLOUDS_FIELD_NUMBER: builtins.int
    LABEL_KEYS_FIELD_NUMBER: builtins.int
    SERVICES_FIELD_NUMBER: builtins.int
    SKUS_FIELD_NUMBER: builtins.int
    BILLING_ACCOUNTS_FIELD_NUMBER: builtins.int
    @property
    def clouds(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[yandex.cloud.billing.usage_records.v1.billing_types_pb2.Cloud]:
        """List of available clouds for the current user/context (billing_account_id with sub-accounts)
        Contains cloud entities that the user has access to within the specified date range.

        Note: Empty cloud_id values are considered as "consumption outside the cloud"
        and represented with an empty string id and name "Usage is out of scope of the Cloud"
        """

    @property
    def label_keys(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """List of available label keys for the current user/context (billing_account_id with sub-accounts)
        Contains all label keys that exist in usage records
        within the specified date range.
        These keys can be used for filtering and grouping in reports or
        passed to the GetLabel method to retrieve possible values.
        """

    @property
    def services(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[yandex.cloud.billing.usage_records.v1.billing_types_pb2.Service]:
        """List of available services for the current user/context (billing_account_id with sub-accounts)
        Contains service entities with their IDs, names and descriptions that
        have usage records within the specified billing account and date range.
        Services represent the top-level grouping of cloud offerings.
        """

    @property
    def skus(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[yandex.cloud.billing.usage_records.v1.billing_types_pb2.SKU]:
        """List of available SKUs for the current user/context (billing_account_id with sub-accounts)
        Contains SKU entities with their IDs, names, translations and pricing units
        that have usage records within the specified billing account and date range.
        SKUs represent specific service offerings
        """

    @property
    def billing_accounts(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[yandex.cloud.billing.usage_records.v1.billing_types_pb2.BillingAccount]:
        """List of available BillingAccounts for the current user/context (billing_account_id with sub-accounts)
        Contains billing account entities that the user has access to and
        that have usage records within the specified date range.
        Includes both the main account and any sub-accounts.
        """

    def __init__(
        self,
        *,
        clouds: collections.abc.Iterable[yandex.cloud.billing.usage_records.v1.billing_types_pb2.Cloud] | None = ...,
        label_keys: collections.abc.Iterable[builtins.str] | None = ...,
        services: collections.abc.Iterable[yandex.cloud.billing.usage_records.v1.billing_types_pb2.Service] | None = ...,
        skus: collections.abc.Iterable[yandex.cloud.billing.usage_records.v1.billing_types_pb2.SKU] | None = ...,
        billing_accounts: collections.abc.Iterable[yandex.cloud.billing.usage_records.v1.billing_types_pb2.BillingAccount] | None = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["billing_accounts", b"billing_accounts", "clouds", b"clouds", "label_keys", b"label_keys", "services", b"services", "skus", b"skus"]) -> None: ...

global___GetUsageResponse = GetUsageResponse

@typing.final
class GetLabelRequest(google.protobuf.message.Message):
    """Request for retrieving label metadata"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    BILLING_ACCOUNT_ID_FIELD_NUMBER: builtins.int
    START_DATE_FIELD_NUMBER: builtins.int
    END_DATE_FIELD_NUMBER: builtins.int
    LABEL_KEY_FIELD_NUMBER: builtins.int
    LABEL_VALUE_FIELD_NUMBER: builtins.int
    LABEL_VALUE_FILTER_FIELD_NUMBER: builtins.int
    PAGE_SIZE_FIELD_NUMBER: builtins.int
    PAGE_TOKEN_FIELD_NUMBER: builtins.int
    billing_account_id: builtins.str
    """Required. Billing account identifier.
    The ID of the billing account to retrieve label metadata for.
    Must be a valid and accessible billing account ID.
    """
    label_key: builtins.str
    """Label key to filter values for. If specified, response will contain values
    for this specific key.
    Must be a non-empty string representing a valid label key.
    """
    label_value: builtins.str
    """Optional. If provided along with label_key, the response will return
    an array of matches for this label_value.
    Used for exact matching of label values.
    If specified, label_value_filter is ignored and pagination is not applied.
    """
    page_size: builtins.int
    """Optional. Page size for paginated results.
    Specifies the maximum number of label values to return per page.
    If not specified or set to 0, defaults to 10.
    If greater than 10000, will be coerced down to 10000.
    """
    page_token: builtins.str
    """Optional. Page token for paginated results.
    Token from a previous GetLabelResponse used to retrieve the next page.
    If empty, retrieves the first page.
    """
    @property
    def start_date(self) -> google.protobuf.timestamp_pb2.Timestamp:
        """Start date for data retrieval.
        The inclusive start of the date range for which to retrieve label metadata.
        Must be specified and cannot be empty.
        The time portion is ignored; the date is considered to start at 00:00:00.
        """

    @property
    def end_date(self) -> google.protobuf.timestamp_pb2.Timestamp:
        """End date for data retrieval.
        The inclusive end of the date range for which to retrieve label metadata.
        Must be specified, cannot be empty, and must be greater than or equal to start_date.
        The time portion is ignored; the date is considered to end at 23:59:59.
        """

    @property
    def label_value_filter(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """Optional array of label values to filter results:
        Returns in response as is if label_value is not provided, otherwise returns empty label_value_filter
        """

    def __init__(
        self,
        *,
        billing_account_id: builtins.str = ...,
        start_date: google.protobuf.timestamp_pb2.Timestamp | None = ...,
        end_date: google.protobuf.timestamp_pb2.Timestamp | None = ...,
        label_key: builtins.str = ...,
        label_value: builtins.str = ...,
        label_value_filter: collections.abc.Iterable[builtins.str] | None = ...,
        page_size: builtins.int = ...,
        page_token: builtins.str = ...,
    ) -> 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["billing_account_id", b"billing_account_id", "end_date", b"end_date", "label_key", b"label_key", "label_value", b"label_value", "label_value_filter", b"label_value_filter", "page_size", b"page_size", "page_token", b"page_token", "start_date", b"start_date"]) -> None: ...

global___GetLabelRequest = GetLabelRequest

@typing.final
class GetLabelResponse(google.protobuf.message.Message):
    """Response for label metadata request"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    LABEL_VALUES_FIELD_NUMBER: builtins.int
    LABEL_VALUE_FILTER_FIELD_NUMBER: builtins.int
    NEXT_PAGE_TOKEN_FIELD_NUMBER: builtins.int
    next_page_token: builtins.str
    """Token for getting the next page of results.
    If empty, there are no more results.
    Use this token in a subsequent request's page_token field to retrieve
    the next page of results.
    The token encodes the pagination state.

    It should be passed verbatim in subsequent requests.
    """
    @property
    def label_values(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """List of label values matching the request criteria
        Contains label values that match the specified label key pattern.
        Values are sorted alphabetically.
        """

    @property
    def label_value_filter(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """List of label values from the label_value_filter in the request
        Contains the same values as provided in the request's label_value_filter.
        Included for convenience in the response.
        This field is only populated when label_value_filter was specified in the request
        and label_value was not specified.
        """

    def __init__(
        self,
        *,
        label_values: collections.abc.Iterable[builtins.str] | None = ...,
        label_value_filter: collections.abc.Iterable[builtins.str] | None = ...,
        next_page_token: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["label_value_filter", b"label_value_filter", "label_values", b"label_values", "next_page_token", b"next_page_token"]) -> None: ...

global___GetLabelResponse = GetLabelResponse

@typing.final
class GetCloudRequest(google.protobuf.message.Message):
    """Request for retrieving folder metadata"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    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
    PAGE_SIZE_FIELD_NUMBER: builtins.int
    PAGE_TOKEN_FIELD_NUMBER: builtins.int
    billing_account_id: builtins.str
    """Required. Billing account identifier.
    The ID of the billing account to retrieve cloud and folder metadata for.
    Must be a valid and accessible billing account ID.
    """
    page_size: builtins.int
    """Optional. Page size for paginated results.
    Specifies the maximum number of Folder objects to return per page.
    If not specified or set to 0, defaults to 10.
    If greater than 10000, will be coerced down to 10000.
    """
    page_token: builtins.str
    """Optional. Page token for paginated results.
    Token from a previous GetCloudResponse used to retrieve the next page.
    If empty, retrieves the first page.
    The token encodes the pagination state.
    """
    @property
    def start_date(self) -> google.protobuf.timestamp_pb2.Timestamp:
        """Start date for data retrieval.
        The inclusive start of the date range for which to retrieve cloud and folder metadata.
        Must be specified and cannot be empty.
        The time portion is ignored; the date is considered to start at 00:00:00.
        """

    @property
    def end_date(self) -> google.protobuf.timestamp_pb2.Timestamp:
        """End date for data retrieval.
        The inclusive end of the date range for which to retrieve cloud and folder metadata.
        Must be specified, cannot be empty, and must be greater than or equal to start_date.
        The time portion is ignored; the date is considered to end at 23:59:59.
        """

    @property
    def cloud_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """Optional. List of cloud IDs to filter clouds by.
        Note: cloud_id filtering supports case-insensitive substring matching.
        No wildcards or regex patterns are supported - just simple substring matching.
        The filter works with partial cloud IDs, and will match any cloud where
        the provided substring appears anywhere in the cloud_id.
        For example, filter "abc" will match cloud_ids like "abc123", "123abc", or "1abc2".
        If empty, no filtering by cloud ID is applied.
        """

    @property
    def folder_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """Optional. List of folder IDs to filter folders by.
        Note: folder_id filtering supports case-insensitive substring matching.
        No wildcards or regex patterns are supported - just simple substring matching.
        The filter works with partial folder IDs, and will match any folder where
        the provided substring appears anywhere in the folder_id.
        For example, filter "abc" will match folder_ids like "abc123", "123abc", or "1abc2".
        If empty, no filtering by folder ID is applied.
        """

    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 = ...,
        page_size: builtins.int = ...,
        page_token: builtins.str = ...,
    ) -> 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["billing_account_id", b"billing_account_id", "cloud_ids", b"cloud_ids", "end_date", b"end_date", "folder_ids", b"folder_ids", "page_size", b"page_size", "page_token", b"page_token", "start_date", b"start_date"]) -> None: ...

global___GetCloudRequest = GetCloudRequest

@typing.final
class GetCloudResponse(google.protobuf.message.Message):
    """Response for cloud metadata request"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    @typing.final
    class CloudInfo(google.protobuf.message.Message):
        """Information about a cloud and its folders"""

        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        CLOUD_FIELD_NUMBER: builtins.int
        FOLDERS_FIELD_NUMBER: builtins.int
        @property
        def cloud(self) -> yandex.cloud.billing.usage_records.v1.billing_types_pb2.Cloud:
            """Cloud information"""

        @property
        def folders(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[yandex.cloud.billing.usage_records.v1.billing_types_pb2.Folder]:
            """List of folders belonging to this cloud
            Contains folder entities that belong to this cloud
            and match any folder ID filtering criteria from the request.
            The list is sorted by folder ID in ascending order.

            Only folders that had usage during the specified date range are included.
            """

        def __init__(
            self,
            *,
            cloud: yandex.cloud.billing.usage_records.v1.billing_types_pb2.Cloud | None = ...,
            folders: collections.abc.Iterable[yandex.cloud.billing.usage_records.v1.billing_types_pb2.Folder] | None = ...,
        ) -> None: ...
        def HasField(self, field_name: typing.Literal["cloud", b"cloud"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing.Literal["cloud", b"cloud", "folders", b"folders"]) -> None: ...

    ITEMS_FIELD_NUMBER: builtins.int
    NEXT_PAGE_TOKEN_FIELD_NUMBER: builtins.int
    next_page_token: builtins.str
    """Token for getting the next page of results.
    If empty, there are no more results.
    Use this token in a subsequent request's page_token field to retrieve
    the next page of results.
    The token encodes the pagination state.

    It should be passed verbatim in subsequent requests.
    """
    @property
    def items(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___GetCloudResponse.CloudInfo]:
        """List of clouds matching the request criteria
        Contains CloudInfo objects for each cloud that matches the specified
        filtering criteria

        Note: only clouds with at least one folder are included in the response.
        """

    def __init__(
        self,
        *,
        items: collections.abc.Iterable[global___GetCloudResponse.CloudInfo] | None = ...,
        next_page_token: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["items", b"items", "next_page_token", b"next_page_token"]) -> None: ...

global___GetCloudResponse = GetCloudResponse

@typing.final
class GetResourceIDsRequest(google.protobuf.message.Message):
    """GetResourceIDsRequest request for retrieving resource IDs.
    This message defines the parameters needed to fetch and filter resource IDs
    associated with a billing account within a date range.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    BILLING_ACCOUNT_ID_FIELD_NUMBER: builtins.int
    START_DATE_FIELD_NUMBER: builtins.int
    END_DATE_FIELD_NUMBER: builtins.int
    RESOURCE_ID_FIELD_NUMBER: builtins.int
    PAGE_SIZE_FIELD_NUMBER: builtins.int
    PAGE_TOKEN_FIELD_NUMBER: builtins.int
    billing_account_id: builtins.str
    """Required. Billing account identifier.
    The ID of the billing account to retrieve resource IDs for.
    Must be a valid and accessible billing account ID.
    """
    resource_id: builtins.str
    """Optional. Resource ID pattern for search filtering.
    When provided, the response will include only resource IDs
    that contain this string (case-insensitive substring match).
    No wildcards or regex patterns are supported - just simple substring matching.
    """
    page_size: builtins.int
    """Optional. Page size for paginated results.
    Specifies the maximum number of resource IDs to return per page.
    If not specified or set to 0, defaults to 10.
    If greater than 10000, will be coerced down to 10000.
    """
    page_token: builtins.str
    """Optional. Page token for paginated results.
    Token from a previous GetResourceIDsResponse used to retrieve the next page.
    If empty, retrieves the first page.
    The token encodes the pagination state.
    """
    @property
    def start_date(self) -> google.protobuf.timestamp_pb2.Timestamp:
        """Start date for data retrieval.
        The inclusive start of the date range for which to retrieve resource IDs.
        Must be specified and cannot be empty.
        The time portion is ignored; the date is considered to start at 00:00:00.
        """

    @property
    def end_date(self) -> google.protobuf.timestamp_pb2.Timestamp:
        """End date for data retrieval.
        The inclusive end of the date range for which to retrieve resource IDs.
        Must be specified, cannot be empty, and must be greater than or equal to start_date.
        The time portion is ignored; the date is considered to end at 23:59:59.
        """

    def __init__(
        self,
        *,
        billing_account_id: builtins.str = ...,
        start_date: google.protobuf.timestamp_pb2.Timestamp | None = ...,
        end_date: google.protobuf.timestamp_pb2.Timestamp | None = ...,
        resource_id: builtins.str = ...,
        page_size: builtins.int = ...,
        page_token: builtins.str = ...,
    ) -> 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["billing_account_id", b"billing_account_id", "end_date", b"end_date", "page_size", b"page_size", "page_token", b"page_token", "resource_id", b"resource_id", "start_date", b"start_date"]) -> None: ...

global___GetResourceIDsRequest = GetResourceIDsRequest

@typing.final
class GetResourceIDsResponse(google.protobuf.message.Message):
    """Response for resource IDs request.
    This message contains a list of resource IDs that match the search criteria
    specified in the request, along with pagination information.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    RESOURCE_IDS_FIELD_NUMBER: builtins.int
    NEXT_PAGE_TOKEN_FIELD_NUMBER: builtins.int
    next_page_token: builtins.str
    """Token for getting the next page of results.
    This token should be passed in the page_token field of subsequent requests.
    If empty, there are no more results available.
    The token encodes the pagination state.

    It should be passed verbatim in subsequent requests.
    """
    @property
    def resource_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """List of resource IDs matching the request criteria.
        These represent unique identifiers for resources within the billing account
        that had usage during the specified date range.
        If a resource_id filter was provided in the request, only IDs
        containing that substring (case-insensitive) will be included.
        Resource IDs are sorted alphabetically in ascending order.
        """

    def __init__(
        self,
        *,
        resource_ids: collections.abc.Iterable[builtins.str] | None = ...,
        next_page_token: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["next_page_token", b"next_page_token", "resource_ids", b"resource_ids"]) -> None: ...

global___GetResourceIDsResponse = GetResourceIDsResponse
