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

from google.protobuf.internal.containers import (
    RepeatedCompositeFieldContainer as google___protobuf___internal___containers___RepeatedCompositeFieldContainer,
    RepeatedScalarFieldContainer as google___protobuf___internal___containers___RepeatedScalarFieldContainer,
)

from google.protobuf.internal.enum_type_wrapper import (
    _EnumTypeWrapper as google___protobuf___internal___enum_type_wrapper____EnumTypeWrapper,
)

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

from typing import (
    Iterable as typing___Iterable,
    NewType as typing___NewType,
    Optional as typing___Optional,
    Text as typing___Text,
    Union as typing___Union,
    cast as typing___cast,
)

from typing_extensions import (
    Literal as typing_extensions___Literal,
)


builtin___bool = bool
builtin___bytes = bytes
builtin___float = float
builtin___int = int
if sys.version_info < (3,):
    builtin___buffer = buffer
    builtin___unicode = unicode


DESCRIPTOR: google___protobuf___descriptor___FileDescriptor = ...

CpSolverStatusValue = typing___NewType('CpSolverStatusValue', builtin___int)
type___CpSolverStatusValue = CpSolverStatusValue
CpSolverStatus: _CpSolverStatus
class _CpSolverStatus(google___protobuf___internal___enum_type_wrapper____EnumTypeWrapper[CpSolverStatusValue]):
    DESCRIPTOR: google___protobuf___descriptor___EnumDescriptor = ...
    UNKNOWN = typing___cast(CpSolverStatusValue, 0)
    MODEL_INVALID = typing___cast(CpSolverStatusValue, 1)
    FEASIBLE = typing___cast(CpSolverStatusValue, 2)
    INFEASIBLE = typing___cast(CpSolverStatusValue, 3)
    OPTIMAL = typing___cast(CpSolverStatusValue, 4)
UNKNOWN = typing___cast(CpSolverStatusValue, 0)
MODEL_INVALID = typing___cast(CpSolverStatusValue, 1)
FEASIBLE = typing___cast(CpSolverStatusValue, 2)
INFEASIBLE = typing___cast(CpSolverStatusValue, 3)
OPTIMAL = typing___cast(CpSolverStatusValue, 4)
type___CpSolverStatus = CpSolverStatus

