import { Exception } from "../java"; /** * Operation runned in transaction. */ export declare type TTransactionOperation = { commit: () => Promise; rollback: () => Promise; }; /** * Params of the transaction (for transactional annotations). */ export interface ITransactionParams { target?: ITransactional; operation: TTransactionOperation; } /** * Status of the transaction. * @remark https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/transaction/TransactionStatus.html */ export declare enum ETransactionStatus { closed = 0, opened = 1, suspended = 2, commited = 3, rollbacked = 4 } /** * Base interface for all transactions. */ export interface ITransaction { commit(operations: TTransactionOperation[]): Promise; rollback(operations: TTransactionOperation[]): Promise; getStatus(): ETransactionStatus; } /** * Allows to manage transactions. * @remark https://docs.oracle.com/javaee/7/api/javax/transaction/TransactionManager.html */ export interface ITransactionManager { begin(params: ITransactionParams): Promise; commit(): Promise; rollback(): Promise; close(): void; suspend(): void; resume(): void; getStatus(): ETransactionStatus; getTransaction(): TT; } /** * Awareness of transactionManager instance (for transactional annotations). */ export interface ITransactional { transactionManager?: ITransactionManager; } /** * Superclass for all transaction exceptions. * @remark https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/transaction/TransactionException.html */ export declare class TransactionException extends Exception { } /** * Thrown when transaction needed. * @remark https://docs.oracle.com/javaee/6/api/javax/persistence/TransactionRequiredException.html */ export declare class TransactionRequiredException extends Exception { }