import { ObjectRecord, EventHandler, PathValue, Path, IsEqual, NestedOmit, NestedPick, TransformType } from '../type'; export type RegistryDataType = ObjectRecord | any[]; export declare class RegistryDataError extends Error { } export declare class RegistryConsistentError extends Error { } export type RegistryOptions = { validate?: boolean; clone?: boolean; consistent?: boolean; }; type PathOf = T extends object ? Path : string; export declare class Registry> { private consistent; private eventEmitter; private cached; private data; constructor(data?: TData, options?: RegistryOptions); static from>(data?: TData, options?: RegistryOptions): Registry; extends(data: any): this; parse(data?: any, options?: { validate?: boolean; clone?: boolean; }): this; validate(data?: any): this; isValidData(data?: any): boolean; private isPathNum; private preparePath; get(path: PathOrKey, defaultValue?: any, filter?: TransformType | TransformType[]): IsEqual extends true ? (PathOrKey extends Path ? PathValue : TResult) : TResult; private validateConsistent; set(path: TPath, value: any, validate?: boolean): this; initPathValue(path: TPath, value: T, validate?: boolean): T; has(path: Path): boolean; is(path: TPath, compareValue?: any): boolean; isCached(path: string): boolean; isPathArray(path?: TPath): boolean; isPathObject(path?: TPath): boolean; isPathFlat(path: TPath): boolean; remove(path: TPath): this; toString(): string; valueOf(): T; clone(): Registry; pick(paths: TInclude[] | TInclude): Registry>; omit(paths: TExclude[] | TExclude): Registry>; watch(paths: TPath[] | TPath, callback: EventHandler['handler']): void; isEmpty(): boolean; } export {};