import * as factory from '../../../../../factory';
import { IMinimizedIndividualEvent } from '../../../../../factory/event';
import { IAcceptedAddOn } from './price';
type IObjectSubReservation = factory.assetTransaction.reserve.IObjectSubReservation;
/**
 * 確定時予約のITicket
 */
type IReservedTicket = Pick<factory.reservation.ITicket, 'identifier' | 'issuedBy' | 'ticketType' | 'ticketedSeat' | 'typeOf'>;
declare function createReservedTicket(params: {
    id: string;
    acceptedOffer: factory.assetTransaction.reserve.IAcceptedTicketOfferWithoutDetail;
    availableOffer: factory.unitPriceOffer.IUnitPriceOffer;
    dateIssued: Date;
    reservationFor: {
        id: string;
    };
    reservedSeatsOnly: boolean;
    screeningRoomSections?: factory.place.screeningRoomSection.IPlace[];
    availableSeatOffers: factory.place.seat.IPlaceWithOffer[];
    ticketOffer: factory.product.ITicketOffer;
}): IReservedTicket;
declare function validateAppliesToMovieTicket(params: {
    availableOffer: factory.unitPriceOffer.IUnitPriceOffer;
    appliesToMovieTicket?: factory.assetTransaction.reserve.IAcceptedAppliesToMovieTicket;
}): void;
/**
 * 追加特性を生成する
 */
declare function createAdditionalProperty(params: {
    acceptedOffer: factory.assetTransaction.reserve.IAcceptedTicketOfferWithoutDetail;
}): factory.propertyValue.IPropertyValue<string>[];
/**
 * 追加チケットテキストを生成する
 */
declare function createAdditionalTicketText(params: {
    acceptedOffer: factory.assetTransaction.reserve.IAcceptedTicketOfferWithoutDetail;
    reservedTicket: IReservedTicket;
}): string | undefined;
declare function createReservation(params: {
    project: {
        id: string;
        typeOf: factory.organizationType.Project;
    };
    id: string;
    reservationFor: IMinimizedIndividualEvent<factory.eventType.ScreeningEvent> | IMinimizedIndividualEvent<factory.eventType.Event>;
    reservedTicket: IReservedTicket;
    additionalProperty?: factory.propertyValue.IPropertyValue<string>[];
    additionalTicketText?: string;
    ticketOffer: factory.product.ITicketOffer;
    seatPriceComponent: factory.place.seat.IPriceComponent[];
    acceptedAddOns: IAcceptedAddOn[];
    subReservation?: factory.reservation.ISubReservation<factory.reservationType.EventReservation>[];
    programMembershipUsed?: factory.reservation.IProgramMembershipUsed<factory.reservationType.EventReservation>;
    availableOffer: factory.unitPriceOffer.IUnitPriceOffer;
    appliesToMovieTicket?: factory.assetTransaction.reserve.IAcceptedAppliesToMovieTicket;
    validateAppliesToMovieTicket: boolean;
}): IObjectSubReservation;
export { createAdditionalProperty, createAdditionalTicketText, createReservation, createReservedTicket, IAcceptedAddOn, validateAppliesToMovieTicket };
