/**
 * @typedef {object} BinaryModel
 * @property {function(Array<Array<number>>, *[]): void} init Initialize model
 * @property {function(...*): void} fit Fit model
 * @property {function(Array<Array<number>>): number[]} predict Returns predicted values
 */
/**
 * Ensemble binary models
 */
export default class EnsembleBinaryModel {
    /**
     * @param {() => BinaryModel} model Function to generate the model
     * @param {'oneone' | 'onerest'} type Type name
     * @param {*[]} [classes] Initial class labels
     */
    constructor(model: () => BinaryModel, type: "oneone" | "onerest", classes?: any[]);
    /**
     * Initialize model.
     * @param {Array<Array<number>>} train_x Training data
     * @param {*[]} train_y Target values
     */
    init(train_x: Array<Array<number>>, train_y: any[]): void;
    /**
     * Fit model.
     * @param {Array<Array<number>>} x Training data
     * @param {*[]} y Target values
     * @param {...*} args Arguments for fit
     */
    fit(x: Array<Array<number>>, y: any[], ...args: any[]): void;
    /**
     * Returns predicted values.
     * @param {Array<Array<number>>} data Sample data
     * @returns {*[]} Predicted values
     */
    predict(data: Array<Array<number>>): any[];
}
export type BinaryModel = {
    /**
     * Initialize model
     */
    init: (arg0: Array<Array<number>>, arg1: any[]) => void;
    /**
     * Fit model
     */
    fit: (...args: any[]) => void;
    /**
     * Returns predicted values
     */
    predict: (arg0: Array<Array<number>>) => number[];
};
