import type { FieldType } from "@antelopejs/interface-database/schema"; export type Constructible = new (...args: A) => T; export type DeepPartial = { [K in keyof T]?: T[K] extends Array ? Array> : T[K] extends ReadonlyArray ? ReadonlyArray> : T[K] extends object ? DeepPartial : T[K]; }; export type DatumGeneratorOutput = Record | Array> | undefined; export type DatumGenerator = (tableClass: Constructible) => DatumGeneratorOutput | Promise; export interface MetadataClass extends Constructible { key: symbol; } /** * Table class Metadata. */ export declare class DatumStaticMetadata { static key: symbol; tableName?: string; schemaName?: string; readonly indexes: Record>; readonly fields: Record; primary: string; generator?: DatumGenerator; addIndex(key: string, group: string): void; } export declare function getMetadata(target: TTarget, metadataClass: MetadataClass, inherit?: boolean): TMetadata;