import { type Container as DIContainer } from '../container.js'; /** * Marks a class as injectable and registers it with the DI container * * @param options Configuration options for the injectable service * * @example * @Container() * class UserService { * getUser(id: string) { ... } * } * * @example With options * @Container({ singleton: false }) * class RequestScopedService { * // New instance created for each resolution * } */ export declare function Container(options?: { singleton?: boolean; container?: DIContainer; }): (ctor: T) => T; /** * Marks a constructor parameter or property for dependency injection * * Can be used on: * - Constructor parameters * - Class properties * * @param target The class to inject dependencies into. Can be a class constructor or a string identifier. * * @example Constructor parameter injection * @Container() * class UserController { * constructor(@Component(UserService) userService: UserService) {} * } * * @example Property injection * @Container() * class UserService { * @Component(DatabaseConnection) * private db: DatabaseConnection; * } * * @example With string identifier * @Container() * class PaymentService { * constructor(@Component('apiKey') apiKey: *** {} * } */ export declare function Component(target: any): (targetClass: object | any, propertyKey?: string | symbol, parameterIndex?: number) => void; /** * Check if a class is marked as injectable */ export declare function isInjectable(target: any): boolean; /** * Get the container instance used by decorators */ export declare function getInjectionContainer(): DIContainer;