import { TypeMetadata, MetadataExtends, ArgsIteratorAction, Type } from '@tsdi/ioc';
import { ModelMetadata } from '../metadata';
/**
 * model decorator type define.
 *
 * @export
 * @interface IModelDecorator
 * @template T
 */
export interface IModelDecorator<T extends ModelMetadata> {
    (dbtable?: string): ClassDecorator;
    /**
     * model decorator setting with metadata map.
     *
     * @param {T} [metadata] metadata map.
     */
    (metadata?: T): ClassDecorator;
    /**
     * model with out metadata.
     */
    (target: Type): void;
}
/**
 * create filed decorator.
 *
 * @export
 * @template T
 * @param {string} [modelType]
 * @param {ArgsIteratorAction<T>[]} [actions]
 * @param {MetadataExtends<T>} [metaExtends]
 * @returns {IFiledDecorator<T>}
 */
export declare function createModelDecorator<T extends ModelMetadata>(modelType?: string, actions?: ArgsIteratorAction<T>[], metaExtends?: MetadataExtends<T>): IModelDecorator<T>;
export declare const Model: IModelDecorator<TypeMetadata>;
