import 'reflect-metadata'; import type { ClassConstructor } from './types.js'; /** * Module metadata key */ export declare const MODULE_METADATA: unique symbol; /** * Provider definition for dependency injection */ export interface Provider { provide: string | symbol | ClassConstructor; useValue?: unknown; useClass?: ClassConstructor; useFactory?: (...args: unknown[]) => unknown; } /** * Dynamic module definition (for configurable modules) */ export interface DynamicModule { module?: ClassConstructor; providers?: (ClassConstructor | Provider)[]; exports?: (ClassConstructor | string | symbol)[]; controllers?: ClassConstructor[]; imports?: ModuleImport[]; } /** * Type for module imports - can be a class or a dynamic module configuration */ export type ModuleImport = ClassConstructor | DynamicModule; /** * Module metadata interface */ export interface ModuleMetadata { /** Module name */ name: string; /** Module description */ description?: string; /** Controllers (classes with @Tool, @Resource, @Prompt decorators) */ controllers?: ClassConstructor[]; /** Services (dependency injection) */ providers?: (ClassConstructor | Provider)[]; /** Other modules to import */ imports?: ModuleImport[]; /** Items to export to other modules */ exports?: (ClassConstructor | string | symbol)[]; } /** * Module class (internal) */ declare class ModuleClass { metadata: ModuleMetadata; constructor(metadata: ModuleMetadata); /** * Get all controllers from this module */ getControllers(): ClassConstructor[]; /** * Get module name */ getName(): string; /** * Get module description */ getDescription(): string | undefined; } /** * Module decorator - Defines a module with controllers, providers, imports * * @example * ```typescript * @Module({ * name: 'auth', * description: 'Authentication module', * controllers: [AuthController], * }) * export class AuthModule {} * ``` */ export declare function ModuleDecorator(metadata: ModuleMetadata): object>(constructor: T) => T; export { ModuleDecorator as Module }; /** * Create a module instance from a class */ export declare function createModule(moduleClass: ClassConstructor): ModuleClass; /** * Check if a class is a module */ export declare function isModule(target: ClassConstructor): boolean; /** * Get module metadata from a class */ export declare function getModuleMetadata(target: ClassConstructor): ModuleMetadata | undefined; //# sourceMappingURL=module.d.ts.map