/**
 * @typedef {object} CURENode
 * @property {number[]} [point] Data point of leaf node
 * @property {number} [index] Data index of leaf node
 * @property {number[][]} [repr] Represented points
 * @property {number} [distance] Distance between children nodes
 * @property {number} size Number of leaf nodes
 * @property {CURENode[]} [children] Children nodes
 * @property {CURENode[]} leafs Leaf nodes
 */
/**
 * Clustering Using REpresentatives
 */
export default class CURE {
    /**
     * @param {number} c Number of representative points
     */
    constructor(c: number);
    _c: number;
    _a: number;
    _root: {
        repr: any[];
        distance: number;
        children: any[];
        readonly leafs: any[];
    };
    _distance(a: any, b: any): number;
    /**
     * Fit model.
     * @param {Array<Array<number>>} data Training data
     */
    fit(data: Array<Array<number>>): void;
    /**
     * Returns the specified number of clusters.
     * @param {number} number Number of clusters
     * @returns {CURENode[]} Cluster nodes
     */
    getClusters(number: number): CURENode[];
    /**
     * Returns predicted categories.
     * @param {number} k Number of clusters
     * @returns {number[]} Predicted values
     */
    predict(k: number): number[];
}
export type CURENode = {
    /**
     * Data point of leaf node
     */
    point?: number[];
    /**
     * Data index of leaf node
     */
    index?: number;
    /**
     * Represented points
     */
    repr?: number[][];
    /**
     * Distance between children nodes
     */
    distance?: number;
    /**
     * Number of leaf nodes
     */
    size: number;
    /**
     * Children nodes
     */
    children?: CURENode[];
    /**
     * Leaf nodes
     */
    leafs: CURENode[];
};
