/**
 * @typedef {object} RANSACSubModel
 * @property {function(Array<Array<number>>, *[]): void} fit Fit model
 * @property {function(Array<Array<number>>): *[]} predict Returns predicted values
 * @property {function(*[], *[]): number} [score] Returns a number how accurate the prediction is
 */
/**
 * Random sample consensus
 */
export default class RANSAC {
    /**
     * @param {new () => RANSACSubModel} model Function to generate the model
     * @param {number | null} [sample] Sampling rate
     */
    constructor(model: new () => RANSACSubModel, sample?: number | null);
    _model: new () => RANSACSubModel;
    _sample: number;
    _best_score: number;
    _best_model: RANSACSubModel;
    /**
     * 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 {*[]} Predicted values
     */
    predict(x: Array<Array<number>>): any[];
}
export type RANSACSubModel = {
    /**
     * Fit model
     */
    fit: (arg0: Array<Array<number>>, arg1: any[]) => void;
    /**
     * Returns predicted values
     */
    predict: (arg0: Array<Array<number>>) => any[];
    /**
     * Returns a number how accurate the prediction is
     */
    score?: (arg0: any[], arg1: any[]) => number;
};
