import type { Bindings } from "../../rdf/bindings.ts";
import Dataset from "../../rdf/dataset.ts";
import type { PipelineStage } from "../pipeline/pipeline-engine.ts";
import { PlanBuilder } from "../plan-builder.ts";
/**
 * A StageBuilder encapsulate a strategy for executing a class of SPARQL operations
 * @abstract
 */
export default abstract class StageBuilder {
    protected _builder: PlanBuilder | null;
    protected _dataset: Dataset;
    constructor(dataset: Dataset);
    get builder(): PlanBuilder | null;
    set builder(builder: PlanBuilder | null);
    get dataset(): Dataset;
    set dataset(dataset: Dataset);
    abstract execute(...args: any[]): Promise<PipelineStage<Bindings>>;
}
