import * as factory from '../../../../factory';
import { placeOrder as PlaceOrderFactory } from '../../../../factory/transaction';
export type IAcceptPayAction = Pick<factory.action.accept.pay.IAction, 'object' | 'result' | 'endDate'>;
export type IAuthorizeEventServiceOffer = factory.action.authorize.offer.eventService.IAction;
export type IAuthorizeProductOffer = factory.action.authorize.offer.product.IAction;
export type IAuthorizeMoneyTransferOffer = factory.action.authorize.offer.moneyTransfer.IAction;
export type IAuthorizePaymentAction = Pick<factory.action.authorize.paymentMethod.any.IAction, 'id' | 'result' | 'endDate' | 'instrument'> & {
    object: Pick<factory.action.authorize.paymentMethod.any.IObject, 'typeOf'>;
};
export type IPayTransaction = Pick<factory.assetTransaction.pay.ITransaction, 'object'>;
/**
 * 取引が確定可能な状態かどうかをチェックする
 */
export declare function validateTransaction(transaction: Pick<factory.transaction.placeOrder.ITransaction, 'id' | 'object'>, acceptPayActions: IAcceptPayAction[], authorizePaymentActions: IAuthorizePaymentAction[], authorizeEventServiceOfferActions: Pick<IAuthorizeEventServiceOffer, 'id' | 'result'>[], authorizeMoneyTansferActions: Pick<IAuthorizeMoneyTransferOffer, 'id' | 'result'>[], authorizeProductOfferActions: Pick<IAuthorizeProductOffer, 'id' | 'result'>[], eventReservationAcceptedOffers: factory.order.IAcceptedOffer<factory.order.IReservation>[], payTransactions: IPayTransaction[], customer: factory.order.ICustomer): void;
export type IOrderURLGenerator = (order: factory.order.IOrder) => string;
/**
 * 注文オファー数検証
 */
export declare function validateAcceptedOffers(params: {
    result: {
        order: PlaceOrderFactory.IResultOrderParams;
    };
    acceptedOffers: factory.order.IAcceptedOffer<factory.order.IItemOffered>[];
}): void;
export declare function validateOrderedItem(params: {
    order: Pick<factory.order.IOrder, 'orderedItem'>;
    result: {
        order: PlaceOrderFactory.IResultOrderParams;
    };
}): void;
export declare function validatePaymentMethods(params: {
    order: {
        paymentMethods: factory.order.IReferencedInvoice[];
    };
}, options: {
    /**
     * 注文における最大CreditCardIF決済方法数
     */
    maxNumCreditCardPaymentMethod: number;
}): void;
/**
 * 興行オファー適用条件確認
 */
export declare function validateEventOffers(params: {
    order: Pick<factory.transaction.placeOrder.IOrderAsResult, 'price'>;
    paymentMethods: factory.order.IReferencedInvoice[];
    authorizeEventServiceOfferActions: Pick<IAuthorizeEventServiceOffer, 'id' | 'instrument' | 'object' | 'result'>[];
}): void;
