/**
 * @typedef {object} ProbabilityModel
 * @property {function(Array<Array<number>>): void} fit Fit model
 * @property {function(Array<Array<number>>): number[]} probability Returns predicted values
 */
/**
 * Probability based classifier
 */
export default class ProbabilityBasedClassifier {
    /**
     * @param {() => ProbabilityModel} model Function to generate the model
     */
    constructor(model: () => ProbabilityModel);
    _classes: any[];
    _models: any[];
    _modelcls: () => ProbabilityModel;
    /**
     * Fit model.
     * @param {Array<Array<number>>} x Training data
     * @param {*[]} y Target values
     */
    fit(x: Array<Array<number>>, y: any[]): void;
    /**
     * Returns predicted values.
     * @param {Array<Array<number>>} x Sample data
     * @returns {(* | null)[]} Predicted values
     */
    predict(x: Array<Array<number>>): (any | null)[];
}
export type ProbabilityModel = {
    /**
     * Fit model
     */
    fit: (arg0: Array<Array<number>>) => void;
    /**
     * Returns predicted values
     */
    probability: (arg0: Array<Array<number>>) => number[];
};
