"""
Core Components

Reusable core functionality: authentication, rate limiting, scheduling.
"""

from backend.web.core.auth import (
    validate_admin_token,
    get_token_repository,
    get_document_repository,
    get_annotation_repository,
    get_dataset_repository,
    get_training_task_repository,
    get_model_version_repository,
    get_batch_upload_repository,
    AdminTokenDep,
    TokenRepoDep,
    DocumentRepoDep,
    AnnotationRepoDep,
    DatasetRepoDep,
    TrainingTaskRepoDep,
    ModelVersionRepoDep,
    BatchUploadRepoDep,
)
from backend.web.core.rate_limiter import RateLimiter
from backend.web.core.scheduler import start_scheduler, stop_scheduler, get_training_scheduler
from backend.web.core.autolabel_scheduler import (
    start_autolabel_scheduler,
    stop_autolabel_scheduler,
    get_autolabel_scheduler,
)
from backend.web.core.task_interface import TaskRunner, TaskStatus, TaskManager

__all__ = [
    "validate_admin_token",
    "get_token_repository",
    "get_document_repository",
    "get_annotation_repository",
    "get_dataset_repository",
    "get_training_task_repository",
    "get_model_version_repository",
    "get_batch_upload_repository",
    "AdminTokenDep",
    "TokenRepoDep",
    "DocumentRepoDep",
    "AnnotationRepoDep",
    "DatasetRepoDep",
    "TrainingTaskRepoDep",
    "ModelVersionRepoDep",
    "BatchUploadRepoDep",
    "RateLimiter",
    "start_scheduler",
    "stop_scheduler",
    "get_training_scheduler",
    "start_autolabel_scheduler",
    "stop_autolabel_scheduler",
    "get_autolabel_scheduler",
    "TaskRunner",
    "TaskStatus",
    "TaskManager",
]
