import type { EnumItemClass } from './enum-item';
import type { BooleanFirstOptionConfig, ColumnFilterItem, EnumInit, EnumItemOptionData, EnumItemOptions, EnumKey, EnumValue, FindEnumKeyByValue, IEnumItems, MenuItemOption, ObjectFirstOptionConfig, ToSelectConfig, ValueMap, ValueTypeFromSingleInit } from './types';
import { ENUM_ITEMS } from './utils';
/**
 * Enum items array, mostly are simple wrappers for EnumCollectionClass
 *
 * @template T Type of the initialization data of the enum collection
 *
 * @class EnumValuesArray
 *
 * @extends {EnumItemClass<T, K, V>[]}
 *
 * @export
 *
 * @implements {IEnumValues<T, K, V>}
 */
export declare class EnumItemsArray<T extends EnumInit<K, V>, K extends EnumKey<T> = EnumKey<T>, V extends EnumValue = ValueTypeFromSingleInit<T[K], K>> extends Array<EnumItemClass<T[K], K, V>> implements IEnumItems<T, K, V> {
    #private;
    /**
     * Instantiate an enum items array
     *
     * @memberof EnumValuesArray
     *
     * @param {T} raw Original initialization data object
     * @param {...EnumItemClass<T[K], K, V>[]} items Enum item instance array
     */
    constructor(raw: T, options: EnumItemOptions | undefined, ...items: EnumItemClass<T[K], K, V>[]);
    /**
     * **EN:** A boolean value indicates that this is an enum items array.
     *
     * **CN:** 布尔值，表示这是一个枚举项数组
     */
    readonly [ENUM_ITEMS] = true;
    label(keyOrValue?: string | V): string | undefined;
    key(value?: string | V): K | undefined;
    has(keyOrValue?: string | V): boolean;
    toSelect(): EnumItemOptionData<K, V>[];
    toSelect(config?: ToSelectConfig & BooleanFirstOptionConfig<V>): EnumItemOptionData<K | '', V | ''>[];
    toSelect<FK = never, FV = never>(config?: ToSelectConfig & ObjectFirstOptionConfig<FK, FV>): EnumItemOptionData<K | (FK extends never ? FV : FK), V | (FV extends never ? V : FV)>[];
    /** @deprecated Use `toSelect` instead */
    options(): EnumItemOptionData<K, V>[];
    /** @deprecated Use `toSelect` instead */
    options(config?: ToSelectConfig & BooleanFirstOptionConfig<V>): EnumItemOptionData<K | '', V | ''>[];
    /** @deprecated Use `toSelect` instead */
    options<FK = never, FV = never>(config?: ToSelectConfig & ObjectFirstOptionConfig<FK, FV>): EnumItemOptionData<K | (FK extends never ? FV : FK), V | (FV extends never ? V : FV)>[];
    toValueMap(): ValueMap<V>;
    /** @deprecated Use `toValueMap` instead */
    valuesEnum(): ValueMap<V>;
    toMenu(): MenuItemOption<V>[];
    /** @deprecated Use `toMenu` instead */
    menus(): MenuItemOption<V>[];
    toFilter(): ColumnFilterItem<V>[];
    /** @deprecated Use `toFilter` instead */
    filters(): ColumnFilterItem<V>[];
    raw(): T;
    raw<IK extends V | K | Exclude<EnumValue, string> | (string & {})>(keyOrValue: IK): IK extends K ? T[IK] : IK extends V ? T[FindEnumKeyByValue<T, IK>] : T[K] | undefined;
    /** @deprecated Stub method, only for typing usages, not for runtime calling */
    get valueType(): V;
    /** @deprecated Stub method, only for typing usages, not for runtime calling */
    get keyType(): K;
    /** @deprecated Stub method, only for typing usages, not for runtime calling */
    get rawType(): T[K];
}
/** @deprecated Use `EnumItemsArray` instead */
export declare class EnumValuesArray<T extends EnumInit<K, V>, K extends EnumKey<T> = EnumKey<T>, V extends EnumValue = ValueTypeFromSingleInit<T[K], K>> extends EnumItemsArray<T, K, V> {
}
