import { Class } from "../../Joinpoints.js";
/**
 * Provides basic functionality to test versions by: <br>
 * * adding a new timer, test time, best time, bestVersion, adapt, numRuns and warmup fields, <br>
 * * creating basic code to start the adaptation after "numRuns" executions <br>
 * * creating basic code to update after a given execution <br> <br>
 * must invoke methods "onNewVersion", "ifBetterVersion" and "beforeUpdate" before injecting the adaptation <br>
 * must insert the following variables: adapt(), update(), timerStart, timerStop
 */
export declare function NewVersionTester($class: Class, targetType: string, timeUnit?: string, numRuns?: number, warmup?: number, jumpIfWorse?: boolean): {
    $tester: import("../../Joinpoints.js").Field;
    onInitialize: (code: string) => string;
    onFinalize: (code: string) => string;
    setTests: (versions: string[]) => string;
    isAdapting: undefined;
    hasFinished: string;
    start: string;
    pause: string;
    stop: string;
    timerStart: string;
    timerStop: string;
    getTime: string;
    update: string;
    timerStopAndUpdate: string;
    testTime: string;
    bestTime: string;
    testPos: string;
    bestPos: string;
    bestVersion: string;
    numRuns: string;
};
export declare function VersionTester($class: Class, targetType: string, targetFieldRef: string, numRuns?: number, timeUnit?: string, warmup?: number, jumpIfWorse?: boolean): {
    $testTime: import("../../Joinpoints.js").Field;
    $bestTime: import("../../Joinpoints.js").Field;
    $bestVersion: import("../../Joinpoints.js").Field;
    $numRuns: import("../../Joinpoints.js").Field;
    $improved: string;
    ifBetterVersion: (code: string) => void;
    onNewVersion: (code: string) => void;
    beforeUpdate: (code: string) => void;
    onInitialize: (code: string) => void;
    timerStart: ($target?: import("../../Joinpoints.js").Joinpoint, when?: "replace" | "before" | "after") => string;
    timerStop: ($target?: import("../../Joinpoints.js").Joinpoint, when?: "replace" | "before" | "after") => string;
    getTime: () => string;
    adapt: (alwaysAdapt: boolean, useNewVersionInInit: boolean) => string;
    update: () => string;
    start: string;
    stop: string;
    pause: string;
    isAdapting: string;
};
//# sourceMappingURL=VersionTester.d.ts.map