"""NATS service primitives: Job and RPC services with matching clients."""

from nats_common.services.job_client import JobCompletion, NatsJobClient
from nats_common.services.job_service import (
    JobPublishConfig,
    JobQueueConfig,
    NatsJob,
    NatsJobService,
    PublishMode,
)
from nats_common.services.models import (
    JobEnvelope,
    JobStatus,
    JobStatusUpdate,
    RpcRequestEnvelope,
    RpcResponseEnvelope,
)
from nats_common.services.rpc_client import NatsRPCClient
from nats_common.services.rpc_service import NatsRPC, NatsRPCService

__all__ = [
    # Models
    "JobEnvelope",
    "JobStatus",
    "JobStatusUpdate",
    "RpcRequestEnvelope",
    "RpcResponseEnvelope",
    # Job configuration
    "JobPublishConfig",
    "JobQueueConfig",
    "PublishMode",
    # Job service (server-side)
    "NatsJob",
    "NatsJobService",
    # Job client (caller-side)
    "JobCompletion",
    "NatsJobClient",
    # RPC service (server-side)
    "NatsRPC",
    "NatsRPCService",
    # RPC client (caller-side)
    "NatsRPCClient",
]
