import { EntityManager, Connection, QueryRunner } from 'typeorm';
import { IsolationLevel } from 'typeorm/driver/types/IsolationLevel';
import { AnyFunction } from './utils';
export declare class Transaction implements ITransaction {
    protected readonly _options: ITransactionOptionsExtended;
    protected readonly _connection: Connection;
    protected readonly _queryRunner: QueryRunner;
    protected readonly _manager: EntityManager;
    protected readonly _shouldUseParentManager: boolean;
    protected readonly _parentManager: EntityManager;
    constructor(_options: ITransactionOptionsExtended);
    get manager(): EntityManager;
    begin(): Promise<void>;
    commit(): Promise<void>;
    rollback(error?: string | Error): Promise<void>;
    protected get _transactionId(): string;
    protected get _isTransactionActive(): boolean;
    protected get _isTransactionNotReleased(): boolean;
    protected _saveManager(manager: EntityManager): void;
    protected _endTransaction(): Promise<void>;
    protected _validateNsAvailability(): void;
}
export declare type Propagation = 'REQUIRED' | 'SUPPORT' | 'SEPARATE';
export interface ITransaction {
    begin(): Promise<void>;
    commit(): Promise<void>;
    rollback(err?: string | Error): Promise<void>;
}
export interface ITransactionOptions {
    propagation?: Propagation;
    isolationLevel?: IsolationLevel;
}
export interface ITransactionOptionsExtended extends ITransactionOptions {
    connection?: Connection | AnyFunction<Connection>;
    connectionName?: string | AnyFunction<string>;
    manager?: EntityManager;
}
