import type { AnyString, Constructor, Dictionary, EntityClass, ObjectQuery } from '../typings';
import type { FindOptions } from '../drivers/IDatabaseDriver';
export declare function Entity<T extends EntityClass<unknown>>(options?: EntityOptions<T>): (target: T) => void;
export type EntityOptions<T, E = T extends EntityClass<infer P> ? P : T> = {
    tableName?: string;
    schema?: string;
    collection?: string;
    discriminatorColumn?: (T extends EntityClass<infer P> ? keyof P : string) | AnyString;
    discriminatorMap?: Dictionary<string>;
    discriminatorValue?: number | string;
    forceConstructor?: boolean;
    comment?: string;
    abstract?: boolean;
    readonly?: boolean;
    virtual?: boolean;
    expression?: string | ((em: any, where: ObjectQuery<E>, options: FindOptions<E, any, any, any>) => object);
    repository?: () => Constructor;
};
