import { IMultilingualString } from './multilingualString'; import { ProductType } from './product'; import { IProject } from './project'; import { IQuantitativeValue } from './quantitativeValue'; import { ReservationType } from './reservationType'; import { SortType } from './sortType'; import { UnitCode } from './unitCode'; export type IGracePeriodBeforeStart = Pick, 'maxValue' | 'minValue' | 'typeOf' | 'unitCode'>; export interface IGracePeriodBeforeStartInDays { period: Pick, 'value' | 'typeOf' | 'unitCode'>; time: string; timezone: string; } export interface IItemOffered { typeOf: ProductType.EventService; serviceOutput?: { typeOf: ReservationType.EventReservation; /** * 未使用のみ */ onlyUnused?: boolean; reservationFor: { /** * n秒前設定 */ gracePeriodBeforeStart?: IGracePeriodBeforeStart; /** * n日時前のHH:mm:ss設定 */ gracePeriodBeforeStartInDays?: { max?: IGracePeriodBeforeStartInDays; min?: IGracePeriodBeforeStartInDays; }; }; }; } export interface IOfferItemCondition { id?: string; identifier: string; itemOffered: IItemOffered; name: IMultilingualString; project: Pick; typeOf: 'OfferItemCondition'; } export interface ISortOrder { identifier?: SortType; } export interface ISearchConditions { limit?: number; page?: number; sort?: ISortOrder; project?: { id?: { $eq?: string; }; }; id?: { $eq?: string; $in?: string[]; }; identifier?: { $eq?: string; $in?: string[]; }; } /** * stringとしてのアイテムコンディション定義 * プロジェクトのカスタム返品ポリシー利用時に使用される */ export declare enum OfferItemCondition { NewCondition = "NewCondition" }