"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
The suggested resources to solve an optimization problem."""

import builtins
import google.protobuf.descriptor
import google.protobuf.message
import sys
import typing

if sys.version_info >= (3, 10):
    import typing as typing_extensions
else:
    import typing_extensions

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

@typing.final
class SolverResourcesProto(google.protobuf.message.Message):
    """This message is used to specify some hints on the resources a remote solve is
    expected to use. These parameters are hints and may be ignored by the remote
    server (in particular in case of solve in a local subprocess, for example).

    When using SolveService.Solve and SolveService.ComputeInfeasibleSubsystem,
    these hints are mostly optional as some defaults will be computed based on
    the other parameters.

    When using SolveService.StreamSolve these hints are used to dimension the
    resources available during the execution of every action; thus it is
    recommended to set them.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    CPU_FIELD_NUMBER: builtins.int
    RAM_FIELD_NUMBER: builtins.int
    cpu: builtins.float
    """The number of CPUs this solve should be allocated (time-averaged over a
    short implementation-defined window). Must be finite and >=1.0.
    Note that if the SolveParametersProto.threads is not set then this
    parameter should also be left unset.
    """
    ram: builtins.float
    """The limit of RAM for the solve in bytes. Must be finite and >=512000."""
    def __init__(
        self,
        *,
        cpu: builtins.float | None = ...,
        ram: builtins.float | None = ...,
    ) -> None: ...
    _HasFieldArgType: typing_extensions.TypeAlias = typing.Literal["_cpu", b"_cpu", "_ram", b"_ram", "cpu", b"cpu", "ram", b"ram"]
    def HasField(self, field_name: _HasFieldArgType) -> builtins.bool: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["_cpu", b"_cpu", "_ram", b"_ram", "cpu", b"cpu", "ram", b"ram"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
    _WhichOneofReturnType__cpu: typing_extensions.TypeAlias = typing.Literal["cpu"]
    _WhichOneofArgType__cpu: typing_extensions.TypeAlias = typing.Literal["_cpu", b"_cpu"]
    _WhichOneofReturnType__ram: typing_extensions.TypeAlias = typing.Literal["ram"]
    _WhichOneofArgType__ram: typing_extensions.TypeAlias = typing.Literal["_ram", b"_ram"]
    @typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__cpu) -> _WhichOneofReturnType__cpu | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__ram) -> _WhichOneofReturnType__ram | None: ...

Global___SolverResourcesProto: typing_extensions.TypeAlias = SolverResourcesProto
