"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
"""
import builtins
import google.protobuf.descriptor
import google.protobuf.internal.containers
import google.protobuf.internal.enum_type_wrapper
import google.protobuf.message
import typing
import typing_extensions

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

global___CpSolverStatus = CpSolverStatus
class _CpSolverStatus(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[CpSolverStatus.V], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor = ...
    UNKNOWN = CpSolverStatus.V(0)
    MODEL_INVALID = CpSolverStatus.V(1)
    FEASIBLE = CpSolverStatus.V(2)
    INFEASIBLE = CpSolverStatus.V(3)
    OPTIMAL = CpSolverStatus.V(4)
class CpSolverStatus(metaclass=_CpSolverStatus):
    V = typing.NewType('V', builtins.int)
UNKNOWN = CpSolverStatus.V(0)
MODEL_INVALID = CpSolverStatus.V(1)
FEASIBLE = CpSolverStatus.V(2)
INFEASIBLE = CpSolverStatus.V(3)
OPTIMAL = CpSolverStatus.V(4)

class IntegerVariableProto(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    NAME_FIELD_NUMBER: builtins.int
    DOMAIN_FIELD_NUMBER: builtins.int
    name: typing.Text = ...
    domain: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int] = ...

    def __init__(self,
        *,
        name : typing.Text = ...,
        domain : typing.Optional[typing.Iterable[builtins.int]] = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"domain",b"domain",u"name",b"name"]) -> None: ...
global___IntegerVariableProto = IntegerVariableProto

class BoolArgumentProto(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    LITERALS_FIELD_NUMBER: builtins.int
    literals: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int] = ...

    def __init__(self,
        *,
        literals : typing.Optional[typing.Iterable[builtins.int]] = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"literals",b"literals"]) -> None: ...
global___BoolArgumentProto = BoolArgumentProto

class LinearExpressionProto(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    VARS_FIELD_NUMBER: builtins.int
    COEFFS_FIELD_NUMBER: builtins.int
    OFFSET_FIELD_NUMBER: builtins.int
    vars: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int] = ...
    coeffs: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int] = ...
    offset: builtins.int = ...

    def __init__(self,
        *,
        vars : typing.Optional[typing.Iterable[builtins.int]] = ...,
        coeffs : typing.Optional[typing.Iterable[builtins.int]] = ...,
        offset : builtins.int = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"coeffs",b"coeffs",u"offset",b"offset",u"vars",b"vars"]) -> None: ...
global___LinearExpressionProto = LinearExpressionProto

class LinearArgumentProto(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    TARGET_FIELD_NUMBER: builtins.int
    EXPRS_FIELD_NUMBER: builtins.int

    @property
    def target(self) -> global___LinearExpressionProto: ...

    @property
    def exprs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___LinearExpressionProto]: ...

    def __init__(self,
        *,
        target : typing.Optional[global___LinearExpressionProto] = ...,
        exprs : typing.Optional[typing.Iterable[global___LinearExpressionProto]] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"target",b"target"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"exprs",b"exprs",u"target",b"target"]) -> None: ...
global___LinearArgumentProto = LinearArgumentProto

class AllDifferentConstraintProto(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    EXPRS_FIELD_NUMBER: builtins.int

    @property
    def exprs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___LinearExpressionProto]: ...

    def __init__(self,
        *,
        exprs : typing.Optional[typing.Iterable[global___LinearExpressionProto]] = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"exprs",b"exprs"]) -> None: ...
global___AllDifferentConstraintProto = AllDifferentConstraintProto

class LinearConstraintProto(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    VARS_FIELD_NUMBER: builtins.int
    COEFFS_FIELD_NUMBER: builtins.int
    DOMAIN_FIELD_NUMBER: builtins.int
    vars: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int] = ...
    coeffs: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int] = ...
    domain: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int] = ...

    def __init__(self,
        *,
        vars : typing.Optional[typing.Iterable[builtins.int]] = ...,
        coeffs : typing.Optional[typing.Iterable[builtins.int]] = ...,
        domain : typing.Optional[typing.Iterable[builtins.int]] = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"coeffs",b"coeffs",u"domain",b"domain",u"vars",b"vars"]) -> None: ...
global___LinearConstraintProto = LinearConstraintProto

class ElementConstraintProto(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    INDEX_FIELD_NUMBER: builtins.int
    TARGET_FIELD_NUMBER: builtins.int
    VARS_FIELD_NUMBER: builtins.int
    index: builtins.int = ...
    target: builtins.int = ...
    vars: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int] = ...

    def __init__(self,
        *,
        index : builtins.int = ...,
        target : builtins.int = ...,
        vars : typing.Optional[typing.Iterable[builtins.int]] = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"index",b"index",u"target",b"target",u"vars",b"vars"]) -> None: ...
global___ElementConstraintProto = ElementConstraintProto

class IntervalConstraintProto(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    START_FIELD_NUMBER: builtins.int
    END_FIELD_NUMBER: builtins.int
    SIZE_FIELD_NUMBER: builtins.int

    @property
    def start(self) -> global___LinearExpressionProto: ...

    @property
    def end(self) -> global___LinearExpressionProto: ...

    @property
    def size(self) -> global___LinearExpressionProto: ...

    def __init__(self,
        *,
        start : typing.Optional[global___LinearExpressionProto] = ...,
        end : typing.Optional[global___LinearExpressionProto] = ...,
        size : typing.Optional[global___LinearExpressionProto] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"end",b"end",u"size",b"size",u"start",b"start"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"end",b"end",u"size",b"size",u"start",b"start"]) -> None: ...
global___IntervalConstraintProto = IntervalConstraintProto

class NoOverlapConstraintProto(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    INTERVALS_FIELD_NUMBER: builtins.int
    intervals: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int] = ...

    def __init__(self,
        *,
        intervals : typing.Optional[typing.Iterable[builtins.int]] = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"intervals",b"intervals"]) -> None: ...
global___NoOverlapConstraintProto = NoOverlapConstraintProto

class NoOverlap2DConstraintProto(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    X_INTERVALS_FIELD_NUMBER: builtins.int
    Y_INTERVALS_FIELD_NUMBER: builtins.int
    BOXES_WITH_NULL_AREA_CAN_OVERLAP_FIELD_NUMBER: builtins.int
    x_intervals: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int] = ...
    y_intervals: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int] = ...
    boxes_with_null_area_can_overlap: builtins.bool = ...

    def __init__(self,
        *,
        x_intervals : typing.Optional[typing.Iterable[builtins.int]] = ...,
        y_intervals : typing.Optional[typing.Iterable[builtins.int]] = ...,
        boxes_with_null_area_can_overlap : builtins.bool = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"boxes_with_null_area_can_overlap",b"boxes_with_null_area_can_overlap",u"x_intervals",b"x_intervals",u"y_intervals",b"y_intervals"]) -> None: ...
global___NoOverlap2DConstraintProto = NoOverlap2DConstraintProto

class CumulativeConstraintProto(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    CAPACITY_FIELD_NUMBER: builtins.int
    INTERVALS_FIELD_NUMBER: builtins.int
    DEMANDS_FIELD_NUMBER: builtins.int
    intervals: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int] = ...

    @property
    def capacity(self) -> global___LinearExpressionProto: ...

    @property
    def demands(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___LinearExpressionProto]: ...

    def __init__(self,
        *,
        capacity : typing.Optional[global___LinearExpressionProto] = ...,
        intervals : typing.Optional[typing.Iterable[builtins.int]] = ...,
        demands : typing.Optional[typing.Iterable[global___LinearExpressionProto]] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"capacity",b"capacity"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"capacity",b"capacity",u"demands",b"demands",u"intervals",b"intervals"]) -> None: ...
global___CumulativeConstraintProto = CumulativeConstraintProto

class ReservoirConstraintProto(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    MIN_LEVEL_FIELD_NUMBER: builtins.int
    MAX_LEVEL_FIELD_NUMBER: builtins.int
    TIME_EXPRS_FIELD_NUMBER: builtins.int
    LEVEL_CHANGES_FIELD_NUMBER: builtins.int
    ACTIVE_LITERALS_FIELD_NUMBER: builtins.int
    min_level: builtins.int = ...
    max_level: builtins.int = ...
    level_changes: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int] = ...
    active_literals: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int] = ...

    @property
    def time_exprs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___LinearExpressionProto]: ...

    def __init__(self,
        *,
        min_level : builtins.int = ...,
        max_level : builtins.int = ...,
        time_exprs : typing.Optional[typing.Iterable[global___LinearExpressionProto]] = ...,
        level_changes : typing.Optional[typing.Iterable[builtins.int]] = ...,
        active_literals : typing.Optional[typing.Iterable[builtins.int]] = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"active_literals",b"active_literals",u"level_changes",b"level_changes",u"max_level",b"max_level",u"min_level",b"min_level",u"time_exprs",b"time_exprs"]) -> None: ...
global___ReservoirConstraintProto = ReservoirConstraintProto

class CircuitConstraintProto(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    TAILS_FIELD_NUMBER: builtins.int
    HEADS_FIELD_NUMBER: builtins.int
    LITERALS_FIELD_NUMBER: builtins.int
    tails: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int] = ...
    heads: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int] = ...
    literals: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int] = ...

    def __init__(self,
        *,
        tails : typing.Optional[typing.Iterable[builtins.int]] = ...,
        heads : typing.Optional[typing.Iterable[builtins.int]] = ...,
        literals : typing.Optional[typing.Iterable[builtins.int]] = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"heads",b"heads",u"literals",b"literals",u"tails",b"tails"]) -> None: ...
global___CircuitConstraintProto = CircuitConstraintProto

class RoutesConstraintProto(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    TAILS_FIELD_NUMBER: builtins.int
    HEADS_FIELD_NUMBER: builtins.int
    LITERALS_FIELD_NUMBER: builtins.int
    DEMANDS_FIELD_NUMBER: builtins.int
    CAPACITY_FIELD_NUMBER: builtins.int
    tails: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int] = ...
    heads: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int] = ...
    literals: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int] = ...
    demands: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int] = ...
    capacity: builtins.int = ...

    def __init__(self,
        *,
        tails : typing.Optional[typing.Iterable[builtins.int]] = ...,
        heads : typing.Optional[typing.Iterable[builtins.int]] = ...,
        literals : typing.Optional[typing.Iterable[builtins.int]] = ...,
        demands : typing.Optional[typing.Iterable[builtins.int]] = ...,
        capacity : builtins.int = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"capacity",b"capacity",u"demands",b"demands",u"heads",b"heads",u"literals",b"literals",u"tails",b"tails"]) -> None: ...
global___RoutesConstraintProto = RoutesConstraintProto

class TableConstraintProto(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    VARS_FIELD_NUMBER: builtins.int
    VALUES_FIELD_NUMBER: builtins.int
    NEGATED_FIELD_NUMBER: builtins.int
    vars: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int] = ...
    values: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int] = ...
    negated: builtins.bool = ...

    def __init__(self,
        *,
        vars : typing.Optional[typing.Iterable[builtins.int]] = ...,
        values : typing.Optional[typing.Iterable[builtins.int]] = ...,
        negated : builtins.bool = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"negated",b"negated",u"values",b"values",u"vars",b"vars"]) -> None: ...
global___TableConstraintProto = TableConstraintProto

class InverseConstraintProto(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    F_DIRECT_FIELD_NUMBER: builtins.int
    F_INVERSE_FIELD_NUMBER: builtins.int
    f_direct: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int] = ...
    f_inverse: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int] = ...

    def __init__(self,
        *,
        f_direct : typing.Optional[typing.Iterable[builtins.int]] = ...,
        f_inverse : typing.Optional[typing.Iterable[builtins.int]] = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"f_direct",b"f_direct",u"f_inverse",b"f_inverse"]) -> None: ...
global___InverseConstraintProto = InverseConstraintProto

class AutomatonConstraintProto(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    STARTING_STATE_FIELD_NUMBER: builtins.int
    FINAL_STATES_FIELD_NUMBER: builtins.int
    TRANSITION_TAIL_FIELD_NUMBER: builtins.int
    TRANSITION_HEAD_FIELD_NUMBER: builtins.int
    TRANSITION_LABEL_FIELD_NUMBER: builtins.int
    VARS_FIELD_NUMBER: builtins.int
    starting_state: builtins.int = ...
    final_states: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int] = ...
    transition_tail: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int] = ...
    transition_head: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int] = ...
    transition_label: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int] = ...
    vars: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int] = ...

    def __init__(self,
        *,
        starting_state : builtins.int = ...,
        final_states : typing.Optional[typing.Iterable[builtins.int]] = ...,
        transition_tail : typing.Optional[typing.Iterable[builtins.int]] = ...,
        transition_head : typing.Optional[typing.Iterable[builtins.int]] = ...,
        transition_label : typing.Optional[typing.Iterable[builtins.int]] = ...,
        vars : typing.Optional[typing.Iterable[builtins.int]] = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"final_states",b"final_states",u"starting_state",b"starting_state",u"transition_head",b"transition_head",u"transition_label",b"transition_label",u"transition_tail",b"transition_tail",u"vars",b"vars"]) -> None: ...
global___AutomatonConstraintProto = AutomatonConstraintProto

class ListOfVariablesProto(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    VARS_FIELD_NUMBER: builtins.int
    vars: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int] = ...

    def __init__(self,
        *,
        vars : typing.Optional[typing.Iterable[builtins.int]] = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"vars",b"vars"]) -> None: ...
global___ListOfVariablesProto = ListOfVariablesProto

class ConstraintProto(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    NAME_FIELD_NUMBER: builtins.int
    ENFORCEMENT_LITERAL_FIELD_NUMBER: builtins.int
    BOOL_OR_FIELD_NUMBER: builtins.int
    BOOL_AND_FIELD_NUMBER: builtins.int
    AT_MOST_ONE_FIELD_NUMBER: builtins.int
    EXACTLY_ONE_FIELD_NUMBER: builtins.int
    BOOL_XOR_FIELD_NUMBER: builtins.int
    INT_DIV_FIELD_NUMBER: builtins.int
    INT_MOD_FIELD_NUMBER: builtins.int
    INT_PROD_FIELD_NUMBER: builtins.int
    LIN_MAX_FIELD_NUMBER: builtins.int
    LINEAR_FIELD_NUMBER: builtins.int
    ALL_DIFF_FIELD_NUMBER: builtins.int
    ELEMENT_FIELD_NUMBER: builtins.int
    CIRCUIT_FIELD_NUMBER: builtins.int
    ROUTES_FIELD_NUMBER: builtins.int
    TABLE_FIELD_NUMBER: builtins.int
    AUTOMATON_FIELD_NUMBER: builtins.int
    INVERSE_FIELD_NUMBER: builtins.int
    RESERVOIR_FIELD_NUMBER: builtins.int
    INTERVAL_FIELD_NUMBER: builtins.int
    NO_OVERLAP_FIELD_NUMBER: builtins.int
    NO_OVERLAP_2D_FIELD_NUMBER: builtins.int
    CUMULATIVE_FIELD_NUMBER: builtins.int
    DUMMY_CONSTRAINT_FIELD_NUMBER: builtins.int
    name: typing.Text = ...
    enforcement_literal: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int] = ...

    @property
    def bool_or(self) -> global___BoolArgumentProto: ...

    @property
    def bool_and(self) -> global___BoolArgumentProto: ...

    @property
    def at_most_one(self) -> global___BoolArgumentProto: ...

    @property
    def exactly_one(self) -> global___BoolArgumentProto: ...

    @property
    def bool_xor(self) -> global___BoolArgumentProto: ...

    @property
    def int_div(self) -> global___LinearArgumentProto: ...

    @property
    def int_mod(self) -> global___LinearArgumentProto: ...

    @property
    def int_prod(self) -> global___LinearArgumentProto: ...

    @property
    def lin_max(self) -> global___LinearArgumentProto: ...

    @property
    def linear(self) -> global___LinearConstraintProto: ...

    @property
    def all_diff(self) -> global___AllDifferentConstraintProto: ...

    @property
    def element(self) -> global___ElementConstraintProto: ...

    @property
    def circuit(self) -> global___CircuitConstraintProto: ...

    @property
    def routes(self) -> global___RoutesConstraintProto: ...

    @property
    def table(self) -> global___TableConstraintProto: ...

    @property
    def automaton(self) -> global___AutomatonConstraintProto: ...

    @property
    def inverse(self) -> global___InverseConstraintProto: ...

    @property
    def reservoir(self) -> global___ReservoirConstraintProto: ...

    @property
    def interval(self) -> global___IntervalConstraintProto: ...

    @property
    def no_overlap(self) -> global___NoOverlapConstraintProto: ...

    @property
    def no_overlap_2d(self) -> global___NoOverlap2DConstraintProto: ...

    @property
    def cumulative(self) -> global___CumulativeConstraintProto: ...

    @property
    def dummy_constraint(self) -> global___ListOfVariablesProto: ...

    def __init__(self,
        *,
        name : typing.Text = ...,
        enforcement_literal : typing.Optional[typing.Iterable[builtins.int]] = ...,
        bool_or : typing.Optional[global___BoolArgumentProto] = ...,
        bool_and : typing.Optional[global___BoolArgumentProto] = ...,
        at_most_one : typing.Optional[global___BoolArgumentProto] = ...,
        exactly_one : typing.Optional[global___BoolArgumentProto] = ...,
        bool_xor : typing.Optional[global___BoolArgumentProto] = ...,
        int_div : typing.Optional[global___LinearArgumentProto] = ...,
        int_mod : typing.Optional[global___LinearArgumentProto] = ...,
        int_prod : typing.Optional[global___LinearArgumentProto] = ...,
        lin_max : typing.Optional[global___LinearArgumentProto] = ...,
        linear : typing.Optional[global___LinearConstraintProto] = ...,
        all_diff : typing.Optional[global___AllDifferentConstraintProto] = ...,
        element : typing.Optional[global___ElementConstraintProto] = ...,
        circuit : typing.Optional[global___CircuitConstraintProto] = ...,
        routes : typing.Optional[global___RoutesConstraintProto] = ...,
        table : typing.Optional[global___TableConstraintProto] = ...,
        automaton : typing.Optional[global___AutomatonConstraintProto] = ...,
        inverse : typing.Optional[global___InverseConstraintProto] = ...,
        reservoir : typing.Optional[global___ReservoirConstraintProto] = ...,
        interval : typing.Optional[global___IntervalConstraintProto] = ...,
        no_overlap : typing.Optional[global___NoOverlapConstraintProto] = ...,
        no_overlap_2d : typing.Optional[global___NoOverlap2DConstraintProto] = ...,
        cumulative : typing.Optional[global___CumulativeConstraintProto] = ...,
        dummy_constraint : typing.Optional[global___ListOfVariablesProto] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"all_diff",b"all_diff",u"at_most_one",b"at_most_one",u"automaton",b"automaton",u"bool_and",b"bool_and",u"bool_or",b"bool_or",u"bool_xor",b"bool_xor",u"circuit",b"circuit",u"constraint",b"constraint",u"cumulative",b"cumulative",u"dummy_constraint",b"dummy_constraint",u"element",b"element",u"exactly_one",b"exactly_one",u"int_div",b"int_div",u"int_mod",b"int_mod",u"int_prod",b"int_prod",u"interval",b"interval",u"inverse",b"inverse",u"lin_max",b"lin_max",u"linear",b"linear",u"no_overlap",b"no_overlap",u"no_overlap_2d",b"no_overlap_2d",u"reservoir",b"reservoir",u"routes",b"routes",u"table",b"table"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"all_diff",b"all_diff",u"at_most_one",b"at_most_one",u"automaton",b"automaton",u"bool_and",b"bool_and",u"bool_or",b"bool_or",u"bool_xor",b"bool_xor",u"circuit",b"circuit",u"constraint",b"constraint",u"cumulative",b"cumulative",u"dummy_constraint",b"dummy_constraint",u"element",b"element",u"enforcement_literal",b"enforcement_literal",u"exactly_one",b"exactly_one",u"int_div",b"int_div",u"int_mod",b"int_mod",u"int_prod",b"int_prod",u"interval",b"interval",u"inverse",b"inverse",u"lin_max",b"lin_max",u"linear",b"linear",u"name",b"name",u"no_overlap",b"no_overlap",u"no_overlap_2d",b"no_overlap_2d",u"reservoir",b"reservoir",u"routes",b"routes",u"table",b"table"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal[u"constraint",b"constraint"]) -> typing_extensions.Literal["bool_or","bool_and","at_most_one","exactly_one","bool_xor","int_div","int_mod","int_prod","lin_max","linear","all_diff","element","circuit","routes","table","automaton","inverse","reservoir","interval","no_overlap","no_overlap_2d","cumulative","dummy_constraint"]: ...
global___ConstraintProto = ConstraintProto

class CpObjectiveProto(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    VARS_FIELD_NUMBER: builtins.int
    COEFFS_FIELD_NUMBER: builtins.int
    OFFSET_FIELD_NUMBER: builtins.int
    SCALING_FACTOR_FIELD_NUMBER: builtins.int
    DOMAIN_FIELD_NUMBER: builtins.int
    SCALING_WAS_EXACT_FIELD_NUMBER: builtins.int
    INTEGER_OFFSET_FIELD_NUMBER: builtins.int
    INTEGER_SCALING_FACTOR_FIELD_NUMBER: builtins.int
    vars: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int] = ...
    coeffs: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int] = ...
    offset: builtins.float = ...
    scaling_factor: builtins.float = ...
    domain: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int] = ...
    scaling_was_exact: builtins.bool = ...
    integer_offset: builtins.int = ...
    integer_scaling_factor: builtins.int = ...

    def __init__(self,
        *,
        vars : typing.Optional[typing.Iterable[builtins.int]] = ...,
        coeffs : typing.Optional[typing.Iterable[builtins.int]] = ...,
        offset : builtins.float = ...,
        scaling_factor : builtins.float = ...,
        domain : typing.Optional[typing.Iterable[builtins.int]] = ...,
        scaling_was_exact : builtins.bool = ...,
        integer_offset : builtins.int = ...,
        integer_scaling_factor : builtins.int = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"coeffs",b"coeffs",u"domain",b"domain",u"integer_offset",b"integer_offset",u"integer_scaling_factor",b"integer_scaling_factor",u"offset",b"offset",u"scaling_factor",b"scaling_factor",u"scaling_was_exact",b"scaling_was_exact",u"vars",b"vars"]) -> None: ...
global___CpObjectiveProto = CpObjectiveProto

class FloatObjectiveProto(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    VARS_FIELD_NUMBER: builtins.int
    COEFFS_FIELD_NUMBER: builtins.int
    OFFSET_FIELD_NUMBER: builtins.int
    MAXIMIZE_FIELD_NUMBER: builtins.int
    vars: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int] = ...
    coeffs: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float] = ...
    offset: builtins.float = ...
    maximize: builtins.bool = ...

    def __init__(self,
        *,
        vars : typing.Optional[typing.Iterable[builtins.int]] = ...,
        coeffs : typing.Optional[typing.Iterable[builtins.float]] = ...,
        offset : builtins.float = ...,
        maximize : builtins.bool = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"coeffs",b"coeffs",u"maximize",b"maximize",u"offset",b"offset",u"vars",b"vars"]) -> None: ...
global___FloatObjectiveProto = FloatObjectiveProto

class DecisionStrategyProto(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    class _VariableSelectionStrategy(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[VariableSelectionStrategy.V], builtins.type):
        DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor = ...
        CHOOSE_FIRST = DecisionStrategyProto.VariableSelectionStrategy.V(0)
        CHOOSE_LOWEST_MIN = DecisionStrategyProto.VariableSelectionStrategy.V(1)
        CHOOSE_HIGHEST_MAX = DecisionStrategyProto.VariableSelectionStrategy.V(2)
        CHOOSE_MIN_DOMAIN_SIZE = DecisionStrategyProto.VariableSelectionStrategy.V(3)
        CHOOSE_MAX_DOMAIN_SIZE = DecisionStrategyProto.VariableSelectionStrategy.V(4)
    class VariableSelectionStrategy(metaclass=_VariableSelectionStrategy):
        V = typing.NewType('V', builtins.int)
    CHOOSE_FIRST = DecisionStrategyProto.VariableSelectionStrategy.V(0)
    CHOOSE_LOWEST_MIN = DecisionStrategyProto.VariableSelectionStrategy.V(1)
    CHOOSE_HIGHEST_MAX = DecisionStrategyProto.VariableSelectionStrategy.V(2)
    CHOOSE_MIN_DOMAIN_SIZE = DecisionStrategyProto.VariableSelectionStrategy.V(3)
    CHOOSE_MAX_DOMAIN_SIZE = DecisionStrategyProto.VariableSelectionStrategy.V(4)

    class _DomainReductionStrategy(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[DomainReductionStrategy.V], builtins.type):
        DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor = ...
        SELECT_MIN_VALUE = DecisionStrategyProto.DomainReductionStrategy.V(0)
        SELECT_MAX_VALUE = DecisionStrategyProto.DomainReductionStrategy.V(1)
        SELECT_LOWER_HALF = DecisionStrategyProto.DomainReductionStrategy.V(2)
        SELECT_UPPER_HALF = DecisionStrategyProto.DomainReductionStrategy.V(3)
        SELECT_MEDIAN_VALUE = DecisionStrategyProto.DomainReductionStrategy.V(4)
    class DomainReductionStrategy(metaclass=_DomainReductionStrategy):
        V = typing.NewType('V', builtins.int)
    SELECT_MIN_VALUE = DecisionStrategyProto.DomainReductionStrategy.V(0)
    SELECT_MAX_VALUE = DecisionStrategyProto.DomainReductionStrategy.V(1)
    SELECT_LOWER_HALF = DecisionStrategyProto.DomainReductionStrategy.V(2)
    SELECT_UPPER_HALF = DecisionStrategyProto.DomainReductionStrategy.V(3)
    SELECT_MEDIAN_VALUE = DecisionStrategyProto.DomainReductionStrategy.V(4)

    class AffineTransformation(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
        INDEX_FIELD_NUMBER: builtins.int
        OFFSET_FIELD_NUMBER: builtins.int
        POSITIVE_COEFF_FIELD_NUMBER: builtins.int
        index: builtins.int = ...
        offset: builtins.int = ...
        positive_coeff: builtins.int = ...

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

    VARIABLES_FIELD_NUMBER: builtins.int
    VARIABLE_SELECTION_STRATEGY_FIELD_NUMBER: builtins.int
    DOMAIN_REDUCTION_STRATEGY_FIELD_NUMBER: builtins.int
    TRANSFORMATIONS_FIELD_NUMBER: builtins.int
    variables: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int] = ...
    variable_selection_strategy: global___DecisionStrategyProto.VariableSelectionStrategy.V = ...
    domain_reduction_strategy: global___DecisionStrategyProto.DomainReductionStrategy.V = ...

    @property
    def transformations(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___DecisionStrategyProto.AffineTransformation]: ...

    def __init__(self,
        *,
        variables : typing.Optional[typing.Iterable[builtins.int]] = ...,
        variable_selection_strategy : global___DecisionStrategyProto.VariableSelectionStrategy.V = ...,
        domain_reduction_strategy : global___DecisionStrategyProto.DomainReductionStrategy.V = ...,
        transformations : typing.Optional[typing.Iterable[global___DecisionStrategyProto.AffineTransformation]] = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"domain_reduction_strategy",b"domain_reduction_strategy",u"transformations",b"transformations",u"variable_selection_strategy",b"variable_selection_strategy",u"variables",b"variables"]) -> None: ...
global___DecisionStrategyProto = DecisionStrategyProto

class PartialVariableAssignment(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    VARS_FIELD_NUMBER: builtins.int
    VALUES_FIELD_NUMBER: builtins.int
    vars: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int] = ...
    values: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int] = ...

    def __init__(self,
        *,
        vars : typing.Optional[typing.Iterable[builtins.int]] = ...,
        values : typing.Optional[typing.Iterable[builtins.int]] = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"values",b"values",u"vars",b"vars"]) -> None: ...
global___PartialVariableAssignment = PartialVariableAssignment

class SparsePermutationProto(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    SUPPORT_FIELD_NUMBER: builtins.int
    CYCLE_SIZES_FIELD_NUMBER: builtins.int
    support: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int] = ...
    cycle_sizes: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int] = ...

    def __init__(self,
        *,
        support : typing.Optional[typing.Iterable[builtins.int]] = ...,
        cycle_sizes : typing.Optional[typing.Iterable[builtins.int]] = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"cycle_sizes",b"cycle_sizes",u"support",b"support"]) -> None: ...
global___SparsePermutationProto = SparsePermutationProto

class DenseMatrixProto(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    NUM_ROWS_FIELD_NUMBER: builtins.int
    NUM_COLS_FIELD_NUMBER: builtins.int
    ENTRIES_FIELD_NUMBER: builtins.int
    num_rows: builtins.int = ...
    num_cols: builtins.int = ...
    entries: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int] = ...

    def __init__(self,
        *,
        num_rows : builtins.int = ...,
        num_cols : builtins.int = ...,
        entries : typing.Optional[typing.Iterable[builtins.int]] = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"entries",b"entries",u"num_cols",b"num_cols",u"num_rows",b"num_rows"]) -> None: ...
global___DenseMatrixProto = DenseMatrixProto

class SymmetryProto(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    PERMUTATIONS_FIELD_NUMBER: builtins.int
    ORBITOPES_FIELD_NUMBER: builtins.int

    @property
    def permutations(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___SparsePermutationProto]: ...

    @property
    def orbitopes(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___DenseMatrixProto]: ...

    def __init__(self,
        *,
        permutations : typing.Optional[typing.Iterable[global___SparsePermutationProto]] = ...,
        orbitopes : typing.Optional[typing.Iterable[global___DenseMatrixProto]] = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"orbitopes",b"orbitopes",u"permutations",b"permutations"]) -> None: ...
global___SymmetryProto = SymmetryProto

class CpModelProto(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    NAME_FIELD_NUMBER: builtins.int
    VARIABLES_FIELD_NUMBER: builtins.int
    CONSTRAINTS_FIELD_NUMBER: builtins.int
    OBJECTIVE_FIELD_NUMBER: builtins.int
    FLOATING_POINT_OBJECTIVE_FIELD_NUMBER: builtins.int
    SEARCH_STRATEGY_FIELD_NUMBER: builtins.int
    SOLUTION_HINT_FIELD_NUMBER: builtins.int
    ASSUMPTIONS_FIELD_NUMBER: builtins.int
    SYMMETRY_FIELD_NUMBER: builtins.int
    name: typing.Text = ...
    assumptions: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int] = ...

    @property
    def variables(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___IntegerVariableProto]: ...

    @property
    def constraints(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ConstraintProto]: ...

    @property
    def objective(self) -> global___CpObjectiveProto: ...

    @property
    def floating_point_objective(self) -> global___FloatObjectiveProto: ...

    @property
    def search_strategy(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___DecisionStrategyProto]: ...

    @property
    def solution_hint(self) -> global___PartialVariableAssignment: ...

    @property
    def symmetry(self) -> global___SymmetryProto: ...

    def __init__(self,
        *,
        name : typing.Text = ...,
        variables : typing.Optional[typing.Iterable[global___IntegerVariableProto]] = ...,
        constraints : typing.Optional[typing.Iterable[global___ConstraintProto]] = ...,
        objective : typing.Optional[global___CpObjectiveProto] = ...,
        floating_point_objective : typing.Optional[global___FloatObjectiveProto] = ...,
        search_strategy : typing.Optional[typing.Iterable[global___DecisionStrategyProto]] = ...,
        solution_hint : typing.Optional[global___PartialVariableAssignment] = ...,
        assumptions : typing.Optional[typing.Iterable[builtins.int]] = ...,
        symmetry : typing.Optional[global___SymmetryProto] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"floating_point_objective",b"floating_point_objective",u"objective",b"objective",u"solution_hint",b"solution_hint",u"symmetry",b"symmetry"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"assumptions",b"assumptions",u"constraints",b"constraints",u"floating_point_objective",b"floating_point_objective",u"name",b"name",u"objective",b"objective",u"search_strategy",b"search_strategy",u"solution_hint",b"solution_hint",u"symmetry",b"symmetry",u"variables",b"variables"]) -> None: ...
global___CpModelProto = CpModelProto

class CpSolverSolution(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    VALUES_FIELD_NUMBER: builtins.int
    values: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int] = ...

    def __init__(self,
        *,
        values : typing.Optional[typing.Iterable[builtins.int]] = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"values",b"values"]) -> None: ...
global___CpSolverSolution = CpSolverSolution

class CpSolverResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    STATUS_FIELD_NUMBER: builtins.int
    SOLUTION_FIELD_NUMBER: builtins.int
    OBJECTIVE_VALUE_FIELD_NUMBER: builtins.int
    BEST_OBJECTIVE_BOUND_FIELD_NUMBER: builtins.int
    ADDITIONAL_SOLUTIONS_FIELD_NUMBER: builtins.int
    TIGHTENED_VARIABLES_FIELD_NUMBER: builtins.int
    SUFFICIENT_ASSUMPTIONS_FOR_INFEASIBILITY_FIELD_NUMBER: builtins.int
    INTEGER_OBJECTIVE_FIELD_NUMBER: builtins.int
    INNER_OBJECTIVE_LOWER_BOUND_FIELD_NUMBER: builtins.int
    NUM_BOOLEANS_FIELD_NUMBER: builtins.int
    NUM_CONFLICTS_FIELD_NUMBER: builtins.int
    NUM_BRANCHES_FIELD_NUMBER: builtins.int
    NUM_BINARY_PROPAGATIONS_FIELD_NUMBER: builtins.int
    NUM_INTEGER_PROPAGATIONS_FIELD_NUMBER: builtins.int
    NUM_RESTARTS_FIELD_NUMBER: builtins.int
    NUM_LP_ITERATIONS_FIELD_NUMBER: builtins.int
    WALL_TIME_FIELD_NUMBER: builtins.int
    USER_TIME_FIELD_NUMBER: builtins.int
    DETERMINISTIC_TIME_FIELD_NUMBER: builtins.int
    GAP_INTEGRAL_FIELD_NUMBER: builtins.int
    SOLUTION_INFO_FIELD_NUMBER: builtins.int
    SOLVE_LOG_FIELD_NUMBER: builtins.int
    status: global___CpSolverStatus.V = ...
    solution: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int] = ...
    objective_value: builtins.float = ...
    best_objective_bound: builtins.float = ...
    sufficient_assumptions_for_infeasibility: google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int] = ...
    inner_objective_lower_bound: builtins.int = ...
    num_booleans: builtins.int = ...
    num_conflicts: builtins.int = ...
    num_branches: builtins.int = ...
    num_binary_propagations: builtins.int = ...
    num_integer_propagations: builtins.int = ...
    num_restarts: builtins.int = ...
    num_lp_iterations: builtins.int = ...
    wall_time: builtins.float = ...
    user_time: builtins.float = ...
    deterministic_time: builtins.float = ...
    gap_integral: builtins.float = ...
    solution_info: typing.Text = ...
    solve_log: typing.Text = ...

    @property
    def additional_solutions(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___CpSolverSolution]: ...

    @property
    def tightened_variables(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___IntegerVariableProto]: ...

    @property
    def integer_objective(self) -> global___CpObjectiveProto: ...

    def __init__(self,
        *,
        status : global___CpSolverStatus.V = ...,
        solution : typing.Optional[typing.Iterable[builtins.int]] = ...,
        objective_value : builtins.float = ...,
        best_objective_bound : builtins.float = ...,
        additional_solutions : typing.Optional[typing.Iterable[global___CpSolverSolution]] = ...,
        tightened_variables : typing.Optional[typing.Iterable[global___IntegerVariableProto]] = ...,
        sufficient_assumptions_for_infeasibility : typing.Optional[typing.Iterable[builtins.int]] = ...,
        integer_objective : typing.Optional[global___CpObjectiveProto] = ...,
        inner_objective_lower_bound : builtins.int = ...,
        num_booleans : builtins.int = ...,
        num_conflicts : builtins.int = ...,
        num_branches : builtins.int = ...,
        num_binary_propagations : builtins.int = ...,
        num_integer_propagations : builtins.int = ...,
        num_restarts : builtins.int = ...,
        num_lp_iterations : builtins.int = ...,
        wall_time : builtins.float = ...,
        user_time : builtins.float = ...,
        deterministic_time : builtins.float = ...,
        gap_integral : builtins.float = ...,
        solution_info : typing.Text = ...,
        solve_log : typing.Text = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"integer_objective",b"integer_objective"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"additional_solutions",b"additional_solutions",u"best_objective_bound",b"best_objective_bound",u"deterministic_time",b"deterministic_time",u"gap_integral",b"gap_integral",u"inner_objective_lower_bound",b"inner_objective_lower_bound",u"integer_objective",b"integer_objective",u"num_binary_propagations",b"num_binary_propagations",u"num_booleans",b"num_booleans",u"num_branches",b"num_branches",u"num_conflicts",b"num_conflicts",u"num_integer_propagations",b"num_integer_propagations",u"num_lp_iterations",b"num_lp_iterations",u"num_restarts",b"num_restarts",u"objective_value",b"objective_value",u"solution",b"solution",u"solution_info",b"solution_info",u"solve_log",b"solve_log",u"status",b"status",u"sufficient_assumptions_for_infeasibility",b"sufficient_assumptions_for_infeasibility",u"tightened_variables",b"tightened_variables",u"user_time",b"user_time",u"wall_time",b"wall_time"]) -> None: ...
global___CpSolverResponse = CpSolverResponse
