import 'reflect-metadata'; import { ClassMetadata } from '../metadatas/index'; import { Type } from '../../types'; import { MetadataAdapter, MetadataExtends } from './DecoratorFactory'; import { Registration } from '../../Registration'; /** * class decorator. * * @export * @interface IClassDecorator */ export interface IClassDecorator { (provide: Registration | symbol | string, alias?: string, singlton?: boolean, cache?: number): ClassDecorator; (metadata?: T): ClassDecorator; /** * not allow abstract to decorator with out metadata. */ (target: Type): void; } /** * create class decorator * * @export * @template T metadata type. * @param {string} name decorator name. * @param {MetadataAdapter} [adapter] metadata adapter * @param {MetadataExtends} [metadataExtends] add extents for metadata. * @returns {*} */ export declare function createClassDecorator(name: string, adapter?: MetadataAdapter, metadataExtends?: MetadataExtends): IClassDecorator;