<?php

namespace CouponsPlus\App\Coupon\Tree\Sets\Abilities;

use CouponsPlus\Original\Collections\Collection;
use CouponsPlus\App\Conditions\Abilities\TestableComposite;
use CouponsPlus\App\Coupon\Tree\Abilities\TestableCompositeCollection;

interface ItemsSetSourcePath extends ItemsSetSource
{
    /**
     * This is an items set source itself,
     * the final testable composite should be a Sequential Testable composite of the steps
     *
     * @return TestableComposite&TestableCompositeCollection
     *
     * @override
     */
    public function getTestableComposite();
    /**
     * collection of ItemsSetSource
     */
    public function getSteps() : Collection;
    public function addStep(ItemsSetSource $itemsSetSource);
    public function hasSteps(): bool;
}