import { Field } from "../../Joinpoints.js";
/**
 * Class defining the structure of an autotuner
 */
export declare class Configs {
    static readonly PACKAGE = "autotuner.configs.";
    static readonly FACTORY: string;
    static readonly RANGED: string;
    static readonly Tuple = "tdrc.tuple.Tuple";
    static readonly order: {
        normal: string;
        random: string;
    };
    /**
    A list of values to test in the order they are given.
    **/
    static default(knobs: Field | Field[], values: string[], type: string): Configuration;
    /**
    A list of values to test in random order.
    **/
    static random(knobs: Field | Field[], values: string[], type: string): Configuration;
    static combine(knobs: Field | Field[], values: string[][], type: string): Configuration;
    static randomOf(knobs: Field | Field[], ranges: PrimitiveRange | PrimitiveRange[]): Configuration;
    static range(knobs: Field | Field[], ranges: PrimitiveRange | PrimitiveRange[]): Configuration;
    static around(knobs: Field | Field[], ranges: PrimitiveRange | PrimitiveRange[]): Configuration;
    static linear(knobs: Field | Field[], ranges: PrimitiveRange | PrimitiveRange[]): Configuration;
    static custom(knobs: Field | Field[], configCode: string, type: string): Configuration;
}
export declare class Configuration {
    applier: string;
    configCode: string;
    type: string;
    constructor(knobs: Field | Field[], configCode: string, type: string);
    declare(name: string): string;
    declareProvider(name: string): string;
    provider(): string;
    get(): string;
    toString(): string;
}
export declare function rangedConfig(knobs: Field | Field[], ranges: PrimitiveRange | PrimitiveRange[], type: string, acceptsSingle: boolean): Configuration;
export declare class PrimitiveRange {
    type: string;
    lowerLimit: number;
    upperLimit: number;
    step: number | undefined;
    value: number | undefined;
    descend: string | undefined;
    ascend: string | undefined;
    constructor(type: string, lowerLimit: number, upperLimit: number, step?: number, value?: number);
    setClimbers(descend: string, ascend: string): this;
    initValue(value: number): this;
    toConfig(): string;
    instance(): string;
    declare(name: string): string;
}
export declare class IntegerRange extends PrimitiveRange {
    constructor(lowerLimit: number, upperLimit: number, step: number, value: number);
}
export declare class FloatRange extends PrimitiveRange {
    constructor(lowerLimit: number, upperLimit: number, step: number, value: number);
}
//# sourceMappingURL=Configs.d.ts.map