import { injectable } from "inversify"; import { IJsonApiResponse, IJsonApiResource, } from "../../interfaces"; export const availabilityType = "availability"; export interface IAvailabilityAttributes { provider?: string; offerings?: IOfferingAttribute[]; available?: IDateRange; } export interface IOfferingAttribute { max_occupancy: string; cost: ICost; description: IDescription; } export interface IAvailabilityResource extends IJsonApiResource {} export interface IAvailabilityResponse extends IJsonApiResponse {} export interface IDescription { short: string; long: string; } export interface ICost { currency: string; amount: number; } export interface IOffering { maxOccupancy: string; cost: ICost; description: IDescription; } export interface IDateRange { to: string; from: string; } export interface IAvailability { id?: string; provider?: string; offerings?: IOffering[]; available?: IDateRange; type?: string; } @injectable() export default class Availability implements IAvailability { id?: string; provider?: string; offerings?: IOffering[]; available?: IDateRange; type?: string; constructor(options?: IAvailability) { Object.assign(this, options); } }