import { type ClassDecorator } from "@antelopejs/interface-core/decorators"; import type { FieldType } from "@antelopejs/interface-database/schema"; import { type Constructible } from "./common"; import { MixinSymbol, type MixinType } from "./modifiers/common"; type UnionToIntersection = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never; export declare const TableMetaSymbol: unique symbol; export declare const TableRefSymbol: unique symbol; export type ExtractTableMeta = T extends { [TableMetaSymbol]: infer Meta; } ? Meta extends object ? Meta : never : object; export interface TableClass { new (...args: Args): { _id: string; } & Base & (Meta extends object ? { [TableMetaSymbol]: Meta; } : object); with[] = []>(this: This, ...other: T): TableClass & UnionToIntersection>>>, ConstructorParameters, ExtractTableMeta> | ExtractTableMeta>>; } /** * Database Table superclass */ export declare class Table { _id: string; /** * Supplement the superclass with Modifier mixins. * * @param others List of Modifier mixin classes * @returns New superclass */ static with[] = []>(this: This, ...others: T): TableClass & UnionToIntersection>>>, ConstructorParameters, ExtractTableMeta> | ExtractTableMeta>>; } /** * Database Table Index decorator. * * Available options: * - `group`: Index name for multi-field indexes. * * @param options Options */ export declare const Index: (options?: { group?: string; } | undefined) => import("@antelopejs/interface-core/decorators").PropertyDecorator; /** * Database Table Field type decorator. */ export declare const Field: (type: FieldType) => import("@antelopejs/interface-core/decorators").PropertyDecorator; type AwaitableArray = Promise | T | T[]; /** * Database Table class decorator to create default data on table creation. * * @param generator Data generator */ export declare const Fixture: (generator: (p: T) => AwaitableArray>>) => ClassDecorator; export {};