import { Id } from './Id'; import { List } from './List'; import { Validatable } from './Validatable'; import { JsonValue } from './Json'; import { Get } from './Get'; import { TypeGuard } from './TypeGuard'; export type EnumConstructor = { all(): List; byIds(ids: Id[]): List; byId(id: Id, alt?: Get): E; isEnum: boolean; }; export declare const isEnumConstructor: (c: unknown) => c is EnumConstructor; export declare abstract class Enum implements Validatable { readonly name: string; readonly id: Id; readonly code: string; static isEnum: boolean; protected constructor(name: string, id?: Id, code?: string); get isValid(): boolean; static all(): List; static filter(p: (value: E, index: number, array: E[]) => unknown, params?: unknown): List; static first(p?: (value: E, index: number, array: E[]) => unknown, params?: unknown): E; static byIds(ids?: Id[]): List; static byId(id: Id, alt?: Get): E; protected static allTuple(): Record; equals(other: E | Id): other is E; isIn(...items: E[] | Id[]): boolean; toJSON(): JsonValue; toString(): string; } export declare const isEnum: TypeGuard;