import { Constructor, ParameterlessConstructor } from "../../index";
import { FieldDescription, CollectionDescription, ClassIndexDescription, PropertyIndexDescription } from "./annotations";
import { PropertyConverter, FetchType } from "../mappingModel";
import { ChangeTrackingType } from "../mappingModel";
import { CascadeFlags } from "../mappingModel";
import { IdentityGenerator } from "../../config/configuration";
export declare function Entity(): ClassDecorator;
export declare function Embeddable(): ClassDecorator;
export declare function Converter(converter: string | PropertyConverter | ParameterlessConstructor<PropertyConverter>): ClassDecorator & PropertyDecorator;
export declare function Identity(identity: IdentityGenerator | ParameterlessConstructor<IdentityGenerator>): ClassDecorator;
export declare function Collection(name: string): ClassDecorator;
export declare function Collection(description?: CollectionDescription): ClassDecorator;
export declare function Immutable(): ClassDecorator;
export declare function Index(description: ClassIndexDescription): ClassDecorator;
export declare function Index(description?: PropertyIndexDescription): PropertyDecorator;
export declare function VersionField(name: string): ClassDecorator;
export declare function Versioned(enabled?: boolean): ClassDecorator;
export declare function ChangeTracking(type: ChangeTrackingType): ClassDecorator;
export declare function DiscriminatorField(name: string): ClassDecorator;
export declare function DiscriminatorValue(value: string): ClassDecorator;
export declare function Field(name?: string): PropertyDecorator;
export declare function Field(description: FieldDescription): PropertyDecorator;
export declare function Parent(): PropertyDecorator;
export declare function Enumerated(members: Object): PropertyDecorator;
export declare function InverseOf(propertyName: string): PropertyDecorator;
export declare function Cascade(flags: CascadeFlags): PropertyDecorator;
export declare function Fetch(type: FetchType): PropertyDecorator;
export declare function Type(target: Constructor<any> | string): PropertyDecorator;
export declare function ElementType(target: Constructor<any> | string): PropertyDecorator;
export declare function MapKey(propertyName: string): PropertyDecorator;
export declare function Transient(): PropertyDecorator;
