export declare class VariableManager {
    private readonly variables;
    private readonly validators;
    /**
     * Check if a given variable exists
     * @param name name of variable
     *
     * @returns boolean
     */
    hasVariable(name: string): boolean;
    /**
     * Fetch a value for a given variable name
     * @param name name of variable
     * @param def default value
     *
     * @returns variable value
     */
    getVariable<T = string>(name: string, def?: T): T;
    /**
     * Get Key/Value Object of all variables
     *
     * @returns Object of Key/Value pairs
     */
    getVariables(): Record<string, unknown>;
    /**
     * Update a given variables value
     * @param name name of variable
     * @param value new value
     */
    setVariable<T = string>(name: string, value: T): T;
    /**
     * Fully removes all traces of a variable from bento
     * @param name name of variable
     */
    deleteVariable(name: string): void;
    /**
     * Add a new validator into Bento
     * @param name validator name
     * @param validator validator function
     */
    addValidator(name: string, validator: (value: any, ...args: Array<any>) => boolean): void;
    /**
     * Remove validator from Bento
     * @param name validator name
     */
    removeValidator(name: string): void;
    /**
     * Run a validator
     * @param name validator name
     * @param value validator value
     * @param args array of args to be passed
     *
     * @returns validator result
     */
    runValidator(name: string, value: unknown, ...args: Array<any>): boolean;
}
