import ctypes
import os
from pathlib import Path


def _preload_runtime_shared_libs(pkg_dir: Path) -> None:
    candidate_dirs = [pkg_dir, pkg_dir / "lib"]
    for candidate_dir in candidate_dirs:
        p2p_so = candidate_dir / "libp2p_transfer.so"
        if p2p_so.exists():
            os.environ.setdefault("TRANSFER_ENGINE_P2P_SO_PATH", str(p2p_so))
            break

    rtld_global = getattr(ctypes, "RTLD_GLOBAL", 0)
    for base_dir in candidate_dirs:
        if not base_dir.exists():
            continue
        for pattern in ("libglog.so*", "libprotobuf.so*", "libabsl*.so*"):
            for so_path in sorted(base_dir.glob(pattern)):
                try:
                    ctypes.CDLL(str(so_path), mode=rtld_global)
                except OSError:
                    pass


_PKG_DIR = Path(__file__).resolve().parent
_preload_runtime_shared_libs(_PKG_DIR)

from ._transfer_engine import ErrorCode, Result, TransferEngine


__all__ = ["Result", "ErrorCode", "TransferEngine"]