import { type KeyValue } from '../common'; export interface RegistryOptions { type: string; data?: KeyValue; process?: >(this: Context, name: string, entity: Entity) => T; onConflict?: >(this: Context, name: string) => void; } export declare class Registry, OptionalType = never> { readonly data: KeyValue; readonly options: RegistryOptions; static create, OptionalType = never>(options: RegistryOptions): Registry; constructor(options: RegistryOptions); get names(): string[]; register(entities: { [name: string]: Entity | OptionalType; }, force?: boolean): void; register(name: K, entity: Presets[K], force?: boolean): Entity; register(name: string, entity: Entity | OptionalType, force?: boolean): Entity; unregister(name: K): Entity | null; unregister(name: string): Entity | null; get(name: K): Entity | null; get(name: string): Entity | null; exist(name: K): boolean; exist(name: string): boolean; onDuplicated(name: string): void; onNotFound(name: string, prefix?: string): never; getSpellingSuggestion(name: string, prefix?: string): string; protected getSpellingSuggestionForName(name: string): string; }