import { BaseIndividual } from '../../individual/base';
import { BaseCrossover } from './BaseCrossover';
import { CrossoverParams, IndividualConstructor } from './Crossover';
export interface UniformCrossoverParams<I extends BaseIndividual<T>, T> extends CrossoverParams<I, T> {
    selectionThreshold: number;
}
export declare class UniformCrossover<I extends BaseIndividual<T>, T> extends BaseCrossover<I, T, UniformCrossoverParams<I, T>> {
    cross(firstParent: I, secondParent: I, individualConstructor: IndividualConstructor<I, T>, selectionThreshold?: number, engine?: import("random-js").Engine): I[];
    crossWith(firstParent: I, secondParent: I, params: UniformCrossoverParams<I, T>): I[];
    protected getGenotypeValues(firstParent: I, secondParent: I, params: UniformCrossoverParams<I, T>, index: number): {
        first: T;
        second: T;
    };
    private checkParams;
}
