import { type TransactionOptions } from '@mikro-orm/core';
import { type ContextProvider } from '../utils.js';
type TransactionalOptions<T> = TransactionOptions & {
  context?: ContextProvider<T>;
  contextName?: string;
};
/**
 * This decorator wraps the method with `em.transactional()`, so you can provide `TransactionOptions` just like with `em.transactional()`.
 * The difference is that you can specify the context in which the transaction begins by providing `context` option,
 * and if omitted, the transaction will begin in the current context implicitly.
 * It works on async functions and can be nested with `em.transactional()`.
 * Unlike `em.transactional()`, this decorator uses `REQUIRED` propagation by default, which means it will join existing transactions.
 */
export declare function Transactional<T extends object>(options?: TransactionalOptions<T>): MethodDecorator;
export {};
