/**
 * k-nearest neighbor
 */
export class KNN extends KNNBase {
    /**
     * Add a data.
     * @param {number[]} point Training data
     * @param {*} category Target value
     */
    add(point: number[], category: any): void;
    /**
     * Add datas.
     * @param {Array<Array<number>>} datas Training data
     * @param {*[]} targets Target values
     */
    fit(datas: Array<Array<number>>, targets: any[]): void;
    /**
     * Returns predicted categories.
     * @param {Array<Array<number>>} datas Sample data
     * @returns {*[]} Predicted values
     */
    predict(datas: Array<Array<number>>): any[];
}
/**
 * k-nearest neighbor regression
 */
export class KNNRegression extends KNNBase {
    /**
     * Add a data.
     * @param {number[]} point Training data
     * @param {number} category Target value
     */
    add(point: number[], category: number): void;
    /**
     * Add datas.
     * @param {Array<Array<number>>} datas Training data
     * @param {number[]} targets Target values
     */
    fit(datas: Array<Array<number>>, targets: number[]): void;
    /**
     * Returns predicted values.
     * @param {Array<Array<number>>} datas Sample data
     * @returns {number[]} Predicted values
     */
    predict(datas: Array<Array<number>>): number[];
}
/**
 * k-nearest neighbor anomaly detection
 */
export class KNNAnomaly extends KNNBase {
    /**
     * Add a data.
     * @param {number[]} point Training data
     */
    add(point: number[]): void;
    /**
     * Add datas.
     * @param {Array<Array<number>>} datas Training data
     */
    fit(datas: Array<Array<number>>): void;
    /**
     * Returns anomaly degrees.
     * @param {Array<Array<number>>} datas Sample data
     * @returns {number[]} Predicted values
     */
    predict(datas: Array<Array<number>>): number[];
}
/**
 * k-nearest neighbor density estimation
 */
export class KNNDensityEstimation extends KNNBase {
    /**
     * Add a data.
     * @param {number[]} point Training data
     */
    add(point: number[]): void;
    /**
     * Add datas.
     * @param {Array<Array<number>>} datas Training data
     */
    fit(datas: Array<Array<number>>): void;
    _logGamma(z: any): number;
    /**
     * Returns predicted values.
     * @param {Array<Array<number>>} datas Sample data
     * @returns {number[]} Predicted values
     */
    predict(datas: Array<Array<number>>): number[];
}
/**
 * Semi-supervised k-nearest neighbor
 */
export class SemiSupervisedKNN extends KNNBase {
    _orgk: number;
    /**
     * Add a data.
     * @param {number[]} point Training data
     * @param {* | null} category Target value
     */
    add(point: number[], category: any | null): void;
    /**
     * Add datas.
     * @param {Array<Array<number>>} datas Training data
     * @param {(* | null)[]} targets Target values
     */
    fit(datas: Array<Array<number>>, targets: (any | null)[]): void;
    /**
     * Returns predicted values.
     * @returns {*[]} Predicted values
     */
    predict(): any[];
}
/**
 * Bsae class for k-nearest neighbor models
 */
declare class KNNBase {
    /**
     * @param {number} [k] Number of neighborhoods
     * @param {'euclid' | 'manhattan' | 'chebyshev' | 'minkowski' | function (number[], number[]): number} [metric] Metric name
     */
    constructor(k?: number, metric?: 'euclid' | 'manhattan' | 'chebyshev' | 'minkowski' | ((arg0: number[], arg1: number[]) => number));
    _p: any[];
    _c: any[];
    _k: number;
    _metric: "euclid" | "manhattan" | "chebyshev" | "minkowski" | ((arg0: number[], arg1: number[]) => number);
    _d: (a: any, b: any) => any;
    _near_points(data: any): any[];
    /**
     * Add a data.
     * @param {number[]} point Training data
     * @param {*} [category] Target value
     */
    _add(point: number[], category?: any): void;
}
export {};
