export function defuzzifyCentroid(fuzzyOutput: {
    [x: string]: number;
}, outputSets: FuzzySet[], step?: number): number;
export function trapezoid(value: number, a: number, b: number, c: number, d: number, optimize?: boolean): number;
/**
 * Represents a single Membership Function (Trapezoidal).
 */
export class FuzzySet {
    /**
     * Utility to calculate fuzzy membership using a trapezoidal shape.
     * @param {number} value - The input value to check.
     * @param {number} a - Start of the rise.
     * @param {number} b - End of the rise (start of plateau).
     * @param {number} c - Start of the fall (end of plateau).
     * @param {number} d - End of the fall.
     * @param {boolean} [optimize=false] - Performance optimization flag.
     * @returns {number} Degree of membership [0, 1].
     */
    static trapezoid(value: number, a: number, b: number, c: number, d: number, optimize?: boolean): number;
    /**
     * @param {string} name - Name of the set (e.g., "Hot").
     * @param {number} a - Left foot.
     * @param {number} b - Left shoulder.
     * @param {number} c - Right shoulder.
     * @param {number} d - Right feet.
     * @param {boolean} [optimize=false] - Enables performance optimization.
     */
    constructor(name: string, a: number, b: number, c: number, d: number, optimize?: boolean);
    set name(value: string);
    get name(): string;
    set a(value: number);
    get a(): number;
    set b(value: number);
    get b(): number;
    set c(value: number);
    get c(): number;
    set d(value: number);
    get d(): number;
    set optimize(value: boolean);
    get optimize(): boolean;
    /**
     * Calculates the membership degree.
     * @param {number} x - Crisp input.
     * @returns {number}
     */
    calculate(x: number): number;
    #private;
}
/**
 * The Inference Engine handles linguistic variables and defuzzification.
 */
export class MamdaniInferenceSystem {
    /**
     * Registers a linguistic variable and its sets.
     * @param {string} name - Variable name (e.g., "temperature").
     * @param {FuzzySet[]} sets - Array of fuzzy sets.
     */
    addVariable(name: string, sets: FuzzySet[]): void;
    /**
     * Removes a linguistic variable.
     * @param {string} name - Variable name (e.g., "temperature").
     * @returns {boolean} True if the element was successfully removed.
     */
    removeVariable(name: string): boolean;
    /**
     * Gets a linguistic variable and its sets.
     * @param {string} name - Variable name (e.g., "temperature").
     * @returns {FuzzySet[]}
     */
    getVariable(name: string): FuzzySet[];
    /**
     * Checks if a linguistic variable exists.
     * @param {string} name - Variable name (e.g., "temperature").
     * @returns {boolean}
     */
    hasVariable(name: string): boolean;
    /**
     * Fuzzifies a crisp input into a map of memberships.
     * @param {string} varName
     * @param {number} value
     * @returns {Object.<string, number>}
     */
    fuzzify(varName: string, value: number): {
        [x: string]: number;
    };
    #private;
}
