import { CommonName } from './common-name.class';
/**
 * @description
 * @export
 * @class Name
 * @template {string} [Prefix='']
 * @template {string} [Name=string]
 * @template {string} [Suffix='']
 * @extends {CommonName}
 */
export declare class Name<Prefix extends string = '', Name extends string = string, Suffix extends string = ''> extends CommonName {
    #private;
    /**
     * @description Returns privately stored name.
     * @public
     * @readonly
     * @type {Name}
     */
    get get(): Name;
    /**
     * @inheritdoc
     * @public
     * @readonly
     * @type {Prefix}
     */
    get prefix(): Prefix;
    /**
     * @inheritdoc
     * @public
     * @readonly
     * @type {Suffix}
     */
    get suffix(): Suffix;
    /**
     * @description Generates the name with prefix and suffix.
     * @public
     * @readonly
     * @type {`${Prefix}${Name}${Suffix}`}
     */
    get generate(): `${Prefix}${Name}${Suffix}`;
    /**
     * Creates an instance of `Name`.
     * @constructor
     * @param {Name} name
     * @param {{ prefix?: Prefix, suffix?: Suffix }} [param0={}]
     * @param {Prefix} param0.prefix
     * @param {Suffix} param0.suffix
     */
    constructor(name: Name, { prefix, suffix }?: {
        prefix?: Prefix;
        suffix?: Suffix;
    });
    /**
     * @description Set the name.
     * @public
     * @param {string} name A `string` type value.
     * @returns {this}
     */
    set<CustomName extends string = string>(name: Name | CustomName): this;
}
