use strict;
use warnings;

package Context::Singleton::Frame::Promise::Rule;

our $VERSION = v1.0.5;

use parent qw[ Context::Singleton::Frame::Promise ];

sub new {
	my ($class, %params) = @_;

	my $self = $class->SUPER::new (%params);

	$self->{rule} = $params{rule};

	$self;
}

sub rule {
	$_[0]->{rule};
}

sub notify_deducible {
	my ($self, $in_depth) = @_;

	$self->set_deducible ($in_depth)
		if $self->deducible_dependencies;
}

sub deducible_builder {
	my ($self) = @_;

	for my $dependency ($self->deducible_dependencies) {
		next unless $dependency->deduced_in_depth == $self->deduced_in_depth;

		return $dependency;
	}
}

1;