import { SearchAlgorithm } from "../algorithms/SearchAlgorithm";
import { Encoding } from "../Encoding";
import { Budget } from "./Budget";
import { BudgetListener } from "./BudgetListener";
import { BudgetType } from "./BudgetType";
/**
 * Manager for the budget of the search process.
 *
 * Keeps track how much budget is left before the search process has to be terminated.
 *
 * @author Mitchell Olsthoorn
 */
export declare class BudgetManager<T extends Encoding> implements BudgetListener<T> {
    /**
     * List of currently active budgets.
     * @protected
     */
    protected _budgets: Map<BudgetType, Budget<T>>;
    constructor();
    /**
     * Return the available budget as a value from zero to one.
     *
     * Loops over all active budgets to find the one with the lowest budget.
     */
    getBudget(): number;
    /**
     * Return whether the budget manager has any budget left.
     */
    hasBudgetLeft(): boolean;
    /**
     * Add budget to the list of active budgets.
     *
     * @param budget The budget to add
     */
    addBudget(name: BudgetType, budget: Budget<T>): this;
    getBudgetObject(name: BudgetType): Budget<T>;
    /**
     * Remove budget from the list of active budgets.
     *
     * @param budget The budget to remove
     */
    removeBudget(budget: Budget<T>): this;
    /**
     * @inheritDoc
     */
    initializationStarted(): void;
    /**
     * @inheritDoc
     */
    initializationStopped(): void;
    /**
     * @inheritDoc
     */
    searchStarted(): void;
    /**
     * @inheritDoc
     */
    searchStopped(): void;
    /**
     * @inheritDoc
     */
    iteration(searchAlgorithm: SearchAlgorithm<T>): void;
    /**
     * @inheritDoc
     */
    evaluation(): void;
}
//# sourceMappingURL=BudgetManager.d.ts.map