export type Enum = ({ [value: number]: keyof E; } & { [key: string]: E; }) | Object; /** * for the sake of implicit any in object index * */ export declare function enum_i2s(e: E, i: keyof E): E[keyof E]; export declare function enum_s2i(e: E, s: E[keyof E]): keyof E; export declare function enum_next_i(e: E, i: number & keyof E): keyof E; export declare function enum_next_s(e: E, s: E[keyof E]): E[keyof E]; export declare function enum_keys(e: Enum): Array; /** * numeric values * */ export declare function enum_indices(e: Enum): Array; /** * numeric or string values * if original enum -> numeric values; * stringified enum -> string values * */ export declare function enum_values(e: Enum): E[]; export declare function enum_last_i(e: Enum): E & number; export declare function enum_last_s(e: Enum): keyof E & string; export declare function enum_is_last_i(e: Enum, i: E): boolean; export declare function enum_is_last_s(e: Enum, s: keyof E): boolean; export declare function enum_is_last(e: Enum, v: E | number | keyof E | string): boolean; export declare function enum_is_in_range(e: E, v: E[keyof E] | keyof E): boolean; export declare function enum_not_equals(e1: E1, e2: E2): boolean; /** * inplace update * * @return original (modified) enum * */ export declare function enum_set_string(e: E): E; /** * inplace update * */ export declare function enum_only_string(e: E): E;