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

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

class RoutingSearchParameters(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    class _SchedulingSolver(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[SchedulingSolver.V], builtins.type):
        DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor = ...
        UNSET = RoutingSearchParameters.SchedulingSolver.V(0)
        GLOP = RoutingSearchParameters.SchedulingSolver.V(1)
        CP_SAT = RoutingSearchParameters.SchedulingSolver.V(2)
    class SchedulingSolver(metaclass=_SchedulingSolver):
        V = typing.NewType('V', builtins.int)
    UNSET = RoutingSearchParameters.SchedulingSolver.V(0)
    GLOP = RoutingSearchParameters.SchedulingSolver.V(1)
    CP_SAT = RoutingSearchParameters.SchedulingSolver.V(2)

    class LocalSearchNeighborhoodOperators(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
        USE_RELOCATE_FIELD_NUMBER: builtins.int
        USE_RELOCATE_PAIR_FIELD_NUMBER: builtins.int
        USE_LIGHT_RELOCATE_PAIR_FIELD_NUMBER: builtins.int
        USE_RELOCATE_NEIGHBORS_FIELD_NUMBER: builtins.int
        USE_RELOCATE_SUBTRIP_FIELD_NUMBER: builtins.int
        USE_EXCHANGE_FIELD_NUMBER: builtins.int
        USE_EXCHANGE_PAIR_FIELD_NUMBER: builtins.int
        USE_EXCHANGE_SUBTRIP_FIELD_NUMBER: builtins.int
        USE_CROSS_FIELD_NUMBER: builtins.int
        USE_CROSS_EXCHANGE_FIELD_NUMBER: builtins.int
        USE_RELOCATE_EXPENSIVE_CHAIN_FIELD_NUMBER: builtins.int
        USE_TWO_OPT_FIELD_NUMBER: builtins.int
        USE_OR_OPT_FIELD_NUMBER: builtins.int
        USE_LIN_KERNIGHAN_FIELD_NUMBER: builtins.int
        USE_TSP_OPT_FIELD_NUMBER: builtins.int
        USE_MAKE_ACTIVE_FIELD_NUMBER: builtins.int
        USE_RELOCATE_AND_MAKE_ACTIVE_FIELD_NUMBER: builtins.int
        USE_MAKE_INACTIVE_FIELD_NUMBER: builtins.int
        USE_MAKE_CHAIN_INACTIVE_FIELD_NUMBER: builtins.int
        USE_SWAP_ACTIVE_FIELD_NUMBER: builtins.int
        USE_EXTENDED_SWAP_ACTIVE_FIELD_NUMBER: builtins.int
        USE_NODE_PAIR_SWAP_ACTIVE_FIELD_NUMBER: builtins.int
        USE_PATH_LNS_FIELD_NUMBER: builtins.int
        USE_FULL_PATH_LNS_FIELD_NUMBER: builtins.int
        USE_TSP_LNS_FIELD_NUMBER: builtins.int
        USE_INACTIVE_LNS_FIELD_NUMBER: builtins.int
        USE_GLOBAL_CHEAPEST_INSERTION_PATH_LNS_FIELD_NUMBER: builtins.int
        USE_LOCAL_CHEAPEST_INSERTION_PATH_LNS_FIELD_NUMBER: builtins.int
        USE_RELOCATE_PATH_GLOBAL_CHEAPEST_INSERTION_INSERT_UNPERFORMED_FIELD_NUMBER: builtins.int
        USE_GLOBAL_CHEAPEST_INSERTION_EXPENSIVE_CHAIN_LNS_FIELD_NUMBER: builtins.int
        USE_LOCAL_CHEAPEST_INSERTION_EXPENSIVE_CHAIN_LNS_FIELD_NUMBER: builtins.int
        USE_GLOBAL_CHEAPEST_INSERTION_CLOSE_NODES_LNS_FIELD_NUMBER: builtins.int
        USE_LOCAL_CHEAPEST_INSERTION_CLOSE_NODES_LNS_FIELD_NUMBER: builtins.int
        use_relocate: ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...
        use_relocate_pair: ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...
        use_light_relocate_pair: ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...
        use_relocate_neighbors: ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...
        use_relocate_subtrip: ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...
        use_exchange: ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...
        use_exchange_pair: ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...
        use_exchange_subtrip: ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...
        use_cross: ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...
        use_cross_exchange: ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...
        use_relocate_expensive_chain: ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...
        use_two_opt: ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...
        use_or_opt: ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...
        use_lin_kernighan: ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...
        use_tsp_opt: ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...
        use_make_active: ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...
        use_relocate_and_make_active: ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...
        use_make_inactive: ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...
        use_make_chain_inactive: ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...
        use_swap_active: ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...
        use_extended_swap_active: ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...
        use_node_pair_swap_active: ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...
        use_path_lns: ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...
        use_full_path_lns: ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...
        use_tsp_lns: ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...
        use_inactive_lns: ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...
        use_global_cheapest_insertion_path_lns: ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...
        use_local_cheapest_insertion_path_lns: ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...
        use_relocate_path_global_cheapest_insertion_insert_unperformed: ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...
        use_global_cheapest_insertion_expensive_chain_lns: ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...
        use_local_cheapest_insertion_expensive_chain_lns: ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...
        use_global_cheapest_insertion_close_nodes_lns: ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...
        use_local_cheapest_insertion_close_nodes_lns: ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...

        def __init__(self,
            *,
            use_relocate : ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...,
            use_relocate_pair : ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...,
            use_light_relocate_pair : ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...,
            use_relocate_neighbors : ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...,
            use_relocate_subtrip : ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...,
            use_exchange : ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...,
            use_exchange_pair : ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...,
            use_exchange_subtrip : ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...,
            use_cross : ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...,
            use_cross_exchange : ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...,
            use_relocate_expensive_chain : ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...,
            use_two_opt : ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...,
            use_or_opt : ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...,
            use_lin_kernighan : ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...,
            use_tsp_opt : ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...,
            use_make_active : ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...,
            use_relocate_and_make_active : ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...,
            use_make_inactive : ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...,
            use_make_chain_inactive : ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...,
            use_swap_active : ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...,
            use_extended_swap_active : ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...,
            use_node_pair_swap_active : ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...,
            use_path_lns : ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...,
            use_full_path_lns : ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...,
            use_tsp_lns : ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...,
            use_inactive_lns : ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...,
            use_global_cheapest_insertion_path_lns : ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...,
            use_local_cheapest_insertion_path_lns : ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...,
            use_relocate_path_global_cheapest_insertion_insert_unperformed : ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...,
            use_global_cheapest_insertion_expensive_chain_lns : ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...,
            use_local_cheapest_insertion_expensive_chain_lns : ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...,
            use_global_cheapest_insertion_close_nodes_lns : ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...,
            use_local_cheapest_insertion_close_nodes_lns : ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...,
            ) -> None: ...
        def ClearField(self, field_name: typing_extensions.Literal[u"use_cross",b"use_cross",u"use_cross_exchange",b"use_cross_exchange",u"use_exchange",b"use_exchange",u"use_exchange_pair",b"use_exchange_pair",u"use_exchange_subtrip",b"use_exchange_subtrip",u"use_extended_swap_active",b"use_extended_swap_active",u"use_full_path_lns",b"use_full_path_lns",u"use_global_cheapest_insertion_close_nodes_lns",b"use_global_cheapest_insertion_close_nodes_lns",u"use_global_cheapest_insertion_expensive_chain_lns",b"use_global_cheapest_insertion_expensive_chain_lns",u"use_global_cheapest_insertion_path_lns",b"use_global_cheapest_insertion_path_lns",u"use_inactive_lns",b"use_inactive_lns",u"use_light_relocate_pair",b"use_light_relocate_pair",u"use_lin_kernighan",b"use_lin_kernighan",u"use_local_cheapest_insertion_close_nodes_lns",b"use_local_cheapest_insertion_close_nodes_lns",u"use_local_cheapest_insertion_expensive_chain_lns",b"use_local_cheapest_insertion_expensive_chain_lns",u"use_local_cheapest_insertion_path_lns",b"use_local_cheapest_insertion_path_lns",u"use_make_active",b"use_make_active",u"use_make_chain_inactive",b"use_make_chain_inactive",u"use_make_inactive",b"use_make_inactive",u"use_node_pair_swap_active",b"use_node_pair_swap_active",u"use_or_opt",b"use_or_opt",u"use_path_lns",b"use_path_lns",u"use_relocate",b"use_relocate",u"use_relocate_and_make_active",b"use_relocate_and_make_active",u"use_relocate_expensive_chain",b"use_relocate_expensive_chain",u"use_relocate_neighbors",b"use_relocate_neighbors",u"use_relocate_pair",b"use_relocate_pair",u"use_relocate_path_global_cheapest_insertion_insert_unperformed",b"use_relocate_path_global_cheapest_insertion_insert_unperformed",u"use_relocate_subtrip",b"use_relocate_subtrip",u"use_swap_active",b"use_swap_active",u"use_tsp_lns",b"use_tsp_lns",u"use_tsp_opt",b"use_tsp_opt",u"use_two_opt",b"use_two_opt"]) -> None: ...

    class ImprovementSearchLimitParameters(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
        IMPROVEMENT_RATE_COEFFICIENT_FIELD_NUMBER: builtins.int
        IMPROVEMENT_RATE_SOLUTIONS_DISTANCE_FIELD_NUMBER: builtins.int
        improvement_rate_coefficient: builtins.float = ...
        improvement_rate_solutions_distance: builtins.int = ...

        def __init__(self,
            *,
            improvement_rate_coefficient : builtins.float = ...,
            improvement_rate_solutions_distance : builtins.int = ...,
            ) -> None: ...
        def ClearField(self, field_name: typing_extensions.Literal[u"improvement_rate_coefficient",b"improvement_rate_coefficient",u"improvement_rate_solutions_distance",b"improvement_rate_solutions_distance"]) -> None: ...

    FIRST_SOLUTION_STRATEGY_FIELD_NUMBER: builtins.int
    USE_UNFILTERED_FIRST_SOLUTION_STRATEGY_FIELD_NUMBER: builtins.int
    SAVINGS_NEIGHBORS_RATIO_FIELD_NUMBER: builtins.int
    SAVINGS_MAX_MEMORY_USAGE_BYTES_FIELD_NUMBER: builtins.int
    SAVINGS_ADD_REVERSE_ARCS_FIELD_NUMBER: builtins.int
    SAVINGS_ARC_COEFFICIENT_FIELD_NUMBER: builtins.int
    SAVINGS_PARALLEL_ROUTES_FIELD_NUMBER: builtins.int
    CHEAPEST_INSERTION_FARTHEST_SEEDS_RATIO_FIELD_NUMBER: builtins.int
    CHEAPEST_INSERTION_FIRST_SOLUTION_NEIGHBORS_RATIO_FIELD_NUMBER: builtins.int
    CHEAPEST_INSERTION_FIRST_SOLUTION_MIN_NEIGHBORS_FIELD_NUMBER: builtins.int
    CHEAPEST_INSERTION_LS_OPERATOR_NEIGHBORS_RATIO_FIELD_NUMBER: builtins.int
    CHEAPEST_INSERTION_LS_OPERATOR_MIN_NEIGHBORS_FIELD_NUMBER: builtins.int
    CHEAPEST_INSERTION_FIRST_SOLUTION_USE_NEIGHBORS_RATIO_FOR_INITIALIZATION_FIELD_NUMBER: builtins.int
    CHEAPEST_INSERTION_ADD_UNPERFORMED_ENTRIES_FIELD_NUMBER: builtins.int
    CHRISTOFIDES_USE_MINIMUM_MATCHING_FIELD_NUMBER: builtins.int
    LOCAL_SEARCH_OPERATORS_FIELD_NUMBER: builtins.int
    USE_MULTI_ARMED_BANDIT_CONCATENATE_OPERATORS_FIELD_NUMBER: builtins.int
    MULTI_ARMED_BANDIT_COMPOUND_OPERATOR_MEMORY_COEFFICIENT_FIELD_NUMBER: builtins.int
    MULTI_ARMED_BANDIT_COMPOUND_OPERATOR_EXPLORATION_COEFFICIENT_FIELD_NUMBER: builtins.int
    RELOCATE_EXPENSIVE_CHAIN_NUM_ARCS_TO_CONSIDER_FIELD_NUMBER: builtins.int
    HEURISTIC_EXPENSIVE_CHAIN_LNS_NUM_ARCS_TO_CONSIDER_FIELD_NUMBER: builtins.int
    HEURISTIC_CLOSE_NODES_LNS_NUM_NODES_FIELD_NUMBER: builtins.int
    LOCAL_SEARCH_METAHEURISTIC_FIELD_NUMBER: builtins.int
    GUIDED_LOCAL_SEARCH_LAMBDA_COEFFICIENT_FIELD_NUMBER: builtins.int
    USE_DEPTH_FIRST_SEARCH_FIELD_NUMBER: builtins.int
    USE_CP_FIELD_NUMBER: builtins.int
    USE_CP_SAT_FIELD_NUMBER: builtins.int
    USE_GENERALIZED_CP_SAT_FIELD_NUMBER: builtins.int
    SAT_PARAMETERS_FIELD_NUMBER: builtins.int
    CONTINUOUS_SCHEDULING_SOLVER_FIELD_NUMBER: builtins.int
    MIXED_INTEGER_SCHEDULING_SOLVER_FIELD_NUMBER: builtins.int
    OPTIMIZATION_STEP_FIELD_NUMBER: builtins.int
    NUMBER_OF_SOLUTIONS_TO_COLLECT_FIELD_NUMBER: builtins.int
    SOLUTION_LIMIT_FIELD_NUMBER: builtins.int
    TIME_LIMIT_FIELD_NUMBER: builtins.int
    LNS_TIME_LIMIT_FIELD_NUMBER: builtins.int
    IMPROVEMENT_LIMIT_PARAMETERS_FIELD_NUMBER: builtins.int
    USE_FULL_PROPAGATION_FIELD_NUMBER: builtins.int
    LOG_SEARCH_FIELD_NUMBER: builtins.int
    LOG_COST_SCALING_FACTOR_FIELD_NUMBER: builtins.int
    LOG_COST_OFFSET_FIELD_NUMBER: builtins.int
    LOG_TAG_FIELD_NUMBER: builtins.int
    first_solution_strategy: ortools.constraint_solver.routing_enums_pb2.FirstSolutionStrategy.Value.V = ...
    use_unfiltered_first_solution_strategy: builtins.bool = ...
    savings_neighbors_ratio: builtins.float = ...
    savings_max_memory_usage_bytes: builtins.float = ...
    savings_add_reverse_arcs: builtins.bool = ...
    savings_arc_coefficient: builtins.float = ...
    savings_parallel_routes: builtins.bool = ...
    cheapest_insertion_farthest_seeds_ratio: builtins.float = ...
    cheapest_insertion_first_solution_neighbors_ratio: builtins.float = ...
    cheapest_insertion_first_solution_min_neighbors: builtins.int = ...
    cheapest_insertion_ls_operator_neighbors_ratio: builtins.float = ...
    cheapest_insertion_ls_operator_min_neighbors: builtins.int = ...
    cheapest_insertion_first_solution_use_neighbors_ratio_for_initialization: builtins.bool = ...
    cheapest_insertion_add_unperformed_entries: builtins.bool = ...
    christofides_use_minimum_matching: builtins.bool = ...
    use_multi_armed_bandit_concatenate_operators: builtins.bool = ...
    multi_armed_bandit_compound_operator_memory_coefficient: builtins.float = ...
    multi_armed_bandit_compound_operator_exploration_coefficient: builtins.float = ...
    relocate_expensive_chain_num_arcs_to_consider: builtins.int = ...
    heuristic_expensive_chain_lns_num_arcs_to_consider: builtins.int = ...
    heuristic_close_nodes_lns_num_nodes: builtins.int = ...
    local_search_metaheuristic: ortools.constraint_solver.routing_enums_pb2.LocalSearchMetaheuristic.Value.V = ...
    guided_local_search_lambda_coefficient: builtins.float = ...
    use_depth_first_search: builtins.bool = ...
    use_cp: ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...
    use_cp_sat: ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...
    use_generalized_cp_sat: ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...
    continuous_scheduling_solver: global___RoutingSearchParameters.SchedulingSolver.V = ...
    mixed_integer_scheduling_solver: global___RoutingSearchParameters.SchedulingSolver.V = ...
    optimization_step: builtins.float = ...
    number_of_solutions_to_collect: builtins.int = ...
    solution_limit: builtins.int = ...
    use_full_propagation: builtins.bool = ...
    log_search: builtins.bool = ...
    log_cost_scaling_factor: builtins.float = ...
    log_cost_offset: builtins.float = ...
    log_tag: typing.Text = ...

    @property
    def local_search_operators(self) -> global___RoutingSearchParameters.LocalSearchNeighborhoodOperators: ...

    @property
    def sat_parameters(self) -> ortools.sat.sat_parameters_pb2.SatParameters: ...

    @property
    def time_limit(self) -> google.protobuf.duration_pb2.Duration: ...

    @property
    def lns_time_limit(self) -> google.protobuf.duration_pb2.Duration: ...

    @property
    def improvement_limit_parameters(self) -> global___RoutingSearchParameters.ImprovementSearchLimitParameters: ...

    def __init__(self,
        *,
        first_solution_strategy : ortools.constraint_solver.routing_enums_pb2.FirstSolutionStrategy.Value.V = ...,
        use_unfiltered_first_solution_strategy : builtins.bool = ...,
        savings_neighbors_ratio : builtins.float = ...,
        savings_max_memory_usage_bytes : builtins.float = ...,
        savings_add_reverse_arcs : builtins.bool = ...,
        savings_arc_coefficient : builtins.float = ...,
        savings_parallel_routes : builtins.bool = ...,
        cheapest_insertion_farthest_seeds_ratio : builtins.float = ...,
        cheapest_insertion_first_solution_neighbors_ratio : builtins.float = ...,
        cheapest_insertion_first_solution_min_neighbors : builtins.int = ...,
        cheapest_insertion_ls_operator_neighbors_ratio : builtins.float = ...,
        cheapest_insertion_ls_operator_min_neighbors : builtins.int = ...,
        cheapest_insertion_first_solution_use_neighbors_ratio_for_initialization : builtins.bool = ...,
        cheapest_insertion_add_unperformed_entries : builtins.bool = ...,
        christofides_use_minimum_matching : builtins.bool = ...,
        local_search_operators : typing.Optional[global___RoutingSearchParameters.LocalSearchNeighborhoodOperators] = ...,
        use_multi_armed_bandit_concatenate_operators : builtins.bool = ...,
        multi_armed_bandit_compound_operator_memory_coefficient : builtins.float = ...,
        multi_armed_bandit_compound_operator_exploration_coefficient : builtins.float = ...,
        relocate_expensive_chain_num_arcs_to_consider : builtins.int = ...,
        heuristic_expensive_chain_lns_num_arcs_to_consider : builtins.int = ...,
        heuristic_close_nodes_lns_num_nodes : builtins.int = ...,
        local_search_metaheuristic : ortools.constraint_solver.routing_enums_pb2.LocalSearchMetaheuristic.Value.V = ...,
        guided_local_search_lambda_coefficient : builtins.float = ...,
        use_depth_first_search : builtins.bool = ...,
        use_cp : ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...,
        use_cp_sat : ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...,
        use_generalized_cp_sat : ortools.util.optional_boolean_pb2.OptionalBoolean.V = ...,
        sat_parameters : typing.Optional[ortools.sat.sat_parameters_pb2.SatParameters] = ...,
        continuous_scheduling_solver : global___RoutingSearchParameters.SchedulingSolver.V = ...,
        mixed_integer_scheduling_solver : global___RoutingSearchParameters.SchedulingSolver.V = ...,
        optimization_step : builtins.float = ...,
        number_of_solutions_to_collect : builtins.int = ...,
        solution_limit : builtins.int = ...,
        time_limit : typing.Optional[google.protobuf.duration_pb2.Duration] = ...,
        lns_time_limit : typing.Optional[google.protobuf.duration_pb2.Duration] = ...,
        improvement_limit_parameters : typing.Optional[global___RoutingSearchParameters.ImprovementSearchLimitParameters] = ...,
        use_full_propagation : builtins.bool = ...,
        log_search : builtins.bool = ...,
        log_cost_scaling_factor : builtins.float = ...,
        log_cost_offset : builtins.float = ...,
        log_tag : typing.Text = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"improvement_limit_parameters",b"improvement_limit_parameters",u"lns_time_limit",b"lns_time_limit",u"local_search_operators",b"local_search_operators",u"sat_parameters",b"sat_parameters",u"time_limit",b"time_limit"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"cheapest_insertion_add_unperformed_entries",b"cheapest_insertion_add_unperformed_entries",u"cheapest_insertion_farthest_seeds_ratio",b"cheapest_insertion_farthest_seeds_ratio",u"cheapest_insertion_first_solution_min_neighbors",b"cheapest_insertion_first_solution_min_neighbors",u"cheapest_insertion_first_solution_neighbors_ratio",b"cheapest_insertion_first_solution_neighbors_ratio",u"cheapest_insertion_first_solution_use_neighbors_ratio_for_initialization",b"cheapest_insertion_first_solution_use_neighbors_ratio_for_initialization",u"cheapest_insertion_ls_operator_min_neighbors",b"cheapest_insertion_ls_operator_min_neighbors",u"cheapest_insertion_ls_operator_neighbors_ratio",b"cheapest_insertion_ls_operator_neighbors_ratio",u"christofides_use_minimum_matching",b"christofides_use_minimum_matching",u"continuous_scheduling_solver",b"continuous_scheduling_solver",u"first_solution_strategy",b"first_solution_strategy",u"guided_local_search_lambda_coefficient",b"guided_local_search_lambda_coefficient",u"heuristic_close_nodes_lns_num_nodes",b"heuristic_close_nodes_lns_num_nodes",u"heuristic_expensive_chain_lns_num_arcs_to_consider",b"heuristic_expensive_chain_lns_num_arcs_to_consider",u"improvement_limit_parameters",b"improvement_limit_parameters",u"lns_time_limit",b"lns_time_limit",u"local_search_metaheuristic",b"local_search_metaheuristic",u"local_search_operators",b"local_search_operators",u"log_cost_offset",b"log_cost_offset",u"log_cost_scaling_factor",b"log_cost_scaling_factor",u"log_search",b"log_search",u"log_tag",b"log_tag",u"mixed_integer_scheduling_solver",b"mixed_integer_scheduling_solver",u"multi_armed_bandit_compound_operator_exploration_coefficient",b"multi_armed_bandit_compound_operator_exploration_coefficient",u"multi_armed_bandit_compound_operator_memory_coefficient",b"multi_armed_bandit_compound_operator_memory_coefficient",u"number_of_solutions_to_collect",b"number_of_solutions_to_collect",u"optimization_step",b"optimization_step",u"relocate_expensive_chain_num_arcs_to_consider",b"relocate_expensive_chain_num_arcs_to_consider",u"sat_parameters",b"sat_parameters",u"savings_add_reverse_arcs",b"savings_add_reverse_arcs",u"savings_arc_coefficient",b"savings_arc_coefficient",u"savings_max_memory_usage_bytes",b"savings_max_memory_usage_bytes",u"savings_neighbors_ratio",b"savings_neighbors_ratio",u"savings_parallel_routes",b"savings_parallel_routes",u"solution_limit",b"solution_limit",u"time_limit",b"time_limit",u"use_cp",b"use_cp",u"use_cp_sat",b"use_cp_sat",u"use_depth_first_search",b"use_depth_first_search",u"use_full_propagation",b"use_full_propagation",u"use_generalized_cp_sat",b"use_generalized_cp_sat",u"use_multi_armed_bandit_concatenate_operators",b"use_multi_armed_bandit_concatenate_operators",u"use_unfiltered_first_solution_strategy",b"use_unfiltered_first_solution_strategy"]) -> None: ...
global___RoutingSearchParameters = RoutingSearchParameters

class RoutingModelParameters(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    SOLVER_PARAMETERS_FIELD_NUMBER: builtins.int
    REDUCE_VEHICLE_COST_MODEL_FIELD_NUMBER: builtins.int
    MAX_CALLBACK_CACHE_SIZE_FIELD_NUMBER: builtins.int
    reduce_vehicle_cost_model: builtins.bool = ...
    max_callback_cache_size: builtins.int = ...

    @property
    def solver_parameters(self) -> ortools.constraint_solver.solver_parameters_pb2.ConstraintSolverParameters: ...

    def __init__(self,
        *,
        solver_parameters : typing.Optional[ortools.constraint_solver.solver_parameters_pb2.ConstraintSolverParameters] = ...,
        reduce_vehicle_cost_model : builtins.bool = ...,
        max_callback_cache_size : builtins.int = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"solver_parameters",b"solver_parameters"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"max_callback_cache_size",b"max_callback_cache_size",u"reduce_vehicle_cost_model",b"reduce_vehicle_cost_model",u"solver_parameters",b"solver_parameters"]) -> None: ...
global___RoutingModelParameters = RoutingModelParameters
