import MemoiTarget from "./MemoiTarget.js";
declare class MemoiGen {
    private _target;
    private _isEmpty;
    private _isOnline;
    private _isUpdateAlways;
    private _approxBits;
    private _isProf;
    private _profReportFiles;
    private _tableSize;
    private _isDebug;
    private _applyPolicy;
    private _isZeroSim;
    private _isResetFunc;
    constructor(target: MemoiTarget);
    /**
     * 		Sets whether to generate a reset function.
     * */
    setResetFunc(isResetFunc?: boolean): void;
    /**
     * 		Sets whether to generate code for a 0% sim.
     * */
    setZeroSim(isZeroSim?: boolean): void;
    /**
     * 		Sets whether to generate an empty table in the final application.
     * */
    setEmpty(isEmpty?: boolean): void;
    /**
     * 		Sets whether to generate update code in the final application.
     * */
    setOnline(isOnline?: boolean): void;
    /**
     * 		Sets whether to always update the table on a miss, even if not vacant.
     * */
    setUpdateAlways(isUpdateAlways?: boolean): void;
    /**
     * 		Sets the approximation bits in the final application.
     * 		Defaults to 0.
     * */
    setApproxBits(bits?: number): void;
    /**
     * 		Sets the table size in the final application.
     * 		Defaults to 65536.
     * */
    setTableSize(size?: number): void;
    /**
     * 		Sets whether to generate debug code in the final application.
     * */
    setDebug(isDebug?: boolean): void;
    /**
     *		Sets the apply policy.
     *		Defaults to MemoiApplyPolicy.NOT_EMPTY.
     */
    setApplyPolicy(policy?: MemoiGen.ApplyPolicy): void;
    /**
     * Checks files with the given names for reports matching the current target.
     * @param names - the paths of the report files
     */
    setProfFromFileNames(...names: string[]): void;
    /**
     * Checks dir for reports matching the current target.
     * @param dir - The path to the directory of the report files
     */
    setProfFromDir(dir: string): void;
    /**
     * 		Generates a table for all calls of the target function.
     *
     * 		If a profiling reports are provided, the reports are used to
     * 	determine whether to generate for all target or for each single
     * 	target.
     */
    generate(): Set<string>;
    /**
     * 		Generates a table for each call of the target function.
     *
     * 		If a profiling reports are provided, the reports are used to
     * 	determine whether to generate for all target or for each single
     * 	target.
     */
    generateEach(): Set<string>;
    /**
     * 		Generates a table for all calls of the target function.
     *
     * 		If a profiling reports are provided, the reports are used to
     * 	determine whether to generate for all target or for each single
     * 	target.
     */
    generateAll(): Set<string>;
    private generateFromReport;
    private _generateEach;
    private _generateAll;
    generatePerfectInst(): void;
    private generateGeneric;
    private addMainDebug;
    private checkParams;
}
declare namespace MemoiGen {
    enum ApplyPolicy {
        ALWAYS = "ALWAYS",
        NOT_EMPTY = "NOT_EMPTY",
        OVER_25_PCT = "OVER_25_PCT",
        OVER_50_PCT = "OVER_50_PCT",
        OVER_75_PCT = "OVER_75_PCT",
        OVER_90_PCT = "OVER_90_PCT"
    }
}
export default MemoiGen;
//# sourceMappingURL=MemoiGen.d.ts.map