

package org.drools.core.common;

import org.drools.core.beliefsystem.ModedAssertion;
import org.drools.core.beliefsystem.simple.SimpleMode;
import org.drools.core.phreak.RuleAgendaItem;
import org.drools.core.reteoo.TerminalNode;
import org.drools.core.spi.Activation;
import org.drools.core.spi.PropagationContext;
import org.kie.api.runtime.rule.FactHandle;
import org.kie.internal.event.rule.ActivationUnMatchListener;

import java.util.List;

public interface AgendaItem<T extends ModedAssertion<T>> extends Activation<T> {

    void setPropagationContext(PropagationContext context);

    void setSalience(int salience);

    void setActivationFactHandle( InternalFactHandle factHandle );

    RuleAgendaItem getRuleAgendaItem();

    void removeAllBlockersAndBlocked(InternalAgenda agenda);

    void removeBlocked(LogicalDependency<SimpleMode> dep);

    TerminalNode getTerminalNode();

    ActivationUnMatchListener getActivationUnMatchListener();

    void setActivationUnMatchListener(ActivationUnMatchListener activationUnMatchListener);

    String toExternalForm();

    boolean isCanceled();

    void cancel();

    List<FactHandle> getFactHandles();
}
