"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
Copyright 2010-2025 Google LLC
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Proto messages specific to Xpress.
"""

import builtins
import collections.abc
import google.protobuf.descriptor
import google.protobuf.internal.containers
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 XpressInitializerProto(google.protobuf.message.Message):
    """Parameters used to initialize the Xpress solver."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    EXTRACT_NAMES_FIELD_NUMBER: builtins.int
    extract_names: builtins.bool
    def __init__(
        self,
        *,
        extract_names: builtins.bool | None = ...,
    ) -> None: ...
    _HasFieldArgType: typing_extensions.TypeAlias = typing.Literal["_extract_names", b"_extract_names", "extract_names", b"extract_names"]
    def HasField(self, field_name: _HasFieldArgType) -> builtins.bool: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["_extract_names", b"_extract_names", "extract_names", b"extract_names"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
    _WhichOneofReturnType__extract_names: typing_extensions.TypeAlias = typing.Literal["extract_names"]
    _WhichOneofArgType__extract_names: typing_extensions.TypeAlias = typing.Literal["_extract_names", b"_extract_names"]
    def WhichOneof(self, oneof_group: _WhichOneofArgType__extract_names) -> _WhichOneofReturnType__extract_names | None: ...

Global___XpressInitializerProto: typing_extensions.TypeAlias = XpressInitializerProto

@typing.final
class XpressParametersProto(google.protobuf.message.Message):
    """Xpress specific parameters for solving. See
      https://www.fico.com/fico-xpress-optimization/docs/latest/solver/optimizer/HTML/chapter7.html
    for a list of possible parameters (called "controls" in Xpress).
    In addition to all Xpress controls, the following special parameters are
    also supported:
      "EXPORT_MODEL"(string)  If present then the low level Xpress model
                              (the XPRSprob instance) is written to that file
                              right before XPRSoptimize() is called. This can
                              be useful for debugging.
      "FORCE_POSTSOLVE"(int)  If set to a non-zero value then the low-level code
                              will call XPRSpostsolve() right after calling
                              XPRSoptimize(). If not set or set to zero then
                              calling XPRSpostsolve() is delayed to the latest
                              possible point in time to enable incremental
                              solves.
       "STOP_AFTER_LP"(int)   If set to a non-zero value then the solve will be
                              stopped right after solving the root relaxation.
                              This is the same as passing the ' l' (ell) flag
                              to XPRSoptimize() and stops the process earlier
                              than a limit like MAXNODE=0.

    Example use:
      XpressParameters xpress;
      xpress.param_values["BarIterLimit"] = "10";

    Parameters are applied in the following order:
     * Any parameters derived from ortools parameters (like LP algorithm).
     * param_values in iteration order (insertion order).
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

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

        NAME_FIELD_NUMBER: builtins.int
        VALUE_FIELD_NUMBER: builtins.int
        name: builtins.str
        value: builtins.str
        def __init__(
            self,
            *,
            name: builtins.str = ...,
            value: builtins.str = ...,
        ) -> None: ...
        _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["name", b"name", "value", b"value"]
        def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

    PARAMETERS_FIELD_NUMBER: builtins.int
    @property
    def parameters(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[Global___XpressParametersProto.Parameter]: ...
    def __init__(
        self,
        *,
        parameters: collections.abc.Iterable[Global___XpressParametersProto.Parameter] | None = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["parameters", b"parameters"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___XpressParametersProto: typing_extensions.TypeAlias = XpressParametersProto
