# 
# Generated by the nebius.base.protos.compiler.  DO NOT EDIT!
# 

"""Auto-generated Nebius SDK package for ``nebius.quotas.v1``"""

import builtins as builtins
import collections.abc as abc
import google.protobuf.descriptor as descriptor_1
import google.protobuf.message as message_1
import nebius.aio.client as client
import nebius.aio.request as request
import nebius.aio.request_kwargs as request_kwargs
import nebius.api.nebius.common.v1 as v1_1
import nebius.api.nebius.common.v1.metadata_pb2 as metadata_pb2
import nebius.api.nebius.quotas.v1.quota_allowance_pb2 as quota_allowance_pb2
import nebius.api.nebius.quotas.v1.quota_allowance_service_pb2 as quota_allowance_service_pb2
import nebius.base.protos.descriptor as descriptor
import nebius.base.protos.pb_classes as pb_classes
import nebius.base.protos.pb_enum as pb_enum
import nebius.base.protos.unset as unset
import typing as typing
import typing_extensions as typing_extensions
#@ local imports here @#

# file: nebius/quotas/v1/quota_allowance.proto
class QuotaAllowanceSpec(pb_classes.Message):
    __PB2_CLASS__ = quota_allowance_pb2.QuotaAllowanceSpec
    __PB2_DESCRIPTOR__ = descriptor.DescriptorWrap[descriptor_1.Descriptor](".nebius.quotas.v1.QuotaAllowanceSpec",quota_allowance_pb2.DESCRIPTOR,descriptor_1.Descriptor)
    __mask_functions__ = {
    }
    
    class __OneOfClass__limit__(pb_classes.OneOf):
        name: builtins.str= "_limit"
        
        def __init__(self, msg: "QuotaAllowanceSpec") -> None:
            super().__init__()
            self._message: "QuotaAllowanceSpec" = msg
    
    class __OneOfClass__limit_limit__(__OneOfClass__limit__):
        field: typing.Literal["limit"] = "limit"
        
        def __init__(self, msg: "QuotaAllowanceSpec") -> None:
            super().__init__(msg)
        @builtins.property
        def value(self) -> "builtins.int":
            return self._message.limit
    
    @builtins.property
    def _limit(self) -> __OneOfClass__limit_limit__|None:
        field_name_1: str|None = super().which_field_in_oneof("_limit")
        match field_name_1:
            case "limit":
                return self.__OneOfClass__limit_limit__(self)
            case None:
                return None
            case _:
                raise pb_classes.OneOfMatchError(field_name_1)
    
    def __init__(
        self,
        initial_message: message_1.Message|None = None,
        *,
        limit: "builtins.int|None|unset.UnsetType" = unset.Unset,
        region: "builtins.str|None|unset.UnsetType" = unset.Unset,
    ) -> None:
        super().__init__(initial_message)
        if not isinstance(limit, unset.UnsetType):
            self.limit = limit
        if not isinstance(region, unset.UnsetType):
            self.region = region
    
    def __dir__(self) ->abc.Iterable[builtins.str]:
        return [
            "limit",
            "region",
            "_limit",
        ]
    
    @builtins.property
    def limit(self) -> "builtins.int|None":
        """
        Total amount of resources allocated.
        """
        
        return super()._get_field("limit", explicit_presence=True,
        )
    @limit.setter
    def limit(self, value: "builtins.int|None") -> None:
        return super()._set_field("limit",value,explicit_presence=True,
        )
    
    @builtins.property
    def region(self) -> "builtins.str":
        """
        Name of the region where the quota is allocated.
        Example: "eu-north1".
        """
        
        return super()._get_field("region", explicit_presence=False,
        )
    @region.setter
    def region(self, value: "builtins.str|None") -> None:
        return super()._set_field("region",value,explicit_presence=False,
        )
    
    __PY_TO_PB2__: builtins.dict[builtins.str,builtins.str] = {
        "limit":"limit",
        "region":"region",
        "_limit":"_limit",
    }
    
