import * as factory from '../../factory';
import type { AcceptedOfferRepo } from '../../repo/acceptedOffer';
import type { EmailMessageRepo } from '../../repo/emailMessage';
import type { EventRepo } from '../../repo/event';
import type { MerchantReturnPolicyRepo } from '../../repo/merchantReturnPolicy';
import type { MessageRepo } from '../../repo/message';
import type { OfferRepo } from '../../repo/offer/unitPriceInCatalog';
import type { OfferItemConditionRepo } from '../../repo/offerItemCondition';
import type { OrderRepo } from '../../repo/order';
import type { ProjectRepo } from '../../repo/project';
import type { ReservationRepo } from '../../repo/reservation';
import type { SellerRepo } from '../../repo/seller';
import type { SellerReturnPolicyRepo } from '../../repo/sellerReturnPolicy';
import type { SettingRepo } from '../../repo/setting';
import type { TaskRepo } from '../../repo/task';
import type { IStartedTransaction, TransactionRepo } from '../../repo/transaction';
import { preStart } from './returnOrder/preStart';
interface IStartOperationRepos {
    acceptedOffer: AcceptedOfferRepo;
    event: EventRepo;
    merchantReturnPolicy: MerchantReturnPolicyRepo;
    offer: OfferRepo;
    offerItemCondition: OfferItemConditionRepo;
    order: OrderRepo;
    project: ProjectRepo;
    reservation: ReservationRepo;
    seller: SellerRepo;
    sellerReturnPolicy: SellerReturnPolicyRepo;
    transaction: TransactionRepo;
}
type IStartOperation<T> = (repos: IStartOperationRepos) => Promise<T>;
type ITaskAndTransactionOperation<T> = (repos: {
    setting: SettingRepo;
    task: TaskRepo;
    transaction: TransactionRepo;
}) => Promise<T>;
/**
 * 返品取引開始
 */
declare function start(params: factory.transaction.returnOrder.IStartParamsWithoutDetail): IStartOperation<IStartedTransaction>;
/**
 * 取引確定
 */
declare function confirm(params: factory.transaction.returnOrder.IConfirmParams & {
    object: {
        order: {
            dateReturned: Date;
        };
    };
}): (repos: {
    acceptedOffer: AcceptedOfferRepo;
    emailMessage?: EmailMessageRepo;
    message: MessageRepo;
    order: OrderRepo;
    setting: SettingRepo;
    transaction: TransactionRepo;
}) => Promise<import("@chevre/factory/lib/transaction/returnOrder").IResult | undefined>;
/**
 * 取引のタスクを出力します
 * 複数タスクが生成されます
 * この関数では、取引のタスクエクスポートステータスは見ません
 */
declare function exportTasksById(params: {
    id: string;
    /**
     * タスク実行日時バッファ
     */
    runsTasksAfterInSeconds?: number;
}): ITaskAndTransactionOperation<void>;
export { preStart, start, confirm, exportTasksById };
