import { Ethnicity, Gender } from "../../profiles";
import { LineItemRequest, LineItemResponse, Package, SavedStoreLineItem, StoreLineItem } from "../order";
/**
 * Supplier data pertaining to all lab shop orders.
 * Format as sent from server.
 */
export interface LabShopOrderSupplierDataResponse {
    id: string;
    requisition_number: string;
    supplier_order_id: string;
    /**
     * Status should be one of:
     * "APPROVED", "PENDING", "CANCELLED", "RESULTED", "REJECTED", "SHIPPED", "Kit Sent To Patient"
     * But due to inconsistencies in the provider we leave it as string for flexibility
     */
    status: string;
    encoded_pdf?: string;
}
/**
 * Supplier data pertaining specifically to a home kit order.
 * Format as sent from server.
 */
export interface HomeKitOrderSupplierDataResponse extends LabShopOrderSupplierDataResponse {
    tracking_id?: string;
}
/**
 * Supplier data pertaining to all lab shop orders.
 * Format as saved to store.
 */
export interface SavedLabShopOrderSupplierData {
    id: string;
    requisitionNumber: string;
    supplierOrderId: string;
    status: string;
    encodedPdf?: string;
}
/**
 * Supplier data pertaining specifically to a home kit order.
 * Format as saved to store.
 */
export interface SavedHomeKitOrderSupplierData extends SavedLabShopOrderSupplierData {
    trackingId?: string;
}
/**
 * The LabOrder interface for sending data to the server.
 */
export interface APILabShopOrderRequest {
    user_id?: string;
    first_name: string;
    last_name: string;
    email: string;
    phone_number: string;
    gender: Gender;
    birth_date: string;
    ethnicity?: Ethnicity;
    line_items: Array<LineItemRequest>;
    ship_to_address: string;
    ship_to_address1?: string;
    ship_to_city: string;
    ship_to_state: string;
    ship_to_postal_code: string;
    ship_to_country: string;
    profile?: string | null;
}
/**
 * The LabOrder interface for receiving data from the server.
 */
export interface APILabShopOrderResponse {
    id: string;
    user_id: string;
    created_at: string;
    first_name: string;
    last_name: string;
    email: string;
    phone_number: string;
    gender: Gender;
    birth_date: string;
    ethnicity: Ethnicity;
    packages: Array<Package>;
    line_items: Array<LineItemResponse>;
    ship_to_address: string;
    ship_to_address1?: string;
    ship_to_city: string;
    ship_to_state: string;
    ship_to_postal_code: string;
    ship_to_country: string;
    api_error: boolean;
    lab_order?: LabShopOrderSupplierDataResponse;
    home_kit_order?: HomeKitOrderSupplierDataResponse;
    profile: string | null;
}
/**
 * The Redux LabOrder interface for lab orders saved on the server.
 */
export interface SavedStoreLabShopOrder {
    id: string;
    userId: string;
    createdAt: string;
    firstName: string;
    lastName: string;
    email: string;
    phoneNumber: string;
    gender: Gender;
    birthDate: string;
    ethnicity: Ethnicity;
    packages: Array<Package>;
    lineItems: Array<SavedStoreLineItem>;
    shipToAddress: string;
    shipToAddress1: string;
    shipToCity: string;
    shipToState: string;
    shipToPostalCode: string;
    shipToCountry: string;
    apiError: boolean;
    labOrder?: SavedLabShopOrderSupplierData;
    homeKitOrder?: SavedHomeKitOrderSupplierData;
    profile: string | null;
}
/**
 * The Redux Order interface for pre-saved lab orders.
 */
export interface StoreLabShopOrder {
    id?: string;
    userId?: string;
    createdAt?: string;
    firstName: string;
    lastName: string;
    email: string;
    phoneNumber: string;
    gender: Gender;
    birthDate: string;
    ethnicity: Ethnicity;
    packages: Array<Package>;
    lineItems: Array<SavedStoreLineItem | StoreLineItem>;
    shipToAddress: string;
    shipToAddress1?: string;
    shipToCity: string;
    shipToState: string;
    shipToPostalCode: string;
    shipToCountry: string;
    apiError?: boolean;
    labOrder?: SavedLabShopOrderSupplierData;
    homeKitOrder?: SavedHomeKitOrderSupplierData;
    profile?: string | null;
}
