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