import type { Aggregate } from "../core/index.js"; import type { Repository } from "../repository/base-repository.js"; /** * Transaction context for Unit of Work */ export interface TransactionContext { /** * Commit all changes */ commit(): Promise; /** * Rollback all changes */ rollback(): Promise; /** * Check if transaction is active */ isActive(): boolean; } /** * Unit of Work interface * Manages transactions across multiple repositories */ export interface IUnitOfWork { /** * Start a new transaction */ begin(): Promise; /** * Execute work within a transaction * Auto-commits on success, rolls back on error */ transaction(work: (ctx: TransactionContext) => Promise): Promise; /** * Get repository within transaction context */ getRepository>( repository: new (...args: any[]) => Repository ): Repository; }