use DX::Utils qw(expand_deps);
use DX::Class;
-has veracity_depends_on => (is => 'ro', required => 1);
+has veracity_depends_on => (is => 'ro', required => 1, isa => DependencyList);
-has actions => (is => 'ro', required => 1);
+has actions => (is => 'ro', required => 1, isa => ArrayRef[Action]);
sub next_resolution { $_[0] }
use DX::Utils qw(expand_deps);
use DX::Class;
-has proposition => (is => 'ro');
+has proposition => (is => 'ro', isa => Proposition);
-has geometry_depends_on => (is => 'ro', required => 1);
+has geometry_depends_on => (is => 'ro', required => 1, isa => DependencyList);
-has aperture => (is => 'ro', required => 1);
+has aperture => (is => 'ro', required => 1, isa => ApertureList);
-has members => (is => 'ro', required => 1);
+has members => (
+ is => 'ro', required => 1, isa => ArrayRef[ResolutionStrategy|Resolution]
+);
sub for_deparse {
my ($self) = @_;
package DX::ResolutionStrategy;
use DX::Resolution;
+use Types::Standard qw(CodeRef Tuple slurpy);
use DX::Class;
-has action_prototypes => (is => 'ro', required => 1);
+has action_prototypes => (
+ is => 'ro', required => 1,
+ isa => ArrayRef[Tuple[Value, Str, slurpy ArrayRef[Value]]]
+);
-has veracity_depends_on_builder => (is => 'ro', required => 1);
+has veracity_depends_on_builder => (
+ is => 'ro', required => 1, isa => CodeRef
+);
-has implementation_candidates => (is => 'ro', required => 1);
+has implementation_candidates => (
+ is => 'ro', required => 1, isa => ArrayRef[ArrayRef[ArrayRef[Value]]]
+);
has aperture => (is => 'lazy', builder => sub {
my ($self) = @_;
qw(
DependencyType _DependencyTree DependencySpec
One DependencyGroupEntry DependencyGroup ValuePath
+ EventType ApertureList DependencyList
),
)
;
declare _DependencyTree => where { is_DependencyTree($_) };
-declare DependencySpec => as Tuple[DependencyType, slurpy ArrayRef[Str]];
+declare DependencySpec => as Tuple[DependencyType, slurpy ValuePath];
declare DependencyList => as ArrayRef[DependencySpec];
(Optional[Maybe[HashRef[One]]]) x 4
]];
+declare ApertureList => as ArrayRef[Tuple[EventType, slurpy ValuePath]];
+
## These were from the dependency group thing which makes no sense until
## we have scoping, so revisit it then
#