"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
"""
import builtins
import google.protobuf.descriptor
import google.protobuf.internal.containers
import google.protobuf.internal.enum_type_wrapper
import google.protobuf.message
import ortools.util.optional_boolean_pb2
import typing
import typing_extensions

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor = ...

global___MPSolverResponseStatus = MPSolverResponseStatus
class _MPSolverResponseStatus(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[MPSolverResponseStatus.V], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor = ...
    MPSOLVER_OPTIMAL = MPSolverResponseStatus.V(0)
    MPSOLVER_FEASIBLE = MPSolverResponseStatus.V(1)
    MPSOLVER_INFEASIBLE = MPSolverResponseStatus.V(2)
    MPSOLVER_UNBOUNDED = MPSolverResponseStatus.V(3)
    MPSOLVER_ABNORMAL = MPSolverResponseStatus.V(4)
    MPSOLVER_NOT_SOLVED = MPSolverResponseStatus.V(6)
    MPSOLVER_MODEL_IS_VALID = MPSolverResponseStatus.V(97)
    MPSOLVER_CANCELLED_BY_USER = MPSolverResponseStatus.V(98)
    MPSOLVER_UNKNOWN_STATUS = MPSolverResponseStatus.V(99)
    MPSOLVER_MODEL_INVALID = MPSolverResponseStatus.V(5)
    MPSOLVER_MODEL_INVALID_SOLUTION_HINT = MPSolverResponseStatus.V(84)
    MPSOLVER_MODEL_INVALID_SOLVER_PARAMETERS = MPSolverResponseStatus.V(85)
    MPSOLVER_SOLVER_TYPE_UNAVAILABLE = MPSolverResponseStatus.V(7)
    MPSOLVER_INCOMPATIBLE_OPTIONS = MPSolverResponseStatus.V(113)
class MPSolverResponseStatus(metaclass=_MPSolverResponseStatus):
    V = typing.NewType('V', builtins.int)
MPSOLVER_OPTIMAL = MPSolverResponseStatus.V(0)
MPSOLVER_FEASIBLE = MPSolverResponseStatus.V(1)
MPSOLVER_INFEASIBLE = MPSolverResponseStatus.V(2)
MPSOLVER_UNBOUNDED = MPSolverResponseStatus.V(3)
MPSOLVER_ABNORMAL = MPSolverResponseStatus.V(4)
MPSOLVER_NOT_SOLVED = MPSolverResponseStatus.V(6)
MPSOLVER_MODEL_IS_VALID = MPSolverResponseStatus.V(97)
MPSOLVER_CANCELLED_BY_USER = MPSolverResponseStatus.V(98)
MPSOLVER_UNKNOWN_STATUS = MPSolverResponseStatus.V(99)
MPSOLVER_MODEL_INVALID = MPSolverResponseStatus.V(5)
MPSOLVER_MODEL_INVALID_SOLUTION_HINT = MPSolverResponseStatus.V(84)
MPSOLVER_MODEL_INVALID_SOLVER_PARAMETERS = MPSolverResponseStatus.V(85)
MPSOLVER_SOLVER_TYPE_UNAVAILABLE = MPSolverResponseStatus.V(7)
MPSOLVER_INCOMPATIBLE_OPTIONS = MPSolverResponseStatus.V(113)

class MPVariableProto(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    LOWER_BOUND_FIELD_NUMBER: builtins.int
    UPPER_BOUND_FIELD_NUMBER: builtins.int
    OBJECTIVE_COEFFICIENT_FIELD_NUMBER: builtins.int
    IS_INTEGER_FIELD_NUMBER: builtins.int
    NAME_FIELD_NUMBER: builtins.int
    BRANCHING_PRIORITY_FIELD_NUMBER: builtins.int
    lower_bound: builtins.float = ...
    upper_bound: builtins.float = ...
    objective_coefficient: builtins.float = ...
    is_integer: builtins.bool = ...
    name: typing.Text = ...
    branching_priority: builtins.int = ...

    def __init__(self,
        *,
        lower_bound : typing.Optional[builtins.float] = ...,
        upper_bound : typing.Optional[builtins.float] = ...,
        objective_coefficient : typing.Optional[builtins.float] = ...,
        is_integer : typing.Optional[builtins.bool] = ...,
        name : typing.Optional[typing.Text] = ...,
        branching_priority : typing.Optional[builtins.int] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"branching_priority",b"branching_priority",u"is_integer",b"is_integer",u"lower_bound",b"lower_bound",u"name",b"name",u"objective_coefficient",b"objective_coefficient",u"upper_bound",b"upper_bound"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"branching_priority",b"branching_priority",u"is_integer",b"is_integer",u"lower_bound",b"lower_bound",u"name",b"name",u"objective_coefficient",b"objective_coefficient",u"upper_bound",b"upper_bound"]) -> None: ...
global___MPVariableProto = MPVariableProto

class MPConstraintProto(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    VAR_INDEX_FIELD_NUMBER: builtins.int
    COEFFICIENT_FIELD_NUMBER: builtins.int
    LOWER_BOUND_FIELD_NUMBER: builtins.int
    UPPER_BOUND_FIELD_NUMBER: builtins.int
    NAME_FIELD_NUMBER: builtins.int
    IS_LAZY_FIELD_NUMBER: builtins.int
    var_index: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int] = ...
    coefficient: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float] = ...
    lower_bound: builtins.float = ...
    upper_bound: builtins.float = ...
    name: typing.Text = ...
    is_lazy: builtins.bool = ...

    def __init__(self,
        *,
        var_index : typing.Optional[typing.Iterable[builtins.int]] = ...,
        coefficient : typing.Optional[typing.Iterable[builtins.float]] = ...,
        lower_bound : typing.Optional[builtins.float] = ...,
        upper_bound : typing.Optional[builtins.float] = ...,
        name : typing.Optional[typing.Text] = ...,
        is_lazy : typing.Optional[builtins.bool] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"is_lazy",b"is_lazy",u"lower_bound",b"lower_bound",u"name",b"name",u"upper_bound",b"upper_bound"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"coefficient",b"coefficient",u"is_lazy",b"is_lazy",u"lower_bound",b"lower_bound",u"name",b"name",u"upper_bound",b"upper_bound",u"var_index",b"var_index"]) -> None: ...
global___MPConstraintProto = MPConstraintProto

class MPGeneralConstraintProto(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    NAME_FIELD_NUMBER: builtins.int
    INDICATOR_CONSTRAINT_FIELD_NUMBER: builtins.int
    SOS_CONSTRAINT_FIELD_NUMBER: builtins.int
    QUADRATIC_CONSTRAINT_FIELD_NUMBER: builtins.int
    ABS_CONSTRAINT_FIELD_NUMBER: builtins.int
    AND_CONSTRAINT_FIELD_NUMBER: builtins.int
    OR_CONSTRAINT_FIELD_NUMBER: builtins.int
    MIN_CONSTRAINT_FIELD_NUMBER: builtins.int
    MAX_CONSTRAINT_FIELD_NUMBER: builtins.int
    name: typing.Text = ...

    @property
    def indicator_constraint(self) -> global___MPIndicatorConstraint: ...

    @property
    def sos_constraint(self) -> global___MPSosConstraint: ...

    @property
    def quadratic_constraint(self) -> global___MPQuadraticConstraint: ...

    @property
    def abs_constraint(self) -> global___MPAbsConstraint: ...

    @property
    def and_constraint(self) -> global___MPArrayConstraint: ...

    @property
    def or_constraint(self) -> global___MPArrayConstraint: ...

    @property
    def min_constraint(self) -> global___MPArrayWithConstantConstraint: ...

    @property
    def max_constraint(self) -> global___MPArrayWithConstantConstraint: ...

    def __init__(self,
        *,
        name : typing.Optional[typing.Text] = ...,
        indicator_constraint : typing.Optional[global___MPIndicatorConstraint] = ...,
        sos_constraint : typing.Optional[global___MPSosConstraint] = ...,
        quadratic_constraint : typing.Optional[global___MPQuadraticConstraint] = ...,
        abs_constraint : typing.Optional[global___MPAbsConstraint] = ...,
        and_constraint : typing.Optional[global___MPArrayConstraint] = ...,
        or_constraint : typing.Optional[global___MPArrayConstraint] = ...,
        min_constraint : typing.Optional[global___MPArrayWithConstantConstraint] = ...,
        max_constraint : typing.Optional[global___MPArrayWithConstantConstraint] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"abs_constraint",b"abs_constraint",u"and_constraint",b"and_constraint",u"general_constraint",b"general_constraint",u"indicator_constraint",b"indicator_constraint",u"max_constraint",b"max_constraint",u"min_constraint",b"min_constraint",u"name",b"name",u"or_constraint",b"or_constraint",u"quadratic_constraint",b"quadratic_constraint",u"sos_constraint",b"sos_constraint"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"abs_constraint",b"abs_constraint",u"and_constraint",b"and_constraint",u"general_constraint",b"general_constraint",u"indicator_constraint",b"indicator_constraint",u"max_constraint",b"max_constraint",u"min_constraint",b"min_constraint",u"name",b"name",u"or_constraint",b"or_constraint",u"quadratic_constraint",b"quadratic_constraint",u"sos_constraint",b"sos_constraint"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal[u"general_constraint",b"general_constraint"]) -> typing_extensions.Literal["indicator_constraint","sos_constraint","quadratic_constraint","abs_constraint","and_constraint","or_constraint","min_constraint","max_constraint"]: ...
global___MPGeneralConstraintProto = MPGeneralConstraintProto

class MPIndicatorConstraint(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    VAR_INDEX_FIELD_NUMBER: builtins.int
    VAR_VALUE_FIELD_NUMBER: builtins.int
    CONSTRAINT_FIELD_NUMBER: builtins.int
    var_index: builtins.int = ...
    var_value: builtins.int = ...

    @property
    def constraint(self) -> global___MPConstraintProto: ...

    def __init__(self,
        *,
        var_index : typing.Optional[builtins.int] = ...,
        var_value : typing.Optional[builtins.int] = ...,
        constraint : typing.Optional[global___MPConstraintProto] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"constraint",b"constraint",u"var_index",b"var_index",u"var_value",b"var_value"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"constraint",b"constraint",u"var_index",b"var_index",u"var_value",b"var_value"]) -> None: ...
global___MPIndicatorConstraint = MPIndicatorConstraint

class MPSosConstraint(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    class _Type(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[Type.V], builtins.type):
        DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor = ...
        SOS1_DEFAULT = MPSosConstraint.Type.V(0)
        SOS2 = MPSosConstraint.Type.V(1)
    class Type(metaclass=_Type):
        V = typing.NewType('V', builtins.int)
    SOS1_DEFAULT = MPSosConstraint.Type.V(0)
    SOS2 = MPSosConstraint.Type.V(1)

    TYPE_FIELD_NUMBER: builtins.int
    VAR_INDEX_FIELD_NUMBER: builtins.int
    WEIGHT_FIELD_NUMBER: builtins.int
    type: global___MPSosConstraint.Type.V = ...
    var_index: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int] = ...
    weight: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float] = ...

    def __init__(self,
        *,
        type : typing.Optional[global___MPSosConstraint.Type.V] = ...,
        var_index : typing.Optional[typing.Iterable[builtins.int]] = ...,
        weight : typing.Optional[typing.Iterable[builtins.float]] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"type",b"type"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"type",b"type",u"var_index",b"var_index",u"weight",b"weight"]) -> None: ...
global___MPSosConstraint = MPSosConstraint

class MPQuadraticConstraint(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    VAR_INDEX_FIELD_NUMBER: builtins.int
    COEFFICIENT_FIELD_NUMBER: builtins.int
    QVAR1_INDEX_FIELD_NUMBER: builtins.int
    QVAR2_INDEX_FIELD_NUMBER: builtins.int
    QCOEFFICIENT_FIELD_NUMBER: builtins.int
    LOWER_BOUND_FIELD_NUMBER: builtins.int
    UPPER_BOUND_FIELD_NUMBER: builtins.int
    var_index: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int] = ...
    coefficient: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float] = ...
    qvar1_index: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int] = ...
    qvar2_index: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int] = ...
    qcoefficient: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float] = ...
    lower_bound: builtins.float = ...
    upper_bound: builtins.float = ...

    def __init__(self,
        *,
        var_index : typing.Optional[typing.Iterable[builtins.int]] = ...,
        coefficient : typing.Optional[typing.Iterable[builtins.float]] = ...,
        qvar1_index : typing.Optional[typing.Iterable[builtins.int]] = ...,
        qvar2_index : typing.Optional[typing.Iterable[builtins.int]] = ...,
        qcoefficient : typing.Optional[typing.Iterable[builtins.float]] = ...,
        lower_bound : typing.Optional[builtins.float] = ...,
        upper_bound : typing.Optional[builtins.float] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"lower_bound",b"lower_bound",u"upper_bound",b"upper_bound"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"coefficient",b"coefficient",u"lower_bound",b"lower_bound",u"qcoefficient",b"qcoefficient",u"qvar1_index",b"qvar1_index",u"qvar2_index",b"qvar2_index",u"upper_bound",b"upper_bound",u"var_index",b"var_index"]) -> None: ...
global___MPQuadraticConstraint = MPQuadraticConstraint

class MPAbsConstraint(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    VAR_INDEX_FIELD_NUMBER: builtins.int
    RESULTANT_VAR_INDEX_FIELD_NUMBER: builtins.int
    var_index: builtins.int = ...
    resultant_var_index: builtins.int = ...

    def __init__(self,
        *,
        var_index : typing.Optional[builtins.int] = ...,
        resultant_var_index : typing.Optional[builtins.int] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"resultant_var_index",b"resultant_var_index",u"var_index",b"var_index"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"resultant_var_index",b"resultant_var_index",u"var_index",b"var_index"]) -> None: ...
global___MPAbsConstraint = MPAbsConstraint

class MPArrayConstraint(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    VAR_INDEX_FIELD_NUMBER: builtins.int
    RESULTANT_VAR_INDEX_FIELD_NUMBER: builtins.int
    var_index: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int] = ...
    resultant_var_index: builtins.int = ...

    def __init__(self,
        *,
        var_index : typing.Optional[typing.Iterable[builtins.int]] = ...,
        resultant_var_index : typing.Optional[builtins.int] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"resultant_var_index",b"resultant_var_index"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"resultant_var_index",b"resultant_var_index",u"var_index",b"var_index"]) -> None: ...
global___MPArrayConstraint = MPArrayConstraint

class MPArrayWithConstantConstraint(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    VAR_INDEX_FIELD_NUMBER: builtins.int
    CONSTANT_FIELD_NUMBER: builtins.int
    RESULTANT_VAR_INDEX_FIELD_NUMBER: builtins.int
    var_index: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int] = ...
    constant: builtins.float = ...
    resultant_var_index: builtins.int = ...

    def __init__(self,
        *,
        var_index : typing.Optional[typing.Iterable[builtins.int]] = ...,
        constant : typing.Optional[builtins.float] = ...,
        resultant_var_index : typing.Optional[builtins.int] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"constant",b"constant",u"resultant_var_index",b"resultant_var_index"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"constant",b"constant",u"resultant_var_index",b"resultant_var_index",u"var_index",b"var_index"]) -> None: ...
global___MPArrayWithConstantConstraint = MPArrayWithConstantConstraint

class MPQuadraticObjective(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    QVAR1_INDEX_FIELD_NUMBER: builtins.int
    QVAR2_INDEX_FIELD_NUMBER: builtins.int
    COEFFICIENT_FIELD_NUMBER: builtins.int
    qvar1_index: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int] = ...
    qvar2_index: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int] = ...
    coefficient: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float] = ...

    def __init__(self,
        *,
        qvar1_index : typing.Optional[typing.Iterable[builtins.int]] = ...,
        qvar2_index : typing.Optional[typing.Iterable[builtins.int]] = ...,
        coefficient : typing.Optional[typing.Iterable[builtins.float]] = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"coefficient",b"coefficient",u"qvar1_index",b"qvar1_index",u"qvar2_index",b"qvar2_index"]) -> None: ...
global___MPQuadraticObjective = MPQuadraticObjective

class PartialVariableAssignment(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    VAR_INDEX_FIELD_NUMBER: builtins.int
    VAR_VALUE_FIELD_NUMBER: builtins.int
    var_index: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int] = ...
    var_value: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float] = ...

    def __init__(self,
        *,
        var_index : typing.Optional[typing.Iterable[builtins.int]] = ...,
        var_value : typing.Optional[typing.Iterable[builtins.float]] = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"var_index",b"var_index",u"var_value",b"var_value"]) -> None: ...
global___PartialVariableAssignment = PartialVariableAssignment

class MPModelProto(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    VARIABLE_FIELD_NUMBER: builtins.int
    CONSTRAINT_FIELD_NUMBER: builtins.int
    GENERAL_CONSTRAINT_FIELD_NUMBER: builtins.int
    MAXIMIZE_FIELD_NUMBER: builtins.int
    OBJECTIVE_OFFSET_FIELD_NUMBER: builtins.int
    QUADRATIC_OBJECTIVE_FIELD_NUMBER: builtins.int
    NAME_FIELD_NUMBER: builtins.int
    SOLUTION_HINT_FIELD_NUMBER: builtins.int
    maximize: builtins.bool = ...
    objective_offset: builtins.float = ...
    name: typing.Text = ...

    @property
    def variable(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___MPVariableProto]: ...

    @property
    def constraint(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___MPConstraintProto]: ...

    @property
    def general_constraint(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___MPGeneralConstraintProto]: ...

    @property
    def quadratic_objective(self) -> global___MPQuadraticObjective: ...

    @property
    def solution_hint(self) -> global___PartialVariableAssignment: ...

    def __init__(self,
        *,
        variable : typing.Optional[typing.Iterable[global___MPVariableProto]] = ...,
        constraint : typing.Optional[typing.Iterable[global___MPConstraintProto]] = ...,
        general_constraint : typing.Optional[typing.Iterable[global___MPGeneralConstraintProto]] = ...,
        maximize : typing.Optional[builtins.bool] = ...,
        objective_offset : typing.Optional[builtins.float] = ...,
        quadratic_objective : typing.Optional[global___MPQuadraticObjective] = ...,
        name : typing.Optional[typing.Text] = ...,
        solution_hint : typing.Optional[global___PartialVariableAssignment] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"maximize",b"maximize",u"name",b"name",u"objective_offset",b"objective_offset",u"quadratic_objective",b"quadratic_objective",u"solution_hint",b"solution_hint"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"constraint",b"constraint",u"general_constraint",b"general_constraint",u"maximize",b"maximize",u"name",b"name",u"objective_offset",b"objective_offset",u"quadratic_objective",b"quadratic_objective",u"solution_hint",b"solution_hint",u"variable",b"variable"]) -> None: ...
global___MPModelProto = MPModelProto

class OptionalDouble(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    VALUE_FIELD_NUMBER: builtins.int
    value: builtins.float = ...

    def __init__(self,
        *,
        value : typing.Optional[builtins.float] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"value",b"value"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"value",b"value"]) -> None: ...
global___OptionalDouble = OptionalDouble

class MPSolverCommonParameters(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    class _LPAlgorithmValues(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[LPAlgorithmValues.V], builtins.type):
        DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor = ...
        LP_ALGO_UNSPECIFIED = MPSolverCommonParameters.LPAlgorithmValues.V(0)
        LP_ALGO_DUAL = MPSolverCommonParameters.LPAlgorithmValues.V(1)
        LP_ALGO_PRIMAL = MPSolverCommonParameters.LPAlgorithmValues.V(2)
        LP_ALGO_BARRIER = MPSolverCommonParameters.LPAlgorithmValues.V(3)
    class LPAlgorithmValues(metaclass=_LPAlgorithmValues):
        V = typing.NewType('V', builtins.int)
    LP_ALGO_UNSPECIFIED = MPSolverCommonParameters.LPAlgorithmValues.V(0)
    LP_ALGO_DUAL = MPSolverCommonParameters.LPAlgorithmValues.V(1)
    LP_ALGO_PRIMAL = MPSolverCommonParameters.LPAlgorithmValues.V(2)
    LP_ALGO_BARRIER = MPSolverCommonParameters.LPAlgorithmValues.V(3)

    RELATIVE_MIP_GAP_FIELD_NUMBER: builtins.int
    PRIMAL_TOLERANCE_FIELD_NUMBER: builtins.int
    DUAL_TOLERANCE_FIELD_NUMBER: builtins.int
    LP_ALGORITHM_FIELD_NUMBER: builtins.int
    PRESOLVE_FIELD_NUMBER: builtins.int
    SCALING_FIELD_NUMBER: builtins.int
    lp_algorithm: global___MPSolverCommonParameters.LPAlgorithmValues.V = ...
    presolve: ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...
    scaling: ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...

    @property
    def relative_mip_gap(self) -> global___OptionalDouble: ...

    @property
    def primal_tolerance(self) -> global___OptionalDouble: ...

    @property
    def dual_tolerance(self) -> global___OptionalDouble: ...

    def __init__(self,
        *,
        relative_mip_gap : typing.Optional[global___OptionalDouble] = ...,
        primal_tolerance : typing.Optional[global___OptionalDouble] = ...,
        dual_tolerance : typing.Optional[global___OptionalDouble] = ...,
        lp_algorithm : typing.Optional[global___MPSolverCommonParameters.LPAlgorithmValues.V] = ...,
        presolve : typing.Optional[ortools.util.optional_boolean_pb2.OptionalBoolean.V] = ...,
        scaling : typing.Optional[ortools.util.optional_boolean_pb2.OptionalBoolean.V] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"dual_tolerance",b"dual_tolerance",u"lp_algorithm",b"lp_algorithm",u"presolve",b"presolve",u"primal_tolerance",b"primal_tolerance",u"relative_mip_gap",b"relative_mip_gap",u"scaling",b"scaling"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"dual_tolerance",b"dual_tolerance",u"lp_algorithm",b"lp_algorithm",u"presolve",b"presolve",u"primal_tolerance",b"primal_tolerance",u"relative_mip_gap",b"relative_mip_gap",u"scaling",b"scaling"]) -> None: ...
global___MPSolverCommonParameters = MPSolverCommonParameters

class MPModelDeltaProto(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    class VariableOverridesEntry(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
        KEY_FIELD_NUMBER: builtins.int
        VALUE_FIELD_NUMBER: builtins.int
        key: builtins.int = ...

        @property
        def value(self) -> global___MPVariableProto: ...

        def __init__(self,
            *,
            key : typing.Optional[builtins.int] = ...,
            value : typing.Optional[global___MPVariableProto] = ...,
            ) -> None: ...
        def HasField(self, field_name: typing_extensions.Literal[u"key",b"key",u"value",b"value"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing_extensions.Literal[u"key",b"key",u"value",b"value"]) -> None: ...

    class ConstraintOverridesEntry(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
        KEY_FIELD_NUMBER: builtins.int
        VALUE_FIELD_NUMBER: builtins.int
        key: builtins.int = ...

        @property
        def value(self) -> global___MPConstraintProto: ...

        def __init__(self,
            *,
            key : typing.Optional[builtins.int] = ...,
            value : typing.Optional[global___MPConstraintProto] = ...,
            ) -> None: ...
        def HasField(self, field_name: typing_extensions.Literal[u"key",b"key",u"value",b"value"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing_extensions.Literal[u"key",b"key",u"value",b"value"]) -> None: ...

    BASELINE_MODEL_FILE_PATH_FIELD_NUMBER: builtins.int
    VARIABLE_OVERRIDES_FIELD_NUMBER: builtins.int
    CONSTRAINT_OVERRIDES_FIELD_NUMBER: builtins.int
    baseline_model_file_path: typing.Text = ...

    @property
    def variable_overrides(self) -> google.protobuf.internal.containers.MessageMap[builtins.int, global___MPVariableProto]: ...

    @property
    def constraint_overrides(self) -> google.protobuf.internal.containers.MessageMap[builtins.int, global___MPConstraintProto]: ...

    def __init__(self,
        *,
        baseline_model_file_path : typing.Optional[typing.Text] = ...,
        variable_overrides : typing.Optional[typing.Mapping[builtins.int, global___MPVariableProto]] = ...,
        constraint_overrides : typing.Optional[typing.Mapping[builtins.int, global___MPConstraintProto]] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"baseline_model_file_path",b"baseline_model_file_path"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"baseline_model_file_path",b"baseline_model_file_path",u"constraint_overrides",b"constraint_overrides",u"variable_overrides",b"variable_overrides"]) -> None: ...
global___MPModelDeltaProto = MPModelDeltaProto

class MPModelRequest(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    class _SolverType(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[SolverType.V], builtins.type):
        DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor = ...
        GLOP_LINEAR_PROGRAMMING = MPModelRequest.SolverType.V(2)
        CLP_LINEAR_PROGRAMMING = MPModelRequest.SolverType.V(0)
        GLPK_LINEAR_PROGRAMMING = MPModelRequest.SolverType.V(1)
        GUROBI_LINEAR_PROGRAMMING = MPModelRequest.SolverType.V(6)
        XPRESS_LINEAR_PROGRAMMING = MPModelRequest.SolverType.V(101)
        CPLEX_LINEAR_PROGRAMMING = MPModelRequest.SolverType.V(10)
        SCIP_MIXED_INTEGER_PROGRAMMING = MPModelRequest.SolverType.V(3)
        GLPK_MIXED_INTEGER_PROGRAMMING = MPModelRequest.SolverType.V(4)
        CBC_MIXED_INTEGER_PROGRAMMING = MPModelRequest.SolverType.V(5)
        GUROBI_MIXED_INTEGER_PROGRAMMING = MPModelRequest.SolverType.V(7)
        XPRESS_MIXED_INTEGER_PROGRAMMING = MPModelRequest.SolverType.V(102)
        CPLEX_MIXED_INTEGER_PROGRAMMING = MPModelRequest.SolverType.V(11)
        BOP_INTEGER_PROGRAMMING = MPModelRequest.SolverType.V(12)
        SAT_INTEGER_PROGRAMMING = MPModelRequest.SolverType.V(14)
        KNAPSACK_MIXED_INTEGER_PROGRAMMING = MPModelRequest.SolverType.V(13)
    class SolverType(metaclass=_SolverType):
        V = typing.NewType('V', builtins.int)
    GLOP_LINEAR_PROGRAMMING = MPModelRequest.SolverType.V(2)
    CLP_LINEAR_PROGRAMMING = MPModelRequest.SolverType.V(0)
    GLPK_LINEAR_PROGRAMMING = MPModelRequest.SolverType.V(1)
    GUROBI_LINEAR_PROGRAMMING = MPModelRequest.SolverType.V(6)
    XPRESS_LINEAR_PROGRAMMING = MPModelRequest.SolverType.V(101)
    CPLEX_LINEAR_PROGRAMMING = MPModelRequest.SolverType.V(10)
    SCIP_MIXED_INTEGER_PROGRAMMING = MPModelRequest.SolverType.V(3)
    GLPK_MIXED_INTEGER_PROGRAMMING = MPModelRequest.SolverType.V(4)
    CBC_MIXED_INTEGER_PROGRAMMING = MPModelRequest.SolverType.V(5)
    GUROBI_MIXED_INTEGER_PROGRAMMING = MPModelRequest.SolverType.V(7)
    XPRESS_MIXED_INTEGER_PROGRAMMING = MPModelRequest.SolverType.V(102)
    CPLEX_MIXED_INTEGER_PROGRAMMING = MPModelRequest.SolverType.V(11)
    BOP_INTEGER_PROGRAMMING = MPModelRequest.SolverType.V(12)
    SAT_INTEGER_PROGRAMMING = MPModelRequest.SolverType.V(14)
    KNAPSACK_MIXED_INTEGER_PROGRAMMING = MPModelRequest.SolverType.V(13)

    MODEL_FIELD_NUMBER: builtins.int
    SOLVER_TYPE_FIELD_NUMBER: builtins.int
    SOLVER_TIME_LIMIT_SECONDS_FIELD_NUMBER: builtins.int
    ENABLE_INTERNAL_SOLVER_OUTPUT_FIELD_NUMBER: builtins.int
    SOLVER_SPECIFIC_PARAMETERS_FIELD_NUMBER: builtins.int
    IGNORE_SOLVER_SPECIFIC_PARAMETERS_FAILURE_FIELD_NUMBER: builtins.int
    MODEL_DELTA_FIELD_NUMBER: builtins.int
    POPULATE_ADDITIONAL_SOLUTIONS_UP_TO_FIELD_NUMBER: builtins.int
    solver_type: global___MPModelRequest.SolverType.V = ...
    solver_time_limit_seconds: builtins.float = ...
    enable_internal_solver_output: builtins.bool = ...
    solver_specific_parameters: typing.Text = ...
    ignore_solver_specific_parameters_failure: builtins.bool = ...
    populate_additional_solutions_up_to: builtins.int = ...

    @property
    def model(self) -> global___MPModelProto: ...

    @property
    def model_delta(self) -> global___MPModelDeltaProto: ...

    def __init__(self,
        *,
        model : typing.Optional[global___MPModelProto] = ...,
        solver_type : typing.Optional[global___MPModelRequest.SolverType.V] = ...,
        solver_time_limit_seconds : typing.Optional[builtins.float] = ...,
        enable_internal_solver_output : typing.Optional[builtins.bool] = ...,
        solver_specific_parameters : typing.Optional[typing.Text] = ...,
        ignore_solver_specific_parameters_failure : typing.Optional[builtins.bool] = ...,
        model_delta : typing.Optional[global___MPModelDeltaProto] = ...,
        populate_additional_solutions_up_to : typing.Optional[builtins.int] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"enable_internal_solver_output",b"enable_internal_solver_output",u"ignore_solver_specific_parameters_failure",b"ignore_solver_specific_parameters_failure",u"model",b"model",u"model_delta",b"model_delta",u"populate_additional_solutions_up_to",b"populate_additional_solutions_up_to",u"solver_specific_parameters",b"solver_specific_parameters",u"solver_time_limit_seconds",b"solver_time_limit_seconds",u"solver_type",b"solver_type"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"enable_internal_solver_output",b"enable_internal_solver_output",u"ignore_solver_specific_parameters_failure",b"ignore_solver_specific_parameters_failure",u"model",b"model",u"model_delta",b"model_delta",u"populate_additional_solutions_up_to",b"populate_additional_solutions_up_to",u"solver_specific_parameters",b"solver_specific_parameters",u"solver_time_limit_seconds",b"solver_time_limit_seconds",u"solver_type",b"solver_type"]) -> None: ...
global___MPModelRequest = MPModelRequest

class MPSolution(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    OBJECTIVE_VALUE_FIELD_NUMBER: builtins.int
    VARIABLE_VALUE_FIELD_NUMBER: builtins.int
    objective_value: builtins.float = ...
    variable_value: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float] = ...

    def __init__(self,
        *,
        objective_value : typing.Optional[builtins.float] = ...,
        variable_value : typing.Optional[typing.Iterable[builtins.float]] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"objective_value",b"objective_value"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"objective_value",b"objective_value",u"variable_value",b"variable_value"]) -> None: ...
global___MPSolution = MPSolution

class MPSolveInfo(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    SOLVE_WALL_TIME_SECONDS_FIELD_NUMBER: builtins.int
    SOLVE_USER_TIME_SECONDS_FIELD_NUMBER: builtins.int
    solve_wall_time_seconds: builtins.float = ...
    solve_user_time_seconds: builtins.float = ...

    def __init__(self,
        *,
        solve_wall_time_seconds : typing.Optional[builtins.float] = ...,
        solve_user_time_seconds : typing.Optional[builtins.float] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"solve_user_time_seconds",b"solve_user_time_seconds",u"solve_wall_time_seconds",b"solve_wall_time_seconds"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"solve_user_time_seconds",b"solve_user_time_seconds",u"solve_wall_time_seconds",b"solve_wall_time_seconds"]) -> None: ...
global___MPSolveInfo = MPSolveInfo

class MPSolutionResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    STATUS_FIELD_NUMBER: builtins.int
    STATUS_STR_FIELD_NUMBER: builtins.int
    OBJECTIVE_VALUE_FIELD_NUMBER: builtins.int
    BEST_OBJECTIVE_BOUND_FIELD_NUMBER: builtins.int
    VARIABLE_VALUE_FIELD_NUMBER: builtins.int
    SOLVE_INFO_FIELD_NUMBER: builtins.int
    DUAL_VALUE_FIELD_NUMBER: builtins.int
    REDUCED_COST_FIELD_NUMBER: builtins.int
    ADDITIONAL_SOLUTIONS_FIELD_NUMBER: builtins.int
    status: global___MPSolverResponseStatus.V = ...
    status_str: typing.Text = ...
    objective_value: builtins.float = ...
    best_objective_bound: builtins.float = ...
    variable_value: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float] = ...
    dual_value: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float] = ...
    reduced_cost: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float] = ...

    @property
    def solve_info(self) -> global___MPSolveInfo: ...

    @property
    def additional_solutions(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___MPSolution]: ...

    def __init__(self,
        *,
        status : typing.Optional[global___MPSolverResponseStatus.V] = ...,
        status_str : typing.Optional[typing.Text] = ...,
        objective_value : typing.Optional[builtins.float] = ...,
        best_objective_bound : typing.Optional[builtins.float] = ...,
        variable_value : typing.Optional[typing.Iterable[builtins.float]] = ...,
        solve_info : typing.Optional[global___MPSolveInfo] = ...,
        dual_value : typing.Optional[typing.Iterable[builtins.float]] = ...,
        reduced_cost : typing.Optional[typing.Iterable[builtins.float]] = ...,
        additional_solutions : typing.Optional[typing.Iterable[global___MPSolution]] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"best_objective_bound",b"best_objective_bound",u"objective_value",b"objective_value",u"solve_info",b"solve_info",u"status",b"status",u"status_str",b"status_str"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"additional_solutions",b"additional_solutions",u"best_objective_bound",b"best_objective_bound",u"dual_value",b"dual_value",u"objective_value",b"objective_value",u"reduced_cost",b"reduced_cost",u"solve_info",b"solve_info",u"status",b"status",u"status_str",b"status_str",u"variable_value",b"variable_value"]) -> None: ...
global___MPSolutionResponse = MPSolutionResponse
