import { InitializationOperator } from '../../../core/operators/InitializationOperator';
import { EvaluationOperator } from '../../../core/operators/EvaluationOperator';
import { SelectionOperator } from '../../../core/operators/SelectionOperator';
import { CrossoverOperator } from '../../../core/operators/CrossoverOperator';
import { MutationOperator } from '../../../core/operators/MutationOperator';
import { ReplacementOperator } from '../../../core/operators/ReplacementOperator';
import { ElitismOperator } from '../../../core/operators/ElitismOperator';
import { TerminationOperator } from '../../../core/operators/TerminationOperator';
interface GALoopOperatorConfig<T> {
    population?: T[];
    initializationOperator?: InitializationOperator<T>;
    evaluationOperator?: EvaluationOperator<T>;
    selectionOperator?: SelectionOperator<T>;
    crossoverOperator?: CrossoverOperator<T>;
    mutationOperator?: MutationOperator<T>;
    replacementOperator?: ReplacementOperator<T>;
    elitismOperator?: ElitismOperator<T>;
    terminationOperator?: TerminationOperator<T>;
    fitnessFunction: (ind: T) => number | Promise<number>;
    maxGenerations: number;
    eliteCount?: number;
    fitnessLimit?: number;
    populationSize?: number;
}
export declare const GALoopOperator: <T>({ population, initializationOperator, evaluationOperator, selectionOperator, crossoverOperator, mutationOperator, replacementOperator, elitismOperator, terminationOperator, fitnessFunction, maxGenerations, eliteCount, fitnessLimit, populationSize }: GALoopOperatorConfig<T>) => Promise<{
    bestSolution: T;
    bestFitness: number;
    population: T[];
    generation: number;
}>;
export {};
