"""
communication - Agent-to-Agent Encrypted Communication Module
==============================================================
Provides end-to-end encrypted messaging between MyAgent instances using:
- Ed25519 for identity (signing, agent ID)
- X25519 for key exchange (Diffie-Hellman)
- AES-256-GCM for message encryption
- WebSocket for real-time remote messaging (AICQ relay)
- asyncio queues for local same-machine messaging
"""

from .crypto import (
    generate_ed25519_keypair,
    generate_agent_id,
    generate_x25519_keypair,
    ed25519_to_x25519_private,
    ed25519_to_x25519_public,
    x25519_key_exchange,
    derive_shared_key,
    encrypt,
    decrypt,
    encrypt_message,
    decrypt_message,
    sign,
    verify,
    serialize_public_key,
    deserialize_public_key,
    serialize_private_key,
    deserialize_private_key,
    _HAS_CRYPTOGRAPHY,
)

from .peer import Peer, PeerStore
from .channel import Message, LocalChannel, RemoteChannel
from .manager import CommunicationManager

__all__ = [
    # Crypto
    "generate_ed25519_keypair",
    "generate_agent_id",
    "generate_x25519_keypair",
    "ed25519_to_x25519_private",
    "ed25519_to_x25519_public",
    "x25519_key_exchange",
    "derive_shared_key",
    "encrypt",
    "decrypt",
    "encrypt_message",
    "decrypt_message",
    "sign",
    "verify",
    "serialize_public_key",
    "deserialize_public_key",
    "serialize_private_key",
    "deserialize_private_key",
    "_HAS_CRYPTOGRAPHY",
    # Peer
    "Peer",
    "PeerStore",
    # Channel
    "Message",
    "LocalChannel",
    "RemoteChannel",
    # Manager
    "CommunicationManager",
]
