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>; }