import 'reflect-metadata'; import { List } from './List'; import { Optional } from './Types'; import { Entry } from './Object'; type MetaParseOptions = { initial?: any; skipUndefined?: boolean; }; declare class ClassMeta { readonly subject: any; private readonly data; constructor(subject: any, data?: any); get: (key: string) => T; set: (key: string, value: T) => T; entries: () => List>; parse: (f: (v: Value) => Out, options?: MetaParseOptions) => Record; properties: (key?: string) => List; keys: (key: string) => List; values: () => List; property: (property: string | symbol) => PropertyMeta; } declare class PropertyMeta { readonly subject: any; readonly property: string | symbol; private readonly data; constructor(subject: any, property: string | symbol, data?: any); get value(): any; get: (key: string) => Optional; set: (key: string, value: T) => T; } export declare const meta: (subject: unknown) => ClassMeta; export {};