class QuotaAllowanceStatus(pb_classes.Message):
    __PB2_CLASS__ = quota_allowance_pb2.QuotaAllowanceStatus
    __PB2_DESCRIPTOR__ = descriptor.DescriptorWrap[descriptor_1.Descriptor](".nebius.quotas.v1.QuotaAllowanceStatus",quota_allowance_pb2.DESCRIPTOR,descriptor_1.Descriptor)
    __mask_functions__ = {
    }
    
    class State(pb_enum.Enum):
        __PB2_DESCRIPTOR__ = descriptor.DescriptorWrap[descriptor_1.EnumDescriptor](".nebius.quotas.v1.QuotaAllowanceStatus.State",quota_allowance_pb2.DESCRIPTOR,descriptor_1.EnumDescriptor)
        STATE_UNSPECIFIED = 0
        STATE_PROVISIONING = 1
        """
        Quota is being allocated; the process can take up to several minutes.
        """
        
        STATE_ACTIVE = 2
        """
        Quota is allocated and can be used.
        """
        
        STATE_FROZEN = 3
        """
        Quota is allocated but cannot be used any longer
        """
        
        STATE_DELETED = 10
        """
        Quota has been removed and is no longer allocated.
        """
        
    
    class UsageState(pb_enum.Enum):
        __PB2_DESCRIPTOR__ = descriptor.DescriptorWrap[descriptor_1.EnumDescriptor](".nebius.quotas.v1.QuotaAllowanceStatus.UsageState",quota_allowance_pb2.DESCRIPTOR,descriptor_1.EnumDescriptor)
        USAGE_STATE_UNSPECIFIED = 0
        USAGE_STATE_USED = 1
        """
        Quota is actively in use.
        """
        
        USAGE_STATE_NOT_USED = 2
        """
        Quota is not currently in use.
        """
        
        USAGE_STATE_UNKNOWN = 3
        """
        Quota region is unreachable, the current usage is therefore unknown.
        Please, retry the request later.
        """
        
        USAGE_STATE_NOT_APPLICABLE = 4
        """
        Quota usage is not applicable
        """
        
    
    def __init__(
        self,
        initial_message: message_1.Message|None = None,
        *,
        state: "QuotaAllowanceStatus.State|quota_allowance_pb2.QuotaAllowanceStatus.State|None|unset.UnsetType" = unset.Unset,
        usage: "builtins.int|None|unset.UnsetType" = unset.Unset,
        service: "builtins.str|None|unset.UnsetType" = unset.Unset,
        description: "builtins.str|None|unset.UnsetType" = unset.Unset,
        service_description: "builtins.str|None|unset.UnsetType" = unset.Unset,
        unit: "builtins.str|None|unset.UnsetType" = unset.Unset,
        usage_percentage: "builtins.str|None|unset.UnsetType" = unset.Unset,
        usage_state: "QuotaAllowanceStatus.UsageState|quota_allowance_pb2.QuotaAllowanceStatus.UsageState|None|unset.UnsetType" = unset.Unset,
    ) -> None:
        super().__init__(initial_message)
        if not isinstance(state, unset.UnsetType):
            self.state = state
        if not isinstance(usage, unset.UnsetType):
            self.usage = usage
        if not isinstance(service, unset.UnsetType):
            self.service = service
        if not isinstance(description, unset.UnsetType):
            self.description = description
        if not isinstance(service_description, unset.UnsetType):
            self.service_description = service_description
        if not isinstance(unit, unset.UnsetType):
            self.unit = unit
        if not isinstance(usage_percentage, unset.UnsetType):
            self.usage_percentage = usage_percentage
        if not isinstance(usage_state, unset.UnsetType):
            self.usage_state = usage_state
    
    def __dir__(self) ->abc.Iterable[builtins.str]:
        return [
            "state",
            "usage",
            "service",
            "description",
            "service_description",
            "unit",
            "usage_percentage",
            "usage_state",
            "State",
            "UsageState",
        ]
    
    @builtins.property
    def state(self) -> "QuotaAllowanceStatus.State":
        """
        Current state of the quota.
        """
        
        return super()._get_field("state", explicit_presence=False,
        wrap=QuotaAllowanceStatus.State,
        )
    @state.setter
    def state(self, value: "QuotaAllowanceStatus.State|quota_allowance_pb2.QuotaAllowanceStatus.State|None") -> None:
        return super()._set_field("state",value,explicit_presence=False,
        )
    
    @builtins.property
    def usage(self) -> "builtins.int":
        """
        Current quota usage.
        """
        
        return super()._get_field("usage", explicit_presence=False,
        )
    @usage.setter
    def usage(self, value: "builtins.int|None") -> None:
        return super()._set_field("usage",value,explicit_presence=False,
        )
    
    @builtins.property
    def service(self) -> "builtins.str":
        """
        Service in which the quota is allocated.
        Example: "mk8s".
        """
        
        return super()._get_field("service", explicit_presence=False,
        )
    @service.setter
    def service(self, value: "builtins.str|None") -> None:
        return super()._set_field("service",value,explicit_presence=False,
        )
    
    @builtins.property
    def description(self) -> "builtins.str":
        """
        Human-readable description of the quota.
        Example: "Total RAM across VMs".
        """
        
        return super()._get_field("description", explicit_presence=False,
        )
    @description.setter
    def description(self, value: "builtins.str|None") -> None:
        return super()._set_field("description",value,explicit_presence=False,
        )
    
    @builtins.property
    def service_description(self) -> "builtins.str":
        """
        Human-readable name of the service managing the quota.
        Example: "Managed Kubernetes®".
        """
        
        return super()._get_field("service_description", explicit_presence=False,
        )
    @service_description.setter
    def service_description(self, value: "builtins.str|None") -> None:
        return super()._set_field("service_description",value,explicit_presence=False,
        )
    
    @builtins.property
    def unit(self) -> "builtins.str":
        """
        Quota unit.
        Example: "byte".
        """
        
        return super()._get_field("unit", explicit_presence=False,
        )
    @unit.setter
    def unit(self, value: "builtins.str|None") -> None:
        return super()._set_field("unit",value,explicit_presence=False,
        )
    
    @builtins.property
    def usage_percentage(self) -> "builtins.str":
        """
        Current quota usage as a percentage.
        Values range from 0.0 to 1.0, representing 0% to 100%.
        Values can exceed 1.0 if usage exceeds the limit.
        Example: "0.12".
        """
        
        return super()._get_field("usage_percentage", explicit_presence=False,
        )
    @usage_percentage.setter
    def usage_percentage(self, value: "builtins.str|None") -> None:
        return super()._set_field("usage_percentage",value,explicit_presence=False,
        )
    
    @builtins.property
    def usage_state(self) -> "QuotaAllowanceStatus.UsageState":
        """
        Current state of the quota usage.
        """
        
        return super()._get_field("usage_state", explicit_presence=False,
        wrap=QuotaAllowanceStatus.UsageState,
        )
    @usage_state.setter
    def usage_state(self, value: "QuotaAllowanceStatus.UsageState|quota_allowance_pb2.QuotaAllowanceStatus.UsageState|None") -> None:
        return super()._set_field("usage_state",value,explicit_presence=False,
        )
    
    __PY_TO_PB2__: builtins.dict[builtins.str,builtins.str] = {
        "state":"state",
        "usage":"usage",
        "service":"service",
        "description":"description",
        "service_description":"service_description",
        "unit":"unit",
        "usage_percentage":"usage_percentage",
        "usage_state":"usage_state",
        "State":"State",
        "UsageState":"UsageState",
    }
    
