import { BudgetManager } from "../../budget/BudgetManager";
import { Encoding } from "../../Encoding";
import { EncodingSampler } from "../../EncodingSampler";
import { ObjectiveManager } from "../../objective/managers/ObjectiveManager";
import { Procreation } from "../../operators/procreation/Procreation";
import { TerminationManager } from "../../termination/TerminationManager";
import { SearchAlgorithm } from "../SearchAlgorithm";
/**
 * Base class for Evolutionary Algorithms (EA).
 * Uses the T encoding.
 */
export declare abstract class EvolutionaryAlgorithm<T extends Encoding> extends SearchAlgorithm<T> {
    /**
     * The sampler used to sample new encodings.
     * @protected
     */
    protected _encodingSampler: EncodingSampler<T>;
    /**
     * The size of the population.
     * @protected
     */
    protected _populationSize: number;
    /**
     * The procreation operator to apply.
     */
    protected _procreation: Procreation<T>;
    /**
     * Constructor.
     *
     * @param objectiveManager The objective manager used by the specific algorithm
     * @param encodingSampler The encoding sampler used by the specific algorithm
     * @param crossover The crossover operator to apply
     *
     */
    constructor(objectiveManager: ObjectiveManager<T>, encodingSampler: EncodingSampler<T>, procreation: Procreation<T>, populationSize: number);
    /**
     * @inheritDoc
     * @protected
     */
    protected _initialize(budgetManager: BudgetManager<T>, terminationManager: TerminationManager): Promise<void>;
    /**
     * @inheritDoc
     * @protected
     */
    protected _iterate(budgetManager: BudgetManager<T>, terminationManager: TerminationManager): Promise<void>;
    /**
     * Makes a selection of the population based on the environment.
     *
     * @param size The size of the selection
     * @protected
     */
    protected abstract _environmentalSelection(size: number): void;
}
//# sourceMappingURL=EvolutionaryAlgorithm.d.ts.map