import type { TRANSACTION_SESSION } from '../../utils/constants/symbol-keys.constant'; import type { AnyUsecase } from './utility.type'; import type { TransactionLike } from './transaction-like.type'; import type { PerformAwaitedResult, PerformParameters, } from './performer.type'; export interface TransactionModel extends TransactionLike { readonly [TRANSACTION_SESSION]: Readonly; get(name: Key): Data[Key] | undefined; override( overrides: Overrides, ): TransactionModel; perform( usecase: Usecase, ...params: PerformParameters ): Promise>; }