package at.oefai.aaa.agent.jam;

import java.io.Serializable;

import at.oefai.aaa.agent.jam.types.Binding;

/**
 * An interface for representing the agent's actions.
 * @author Marc Huber
 * @author Jaeho Lee
 * @author Stefan Rank
 */
interface Action extends Serializable {
    static enum Result { CANNOT_EXECUTE, FAILED, SUCCEEDED }

    String getName();

    /** Perform the action's functionality. */
    Result execute(Binding b, Goal currentGoal);

    boolean isExecutableAction();

    // Info methods

    String formattedString(Binding b);

    String getTraceFile();

    int getTraceLine();

    void setTrace(String file, int line);
}



