import { BaseIndividual } from '../../individual/base';
import { BaseCrossover } from './BaseCrossover';
import { CrossoverParams, IndividualConstructor } from './Crossover';
export interface NPointsCrossoverParams<I extends BaseIndividual<T>, T> extends CrossoverParams<I, T> {
    numberOfCrossoverPoints: number;
}
export declare class NPointsCrossover<I extends BaseIndividual<T>, T> extends BaseCrossover<I, T, NPointsCrossoverParams<I, T>> {
    private crossoverPointsRange;
    private crossoverPoints;
    private crossoverPointIndex;
    cross(firstParent: I, secondParent: I, numberOfCrossoverPoints: number, individualConstructor: IndividualConstructor<I, T>, engine?: import("random-js").Engine): I[];
    crossWith(firstParent: I, secondParent: I, params: NPointsCrossoverParams<I, T>): I[];
    protected getGenotypeValues(firstParent: I, secondParent: I, params: NPointsCrossoverParams<I, T>, index: number): {
        first: T;
        second: T;
    };
    private setCrossoverPointsRange;
    private checkCrossoverParams;
    private generateCrossoverPoints;
}
