# @generated by generate_proto_mypy_stubs.py.  Do not edit!
import sys
from google.protobuf.descriptor import (
    EnumDescriptor as google___protobuf___descriptor___EnumDescriptor,
)

from google.protobuf.message import (
    Message as google___protobuf___message___Message,
)

from typing import (
    List as typing___List,
    Tuple as typing___Tuple,
    cast as typing___cast,
)


class FirstSolutionStrategy(google___protobuf___message___Message):
    class Value(int):
        DESCRIPTOR: google___protobuf___descriptor___EnumDescriptor = ...
        @classmethod
        def Name(cls, number: int) -> str: ...
        @classmethod
        def Value(cls, name: str) -> FirstSolutionStrategy.Value: ...
        @classmethod
        def keys(cls) -> typing___List[str]: ...
        @classmethod
        def values(cls) -> typing___List[FirstSolutionStrategy.Value]: ...
        @classmethod
        def items(cls) -> typing___List[typing___Tuple[str, FirstSolutionStrategy.Value]]: ...
        UNSET = typing___cast(FirstSolutionStrategy.Value, 0)
        AUTOMATIC = typing___cast(FirstSolutionStrategy.Value, 15)
        PATH_CHEAPEST_ARC = typing___cast(FirstSolutionStrategy.Value, 3)
        PATH_MOST_CONSTRAINED_ARC = typing___cast(FirstSolutionStrategy.Value, 4)
        EVALUATOR_STRATEGY = typing___cast(FirstSolutionStrategy.Value, 5)
        SAVINGS = typing___cast(FirstSolutionStrategy.Value, 10)
        SWEEP = typing___cast(FirstSolutionStrategy.Value, 11)
        CHRISTOFIDES = typing___cast(FirstSolutionStrategy.Value, 13)
        ALL_UNPERFORMED = typing___cast(FirstSolutionStrategy.Value, 6)
        BEST_INSERTION = typing___cast(FirstSolutionStrategy.Value, 7)
        PARALLEL_CHEAPEST_INSERTION = typing___cast(FirstSolutionStrategy.Value, 8)
        SEQUENTIAL_CHEAPEST_INSERTION = typing___cast(FirstSolutionStrategy.Value, 14)
        LOCAL_CHEAPEST_INSERTION = typing___cast(FirstSolutionStrategy.Value, 9)
        GLOBAL_CHEAPEST_ARC = typing___cast(FirstSolutionStrategy.Value, 1)
        LOCAL_CHEAPEST_ARC = typing___cast(FirstSolutionStrategy.Value, 2)
        FIRST_UNBOUND_MIN_VALUE = typing___cast(FirstSolutionStrategy.Value, 12)
    UNSET = typing___cast(FirstSolutionStrategy.Value, 0)
    AUTOMATIC = typing___cast(FirstSolutionStrategy.Value, 15)
    PATH_CHEAPEST_ARC = typing___cast(FirstSolutionStrategy.Value, 3)
    PATH_MOST_CONSTRAINED_ARC = typing___cast(FirstSolutionStrategy.Value, 4)
    EVALUATOR_STRATEGY = typing___cast(FirstSolutionStrategy.Value, 5)
    SAVINGS = typing___cast(FirstSolutionStrategy.Value, 10)
    SWEEP = typing___cast(FirstSolutionStrategy.Value, 11)
    CHRISTOFIDES = typing___cast(FirstSolutionStrategy.Value, 13)
    ALL_UNPERFORMED = typing___cast(FirstSolutionStrategy.Value, 6)
    BEST_INSERTION = typing___cast(FirstSolutionStrategy.Value, 7)
    PARALLEL_CHEAPEST_INSERTION = typing___cast(FirstSolutionStrategy.Value, 8)
    SEQUENTIAL_CHEAPEST_INSERTION = typing___cast(FirstSolutionStrategy.Value, 14)
    LOCAL_CHEAPEST_INSERTION = typing___cast(FirstSolutionStrategy.Value, 9)
    GLOBAL_CHEAPEST_ARC = typing___cast(FirstSolutionStrategy.Value, 1)
    LOCAL_CHEAPEST_ARC = typing___cast(FirstSolutionStrategy.Value, 2)
    FIRST_UNBOUND_MIN_VALUE = typing___cast(FirstSolutionStrategy.Value, 12)


    def __init__(self,
        ) -> None: ...
    @classmethod
    def FromString(cls, s: bytes) -> FirstSolutionStrategy: ...
    def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...

class LocalSearchMetaheuristic(google___protobuf___message___Message):
    class Value(int):
        DESCRIPTOR: google___protobuf___descriptor___EnumDescriptor = ...
        @classmethod
        def Name(cls, number: int) -> str: ...
        @classmethod
        def Value(cls, name: str) -> LocalSearchMetaheuristic.Value: ...
        @classmethod
        def keys(cls) -> typing___List[str]: ...
        @classmethod
        def values(cls) -> typing___List[LocalSearchMetaheuristic.Value]: ...
        @classmethod
        def items(cls) -> typing___List[typing___Tuple[str, LocalSearchMetaheuristic.Value]]: ...
        UNSET = typing___cast(LocalSearchMetaheuristic.Value, 0)
        AUTOMATIC = typing___cast(LocalSearchMetaheuristic.Value, 6)
        GREEDY_DESCENT = typing___cast(LocalSearchMetaheuristic.Value, 1)
        GUIDED_LOCAL_SEARCH = typing___cast(LocalSearchMetaheuristic.Value, 2)
        SIMULATED_ANNEALING = typing___cast(LocalSearchMetaheuristic.Value, 3)
        TABU_SEARCH = typing___cast(LocalSearchMetaheuristic.Value, 4)
        GENERIC_TABU_SEARCH = typing___cast(LocalSearchMetaheuristic.Value, 5)
    UNSET = typing___cast(LocalSearchMetaheuristic.Value, 0)
    AUTOMATIC = typing___cast(LocalSearchMetaheuristic.Value, 6)
    GREEDY_DESCENT = typing___cast(LocalSearchMetaheuristic.Value, 1)
    GUIDED_LOCAL_SEARCH = typing___cast(LocalSearchMetaheuristic.Value, 2)
    SIMULATED_ANNEALING = typing___cast(LocalSearchMetaheuristic.Value, 3)
    TABU_SEARCH = typing___cast(LocalSearchMetaheuristic.Value, 4)
    GENERIC_TABU_SEARCH = typing___cast(LocalSearchMetaheuristic.Value, 5)


    def __init__(self,
        ) -> None: ...
    @classmethod
    def FromString(cls, s: bytes) -> LocalSearchMetaheuristic: ...
    def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
