///|
pub using @constructive {clarke_wright_seed}

///|
pub using @core {
  build_solution,
  build_route,
  type CostBreakdown,
  type DistanceMetric,
  type FeasibilityAssessment,
  type FeasibilityPolicy,
  type ConstraintSummary,
  type RouteEncodingError,
  type RouteProfile,
  type ValidationIssue,
  type ValidationReport,
  analyze_instance,
  assess_solution,
  decode_routes,
  encode_routes,
  feasible_insertions,
  make_instance_with_metric,
  make_instance,
  route_metrics_text,
  route_profile,
  solution_signature,
  validate_instance,
  validate_solution,
  type Customer,
  type Depot,
  type DestroyOperator,
  type ProblemVariant,
  type RepairOperator,
  type RouteMetrics,
  type RoutePlan,
  type SolveConfig,
  type SolveResult,
  type SolveStats,
  type Solution,
  type VehicleProfile,
  type VrpInstance,
}

///|
pub using @instance {
  all_sample_names,
  type CatalogEntry,
  type GeneratorConfig,
  generate_cvrp,
  generate_vrptw,
  instance_fingerprint,
  parse_cvrp,
  parse_instance,
  parse_solomon,
  type ParseError,
  catalog_find,
  catalog_names,
  catalog_overview,
  catalog_variant_count,
  catalog_customer_total,
  sample_catalog,
  balanced_dispatch_sample,
  generated_stress_sample,
  infeasible_capacity_sample,
  micro_cvrp_sample,
  sample_by_name,
  sample_names,
  small_cvrp_sample,
  tight_vrptw_sample,
  urban_vrptw_sample,
}

///|
pub using @operators {
  type ImprovementReport,
  type NeighborhoodKind,
  type RelatednessWeights,
  best_reverse,
  best_relocate,
  best_swap,
  destroy_fraction,
  destroy_solution,
  greedy_repair,
  demand_first_repair,
  repair_until_stable,
  regret2_repair,
  repair_solution,
  repair_with_priority,
  relatedness_score,
  route_balance_score,
  time_window_repair,
  variable_neighborhood_descent,
}

///|
pub using @report {
  ascii_route_map,
  ascii_route_map_with_legend,
  benchmark_header,
  benchmark_result_markdown,
  instance_overview,
  route_markdown,
  route_metrics_csv,
  solution_csv,
  solution_diagnostics,
  solution_markdown_detailed,
  solution_report_bundle,
  solution_text_detailed,
  summarize_solution,
  solution_markdown,
  solution_text,
}

///|
pub using @search {
  type AnnealingConfig,
  type AnnealingRun,
  type LocalSearchConfig,
  type MultiStartRun,
  type PortfolioResult,
  type SearchSummary,
  acceptance_probability,
  anneal,
  local_search,
  solve,
  solve_portfolio,
  solve_with_seed,
  solve_with_strategies,
  summarize_search,
}

///|
pub using @benchmark {
  type BenchmarkCase,
  type BenchmarkResult,
  a_n32_k5_case,
  a_n32_k5_text,
  result_text,
  run_case,
}