class IntegerVariableProto(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    name: typing___Text = ...
    domain: google___protobuf___internal___containers___RepeatedScalarFieldContainer[builtin___int] = ...

    def __init__(self,
        *,
        name : typing___Optional[typing___Text] = None,
        domain : typing___Optional[typing___Iterable[builtin___int]] = None,
        ) -> None: ...
    if sys.version_info >= (3,):
        @classmethod
        def FromString(cls, s: builtin___bytes) -> IntegerVariableProto: ...
    else:
        @classmethod
        def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> IntegerVariableProto: ...
    def ClearField(self, field_name: typing_extensions___Literal[u"domain",b"domain",u"name",b"name"]) -> None: ...
type___IntegerVariableProto = IntegerVariableProto

class BoolArgumentProto(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    literals: google___protobuf___internal___containers___RepeatedScalarFieldContainer[builtin___int] = ...

    def __init__(self,
        *,
        literals : typing___Optional[typing___Iterable[builtin___int]] = None,
        ) -> None: ...
    if sys.version_info >= (3,):
        @classmethod
        def FromString(cls, s: builtin___bytes) -> BoolArgumentProto: ...
    else:
        @classmethod
        def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> BoolArgumentProto: ...
    def ClearField(self, field_name: typing_extensions___Literal[u"literals",b"literals"]) -> None: ...
type___BoolArgumentProto = BoolArgumentProto

class IntegerArgumentProto(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    target: builtin___int = ...
    vars: google___protobuf___internal___containers___RepeatedScalarFieldContainer[builtin___int] = ...

    def __init__(self,
        *,
        target : typing___Optional[builtin___int] = None,
        vars : typing___Optional[typing___Iterable[builtin___int]] = None,
        ) -> None: ...
    if sys.version_info >= (3,):
        @classmethod
        def FromString(cls, s: builtin___bytes) -> IntegerArgumentProto: ...
    else:
        @classmethod
        def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> IntegerArgumentProto: ...
    def ClearField(self, field_name: typing_extensions___Literal[u"target",b"target",u"vars",b"vars"]) -> None: ...
type___IntegerArgumentProto = IntegerArgumentProto

class LinearExpressionProto(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    vars: google___protobuf___internal___containers___RepeatedScalarFieldContainer[builtin___int] = ...
    coeffs: google___protobuf___internal___containers___RepeatedScalarFieldContainer[builtin___int] = ...
    offset: builtin___int = ...

    def __init__(self,
        *,
        vars : typing___Optional[typing___Iterable[builtin___int]] = None,
        coeffs : typing___Optional[typing___Iterable[builtin___int]] = None,
        offset : typing___Optional[builtin___int] = None,
        ) -> None: ...
    if sys.version_info >= (3,):
        @classmethod
        def FromString(cls, s: builtin___bytes) -> LinearExpressionProto: ...
    else:
        @classmethod
        def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> LinearExpressionProto: ...
    def ClearField(self, field_name: typing_extensions___Literal[u"coeffs",b"coeffs",u"offset",b"offset",u"vars",b"vars"]) -> None: ...
type___LinearExpressionProto = LinearExpressionProto

class LinearArgumentProto(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...

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

    @property
    def exprs(self) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[type___LinearExpressionProto]: ...

    def __init__(self,
        *,
        target : typing___Optional[type___LinearExpressionProto] = None,
        exprs : typing___Optional[typing___Iterable[type___LinearExpressionProto]] = None,
        ) -> None: ...
    if sys.version_info >= (3,):
        @classmethod
        def FromString(cls, s: builtin___bytes) -> LinearArgumentProto: ...
    else:
        @classmethod
        def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> LinearArgumentProto: ...
    def HasField(self, field_name: typing_extensions___Literal[u"target",b"target"]) -> builtin___bool: ...
    def ClearField(self, field_name: typing_extensions___Literal[u"exprs",b"exprs",u"target",b"target"]) -> None: ...
type___LinearArgumentProto = LinearArgumentProto

class AllDifferentConstraintProto(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    vars: google___protobuf___internal___containers___RepeatedScalarFieldContainer[builtin___int] = ...

    def __init__(self,
        *,
        vars : typing___Optional[typing___Iterable[builtin___int]] = None,
        ) -> None: ...
    if sys.version_info >= (3,):
        @classmethod
        def FromString(cls, s: builtin___bytes) -> AllDifferentConstraintProto: ...
    else:
        @classmethod
        def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> AllDifferentConstraintProto: ...
    def ClearField(self, field_name: typing_extensions___Literal[u"vars",b"vars"]) -> None: ...
type___AllDifferentConstraintProto = AllDifferentConstraintProto

class LinearConstraintProto(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    vars: google___protobuf___internal___containers___RepeatedScalarFieldContainer[builtin___int] = ...
    coeffs: google___protobuf___internal___containers___RepeatedScalarFieldContainer[builtin___int] = ...
    domain: google___protobuf___internal___containers___RepeatedScalarFieldContainer[builtin___int] = ...

    def __init__(self,
        *,
        vars : typing___Optional[typing___Iterable[builtin___int]] = None,
        coeffs : typing___Optional[typing___Iterable[builtin___int]] = None,
        domain : typing___Optional[typing___Iterable[builtin___int]] = None,
        ) -> None: ...
    if sys.version_info >= (3,):
        @classmethod
        def FromString(cls, s: builtin___bytes) -> LinearConstraintProto: ...
    else:
        @classmethod
        def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> LinearConstraintProto: ...
    def ClearField(self, field_name: typing_extensions___Literal[u"coeffs",b"coeffs",u"domain",b"domain",u"vars",b"vars"]) -> None: ...
type___LinearConstraintProto = LinearConstraintProto

class ElementConstraintProto(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    index: builtin___int = ...
    target: builtin___int = ...
    vars: google___protobuf___internal___containers___RepeatedScalarFieldContainer[builtin___int] = ...

    def __init__(self,
        *,
        index : typing___Optional[builtin___int] = None,
        target : typing___Optional[builtin___int] = None,
        vars : typing___Optional[typing___Iterable[builtin___int]] = None,
        ) -> None: ...
    if sys.version_info >= (3,):
        @classmethod
        def FromString(cls, s: builtin___bytes) -> ElementConstraintProto: ...
    else:
        @classmethod
        def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> ElementConstraintProto: ...
    def ClearField(self, field_name: typing_extensions___Literal[u"index",b"index",u"target",b"target",u"vars",b"vars"]) -> None: ...
type___ElementConstraintProto = ElementConstraintProto

class IntervalConstraintProto(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    start: builtin___int = ...
    end: builtin___int = ...
    size: builtin___int = ...

    def __init__(self,
        *,
        start : typing___Optional[builtin___int] = None,
        end : typing___Optional[builtin___int] = None,
        size : typing___Optional[builtin___int] = None,
        ) -> None: ...
    if sys.version_info >= (3,):
        @classmethod
        def FromString(cls, s: builtin___bytes) -> IntervalConstraintProto: ...
    else:
        @classmethod
        def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> IntervalConstraintProto: ...
    def ClearField(self, field_name: typing_extensions___Literal[u"end",b"end",u"size",b"size",u"start",b"start"]) -> None: ...
type___IntervalConstraintProto = IntervalConstraintProto

class NoOverlapConstraintProto(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    intervals: google___protobuf___internal___containers___RepeatedScalarFieldContainer[builtin___int] = ...

    def __init__(self,
        *,
        intervals : typing___Optional[typing___Iterable[builtin___int]] = None,
        ) -> None: ...
    if sys.version_info >= (3,):
        @classmethod
        def FromString(cls, s: builtin___bytes) -> NoOverlapConstraintProto: ...
    else:
        @classmethod
        def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> NoOverlapConstraintProto: ...
    def ClearField(self, field_name: typing_extensions___Literal[u"intervals",b"intervals"]) -> None: ...
type___NoOverlapConstraintProto = NoOverlapConstraintProto

class NoOverlap2DConstraintProto(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    x_intervals: google___protobuf___internal___containers___RepeatedScalarFieldContainer[builtin___int] = ...
    y_intervals: google___protobuf___internal___containers___RepeatedScalarFieldContainer[builtin___int] = ...
    boxes_with_null_area_can_overlap: builtin___bool = ...

    def __init__(self,
        *,
        x_intervals : typing___Optional[typing___Iterable[builtin___int]] = None,
        y_intervals : typing___Optional[typing___Iterable[builtin___int]] = None,
        boxes_with_null_area_can_overlap : typing___Optional[builtin___bool] = None,
        ) -> None: ...
    if sys.version_info >= (3,):
        @classmethod
        def FromString(cls, s: builtin___bytes) -> NoOverlap2DConstraintProto: ...
    else:
        @classmethod
        def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> NoOverlap2DConstraintProto: ...
    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: ...
type___NoOverlap2DConstraintProto = NoOverlap2DConstraintProto

class CumulativeConstraintProto(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    capacity: builtin___int = ...
    intervals: google___protobuf___internal___containers___RepeatedScalarFieldContainer[builtin___int] = ...
    demands: google___protobuf___internal___containers___RepeatedScalarFieldContainer[builtin___int] = ...

    def __init__(self,
        *,
        capacity : typing___Optional[builtin___int] = None,
        intervals : typing___Optional[typing___Iterable[builtin___int]] = None,
        demands : typing___Optional[typing___Iterable[builtin___int]] = None,
        ) -> None: ...
    if sys.version_info >= (3,):
        @classmethod
        def FromString(cls, s: builtin___bytes) -> CumulativeConstraintProto: ...
    else:
        @classmethod
        def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> CumulativeConstraintProto: ...
    def ClearField(self, field_name: typing_extensions___Literal[u"capacity",b"capacity",u"demands",b"demands",u"intervals",b"intervals"]) -> None: ...
type___CumulativeConstraintProto = CumulativeConstraintProto

class ReservoirConstraintProto(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    min_level: builtin___int = ...
    max_level: builtin___int = ...
    times: google___protobuf___internal___containers___RepeatedScalarFieldContainer[builtin___int] = ...
    demands: google___protobuf___internal___containers___RepeatedScalarFieldContainer[builtin___int] = ...
    actives: google___protobuf___internal___containers___RepeatedScalarFieldContainer[builtin___int] = ...

    def __init__(self,
        *,
        min_level : typing___Optional[builtin___int] = None,
        max_level : typing___Optional[builtin___int] = None,
        times : typing___Optional[typing___Iterable[builtin___int]] = None,
        demands : typing___Optional[typing___Iterable[builtin___int]] = None,
        actives : typing___Optional[typing___Iterable[builtin___int]] = None,
        ) -> None: ...
    if sys.version_info >= (3,):
        @classmethod
        def FromString(cls, s: builtin___bytes) -> ReservoirConstraintProto: ...
    else:
        @classmethod
        def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> ReservoirConstraintProto: ...
    def ClearField(self, field_name: typing_extensions___Literal[u"actives",b"actives",u"demands",b"demands",u"max_level",b"max_level",u"min_level",b"min_level",u"times",b"times"]) -> None: ...
type___ReservoirConstraintProto = ReservoirConstraintProto

class CircuitConstraintProto(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    tails: google___protobuf___internal___containers___RepeatedScalarFieldContainer[builtin___int] = ...
    heads: google___protobuf___internal___containers___RepeatedScalarFieldContainer[builtin___int] = ...
    literals: google___protobuf___internal___containers___RepeatedScalarFieldContainer[builtin___int] = ...

    def __init__(self,
        *,
        tails : typing___Optional[typing___Iterable[builtin___int]] = None,
        heads : typing___Optional[typing___Iterable[builtin___int]] = None,
        literals : typing___Optional[typing___Iterable[builtin___int]] = None,
        ) -> None: ...
    if sys.version_info >= (3,):
        @classmethod
        def FromString(cls, s: builtin___bytes) -> CircuitConstraintProto: ...
    else:
        @classmethod
        def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> CircuitConstraintProto: ...
    def ClearField(self, field_name: typing_extensions___Literal[u"heads",b"heads",u"literals",b"literals",u"tails",b"tails"]) -> None: ...
type___CircuitConstraintProto = CircuitConstraintProto

class RoutesConstraintProto(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    tails: google___protobuf___internal___containers___RepeatedScalarFieldContainer[builtin___int] = ...
    heads: google___protobuf___internal___containers___RepeatedScalarFieldContainer[builtin___int] = ...
    literals: google___protobuf___internal___containers___RepeatedScalarFieldContainer[builtin___int] = ...
    demands: google___protobuf___internal___containers___RepeatedScalarFieldContainer[builtin___int] = ...
    capacity: builtin___int = ...

    def __init__(self,
        *,
        tails : typing___Optional[typing___Iterable[builtin___int]] = None,
        heads : typing___Optional[typing___Iterable[builtin___int]] = None,
        literals : typing___Optional[typing___Iterable[builtin___int]] = None,
        demands : typing___Optional[typing___Iterable[builtin___int]] = None,
        capacity : typing___Optional[builtin___int] = None,
        ) -> None: ...
    if sys.version_info >= (3,):
        @classmethod
        def FromString(cls, s: builtin___bytes) -> RoutesConstraintProto: ...
    else:
        @classmethod
        def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> RoutesConstraintProto: ...
    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: ...
type___RoutesConstraintProto = RoutesConstraintProto

class CircuitCoveringConstraintProto(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    nexts: google___protobuf___internal___containers___RepeatedScalarFieldContainer[builtin___int] = ...
    distinguished_nodes: google___protobuf___internal___containers___RepeatedScalarFieldContainer[builtin___int] = ...

    def __init__(self,
        *,
        nexts : typing___Optional[typing___Iterable[builtin___int]] = None,
        distinguished_nodes : typing___Optional[typing___Iterable[builtin___int]] = None,
        ) -> None: ...
    if sys.version_info >= (3,):
        @classmethod
        def FromString(cls, s: builtin___bytes) -> CircuitCoveringConstraintProto: ...
    else:
        @classmethod
        def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> CircuitCoveringConstraintProto: ...
    def ClearField(self, field_name: typing_extensions___Literal[u"distinguished_nodes",b"distinguished_nodes",u"nexts",b"nexts"]) -> None: ...
type___CircuitCoveringConstraintProto = CircuitCoveringConstraintProto

class TableConstraintProto(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    vars: google___protobuf___internal___containers___RepeatedScalarFieldContainer[builtin___int] = ...
    values: google___protobuf___internal___containers___RepeatedScalarFieldContainer[builtin___int] = ...
    negated: builtin___bool = ...

    def __init__(self,
        *,
        vars : typing___Optional[typing___Iterable[builtin___int]] = None,
        values : typing___Optional[typing___Iterable[builtin___int]] = None,
        negated : typing___Optional[builtin___bool] = None,
        ) -> None: ...
    if sys.version_info >= (3,):
        @classmethod
        def FromString(cls, s: builtin___bytes) -> TableConstraintProto: ...
    else:
        @classmethod
        def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> TableConstraintProto: ...
    def ClearField(self, field_name: typing_extensions___Literal[u"negated",b"negated",u"values",b"values",u"vars",b"vars"]) -> None: ...
type___TableConstraintProto = TableConstraintProto

class InverseConstraintProto(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    f_direct: google___protobuf___internal___containers___RepeatedScalarFieldContainer[builtin___int] = ...
    f_inverse: google___protobuf___internal___containers___RepeatedScalarFieldContainer[builtin___int] = ...

    def __init__(self,
        *,
        f_direct : typing___Optional[typing___Iterable[builtin___int]] = None,
        f_inverse : typing___Optional[typing___Iterable[builtin___int]] = None,
        ) -> None: ...
    if sys.version_info >= (3,):
        @classmethod
        def FromString(cls, s: builtin___bytes) -> InverseConstraintProto: ...
    else:
        @classmethod
        def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> InverseConstraintProto: ...
    def ClearField(self, field_name: typing_extensions___Literal[u"f_direct",b"f_direct",u"f_inverse",b"f_inverse"]) -> None: ...
type___InverseConstraintProto = InverseConstraintProto

class AutomatonConstraintProto(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    starting_state: builtin___int = ...
    final_states: google___protobuf___internal___containers___RepeatedScalarFieldContainer[builtin___int] = ...
    transition_tail: google___protobuf___internal___containers___RepeatedScalarFieldContainer[builtin___int] = ...
    transition_head: google___protobuf___internal___containers___RepeatedScalarFieldContainer[builtin___int] = ...
    transition_label: google___protobuf___internal___containers___RepeatedScalarFieldContainer[builtin___int] = ...
    vars: google___protobuf___internal___containers___RepeatedScalarFieldContainer[builtin___int] = ...

    def __init__(self,
        *,
        starting_state : typing___Optional[builtin___int] = None,
        final_states : typing___Optional[typing___Iterable[builtin___int]] = None,
        transition_tail : typing___Optional[typing___Iterable[builtin___int]] = None,
        transition_head : typing___Optional[typing___Iterable[builtin___int]] = None,
        transition_label : typing___Optional[typing___Iterable[builtin___int]] = None,
        vars : typing___Optional[typing___Iterable[builtin___int]] = None,
        ) -> None: ...
    if sys.version_info >= (3,):
        @classmethod
        def FromString(cls, s: builtin___bytes) -> AutomatonConstraintProto: ...
    else:
        @classmethod
        def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> AutomatonConstraintProto: ...
    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: ...
type___AutomatonConstraintProto = AutomatonConstraintProto

class ConstraintProto(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    name: typing___Text = ...
    enforcement_literal: google___protobuf___internal___containers___RepeatedScalarFieldContainer[builtin___int] = ...

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

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

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

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

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

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

    @property
    def int_max(self) -> type___IntegerArgumentProto: ...

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

    @property
    def int_min(self) -> type___IntegerArgumentProto: ...

    @property
    def lin_min(self) -> type___LinearArgumentProto: ...

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

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

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

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

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

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

    @property
    def circuit_covering(self) -> type___CircuitCoveringConstraintProto: ...

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

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

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

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

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

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

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

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

    def __init__(self,
        *,
        name : typing___Optional[typing___Text] = None,
        enforcement_literal : typing___Optional[typing___Iterable[builtin___int]] = None,
        bool_or : typing___Optional[type___BoolArgumentProto] = None,
        bool_and : typing___Optional[type___BoolArgumentProto] = None,
        at_most_one : typing___Optional[type___BoolArgumentProto] = None,
        bool_xor : typing___Optional[type___BoolArgumentProto] = None,
        int_div : typing___Optional[type___IntegerArgumentProto] = None,
        int_mod : typing___Optional[type___IntegerArgumentProto] = None,
        int_max : typing___Optional[type___IntegerArgumentProto] = None,
        lin_max : typing___Optional[type___LinearArgumentProto] = None,
        int_min : typing___Optional[type___IntegerArgumentProto] = None,
        lin_min : typing___Optional[type___LinearArgumentProto] = None,
        int_prod : typing___Optional[type___IntegerArgumentProto] = None,
        linear : typing___Optional[type___LinearConstraintProto] = None,
        all_diff : typing___Optional[type___AllDifferentConstraintProto] = None,
        element : typing___Optional[type___ElementConstraintProto] = None,
        circuit : typing___Optional[type___CircuitConstraintProto] = None,
        routes : typing___Optional[type___RoutesConstraintProto] = None,
        circuit_covering : typing___Optional[type___CircuitCoveringConstraintProto] = None,
        table : typing___Optional[type___TableConstraintProto] = None,
        automaton : typing___Optional[type___AutomatonConstraintProto] = None,
        inverse : typing___Optional[type___InverseConstraintProto] = None,
        reservoir : typing___Optional[type___ReservoirConstraintProto] = None,
        interval : typing___Optional[type___IntervalConstraintProto] = None,
        no_overlap : typing___Optional[type___NoOverlapConstraintProto] = None,
        no_overlap_2d : typing___Optional[type___NoOverlap2DConstraintProto] = None,
        cumulative : typing___Optional[type___CumulativeConstraintProto] = None,
        ) -> None: ...
    if sys.version_info >= (3,):
        @classmethod
        def FromString(cls, s: builtin___bytes) -> ConstraintProto: ...
    else:
        @classmethod
        def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> ConstraintProto: ...
    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"circuit_covering",b"circuit_covering",u"constraint",b"constraint",u"cumulative",b"cumulative",u"element",b"element",u"int_div",b"int_div",u"int_max",b"int_max",u"int_min",b"int_min",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"lin_min",b"lin_min",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"]) -> builtin___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"circuit_covering",b"circuit_covering",u"constraint",b"constraint",u"cumulative",b"cumulative",u"element",b"element",u"enforcement_literal",b"enforcement_literal",u"int_div",b"int_div",u"int_max",b"int_max",u"int_min",b"int_min",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"lin_min",b"lin_min",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","bool_xor","int_div","int_mod","int_max","lin_max","int_min","lin_min","int_prod","linear","all_diff","element","circuit","routes","circuit_covering","table","automaton","inverse","reservoir","interval","no_overlap","no_overlap_2d","cumulative"]: ...
type___ConstraintProto = ConstraintProto

class CpObjectiveProto(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    vars: google___protobuf___internal___containers___RepeatedScalarFieldContainer[builtin___int] = ...
    coeffs: google___protobuf___internal___containers___RepeatedScalarFieldContainer[builtin___int] = ...
    offset: builtin___float = ...
    scaling_factor: builtin___float = ...
    domain: google___protobuf___internal___containers___RepeatedScalarFieldContainer[builtin___int] = ...

    def __init__(self,
        *,
        vars : typing___Optional[typing___Iterable[builtin___int]] = None,
        coeffs : typing___Optional[typing___Iterable[builtin___int]] = None,
        offset : typing___Optional[builtin___float] = None,
        scaling_factor : typing___Optional[builtin___float] = None,
        domain : typing___Optional[typing___Iterable[builtin___int]] = None,
        ) -> None: ...
    if sys.version_info >= (3,):
        @classmethod
        def FromString(cls, s: builtin___bytes) -> CpObjectiveProto: ...
    else:
        @classmethod
        def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> CpObjectiveProto: ...
    def ClearField(self, field_name: typing_extensions___Literal[u"coeffs",b"coeffs",u"domain",b"domain",u"offset",b"offset",u"scaling_factor",b"scaling_factor",u"vars",b"vars"]) -> None: ...
type___CpObjectiveProto = CpObjectiveProto

class DecisionStrategyProto(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    VariableSelectionStrategyValue = typing___NewType('VariableSelectionStrategyValue', builtin___int)
    type___VariableSelectionStrategyValue = VariableSelectionStrategyValue
    VariableSelectionStrategy: _VariableSelectionStrategy
    class _VariableSelectionStrategy(google___protobuf___internal___enum_type_wrapper____EnumTypeWrapper[DecisionStrategyProto.VariableSelectionStrategyValue]):
        DESCRIPTOR: google___protobuf___descriptor___EnumDescriptor = ...
        CHOOSE_FIRST = typing___cast(DecisionStrategyProto.VariableSelectionStrategyValue, 0)
        CHOOSE_LOWEST_MIN = typing___cast(DecisionStrategyProto.VariableSelectionStrategyValue, 1)
        CHOOSE_HIGHEST_MAX = typing___cast(DecisionStrategyProto.VariableSelectionStrategyValue, 2)
        CHOOSE_MIN_DOMAIN_SIZE = typing___cast(DecisionStrategyProto.VariableSelectionStrategyValue, 3)
        CHOOSE_MAX_DOMAIN_SIZE = typing___cast(DecisionStrategyProto.VariableSelectionStrategyValue, 4)
    CHOOSE_FIRST = typing___cast(DecisionStrategyProto.VariableSelectionStrategyValue, 0)
    CHOOSE_LOWEST_MIN = typing___cast(DecisionStrategyProto.VariableSelectionStrategyValue, 1)
    CHOOSE_HIGHEST_MAX = typing___cast(DecisionStrategyProto.VariableSelectionStrategyValue, 2)
    CHOOSE_MIN_DOMAIN_SIZE = typing___cast(DecisionStrategyProto.VariableSelectionStrategyValue, 3)
    CHOOSE_MAX_DOMAIN_SIZE = typing___cast(DecisionStrategyProto.VariableSelectionStrategyValue, 4)
    type___VariableSelectionStrategy = VariableSelectionStrategy

    DomainReductionStrategyValue = typing___NewType('DomainReductionStrategyValue', builtin___int)
    type___DomainReductionStrategyValue = DomainReductionStrategyValue
    DomainReductionStrategy: _DomainReductionStrategy
    class _DomainReductionStrategy(google___protobuf___internal___enum_type_wrapper____EnumTypeWrapper[DecisionStrategyProto.DomainReductionStrategyValue]):
        DESCRIPTOR: google___protobuf___descriptor___EnumDescriptor = ...
        SELECT_MIN_VALUE = typing___cast(DecisionStrategyProto.DomainReductionStrategyValue, 0)
        SELECT_MAX_VALUE = typing___cast(DecisionStrategyProto.DomainReductionStrategyValue, 1)
        SELECT_LOWER_HALF = typing___cast(DecisionStrategyProto.DomainReductionStrategyValue, 2)
        SELECT_UPPER_HALF = typing___cast(DecisionStrategyProto.DomainReductionStrategyValue, 3)
        SELECT_MEDIAN_VALUE = typing___cast(DecisionStrategyProto.DomainReductionStrategyValue, 4)
    SELECT_MIN_VALUE = typing___cast(DecisionStrategyProto.DomainReductionStrategyValue, 0)
    SELECT_MAX_VALUE = typing___cast(DecisionStrategyProto.DomainReductionStrategyValue, 1)
    SELECT_LOWER_HALF = typing___cast(DecisionStrategyProto.DomainReductionStrategyValue, 2)
    SELECT_UPPER_HALF = typing___cast(DecisionStrategyProto.DomainReductionStrategyValue, 3)
    SELECT_MEDIAN_VALUE = typing___cast(DecisionStrategyProto.DomainReductionStrategyValue, 4)
    type___DomainReductionStrategy = DomainReductionStrategy

    class AffineTransformation(google___protobuf___message___Message):
        DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
        var: builtin___int = ...
        offset: builtin___int = ...
        positive_coeff: builtin___int = ...

        def __init__(self,
            *,
            var : typing___Optional[builtin___int] = None,
            offset : typing___Optional[builtin___int] = None,
            positive_coeff : typing___Optional[builtin___int] = None,
            ) -> None: ...
        if sys.version_info >= (3,):
            @classmethod
            def FromString(cls, s: builtin___bytes) -> DecisionStrategyProto.AffineTransformation: ...
        else:
            @classmethod
            def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> DecisionStrategyProto.AffineTransformation: ...
        def ClearField(self, field_name: typing_extensions___Literal[u"offset",b"offset",u"positive_coeff",b"positive_coeff",u"var",b"var"]) -> None: ...
    type___AffineTransformation = AffineTransformation

    variables: google___protobuf___internal___containers___RepeatedScalarFieldContainer[builtin___int] = ...
    variable_selection_strategy: type___DecisionStrategyProto.VariableSelectionStrategyValue = ...
    domain_reduction_strategy: type___DecisionStrategyProto.DomainReductionStrategyValue = ...

    @property
    def transformations(self) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[type___DecisionStrategyProto.AffineTransformation]: ...

    def __init__(self,
        *,
        variables : typing___Optional[typing___Iterable[builtin___int]] = None,
        variable_selection_strategy : typing___Optional[type___DecisionStrategyProto.VariableSelectionStrategyValue] = None,
        domain_reduction_strategy : typing___Optional[type___DecisionStrategyProto.DomainReductionStrategyValue] = None,
        transformations : typing___Optional[typing___Iterable[type___DecisionStrategyProto.AffineTransformation]] = None,
        ) -> None: ...
    if sys.version_info >= (3,):
        @classmethod
        def FromString(cls, s: builtin___bytes) -> DecisionStrategyProto: ...
    else:
        @classmethod
        def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> DecisionStrategyProto: ...
    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: ...
type___DecisionStrategyProto = DecisionStrategyProto

class PartialVariableAssignment(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    vars: google___protobuf___internal___containers___RepeatedScalarFieldContainer[builtin___int] = ...
    values: google___protobuf___internal___containers___RepeatedScalarFieldContainer[builtin___int] = ...

    def __init__(self,
        *,
        vars : typing___Optional[typing___Iterable[builtin___int]] = None,
        values : typing___Optional[typing___Iterable[builtin___int]] = None,
        ) -> None: ...
    if sys.version_info >= (3,):
        @classmethod
        def FromString(cls, s: builtin___bytes) -> PartialVariableAssignment: ...
    else:
        @classmethod
        def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> PartialVariableAssignment: ...
    def ClearField(self, field_name: typing_extensions___Literal[u"values",b"values",u"vars",b"vars"]) -> None: ...
type___PartialVariableAssignment = PartialVariableAssignment

class CpModelProto(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    name: typing___Text = ...
    assumptions: google___protobuf___internal___containers___RepeatedScalarFieldContainer[builtin___int] = ...

    @property
    def variables(self) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[type___IntegerVariableProto]: ...

    @property
    def constraints(self) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[type___ConstraintProto]: ...

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

    @property
    def search_strategy(self) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[type___DecisionStrategyProto]: ...

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

    def __init__(self,
        *,
        name : typing___Optional[typing___Text] = None,
        variables : typing___Optional[typing___Iterable[type___IntegerVariableProto]] = None,
        constraints : typing___Optional[typing___Iterable[type___ConstraintProto]] = None,
        objective : typing___Optional[type___CpObjectiveProto] = None,
        search_strategy : typing___Optional[typing___Iterable[type___DecisionStrategyProto]] = None,
        solution_hint : typing___Optional[type___PartialVariableAssignment] = None,
        assumptions : typing___Optional[typing___Iterable[builtin___int]] = None,
        ) -> None: ...
    if sys.version_info >= (3,):
        @classmethod
        def FromString(cls, s: builtin___bytes) -> CpModelProto: ...
    else:
        @classmethod
        def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> CpModelProto: ...
    def HasField(self, field_name: typing_extensions___Literal[u"objective",b"objective",u"solution_hint",b"solution_hint"]) -> builtin___bool: ...
    def ClearField(self, field_name: typing_extensions___Literal[u"assumptions",b"assumptions",u"constraints",b"constraints",u"name",b"name",u"objective",b"objective",u"search_strategy",b"search_strategy",u"solution_hint",b"solution_hint",u"variables",b"variables"]) -> None: ...
type___CpModelProto = CpModelProto

class CpSolverResponse(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    status: type___CpSolverStatusValue = ...
    solution: google___protobuf___internal___containers___RepeatedScalarFieldContainer[builtin___int] = ...
    objective_value: builtin___float = ...
    best_objective_bound: builtin___float = ...
    solution_lower_bounds: google___protobuf___internal___containers___RepeatedScalarFieldContainer[builtin___int] = ...
    solution_upper_bounds: google___protobuf___internal___containers___RepeatedScalarFieldContainer[builtin___int] = ...
    sufficient_assumptions_for_infeasibility: google___protobuf___internal___containers___RepeatedScalarFieldContainer[builtin___int] = ...
    all_solutions_were_found: builtin___bool = ...
    num_booleans: builtin___int = ...
    num_conflicts: builtin___int = ...
    num_branches: builtin___int = ...
    num_binary_propagations: builtin___int = ...
    num_integer_propagations: builtin___int = ...
    wall_time: builtin___float = ...
    user_time: builtin___float = ...
    deterministic_time: builtin___float = ...
    primal_integral: builtin___float = ...
    solution_info: typing___Text = ...

    @property
    def tightened_variables(self) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[type___IntegerVariableProto]: ...

    def __init__(self,
        *,
        status : typing___Optional[type___CpSolverStatusValue] = None,
        solution : typing___Optional[typing___Iterable[builtin___int]] = None,
        objective_value : typing___Optional[builtin___float] = None,
        best_objective_bound : typing___Optional[builtin___float] = None,
        solution_lower_bounds : typing___Optional[typing___Iterable[builtin___int]] = None,
        solution_upper_bounds : typing___Optional[typing___Iterable[builtin___int]] = None,
        tightened_variables : typing___Optional[typing___Iterable[type___IntegerVariableProto]] = None,
        sufficient_assumptions_for_infeasibility : typing___Optional[typing___Iterable[builtin___int]] = None,
        all_solutions_were_found : typing___Optional[builtin___bool] = None,
        num_booleans : typing___Optional[builtin___int] = None,
        num_conflicts : typing___Optional[builtin___int] = None,
        num_branches : typing___Optional[builtin___int] = None,
        num_binary_propagations : typing___Optional[builtin___int] = None,
        num_integer_propagations : typing___Optional[builtin___int] = None,
        wall_time : typing___Optional[builtin___float] = None,
        user_time : typing___Optional[builtin___float] = None,
        deterministic_time : typing___Optional[builtin___float] = None,
        primal_integral : typing___Optional[builtin___float] = None,
        solution_info : typing___Optional[typing___Text] = None,
        ) -> None: ...
    if sys.version_info >= (3,):
        @classmethod
        def FromString(cls, s: builtin___bytes) -> CpSolverResponse: ...
    else:
        @classmethod
        def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> CpSolverResponse: ...
    def ClearField(self, field_name: typing_extensions___Literal[u"all_solutions_were_found",b"all_solutions_were_found",u"best_objective_bound",b"best_objective_bound",u"deterministic_time",b"deterministic_time",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"objective_value",b"objective_value",u"primal_integral",b"primal_integral",u"solution",b"solution",u"solution_info",b"solution_info",u"solution_lower_bounds",b"solution_lower_bounds",u"solution_upper_bounds",b"solution_upper_bounds",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: ...
type___CpSolverResponse = CpSolverResponse
