import { LengthOptions, LengthSettings } from '@typedly/length';
/**
 * @description Represents a length value with optional minimum and maximum constraints.
 * @export
 * @class Length
 * @template {number | undefined} [Value=number | undefined] The type of the length value, which can be a number or undefined.
 * @template {number | undefined} [Min=number | undefined] The type of the minimum length value, which can be a number or undefined.
 * @template {number | undefined} [Max=number | undefined] The type of the maximum length value, which can be a number or undefined.
 */
export declare class Length<Value extends number | undefined = number | undefined, Min extends number | undefined = number | undefined, Max extends number | undefined = number | undefined> {
    #private;
    /**
     * @description The length value of generic type variable `Value`.
     * @public
     * @readonly
     * @type {Value }
     */
    get length(): Value;
    /**
     * @description The maximum length value of generic type variable `Max`.
     * @public
     * @readonly
     * @type {Max}
     */
    get max(): Max;
    /**
     * @description The minimum length value of generic type variable `Min`.
     * @public
     * @readonly
     * @type {Min}
     */
    get min(): Min;
    /**
     * @description The configuration object containing the length, minimum, and maximum values.
     * @public
     * @readonly
     * @type {LengthSettings<Value, Min, Max>}
     */
    get config(): LengthSettings<Value, Min, Max>;
    /**
     * Creates an instance of `Length`.
     * @constructor
     * @param {?(Value | LengthOptions<Value, Min, Max>)} [length] The initial length value, which can be a number or an object containing min, max, and value properties.
     */
    constructor(length?: Value | LengthOptions<Value, Min, Max>);
    /**
     * @description Checks whether the length is valid based on the defined minimum and maximum constraints.
     * @public
     * @returns {boolean} Returns the true if the length is valid, otherwise false.
     */
    isValid(): boolean;
    /**
     * @description Sets the length, minimum, and maximum values.
     * @public
     * @param {LengthOptions<Value, Min, Max>} [param0={}]
     * @param {LengthOptions<Value, Min, Max>} param0.max Optional maximum length value.
     * @param {LengthOptions<Value, Min, Max>} param0.min Optional minimum length value.
     * @param {LengthOptions<Value, Min, Max>} param0.value Optional length value.
     * @returns {this} The current instance of Length.
     */
    set({ max, min, value }?: LengthOptions<Value, Min, Max>): this;
    /**
     * @description Sets the length value.
     * @public
     * @param {(Value | undefined)} value The length value to set.
     * @returns {this} The current instance of Length.
     */
    setLength(value: Value | undefined): this;
    /**
     * @description Sets the maximum length value.
     * @public
     * @param {(Max | undefined)} max The maximum length value to set.
     * @returns {this} The current instance of Length.
     */
    setMax(max: Max | undefined): this;
    /**
     * @description Sets the minimum length value.
     * @public
     * @param {(Min | undefined)} min The minimum length value to set.
     * @returns {this} The current instance of Length.
     */
    setMin(min: Min | undefined): this;
    /**
     * @description Sets both the minimum and maximum length values.
     * @public
     * @param {Min | undefined} min The minimum length value to set.
     * @param {Max | undefined} max The maximum length value to set.
     * @returns {this} The current instance of Length.
     */
    setMinMax(min: Min | undefined, max: Max | undefined): this;
}
