import { OnDestroy } from "@angular/core";
import { BehaviorSubject, Observable } from "rxjs";
import { LoggerService } from "@nova-ui/bits";
import { IRegistryAddOptions } from "./types";
import * as i0 from "@angular/core";
type IRegistryMap<T> = Record<string, T>;
export declare abstract class RegistryService<T = object> implements OnDestroy {
    private logger;
    private className?;
    protected state$: BehaviorSubject<IRegistryMap<T>>;
    stateChanged$: Observable<T[]>;
    private _stateVersion;
    get stateVersion(): string;
    private _isEmpty;
    get isEmpty(): boolean;
    protected constructor(logger: LoggerService, className?: string | undefined);
    addItems(items: T[], options?: IRegistryAddOptions): void;
    getItem(id: string): T | undefined;
    getItems(): T[];
    reset(): void;
    ngOnDestroy(): void;
    protected abstract getItemKey(item: T): string;
    private updateStateFlags;
    static ɵfac: i0.ɵɵFactoryDeclaration<RegistryService<any>, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<RegistryService<any>, never, never, {}, {}, never, never, false, never>;
}
export {};
