import 'reflect-metadata';
import { Constructor, ConstructorOverride } from './injection';
export interface ModuleMetadata {
    depends?: Module[];
    middlewares?: Constructor[];
    handlers?: Constructor[];
    inputs?: Constructor[];
    providers?: (Constructor | ConstructorOverride)[];
}
export declare function Module(moduleMetadata: ModuleMetadata): (constructor: Constructor) => void;
export interface Module extends Constructor {
    $getModuleMetadata(): ModuleMetadata;
    $constructors(): (Constructor | ConstructorOverride)[];
    $register(): void;
}
