import BenchmarkInstance from "@specs-feup/lara/api/lara/benchmark/BenchmarkInstance.js";
import { JavaClasses } from "@specs-feup/lara/api/lara/util/JavaTypes.js";
import { Joinpoint } from "../../Joinpoints.js";
import CMaker from "../../clava/cmake/CMaker.js";
/**
 * Instance of a Clava benchmark.
 *
 * Implements _compilePrivate and .getKernel().
 */
export default abstract class ClavaBenchmarkInstance extends BenchmarkInstance {
    cmaker: CMaker | undefined;
    cmakerProvider: () => CMaker;
    constructor(name: string);
    setCMakerProvider(cmakerProvider: () => CMaker): void;
    /**
     * The output folder for this BenchmarkInstance.
     */
    private getOutputFolder;
    protected compilationEngineProvider(name: string): CMaker;
    /**
     * Allows to customize the CMake options used during compilation.
     *
     * @param name
     * @returns
     */
    protected getCMaker(): CMaker;
    protected compilePrivate(): JavaClasses.File | undefined;
    /**
     * Speciallized implementation for Clava that automatically saves and restores the AST, extending classes just need to implement addCode() and loadPrologue().
     */
    protected loadPrivate(): void;
    protected closePrivate(): void;
    protected loadCached(astFile: JavaClasses.File): void;
    /**
     * Looks for #pragma kernel, returns target of that pragma
     */
    getKernel(): Joinpoint;
    /*** FUNCTIONS TO IMPLEMENT ***/
    /**
     * Configuration that is required by the benchmarks (e.g., setting the standard)
     */
    protected abstract loadPrologue(): void;
    /**
     * Adds the code to the AST, can assume the AST is empty.
     */
    protected abstract addCode(): void;
    /**
     *
     */
    protected abstract closeEpilogue(): void;
}
//# sourceMappingURL=ClavaBenchmarkInstance.d.ts.map