import * as tf from "@tensorflow/tfjs-core";
export default class KMeans {
    k: number;
    maxIter: number;
    distanceFunction: typeof KMeans.EuclideanDistance;
    centroids: tf.Tensor;
    constructor({ k, maxIter, distanceFunction }?: {
        k?: number | undefined;
        maxIter?: number | undefined;
        distanceFunction?: typeof KMeans.EuclideanDistance | undefined;
    });
    static EuclideanDistance(values: tf.Tensor, centroids: tf.Tensor): tf.Tensor<tf.Rank>;
    private GenerateIndices;
    private NewCentroid;
    private NewCentroids;
    private AssignCluster;
    private AssignClusters;
    private RandomSample;
    private CheckCentroidSimmilarity;
    private TrainSingleStep;
    Train(values: tf.Tensor, callback?: (_: tf.Tensor<tf.Rank>, __: tf.Tensor<tf.Rank>) => void): tf.Tensor<tf.Rank>;
    TrainAsync(values: tf.Tensor, callback?: (_iter: number, _centroid: tf.Tensor<tf.Rank>, _predictions: tf.Tensor<tf.Rank>) => Promise<void>): Promise<tf.Tensor<tf.Rank>>;
    Predict(y: tf.Tensor): tf.Tensor<tf.Rank>;
    Centroids(): tf.Tensor<tf.Rank>;
    Dispose(): void;
}
