"""
This type stub file was generated by pyright.
"""

from .core import LpSolver, LpSolver_CMD

"""
This type stub file was generated by pyright.
"""
class CPLEX_CMD(LpSolver_CMD):
    """The CPLEX LP solver"""
    name = ...
    def __init__(self, mip=..., msg=..., timeLimit=..., gapRel=..., gapAbs=..., options=..., warmStart=..., keepFiles=..., path=..., threads=..., logPath=..., maxMemory=..., maxNodes=...) -> None:
        """
        :param bool mip: if False, assume LP even if integer variables
        :param bool msg: if False, no log is shown
        :param float timeLimit: maximum time for solver (in seconds)
        :param float gapRel: relative gap tolerance for the solver to stop (in fraction)
        :param float gapAbs: absolute gap tolerance for the solver to stop
        :param int threads: sets the maximum number of threads
        :param list options: list of additional options to pass to solver
        :param bool warmStart: if True, the solver will use the current value of variables as a start
        :param bool keepFiles: if True, files are saved in the current directory and not deleted after solving
        :param str path: path to the solver binary
        :param str logPath: path to the log file
        :param float maxMemory: max memory to use during the solving. Stops the solving when reached.
        :param int maxNodes: max number of nodes during branching. Stops the solving when reached.
        """
        ...
    
    def defaultPath(self):
        ...
    
    def available(self):
        """True if the solver is available"""
        ...
    
    def actualSolve(self, lp):
        """Solve a well formulated lp problem"""
        ...
    
    def getOptions(self):
        ...
    
    @staticmethod
    def readsol(filename):
        """Read a CPLEX solution file"""
        ...
    
    def writesol(self, filename, vs):
        """Writes a CPLEX solution file"""
        ...
    


def check_solverModel(func):
    """
    Decorator that checks if the solverModel is initialized.

    :raises PulpSolverError: If the ``solverModel`` attribute is not initialized
    """
    ...

class CPLEX_PY(LpSolver):
    """
    The CPLEX LP/MIP solver (via a Python Binding)

    This solver wraps the python api of cplex.
    It has been tested against cplex 12.3.
    For api functions that have not been wrapped in this solver please use
    the base cplex classes
    """
    name = ...


CPLEX = CPLEX_CMD
