///
import * as mongoose from 'mongoose';
import * as Bluebird from 'bluebird';
import * as events from 'events';
export interface IHistory {
col: string;
oid: any;
shardKeyName: string;
shardKey: any;
op: 'insert' | 'remove' | 'update';
query: string;
}
export interface IRollback {
col: string;
oid: any;
shardKeyName: string;
shardKey: any;
}
export interface ITransaction extends mongoose.Document {
history: IHistory[];
rollback: IRollback[];
state: string;
id: string;
}
export declare class Transaction extends events.EventEmitter {
static TRANSACTION_EXPIRE_THRESHOLD: number;
private static model;
private static connection;
static readonly getModel: mongoose.Model;
private transaction;
private participants;
static initialize(connection: mongoose.Connection): void;
begin(): Bluebird.Disposer;
static scope(doInTransactionScope: (t: Transaction) => Bluebird | Promise): Bluebird | Promise;
readonly _id: mongoose.Types.ObjectId;
cancel(): Promise;
private static rollback;
private static commitHistory;
private static commitHistoryRemove;
private static commitHistoryUpdate;
static recommit(transaction: ITransaction): Promise;
private static validate;
private static makeHistory;
commit(): Promise;
insertDoc(doc: mongoose.Document, retry?: boolean): any;
removeDoc(doc: mongoose.Document): void;
findOne(model: mongoose.Model, cond: Object, fields?: Object, options?: Object): Promise;
private setRollbackHistory;
private static getShardKey;
}