UNPKG

@cosmicmind/domainjs

Version:

A domain-driven design framework for scalable systems.

11 lines 717 B
import { Entity, EntityLifecycle } from './Entity'; import { EventTopics, EventObservable } from './Event'; export declare abstract class Aggregate<E extends Entity, T extends EventTopics = EventTopics> extends EventObservable<T> { protected root: E; constructor(root: E); protected prepare?(root: E): E; } export type AggregateTypeFor<A> = A extends Aggregate<infer E> ? E : A; export type AggregateConstructor<A extends Aggregate<Entity>> = new (root: AggregateTypeFor<A>) => A; export declare function defineAggregate<A extends Aggregate<Entity>>(_class: AggregateConstructor<A>, handler?: EntityLifecycle<AggregateTypeFor<A>>): (root: AggregateTypeFor<A>) => A; //# sourceMappingURL=Aggregate.d.ts.map