import 'reflect-metadata'; import { ObjectType, ServiceOptions } from './container'; import { inject } from './inject.decorator'; export interface DependencyOptions extends Partial { /** List of components that is provided by this class */ provides?: Array | ObjectType; } /** * Decorator interface for marking classes as injectable and configuring their lifecycle in the DI container. * Provides methods for transient and singleton lifecycles, as well as utilities for property and parameter injection. */ export interface InjectableDecorator { /** * Decorates a class as injectable, registering it with the DI container. * @param options Optional dependency options, such as lifecycle and provided services. * @returns A class decorator function. */ ; }>(options?: DependencyOptions): (ctor: T) => any; /** * Decorates a class as injectable with a transient lifecycle (new instance per resolution). * @param options Optional dependency options, excluding lifecycle. * @returns A class decorator function. */ transient: (options?: Omit) => any; /** * Decorates a class as injectable with a singleton lifecycle (single shared instance). * @param options Optional dependency options, excluding lifecycle. * @returns A class decorator function. */ singleton: (options?: Omit) => any; /** * Checks if a class type is decorated with the injectable decorator. * @param serviceType The class or constructor to check. * @returns True if decorated, false otherwise. */ isDecorated: (serviceType: ObjectType) => boolean; /** * Property injection decorator (deprecated, use `@inject` instead). * @deprecated Use `@inject` instead */ property: typeof inject; /** * Parameter injection decorator (deprecated, use `@inject` instead). * @deprecated Use `@inject` instead */ param: typeof inject; } /** * Register a class as injectable component into the application container. * Each injectable class has a default lifecycle policy which determines if a new class is * instantiated per resolution (`transient`) or if the same instance is reused across resolutions (`singleton`). * * If no lifecycle policy is specified, the default is `singleton`. * * @param options Constructions options for the service */ export declare const injectable: InjectableDecorator; /** * Marks a parameter as ignored for dependency injection. * @param target Target * @param propertyKey * @param parameterIndex */ export declare function ignore(target: object, propertyKey: string | symbol, parameterIndex: number): void; //# sourceMappingURL=injectable.decorator.d.ts.map