/**
 * Weighted Blurring Mean shift
 */
export default class WeightedBlurringMeanShift {
    /**
     * @param {number} h Smoothing parameter for the kernel
     * @param {number} lambda Distance threshold for determining same cluster
     * @param {number} threshold Distance threshold for determining same cluster
     * @param {'gaussian' | 'rectangular' | 'triangular' | 'epanechnikov' | 'biweight' | 'triweight' | { name: 'gaussian' } | { name: 'rectangular' } | { name: 'triangular' } | { name: 'epanechnikov' } | { name: 'biweight' } | { name: 'triweight' } | function (number): number} [kernel] Kernel name
     */
    constructor(h: number, lambda: number, threshold: number, kernel?: "gaussian" | "rectangular" | "triangular" | "epanechnikov" | "biweight" | "triweight" | {
        name: "gaussian";
    } | {
        name: "rectangular";
    } | {
        name: "triangular";
    } | {
        name: "epanechnikov";
    } | {
        name: "biweight";
    } | {
        name: "triweight";
    } | ((arg0: number) => number));
    _x: number[][];
    _c: any[];
    _h: number;
    _lambda: number;
    _threshold: number;
    _kernel: any;
    /**
     * Category list
     * @type {number[]}
     */
    get categories(): number[];
    /**
     * Number of clusters
     * @type {number}
     */
    get size(): number;
    _distance(a: any, b: any): number;
    /**
     * Initialize model.
     * @param {Array<Array<number>>} data Training data
     */
    init(data: Array<Array<number>>): void;
    _w: any;
    /**
     * Returns predicted categories.
     * @returns {number[]} Predicted values
     */
    predict(): number[];
    /**
     * Fit model.
     * @returns {boolean} `true` if any centroids has moved
     */
    fit(): boolean;
}
