import { BaseResponse } from './base-response';
import {
  LabelDownload,
  FormDownload,
  Document,
  BillingLineItem,
  LabelPackage,
  Identifier,
  TimeWindow,
  RelayPointDetails,
  PaperlessDetails,
} from '../models';

/** @description Basic structure for a response to create a label */
export class CreateLabelResponse extends BaseResponse {
  transaction_id!: string;
  label_download?: LabelDownload;
  form_download?: FormDownload;
  paperless_details?: PaperlessDetails;
  documents?: Document[];
  packages?: LabelPackage[];
  billing_line_items?: BillingLineItem[];
  tracking_number?: string;
  tracking_url?: string;
  trackable?: boolean;
  alternative_identifiers?: Identifier[];
  estimated_delivery_datetime?: string;
  consolidator_service_code?: string;
  /** @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;
  relay_points?: RelayPointDetails;
}
