import { Type } from '../reflection';
import { type GeneratedColumnOptions } from '../reflection/metadata-store';
import type { ClassType } from '../types';
export interface ColumnMetadata {
    propertyName: string;
    columnName: string;
    primaryKey: boolean;
    autoIncrement: boolean;
    optional: boolean;
    allowsNull: boolean;
    nullable: boolean;
    hasDefault: boolean;
    defaultValue?: unknown;
    generated?: GeneratedColumnOptions;
    type: Type;
}
export interface EntityMetadata<T extends BaseEntityLike = BaseEntityLike> {
    classType: EntityClass<T>;
    tableName: string;
    columns: ColumnMetadata[];
    primaryKeys: ColumnMetadata[];
    primaryKey: ColumnMetadata;
}
export type BaseEntityLike = object;
export type EntityClass<T extends BaseEntityLike = BaseEntityLike> = ClassType<T> & {
    getDatabase?: () => unknown;
};
export declare function getEntityMetadata<T extends BaseEntityLike>(classType: EntityClass<T>): EntityMetadata<T>;
//# sourceMappingURL=metadata.d.ts.map