<?php

namespace CouponsPlus\App\Coupon\Tree\Abilities;

use CouponsPlus\Original\Characters\StringManager;
use CouponsPlus\Original\Collections\Collection;

interface TestableGroupData extends WithTestableParent, WithNodeData, WithFilterableCheck
{
    public function getType() : StringManager; // AND/OR/ANDOR/CONTEXT
    /**
     * DO NOT CONFUSE IT WITH TestableData::TYPE
     * This mode indicates action (whether to filter the items or to just test them without filtering them)
     *
     * It IS different from TestableData::TYPE.filter because that indicates the type of the card ('filter', 'condition', 'offer') The have the same name but they are NOT the same.
     */
    public function getMode() : StringManager; // filter/test(condition) 
    public function getChildren() : Collection; //TestableGroup[] | TestableData[]
    public function getId() : string;
}
