using System;
using System.Threading;

namespace MultiWheelC.TrajectoryPlanning.EMPlanner;

/// <summary>Public lateral-planning entry point backed by the solver-neutral SQP optimizer.</summary>
public sealed class LateralPlanner
{
    private readonly SequentialConvexOptimizer _optimizer;

    public LateralPlanner(IQpSolver qpSolver)
    {
        _optimizer = new SequentialConvexOptimizer(qpSolver ?? throw new ArgumentNullException(nameof(qpSolver)));
    }

    public LateralPlanningResult Plan(LateralPlanningInput input, CancellationToken cancellationToken)
    {
        return _optimizer.Optimize(input, cancellationToken);
    }
}
