import { Immutability } from './immutability.abstract';
/**
 * @description The base abstraction with immutability for handling data-related classes.
 * @export
 * @abstract
 * @class DataCore
 * @template Type Represents the type of data value.
 * @extends {Immutability}
 */
export declare abstract class DataCore<Type> extends Immutability {
    /**
     * @description Returns the `string` tag representation of the `DataCore` class when used in `Object.prototype.toString.call(instance)`.
     * @public
     * @readonly
     * @type {string}
     */
    get [Symbol.toStringTag](): string;
    /**
     * @description Returns the value of generic type variable `Type`.
     * @public
     * @abstract
     * @readonly
     * @type {Type}
     */
    abstract get value(): Type;
    /**
     * @description Abstract method to clear or remove the stored data value.
     * @public
     * @abstract
     * @returns {this} Returns current instance.
     */
    abstract destroy(): this;
    /**
     * @inheritdoc
     * @public
     * @returns {this}
     */
    lock(): this;
    /**
     * @description Sets the data value. Ensure `super.validate()` is called before invoking this method.
     * @public
     * @abstract
     * @param {Type} value The data of `Type` to set.
     * @returns {this} Returns current instance.
     */
    abstract set(value: Type): this;
}
