import { DomainInfo, ProblemInfo, Plan, parser } from '../index';
import { PlannerConfiguration, PlannerProvider, PlannerRunConfiguration } from './PlannerProvider';
import { PlannerResponseHandler } from './PlannerResponseHandler';
/** Planner run-time configuration. This serves for troubleshooting run failures.*/
export interface ProviderConfiguration {
    /** Configuration that was used by the planner factory to create this Planner */
    configuration: PlannerConfiguration;
    /** Planner provider that was used to create this Planner */
    provider?: PlannerProvider;
}
/**
 * Abstract base class for all planners.
 */
export declare abstract class Planner {
    protected readonly plannerPath: string;
    protected plannerConfiguration: PlannerRunConfiguration;
    readonly providerConfiguration: ProviderConfiguration;
    private _planningProcessKilled;
    constructor(plannerPath: string, plannerConfiguration: PlannerRunConfiguration, providerConfiguration: ProviderConfiguration);
    /** `true` if the planning run was stopped */
    get planningProcessKilled(): boolean;
    get requiresKeyboardInput(): boolean;
    /** `true` if the planner supports search debugger call-backs */
    get supportsSearchDebugger(): boolean;
    abstract plan(domain: DomainInfo, problem: ProblemInfo, planParser: parser.PddlPlannerOutputParser, responseHandler: PlannerResponseHandler): Promise<Plan[]>;
    stop(): void;
}