class QuotaAllowance(pb_classes.Message):
    __PB2_CLASS__ = quota_allowance_pb2.QuotaAllowance
    __PB2_DESCRIPTOR__ = descriptor.DescriptorWrap[descriptor_1.Descriptor](".nebius.quotas.v1.QuotaAllowance",quota_allowance_pb2.DESCRIPTOR,descriptor_1.Descriptor)
    __mask_functions__ = {
    }
    
    def __init__(
        self,
        initial_message: message_1.Message|None = None,
        *,
        metadata: "v1_1.ResourceMetadata|metadata_pb2.ResourceMetadata|None|unset.UnsetType" = unset.Unset,
        spec: "QuotaAllowanceSpec|quota_allowance_pb2.QuotaAllowanceSpec|None|unset.UnsetType" = unset.Unset,
        status: "QuotaAllowanceStatus|quota_allowance_pb2.QuotaAllowanceStatus|None|unset.UnsetType" = unset.Unset,
    ) -> None:
        super().__init__(initial_message)
        if not isinstance(metadata, unset.UnsetType):
            self.metadata = metadata
        if not isinstance(spec, unset.UnsetType):
            self.spec = spec
        if not isinstance(status, unset.UnsetType):
            self.status = status
    
    def __dir__(self) ->abc.Iterable[builtins.str]:
        return [
            "metadata",
            "spec",
            "status",
        ]
    
    @builtins.property
    def metadata(self) -> "v1_1.ResourceMetadata":
        return super()._get_field("metadata", explicit_presence=False,
        wrap=v1_1.ResourceMetadata,
        )
    @metadata.setter
    def metadata(self, value: "v1_1.ResourceMetadata|metadata_pb2.ResourceMetadata|None") -> None:
        return super()._set_field("metadata",value,explicit_presence=False,
        )
    
    @builtins.property
    def spec(self) -> "QuotaAllowanceSpec":
        return super()._get_field("spec", explicit_presence=False,
        wrap=QuotaAllowanceSpec,
        )
    @spec.setter
    def spec(self, value: "QuotaAllowanceSpec|quota_allowance_pb2.QuotaAllowanceSpec|None") -> None:
        return super()._set_field("spec",value,explicit_presence=False,
        )
    
    @builtins.property
    def status(self) -> "QuotaAllowanceStatus":
        return super()._get_field("status", explicit_presence=False,
        wrap=QuotaAllowanceStatus,
        )
    @status.setter
    def status(self, value: "QuotaAllowanceStatus|quota_allowance_pb2.QuotaAllowanceStatus|None") -> None:
        return super()._set_field("status",value,explicit_presence=False,
        )
    
    __PY_TO_PB2__: builtins.dict[builtins.str,builtins.str] = {
        "metadata":"metadata",
        "spec":"spec",
        "status":"status",
    }
    
