"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
===- CFG.proto ----------------------------------------------*- Proto -*-===//

 Copyright (C) 2020 GrammaTech, Inc.

 This code is licensed under the MIT license. See the LICENSE file in the
 project root for license terms.

 This project is sponsored by the Office of Naval Research, One Liberty
 Center, 875 N. Randolph Street, Arlington, VA 22203 under contract #
 N68335-17-C-0700.  The content of the information does not necessarily
 reflect the position or policy of the Government and no official
 endorsement should be inferred.

===----------------------------------------------------------------------===//
"""
import builtins
import collections.abc
import google.protobuf.descriptor
import google.protobuf.internal.containers
import google.protobuf.internal.enum_type_wrapper
import google.protobuf.message
import sys
import typing

if sys.version_info >= (3, 10):
    import typing as typing_extensions
else:
    import typing_extensions

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

class _EdgeType:
    ValueType = typing.NewType("ValueType", builtins.int)
    V: typing_extensions.TypeAlias = ValueType

class _EdgeTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_EdgeType.ValueType], builtins.type):  # noqa: F821
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    Type_Branch: _EdgeType.ValueType  # 0
    Type_Call: _EdgeType.ValueType  # 1
    Type_Fallthrough: _EdgeType.ValueType  # 2
    Type_Return: _EdgeType.ValueType  # 3
    Type_Syscall: _EdgeType.ValueType  # 4
    Type_Sysret: _EdgeType.ValueType  # 5

class EdgeType(_EdgeType, metaclass=_EdgeTypeEnumTypeWrapper): ...

Type_Branch: EdgeType.ValueType  # 0
Type_Call: EdgeType.ValueType  # 1
Type_Fallthrough: EdgeType.ValueType  # 2
Type_Return: EdgeType.ValueType  # 3
Type_Syscall: EdgeType.ValueType  # 4
Type_Sysret: EdgeType.ValueType  # 5
global___EdgeType = EdgeType

class EdgeLabel(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    CONDITIONAL_FIELD_NUMBER: builtins.int
    DIRECT_FIELD_NUMBER: builtins.int
    TYPE_FIELD_NUMBER: builtins.int
    conditional: builtins.bool
    direct: builtins.bool
    type: global___EdgeType.ValueType
    def __init__(
        self,
        *,
        conditional: builtins.bool = ...,
        direct: builtins.bool = ...,
        type: global___EdgeType.ValueType = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["conditional", b"conditional", "direct", b"direct", "type", b"type"]) -> None: ...

global___EdgeLabel = EdgeLabel

class Edge(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    SOURCE_UUID_FIELD_NUMBER: builtins.int
    TARGET_UUID_FIELD_NUMBER: builtins.int
    LABEL_FIELD_NUMBER: builtins.int
    source_uuid: builtins.bytes
    target_uuid: builtins.bytes
    @property
    def label(self) -> global___EdgeLabel: ...
    def __init__(
        self,
        *,
        source_uuid: builtins.bytes = ...,
        target_uuid: builtins.bytes = ...,
        label: global___EdgeLabel | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["label", b"label"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["label", b"label", "source_uuid", b"source_uuid", "target_uuid", b"target_uuid"]) -> None: ...

global___Edge = Edge

class CFG(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    VERTICES_FIELD_NUMBER: builtins.int
    EDGES_FIELD_NUMBER: builtins.int
    @property
    def vertices(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.bytes]: ...
    @property
    def edges(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Edge]: ...
    def __init__(
        self,
        *,
        vertices: collections.abc.Iterable[builtins.bytes] | None = ...,
        edges: collections.abc.Iterable[global___Edge] | None = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["edges", b"edges", "vertices", b"vertices"]) -> None: ...

global___CFG = CFG
