import type { AggregatedIdentifier } from '../ids'; import * as symbols from '../symbols'; import type { Data, Metadata } from '../types'; import type { MetadataContext } from './MetadataContext'; export declare abstract class BaseMetadata implements Metadata { #private; readonly [symbols.id]: AggregatedIdentifier; readonly [symbols.context]: MetadataContext; readonly [symbols.data]: Data; constructor(context: MetadataContext, id: AggregatedIdentifier); get id(): string; get(): Readonly; get(path: string | readonly string[], fallbackValue?: unknown): unknown; set(path: string | readonly string[], $value: unknown): this; push(path: string | readonly string[], $values: unknown[]): this; unshift(path: string | readonly string[], $values: unknown[]): this; assign(path: undefined | string | readonly string[], $value: object): this; defaults(path: undefined | string | readonly string[], $value: object): this; merge(path: undefined | string | readonly string[], $value: object): this; toJSON(): { id: string; type: string; data: Data; }; }