import type { Target } from '../target';
import { Task } from '../task';
import type { PlannerConfig } from './types';
import type { Plan } from './plan';
export * from './types';
export * from './plan';
export * from './node';
export interface Planner<TState = any> {
    /**
     * Calculate a plan to get from the current state
     * to the target state. It will throw an exception if a plan
     * cannot be found.
     */
    findPlan(current: TState, target: Target<TState>): Plan<TState>;
}
declare function from<TState = any>({ tasks: inputTasks, config, }: {
    tasks?: Array<Task<TState, any, any>>;
    config?: Partial<PlannerConfig<TState>>;
}): Planner<TState>;
export declare const Planner: {
    from: typeof from;
};
