import type { Data, Metadata, ReadonlyMetadataEventEmitter } from '../types';
export declare class MetadataDSL {
    #private;
    constructor(emitter: ReadonlyMetadataEventEmitter, metadata: () => Metadata);
    $Set: (path: string | readonly string[], value: unknown) => void;
    $Push: (path: string | readonly string[], ...values: unknown[]) => void;
    $Unshift: (path: string | readonly string[], ...values: unknown[]) => void;
    $Assign: (path: string | readonly string[] | undefined, value: Data) => void;
    $Defaults: (path: string | readonly string[] | undefined, value: Data) => void;
    $Merge: (path: string | readonly string[] | undefined, value: Data) => void;
    protected schedule(callback: () => void): void;
}
