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

from typing import Optional, Tuple
from .core import LpSolver, LpSolver_CMD

"""
This type stub file was generated by pyright.
"""
scip_path = ...
fscip_path = ...
class SCIP_CMD(LpSolver_CMD):
    """The SCIP optimization solver"""
    name = ...
    def __init__(self, path=..., mip=..., keepFiles=..., msg=..., options=..., timeLimit=..., gapRel=..., gapAbs=..., maxNodes=..., logPath=..., threads=...) -> None:
        """
        :param bool mip: if False, assume LP even if integer variables
        :param bool msg: if False, no log is shown
        :param list options: list of additional options to pass to solver
        :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 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 maxNodes: max number of nodes during branching. Stops the solving when reached.
        :param int threads: sets the maximum number of threads
        :param str logPath: path to the log file
        """
        ...
    
    SCIP_STATUSES = ...
    NO_SOLUTION_STATUSES = ...
    def defaultPath(self):
        ...
    
    def available(self):
        """True if the solver is available"""
        ...
    
    def actualSolve(self, lp):
        """Solve a well formulated lp problem"""
        ...
    
    @staticmethod
    def readsol(filename):
        """Read a SCIP solution file"""
        ...
    


SCIP = SCIP_CMD
class FSCIP_CMD(LpSolver_CMD):
    """The multi-threaded FiberSCIP version of the SCIP optimization solver"""
    name = ...
    def __init__(self, path=..., mip=..., keepFiles=..., msg=..., options=..., timeLimit=..., gapRel=..., gapAbs=..., maxNodes=..., threads=..., logPath=...) -> None:
        """
        :param bool msg: if False, no log is shown
        :param bool mip: if False, assume LP even if integer variables
        :param list options: list of additional options to pass to solver
        :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 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 maxNodes: max number of nodes during branching. Stops the solving when reached.
        :param int threads: sets the maximum number of threads
        :param str logPath: path to the log file
        """
        ...
    
    FSCIP_STATUSES = ...
    NO_SOLUTION_STATUSES = ...
    def defaultPath(self):
        ...
    
    def available(self):
        """True if the solver is available"""
        ...
    
    def actualSolve(self, lp):
        """Solve a well formulated lp problem"""
        ...
    
    @staticmethod
    def parse_status(string: str) -> Optional[int]:
        ...
    
    @staticmethod
    def parse_objective(string: str) -> Optional[float]:
        ...
    
    @staticmethod
    def parse_variable(string: str) -> Optional[Tuple[str, float]]:
        ...
    
    @staticmethod
    def readsol(filename):
        """Read a FSCIP solution file"""
        ...
    


FSCIP = FSCIP_CMD
class SCIP_PY(LpSolver):
    """
    The SCIP Optimization Suite (via its python interface)

    The SCIP internals are available after calling solve as:
    - each variable in variable.solverVar
    - each constraint in constraint.solverConstraint
    - the model in problem.solverModel
    """
    name = ...


