import { BillingLineItem } from '../billing/billing-line-item';
import { TimeWindow } from '../time-window';

/** @description Basic structure for a rate */
export class Rate {
  /** @description The service code uniquely identifies a shipping service that you offer. Which service codes can be passed to you will be configured in ShipEngine. If this field is missing, the rate will be discarded. */
  service_code?: string;
  /** @description ISO 8601 formatted date for shipment */
  ship_datetime?: string;
  /** @description ISO 8601 formatted estimated delivery date */
  estimated_delivery_datetime?: string;
  /** @description List of charge details for a rate */
  billing_line_items?: BillingLineItem[];
  /** @description Any error messages that resulted while trying to get the rate */
  error_messages?: string[];
  /** @description Any warning messages that resulted while trying to get the rate */
  warning_messages?: string[];
  /** @description Is the rate pre-negotiated? */
  negotiated_rate?: boolean;
  /** @description The carrier pickup window is the time designated when the carrier will pickup your package from the initial location */
  carrier_pickup_window?: TimeWindow;
  /** @description The delivery window is the time designated when the carrier will drop off the package to the recipient */
  delivery_window?: TimeWindow;
  /** @description Unique identifier for the carrier rate */
  carrier_rate_id?: string;
  /** @description DateTime after which the rate will no longer be accepted. ISO 8601 format, with local offset. Example: 2021-08-20T14:38:36.859237-05:00 */
  expiration_datetime?: string;
  /** @description Estimated delivery text. It could be any text, a number, a date, etc. */
  estimated_delivery_text?: string;
  /** @description The Package type of this rate */
  package_type?: string;
  /** @description The zone this rate is for */
  zone?: string;
  /** @description Guaranteed delivery days. The number of days it will take for the package to be delivered */
  guaranteed_delivery_days?: number;
}
