import type { EntityName } from '../typings' ; import type { EntityManager } from '../EntityManager' ; import type { ChangeSet , UnitOfWork } from '../unit-of-work' ; import type { Transaction } from '../connections' ; export interface EventArgs < T > { entity : T ; em : EntityManager ; changeSet ? : ChangeSet < T > ; } export interface FlushEventArgs extends Omit < EventArgs < unknown > , 'entity' > { uow : UnitOfWork ; } export interface TransactionEventArgs extends Omit < EventArgs < unknown > , 'entity' | 'changeSet' > { transaction ? : Transaction ; uow ? : UnitOfWork ; } export interface EventSubscriber < T = any > { getSubscribedEntities ? ( ) : EntityName < T > [ ] ; onInit ? ( args ) : void ; onLoad ? ( args ) : Promise < void > ; beforeCreate ? ( args ) : Promise < void > ; afterCreate ? ( args ) : Promise < void > ; beforeUpdate ? ( args ) : Promise < void > ; afterUpdate ? ( args ) : Promise < void > ; beforeDelete ? ( args ) : Promise < void > ; afterDelete ? ( args ) : Promise < void > ; beforeFlush ? ( args ) : Promise < void > ; onFlush ? ( args ) : Promise < void > ; afterFlush ? ( args ) : Promise < void > ; beforeTransactionStart ? ( args ) : Promise < void > ; afterTransactionStart ? ( args ) : Promise < void > ; beforeTransactionCommit ? ( args ) : Promise < void > ; afterTransactionCommit ? ( args ) : Promise < void > ; beforeTransactionRollback ? ( args ) : Promise < void > ; afterTransactionRollback ? ( args ) : Promise < void > ; }