"""Core utility functions and classes."""

from .base_rotator import RotatorError, BaseRotator
from .device import (
    resolve_default_device,
    resolve_torch_device,
    resolve_device,
    set_default_dtype,
    get_default_dtype,
    preferred_dtype,
    device_optimized_dtype,
    steering_vector_dtype,
)
from .layer_combinations import get_layer_combinations, get_layer_combinations_count
from .hardware import (
    SystemResources,
    detect_system_resources,
    docker_mem_limit_mb,
    docker_nproc,
    docker_nofile,
    docker_cpu_limit_s,
    docker_wall_timeout_s,
    docker_fsize_mb,
    docker_pids_limit,
    eval_mem_limit_mb,
    eval_cpu_limit_s,
    eval_time_limit_s,
    default_batch_size,
    eval_batch_size,
    extraction_batch_size,
    subprocess_timeout_s,
    subprocess_timeout_long_s,
    docker_bigcode_mem_limit_mb,
    docker_code_exec_timeout_s,
    code_eval_mem_limit_mb,
    docker_sandbox_time_limit_s,
    docker_sandbox_cpu_limit_s,
    docker_sandbox_mem_limit_mb,
    safe_docker_nproc_default,
    ds1000_cpu_limit_s,
    ds1000_wall_timeout_s,
    ds1000_nproc,
)

__all__ = [
    'RotatorError',
    'BaseRotator',
    'resolve_default_device',
    'resolve_torch_device',
    'resolve_device',
    'set_default_dtype',
    'get_default_dtype',
    'preferred_dtype',
    'device_optimized_dtype',
    'steering_vector_dtype',
    'get_layer_combinations',
    'get_layer_combinations_count',
    'SystemResources',
    'detect_system_resources',
    'docker_mem_limit_mb',
    'docker_nproc',
    'docker_nofile',
    'docker_cpu_limit_s',
    'docker_wall_timeout_s',
    'docker_fsize_mb',
    'docker_pids_limit',
    'eval_mem_limit_mb',
    'eval_cpu_limit_s',
    'eval_time_limit_s',
    'default_batch_size',
    'eval_batch_size',
    'extraction_batch_size',
    'subprocess_timeout_s',
    'subprocess_timeout_long_s',
    'docker_bigcode_mem_limit_mb',
    'docker_code_exec_timeout_s',
    'code_eval_mem_limit_mb',
    'docker_sandbox_time_limit_s',
    'docker_sandbox_cpu_limit_s',
    'docker_sandbox_mem_limit_mb',
    'safe_docker_nproc_default',
    'ds1000_cpu_limit_s',
    'ds1000_wall_timeout_s',
    'ds1000_nproc',
]
