from __future__ import annotations

from .backend import ALL_BACKENDS, Backend, ExceptionHandling, FunctionHint, FunctionHintSource, register_backend
from .blob import Blob
from .cartfile import CARTFile
from .cgc import CGC, BackedCGC
from .coff import Coff
from .elf import ELF, ELFCore, MetaELF
from .ihex import Hex
from .java.apk import Apk
from .java.jar import Jar
from .java.soot import Soot
from .macho import MachO
from .minidump import Minidump
from .named_region import NamedRegion
from .pe import PE
from .region import Region, Section, Segment
from .regions import Regions
from .srec import SRec
from .static_archive import StaticArchive
from .symbol import Symbol, SymbolSubType, SymbolType
from .te import TE
from .uefi_firmware import UefiFirmware
from .xbe import XBE

# BinjaBin is not imported by default since importing it is too slow
# you may manually import it by running `from cle.backends.binja import BinjaBin`

__all__ = [
    "FunctionHintSource",
    "FunctionHint",
    "ExceptionHandling",
    "Backend",
    "ALL_BACKENDS",
    "register_backend",
    "ELF",
    "ELFCore",
    "MetaELF",
    "PE",
    "Coff",
    "Blob",
    "CGC",
    "BackedCGC",
    "Hex",
    "SRec",
    "Minidump",
    "MachO",
    "NamedRegion",
    "Jar",
    "Apk",
    "Soot",
    "XBE",
    "StaticArchive",
    "Region",
    "Segment",
    "Section",
    "Regions",
    "Symbol",
    "SymbolType",
    "SymbolSubType",
    "UefiFirmware",
    "TE",
    "CARTFile",
]
