import { IParticipantAsProject, IAction as IBaseAction, IAttributes as IBaseAttributes } from '../../action'; import { ActionType } from '../../actionType'; import { AssetTransactionType } from '../../assetTransactionType'; import { IOrder } from '../../order'; import { ReservationStatusType } from '../../reservationStatusType'; import { ReservationType } from '../../reservationType'; import { ITransaction as IPlaceOrder } from '../../transaction/placeOrder'; import { IAction as IReturnReserveTransactionAction } from '../transfer/return/reserveTransaction'; export type IAgent = IParticipantAsProject; /** * 予約取引中止、あるいは、予約番号による予約取消取引確定時のオブジェクト */ export interface IReservationPackageAsObject { id?: never; reservationFor?: never; reservationNumber: string; /** * previousReservationStatusを変更時に指定するために必要 */ reservationStatus: ReservationStatusType.ReservationConfirmed | ReservationStatusType.ReservationPending; typeOf: ReservationType.ReservationPackage; } /** * 予約IDによる予約取消取引確定時のオブジェクト */ export interface IEventReservationAsObject { id: string; issuedThrough?: never; reservationFor?: never; reservationNumber: string; /** * previousReservationStatusを変更時に指定するために必要 */ reservationStatus: ReservationStatusType.ReservationConfirmed; typeOf: ReservationType.EventReservation; } export type IObject = IEventReservationAsObject | IReservationPackageAsObject; export interface IResult { } export interface IPurpose { /** * 取引タイプ * 予約取引中止、あるいは、予約取消取引確定時にアクションが発生する */ typeOf: AssetTransactionType.Reserve | AssetTransactionType.CancelReservation; /** * 取引(Reserve or CancelReservation)ID */ id: string; } export type IOrderAsInstrument = Pick; export type IReturnActionAsInstrument = Pick; export type IPlaceOrderAsInstrument = Pick; export type IInstrument = IOrderAsInstrument | IReturnActionAsInstrument | IPlaceOrderAsInstrument; export interface IAttributes extends Pick, 'typeOf' | 'result' | 'purpose' | 'project' | 'object' | 'agent' | 'instrument'> { agent: IAgent; purpose: IPurpose; /** * add(2025-02-17~) */ instrument?: IInstrument[]; } /** * cancel reservation action */ export type IAction = IBaseAction;