import { ServicePointFeaturesEnum } from '../../app/metadata/service-point-feature';
import { ServicePointLocationTypeEnum } from '../../app/metadata/service-point-location-type';
import { ServicePointResponseAddress } from './service-point-response-address';
import { WeeklyHoursOfOperation } from './weekly-hours-of-operation';
import { DayOfOperation } from './day-of-operation';
import { SpecialOpeningTime } from './special-opening-time';

/** @description Basic structure for a service point */
export class ServicePoint {
  /** @description The identifier for the carrier's service point */
  service_point_id!: string;
  /** @description The address where the service point is located */
  address!: ServicePointResponseAddress;
  /** @description Weekly hours of operation for the service point */
  hours_of_operation!: WeeklyHoursOfOperation;
  /** @description Features supported by the service point */
  features?: ServicePointFeaturesEnum[];
  /** @description Temporary closures days */
  temporary_closures?: DayOfOperation[];
  /** @description Special opening times */
  special_opening_times?: SpecialOpeningTime[];
  /** @description Location type like PUDOs, parcelshops, postoffices, lockers, retailers own stores etc. */
  type?: ServicePointLocationTypeEnum;
}
