import { Prefix } from './prefix.class';
import { Suffix } from './suffix.class';
import { AffixedName } from '../type/affixed-name.type';
import { PrefixedName } from '../type/prefixed-name.type';
import { SuffixedName } from '../type/suffixed-name.type';
export declare class Name<AvailableNames extends string = string, N extends AvailableNames = AvailableNames, PrefixValue extends string | undefined = undefined, SuffixValue extends string | undefined = undefined> extends String {
    #private;
    get availableNames(): AvailableNames[] | undefined;
    get name(): N;
    get prefix(): Prefix<PrefixValue> | undefined;
    get suffix(): Suffix<SuffixValue> | undefined;
    get value(): AffixedName<PrefixValue, N, SuffixValue>;
    get withPrefix(): PrefixedName<PrefixValue, N>;
    get withSuffix(): SuffixedName<N, SuffixValue>;
    protected static template<AvailableNames extends string | undefined, PrefixValue extends string | undefined, SuffixValue extends string | undefined, N extends string>(strings: TemplateStringsArray, ...values: [AvailableNames[] | undefined, PrefixValue, N, SuffixValue]): string;
    constructor(name: N, prefix?: PrefixValue, suffix?: SuffixValue, availableNames?: AvailableNames[]);
    toNgClass(active?: boolean): {
        [index: string]: boolean;
    };
    valueOf(): AffixedName<PrefixValue, N, SuffixValue>;
}
