import type { EnumItemInit, EnumItemOptions, EnumKey, EnumValue, ValueTypeFromSingleInit } from './types';
import { ENUM_ITEM } from './utils';
/**
 * Enum item class
 *
 * @template V General type of value
 * @template K General type of key
 * @template T Initialize object of enum item
 */
export declare class EnumItemClass<T extends EnumItemInit<V>, K extends EnumKey<any> = string, V extends EnumValue = ValueTypeFromSingleInit<T, K>> {
    #private;
    /** Enum item value */
    readonly value: V;
    /** Enum item label (or called display name) */
    readonly label: string;
    /** Enum item key */
    readonly key: K;
    /** Original initialization object */
    readonly raw: T;
    /**
     * **EN:** A boolean value indicates that this is an enum item instance.
     *
     * **CN:** 布尔值，表示这是一个枚举项实例
     */
    readonly [ENUM_ITEM] = true;
    /**
     * Instantiate an enum item
     *
     * @param key Enum item key
     * @param value Enum item value
     * @param label Enum item display name
     * @param raw Original initialization object
     * @param options Construction options
     */
    constructor(key: K, value: V, label: string, raw: T, options?: EnumItemOptions);
    readonly(): this;
    toString(): any;
    toLocaleString(): any;
    valueOf(): V;
}
