import { Plan } from '../Plan';
import { PlanStep } from '../PlanStep';
import { ProblemInfo } from '../ProblemInfo';
import { DomainInfo } from '../DomainInfo';
import { URI } from 'vscode-uri';
export interface PddlPlanParserOptions {
    epsilon: number;
    minimumPlansExpected?: number;
}
/**
 * Parses plan in the PDDL form incrementally - line/buffer at a time.
 * It can parse a continuous output of a planner, which may contain multiple plans.
 */
export declare class PddlPlannerOutputParser {
    private domain;
    private problem;
    readonly options: PddlPlanParserOptions;
    private onPlanReady?;
    private readonly plans;
    private pddlPlanParser;
    private planBuilder;
    private endOfBufferToBeParsedNextTime;
    private xmlPlanBuilder;
    private planTimeScale;
    constructor(domain: DomainInfo, problem: ProblemInfo, options: PddlPlanParserOptions, onPlanReady?: ((plans: Plan[]) => void) | undefined);
    setPlanMetaData(makespan: number, metric: number, statesEvaluated: number, _elapsedTimeInSeconds: number, planTimeScale: number): void;
    /**
     * Appends and parses the planner output.
     * @param text planner output
     */
    appendBuffer(text: string): void;
    appendXplan(planXml: string): Promise<Plan[]>;
    /**
     * Parses one line of parser output.
     * @param outputLine one line of planner output
     */
    appendLine(outputLine: string): void;
    /**
     * Appends plan step. Use this when the plan does not need parsing.
     * @param planStep plan step to add to the plan
     */
    appendStep(planStep: PlanStep): void;
    /**
     * Call this when the planning engine stopped. This flushes the last line in the buffered output through the parsing
     * and adds the last plan to the collection of plans.
     */
    onPlanFinished(): void;
    /** Gets current plan's provisional makespan. */
    getCurrentPlanMakespan(): number;
    /**
     * Gets all plans.
     */
    getPlans(): Plan[];
    static parseOnePlan(planText: string, planUri: URI, epsilon: number): Plan;
}
