/**
 * k-means model
 */
export class KMeans extends KMeansBase {
    /**
     * Returns a new centroid.
     * @param {Array<Array<number>>} centroids Centroids
     * @param {Array<Array<number>>} datas Training data
     * @returns {number[]} Added centroid
     */
    _add(centroids: Array<Array<number>>, datas: Array<Array<number>>): number[];
    _mean(d: any): number[];
    /**
     * Returns moved centroid positions.
     * @param {Array<Array<number>>} centroids Centroids
     * @param {Array<Array<number>>} datas Training data
     * @returns {Array<Array<number>>} Moved centroids
     */
    _move(centroids: Array<Array<number>>, datas: Array<Array<number>>): Array<Array<number>>;
}
/**
 * k-means++ model
 */
export class KMeanspp extends KMeans {
}
/**
 * k-medoids model
 */
export class KMedoids extends KMeans {
}
/**
 * k-medians model
 */
export class KMedians extends KMeans {
}
/**
 * semi-supervised k-means model
 */
export class SemiSupervisedKMeansModel extends KMeansBase {
    /**
     * Categories
     * @type {*[]}
     */
    get categories(): any[];
    _mean(d: any): number[];
    /**
     * Initialize model.
     * @param {Array<Array<number>>} datas Training data
     * @param {(* | null)[]} labels Target values
     */
    init(datas: Array<Array<number>>, labels: (any | null)[]): void;
    _classes: any[];
    add(): void;
    /**
     * Fit and returns total distance the centroid has moved.
     * @param {Array<Array<number>>} datas Training data
     * @param {(* | null)[]} labels Target values
     * @returns {number} Total distance the centroid has moved
     */
    fit(datas: Array<Array<number>>, labels: (any | null)[]): number;
    /**
     * Returns predicted categories.
     * @param {Array<Array<number>>} datas Sample data
     * @returns {*[]} Predicted values
     */
    predict(datas: Array<Array<number>>): any[];
}
/**
 * Bsae class for k-means like model
 */
declare class KMeansBase {
    _centroids: any[];
    /**
     * Centroids
     * @type {Array<Array<number>>}
     */
    get centroids(): Array<Array<number>>;
    /**
     * Number of clusters.
     * @type {number}
     */
    get size(): number;
    _distance(a: any, b: any): number;
    /**
     * Add a new cluster.
     * @param {Array<Array<number>>} datas Training data
     * @returns {number[]} Added centroid
     */
    add(datas: Array<Array<number>>): number[];
    /**
     * Clear all clusters.
     */
    clear(): void;
    /**
     * Returns predicted categories.
     * @param {Array<Array<number>>} datas Sample data
     * @returns {number[]} Predicted values
     */
    predict(datas: Array<Array<number>>): number[];
    /**
     * Fit model and returns total distance the centroid has moved.
     * @param {Array<Array<number>>} datas Training data
     * @returns {number} Total distance the centroid has moved
     */
    fit(datas: Array<Array<number>>): number;
}
export {};
