import { EntityName } from '../typings'; import { EntityManager } from '../EntityManager'; import { ChangeSet, UnitOfWork } from '../unit-of-work'; export interface EventArgs { entity: T; em: EntityManager; changeSet?: ChangeSet; } export interface FlushEventArgs extends Omit, 'entity'> { uow: UnitOfWork; } export interface EventSubscriber { getSubscribedEntities?(): EntityName[]; onInit?(args: EventArgs): void; beforeCreate?(args: EventArgs): Promise; afterCreate?(args: EventArgs): Promise; beforeUpdate?(args: EventArgs): Promise; afterUpdate?(args: EventArgs): Promise; beforeDelete?(args: EventArgs): Promise; afterDelete?(args: EventArgs): Promise; beforeFlush?(args: FlushEventArgs): Promise; onFlush?(args: FlushEventArgs): Promise; afterFlush?(args: FlushEventArgs): Promise; }