import type { Connection } from 'mongoose';
import * as factory from '../factory';
type IOrderInTransaction = Pick<factory.order.IOrder, 'orderNumber' | 'project'> & {
    typeOf: factory.transactionType.PlaceOrder;
    orderDate: Date;
    acceptedOffers: factory.order.IAcceptedOffer<factory.order.IItemOffered>[];
    customer?: factory.order.ICustomer;
};
export type IPlacingOrder = Pick<factory.order.IOrder, 'broker' | 'confirmationNumber' | 'identifier' | 'isGift' | 'name' | 'orderDate' | 'orderNumber' | 'orderStatus' | 'orderedItem' | 'paymentMethods' | 'price' | 'priceCurrency' | 'seller' | 'typeOf' | 'url'> & {
    acceptedOffers?: never;
    customer?: never;
};
/**
 * 取引中注文リポジトリ
 */
export declare class OrderInTransactionRepo {
    private readonly orderModel;
    constructor(connection: Connection);
    /**
     * 取引進行中の注文からacceptedOffersを検索する
     */
    findAcceptedOffersByOrderNumber(params: {
        orderNumber: {
            $eq: string;
        };
    }): Promise<factory.order.IAcceptedOffer<factory.order.IItemOffered>[]>;
    /**
     * 注文を受注する
     */
    placeOrder(order: IPlacingOrder): Promise<void>;
    acceptOffer(params: Pick<IOrderInTransaction, 'acceptedOffers' | 'orderNumber' | 'project'>): Promise<import("mongoose").UpdateWriteOpResult | undefined>;
    /**
     * serialNumberからオファーを除外する
     * ホワイトリストとブラックリスト両方に対応
     */
    voidAcceptedOfferBySerialNumber(params: {
        orderNumber: string;
        acceptedOffers: {
            serialNumber: {
                $in?: string[];
                $nin?: string[];
            };
        };
    }): Promise<import("mongoose").UpdateWriteOpResult | undefined>;
    setCustomer(params: Pick<IOrderInTransaction, 'orderNumber' | 'project'> & {
        customer: factory.order.ICustomer;
    }): Promise<import("mongoose").UpdateWriteOpResult>;
    findCustomerByOrderNumber(params: {
        orderNumber: {
            $eq: string;
        };
    }): Promise<factory.order.ICustomer>;
    deleteByOrderNumber(params: {
        orderNumber: string;
    }): Promise<import("mongodb").DeleteResult>;
}
export {};
