$params Raw params. * @return ValidationResult */ public function validate( array $params ); /** * State fields this operation may write for the given params (patterns like 'item:*:total' allowed). * * @param array $params Normalised params. * @return string[] */ public function touched_fields( array $params ); /** * Predicts the change WITHOUT mutating the subscription (no setters, no save()). * * @param \WC_Subscription $subscription Subscription. * @param array $params Normalised params. * @return DiffSet */ public function compute_diff( \WC_Subscription $subscription, array $params ); /** * Warnings or blocks for undoing a previously applied item. * * @param RunItem $item Applied item (with before/after state). * @param \WC_Subscription $current Current subscription. * @return array */ public function undo_constraints( RunItem $item, \WC_Subscription $current ); }