import { SearchState } from "./SearchState";
import { ProblemInfo, DomainInfo, Plan, PlanStep } from '..';
import { SearchHappening } from "./SearchHappening";
/** Extracts `Plan` from a `SearchState`. */
export declare class SearchStateToPlan {
    private readonly domain?;
    private readonly problem?;
    private readonly epsilon;
    constructor(domain?: DomainInfo | undefined, problem?: ProblemInfo | undefined, epsilon?: number);
    convert(state: SearchState): Plan;
    static associate(endHappening: SearchHappening, planSteps: PlanStepBuilder[]): void;
}
/** Helps pairing corresponding start and end happenings. */
declare class PlanStepBuilder {
    readonly start: SearchHappening;
    end: SearchHappening | undefined;
    constructor(start: SearchHappening);
    static fromStart(happening: SearchHappening): PlanStepBuilder;
    /**
     * Sets corresponding end happening.
     * @param endHappening corresponding end happening
     */
    setEnd(endHappening: SearchHappening): void;
    hasEnd(): boolean;
    /**
     * Checks whether the given endHappening corresponds to this start.
     * @param endHappening end happening to test
     */
    correspondsToEnd(endHappening: SearchHappening): boolean;
    private getIterations;
    toPlanStep(stateTime: number, epsilon: number): PlanStep;
    private getCommitment;
}
export {};
