/**
 * Spectral clustering
 */
export default class SpectralClustering {
    /**
     * @param {'rbf' | 'knn' | { name: 'rbf', sigma?: number, k?: number } | { name: 'knn', k?: number }} [affinity] Affinity type name
     */
    constructor(affinity?: "rbf" | "knn" | {
        name: "rbf";
        sigma?: number;
        k?: number;
    } | {
        name: "knn";
        k?: number;
    });
    _size: number;
    _epoch: number;
    _clustering: KMeanspp;
    _affinity: "rbf" | "knn" | {
        name: "rbf";
        sigma?: number;
        k?: number;
    } | {
        name: "knn";
        k?: number;
    };
    /**
     * Number of clusters.
     * @type {number}
     */
    get size(): number;
    /**
     * Epoch.
     * @type {number}
     */
    get epoch(): number;
    /**
     * Initialize model.
     * @param {Array<Array<number>>} datas Training data
     */
    init(datas: Array<Array<number>>): void;
    _n: number;
    ready: boolean;
    _ev: import("../util/matrix.js").default<number>;
    /**
     * Add a new cluster.
     */
    add(): void;
    _s_ev: number[][];
    /**
     * Clear all clusters.
     */
    clear(): void;
    /**
     * Returns predicted categories.
     * @returns {number[]} Predicted values
     */
    predict(): number[];
    /**
     * Fit and returns total distance the centroid has moved.
     * @returns {number} Total distance the centroid has moved
     */
    fit(): number;
}
import { KMeanspp } from './kmeans.js';
