/** * Metadata utilities for dependency injection. * * These utilities work with reflect-metadata to store and retrieve * DI-related metadata on classes. */ import 'reflect-metadata'; import type { Type } from '../interfaces/base.interface.js'; /** * Get metadata value from a target. * * @param key - The metadata key * @param target - The target object or class * @param propertyKey - Optional property key for method/property metadata * @returns The metadata value or undefined */ export declare function getMetadata(key: any, target: any, propertyKey?: string | symbol): T | undefined; /** * Set metadata value on a target. * * @param key - The metadata key * @param value - The metadata value * @param target - The target object or class * @param propertyKey - Optional property key for method/property metadata */ export declare function setMetadata(key: any, value: any, target: any, propertyKey?: string | symbol): void; /** * Check if a class uses async initialization via static `with()` method. * * Classes decorated with @AsyncWith will have this metadata set and * should be instantiated using their static `with()` method instead * of the constructor. * * @param klass - The class to check * @returns True if the class uses async initialization */ export declare function hasAsyncWith(klass: Type): boolean;