"""
Alkahest Python bindings for ERC20, ERC721, ERC1155, and token bundle operations.
"""

from .alkahest_py import (
    PyAlkahestClient as AlkahestClient,
    EnvTestManager as EnvTestManager,
    PyMockERC20 as MockERC20,
    PyMockERC721 as MockERC721,
    PyMockERC1155 as MockERC1155,
    PyWalletProvider as WalletProvider,
    PyERC20EscrowObligationData as ERC20EscrowObligationData,
    PyERC20PaymentObligationData as ERC20PaymentObligationData,
    PyERC721EscrowObligationData as ERC721EscrowObligationData,
    PyERC721PaymentObligationData as ERC721PaymentObligationData,
    PyERC1155EscrowObligationData as ERC1155EscrowObligationData,
    PyERC1155PaymentObligationData as ERC1155PaymentObligationData,
    StringObligationClient,
    PyStringObligationData as StringObligationData,
    CommitRevealObligationClient,
    PyCommitRevealObligationData as CommitRevealObligationData,
    OracleClient,
    PyOracleAddresses as OracleAddresses,
    PyOracleAttestation as OracleAttestation,
    PyDecision as Decision,
    PyArbitrationMode as ArbitrationMode,
    PyTrustedOracleArbiterDemandData as TrustedOracleArbiterDemandData,
    PyErc20Data as Erc20Data,
    # Address Configuration Classes
    PyErc20Addresses as Erc20Addresses,
    PyErc721Addresses as Erc721Addresses,
    PyErc1155Addresses as Erc1155Addresses,
    PyTokenBundleAddresses as TokenBundleAddresses,
    PyAttestationAddresses as AttestationAddresses,
    PyStringObligationAddresses as StringObligationAddresses,
    PyCommitRevealObligationAddresses as CommitRevealObligationAddresses,
    PyArbitersAddresses as ArbitersAddresses,
    # IEAS Types
    PyAttestation as Attestation,
    PyAttestationRequest as AttestationRequest,
    PyAttestationRequestData as AttestationRequestData,
    PyAttested as Attested,
    PyRevocationRequest as RevocationRequest,
    PyRevocationRequestData as RevocationRequestData,
    PyRevoked as Revoked,
    PyTimestamped as Timestamped,
)

__all__ = [
    "AlkahestClient",
    "EnvTestManager", 
    "MockERC20",
    "MockERC721",
    "MockERC1155",
    "WalletProvider",
    "ERC20EscrowObligationData",
    "ERC20PaymentObligationData",
    "ERC721EscrowObligationData",
    "ERC721PaymentObligationData",
    "ERC1155EscrowObligationData",
    "ERC1155PaymentObligationData",
    "StringObligationClient",
    "StringObligationData",
    "CommitRevealObligationClient",
    "CommitRevealObligationData",
    "DecodedAttestation",
    "OracleClient",
    "OracleAddresses",
    "OracleAttestation",
    "Decision",
    "ArbitrationMode",
    "TrustedOracleArbiterDemandData",
    "Erc20Data",
    # Address Configuration Classes
    "Erc20Addresses",
    "Erc721Addresses", 
    "Erc1155Addresses",
    "TokenBundleAddresses",
    "AttestationAddresses",
    "StringObligationAddresses",
    "CommitRevealObligationAddresses",
    "ArbitersAddresses",
    # IEAS Types
    "Attestation",
    "AttestationRequest",
    "AttestationRequestData",
    "Attested",
    "RevocationRequest",
    "RevocationRequestData",
    "Revoked",
    "Timestamped",
]