/**
 * Extended Nearest Neighbor
 */
export default class ENN {
    /**
     * @param {0 | 1 | 2} [version] Version
     * @param {number} [k] Number of neighborhoods
     * @param {'euclid' | 'manhattan' | 'chebyshev' | 'minkowski' | function (number[], number[]): number} [metric] Metric name
     */
    constructor(version?: 0 | 1 | 2, k?: number, metric?: "euclid" | "manhattan" | "chebyshev" | "minkowski" | ((arg0: number[], arg1: number[]) => number));
    _k: number;
    _v: 0 | 2 | 1;
    _metric: "euclid" | "manhattan" | "chebyshev" | "minkowski" | ((arg0: number[], arg1: number[]) => number);
    _d: (a: any, b: any) => any;
    /**
     * Add datas.
     * @param {Array<Array<number>>} datas Training data
     * @param {*[]} targets Target values
     */
    fit(datas: Array<Array<number>>, targets: any[]): void;
    _x: number[][];
    _c: any[];
    _classes: any[];
    _nears: any[];
    _n: any[];
    _t: any[];
    /**
     * Returns predicted categories.
     * @param {Array<Array<number>>} datas Sample data
     * @returns {*[]} Predicted values
     */
    predict(datas: Array<Array<number>>): any[];
    _predict0(data: any): any;
    _predict1(data: any): any;
    _predict2(data: any): any;
}
