import * as factory from '../../factory';
import { MongoRepository as ReservationRepo } from '../../repo/reservation';
import { MongoRepository as TaskRepo } from '../../repo/task';
import { MongoRepository as TransactionRepo } from '../../repo/transaction';
export declare type IStartOperation<T> = (repos: {
    reservation: ReservationRepo;
    transaction: TransactionRepo;
}) => Promise<T>;
export declare type ITaskAndTransactionOperation<T> = (repos: {
    task: TaskRepo;
    transaction: TransactionRepo;
}) => Promise<T>;
export declare type ITransactionOperation<T> = (repos: {
    transaction: TransactionRepo;
}) => Promise<T>;
/**
 * 取引開始
 */
export declare function start(params: factory.transaction.cancelReservation.IStartParamsWithoutDetail): IStartOperation<factory.transaction.cancelReservation.ITransaction>;
/**
 * 取引確定
 */
export declare function confirm(params: {
    id: string;
}): ITransactionOperation<void>;
/**
 * ひとつの取引のタスクをエクスポートする
 */
export declare function exportTasks(status: factory.transactionStatusType): (repos: {
    task: TaskRepo;
    transaction: TransactionRepo;
}) => Promise<void>;
/**
 * ID指定で取引のタスク出力
 */
export declare function exportTasksById(params: {
    id: string;
}): ITaskAndTransactionOperation<factory.task.ITask[]>;
