import { Engine } from 'random-js';
import { BaseIndividual } from '../../individual/base/BaseIndividual';
export declare type IndividualConstructor<I extends BaseIndividual<T>, T> = new (genotype: T[]) => I;
export interface CrossoverParams<I extends BaseIndividual<T>, T> {
    engine: Engine;
    individualConstructor: IndividualConstructor<I, T>;
}
export interface Crossover<I extends BaseIndividual<T>, T, Params extends CrossoverParams<I, T>> {
    cross(firstParent: I, secondParent: I, ...args: any[]): I[];
    crossWith(firstParent: I, secondParent: I, params: Params): I[];
}
