import { PlannerProvider } from "./PlannerProvider";
/** Keeps track of planner providers. */
export declare class PlannerRegistrar {
    private readonly providers;
    /**
     * Extensions should call this method to register their planner wrapper.
     * @param kind planner kind this `provider` supports
     * @param provider planner provider
     */
    registerPlannerProvider(kind: PlannerKind, provider: PlannerProvider): void;
    getPlannerProviders(): PlannerProvider[];
    getPlannerProvider(kind: PlannerKind): PlannerProvider | undefined;
}
export declare class PlannerKind {
    readonly kind: string;
    constructor(kind: string);
    /**
     * Derives a kind of planner implementation/variant.
     * @param implementation implementation/variant name
     * @returns new planner kind
     */
    derive(implementation: string): PlannerKind;
}
export declare class WellKnownPlannerKind {
    static readonly EXECUTABLE: PlannerKind;
    static readonly JAVA_JAR: PlannerKind;
    static readonly NODE_JS_SCRIPT: PlannerKind;
    static readonly PYTHON_SCRIPT: PlannerKind;
    static readonly COMMAND: PlannerKind;
    static readonly SERVICE_SYNC: PlannerKind;
    static readonly SERVICE_ASYNC: PlannerKind;
    static readonly PLANNING_AS_A_SERVICE: PlannerKind;
    static readonly PLANNING_AS_A_SERVICE_PREVIEW: PlannerKind;
}
