import { Entity } from './Entity'; import type { AttrConfigSet, ResolveAttrSet, ResolveConstructorData } from './Entity'; declare type Constructable = { new (...args: any[]): T; }; declare type Reconstruct = InstanceType> = { new (...args: ConstructorParameters): I; }; declare type MixinConstructor> = Reconstruct & M>; export declare type EntityConstructor = Entity> = { new (data?: ResolveConstructorData): E; }; export declare type EntityWithAccessorsConstructor = MixinConstructor>; /** * Helper function for generating an [[`Entity`]] constructor from the provided `attrConfigSet`. The * generated class includes accessors for each attribute. * * @param attrConfig */ export declare const entity: >(attrConfigSet: ACS) => Reconstruct>, Entity & ResolveAttrSet>; /** * Helper function for generating an [[`Entity`]] constructor from the provided `attrConfigSet`. It * is recommended to use [[`entity()`]] instead, unless you do not need/want accessors. * * @param attrConfig */ export declare const constructor: >(attrConfigSet: ACS) => EntityConstructor>; /** * Helper function for binding accessors for attributes in the provided `attrConfigSet` to an * existing [[`Entity`]] `Constructor`. It is recommended to use [[`entity()`]] instead, unless you * are rolling your own constructors. * * @param attrConfig * @param Constructor */ export declare const withAccessors: , C extends EntityConstructor>>(attrConfigSet: ACS, Constructor: C) => Reconstruct & ResolveAttrSet>; export {};