# file: nebius/quotas/v1/quota_allowance_service.proto
class ListQuotaAllowancesRequest(pb_classes.Message):
    __PB2_CLASS__ = quota_allowance_service_pb2.ListQuotaAllowancesRequest
    __PB2_DESCRIPTOR__ = descriptor.DescriptorWrap[descriptor_1.Descriptor](".nebius.quotas.v1.ListQuotaAllowancesRequest",quota_allowance_service_pb2.DESCRIPTOR,descriptor_1.Descriptor)
    __mask_functions__ = {
    }
    
    def __init__(
        self,
        initial_message: message_1.Message|None = None,
        *,
        parent_id: "builtins.str|None|unset.UnsetType" = unset.Unset,
        page_size: "builtins.int|None|unset.UnsetType" = unset.Unset,
        page_token: "builtins.str|None|unset.UnsetType" = unset.Unset,
    ) -> None:
        super().__init__(initial_message)
        if not isinstance(parent_id, unset.UnsetType):
            self.parent_id = parent_id
        if not isinstance(page_size, unset.UnsetType):
            self.page_size = page_size
        if not isinstance(page_token, unset.UnsetType):
            self.page_token = page_token
    
    def __dir__(self) ->abc.Iterable[builtins.str]:
        return [
            "parent_id",
            "page_size",
            "page_token",
        ]
    
    @builtins.property
    def parent_id(self) -> "builtins.str":
        """
        ID of the Container to list quotas for.
        """
        
        return super()._get_field("parent_id", explicit_presence=False,
        )
    @parent_id.setter
    def parent_id(self, value: "builtins.str|None") -> None:
        return super()._set_field("parent_id",value,explicit_presence=False,
        )
    
    @builtins.property
    def page_size(self) -> "builtins.int":
        """
        Page size. Must be between [1...1000].
        Optional; if not specified, a reasonable default will be chosen by the service.
        """
        
        return super()._get_field("page_size", explicit_presence=False,
        )
    @page_size.setter
    def page_size(self, value: "builtins.int|None") -> None:
        return super()._set_field("page_size",value,explicit_presence=False,
        )
    
    @builtins.property
    def page_token(self) -> "builtins.str":
        """
        Listing continuation token. Pass an empty string to start listing from the first page.
        """
        
        return super()._get_field("page_token", explicit_presence=False,
        )
    @page_token.setter
    def page_token(self, value: "builtins.str|None") -> None:
        return super()._set_field("page_token",value,explicit_presence=False,
        )
    
    __PY_TO_PB2__: builtins.dict[builtins.str,builtins.str] = {
        "parent_id":"parent_id",
        "page_size":"page_size",
        "page_token":"page_token",
    }
    
