package DX::Step::InvokeNextPredicate;

use DX::Class;

with 'DX::Role::Step';

has proposition => (is => 'ro', required => 1);

sub apply_to {
  my ($self, $ss) = @_;
  my $hyp = $ss->current_hypothesis;
  if (my $step = $self->proposition->resolve_for($hyp->scope)) {
    return $ss->but(next_step => $step);
  }
  return undef;
}

1;
