namespace OpenNest;
///
/// Optional post contract for nest-level rapid verification. Opt in only when the
/// post preserves Plate.Parts order and each placed Program's contour order and
/// pierce positions. This does not certify retract height, parking or controller macros.
/// Unknown/reordering posts still get nest diagnostics, but require acknowledgment
/// that their final rapid sequence has not been verified.
///
public interface IPostVerificationSupport
{
/// True when the post preserves the placed order for every nest.
bool PreservesPlacedProgramOrder { get; }
///
/// Why posting with the current settings would not move in the
/// placed order, or null when it would. A post whose order depends on the nest or its
/// settings overrides this; it must return null only when the posted motion sequence
/// provably equals the placed one.
///
string PlacedProgramOrderChange(Nest nest) =>
PreservesPlacedProgramOrder ? null : "does not declare that it preserves placed part/contour order and pierce positions";
}