class GetQuotaAllowanceRequest(pb_classes.Message):
    __PB2_CLASS__ = quota_allowance_service_pb2.GetQuotaAllowanceRequest
    __PB2_DESCRIPTOR__ = descriptor.DescriptorWrap[descriptor_1.Descriptor](".nebius.quotas.v1.GetQuotaAllowanceRequest",quota_allowance_service_pb2.DESCRIPTOR,descriptor_1.Descriptor)
    __mask_functions__ = {
    }
    
    def __init__(
        self,
        initial_message: message_1.Message|None = None,
        *,
        id: "builtins.str|None|unset.UnsetType" = unset.Unset,
    ) -> None:
        super().__init__(initial_message)
        if not isinstance(id, unset.UnsetType):
            self.id = id
    
    def __dir__(self) ->abc.Iterable[builtins.str]:
        return [
            "id",
        ]
    
    @builtins.property
    def id(self) -> "builtins.str":
        """
        ID of the quota.
        """
        
        return super()._get_field("id", explicit_presence=False,
        )
    @id.setter
    def id(self, value: "builtins.str|None") -> None:
        return super()._set_field("id",value,explicit_presence=False,
        )
    
    __PY_TO_PB2__: builtins.dict[builtins.str,builtins.str] = {
        "id":"id",
    }
    
class ListQuotaAllowancesResponse(pb_classes.Message):
    __PB2_CLASS__ = quota_allowance_service_pb2.ListQuotaAllowancesResponse
    __PB2_DESCRIPTOR__ = descriptor.DescriptorWrap[descriptor_1.Descriptor](".nebius.quotas.v1.ListQuotaAllowancesResponse",quota_allowance_service_pb2.DESCRIPTOR,descriptor_1.Descriptor)
    __mask_functions__ = {
    }
    
    def __init__(
        self,
        initial_message: message_1.Message|None = None,
        *,
        items: "abc.Iterable[QuotaAllowance]|None|unset.UnsetType" = unset.Unset,
        next_page_token: "builtins.str|None|unset.UnsetType" = unset.Unset,
    ) -> None:
        super().__init__(initial_message)
        if not isinstance(items, unset.UnsetType):
            self.items = items
        if not isinstance(next_page_token, unset.UnsetType):
            self.next_page_token = next_page_token
    
    def __dir__(self) ->abc.Iterable[builtins.str]:
        return [
            "items",
            "next_page_token",
        ]
    
    @builtins.property
    def items(self) -> "abc.MutableSequence[QuotaAllowance]":
        """
        List of quotas on this result page.
        """
        
        return super()._get_field("items", explicit_presence=False,
        wrap=pb_classes.Repeated.with_wrap(QuotaAllowance,None,None),
        )
    @items.setter
    def items(self, value: "abc.Iterable[QuotaAllowance]|None") -> None:
        return super()._set_field("items",value,explicit_presence=False,
        )
    
    @builtins.property
    def next_page_token(self) -> "builtins.str":
        """
        Listing continuation token for the next page of results.
        """
        
        return super()._get_field("next_page_token", explicit_presence=False,
        )
    @next_page_token.setter
    def next_page_token(self, value: "builtins.str|None") -> None:
        return super()._set_field("next_page_token",value,explicit_presence=False,
        )
    
    __PY_TO_PB2__: builtins.dict[builtins.str,builtins.str] = {
        "items":"items",
        "next_page_token":"next_page_token",
    }
    
