import { SearchHappening } from "./SearchHappening";
import { HelpfulAction } from '..';
/** State generated in the process of the plan search. */
export declare class SearchState {
    readonly id: number;
    readonly origId: string;
    readonly g: number;
    readonly earliestTime: number;
    readonly planHead: SearchHappening[];
    readonly landmarks: number;
    readonly parentId?: number | undefined;
    readonly actionName?: string | undefined;
    /** Heuristic value. If the state was evaluated. */
    h: number | undefined;
    /** Total (planhead + relaxed plan) makespan. If the state was evaluated. */
    totalMakespan: number | undefined;
    /** Relaxed plan makespan. If the state was evaluated. */
    relaxedPlan: SearchHappening[] | undefined;
    /** Helpful actions for this state. If the state was evaluated. */
    helpfulActions: HelpfulAction[] | undefined;
    /** Is dead-end. If the state was evaluated. */
    isDeadEnd: boolean | undefined;
    /**
     * State was already visited, or is worse than another state already visited.
     * If the state was actually created and validated by the memoisation. States that are deemed visited/worse are trimmed in the search tree.
     */
    wasVisitedOrIsWorse: boolean | undefined;
    /** This state meets the goal criteria and other applicable criteria to represent the end-state of a plan. */
    isPlan: boolean;
    private _isEvaluated;
    /**
     * Search state constructor.
     * @param id state ID (assigned when received from the planner)
     * @param origId original/external state ID (by which the planner refers to it)
     * @param g generation (initial state is gen 0)
     * @param earliestTime earliest time this state may be scheduled
     * @param planHead plan head (list of happening starting from the initial state)
     * @param landmarks number of landmarks encountered up to this state
     * @param parentId parent state id
     * @param actionName action applied to create this state
     */
    constructor(id: number, origId: string, g: number, earliestTime: number, planHead: SearchHappening[], landmarks: number, parentId?: number | undefined, actionName?: string | undefined);
    /** Creates initial search state. */
    static createInitial(): SearchState;
    get isEvaluated(): boolean;
    /**
     * Records state evaluation.
     * @param h heuristic value
     * @param totalMakespan total plan makespan (plan head plus relaxed plan makespan)
     * @param helpfulActions helpful action list
     * @param relaxedPlan relaxed plan
     */
    evaluate(h: number, totalMakespan: number, helpfulActions: HelpfulAction[], relaxedPlan: SearchHappening[]): SearchState;
    /**
     * Makes this state a search dead-end.
     */
    setDeadEnd(): SearchState;
    /**
     * Makes this state trimmed by state memoisation.
     */
    setVisitedOrIsWorse(): SearchState;
    /** Returns the plan head, and if present, the actions from the relaxed plan. */
    getTotalPlan(): SearchHappening[];
    toString(): string;
}
