package at.oefai.aaa.agent.jam;

/**
 * Contract for an appraisal.
 * The relation appraised can be accessed and affecting the agents intentions can be triggered
 * @author Stefan Rank
 */
public interface Appraisal {
    String IMPULSE_GOAL_STRING = "showImpulse";
    float OLD_WMR_AGE_THRESHOLD = 200f; //cycles
    float IMPULSE_BONUS = 10f;
    float IMPULSE_THRESHOLD = 22f;
    float MY_EXPECTED_ACTION_IMPULSE_THRESHOLD_BONUS = 7f;
    float IMPULSE_APPRAISAL_IMPULSE_THRESHOLD_BONUS = 5f;
    float UTILITY_FACTOR = 20f;

    WorldModelRelation getRelation();

    float getIntensity();

    // SP
    float getSignedIntensity();

    void update(final float value);

    boolean updateEffects();

    String verboseString();

    String getImpulseExpression();

    void postImpulse();

    void infoProcessingEffects(final WorldModelTable pWorldModel);

    void tryToCope();

    void removeCoping();
}