class GetByNameRequest(pb_classes.Message):
    __PB2_CLASS__ = quota_allowance_service_pb2.GetByNameRequest
    __PB2_DESCRIPTOR__ = descriptor.DescriptorWrap[descriptor_1.Descriptor](".nebius.quotas.v1.GetByNameRequest",quota_allowance_service_pb2.DESCRIPTOR,descriptor_1.Descriptor)
    __mask_functions__ = {
    }
    
    def __init__(
        self,
        initial_message: message_1.Message|None = None,
        *,
        parent_id: "builtins.str|None|unset.UnsetType" = unset.Unset,
        name: "builtins.str|None|unset.UnsetType" = unset.Unset,
        region: "builtins.str|None|unset.UnsetType" = unset.Unset,
    ) -> None:
        super().__init__(initial_message)
        if not isinstance(parent_id, unset.UnsetType):
            self.parent_id = parent_id
        if not isinstance(name, unset.UnsetType):
            self.name = name
        if not isinstance(region, unset.UnsetType):
            self.region = region
    
    def __dir__(self) ->abc.Iterable[builtins.str]:
        return [
            "parent_id",
            "name",
            "region",
        ]
    
    @builtins.property
    def parent_id(self) -> "builtins.str":
        """
        ID of the Container to list quotas for.
        """
        
        return super()._get_field("parent_id", explicit_presence=False,
        )
    @parent_id.setter
    def parent_id(self, value: "builtins.str|None") -> None:
        return super()._set_field("parent_id",value,explicit_presence=False,
        )
    
    @builtins.property
    def name(self) -> "builtins.str":
        """
        Name of the quota.
        Example: "compute.disk.size.network-ssd".
        """
        
        return super()._get_field("name", explicit_presence=False,
        )
    @name.setter
    def name(self, value: "builtins.str|None") -> None:
        return super()._set_field("name",value,explicit_presence=False,
        )
    
    @builtins.property
    def region(self) -> "builtins.str":
        """
        Name of the region where the quota is allocated.
        Example: "eu-north1".
        """
        
        return super()._get_field("region", explicit_presence=False,
        )
    @region.setter
    def region(self, value: "builtins.str|None") -> None:
        return super()._set_field("region",value,explicit_presence=False,
        )
    
    __PY_TO_PB2__: builtins.dict[builtins.str,builtins.str] = {
        "parent_id":"parent_id",
        "name":"name",
        "region":"region",
    }
    

