/** * The abstract DCSerializable class represents the basic unit of data interchange for the application. * DCSerializable objects correspond to MongoDB documents in the database. Subtypes of the abstract class * correspond to collections in the database, and the application schema is defined in the subtype definitions. */ import { IDCAssociationManager } from "./IDCAssociationManager"; export interface IDCSerializable { _id: string; name: string; createdAt?: string; updatedAt?: string; [prop: string]: any; } export interface IDCSerializableClass { new (init: IDCSerializable, am: IDCAssociationManager, tableName: string): DCSerializable; } export declare type DCSerializableClassGetter = () => typeof DCSerializable; export declare abstract class DCSerializable { private am; tableName: string; _id: string; shortId: string; _name: string; dataLoaded: boolean; createdAt: Date; updatedAt: Date; constructor(data: IDCSerializable, am: IDCAssociationManager, tableName: string); readonly id: string; name: string; clone(): DCSerializable; equals(obj: DCSerializable): boolean; fkSelectName(): string; loadData(data: IDCSerializable): void; protected loadForeignColumns(data: IDCSerializable): void; serializable(): IDCSerializable; static readonly tableName: string; /** * For use as an the ngFor trackBy function */ static trackById(idx: number, obj: DCSerializable): string; }