"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
===- Module.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 gtirb.proto.AuxData_pb2
import gtirb.proto.ProxyBlock_pb2
import gtirb.proto.Section_pb2
import gtirb.proto.Symbol_pb2
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 _FileFormat:
    ValueType = typing.NewType("ValueType", builtins.int)
    V: typing_extensions.TypeAlias = ValueType

class _FileFormatEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_FileFormat.ValueType], builtins.type):  # noqa: F821
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    Format_Undefined: _FileFormat.ValueType  # 0
    COFF: _FileFormat.ValueType  # 1
    ELF: _FileFormat.ValueType  # 2
    PE: _FileFormat.ValueType  # 3
    IdaProDb32: _FileFormat.ValueType  # 4
    IdaProDb64: _FileFormat.ValueType  # 5
    XCOFF: _FileFormat.ValueType  # 6
    MACHO: _FileFormat.ValueType  # 7
    RAW: _FileFormat.ValueType  # 8

class FileFormat(_FileFormat, metaclass=_FileFormatEnumTypeWrapper): ...

Format_Undefined: FileFormat.ValueType  # 0
COFF: FileFormat.ValueType  # 1
ELF: FileFormat.ValueType  # 2
PE: FileFormat.ValueType  # 3
IdaProDb32: FileFormat.ValueType  # 4
IdaProDb64: FileFormat.ValueType  # 5
XCOFF: FileFormat.ValueType  # 6
MACHO: FileFormat.ValueType  # 7
RAW: FileFormat.ValueType  # 8
global___FileFormat = FileFormat

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

class _ISAEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_ISA.ValueType], builtins.type):  # noqa: F821
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    ISA_Undefined: _ISA.ValueType  # 0
    IA32: _ISA.ValueType  # 1
    PPC32: _ISA.ValueType  # 2
    X64: _ISA.ValueType  # 3
    ARM: _ISA.ValueType  # 4
    ValidButUnsupported: _ISA.ValueType  # 5
    PPC64: _ISA.ValueType  # 6
    ARM64: _ISA.ValueType  # 7
    MIPS32: _ISA.ValueType  # 8
    MIPS64: _ISA.ValueType  # 9

class ISA(_ISA, metaclass=_ISAEnumTypeWrapper): ...

ISA_Undefined: ISA.ValueType  # 0
IA32: ISA.ValueType  # 1
PPC32: ISA.ValueType  # 2
X64: ISA.ValueType  # 3
ARM: ISA.ValueType  # 4
ValidButUnsupported: ISA.ValueType  # 5
PPC64: ISA.ValueType  # 6
ARM64: ISA.ValueType  # 7
MIPS32: ISA.ValueType  # 8
MIPS64: ISA.ValueType  # 9
global___ISA = ISA

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

class _ByteOrderEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_ByteOrder.ValueType], builtins.type):  # noqa: F821
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    ByteOrder_Undefined: _ByteOrder.ValueType  # 0
    BigEndian: _ByteOrder.ValueType  # 1
    LittleEndian: _ByteOrder.ValueType  # 2

class ByteOrder(_ByteOrder, metaclass=_ByteOrderEnumTypeWrapper): ...

ByteOrder_Undefined: ByteOrder.ValueType  # 0
BigEndian: ByteOrder.ValueType  # 1
LittleEndian: ByteOrder.ValueType  # 2
global___ByteOrder = ByteOrder

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

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

        KEY_FIELD_NUMBER: builtins.int
        VALUE_FIELD_NUMBER: builtins.int
        key: builtins.str
        @property
        def value(self) -> gtirb.proto.AuxData_pb2.AuxData: ...
        def __init__(
            self,
            *,
            key: builtins.str = ...,
            value: gtirb.proto.AuxData_pb2.AuxData | None = ...,
        ) -> None: ...
        def HasField(self, field_name: typing_extensions.Literal["value", b"value"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ...

    UUID_FIELD_NUMBER: builtins.int
    BINARY_PATH_FIELD_NUMBER: builtins.int
    PREFERRED_ADDR_FIELD_NUMBER: builtins.int
    REBASE_DELTA_FIELD_NUMBER: builtins.int
    FILE_FORMAT_FIELD_NUMBER: builtins.int
    ISA_FIELD_NUMBER: builtins.int
    NAME_FIELD_NUMBER: builtins.int
    SYMBOLS_FIELD_NUMBER: builtins.int
    PROXIES_FIELD_NUMBER: builtins.int
    SECTIONS_FIELD_NUMBER: builtins.int
    AUX_DATA_FIELD_NUMBER: builtins.int
    ENTRY_POINT_FIELD_NUMBER: builtins.int
    BYTE_ORDER_FIELD_NUMBER: builtins.int
    uuid: builtins.bytes
    binary_path: builtins.str
    preferred_addr: builtins.int
    rebase_delta: builtins.int
    file_format: global___FileFormat.ValueType
    isa: global___ISA.ValueType
    name: builtins.str
    @property
    def symbols(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[gtirb.proto.Symbol_pb2.Symbol]: ...
    @property
    def proxies(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[gtirb.proto.ProxyBlock_pb2.ProxyBlock]: ...
    @property
    def sections(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[gtirb.proto.Section_pb2.Section]: ...
    @property
    def aux_data(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, gtirb.proto.AuxData_pb2.AuxData]: ...
    entry_point: builtins.bytes
    byte_order: global___ByteOrder.ValueType
    def __init__(
        self,
        *,
        uuid: builtins.bytes = ...,
        binary_path: builtins.str = ...,
        preferred_addr: builtins.int = ...,
        rebase_delta: builtins.int = ...,
        file_format: global___FileFormat.ValueType = ...,
        isa: global___ISA.ValueType = ...,
        name: builtins.str = ...,
        symbols: collections.abc.Iterable[gtirb.proto.Symbol_pb2.Symbol] | None = ...,
        proxies: collections.abc.Iterable[gtirb.proto.ProxyBlock_pb2.ProxyBlock] | None = ...,
        sections: collections.abc.Iterable[gtirb.proto.Section_pb2.Section] | None = ...,
        aux_data: collections.abc.Mapping[builtins.str, gtirb.proto.AuxData_pb2.AuxData] | None = ...,
        entry_point: builtins.bytes = ...,
        byte_order: global___ByteOrder.ValueType = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["aux_data", b"aux_data", "binary_path", b"binary_path", "byte_order", b"byte_order", "entry_point", b"entry_point", "file_format", b"file_format", "isa", b"isa", "name", b"name", "preferred_addr", b"preferred_addr", "proxies", b"proxies", "rebase_delta", b"rebase_delta", "sections", b"sections", "symbols", b"symbols", "uuid", b"uuid"]) -> None: ...

global___Module = Module