class QuotaAllowanceServiceClient(client.Client):
    """
    This class provides the client methods for the ``.nebius.quotas.v1.QuotaAllowanceService`` service.
    
    Each method constructs a :class:`nebius.aio.request.Request` object
    that represents the in-flight RPC. The request can be awaited (async)
    or waited synchronously using its ``.wait()`` helpers.
    
    The request methods accept various parameters to configure metadata,
    timeouts, authorization, and retries. See individual method docstrings
    for details.
    
    :cvar __service_name__: The full protobuf service name.
    """
    
    __PB2_DESCRIPTOR__ = descriptor.DescriptorWrap[descriptor_1.ServiceDescriptor](".nebius.quotas.v1.QuotaAllowanceService",quota_allowance_service_pb2.DESCRIPTOR,descriptor_1.ServiceDescriptor)
    """The protobuf service descriptor extraction function."""
    __service_name__ = ".nebius.quotas.v1.QuotaAllowanceService"
    
    def list(self,
        request: "ListQuotaAllowancesRequest",
        **kwargs: typing_extensions.Unpack[request_kwargs.RequestKwargs]
    ) -> request.Request["ListQuotaAllowancesRequest","ListQuotaAllowancesResponse"]:
        """
        Lists quotas by an ID of a Tenant or a Project.
        
        :param request: The request object to send.
        :type request: :class:`nebius.api.nebius.quotas.v1.ListQuotaAllowancesRequest`
        
        Other parameters can be provided as keyword arguments in the
        ``**kwargs`` dictionary, including metadata, timeouts, and retries.
        See :class:`nebius.aio.request_kwargs.RequestKwargs` for details.
        
        :return: A :class:`nebius.aio.request.Request` object representing the
            in-flight RPC. It can be awaited (async) or waited
            synchronously using its ``.wait()`` helpers.
        :rtype: :class:`nebius.aio.request.Request` of
            :class:`nebius.api.nebius.quotas.v1.ListQuotaAllowancesResponse`.
        """
        
        return super().request(
            method="List",
            request=request,
            result_pb2_class=quota_allowance_service_pb2.ListQuotaAllowancesResponse,
            result_wrapper=pb_classes.simple_wrapper(ListQuotaAllowancesResponse),
            **kwargs,
        )
    
    def get(self,
        request: "GetQuotaAllowanceRequest",
        **kwargs: typing_extensions.Unpack[request_kwargs.RequestKwargs]
    ) -> request.Request["GetQuotaAllowanceRequest","QuotaAllowance"]:
        """
        Gets a quota by its ID.
        
        :param request: The request object to send.
        :type request: :class:`nebius.api.nebius.quotas.v1.GetQuotaAllowanceRequest`
        
        Other parameters can be provided as keyword arguments in the
        ``**kwargs`` dictionary, including metadata, timeouts, and retries.
        See :class:`nebius.aio.request_kwargs.RequestKwargs` for details.
        
        :return: A :class:`nebius.aio.request.Request` object representing the
            in-flight RPC. It can be awaited (async) or waited
            synchronously using its ``.wait()`` helpers.
        :rtype: :class:`nebius.aio.request.Request` of
            :class:`nebius.api.nebius.quotas.v1.QuotaAllowance`.
        """
        
        return super().request(
            method="Get",
            request=request,
            result_pb2_class=quota_allowance_pb2.QuotaAllowance,
            result_wrapper=pb_classes.simple_wrapper(QuotaAllowance),
            **kwargs,
        )
    
    def get_by_name(self,
        request: "GetByNameRequest",
        **kwargs: typing_extensions.Unpack[request_kwargs.RequestKwargs]
    ) -> request.Request["GetByNameRequest","QuotaAllowance"]:
        """
        Gets a quota by an ID of a Tenant or a Project, its region, and name.
        
        :param request: The request object to send.
        :type request: :class:`nebius.api.nebius.quotas.v1.GetByNameRequest`
        
        Other parameters can be provided as keyword arguments in the
        ``**kwargs`` dictionary, including metadata, timeouts, and retries.
        See :class:`nebius.aio.request_kwargs.RequestKwargs` for details.
        
        :return: A :class:`nebius.aio.request.Request` object representing the
            in-flight RPC. It can be awaited (async) or waited
            synchronously using its ``.wait()`` helpers.
        :rtype: :class:`nebius.aio.request.Request` of
            :class:`nebius.api.nebius.quotas.v1.QuotaAllowance`.
        """
        
        return super().request(
            method="GetByName",
            request=request,
            result_pb2_class=quota_allowance_pb2.QuotaAllowance,
            result_wrapper=pb_classes.simple_wrapper(QuotaAllowance),
            **kwargs,
        )
    

__all__ = [
    #@ local import names here @#
    "QuotaAllowanceSpec",
    "QuotaAllowanceStatus",
    "QuotaAllowance",
    "ListQuotaAllowancesRequest",
    "GetQuotaAllowanceRequest",
    "ListQuotaAllowancesResponse",
    "GetByNameRequest",
    "QuotaAllowanceServiceClient",
]
