# | Batch operation contracts (schema definitions)
# | Migrated from: provisioning/kcl/batch.k
# | Pattern: Pure schema definitions using Nickel contracts

{
  BatchScheduler = {
    strategy | String,
    resource_limits,
    scheduling_interval | Number,
    enable_preemption | Bool,
  },

  BatchQueue = {
    queue_id | String,
    queue_type | String,
    max_size | Number,
    retention_period | Number,
    dead_letter_queue | String | optional,
    max_delivery_attempts | Number,
  },

  ResourceConstraint = {
    resource_type | String,
    resource_name | String,
    max_units | Number,
    current_units | Number,
    units_per_operation | Number,
    hard_constraint | Bool,
  },

  BatchMetrics = {
    detailed_metrics | Bool,
    retention_hours | Number,
    aggregation_intervals,
    custom_metrics,
    enable_export | Bool,
    export_config,
  },

  ProviderMixConfig = {
    primary_provider | String,
    secondary_providers,
    provider_selection | String,
    cross_provider_networking,
    shared_storage | Dyn | optional,
    provider_limits,
  },

  BatchHealthCheck = {
    enabled | Bool,
    check_interval | Number,
    check_timeout | Number,
    failure_threshold | Number,
    success_threshold | Number,
    health_checks,
    failure_actions,
  },

  BatchAutoscaling = {
    enabled | Bool,
    min_parallel | Number,
    max_parallel | Number,
    scale_up_threshold | Number,
    scale_down_threshold | Number,
    cooldown_period | Number,
    scale_step | Number,
    target_utilization | Number,
  },

  BatchExecutor = {
    executor_id | String,
    name | String,
    description | String,
    scheduler | Dyn | optional,
    queues,
    resource_constraints,
    provider_config | Dyn | optional,
    health_check | Dyn | optional,
    autoscaling | Dyn | optional,
    metrics | Dyn | optional,
    storage | Dyn | optional,
    security_config,
    audit_logging | Bool,
    audit_log_path | String,
    webhook_endpoints,
    api_endpoints,
    performance_config,
  },
}
