/**
 *  Weighted K-Nearest Neighbor
 */
export default class WeightedKNN {
    /**
     * @param {number} k Number of neighbors
     * @param {'euclid' | 'manhattan' | 'chebyshev' | 'minkowski' | function (number[], number[]): number} [metric] Metric name
     * @param {'gaussian' | 'rectangular' | 'triangular' | 'epanechnikov' | 'quartic' | 'triweight' | 'cosine' | 'inversion'} [weight] Weighting scheme name
     */
    constructor(k: number, metric?: 'euclid' | 'manhattan' | 'chebyshev' | 'minkowski' | ((arg0: number[], arg1: number[]) => number), weight?: 'gaussian' | 'rectangular' | 'triangular' | 'epanechnikov' | 'quartic' | 'triweight' | 'cosine' | 'inversion');
    _k: number;
    _metric: "euclid" | "manhattan" | "chebyshev" | "minkowski" | ((arg0: number[], arg1: number[]) => number);
    _d: (a: any, b: any) => any;
    _weight: "gaussian" | "epanechnikov" | "rectangular" | "triangular" | "triweight" | "quartic" | "cosine" | "inversion";
    _w: ((d: any) => number) | ((d: any) => 0 | 0.5) | ((d: any) => number) | ((d: any) => number) | ((d: any) => number) | ((d: any) => number) | ((d: any) => number) | ((d: any) => number);
    /**
     * Fit model.
     * @param {Array<Array<number>>} x Training data
     * @param {*[]} y Target values
     */
    fit(x: Array<Array<number>>, y: any[]): void;
    _x: number[][];
    _y: any[];
    _c: any[];
    /**
     * Returns predicted categories.
     * @param {Array<Array<number>>} data Sample data
     * @returns {*[]} Predicted values
     */
    predict(data: Array<Array<number>>): any[];
}
